@ampath-kenya/ngx-openmrs-formentry 2.12.11 → 2.12.13

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 (679) hide show
  1. package/{dist/ngx-formentry/abstract-controls-extension → abstract-controls-extension}/afe-control-type.d.ts +0 -0
  2. package/{dist/ngx-formentry/abstract-controls-extension → abstract-controls-extension}/afe-form-array.d.ts +0 -0
  3. package/{dist/ngx-formentry/abstract-controls-extension → abstract-controls-extension}/afe-form-control.d.ts +0 -0
  4. package/{dist/ngx-formentry/abstract-controls-extension → abstract-controls-extension}/afe-form-group.d.ts +0 -0
  5. package/{dist/ngx-formentry/abstract-controls-extension → abstract-controls-extension}/control-extensions.d.ts +0 -0
  6. package/{dist/ngx-formentry/abstract-controls-extension → abstract-controls-extension}/index.d.ts +0 -0
  7. package/{dist/ngx-formentry/abstract-controls-extension → abstract-controls-extension}/value-change.listener.d.ts +0 -0
  8. package/{dist/ngx-formentry/ngx-openmrs-formentry.d.ts → ampath-kenya-ngx-openmrs-formentry.d.ts} +0 -0
  9. package/{dist/ngx-formentry/ngx-openmrs-formentry.metadata.json → ampath-kenya-ngx-openmrs-formentry.metadata.json} +1 -1
  10. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js +10706 -0
  11. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.js.map +1 -0
  12. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js +2 -0
  13. package/bundles/ampath-kenya-ngx-openmrs-formentry.umd.min.js.map +1 -0
  14. package/{dist/ngx-formentry/change-tracking → change-tracking}/control-relation.d.ts +0 -0
  15. package/{dist/ngx-formentry/change-tracking → change-tracking}/control-relations.d.ts +0 -0
  16. package/{dist/ngx-formentry/components → components}/afe-ng-select.component.d.ts +0 -0
  17. package/{dist/ngx-formentry/components → components}/appointments-overview/appointments-overview.component.d.ts +0 -0
  18. package/{dist/ngx-formentry/components → components}/check-box/checkbox.component.d.ts +0 -0
  19. package/{dist/ngx-formentry/components → components}/check-box/checkbox.module.d.ts +0 -0
  20. package/{dist/ngx-formentry/components → components}/date-time-picker/date-picker/date-picker.component.d.ts +0 -0
  21. package/{dist/ngx-formentry/components → components}/date-time-picker/date-time-picker.component.d.ts +0 -0
  22. package/{dist/ngx-formentry/components → components}/date-time-picker/date-time-picker.module.d.ts +0 -0
  23. package/{dist/ngx-formentry/components → components}/date-time-picker/picker-modal/modal.component.d.ts +0 -0
  24. package/{dist/ngx-formentry/components → components}/date-time-picker/pipes/moment.pipe.d.ts +0 -0
  25. package/{dist/ngx-formentry/components → components}/date-time-picker/time-picker/time-picker.component.d.ts +0 -0
  26. package/{dist/ngx-formentry/components → components}/file-upload/file-upload.component.d.ts +0 -0
  27. package/{dist/ngx-formentry/components → components}/file-upload/file-upload.module.d.ts +0 -0
  28. package/{dist/ngx-formentry/components → components}/file-upload/secure.pipe.d.ts +0 -0
  29. package/{dist/ngx-formentry/components → components}/ngx-date-time-picker/ngx-date-time-picker.component.d.ts +0 -0
  30. package/{dist/ngx-formentry/components → components}/ngx-date-time-picker/ngx-date-time-picker.module.d.ts +0 -0
  31. package/{dist/ngx-formentry/components → components}/remote-select/remote-select.component.d.ts +0 -0
  32. package/{dist/ngx-formentry/components → components}/remote-select/remote-select.module.d.ts +0 -0
  33. package/{dist/ngx-formentry/components → components}/select/diacritics.d.ts +0 -0
  34. package/{dist/ngx-formentry/components → components}/select/option-list.d.ts +0 -0
  35. package/{dist/ngx-formentry/components → components}/select/option.d.ts +0 -0
  36. package/{dist/ngx-formentry/components → components}/select/select-dropdown.component.d.ts +0 -0
  37. package/{dist/ngx-formentry/components → components}/select/select-dropdown.component.style.d.ts +0 -0
  38. package/{dist/ngx-formentry/components → components}/select/select.component.d.ts +0 -0
  39. package/{dist/ngx-formentry/components → components}/select/select.component.style.d.ts +0 -0
  40. package/{dist/ngx-formentry/components → components}/select/select.module.d.ts +0 -0
  41. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/display-controls/file-preview.component.d.ts +0 -0
  42. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/display-controls/question-control.component.d.ts +0 -0
  43. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/display-controls/remote-answer.component.d.ts +0 -0
  44. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/encounter-container/encounter-container.component.d.ts +0 -0
  45. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/encounter-pdf-viewer.service.d.ts +0 -0
  46. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/encounter-view/encounter-viewer.component.d.ts +0 -0
  47. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/encounter-viewer.module.d.ts +0 -0
  48. package/{dist/ngx-formentry/encounter-viewer → encounter-viewer}/encounter-viewer.service.d.ts +0 -0
  49. package/esm2015/abstract-controls-extension/afe-control-type.js +8 -0
  50. package/esm2015/abstract-controls-extension/afe-form-array.js +85 -0
  51. package/esm2015/abstract-controls-extension/afe-form-control.js +88 -0
  52. package/esm2015/abstract-controls-extension/afe-form-group.js +61 -0
  53. package/esm2015/abstract-controls-extension/control-extensions.js +5 -0
  54. package/esm2015/abstract-controls-extension/index.js +5 -0
  55. package/esm2015/abstract-controls-extension/value-change.listener.js +1 -0
  56. package/esm2015/ampath-kenya-ngx-openmrs-formentry.js +42 -0
  57. package/esm2015/change-tracking/control-relation.js +44 -0
  58. package/esm2015/change-tracking/control-relations.js +32 -0
  59. package/esm2015/components/afe-ng-select.component.js +87 -0
  60. package/esm2015/components/appointments-overview/appointments-overview.component.js +161 -0
  61. package/esm2015/components/check-box/checkbox.component.js +97 -0
  62. package/esm2015/components/check-box/checkbox.module.js +14 -0
  63. package/esm2015/components/date-time-picker/date-picker/date-picker.component.js +270 -0
  64. package/esm2015/components/date-time-picker/date-time-picker.component.js +207 -0
  65. package/esm2015/components/date-time-picker/date-time-picker.module.js +34 -0
  66. package/esm2015/components/date-time-picker/picker-modal/modal.component.js +36 -0
  67. package/esm2015/components/date-time-picker/pipes/moment.pipe.js +13 -0
  68. package/esm2015/components/date-time-picker/time-picker/time-picker.component.js +160 -0
  69. package/esm2015/components/file-upload/file-upload.component.js +128 -0
  70. package/esm2015/components/file-upload/file-upload.module.js +27 -0
  71. package/esm2015/components/file-upload/secure.pipe.js +102 -0
  72. package/esm2015/components/ngx-date-time-picker/ngx-date-time-picker.component.js +191 -0
  73. package/esm2015/components/ngx-date-time-picker/ngx-date-time-picker.module.js +41 -0
  74. package/esm2015/components/remote-select/remote-select.component.js +169 -0
  75. package/esm2015/components/remote-select/remote-select.module.js +17 -0
  76. package/esm2015/components/select/diacritics.js +855 -0
  77. package/esm2015/components/select/option-list.js +179 -0
  78. package/esm2015/components/select/option.js +29 -0
  79. package/esm2015/components/select/select-dropdown.component.js +161 -0
  80. package/esm2015/components/select/select-dropdown.component.style.js +58 -0
  81. package/esm2015/components/select/select.component.js +514 -0
  82. package/esm2015/components/select/select.component.style.js +101 -0
  83. package/esm2015/components/select/select.module.js +15 -0
  84. package/esm2015/encounter-viewer/display-controls/file-preview.component.js +109 -0
  85. package/esm2015/encounter-viewer/display-controls/question-control.component.js +92 -0
  86. package/esm2015/encounter-viewer/display-controls/remote-answer.component.js +79 -0
  87. package/esm2015/encounter-viewer/encounter-container/encounter-container.component.js +48 -0
  88. package/esm2015/encounter-viewer/encounter-pdf-viewer.service.js +435 -0
  89. package/esm2015/encounter-viewer/encounter-view/encounter-viewer.component.js +299 -0
  90. package/esm2015/encounter-viewer/encounter-viewer.module.js +35 -0
  91. package/esm2015/encounter-viewer/encounter-viewer.service.js +160 -0
  92. package/esm2015/form-entry/control-alerts/alert-helpers.js +40 -0
  93. package/esm2015/form-entry/control-alerts/can-generate-alert.js +1 -0
  94. package/esm2015/form-entry/control-calculators/can-calculate.js +1 -0
  95. package/esm2015/form-entry/control-hiders-disablers/can-disable.js +1 -0
  96. package/esm2015/form-entry/control-hiders-disablers/can-hide.js +1 -0
  97. package/esm2015/form-entry/control-hiders-disablers/disabler-helper.js +33 -0
  98. package/esm2015/form-entry/control-hiders-disablers/hider-helpers.js +40 -0
  99. package/esm2015/form-entry/data-sources/data-sources.js +30 -0
  100. package/esm2015/form-entry/data-sources/dummy-data-source.js +104 -0
  101. package/esm2015/form-entry/directives/historical-value-directive.js +66 -0
  102. package/esm2015/form-entry/error-renderer/error-renderer.component.js +69 -0
  103. package/esm2015/form-entry/expression-runner/expression-runner.js +152 -0
  104. package/esm2015/form-entry/form-entry.module.js +103 -0
  105. package/esm2015/form-entry/form-factory/control-relations.factory.js +236 -0
  106. package/esm2015/form-entry/form-factory/form-control.service.js +117 -0
  107. package/esm2015/form-entry/form-factory/form-node.js +78 -0
  108. package/esm2015/form-entry/form-factory/form.factory.js +132 -0
  109. package/esm2015/form-entry/form-factory/form.js +193 -0
  110. package/esm2015/form-entry/form-factory/hiders-disablers.factory.js +66 -0
  111. package/esm2015/form-entry/form-factory/question.factory.js +834 -0
  112. package/esm2015/form-entry/form-factory/show-messages.factory.js +30 -0
  113. package/esm2015/form-entry/form-factory/validation.factory.js +145 -0
  114. package/esm2015/form-entry/form-renderer/form-renderer.component.css.js +156 -0
  115. package/esm2015/form-entry/form-renderer/form-renderer.component.js +632 -0
  116. package/esm2015/form-entry/helpers/historical-expression-helper-service.js +38 -0
  117. package/esm2015/form-entry/helpers/historical-field-helper-service.js +32 -0
  118. package/esm2015/form-entry/helpers/js-expression-helper.js +234 -0
  119. package/esm2015/form-entry/question-models/checkbox.model.js +11 -0
  120. package/esm2015/form-entry/question-models/conditional-validation.model.js +9 -0
  121. package/esm2015/form-entry/question-models/date-question.js +12 -0
  122. package/esm2015/form-entry/question-models/date-validation.model.js +10 -0
  123. package/esm2015/form-entry/question-models/file-upload-question.js +13 -0
  124. package/esm2015/form-entry/question-models/group-question.js +12 -0
  125. package/esm2015/form-entry/question-models/interfaces/base-options.js +1 -0
  126. package/esm2015/form-entry/question-models/interfaces/checkbox-options.js +1 -0
  127. package/esm2015/form-entry/question-models/interfaces/data-source.js +1 -0
  128. package/esm2015/form-entry/question-models/interfaces/date-question-options.js +1 -0
  129. package/esm2015/form-entry/question-models/interfaces/file-upload-question-options.js +1 -0
  130. package/esm2015/form-entry/question-models/interfaces/group-question-options.js +1 -0
  131. package/esm2015/form-entry/question-models/interfaces/multi-select-options.js +1 -0
  132. package/esm2015/form-entry/question-models/interfaces/nested-questions.js +7 -0
  133. package/esm2015/form-entry/question-models/interfaces/repeating-question-options.js +1 -0
  134. package/esm2015/form-entry/question-models/interfaces/select-option.js +1 -0
  135. package/esm2015/form-entry/question-models/interfaces/select-question-options.js +1 -0
  136. package/esm2015/form-entry/question-models/interfaces/test-order-question-options.js +1 -0
  137. package/esm2015/form-entry/question-models/interfaces/text-area-question-options.js +1 -0
  138. package/esm2015/form-entry/question-models/interfaces/text-question-options.js +1 -0
  139. package/esm2015/form-entry/question-models/interfaces/ui-select-question-options.js +1 -0
  140. package/esm2015/form-entry/question-models/js-expression-validation.model.js +8 -0
  141. package/esm2015/form-entry/question-models/max-validation.model.js +9 -0
  142. package/esm2015/form-entry/question-models/min-validation.model.js +9 -0
  143. package/esm2015/form-entry/question-models/models.js +12 -0
  144. package/esm2015/form-entry/question-models/multi-select-question.js +11 -0
  145. package/esm2015/form-entry/question-models/pair.model.js +7 -0
  146. package/esm2015/form-entry/question-models/question-base.js +24 -0
  147. package/{dist/ngx-formentry/esm2015 → esm2015}/form-entry/question-models/rendering-type.js +1 -1
  148. package/esm2015/form-entry/question-models/repeating-question.js +11 -0
  149. package/esm2015/form-entry/question-models/select-option.js +7 -0
  150. package/esm2015/form-entry/question-models/select-question.js +12 -0
  151. package/esm2015/form-entry/question-models/test-order-question.js +15 -0
  152. package/esm2015/form-entry/question-models/text-area-input-question.js +13 -0
  153. package/esm2015/form-entry/question-models/text-input-question.js +10 -0
  154. package/esm2015/form-entry/question-models/ui-select-question.js +11 -0
  155. package/esm2015/form-entry/question-models/validation.model.js +7 -0
  156. package/esm2015/form-entry/services/debug-mode.service.js +22 -0
  157. package/esm2015/form-entry/services/form-errors.service.js +18 -0
  158. package/esm2015/form-entry/services/form-schema-compiler.service.js +246 -0
  159. package/esm2015/form-entry/services/historical-encounter-data.service.js +171 -0
  160. package/esm2015/form-entry/utils/messages.js +12 -0
  161. package/esm2015/form-entry/validators/conditional-answered.validator.js +46 -0
  162. package/esm2015/form-entry/validators/conditional-required.validator.js +40 -0
  163. package/esm2015/form-entry/validators/date.validator.js +18 -0
  164. package/esm2015/form-entry/validators/future-date-restriction.validator.js +21 -0
  165. package/esm2015/form-entry/validators/js-expression.validator.js +26 -0
  166. package/esm2015/form-entry/validators/max-date.validator.js +23 -0
  167. package/esm2015/form-entry/validators/max.validator.js +17 -0
  168. package/esm2015/form-entry/validators/min-date.validator.js +23 -0
  169. package/esm2015/form-entry/validators/min.validator.js +17 -0
  170. package/esm2015/form-entry/validators/required.validator.js +11 -0
  171. package/esm2015/form-entry/validators/validations.js +5 -0
  172. package/esm2015/form-entry/value-adapters/encounter.adapter.js +173 -0
  173. package/esm2015/form-entry/value-adapters/obs-adapter-helper.js +490 -0
  174. package/esm2015/form-entry/value-adapters/obs.adapter.js +542 -0
  175. package/esm2015/form-entry/value-adapters/order.adapter.js +186 -0
  176. package/esm2015/form-entry/value-adapters/person-attribute.adapter.js +87 -0
  177. package/esm2015/form-entry/value-adapters/value.adapter.js +1 -0
  178. package/esm2015/public_api.js +51 -0
  179. package/esm2015/shared.module.js +15 -0
  180. package/esm5/abstract-controls-extension/afe-control-type.js +8 -0
  181. package/esm5/abstract-controls-extension/afe-form-array.js +98 -0
  182. package/esm5/abstract-controls-extension/afe-form-control.js +96 -0
  183. package/esm5/abstract-controls-extension/afe-form-group.js +70 -0
  184. package/esm5/abstract-controls-extension/control-extensions.js +5 -0
  185. package/esm5/abstract-controls-extension/index.js +5 -0
  186. package/esm5/abstract-controls-extension/value-change.listener.js +1 -0
  187. package/esm5/ampath-kenya-ngx-openmrs-formentry.js +42 -0
  188. package/esm5/change-tracking/control-relation.js +59 -0
  189. package/esm5/change-tracking/control-relations.js +46 -0
  190. package/esm5/components/afe-ng-select.component.js +87 -0
  191. package/esm5/components/appointments-overview/appointments-overview.component.js +123 -0
  192. package/esm5/components/check-box/checkbox.component.js +88 -0
  193. package/esm5/components/check-box/checkbox.module.js +18 -0
  194. package/esm5/components/date-time-picker/date-picker/date-picker.component.js +186 -0
  195. package/esm5/components/date-time-picker/date-time-picker.component.js +111 -0
  196. package/esm5/components/date-time-picker/date-time-picker.module.js +38 -0
  197. package/esm5/components/date-time-picker/picker-modal/modal.component.js +32 -0
  198. package/esm5/components/date-time-picker/pipes/moment.pipe.js +17 -0
  199. package/esm5/components/date-time-picker/time-picker/time-picker.component.js +117 -0
  200. package/esm5/components/file-upload/file-upload.component.js +126 -0
  201. package/esm5/components/file-upload/file-upload.module.js +31 -0
  202. package/esm5/components/file-upload/secure.pipe.js +105 -0
  203. package/esm5/components/ngx-date-time-picker/ngx-date-time-picker.component.js +140 -0
  204. package/esm5/components/ngx-date-time-picker/ngx-date-time-picker.module.js +45 -0
  205. package/esm5/components/remote-select/remote-select.component.js +163 -0
  206. package/esm5/components/remote-select/remote-select.module.js +21 -0
  207. package/esm5/components/select/diacritics.js +860 -0
  208. package/esm5/components/select/option-list.js +224 -0
  209. package/esm5/components/select/option.js +31 -0
  210. package/esm5/components/select/select-dropdown.component.js +131 -0
  211. package/esm5/components/select/select-dropdown.component.style.js +2 -0
  212. package/esm5/components/select/select.component.js +456 -0
  213. package/esm5/components/select/select.component.style.js +2 -0
  214. package/esm5/components/select/select.module.js +19 -0
  215. package/{dist/ngx-formentry/esm2015 → esm5}/encounter-viewer/display-controls/file-preview.component.js +70 -70
  216. package/esm5/encounter-viewer/display-controls/question-control.component.js +104 -0
  217. package/esm5/encounter-viewer/display-controls/remote-answer.component.js +86 -0
  218. package/esm5/encounter-viewer/encounter-container/encounter-container.component.js +45 -0
  219. package/esm5/encounter-viewer/encounter-pdf-viewer.service.js +521 -0
  220. package/esm5/encounter-viewer/encounter-view/encounter-viewer.component.js +185 -0
  221. package/esm5/encounter-viewer/encounter-viewer.module.js +39 -0
  222. package/esm5/encounter-viewer/encounter-viewer.service.js +165 -0
  223. package/esm5/form-entry/control-alerts/alert-helpers.js +44 -0
  224. package/esm5/form-entry/control-alerts/can-generate-alert.js +1 -0
  225. package/esm5/form-entry/control-calculators/can-calculate.js +1 -0
  226. package/esm5/form-entry/control-hiders-disablers/can-disable.js +1 -0
  227. package/esm5/form-entry/control-hiders-disablers/can-hide.js +1 -0
  228. package/esm5/form-entry/control-hiders-disablers/disabler-helper.js +37 -0
  229. package/esm5/form-entry/control-hiders-disablers/hider-helpers.js +44 -0
  230. package/esm5/form-entry/data-sources/data-sources.js +37 -0
  231. package/esm5/form-entry/data-sources/dummy-data-source.js +106 -0
  232. package/esm5/form-entry/directives/historical-value-directive.js +72 -0
  233. package/esm5/form-entry/error-renderer/error-renderer.component.js +62 -0
  234. package/esm5/form-entry/expression-runner/expression-runner.js +158 -0
  235. package/esm5/form-entry/form-entry.module.js +107 -0
  236. package/{dist/ngx-formentry/esm2015 → esm5}/form-entry/form-factory/control-relations.factory.js +94 -87
  237. package/esm5/form-entry/form-factory/form-control.service.js +120 -0
  238. package/esm5/form-entry/form-factory/form-node.js +116 -0
  239. package/esm5/form-entry/form-factory/form.factory.js +136 -0
  240. package/esm5/form-entry/form-factory/form.js +213 -0
  241. package/esm5/form-entry/form-factory/hiders-disablers.factory.js +68 -0
  242. package/esm5/form-entry/form-factory/question.factory.js +838 -0
  243. package/esm5/form-entry/form-factory/show-messages.factory.js +32 -0
  244. package/esm5/form-entry/form-factory/validation.factory.js +189 -0
  245. package/esm5/form-entry/form-renderer/form-renderer.component.css.js +2 -0
  246. package/esm5/form-entry/form-renderer/form-renderer.component.js +211 -0
  247. package/esm5/form-entry/helpers/historical-expression-helper-service.js +41 -0
  248. package/esm5/form-entry/helpers/historical-field-helper-service.js +36 -0
  249. package/esm5/form-entry/helpers/js-expression-helper.js +242 -0
  250. package/esm5/form-entry/question-models/checkbox.model.js +16 -0
  251. package/esm5/form-entry/question-models/conditional-validation.model.js +14 -0
  252. package/esm5/form-entry/question-models/date-question.js +17 -0
  253. package/esm5/form-entry/question-models/date-validation.model.js +15 -0
  254. package/esm5/form-entry/question-models/file-upload-question.js +18 -0
  255. package/esm5/form-entry/question-models/group-question.js +17 -0
  256. package/esm5/form-entry/question-models/interfaces/base-options.js +1 -0
  257. package/esm5/form-entry/question-models/interfaces/checkbox-options.js +1 -0
  258. package/esm5/form-entry/question-models/interfaces/data-source.js +1 -0
  259. package/esm5/form-entry/question-models/interfaces/date-question-options.js +1 -0
  260. package/esm5/form-entry/question-models/interfaces/file-upload-question-options.js +1 -0
  261. package/esm5/form-entry/question-models/interfaces/group-question-options.js +1 -0
  262. package/esm5/form-entry/question-models/interfaces/multi-select-options.js +1 -0
  263. package/esm5/form-entry/question-models/interfaces/nested-questions.js +11 -0
  264. package/esm5/form-entry/question-models/interfaces/repeating-question-options.js +1 -0
  265. package/esm5/form-entry/question-models/interfaces/select-option.js +1 -0
  266. package/esm5/form-entry/question-models/interfaces/select-question-options.js +1 -0
  267. package/esm5/form-entry/question-models/interfaces/test-order-question-options.js +1 -0
  268. package/esm5/form-entry/question-models/interfaces/text-area-question-options.js +1 -0
  269. package/esm5/form-entry/question-models/interfaces/text-question-options.js +1 -0
  270. package/esm5/form-entry/question-models/interfaces/ui-select-question-options.js +1 -0
  271. package/esm5/form-entry/question-models/js-expression-validation.model.js +13 -0
  272. package/esm5/form-entry/question-models/max-validation.model.js +14 -0
  273. package/esm5/form-entry/question-models/min-validation.model.js +14 -0
  274. package/esm5/form-entry/question-models/models.js +12 -0
  275. package/esm5/form-entry/question-models/multi-select-question.js +16 -0
  276. package/esm5/form-entry/question-models/pair.model.js +9 -0
  277. package/esm5/form-entry/question-models/question-base.js +26 -0
  278. package/{dist/ngx-formentry/esm5 → esm5}/form-entry/question-models/rendering-type.js +1 -1
  279. package/esm5/form-entry/question-models/repeating-question.js +16 -0
  280. package/esm5/form-entry/question-models/select-option.js +9 -0
  281. package/esm5/form-entry/question-models/select-question.js +17 -0
  282. package/esm5/form-entry/question-models/test-order-question.js +20 -0
  283. package/esm5/form-entry/question-models/text-area-input-question.js +18 -0
  284. package/esm5/form-entry/question-models/text-input-question.js +15 -0
  285. package/esm5/form-entry/question-models/ui-select-question.js +16 -0
  286. package/esm5/form-entry/question-models/validation.model.js +9 -0
  287. package/esm5/form-entry/services/debug-mode.service.js +24 -0
  288. package/esm5/form-entry/services/form-errors.service.js +20 -0
  289. package/esm5/form-entry/services/form-schema-compiler.service.js +252 -0
  290. package/esm5/form-entry/services/historical-encounter-data.service.js +178 -0
  291. package/esm5/form-entry/utils/messages.js +16 -0
  292. package/esm5/form-entry/validators/conditional-answered.validator.js +49 -0
  293. package/esm5/form-entry/validators/conditional-required.validator.js +43 -0
  294. package/esm5/form-entry/validators/date.validator.js +21 -0
  295. package/esm5/form-entry/validators/future-date-restriction.validator.js +24 -0
  296. package/esm5/form-entry/validators/js-expression.validator.js +29 -0
  297. package/esm5/form-entry/validators/max-date.validator.js +27 -0
  298. package/esm5/form-entry/validators/max.validator.js +21 -0
  299. package/esm5/form-entry/validators/min-date.validator.js +27 -0
  300. package/esm5/form-entry/validators/min.validator.js +21 -0
  301. package/esm5/form-entry/validators/required.validator.js +15 -0
  302. package/esm5/form-entry/validators/validations.js +8 -0
  303. package/esm5/form-entry/value-adapters/encounter.adapter.js +176 -0
  304. package/esm5/form-entry/value-adapters/obs-adapter-helper.js +508 -0
  305. package/esm5/form-entry/value-adapters/obs.adapter.js +735 -0
  306. package/esm5/form-entry/value-adapters/order.adapter.js +226 -0
  307. package/esm5/form-entry/value-adapters/person-attribute.adapter.js +91 -0
  308. package/esm5/form-entry/value-adapters/value.adapter.js +1 -0
  309. package/esm5/public_api.js +51 -0
  310. package/esm5/shared.module.js +19 -0
  311. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js +10919 -0
  312. package/fesm2015/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  313. package/fesm5/ampath-kenya-ngx-openmrs-formentry.js +10359 -0
  314. package/fesm5/ampath-kenya-ngx-openmrs-formentry.js.map +1 -0
  315. package/{dist/ngx-formentry/form-entry → form-entry}/control-alerts/alert-helpers.d.ts +0 -0
  316. package/{dist/ngx-formentry/form-entry → form-entry}/control-alerts/can-generate-alert.d.ts +0 -0
  317. package/{dist/ngx-formentry/form-entry → form-entry}/control-calculators/can-calculate.d.ts +0 -0
  318. package/{dist/ngx-formentry/form-entry → form-entry}/control-hiders-disablers/can-disable.d.ts +0 -0
  319. package/{dist/ngx-formentry/form-entry → form-entry}/control-hiders-disablers/can-hide.d.ts +0 -0
  320. package/{dist/ngx-formentry/form-entry → form-entry}/control-hiders-disablers/disabler-helper.d.ts +0 -0
  321. package/{dist/ngx-formentry/form-entry → form-entry}/control-hiders-disablers/hider-helpers.d.ts +0 -0
  322. package/{dist/ngx-formentry/form-entry → form-entry}/data-sources/data-sources.d.ts +0 -0
  323. package/{dist/ngx-formentry/form-entry → form-entry}/data-sources/dummy-data-source.d.ts +0 -0
  324. package/{dist/ngx-formentry/form-entry → form-entry}/directives/historical-value-directive.d.ts +0 -0
  325. package/{dist/ngx-formentry/form-entry → form-entry}/error-renderer/error-renderer.component.d.ts +0 -0
  326. package/{dist/ngx-formentry/form-entry → form-entry}/expression-runner/expression-runner.d.ts +0 -0
  327. package/{dist/ngx-formentry/form-entry → form-entry}/form-entry.module.d.ts +0 -0
  328. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/control-relations.factory.d.ts +0 -0
  329. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/form-control.service.d.ts +0 -0
  330. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/form-node.d.ts +0 -0
  331. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/form.d.ts +0 -0
  332. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/form.factory.d.ts +0 -0
  333. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/hiders-disablers.factory.d.ts +0 -0
  334. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/question.factory.d.ts +0 -0
  335. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/show-messages.factory.d.ts +0 -0
  336. package/{dist/ngx-formentry/form-entry → form-entry}/form-factory/validation.factory.d.ts +0 -0
  337. package/{dist/ngx-formentry/form-entry → form-entry}/form-renderer/form-renderer.component.css.d.ts +0 -0
  338. package/{dist/ngx-formentry/form-entry → form-entry}/form-renderer/form-renderer.component.d.ts +0 -0
  339. package/{dist/ngx-formentry/form-entry → form-entry}/helpers/historical-expression-helper-service.d.ts +0 -0
  340. package/{dist/ngx-formentry/form-entry → form-entry}/helpers/historical-field-helper-service.d.ts +0 -0
  341. package/{dist/ngx-formentry/form-entry → form-entry}/helpers/js-expression-helper.d.ts +0 -0
  342. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/checkbox.model.d.ts +0 -0
  343. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/conditional-validation.model.d.ts +0 -0
  344. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/date-question.d.ts +0 -0
  345. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/date-validation.model.d.ts +0 -0
  346. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/file-upload-question.d.ts +0 -0
  347. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/group-question.d.ts +0 -0
  348. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/base-options.d.ts +0 -0
  349. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/checkbox-options.d.ts +0 -0
  350. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/data-source.d.ts +0 -0
  351. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/date-question-options.d.ts +0 -0
  352. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/file-upload-question-options.d.ts +0 -0
  353. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/group-question-options.d.ts +0 -0
  354. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/multi-select-options.d.ts +0 -0
  355. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/nested-questions.d.ts +0 -0
  356. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/repeating-question-options.d.ts +0 -0
  357. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/select-option.d.ts +0 -0
  358. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/select-question-options.d.ts +0 -0
  359. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/test-order-question-options.d.ts +0 -0
  360. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/text-area-question-options.d.ts +0 -0
  361. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/text-question-options.d.ts +0 -0
  362. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/interfaces/ui-select-question-options.d.ts +0 -0
  363. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/js-expression-validation.model.d.ts +0 -0
  364. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/max-validation.model.d.ts +0 -0
  365. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/min-validation.model.d.ts +0 -0
  366. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/models.d.ts +0 -0
  367. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/multi-select-question.d.ts +0 -0
  368. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/pair.model.d.ts +0 -0
  369. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/question-base.d.ts +0 -0
  370. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/rendering-type.d.ts +0 -0
  371. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/repeating-question.d.ts +0 -0
  372. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/select-option.d.ts +0 -0
  373. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/select-question.d.ts +0 -0
  374. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/test-order-question.d.ts +0 -0
  375. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/text-area-input-question.d.ts +0 -0
  376. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/text-input-question.d.ts +0 -0
  377. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/ui-select-question.d.ts +0 -0
  378. package/{dist/ngx-formentry/form-entry → form-entry}/question-models/validation.model.d.ts +0 -0
  379. package/{dist/ngx-formentry/form-entry → form-entry}/services/debug-mode.service.d.ts +0 -0
  380. package/{dist/ngx-formentry/form-entry → form-entry}/services/form-errors.service.d.ts +0 -0
  381. package/{dist/ngx-formentry/form-entry → form-entry}/services/form-schema-compiler.service.d.ts +0 -0
  382. package/{dist/ngx-formentry/form-entry → form-entry}/services/historical-encounter-data.service.d.ts +0 -0
  383. package/{dist/ngx-formentry/form-entry → form-entry}/utils/messages.d.ts +0 -0
  384. package/{dist/ngx-formentry/form-entry → form-entry}/validators/conditional-answered.validator.d.ts +0 -0
  385. package/{dist/ngx-formentry/form-entry → form-entry}/validators/conditional-required.validator.d.ts +0 -0
  386. package/{dist/ngx-formentry/form-entry → form-entry}/validators/date.validator.d.ts +0 -0
  387. package/{dist/ngx-formentry/form-entry → form-entry}/validators/future-date-restriction.validator.d.ts +0 -0
  388. package/{dist/ngx-formentry/form-entry → form-entry}/validators/js-expression.validator.d.ts +0 -0
  389. package/{dist/ngx-formentry/form-entry → form-entry}/validators/max-date.validator.d.ts +0 -0
  390. package/{dist/ngx-formentry/form-entry → form-entry}/validators/max.validator.d.ts +0 -0
  391. package/{dist/ngx-formentry/form-entry → form-entry}/validators/min-date.validator.d.ts +0 -0
  392. package/{dist/ngx-formentry/form-entry → form-entry}/validators/min.validator.d.ts +0 -0
  393. package/{dist/ngx-formentry/form-entry → form-entry}/validators/required.validator.d.ts +0 -0
  394. package/{dist/ngx-formentry/form-entry → form-entry}/validators/validations.d.ts +0 -0
  395. package/{dist/ngx-formentry/form-entry → form-entry}/value-adapters/encounter.adapter.d.ts +0 -0
  396. package/{dist/ngx-formentry/form-entry → form-entry}/value-adapters/obs-adapter-helper.d.ts +0 -0
  397. package/{dist/ngx-formentry/form-entry → form-entry}/value-adapters/obs.adapter.d.ts +0 -0
  398. package/{dist/ngx-formentry/form-entry → form-entry}/value-adapters/order.adapter.d.ts +0 -0
  399. package/{dist/ngx-formentry/form-entry → form-entry}/value-adapters/person-attribute.adapter.d.ts +0 -0
  400. package/{dist/ngx-formentry/form-entry → form-entry}/value-adapters/value.adapter.d.ts +0 -0
  401. package/package.json +21 -83
  402. package/{dist/ngx-formentry/public_api.d.ts → public_api.d.ts} +0 -0
  403. package/{dist/ngx-formentry/shared.module.d.ts → shared.module.d.ts} +0 -0
  404. package/.editorconfig +0 -13
  405. package/.prettierignore +0 -40
  406. package/.prettierrc +0 -6
  407. package/.travis.yml +0 -17
  408. package/README.md +0 -34
  409. package/angular.json +0 -143
  410. package/dist/ngx-formentry/bundles/ngx-openmrs-formentry.umd.js +0 -10706
  411. package/dist/ngx-formentry/bundles/ngx-openmrs-formentry.umd.js.map +0 -1
  412. package/dist/ngx-formentry/bundles/ngx-openmrs-formentry.umd.min.js +0 -2
  413. package/dist/ngx-formentry/bundles/ngx-openmrs-formentry.umd.min.js.map +0 -1
  414. package/dist/ngx-formentry/esm2015/abstract-controls-extension/afe-control-type.js +0 -8
  415. package/dist/ngx-formentry/esm2015/abstract-controls-extension/afe-form-array.js +0 -85
  416. package/dist/ngx-formentry/esm2015/abstract-controls-extension/afe-form-control.js +0 -88
  417. package/dist/ngx-formentry/esm2015/abstract-controls-extension/afe-form-group.js +0 -61
  418. package/dist/ngx-formentry/esm2015/abstract-controls-extension/control-extensions.js +0 -5
  419. package/dist/ngx-formentry/esm2015/abstract-controls-extension/index.js +0 -5
  420. package/dist/ngx-formentry/esm2015/abstract-controls-extension/value-change.listener.js +0 -1
  421. package/dist/ngx-formentry/esm2015/change-tracking/control-relation.js +0 -44
  422. package/dist/ngx-formentry/esm2015/change-tracking/control-relations.js +0 -32
  423. package/dist/ngx-formentry/esm2015/components/afe-ng-select.component.js +0 -87
  424. package/dist/ngx-formentry/esm2015/components/appointments-overview/appointments-overview.component.js +0 -161
  425. package/dist/ngx-formentry/esm2015/components/check-box/checkbox.component.js +0 -97
  426. package/dist/ngx-formentry/esm2015/components/check-box/checkbox.module.js +0 -14
  427. package/dist/ngx-formentry/esm2015/components/date-time-picker/date-picker/date-picker.component.js +0 -270
  428. package/dist/ngx-formentry/esm2015/components/date-time-picker/date-time-picker.component.js +0 -207
  429. package/dist/ngx-formentry/esm2015/components/date-time-picker/date-time-picker.module.js +0 -34
  430. package/dist/ngx-formentry/esm2015/components/date-time-picker/picker-modal/modal.component.js +0 -36
  431. package/dist/ngx-formentry/esm2015/components/date-time-picker/pipes/moment.pipe.js +0 -13
  432. package/dist/ngx-formentry/esm2015/components/date-time-picker/time-picker/time-picker.component.js +0 -160
  433. package/dist/ngx-formentry/esm2015/components/file-upload/file-upload.component.js +0 -128
  434. package/dist/ngx-formentry/esm2015/components/file-upload/file-upload.module.js +0 -27
  435. package/dist/ngx-formentry/esm2015/components/file-upload/secure.pipe.js +0 -102
  436. package/dist/ngx-formentry/esm2015/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -191
  437. package/dist/ngx-formentry/esm2015/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -41
  438. package/dist/ngx-formentry/esm2015/components/remote-select/remote-select.component.js +0 -169
  439. package/dist/ngx-formentry/esm2015/components/remote-select/remote-select.module.js +0 -17
  440. package/dist/ngx-formentry/esm2015/components/select/diacritics.js +0 -855
  441. package/dist/ngx-formentry/esm2015/components/select/option-list.js +0 -179
  442. package/dist/ngx-formentry/esm2015/components/select/option.js +0 -29
  443. package/dist/ngx-formentry/esm2015/components/select/select-dropdown.component.js +0 -161
  444. package/dist/ngx-formentry/esm2015/components/select/select-dropdown.component.style.js +0 -58
  445. package/dist/ngx-formentry/esm2015/components/select/select.component.js +0 -514
  446. package/dist/ngx-formentry/esm2015/components/select/select.component.style.js +0 -101
  447. package/dist/ngx-formentry/esm2015/components/select/select.module.js +0 -15
  448. package/dist/ngx-formentry/esm2015/encounter-viewer/display-controls/question-control.component.js +0 -92
  449. package/dist/ngx-formentry/esm2015/encounter-viewer/display-controls/remote-answer.component.js +0 -79
  450. package/dist/ngx-formentry/esm2015/encounter-viewer/encounter-container/encounter-container.component.js +0 -48
  451. package/dist/ngx-formentry/esm2015/encounter-viewer/encounter-pdf-viewer.service.js +0 -435
  452. package/dist/ngx-formentry/esm2015/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -299
  453. package/dist/ngx-formentry/esm2015/encounter-viewer/encounter-viewer.module.js +0 -35
  454. package/dist/ngx-formentry/esm2015/encounter-viewer/encounter-viewer.service.js +0 -160
  455. package/dist/ngx-formentry/esm2015/form-entry/control-alerts/alert-helpers.js +0 -40
  456. package/dist/ngx-formentry/esm2015/form-entry/control-alerts/can-generate-alert.js +0 -1
  457. package/dist/ngx-formentry/esm2015/form-entry/control-calculators/can-calculate.js +0 -1
  458. package/dist/ngx-formentry/esm2015/form-entry/control-hiders-disablers/can-disable.js +0 -1
  459. package/dist/ngx-formentry/esm2015/form-entry/control-hiders-disablers/can-hide.js +0 -1
  460. package/dist/ngx-formentry/esm2015/form-entry/control-hiders-disablers/disabler-helper.js +0 -33
  461. package/dist/ngx-formentry/esm2015/form-entry/control-hiders-disablers/hider-helpers.js +0 -40
  462. package/dist/ngx-formentry/esm2015/form-entry/data-sources/data-sources.js +0 -30
  463. package/dist/ngx-formentry/esm2015/form-entry/data-sources/dummy-data-source.js +0 -104
  464. package/dist/ngx-formentry/esm2015/form-entry/directives/historical-value-directive.js +0 -66
  465. package/dist/ngx-formentry/esm2015/form-entry/error-renderer/error-renderer.component.js +0 -69
  466. package/dist/ngx-formentry/esm2015/form-entry/expression-runner/expression-runner.js +0 -152
  467. package/dist/ngx-formentry/esm2015/form-entry/form-entry.module.js +0 -103
  468. package/dist/ngx-formentry/esm2015/form-entry/form-factory/form-control.service.js +0 -117
  469. package/dist/ngx-formentry/esm2015/form-entry/form-factory/form-node.js +0 -78
  470. package/dist/ngx-formentry/esm2015/form-entry/form-factory/form.factory.js +0 -132
  471. package/dist/ngx-formentry/esm2015/form-entry/form-factory/form.js +0 -193
  472. package/dist/ngx-formentry/esm2015/form-entry/form-factory/hiders-disablers.factory.js +0 -66
  473. package/dist/ngx-formentry/esm2015/form-entry/form-factory/question.factory.js +0 -834
  474. package/dist/ngx-formentry/esm2015/form-entry/form-factory/show-messages.factory.js +0 -30
  475. package/dist/ngx-formentry/esm2015/form-entry/form-factory/validation.factory.js +0 -145
  476. package/dist/ngx-formentry/esm2015/form-entry/form-renderer/form-renderer.component.css.js +0 -156
  477. package/dist/ngx-formentry/esm2015/form-entry/form-renderer/form-renderer.component.js +0 -632
  478. package/dist/ngx-formentry/esm2015/form-entry/helpers/historical-expression-helper-service.js +0 -38
  479. package/dist/ngx-formentry/esm2015/form-entry/helpers/historical-field-helper-service.js +0 -32
  480. package/dist/ngx-formentry/esm2015/form-entry/helpers/js-expression-helper.js +0 -234
  481. package/dist/ngx-formentry/esm2015/form-entry/question-models/checkbox.model.js +0 -11
  482. package/dist/ngx-formentry/esm2015/form-entry/question-models/conditional-validation.model.js +0 -9
  483. package/dist/ngx-formentry/esm2015/form-entry/question-models/date-question.js +0 -12
  484. package/dist/ngx-formentry/esm2015/form-entry/question-models/date-validation.model.js +0 -10
  485. package/dist/ngx-formentry/esm2015/form-entry/question-models/file-upload-question.js +0 -13
  486. package/dist/ngx-formentry/esm2015/form-entry/question-models/group-question.js +0 -12
  487. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/base-options.js +0 -1
  488. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/checkbox-options.js +0 -1
  489. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/data-source.js +0 -1
  490. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/date-question-options.js +0 -1
  491. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/file-upload-question-options.js +0 -1
  492. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/group-question-options.js +0 -1
  493. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/multi-select-options.js +0 -1
  494. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/nested-questions.js +0 -7
  495. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/repeating-question-options.js +0 -1
  496. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/select-option.js +0 -1
  497. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/select-question-options.js +0 -1
  498. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/test-order-question-options.js +0 -1
  499. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/text-area-question-options.js +0 -1
  500. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/text-question-options.js +0 -1
  501. package/dist/ngx-formentry/esm2015/form-entry/question-models/interfaces/ui-select-question-options.js +0 -1
  502. package/dist/ngx-formentry/esm2015/form-entry/question-models/js-expression-validation.model.js +0 -8
  503. package/dist/ngx-formentry/esm2015/form-entry/question-models/max-validation.model.js +0 -9
  504. package/dist/ngx-formentry/esm2015/form-entry/question-models/min-validation.model.js +0 -9
  505. package/dist/ngx-formentry/esm2015/form-entry/question-models/models.js +0 -12
  506. package/dist/ngx-formentry/esm2015/form-entry/question-models/multi-select-question.js +0 -11
  507. package/dist/ngx-formentry/esm2015/form-entry/question-models/pair.model.js +0 -7
  508. package/dist/ngx-formentry/esm2015/form-entry/question-models/question-base.js +0 -24
  509. package/dist/ngx-formentry/esm2015/form-entry/question-models/repeating-question.js +0 -11
  510. package/dist/ngx-formentry/esm2015/form-entry/question-models/select-option.js +0 -7
  511. package/dist/ngx-formentry/esm2015/form-entry/question-models/select-question.js +0 -12
  512. package/dist/ngx-formentry/esm2015/form-entry/question-models/test-order-question.js +0 -15
  513. package/dist/ngx-formentry/esm2015/form-entry/question-models/text-area-input-question.js +0 -13
  514. package/dist/ngx-formentry/esm2015/form-entry/question-models/text-input-question.js +0 -10
  515. package/dist/ngx-formentry/esm2015/form-entry/question-models/ui-select-question.js +0 -11
  516. package/dist/ngx-formentry/esm2015/form-entry/question-models/validation.model.js +0 -7
  517. package/dist/ngx-formentry/esm2015/form-entry/services/debug-mode.service.js +0 -22
  518. package/dist/ngx-formentry/esm2015/form-entry/services/form-errors.service.js +0 -18
  519. package/dist/ngx-formentry/esm2015/form-entry/services/form-schema-compiler.service.js +0 -246
  520. package/dist/ngx-formentry/esm2015/form-entry/services/historical-encounter-data.service.js +0 -171
  521. package/dist/ngx-formentry/esm2015/form-entry/utils/messages.js +0 -12
  522. package/dist/ngx-formentry/esm2015/form-entry/validators/conditional-answered.validator.js +0 -46
  523. package/dist/ngx-formentry/esm2015/form-entry/validators/conditional-required.validator.js +0 -40
  524. package/dist/ngx-formentry/esm2015/form-entry/validators/date.validator.js +0 -18
  525. package/dist/ngx-formentry/esm2015/form-entry/validators/future-date-restriction.validator.js +0 -21
  526. package/dist/ngx-formentry/esm2015/form-entry/validators/js-expression.validator.js +0 -26
  527. package/dist/ngx-formentry/esm2015/form-entry/validators/max-date.validator.js +0 -23
  528. package/dist/ngx-formentry/esm2015/form-entry/validators/max.validator.js +0 -17
  529. package/dist/ngx-formentry/esm2015/form-entry/validators/min-date.validator.js +0 -23
  530. package/dist/ngx-formentry/esm2015/form-entry/validators/min.validator.js +0 -17
  531. package/dist/ngx-formentry/esm2015/form-entry/validators/required.validator.js +0 -11
  532. package/dist/ngx-formentry/esm2015/form-entry/validators/validations.js +0 -5
  533. package/dist/ngx-formentry/esm2015/form-entry/value-adapters/encounter.adapter.js +0 -173
  534. package/dist/ngx-formentry/esm2015/form-entry/value-adapters/obs-adapter-helper.js +0 -490
  535. package/dist/ngx-formentry/esm2015/form-entry/value-adapters/obs.adapter.js +0 -542
  536. package/dist/ngx-formentry/esm2015/form-entry/value-adapters/order.adapter.js +0 -186
  537. package/dist/ngx-formentry/esm2015/form-entry/value-adapters/person-attribute.adapter.js +0 -87
  538. package/dist/ngx-formentry/esm2015/form-entry/value-adapters/value.adapter.js +0 -1
  539. package/dist/ngx-formentry/esm2015/ngx-openmrs-formentry.js +0 -42
  540. package/dist/ngx-formentry/esm2015/public_api.js +0 -51
  541. package/dist/ngx-formentry/esm2015/shared.module.js +0 -15
  542. package/dist/ngx-formentry/esm5/abstract-controls-extension/afe-control-type.js +0 -8
  543. package/dist/ngx-formentry/esm5/abstract-controls-extension/afe-form-array.js +0 -98
  544. package/dist/ngx-formentry/esm5/abstract-controls-extension/afe-form-control.js +0 -96
  545. package/dist/ngx-formentry/esm5/abstract-controls-extension/afe-form-group.js +0 -70
  546. package/dist/ngx-formentry/esm5/abstract-controls-extension/control-extensions.js +0 -5
  547. package/dist/ngx-formentry/esm5/abstract-controls-extension/index.js +0 -5
  548. package/dist/ngx-formentry/esm5/abstract-controls-extension/value-change.listener.js +0 -1
  549. package/dist/ngx-formentry/esm5/change-tracking/control-relation.js +0 -59
  550. package/dist/ngx-formentry/esm5/change-tracking/control-relations.js +0 -46
  551. package/dist/ngx-formentry/esm5/components/afe-ng-select.component.js +0 -87
  552. package/dist/ngx-formentry/esm5/components/appointments-overview/appointments-overview.component.js +0 -123
  553. package/dist/ngx-formentry/esm5/components/check-box/checkbox.component.js +0 -88
  554. package/dist/ngx-formentry/esm5/components/check-box/checkbox.module.js +0 -18
  555. package/dist/ngx-formentry/esm5/components/date-time-picker/date-picker/date-picker.component.js +0 -186
  556. package/dist/ngx-formentry/esm5/components/date-time-picker/date-time-picker.component.js +0 -111
  557. package/dist/ngx-formentry/esm5/components/date-time-picker/date-time-picker.module.js +0 -38
  558. package/dist/ngx-formentry/esm5/components/date-time-picker/picker-modal/modal.component.js +0 -32
  559. package/dist/ngx-formentry/esm5/components/date-time-picker/pipes/moment.pipe.js +0 -17
  560. package/dist/ngx-formentry/esm5/components/date-time-picker/time-picker/time-picker.component.js +0 -117
  561. package/dist/ngx-formentry/esm5/components/file-upload/file-upload.component.js +0 -126
  562. package/dist/ngx-formentry/esm5/components/file-upload/file-upload.module.js +0 -31
  563. package/dist/ngx-formentry/esm5/components/file-upload/secure.pipe.js +0 -105
  564. package/dist/ngx-formentry/esm5/components/ngx-date-time-picker/ngx-date-time-picker.component.js +0 -140
  565. package/dist/ngx-formentry/esm5/components/ngx-date-time-picker/ngx-date-time-picker.module.js +0 -45
  566. package/dist/ngx-formentry/esm5/components/remote-select/remote-select.component.js +0 -163
  567. package/dist/ngx-formentry/esm5/components/remote-select/remote-select.module.js +0 -21
  568. package/dist/ngx-formentry/esm5/components/select/diacritics.js +0 -860
  569. package/dist/ngx-formentry/esm5/components/select/option-list.js +0 -224
  570. package/dist/ngx-formentry/esm5/components/select/option.js +0 -31
  571. package/dist/ngx-formentry/esm5/components/select/select-dropdown.component.js +0 -131
  572. package/dist/ngx-formentry/esm5/components/select/select-dropdown.component.style.js +0 -2
  573. package/dist/ngx-formentry/esm5/components/select/select.component.js +0 -456
  574. package/dist/ngx-formentry/esm5/components/select/select.component.style.js +0 -2
  575. package/dist/ngx-formentry/esm5/components/select/select.module.js +0 -19
  576. package/dist/ngx-formentry/esm5/encounter-viewer/display-controls/file-preview.component.js +0 -109
  577. package/dist/ngx-formentry/esm5/encounter-viewer/display-controls/question-control.component.js +0 -104
  578. package/dist/ngx-formentry/esm5/encounter-viewer/display-controls/remote-answer.component.js +0 -86
  579. package/dist/ngx-formentry/esm5/encounter-viewer/encounter-container/encounter-container.component.js +0 -45
  580. package/dist/ngx-formentry/esm5/encounter-viewer/encounter-pdf-viewer.service.js +0 -521
  581. package/dist/ngx-formentry/esm5/encounter-viewer/encounter-view/encounter-viewer.component.js +0 -185
  582. package/dist/ngx-formentry/esm5/encounter-viewer/encounter-viewer.module.js +0 -39
  583. package/dist/ngx-formentry/esm5/encounter-viewer/encounter-viewer.service.js +0 -165
  584. package/dist/ngx-formentry/esm5/form-entry/control-alerts/alert-helpers.js +0 -44
  585. package/dist/ngx-formentry/esm5/form-entry/control-alerts/can-generate-alert.js +0 -1
  586. package/dist/ngx-formentry/esm5/form-entry/control-calculators/can-calculate.js +0 -1
  587. package/dist/ngx-formentry/esm5/form-entry/control-hiders-disablers/can-disable.js +0 -1
  588. package/dist/ngx-formentry/esm5/form-entry/control-hiders-disablers/can-hide.js +0 -1
  589. package/dist/ngx-formentry/esm5/form-entry/control-hiders-disablers/disabler-helper.js +0 -37
  590. package/dist/ngx-formentry/esm5/form-entry/control-hiders-disablers/hider-helpers.js +0 -44
  591. package/dist/ngx-formentry/esm5/form-entry/data-sources/data-sources.js +0 -37
  592. package/dist/ngx-formentry/esm5/form-entry/data-sources/dummy-data-source.js +0 -106
  593. package/dist/ngx-formentry/esm5/form-entry/directives/historical-value-directive.js +0 -72
  594. package/dist/ngx-formentry/esm5/form-entry/error-renderer/error-renderer.component.js +0 -62
  595. package/dist/ngx-formentry/esm5/form-entry/expression-runner/expression-runner.js +0 -158
  596. package/dist/ngx-formentry/esm5/form-entry/form-entry.module.js +0 -107
  597. package/dist/ngx-formentry/esm5/form-entry/form-factory/control-relations.factory.js +0 -243
  598. package/dist/ngx-formentry/esm5/form-entry/form-factory/form-control.service.js +0 -120
  599. package/dist/ngx-formentry/esm5/form-entry/form-factory/form-node.js +0 -116
  600. package/dist/ngx-formentry/esm5/form-entry/form-factory/form.factory.js +0 -136
  601. package/dist/ngx-formentry/esm5/form-entry/form-factory/form.js +0 -213
  602. package/dist/ngx-formentry/esm5/form-entry/form-factory/hiders-disablers.factory.js +0 -68
  603. package/dist/ngx-formentry/esm5/form-entry/form-factory/question.factory.js +0 -838
  604. package/dist/ngx-formentry/esm5/form-entry/form-factory/show-messages.factory.js +0 -32
  605. package/dist/ngx-formentry/esm5/form-entry/form-factory/validation.factory.js +0 -189
  606. package/dist/ngx-formentry/esm5/form-entry/form-renderer/form-renderer.component.css.js +0 -2
  607. package/dist/ngx-formentry/esm5/form-entry/form-renderer/form-renderer.component.js +0 -211
  608. package/dist/ngx-formentry/esm5/form-entry/helpers/historical-expression-helper-service.js +0 -41
  609. package/dist/ngx-formentry/esm5/form-entry/helpers/historical-field-helper-service.js +0 -36
  610. package/dist/ngx-formentry/esm5/form-entry/helpers/js-expression-helper.js +0 -242
  611. package/dist/ngx-formentry/esm5/form-entry/question-models/checkbox.model.js +0 -16
  612. package/dist/ngx-formentry/esm5/form-entry/question-models/conditional-validation.model.js +0 -14
  613. package/dist/ngx-formentry/esm5/form-entry/question-models/date-question.js +0 -17
  614. package/dist/ngx-formentry/esm5/form-entry/question-models/date-validation.model.js +0 -15
  615. package/dist/ngx-formentry/esm5/form-entry/question-models/file-upload-question.js +0 -18
  616. package/dist/ngx-formentry/esm5/form-entry/question-models/group-question.js +0 -17
  617. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/base-options.js +0 -1
  618. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/checkbox-options.js +0 -1
  619. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/data-source.js +0 -1
  620. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/date-question-options.js +0 -1
  621. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/file-upload-question-options.js +0 -1
  622. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/group-question-options.js +0 -1
  623. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/multi-select-options.js +0 -1
  624. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/nested-questions.js +0 -11
  625. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/repeating-question-options.js +0 -1
  626. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/select-option.js +0 -1
  627. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/select-question-options.js +0 -1
  628. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/test-order-question-options.js +0 -1
  629. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/text-area-question-options.js +0 -1
  630. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/text-question-options.js +0 -1
  631. package/dist/ngx-formentry/esm5/form-entry/question-models/interfaces/ui-select-question-options.js +0 -1
  632. package/dist/ngx-formentry/esm5/form-entry/question-models/js-expression-validation.model.js +0 -13
  633. package/dist/ngx-formentry/esm5/form-entry/question-models/max-validation.model.js +0 -14
  634. package/dist/ngx-formentry/esm5/form-entry/question-models/min-validation.model.js +0 -14
  635. package/dist/ngx-formentry/esm5/form-entry/question-models/models.js +0 -12
  636. package/dist/ngx-formentry/esm5/form-entry/question-models/multi-select-question.js +0 -16
  637. package/dist/ngx-formentry/esm5/form-entry/question-models/pair.model.js +0 -9
  638. package/dist/ngx-formentry/esm5/form-entry/question-models/question-base.js +0 -26
  639. package/dist/ngx-formentry/esm5/form-entry/question-models/repeating-question.js +0 -16
  640. package/dist/ngx-formentry/esm5/form-entry/question-models/select-option.js +0 -9
  641. package/dist/ngx-formentry/esm5/form-entry/question-models/select-question.js +0 -17
  642. package/dist/ngx-formentry/esm5/form-entry/question-models/test-order-question.js +0 -20
  643. package/dist/ngx-formentry/esm5/form-entry/question-models/text-area-input-question.js +0 -18
  644. package/dist/ngx-formentry/esm5/form-entry/question-models/text-input-question.js +0 -15
  645. package/dist/ngx-formentry/esm5/form-entry/question-models/ui-select-question.js +0 -16
  646. package/dist/ngx-formentry/esm5/form-entry/question-models/validation.model.js +0 -9
  647. package/dist/ngx-formentry/esm5/form-entry/services/debug-mode.service.js +0 -24
  648. package/dist/ngx-formentry/esm5/form-entry/services/form-errors.service.js +0 -20
  649. package/dist/ngx-formentry/esm5/form-entry/services/form-schema-compiler.service.js +0 -252
  650. package/dist/ngx-formentry/esm5/form-entry/services/historical-encounter-data.service.js +0 -178
  651. package/dist/ngx-formentry/esm5/form-entry/utils/messages.js +0 -16
  652. package/dist/ngx-formentry/esm5/form-entry/validators/conditional-answered.validator.js +0 -49
  653. package/dist/ngx-formentry/esm5/form-entry/validators/conditional-required.validator.js +0 -43
  654. package/dist/ngx-formentry/esm5/form-entry/validators/date.validator.js +0 -21
  655. package/dist/ngx-formentry/esm5/form-entry/validators/future-date-restriction.validator.js +0 -24
  656. package/dist/ngx-formentry/esm5/form-entry/validators/js-expression.validator.js +0 -29
  657. package/dist/ngx-formentry/esm5/form-entry/validators/max-date.validator.js +0 -27
  658. package/dist/ngx-formentry/esm5/form-entry/validators/max.validator.js +0 -21
  659. package/dist/ngx-formentry/esm5/form-entry/validators/min-date.validator.js +0 -27
  660. package/dist/ngx-formentry/esm5/form-entry/validators/min.validator.js +0 -21
  661. package/dist/ngx-formentry/esm5/form-entry/validators/required.validator.js +0 -15
  662. package/dist/ngx-formentry/esm5/form-entry/validators/validations.js +0 -8
  663. package/dist/ngx-formentry/esm5/form-entry/value-adapters/encounter.adapter.js +0 -176
  664. package/dist/ngx-formentry/esm5/form-entry/value-adapters/obs-adapter-helper.js +0 -508
  665. package/dist/ngx-formentry/esm5/form-entry/value-adapters/obs.adapter.js +0 -735
  666. package/dist/ngx-formentry/esm5/form-entry/value-adapters/order.adapter.js +0 -226
  667. package/dist/ngx-formentry/esm5/form-entry/value-adapters/person-attribute.adapter.js +0 -91
  668. package/dist/ngx-formentry/esm5/form-entry/value-adapters/value.adapter.js +0 -1
  669. package/dist/ngx-formentry/esm5/ngx-openmrs-formentry.js +0 -42
  670. package/dist/ngx-formentry/esm5/public_api.js +0 -51
  671. package/dist/ngx-formentry/esm5/shared.module.js +0 -19
  672. package/dist/ngx-formentry/fesm2015/ngx-openmrs-formentry.js +0 -10919
  673. package/dist/ngx-formentry/fesm2015/ngx-openmrs-formentry.js.map +0 -1
  674. package/dist/ngx-formentry/fesm5/ngx-openmrs-formentry.js +0 -10359
  675. package/dist/ngx-formentry/fesm5/ngx-openmrs-formentry.js.map +0 -1
  676. package/dist/ngx-formentry/package.json +0 -35
  677. package/scripts/build.sh +0 -2
  678. package/tsconfig.json +0 -20
  679. package/tslint.json +0 -96
@@ -1,161 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { LeafNode } from '../../form-entry/form-factory/form-node';
3
- import * as moment_ from 'moment';
4
- const moment = moment_;
5
- export class AppointmentsOverviewComponent {
6
- constructor() {
7
- this.showAppointments = false;
8
- this.loadingAppointments = false;
9
- this.errorLoadingAppointments = false;
10
- this.appointmentsLoaded = false;
11
- this.appointments = [];
12
- this.today = '';
13
- }
14
- ngOnInit() { }
15
- ngOnChanges() {
16
- this.node.control.valueChanges.subscribe((v) => {
17
- this.resetProperties();
18
- const node = this.node;
19
- if (node.question.extras.questionOptions.concept &&
20
- (node.question.extras.questionOptions.concept ===
21
- 'a8a666ba-1350-11df-a1f1-0026b9348838' ||
22
- node.question.extras.questionOptions.concept ===
23
- 'a89d2398-1350-11df-a1f1-0026b9348838')) {
24
- // console.log('what change is here', this.showAppointments);
25
- if (!this.showAppointments) {
26
- this.loadingAppointments = true;
27
- this.showAppointments = true;
28
- let dataSource;
29
- if (node.form && node.form.dataSourcesContainer.dataSources) {
30
- dataSource =
31
- node.form.dataSourcesContainer.dataSources
32
- .monthlyScheduleResourceService;
33
- }
34
- const locationUuid = node.form.dataSourcesContainer.dataSources.userLocation.uuid;
35
- if (dataSource && locationUuid) {
36
- const startDate = moment(v)
37
- .startOf('week')
38
- .add(1, 'day')
39
- .format('YYYY-MM-DD');
40
- const endDate = moment(v)
41
- .endOf('week')
42
- .subtract(1, 'day')
43
- .format('YYYY-MM-DD');
44
- this.today = moment(v).format('DD-MM-YYYY');
45
- // create 5 week days
46
- const _data = [];
47
- const programTypes = [
48
- '781d85b0-1359-11df-a1f1-0026b9348838',
49
- '781d897a-1359-11df-a1f1-0026b9348838',
50
- '96047aaf-7ab3-45e9-be6a-b61810fe617d',
51
- 'c19aec66-1a40-4588-9b03-b6be55a8dd1d',
52
- 'f7793d42-11ac-4cfd-9b35-e0a21a7a7c31',
53
- '334c9e98-173f-4454-a8ce-f80b20b7fdf0',
54
- '96ba279b-b23b-4e78-aba9-dcbd46a96b7b',
55
- '781d8880-1359-11df-a1f1-0026b9348838'
56
- ];
57
- const programTypeParams = programTypes.join();
58
- for (let i = 1; i <= 5; i++) {
59
- _data.push({
60
- date: moment(v)
61
- .startOf('week')
62
- .add(i, 'day')
63
- .format('DD-MM-YYYY'),
64
- count: 0
65
- });
66
- }
67
- dataSource
68
- .getMonthlySchedule({
69
- startDate: startDate,
70
- endDate: endDate,
71
- limit: 5,
72
- locationUuids: locationUuid,
73
- programType: programTypeParams
74
- })
75
- .subscribe((data) => {
76
- this.appointmentsLoaded = true;
77
- this.loadingAppointments = false;
78
- _data.map((appointment, index) => {
79
- appointment.count =
80
- data.results[index] !== undefined
81
- ? data.results[index].count.scheduled
82
- : 0;
83
- });
84
- this.appointments = _data;
85
- }, (error) => {
86
- this.loadingAppointments = false;
87
- this.errorLoadingAppointments = true;
88
- this.showAppointments = false;
89
- console.error(error);
90
- });
91
- }
92
- else {
93
- this.showAppointments = false;
94
- this.errorLoadingAppointments = true;
95
- }
96
- }
97
- }
98
- });
99
- }
100
- resetProperties() {
101
- this.loadingAppointments = false;
102
- this.appointmentsLoaded = false;
103
- this.errorLoadingAppointments = false;
104
- this.showAppointments = false;
105
- this.appointments = [];
106
- this.today = '';
107
- }
108
- }
109
- AppointmentsOverviewComponent.decorators = [
110
- { type: Component, args: [{
111
- selector: 'appointments-overview',
112
- template: `<div *ngIf="showAppointments" class="appointments">
113
- <p *ngIf="loadingAppointments">
114
- <span *ngIf="!appointmentsLoaded && errorLoadingAppointments"
115
- >Error checking appointments</span
116
- >
117
- <span *ngIf="loadingAppointments"
118
- ><span class="fa fa-spinner fa-spin"></span>Checking appointments...</span
119
- >
120
- </p>
121
- <div *ngIf="appointmentsLoaded && !errorLoadingAppointments">
122
- <table
123
- *ngIf="appointments.length > 0"
124
- class="table table-stripped table-bordered"
125
- >
126
- <thead>
127
- <tr>
128
- <th
129
- *ngFor="let appointment of appointments"
130
- [ngClass]="{ active: appointment.date === today }"
131
- >
132
- <span>{{ appointment.date }}</span>
133
- </th>
134
- </tr>
135
- </thead>
136
- <tbody>
137
- <tr>
138
- <td
139
- *ngFor="let appointment of appointments"
140
- [ngClass]="{ active: appointment.date === today }"
141
- >
142
- <span
143
- ><strong
144
- ><em>{{ appointment.count }}</em></strong
145
- ></span
146
- >
147
- </td>
148
- </tr>
149
- </tbody>
150
- </table>
151
- </div>
152
- </div>
153
- `,
154
- styles: [`.appointments{margin-top:12px;font-size:12px;color:#999}.appointments p{padding-top:12px}.appointments th{border-bottom:0!important;color:#333}.appointments td span,.appointments th span{display:block}.appointments td.active,.appointments th.active{background-color:#3c8dbc;color:#fff!important;padding:0}.appointments td.active span,.appointments th.active span{padding:4px}.appointments span.fa{display:inline-block;margin-right:7px}`]
155
- },] },
156
- ];
157
- AppointmentsOverviewComponent.ctorParameters = () => [];
158
- AppointmentsOverviewComponent.propDecorators = {
159
- node: [{ type: Input }]
160
- };
161
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwb2ludG1lbnRzLW92ZXJ2aWV3LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25neC1vcGVubXJzLWZvcm1lbnRyeS8iLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvYXBwb2ludG1lbnRzLW92ZXJ2aWV3L2FwcG9pbnRtZW50cy1vdmVydmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBcUIsS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNuRSxPQUFPLEtBQUssT0FBTyxNQUFNLFFBQVEsQ0FBQztBQUVsQyxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUM7QUFnRHZCLE1BQU07SUFRSjtRQU5BLHFCQUFnQixHQUFHLEtBQUssQ0FBQztRQUN6Qix3QkFBbUIsR0FBRyxLQUFLLENBQUM7UUFDNUIsNkJBQXdCLEdBQUcsS0FBSyxDQUFDO1FBQ2pDLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixpQkFBWSxHQUFlLEVBQUUsQ0FBQztRQUM5QixVQUFLLEdBQUcsRUFBRSxDQUFDO0lBQ0ksQ0FBQztJQUVoQixRQUFRLEtBQUksQ0FBQztJQUViLFdBQVc7UUFDVCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDN0MsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDdkIsRUFBRSxDQUFDLENBQ0QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU87Z0JBQzVDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsZUFBZSxDQUFDLE9BQU87b0JBQzNDLHNDQUFzQztvQkFDdEMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxN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WDtnQkFDQyxNQUFNLEVBQUUsQ0FBQyxxYkFBcWIsQ0FBQzthQUNoYzs7OzttQkFFRSxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE9uQ2hhbmdlcywgSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgTGVhZk5vZGUgfSBmcm9tICcuLi8uLi9mb3JtLWVudHJ5L2Zvcm0tZmFjdG9yeS9mb3JtLW5vZGUnO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHBvaW50bWVudHMtb3ZlcnZpZXcnLFxuICB0ZW1wbGF0ZTogYDxkaXYgKm5nSWY9XCJzaG93QXBwb2ludG1lbnRzXCIgY2xhc3M9XCJhcHBvaW50bWVudHNcIj5cbiAgPHAgKm5nSWY9XCJsb2FkaW5nQXBwb2ludG1lbnRzXCI+XG4gICAgPHNwYW4gKm5nSWY9XCIhYXBwb2ludG1lbnRzTG9hZGVkICYmIGVycm9yTG9hZGluZ0FwcG9pbnRtZW50c1wiXG4gICAgICA+RXJyb3IgY2hlY2tpbmcgYXBwb2ludG1lbnRzPC9zcGFuXG4gICAgPlxuICAgIDxzcGFuICpuZ0lmPVwibG9hZGluZ0FwcG9pbnRtZW50c1wiXG4gICAgICA+PHNwYW4gY2xhc3M9XCJmYSBmYS1zcGlubmVyIGZhLXNwaW5cIj48L3NwYW4+Q2hlY2tpbmcgYXBwb2ludG1lbnRzLi4uPC9zcGFuXG4gICAgPlxuICA8L3A+XG4gIDxkaXYgKm5nSWY9XCJhcHBvaW50bWVudHNMb2FkZWQgJiYgIWVycm9yTG9hZGluZ0FwcG9pbnRtZW50c1wiPlxuICAgIDx0YWJsZVxuICAgICAgKm5nSWY9XCJhcHBvaW50bWVudHMubGVuZ3RoID4gMFwiXG4gICAgICBjbGFzcz1cInRhYmxlIHRhYmxlLXN0cmlwcGVkIHRhYmxlLWJvcmRlcmVkXCJcbiAgICA+XG4gICAgICA8dGhlYWQ+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGhcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhcHBvaW50bWVudCBvZiBhcHBvaW50bWVudHNcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGFwcG9pbnRtZW50LmRhdGUgPT09IHRvZGF5IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuPnt7IGFwcG9pbnRtZW50LmRhdGUgfX08L3NwYW4+XG4gICAgICAgICAgPC90aD5cbiAgICAgICAgPC90cj5cbiAgICAgIDwvdGhlYWQ+XG4gICAgICA8dGJvZHk+XG4gICAgICAgIDx0cj5cbiAgICAgICAgICA8dGRcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBhcHBvaW50bWVudCBvZiBhcHBvaW50bWVudHNcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwieyBhY3RpdmU6IGFwcG9pbnRtZW50LmRhdGUgPT09IHRvZGF5IH1cIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgID48c3Ryb25nXG4gICAgICAgICAgICAgICAgPjxlbT57eyBhcHBvaW50bWVudC5jb3VudCB9fTwvZW0+PC9zdHJvbmdcbiAgICAgICAgICAgICAgPjwvc3BhblxuICAgICAgICAgICAgPlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgIDwvdHI+XG4gICAgICA8L3Rib2R5PlxuICAgIDwvdGFibGU+XG4gIDwvZGl2PlxuPC9kaXY+XG5gLFxuICBzdHlsZXM6IFtgLmFwcG9pbnRtZW50c3ttYXJnaW4tdG9wOjEycHg7Zm9udC1zaXplOjEycHg7Y29sb3I6Izk5OX0uYXBwb2ludG1lbnRzIHB7cGFkZGluZy10b3A6MTJweH0uYXBwb2ludG1lbnRzIHRoe2JvcmRlci1ib3R0b206MCFpbXBvcnRhbnQ7Y29sb3I6IzMzM30uYXBwb2ludG1lbnRzIHRkIHNwYW4sLmFwcG9pbnRtZW50cyB0aCBzcGFue2Rpc3BsYXk6YmxvY2t9LmFwcG9pbnRtZW50cyB0ZC5hY3RpdmUsLmFwcG9pbnRtZW50cyB0aC5hY3RpdmV7YmFja2dyb3VuZC1jb2xvcjojM2M4ZGJjO2NvbG9yOiNmZmYhaW1wb3J0YW50O3BhZGRpbmc6MH0uYXBwb2ludG1lbnRzIHRkLmFjdGl2ZSBzcGFuLC5hcHBvaW50bWVudHMgdGguYWN0aXZlIHNwYW57cGFkZGluZzo0cHh9LmFwcG9pbnRtZW50cyBzcGFuLmZhe2Rpc3BsYXk6aW5saW5lLWJsb2NrO21hcmdpbi1yaWdodDo3cHh9YF1cbn0pXG5leHBvcnQgY2xhc3MgQXBwb2ludG1lbnRzT3ZlcnZpZXdDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIG5vZGU6IExlYWZOb2RlO1xuICBzaG93QXBwb2ludG1lbnRzID0gZmFsc2U7XG4gIGxvYWRpbmdBcHBvaW50bWVudHMgPSBmYWxzZTtcbiAgZXJyb3JMb2FkaW5nQXBwb2ludG1lbnRzID0gZmFsc2U7XG4gIGFwcG9pbnRtZW50c0xvYWRlZCA9IGZhbHNlO1xuICBhcHBvaW50bWVudHM6IEFycmF5PGFueT4gPSBbXTtcbiAgdG9kYXkgPSAnJztcbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge31cblxuICBuZ09uQ2hhbmdlcygpIHtcbiAgICB0aGlzLm5vZGUuY29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCh2KSA9PiB7XG4gICAgICB0aGlzLnJlc2V0UHJvcGVydGllcygpO1xuICAgICAgY29uc3Qgbm9kZSA9IHRoaXMubm9kZTtcbiAgICAgIGlmIChcbiAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLmNvbmNlcHQgJiZcbiAgICAgICAgKG5vZGUucXVlc3Rpb24uZXh0cmFzLnF1ZXN0aW9uT3B0aW9ucy5jb25jZXB0ID09PVxuICAgICAgICAgICdhOGE2NjZiYS0xMzUwLTExZGYtYTFmMS0wMDI2YjkzNDg4MzgnIHx8XG4gICAgICAgICAgbm9kZS5xdWVzdGlvbi5leHRyYXMucXVlc3Rpb25PcHRpb25zLmNvbmNlcHQgPT09XG4gICAgICAgICAgICAnYTg5ZDIzOTgtMTM1MC0xMWRmLWExZjEtMDAyNmI5MzQ4ODM4JylcbiAgICAgICkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnd2hhdCBjaGFuZ2UgaXMgaGVyZScsIHRoaXMuc2hvd0FwcG9pbnRtZW50cyk7XG4gICAgICAgIGlmICghdGhpcy5zaG93QXBwb2ludG1lbnRzKSB7XG4gICAgICAgICAgdGhpcy5sb2FkaW5nQXBwb2ludG1lbnRzID0gdHJ1ZTtcbiAgICAgICAgICB0aGlzLnNob3dBcHBvaW50bWVudHMgPSB0cnVlO1xuICAgICAgICAgIGxldCBkYXRhU291cmNlO1xuICAgICAgICAgIGlmIChub2RlLmZvcm0gJiYgbm9kZS5mb3JtLmRhdGFTb3VyY2VzQ29udGFpbmVyLmRhdGFTb3VyY2VzKSB7XG4gICAgICAgICAgICBkYXRhU291cmNlID1cbiAgICAgICAgICAgICAgbm9kZS5mb3JtLmRhdGFTb3VyY2VzQ29udGFpbmVyLmRhdGFTb3VyY2VzXG4gICAgICAgICAgICAgICAgLm1vbnRobHlTY2hlZHVsZVJlc291cmNlU2VydmljZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgbG9jYXRpb25VdWlkID1cbiAgICAgICAgICAgIG5vZGUuZm9ybS5kYXRhU291cmNlc0NvbnRhaW5lci5kYXRhU291cmNlcy51c2VyTG9jYXRpb24udXVpZDtcbiAgICAgICAgICBpZiAoZGF0YVNvdXJjZSAmJiBsb2NhdGlvblV1aWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IG1vbWVudCh2KVxuICAgICAgICAgICAgICAuc3RhcnRPZignd2VlaycpXG4gICAgICAgICAgICAgIC5hZGQoMSwgJ2RheScpXG4gICAgICAgICAgICAgIC5mb3JtYXQoJ1lZWVktTU0tREQnKTtcbiAgICAgICAgICAgIGNvbnN0IGVuZERhdGUgPSBtb21lbnQodilcbiAgICAgICAgICAgICAgLmVuZE9mKCd3ZWVrJylcbiAgICAgICAgICAgICAgLnN1YnRyYWN0KDEsICdkYXknKVxuICAgICAgICAgICAgICAuZm9ybWF0KCdZWVlZLU1NLUREJyk7XG4gICAgICAgICAgICB0aGlzLnRvZGF5ID0gbW9tZW50KHYpLmZvcm1hdCgnREQtTU0tWVlZWScpO1xuICAgICAgICAgICAgLy8gY3JlYXRlIDUgd2VlayBkYXlzXG4gICAgICAgICAgICBjb25zdCBfZGF0YSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgcHJvZ3JhbVR5cGVzID0gW1xuICAgICAgICAgICAgICAnNzgxZDg1YjAtMTM1OS0xMWRmLWExZjEtMDAyNmI5MzQ4ODM4JyxcbiAgICAgICAgICAgICAgJzc4MWQ4OTdhLTEzNTktMTFkZi1hMWYxLTAwMjZiOTM0ODgzOCcsXG4gICAgICAgICAgICAgICc5NjA0N2FhZi03YWIzLTQ1ZTktYmU2YS1iNjE4MTBmZTYxN2QnLFxuICAgICAgICAgICAgICAnYzE5YWVjNjYtMWE0MC00NTg4LTliMDMtYjZiZTU1YThkZDFkJyxcbiAgICAgICAgICAgICAgJ2Y3NzkzZDQyLTExYWMtNGNmZC05YjM1LWUwYTIxYTdhN2MzMScsXG4gICAgICAgICAgICAgICczMzRjOWU5OC0xNzNmLTQ0NTQtYThjZS1mODBiMjBiN2ZkZjAnLFxuICAgICAgICAgICAgICAnOTZiYTI3OWItYjIzYi00ZTc4LWFiYTktZGNiZDQ2YTk2YjdiJyxcbiAgICAgICAgICAgICAgJzc4MWQ4ODgwLTEzNTktMTFkZi1hMWYxLTAwMjZiOTM0ODgzOCdcbiAgICAgICAgICAgIF07XG4gICAgICAgICAgICBjb25zdCBwcm9ncmFtVHlwZVBhcmFtcyA9IHByb2dyYW1UeXBlcy5qb2luKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA1OyBpKyspIHtcbiAgICAgICAgICAgICAgX2RhdGEucHVzaCh7XG4gICAgICAgICAgICAgICAgZGF0ZTogbW9tZW50KHYpXG4gICAgICAgICAgICAgICAgICAuc3RhcnRPZignd2VlaycpXG4gICAgICAgICAgICAgICAgICAuYWRkKGksICdkYXknKVxuICAgICAgICAgICAgICAgICAgLmZvcm1hdCgnREQtTU0tWVlZWScpLFxuICAgICAgICAgICAgICAgIGNvdW50OiAwXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZGF0YVNvdXJjZVxuICAgICAgICAgICAgICAuZ2V0TW9udGhseVNjaGVkdWxlKHtcbiAgICAgICAgICAgICAgICBzdGFydERhdGU6IHN0YXJ0RGF0ZSxcbiAgICAgICAgICAgICAgICBlbmREYXRlOiBlbmREYXRlLFxuICAgICAgICAgICAgICAgIGxpbWl0OiA1LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uVXVpZHM6IGxvY2F0aW9uVXVpZCxcbiAgICAgICAgICAgICAgICBwcm9ncmFtVHlwZTogcHJvZ3JhbVR5cGVQYXJhbXNcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAgICAgICAgICAgdGhpcy5hcHBvaW50bWVudHNMb2FkZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgdGhpcy5sb2FkaW5nQXBwb2ludG1lbnRzID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICBfZGF0YS5tYXAoKGFwcG9pbnRtZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBhcHBvaW50bWVudC5jb3VudCA9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEucmVzdWx0c1tpbmRleF0gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBkYXRhLnJlc3VsdHNbaW5kZXhdLmNvdW50LnNjaGVkdWxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICB0aGlzLmFwcG9pbnRtZW50cyA9IF9kYXRhO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbmdBcHBvaW50bWVudHMgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuZXJyb3JMb2FkaW5nQXBwb2ludG1lbnRzID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0FwcG9pbnRtZW50cyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNob3dBcHBvaW50bWVudHMgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuZXJyb3JMb2FkaW5nQXBwb2ludG1lbnRzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHJlc2V0UHJvcGVydGllcygpIHtcbiAgICB0aGlzLmxvYWRpbmdBcHBvaW50bWVudHMgPSBmYWxzZTtcbiAgICB0aGlzLmFwcG9pbnRtZW50c0xvYWRlZCA9IGZhbHNlO1xuICAgIHRoaXMuZXJyb3JMb2FkaW5nQXBwb2ludG1lbnRzID0gZmFsc2U7XG4gICAgdGhpcy5zaG93QXBwb2ludG1lbnRzID0gZmFsc2U7XG4gICAgdGhpcy5hcHBvaW50bWVudHMgPSBbXTtcbiAgICB0aGlzLnRvZGF5ID0gJyc7XG4gIH1cbn1cbiJdfQ==
@@ -1,97 +0,0 @@
1
- import { Component, Input, forwardRef } from '@angular/core';
2
- import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
- export class CheckboxControlComponent {
4
- constructor() {
5
- this._value = [];
6
- this.onChange = (change) => { };
7
- this.onTouched = () => { };
8
- }
9
- ngOnInit() {
10
- this.options = this.options.map((option) => {
11
- if (this.selected.indexOf(option.value) !== -1) {
12
- Object.assign(option, { checked: true });
13
- }
14
- return option;
15
- });
16
- }
17
- ngAfterViewInit() { }
18
- writeValue(value) {
19
- this.value = value;
20
- }
21
- registerOnChange(fn) {
22
- this.onChange = fn;
23
- }
24
- registerOnTouched(fn) {
25
- this.onTouched = fn;
26
- }
27
- get value() {
28
- if (this._value.length === 0) {
29
- return '';
30
- }
31
- else {
32
- return this._value || this._value[0];
33
- }
34
- }
35
- set value(v) {
36
- if (typeof v === 'undefined' || v === null || v === '') {
37
- v = [];
38
- }
39
- else if (typeof v === 'string') {
40
- v = [v];
41
- }
42
- else if (!Array.isArray(v)) {
43
- throw new TypeError('Value must be a string or an array.');
44
- }
45
- }
46
- selectOpt(option, event) {
47
- if (event.target.checked) {
48
- this._value.push(option.value);
49
- }
50
- else {
51
- this.options.forEach((o) => {
52
- if (o.value === option.value) {
53
- this._value.splice(o, 1);
54
- }
55
- });
56
- }
57
- this.onChange(this.value);
58
- }
59
- }
60
- CheckboxControlComponent.decorators = [
61
- { type: Component, args: [{
62
- selector: 'checkbox',
63
- template: `<div *ngFor="let option of options; let i = index">
64
- <label class="form-control no-border">
65
- <input
66
- type="checkbox"
67
- id="i + 'id'"
68
- (change)="selectOpt(option, $event)"
69
- value="option.value"
70
- [checked]="option.checked"
71
- />
72
- {{ option.label }}
73
- </label>
74
- </div>
75
- `,
76
- providers: [
77
- {
78
- provide: NG_VALUE_ACCESSOR,
79
- useExisting: forwardRef(() => CheckboxControlComponent),
80
- multi: true
81
- }
82
- ],
83
- styles: [
84
- `
85
- .no-border {
86
- border: 0;
87
- box-shadow: none;
88
- }
89
- `
90
- ]
91
- },] },
92
- ];
93
- CheckboxControlComponent.propDecorators = {
94
- options: [{ type: Input }],
95
- selected: [{ type: Input }]
96
- };
97
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3guY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW9wZW5tcnMtZm9ybWVudHJ5LyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jaGVjay1ib3gvY2hlY2tib3guY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLFVBQVUsRUFHWCxNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFtQ3pFLE1BQU07SUEvQk47UUFrQ1MsV0FBTSxHQUFlLEVBQUUsQ0FBQztRQXlEdkIsYUFBUSxHQUFHLENBQUMsTUFBVyxFQUFFLEVBQUUsR0FBRSxDQUFDLENBQUM7UUFDL0IsY0FBUyxHQUFHLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBekRRLFFBQVE7UUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7WUFDekMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDL0MsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztZQUMzQyxDQUFDO1lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUNoQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxlQUFlLEtBQUksQ0FBQztJQUVwQixVQUFVLENBQUMsS0FBVTtRQUMxQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsRUFBb0I7UUFDMUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEVBQWM7UUFDckMsSUFBSSxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDN0IsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFBQyxJQUFJLENBQUMsQ0FBQztZQUNOLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkMsQ0FBQztJQUNILENBQUM7SUFFRCxJQUFJLEtBQUssQ0FBQyxDQUFNO1FBQ2QsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDdkQsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNULENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQztZQUNqQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNWLENBQUM7UUFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM3QixNQUFNLElBQUksU0FBUyxDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDN0QsQ0FBQztJQUNILENBQUM7SUFFTSxTQUFTLENBQUMsTUFBTSxFQUFFLEtBQUs7UUFDNUIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ3pCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQUMsSUFBSSxDQUFDLENBQUM7WUFDTixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO2dCQUN6QixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDOzs7WUF6RkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxVQUFVO2dCQUNwQixRQUFRLEVBQUU7Ozs7Ozs7Ozs7OztDQVlYO2dCQUNDLFNBQVMsRUFBRTtvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLHdCQUF3QixDQUFDO3dCQUN2RCxLQUFLLEVBQUUsSUFBSTtxQkFDWjtpQkFDRjtnQkFDRCxNQUFNLEVBQUU7b0JBQ047Ozs7O0tBS0M7aUJBQ0Y7YUFDRjs7O3NCQUVFLEtBQUs7dUJBQ0wsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgSW5wdXQsXG4gIGZvcndhcmRSZWYsXG4gIE9uSW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgRGF0YVNvdXJjZSB9IGZyb20gJy4uLy4uL2Zvcm0tZW50cnkvcXVlc3Rpb24tbW9kZWxzL2ludGVyZmFjZXMvZGF0YS1zb3VyY2UnO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjaGVja2JveCcsXG4gIHRlbXBsYXRlOiBgPGRpdiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIG9wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cbiAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jb250cm9sIG5vLWJvcmRlclwiPlxuICAgIDxpbnB1dFxuICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgIGlkPVwiaSArICdpZCdcIlxuICAgICAgKGNoYW5nZSk9XCJzZWxlY3RPcHQob3B0aW9uLCAkZXZlbnQpXCJcbiAgICAgIHZhbHVlPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgIFtjaGVja2VkXT1cIm9wdGlvbi5jaGVja2VkXCJcbiAgICAvPlxuICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICA8L2xhYmVsPlxuPC9kaXY+XG5gLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IENoZWNrYm94Q29udHJvbENvbXBvbmVudCksXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH1cbiAgXSxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLm5vLWJvcmRlciB7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICAgIH1cbiAgICBgXG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgQ2hlY2tib3hDb250cm9sQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgQElucHV0KCkgcHVibGljIG9wdGlvbnM6IEFycmF5PGFueT47XG4gIEBJbnB1dCgpIHB1YmxpYyBzZWxlY3RlZDogQXJyYXk8YW55PjtcbiAgcHVibGljIF92YWx1ZTogQXJyYXk8YW55PiA9IFtdO1xuXG4gIHB1YmxpYyBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm9wdGlvbnMubWFwKChvcHRpb24pID0+IHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGVkLmluZGV4T2Yob3B0aW9uLnZhbHVlKSAhPT0gLTEpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihvcHRpb24sIHsgY2hlY2tlZDogdHJ1ZSB9KTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBvcHRpb247XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCkge31cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KSB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IChfOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgaWYgKHRoaXMuX3ZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5fdmFsdWUgfHwgdGhpcy5fdmFsdWVbMF07XG4gICAgfVxuICB9XG5cbiAgc2V0IHZhbHVlKHY6IGFueSkge1xuICAgIGlmICh0eXBlb2YgdiA9PT0gJ3VuZGVmaW5lZCcgfHwgdiA9PT0gbnVsbCB8fCB2ID09PSAnJykge1xuICAgICAgdiA9IFtdO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnKSB7XG4gICAgICB2ID0gW3ZdO1xuICAgIH0gZWxzZSBpZiAoIUFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1ZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb3IgYW4gYXJyYXkuJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdE9wdChvcHRpb24sIGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLl92YWx1ZS5wdXNoKG9wdGlvbi52YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3B0aW9ucy5mb3JFYWNoKChvKSA9PiB7XG4gICAgICAgIGlmIChvLnZhbHVlID09PSBvcHRpb24udmFsdWUpIHtcbiAgICAgICAgICB0aGlzLl92YWx1ZS5zcGxpY2UobywgMSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIG9uQ2hhbmdlID0gKGNoYW5nZTogYW55KSA9PiB7fTtcbiAgcHJpdmF0ZSBvblRvdWNoZWQgPSAoKSA9PiB7fTtcbn1cbiJdfQ==
@@ -1,14 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { CommonModule } from '@angular/common';
3
- import { FormsModule } from '@angular/forms';
4
- import { CheckboxControlComponent } from './checkbox.component';
5
- export class CheckboxModule {
6
- }
7
- CheckboxModule.decorators = [
8
- { type: NgModule, args: [{
9
- declarations: [CheckboxControlComponent],
10
- exports: [CheckboxControlComponent],
11
- imports: [CommonModule, FormsModule]
12
- },] },
13
- ];
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW9wZW5tcnMtZm9ybWVudHJ5LyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9jaGVjay1ib3gvY2hlY2tib3gubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM3QyxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQU9oRSxNQUFNOzs7WUFMTCxRQUFRLFNBQUM7Z0JBQ1IsWUFBWSxFQUFFLENBQUMsd0JBQXdCLENBQUM7Z0JBQ3hDLE9BQU8sRUFBRSxDQUFDLHdCQUF3QixDQUFDO2dCQUNuQyxPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsV0FBVyxDQUFDO2FBQ3JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbmltcG9ydCB7IEZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ2hlY2tib3hDb250cm9sQ29tcG9uZW50IH0gZnJvbSAnLi9jaGVja2JveC5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBkZWNsYXJhdGlvbnM6IFtDaGVja2JveENvbnRyb2xDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQ2hlY2tib3hDb250cm9sQ29tcG9uZW50XSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGVdXG59KVxuZXhwb3J0IGNsYXNzIENoZWNrYm94TW9kdWxlIHt9XG4iXX0=
@@ -1,270 +0,0 @@
1
- /**
2
- * date-picker.component
3
- */
4
- import { Component, Output, EventEmitter, Input } from '@angular/core';
5
- import * as moment_ from 'moment';
6
- const moment = moment_;
7
- import * as _ from 'lodash';
8
- // const myDpStyles: string = require('./date-picker.component.css');
9
- // const myDpTpl: string = require('./date-picker.component.html');
10
- // webpack2_
11
- export class DatePickerComponent {
12
- constructor() {
13
- this.locale = 'en';
14
- this.viewFormat = 'll';
15
- this.returnObject = 'js';
16
- this.onDatePickerCancel = new EventEmitter();
17
- this.onSelectDate = new EventEmitter();
18
- this.onDisplayMonths = false;
19
- this.onDisplayYears = false;
20
- this.displayYearsIndex = 0;
21
- this.monthsShort = moment.monthsShort();
22
- }
23
- ngOnInit() {
24
- this.initValue();
25
- // default to current year range
26
- _.each(this.fullYearRange, (v, i) => {
27
- this.currentYear = this.calendarDate.clone().startOf('year').year();
28
- if (v.indexOf(this.currentYear) !== -1) {
29
- this.displayYearsIndex = i;
30
- }
31
- });
32
- this.displayYearRange = this.fullYearRange[this.displayYearsIndex];
33
- this.generateCalendar();
34
- }
35
- prev() {
36
- if (this.onDisplayYears) {
37
- this.displayYearsIndex--;
38
- if (this.displayYearsIndex < 0) {
39
- this.displayYearsIndex = 0;
40
- }
41
- this.displayYearRange = this.fullYearRange[this.displayYearsIndex];
42
- }
43
- else {
44
- this.calendarDate = this.calendarDate.clone().subtract(1, 'M');
45
- }
46
- this.generateCalendar();
47
- }
48
- showMonthSelection() {
49
- this.onDisplayMonths = true;
50
- this.onDisplayYears = false;
51
- }
52
- showYearSelection() {
53
- this.onDisplayYears = true;
54
- this.onDisplayMonths = false;
55
- }
56
- next() {
57
- if (this.onDisplayYears) {
58
- this.displayYearsIndex++;
59
- if (this.displayYearsIndex >= this.fullYearRange.length) {
60
- this.displayYearsIndex = this.fullYearRange.length - 1;
61
- }
62
- this.displayYearRange = this.fullYearRange[this.displayYearsIndex++];
63
- }
64
- else {
65
- this.calendarDate = this.calendarDate.clone().add(1, 'M');
66
- }
67
- this.generateCalendar();
68
- }
69
- selectDay(day) {
70
- const daysDifference = day.diff(this.calendarDate.clone().startOf('date'), 'days');
71
- day = this.calendarDate.clone().add(daysDifference, 'd');
72
- const selectedDay = this.parseToReturnObjectType(day);
73
- this.onSelectDate.emit(selectedDay);
74
- this.cancelDatePicker();
75
- return;
76
- }
77
- selectMonth(month) {
78
- this.calendarDate = this.calendarDate.clone().month(month);
79
- this.onDisplayMonths = false;
80
- this.generateCalendar();
81
- }
82
- selectYear(year) {
83
- this.calendarDate = this.calendarDate.clone().year(year);
84
- this.onDisplayYears = false;
85
- this.generateCalendar();
86
- }
87
- selectToday() {
88
- const today = this.parseToReturnObjectType(moment());
89
- this.onSelectDate.emit(today);
90
- this.cancelDatePicker();
91
- return;
92
- }
93
- clearPickDate() {
94
- this.onSelectDate.emit(null);
95
- this.cancelDatePicker();
96
- return;
97
- }
98
- cancelDatePicker() {
99
- this.onDatePickerCancel.emit(false);
100
- return;
101
- }
102
- generateYears() {
103
- const currentYear = moment().year();
104
- const startYr = this.calendarDate.clone().subtract(100, 'y').year();
105
- // const endYr = this.calendarDate.clone().add(10, 'y').year();
106
- const years = [];
107
- for (let year = startYr; year <= currentYear; year++) {
108
- years.push(year);
109
- }
110
- this.fullYearRange = _.chunk(years, 14);
111
- }
112
- initValue() {
113
- // set moment locale (default is en)
114
- moment.locale(this.locale);
115
- // set today value
116
- this.today = moment().startOf('date');
117
- this.currentMonth = this.monthsShort[moment().month()];
118
- this.currentYear = moment().year();
119
- // set week days name array
120
- this.dayNames = moment.weekdaysShort(true);
121
- // check if the input initDate has value
122
- if (this.initDate) {
123
- this.calendarDate =
124
- this.returnObject === 'string'
125
- ? moment(this.initDate, this.viewFormat)
126
- : moment(this.initDate);
127
- this.selectedDate = this.calendarDate.clone().startOf('date');
128
- }
129
- else {
130
- this.calendarDate = moment();
131
- }
132
- this.generateYears();
133
- }
134
- generateCalendar() {
135
- this.calendarDays = [];
136
- const start = 0 -
137
- ((this.calendarDate.clone().startOf('month').day() +
138
- (7 - moment.localeData().firstDayOfWeek())) %
139
- 7);
140
- const end = 41 + start; // iterator ending point
141
- for (let i = start; i <= end; i += 1) {
142
- const day = this.calendarDate.clone().startOf('month').add(i, 'days');
143
- this.calendarDays.push(day);
144
- }
145
- }
146
- parseToReturnObjectType(day) {
147
- switch (this.returnObject) {
148
- case 'js':
149
- return day.toDate();
150
- case 'string':
151
- return day.format(this.viewFormat);
152
- case 'moment':
153
- return day;
154
- case 'json':
155
- return day.toJSON();
156
- case 'array':
157
- return day.toArray();
158
- case 'iso':
159
- return day.toISOString();
160
- case 'object':
161
- return day.toObject();
162
- default:
163
- return day;
164
- }
165
- }
166
- }
167
- DatePickerComponent.decorators = [
168
- { type: Component, args: [{
169
- selector: 'date-picker',
170
- template: `<picker-modal (onOverlayClick)="cancelDatePicker()">
171
- <div class="picker-wrap">
172
- <div class="picker-box">
173
- <div class="picker-header">
174
- <div class="picker-header-nav">
175
- <span class="nav-prev" (click)="prev()"></span>
176
- </div>
177
- <div class="picker-header-content">
178
- <div class="content">
179
- <span (click)="showMonthSelection()" class="month">{{
180
- calendarDate | moment: 'MMMM'
181
- }}</span>
182
- <span class="seperator">|</span>
183
- <span (click)="showYearSelection()" class="year">{{
184
- calendarDate | moment: 'YYYY'
185
- }}</span>
186
- </div>
187
- </div>
188
- <div class="picker-header-nav">
189
- <span class="nav-next" (click)="next()"></span>
190
- </div>
191
- </div>
192
- <div class="picker-calendar">
193
- <div
194
- class="picker-calendar-row"
195
- *ngIf="!onDisplayMonths && !onDisplayYears"
196
- >
197
- <span class="picker-weekday" *ngFor="let day of dayNames">{{
198
- day
199
- }}</span>
200
- </div>
201
- <div
202
- class="picker-calendar-row"
203
- *ngIf="!onDisplayMonths && !onDisplayYears"
204
- >
205
- <span
206
- class="picker-day"
207
- (click)="selectDay(day)"
208
- [ngClass]="{
209
- 'out-focus': day.month() != calendarDate.month(),
210
- today: day.isSame(today),
211
- selected: day.isSame(selectedDate)
212
- }"
213
- *ngFor="let day of calendarDays"
214
- >
215
- {{ day | moment: 'D' }}
216
- </span>
217
- </div>
218
- <div class="picker-calendar-row" *ngIf="onDisplayMonths">
219
- <span
220
- class="picker-month"
221
- *ngFor="let month of monthsShort"
222
- (click)="selectMonth(month)"
223
- [ngClass]="{
224
- selected: month === currentMonth
225
- }"
226
- >
227
- {{ month }}
228
- </span>
229
- </div>
230
- <div class="picker-calendar-row" *ngIf="onDisplayYears">
231
- <span
232
- class="picker-year"
233
- *ngFor="let year of displayYearRange"
234
- (click)="selectYear(year)"
235
- [ngClass]="{
236
- selected: year === currentYear
237
- }"
238
- >
239
- {{ year }}
240
- </span>
241
- </div>
242
- </div>
243
- <div class="picker-footer">
244
- <div class="picker-action action-today" (click)="selectToday()">
245
- <span class="text">Today</span>
246
- </div>
247
- <div class="picker-action action-clear" (click)="clearPickDate()">
248
- <span class="text">Clear</span>
249
- </div>
250
- <div class="picker-action action-close" (click)="cancelDatePicker()">
251
- <span class="text">Close</span>
252
- </div>
253
- </div>
254
- </div>
255
- </div>
256
- </picker-modal>
257
- `,
258
- styles: [`*,::after,::before{box-sizing:border-box}.picker-wrap{width:95vw;max-width:666px}.picker-box{font-family:'Open Sans';min-width:400px!important;padding:.625rem 1rem;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker-footer,.picker-header{font-size:1.333rem;line-height:2.5rem;display:flex;height:2.5rem;width:100%}.picker-header-nav{position:relative;cursor:pointer;width:calc(100% / 8)}.picker-header-nav>*{position:absolute;top:50%;right:auto;bottom:auto;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%)}.picker-header-nav .nav-next::before,.picker-header-nav .nav-prev::before{content:' ';border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:.75em solid #000;width:0;height:0;display:block;margin:0 auto}.picker-header-nav .nav-next::before{border-right:0;border-left:.75em solid #000}.picker-header-content{width:calc(100% * 6 / 8);text-align:center}.picker-header-content .month{font-size:1.778rem;line-height:2.5rem;margin-right:.5rem;font-weight:700}.picker-header-content .year{font-style:italic;color:#999}.picker-calendar{width:100%}.picker-calendar .picker-calendar-row{display:flex;flex-wrap:wrap;width:100%;margin-bottom:.625rem}.picker-calendar .picker-weekday{font-weight:700;text-align:left;color:#999;width:calc(100% / 7)}.picker-calendar .picker-day,.picker-calendar .picker-month,.picker-calendar .picker-year{font-size:1.333rem;line-height:2.5rem;position:relative;height:2.5rem;text-align:center;cursor:pointer;width:calc(100% / 7)}.picker-calendar .picker-day:hover,.picker-calendar .picker-month:hover,.picker-calendar .picker-year:hover{background:#b1dcfb}.picker-calendar .out-focus{color:#ddd}.picker-calendar .out-focus:hover{color:#000}.picker-calendar .selected{background:#0089ec;color:#fff}.picker-calendar .selected:hover{background:#0089ec}.picker-calendar .today::before{content:' ';position:absolute;top:2px;right:2px;width:0;height:0;border-top:.5em solid #0059bc;border-left:.5em solid transparent}.picker-footer{cursor:pointer}.picker-footer .picker-action{text-align:center;width:calc(100% / 3)}.picker-footer .picker-action:hover{background-color:#b1dcfb}.picker-footer .picker-action .text{padding-left:.8rem}.picker-footer .action-clear::before,.picker-footer .action-close::before,.picker-footer .action-today::before{content:' ';position:relative;display:inline-block;height:0;width:0}.picker-footer .action-today::before{border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker-footer .action-clear::before{top:-.5rem;width:1rem;border-top:3px solid #e20}.picker-footer .action-close::before{width:1rem;height:1rem;background:linear-gradient(to bottom,transparent 35%,#777 35%,#777 65%,transparent 65%),linear-gradient(to right,transparent 35%,#777 35%,#777 65%,transparent 65%);-webkit-transform:rotate(45deg);transform:rotate(45deg)}`]
259
- },] },
260
- ];
261
- DatePickerComponent.ctorParameters = () => [];
262
- DatePickerComponent.propDecorators = {
263
- initDate: [{ type: Input }],
264
- locale: [{ type: Input }],
265
- viewFormat: [{ type: Input }],
266
- returnObject: [{ type: Input }],
267
- onDatePickerCancel: [{ type: Output }],
268
- onSelectDate: [{ type: Output }]
269
- };
270
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0ZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LW9wZW5tcnMtZm9ybWVudHJ5LyIsInNvdXJjZXMiOlsiY29tcG9uZW50cy9kYXRlLXRpbWUtcGlja2VyL2RhdGUtcGlja2VyL2RhdGUtcGlja2VyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxLQUFLLE9BQU8sTUFBTSxRQUFRLENBQUM7QUFFbEMsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDO0FBQ3ZCLE9BQU8sS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBSzVCLHFFQUFxRTtBQUNyRSxtRUFBbUU7QUFDbkUsWUFBWTtBQThGWixNQUFNO0lBdUJKO1FBbkJnQixXQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2QsZUFBVSxHQUFHLElBQUksQ0FBQztRQUNsQixpQkFBWSxHQUFHLElBQUksQ0FBQztRQUNuQix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVyxDQUFDO1FBQ2pELGlCQUFZLEdBQUcsSUFBSSxZQUFZLEVBQU8sQ0FBQztRQU9qRCxvQkFBZSxHQUFHLEtBQUssQ0FBQztRQUN4QixtQkFBYyxHQUFHLEtBQUssQ0FBQztRQUN2QixzQkFBaUIsR0FBRyxDQUFDLENBQUM7UUFHdEIsZ0JBQVcsR0FBa0IsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBRzFDLENBQUM7SUFFVCxRQUFRO1FBQ2IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2pCLGdDQUFnQztRQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUss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LENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztZQUMxQixLQUFLLElBQUk7Z0JBQ1AsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUV0QixLQUFLLFFBQVE7Z0JBQ1gsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXJDLEtBQUssUUFBUTtnQkFDWCxNQUFNLENBQUMsR0FBRyxDQUFDO1lBRWIsS0FBSyxNQUFNO2dCQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUM7WUFFdEIsS0FBSyxPQUFPO2dCQUNWLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7WUFFdkIsS0FBSyxLQUFLO2dCQUNSLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUM7WUFFM0IsS0FBSyxRQUFRO2dCQUNYLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUM7WUFFeEI7Z0JBQ0UsTUFBTSxDQUFDLEdBQUcsQ0FBQztRQUNmLENBQUM7SUFDSCxDQUFDOzs7WUE3UkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxhQUFhO2dCQUN2QixRQUFRLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXVGWDtnQkFDQyxNQUFNLEVBQUUsQ0FBQyxzMUZBQXMxRixDQUFDO2FBQ2oyRjs7Ozt1QkFJRSxLQUFLO3FCQUNMLEtBQUs7eUJBQ0wsS0FBSzsyQkFDTCxLQUFLO2lDQUNMLE1BQU07MkJBQ04sTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogZGF0ZS1waWNrZXIuY29tcG9uZW50XG4gKi9cblxuaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0ICogYXMgbW9tZW50XyBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBtb21lbnQgPSBtb21lbnRfO1xuaW1wb3J0ICogYXMgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgTW9tZW50IH0gZnJvbSAnbW9tZW50L21vbWVudCc7XG5cbi8vIHdlYnBhY2sxX1xuZGVjbGFyZSBsZXQgcmVxdWlyZTogYW55O1xuLy8gY29uc3QgbXlEcFN0eWxlczogc3RyaW5nID0gcmVxdWlyZSgnLi9kYXRlLXBpY2tlci5jb21wb25lbnQuY3NzJyk7XG4vLyBjb25zdCBteURwVHBsOiBzdHJpbmcgPSByZXF1aXJlKCcuL2RhdGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyk7XG4vLyB3ZWJwYWNrMl9cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZGF0ZS1waWNrZXInLFxuICB0ZW1wbGF0ZTogYDxwaWNrZXItbW9kYWwgKG9uT3ZlcmxheUNsaWNrKT1cImNhbmNlbERhdGVQaWNrZXIoKVwiPlxuICA8ZGl2IGNsYXNzPVwicGlja2VyLXdyYXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWJveFwiPlxuICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1oZWFkZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1oZWFkZXItbmF2XCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJuYXYtcHJldlwiIChjbGljayk9XCJwcmV2KClcIj48L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWhlYWRlci1jb250ZW50XCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJzaG93TW9udGhTZWxlY3Rpb24oKVwiIGNsYXNzPVwibW9udGhcIj57e1xuICAgICAgICAgICAgICBjYWxlbmRhckRhdGUgfCBtb21lbnQ6ICdNTU1NJ1xuICAgICAgICAgICAgfX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlcGVyYXRvclwiPnw8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwic2hvd1llYXJTZWxlY3Rpb24oKVwiIGNsYXNzPVwieWVhclwiPnt7XG4gICAgICAgICAgICAgIGNhbGVuZGFyRGF0ZSB8IG1vbWVudDogJ1lZWVknXG4gICAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItaGVhZGVyLW5hdlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwibmF2LW5leHRcIiAoY2xpY2spPVwibmV4dCgpXCI+PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1jYWxlbmRhclwiPlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3M9XCJwaWNrZXItY2FsZW5kYXItcm93XCJcbiAgICAgICAgICAqbmdJZj1cIiFvbkRpc3BsYXlNb250aHMgJiYgIW9uRGlzcGxheVllYXJzXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicGlja2VyLXdlZWtkYXlcIiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheU5hbWVzXCI+e3tcbiAgICAgICAgICAgIGRheVxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzPVwicGlja2VyLWNhbGVuZGFyLXJvd1wiXG4gICAgICAgICAgKm5nSWY9XCIhb25EaXNwbGF5TW9udGhzICYmICFvbkRpc3BsYXlZZWFyc1wiXG4gICAgICAgID5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItZGF5XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXkoZGF5KVwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICdvdXQtZm9jdXMnOiBkYXkubW9udGgoKSAhPSBjYWxlbmRhckRhdGUubW9udGgoKSxcbiAgICAgICAgICAgICAgdG9kYXk6IGRheS5pc1NhbWUodG9kYXkpLFxuICAgICAgICAgICAgICBzZWxlY3RlZDogZGF5LmlzU2FtZShzZWxlY3RlZERhdGUpXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICpuZ0Zvcj1cImxldCBkYXkgb2YgY2FsZW5kYXJEYXlzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyBkYXkgfCBtb21lbnQ6ICdEJyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItY2FsZW5kYXItcm93XCIgKm5nSWY9XCJvbkRpc3BsYXlNb250aHNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXItbW9udGhcIlxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IG1vbnRoIG9mIG1vbnRoc1Nob3J0XCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb250aChtb250aClcIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICBzZWxlY3RlZDogbW9udGggPT09IGN1cnJlbnRNb250aFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAge3sgbW9udGggfX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwicGlja2VyLWNhbGVuZGFyLXJvd1wiICpuZ0lmPVwib25EaXNwbGF5WWVhcnNcIj5cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3M9XCJwaWNrZXIteWVhclwiXG4gICAgICAgICAgICAqbmdGb3I9XCJsZXQgeWVhciBvZiBkaXNwbGF5WWVhclJhbmdlXCJcbiAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RZZWFyKHllYXIpXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgc2VsZWN0ZWQ6IHllYXIgPT09IGN1cnJlbnRZZWFyXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICB7eyB5ZWFyIH19XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1mb290ZXJcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBpY2tlci1hY3Rpb24gYWN0aW9uLXRvZGF5XCIgKGNsaWNrKT1cInNlbGVjdFRvZGF5KClcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5Ub2RheTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItYWN0aW9uIGFjdGlvbi1jbGVhclwiIChjbGljayk9XCJjbGVhclBpY2tEYXRlKClcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5DbGVhcjwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJwaWNrZXItYWN0aW9uIGFjdGlvbi1jbG9zZVwiIChjbGljayk9XCJjYW5jZWxEYXRlUGlja2VyKClcIj5cbiAgICAgICAgICA8c3BhbiBjbGFzcz1cInRleHRcIj5DbG9zZTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L3BpY2tlci1tb2RhbD5cbmAsXG4gIHN0eWxlczogW2AqLDo6YWZ0ZXIsOjpiZWZvcmV7Ym94LXNpemluZzpib3JkZXItYm94fS5waWNrZXItd3JhcHt3aWR0aDo5NXZ3O21heC13aWR0aDo2NjZweH0ucGlja2VyLWJveHtmb250LWZhbWlseTonT3BlbiBTYW5zJzttaW4td2lkdGg6NDAwcHghaW1wb3J0YW50O3BhZGRpbmc6LjYyNXJlbSAxcmVtOy13ZWJraXQtdXNlci1zZWxlY3Q6bm9uZTstbW96LXVzZXItc2VsZWN0Om5vbmU7LW1zLXVzZXItc2VsZWN0Om5vbmU7dXNlci1zZWxlY3Q6bm9uZX0ucGlja2VyLWZvb3RlciwucGlja2VyLWhlYWRlcntmb250LXNpemU6MS4zMzNyZW07bGluZS1oZWlnaHQ6Mi41cmVtO2Rpc3BsYXk6ZmxleDtoZWlnaHQ6Mi41cmVtO3dpZHRoOjEwMCV9LnBpY2tlci1oZWFkZXItbmF2e3Bvc2l0aW9uOnJlbGF0aXZlO2N1cnNvcjpwb2ludGVyO3dpZHRoOmNhbGMoMTAwJSAvIDgpfS5waWNrZXItaGVhZGVyLW5hdj4qe3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7cmlnaHQ6YXV0bztib3R0b206YXV0bztsZWZ0OjUwJTstd2Via2l0LXRyYW5zZm9ybTp0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2Zvcm06dHJhbnNsYXRlKC01MCUsLTUwJSl9LnBpY2tlci1oZWFkZXItbmF2IC5uYXYtbmV4dDo6YmVmb3JlLC5waWNrZXItaGVhZGVyLW5hdiAubmF2LXByZXY6OmJlZm9yZXtjb250ZW50OicgJztib3JkZXItdG9wOi41ZW0gc29saWQgdHJhbnNwYXJlbnQ7Ym9yZGVyLWJvdHRvbTouNWVtIHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yaWdodDouNzVlbSBzb2xpZCAjMDAwO3dpZHRoOjA7aGVpZ2h0OjA7ZGlzcGxheTpibG9jazttYXJnaW46MCBhdXRvfS5waWNrZXItaGVhZGVyLW5hdiAubmF2LW5leHQ6OmJlZm9yZXtib3JkZXItcmlnaHQ6MDtib3JkZXItbGVmdDouNzVlbSBzb2xpZCAjMDAwfS5waWNrZXItaGVhZGVyLWNvbnRlbnR7d2lkdGg6Y2FsYygxMDAlICogNiAvIDgpO3RleHQtYWxpZ246Y2VudGVyfS5waWNrZXItaGVhZGVyLWNvbnRlbnQgLm1vbnRoe2ZvbnQtc2l6ZToxLjc3OHJlbTtsaW5lLWhlaWdodDoyLjVyZW07bWFyZ2luLXJpZ2h0Oi41cmVtO2ZvbnQtd2VpZ2h0OjcwMH0ucGlja2VyLWhlYWRlci1jb250ZW50IC55ZWFye2ZvbnQtc3R5bGU6aXRhbGljO2NvbG9yOiM5OTl9LnBpY2tlci1jYWxlbmRhcnt3aWR0aDoxMDAlfS5waWNrZXItY2FsZW5kYXIgLnBpY2tlci1jYWxlbmRhci1yb3d7ZGlzcGxheTpmbGV4O2ZsZXgtd3JhcDp3cmFwO3dpZHRoOjEwMCU7bWFyZ2luLWJvdHRvbTouNjI1cmVtfS5waWNrZXItY2FsZW5kYXIgLnBpY2tlci13ZWVrZGF5e2ZvbnQtd2VpZ2h0OjcwMDt0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6Izk5OTt3aWR0aDpjYWxjKDEwMCUgLyA3KX0ucGlja2VyLWNhbGVuZGFyIC5waWNrZXItZGF5LC5waWNrZXItY2FsZW5kYXIgLnBpY2tlci1tb250aCwucGlja2VyLWNhbGVuZGFyIC5waWNrZXIteWVhcntmb250LXNpemU6MS4zMzNyZW07bGluZS1oZWlnaHQ6Mi41cmVtO3Bvc2l0aW9uOnJlbGF0aXZlO2hlaWdodDoyLjVyZW07dGV4dC1hbGlnbjpjZW50ZXI7Y3Vyc29yOnBvaW50ZXI7d2lkdGg6Y2FsYygxMDAlIC8gNyl9LnBpY2tlci1jYWxlbmRhciAucGlja2VyLWRheTpob3ZlciwucGlja2VyLWNhbGVuZGFyIC5waWNrZXItbW9udGg6aG92ZXIsLnBpY2tlci1jYWxlbmRhciAucGlja2VyLXllYXI6aG92ZXJ7YmFja2dyb3VuZDojYjFkY2ZifS5waWNrZXItY2FsZW5kYXIgLm91dC1mb2N1c3tjb2xvcjojZGRkfS5waWNrZXItY2FsZW5kYXIgLm91dC1mb2N1czpob3Zlcntjb2xvcjojMDAwfS5waWNrZXItY2FsZW5kYXIgLnNlbGVjdGVke2JhY2tncm91bmQ6IzAwODllYztjb2xvcjojZmZmfS5waWNrZXItY2FsZW5kYXIgLnNlbGVjdGVkOmhvdmVye2JhY2tncm91bmQ6IzAwODllY30ucGlja2VyLWNhbGVuZGFyIC50b2RheTo6YmVmb3Jle2NvbnRlbnQ6JyAnO3Bvc2l0aW9uOmFic29sdXRlO3RvcDoycHg7cmlnaHQ6MnB4O3dpZHRoOjA7aGVpZ2h0OjA7Ym9yZGVyLXRvcDouNWVtIHNvbGlkICMwMDU5YmM7Ym9yZGVyLWxlZnQ6LjVlbSBzb2xpZCB0cmFuc3BhcmVudH0ucGlja2VyLWZvb3RlcntjdXJzb3I6cG9pbnRlcn0ucGlja2VyLWZvb3RlciAucGlja2VyLWFjdGlvbnt0ZXh0LWFsaWduOmNlbnRlcjt3aWR0aDpjYWxjKDEwMCUgLyAzKX0ucGlja2VyLWZvb3RlciAucGlja2VyLWFjdGlvbjpob3ZlcntiYWNrZ3JvdW5kLWNvbG9yOiNiMWRjZmJ9LnBpY2tlci1mb290ZXIgLnBpY2tlci1hY3Rpb24gLnRleHR7cGFkZGluZy1sZWZ0Oi44cmVtfS5waWNrZXItZm9vdGVyIC5hY3Rpb24tY2xlYXI6OmJlZm9yZSwucGlja2VyLWZvb3RlciAuYWN0aW9uLWNsb3NlOjpiZWZvcmUsLnBpY2tlci1mb290ZXIgLmFjdGlvbi10b2RheTo6YmVmb3Jle2NvbnRlbnQ6JyAnO3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO2hlaWdodDowO3dpZHRoOjB9LnBpY2tlci1mb290ZXIgLmFjdGlvbi10b2RheTo6YmVmb3Jle2JvcmRlci10b3A6LjY2ZW0gc29saWQgIzAwNTliYztib3JkZXItbGVmdDouNjZlbSBzb2xpZCB0cmFuc3BhcmVudH0ucGlja2VyLWZvb3RlciAuYWN0aW9uLWNsZWFyOjpiZWZvcmV7dG9wOi0uNXJlbTt3aWR0aDoxcmVtO2JvcmRlci10b3A6M3B4IHNvbGlkICNlMjB9LnBpY2tlci1mb290ZXIgLmFjdGlvbi1jbG9zZTo6YmVmb3Jle3dpZHRoOjFyZW07aGVpZ2h0OjFyZW07YmFja2dyb3VuZDpsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLHRyYW5zcGFyZW50IDM1JSwjNzc3IDM1JSwjNzc3IDY1JSx0cmFuc3BhcmVudCA2NSUpLGxpbmVhci1ncmFkaWVudCh0byByaWdodCx0cmFuc3BhcmVudCAzNSUsIzc3NyAzNSUsIzc3NyA2NSUsdHJhbnNwYXJlbnQgNjUlKTstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoNDVkZWcpO3RyYW5zZm9ybTpyb3RhdGUoNDVkZWcpfWBdXG59KVxuZXhwb3J0IGNsYXNzIERhdGVQaWNrZXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwdWJsaWMgZGF5TmFtZXM6IEFycmF5PHN0cmluZz47XG5cbiAgQElucHV0KCkgcHVibGljIGluaXREYXRlOiBhbnk7XG4gIEBJbnB1dCgpIHB1YmxpYyBsb2NhbGUgPSAnZW4nO1xuICBASW5wdXQoKSBwdWJsaWMgdmlld0Zvcm1hdCA9ICdsbCc7XG4gIEBJbnB1dCgpIHB1YmxpYyByZXR1cm5PYmplY3QgPSAnanMnO1xuICBAT3V0cHV0KCkgcHVibGljIG9uRGF0ZVBpY2tlckNhbmNlbCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIHB1YmxpYyBvblNlbGVjdERhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcblxuICBwdWJsaWMgY2FsZW5kYXJEYXRlOiBNb21lbnQ7XG4gIHB1YmxpYyBzZWxlY3RlZERhdGU6IE1vbWVudDtcbiAgcHVibGljIGN1cnJlbnRNb250aDogYW55O1xuICBwdWJsaWMgdG9kYXk6IE1vbWVudDtcbiAgcHVibGljIGN1cnJlbnRZZWFyOiBudW1iZXI7XG4gIHB1YmxpYyBvbkRpc3BsYXlNb250aHMgPSBmYWxzZTtcbiAgcHVibGljIG9uRGlzcGxheVllYXJzID0gZmFsc2U7XG4gIHB1YmxpYyBkaXNwbGF5WWVhcnNJbmRleCA9IDA7XG4gIHB1YmxpYyBkaXNwbGF5WWVhclJhbmdlOiBBcnJheTxudW1iZXI+O1xuICBwdWJsaWMgZnVsbFllYXJSYW5nZTogQXJyYXk8YW55PjtcbiAgcHVibGljIG1vbnRoc1Nob3J0OiBBcnJheTxzdHJpbmc+ID0gbW9tZW50Lm1vbnRoc1Nob3J0KCk7XG4gIHB1YmxpYyBjYWxlbmRhckRheXM6IEFycmF5PE1vbWVudD47XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmluaXRWYWx1ZSgpO1xuICAgIC8vIGRlZmF1bHQgdG8gY3VycmVudCB5ZWFyIHJhbmdlXG4gICAgXy5lYWNoKHRoaXMuZnVsbFllYXJSYW5nZSwgKHYsIGkpID0+IHtcbiAgICAgIHRoaXMuY3VycmVudFllYXIgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ3llYXInKS55ZWFyKCk7XG4gICAgICBpZiAodi5pbmRleE9mKHRoaXMuY3VycmVudFllYXIpICE9PSAtMSkge1xuICAgICAgICB0aGlzLmRpc3BsYXlZZWFyc0luZGV4ID0gaTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmRpc3BsYXlZZWFyUmFuZ2UgPSB0aGlzLmZ1bGxZZWFyUmFuZ2VbdGhpcy5kaXNwbGF5WWVhcnNJbmRleF07XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBwdWJsaWMgcHJldigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vbkRpc3BsYXlZZWFycykge1xuICAgICAgdGhpcy5kaXNwbGF5WWVhcnNJbmRleC0tO1xuICAgICAgaWYgKHRoaXMuZGlzcGxheVllYXJzSW5kZXggPCAwKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVllYXJzSW5kZXggPSAwO1xuICAgICAgfVxuICAgICAgdGhpcy5kaXNwbGF5WWVhclJhbmdlID0gdGhpcy5mdWxsWWVhclJhbmdlW3RoaXMuZGlzcGxheVllYXJzSW5kZXhdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkuc3VidHJhY3QoMSwgJ00nKTtcbiAgICB9XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBwdWJsaWMgc2hvd01vbnRoU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMub25EaXNwbGF5TW9udGhzID0gdHJ1ZTtcbiAgICB0aGlzLm9uRGlzcGxheVllYXJzID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgc2hvd1llYXJTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgdGhpcy5vbkRpc3BsYXlZZWFycyA9IHRydWU7XG4gICAgdGhpcy5vbkRpc3BsYXlNb250aHMgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBuZXh0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm9uRGlzcGxheVllYXJzKSB7XG4gICAgICB0aGlzLmRpc3BsYXlZZWFyc0luZGV4Kys7XG4gICAgICBpZiAodGhpcy5kaXNwbGF5WWVhcnNJbmRleCA+PSB0aGlzLmZ1bGxZZWFyUmFuZ2UubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheVllYXJzSW5kZXggPSB0aGlzLmZ1bGxZZWFyUmFuZ2UubGVuZ3RoIC0gMTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGlzcGxheVllYXJSYW5nZSA9IHRoaXMuZnVsbFllYXJSYW5nZVt0aGlzLmRpc3BsYXlZZWFyc0luZGV4KytdO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkuYWRkKDEsICdNJyk7XG4gICAgfVxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdERheShkYXk6IE1vbWVudCk6IHZvaWQge1xuICAgIGNvbnN0IGRheXNEaWZmZXJlbmNlID0gZGF5LmRpZmYoXG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLnN0YXJ0T2YoJ2RhdGUnKSxcbiAgICAgICdkYXlzJ1xuICAgICk7XG4gICAgZGF5ID0gdGhpcy5jYWxlbmRhckRhdGUuY2xvbmUoKS5hZGQoZGF5c0RpZmZlcmVuY2UsICdkJyk7XG4gICAgY29uc3Qgc2VsZWN0ZWREYXkgPSB0aGlzLnBhcnNlVG9SZXR1cm5PYmplY3RUeXBlKGRheSk7XG4gICAgdGhpcy5vblNlbGVjdERhdGUuZW1pdChzZWxlY3RlZERheSk7XG4gICAgdGhpcy5jYW5jZWxEYXRlUGlja2VyKCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdE1vbnRoKG1vbnRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkubW9udGgobW9udGgpO1xuICAgIHRoaXMub25EaXNwbGF5TW9udGhzID0gZmFsc2U7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpIHtcbiAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkueWVhcih5ZWFyKTtcbiAgICB0aGlzLm9uRGlzcGxheVllYXJzID0gZmFsc2U7XG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0VG9kYXkoKTogdm9pZCB7XG4gICAgY29uc3QgdG9kYXkgPSB0aGlzLnBhcnNlVG9SZXR1cm5PYmplY3RUeXBlKG1vbWVudCgpKTtcbiAgICB0aGlzLm9uU2VsZWN0RGF0ZS5lbWl0KHRvZGF5KTtcbiAgICB0aGlzLmNhbmNlbERhdGVQaWNrZXIoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICBwdWJsaWMgY2xlYXJQaWNrRGF0ZSgpOiB2b2lkIHtcbiAgICB0aGlzLm9uU2VsZWN0RGF0ZS5lbWl0KG51bGwpO1xuICAgIHRoaXMuY2FuY2VsRGF0ZVBpY2tlcigpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHB1YmxpYyBjYW5jZWxEYXRlUGlja2VyKCk6IHZvaWQge1xuICAgIHRoaXMub25EYXRlUGlja2VyQ2FuY2VsLmVtaXQoZmFsc2UpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZW5lcmF0ZVllYXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRZZWFyID0gbW9tZW50KCkueWVhcigpO1xuICAgIGNvbnN0IHN0YXJ0WXIgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLnN1YnRyYWN0KDEwMCwgJ3knKS55ZWFyKCk7XG4gICAgLy8gY29uc3QgZW5kWXIgPSB0aGlzLmNhbGVuZGFyRGF0ZS5jbG9uZSgpLmFkZCgxMCwgJ3knKS55ZWFyKCk7XG4gICAgY29uc3QgeWVhcnMgPSBbXTtcbiAgICBmb3IgKGxldCB5ZWFyID0gc3RhcnRZcjsgeWVhciA8PSBjdXJyZW50WWVhcjsgeWVhcisrKSB7XG4gICAgICB5ZWFycy5wdXNoKHllYXIpO1xuICAgIH1cblxuICAgIHRoaXMuZnVsbFllYXJSYW5nZSA9IF8uY2h1bmsoeWVhcnMsIDE0KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBpbml0VmFsdWUoKSB7XG4gICAgLy8gc2V0IG1vbWVudCBsb2NhbGUgKGRlZmF1bHQgaXMgZW4pXG4gICAgbW9tZW50LmxvY2FsZSh0aGlzLmxvY2FsZSk7XG4gICAgLy8gc2V0IHRvZGF5IHZhbHVlXG4gICAgdGhpcy50b2RheSA9IG1vbWVudCgpLnN0YXJ0T2YoJ2RhdGUnKTtcbiAgICB0aGlzLmN1cnJlbnRNb250aCA9IHRoaXMubW9udGhzU2hvcnRbbW9tZW50KCkubW9udGgoKV07XG4gICAgdGhpcy5jdXJyZW50WWVhciA9IG1vbWVudCgpLnllYXIoKTtcblxuICAgIC8vIHNldCB3ZWVrIGRheXMgbmFtZSBhcnJheVxuICAgIHRoaXMuZGF5TmFtZXMgPSBtb21lbnQud2Vla2RheXNTaG9ydCh0cnVlKTtcblxuICAgIC8vIGNoZWNrIGlmIHRoZSBpbnB1dCBpbml0RGF0ZSBoYXMgdmFsdWVcbiAgICBpZiAodGhpcy5pbml0RGF0ZSkge1xuICAgICAgdGhpcy5jYWxlbmRhckRhdGUgPVxuICAgICAgICB0aGlzLnJldHVybk9iamVjdCA9PT0gJ3N0cmluZydcbiAgICAgICAgICA/IG1vbWVudCh0aGlzLmluaXREYXRlLCB0aGlzLnZpZXdGb3JtYXQpXG4gICAgICAgICAgOiBtb21lbnQodGhpcy5pbml0RGF0ZSk7XG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkuc3RhcnRPZignZGF0ZScpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNhbGVuZGFyRGF0ZSA9IG1vbWVudCgpO1xuICAgIH1cbiAgICB0aGlzLmdlbmVyYXRlWWVhcnMoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBnZW5lcmF0ZUNhbGVuZGFyKCk6IHZvaWQge1xuICAgIHRoaXMuY2FsZW5kYXJEYXlzID0gW107XG4gICAgY29uc3Qgc3RhcnQgPVxuICAgICAgMCAtXG4gICAgICAoKHRoaXMuY2FsZW5kYXJEYXRlLmNsb25lKCkuc3RhcnRPZignbW9udGgnKS5kYXkoKSArXG4gICAgICAgICg3IC0gbW9tZW50LmxvY2FsZURhdGEoKS5maXJzdERheU9mV2VlaygpKSkgJVxuICAgICAgICA3KTtcbiAgICBjb25zdCBlbmQgPSA0MSArIHN0YXJ0OyAvLyBpdGVyYXRvciBlbmRpbmcgcG9pbnRcblxuICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gMSkge1xuICAgICAgY29uc3QgZGF5ID0gdGhpcy5jYWxlbmRhckRhdGUuY2xvbmUoKS5zdGFydE9mKCdtb250aCcpLmFkZChpLCAnZGF5cycpO1xuICAgICAgdGhpcy5jYWxlbmRhckRheXMucHVzaChkYXkpO1xuICAgIH1cbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZVRvUmV0dXJuT2JqZWN0VHlwZShkYXk6IE1vbWVudCk6IGFueSB7XG4gICAgc3dpdGNoICh0aGlzLnJldHVybk9iamVjdCkge1xuICAgICAgY2FzZSAnanMnOlxuICAgICAgICByZXR1cm4gZGF5LnRvRGF0ZSgpO1xuXG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgICByZXR1cm4gZGF5LmZvcm1hdCh0aGlzLnZpZXdGb3JtYXQpO1xuXG4gICAgICBjYXNlICdtb21lbnQnOlxuICAgICAgICByZXR1cm4gZGF5O1xuXG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgcmV0dXJuIGRheS50b0pTT04oKTtcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgICByZXR1cm4gZGF5LnRvQXJyYXkoKTtcblxuICAgICAgY2FzZSAnaXNvJzpcbiAgICAgICAgcmV0dXJuIGRheS50b0lTT1N0cmluZygpO1xuXG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gZGF5LnRvT2JqZWN0KCk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBkYXk7XG4gICAgfVxuICB9XG59XG4iXX0=