@ohioepa/oepa-ui-lib 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (299) hide show
  1. package/README.md +24 -0
  2. package/esm2022/lib/account-search-input/account-search-input.component.mjs +147 -0
  3. package/esm2022/lib/account-search-modal/account-search-modal.component.mjs +151 -0
  4. package/esm2022/lib/action-btn/action-btn.component.mjs +70 -0
  5. package/esm2022/lib/action-btn/oepa-action-event.mjs +2 -0
  6. package/esm2022/lib/action-btn/oepa-action.mjs +2 -0
  7. package/esm2022/lib/action-btn-modal/action-btn-modal.component.mjs +21 -0
  8. package/esm2022/lib/address/address.component.mjs +174 -0
  9. package/esm2022/lib/address/oepa-address.service.mjs +64 -0
  10. package/esm2022/lib/address/oepa-form-address.mjs +2 -0
  11. package/esm2022/lib/blank/blank.component.mjs +14 -0
  12. package/esm2022/lib/checkbox/checkbox.component.mjs +33 -0
  13. package/esm2022/lib/checkbox-input/checkbox-input.component.mjs +41 -0
  14. package/esm2022/lib/comment-modal/comment-modal.component.mjs +56 -0
  15. package/esm2022/lib/common-forms.module.mjs +291 -0
  16. package/esm2022/lib/confirmation-modal/confirmation-modal.component.mjs +120 -0
  17. package/esm2022/lib/contact/contact.component.mjs +102 -0
  18. package/esm2022/lib/contact/oepa-form-contact.mjs +2 -0
  19. package/esm2022/lib/date-input/date-input.component.mjs +52 -0
  20. package/esm2022/lib/date-input-modal/date-input-modal.component.mjs +68 -0
  21. package/esm2022/lib/datepicker/datepicker.component.mjs +131 -0
  22. package/esm2022/lib/daterangepicker/daterangepicker.component.mjs +70 -0
  23. package/esm2022/lib/document/document-editor/document-editor.component.mjs +225 -0
  24. package/esm2022/lib/document/document-event-entity-type.mjs +7 -0
  25. package/esm2022/lib/document/document-event-type.mjs +7 -0
  26. package/esm2022/lib/document/document-event.mjs +2 -0
  27. package/esm2022/lib/document/document-group/document-group.component.mjs +210 -0
  28. package/esm2022/lib/document/document-part/document-part.component.mjs +19 -0
  29. package/esm2022/lib/document/document-part-editor/document-part-editor.component.mjs +296 -0
  30. package/esm2022/lib/document/document-placeholder-modal/document-placeholder-modal.component.mjs +49 -0
  31. package/esm2022/lib/document/document-section/document-section.component.mjs +226 -0
  32. package/esm2022/lib/document/document.service.mjs +325 -0
  33. package/esm2022/lib/document/group-modal/group-modal.component.mjs +46 -0
  34. package/esm2022/lib/document/part-modal/part-modal.component.mjs +48 -0
  35. package/esm2022/lib/document/portal-document-class.mjs +2 -0
  36. package/esm2022/lib/document/portal-document-group.mjs +2 -0
  37. package/esm2022/lib/document/portal-document-part.mjs +2 -0
  38. package/esm2022/lib/document/portal-document-placeholder.mjs +2 -0
  39. package/esm2022/lib/document/portal-document-section.mjs +2 -0
  40. package/esm2022/lib/document/portal-document-text.mjs +2 -0
  41. package/esm2022/lib/document/portal-document-type.mjs +2 -0
  42. package/esm2022/lib/document/portal-document.mjs +2 -0
  43. package/esm2022/lib/document/portal-email-attachment-type.mjs +2 -0
  44. package/esm2022/lib/document/portal-email-attachment.mjs +2 -0
  45. package/esm2022/lib/document/portal-email-filter.mjs +2 -0
  46. package/esm2022/lib/document/portal-email.mjs +2 -0
  47. package/esm2022/lib/document/section-modal/section-modal.component.mjs +46 -0
  48. package/esm2022/lib/dual-list-box/array.pipes.mjs +71 -0
  49. package/esm2022/lib/dual-list-box/dual-list-box.component.mjs +339 -0
  50. package/esm2022/lib/dual-list-box/items-moved-event.mjs +2 -0
  51. package/esm2022/lib/dual-list-box/list-box-item.mjs +2 -0
  52. package/esm2022/lib/ebiz-address/ebiz-address.component.mjs +62 -0
  53. package/esm2022/lib/edoc-attachment/edoc-attachment.component.mjs +216 -0
  54. package/esm2022/lib/edoc-attachment/edoc-attachment.service.mjs +38 -0
  55. package/esm2022/lib/edoc-attachment/edocument-attachment-metadata.mjs +2 -0
  56. package/esm2022/lib/edoc-attachment/edocument-attachment.mjs +2 -0
  57. package/esm2022/lib/edoc-attachment/edocument-reference.mjs +2 -0
  58. package/esm2022/lib/entity/entity.service.mjs +104 -0
  59. package/esm2022/lib/entity/organization-create-modal/organization-create-modal.component.mjs +307 -0
  60. package/esm2022/lib/entity/organization-search-input/organization-search-input.component.mjs +127 -0
  61. package/esm2022/lib/entity/organization-search-modal/organization-search-modal.component.mjs +304 -0
  62. package/esm2022/lib/entity/person-create-modal/person-create-modal.component.mjs +316 -0
  63. package/esm2022/lib/entity/person-search-input/person-search-input.component.mjs +129 -0
  64. package/esm2022/lib/entity/person-search-modal/person-search-modal.component.mjs +311 -0
  65. package/esm2022/lib/entity/place-create-modal/place-create-modal.component.mjs +14 -0
  66. package/esm2022/lib/entity/place-search-input/place-search-input.component.mjs +126 -0
  67. package/esm2022/lib/entity/place-search-modal/place-search-modal.component.mjs +216 -0
  68. package/esm2022/lib/esri-map/esri-map.component.mjs +416 -0
  69. package/esm2022/lib/file-upload/file-upload.component.mjs +148 -0
  70. package/esm2022/lib/lynx-image-upload/lynx-image-upload.component.mjs +143 -0
  71. package/esm2022/lib/lynx-image-upload/lynx.service.mjs +47 -0
  72. package/esm2022/lib/masks/oepa-create-integer-mask.mjs +39 -0
  73. package/esm2022/lib/masks/oepa-integer-mask-args.mjs +2 -0
  74. package/esm2022/lib/message/message.component.mjs +19 -0
  75. package/esm2022/lib/message/oepa-message-type.mjs +7 -0
  76. package/esm2022/lib/message/oepa-message.mjs +31 -0
  77. package/esm2022/lib/message-list/message-list.component.mjs +24 -0
  78. package/esm2022/lib/multi-file-upload/multi-file-upload.component.mjs +137 -0
  79. package/esm2022/lib/notes-modal/notes-modal.component.mjs +177 -0
  80. package/esm2022/lib/notes-modal/oepa-note-result.mjs +2 -0
  81. package/esm2022/lib/notes-modal/oepa-note.mjs +2 -0
  82. package/esm2022/lib/numeric-input/numeric-input.component.mjs +50 -0
  83. package/esm2022/lib/numeric-input.directive.mjs +76 -0
  84. package/esm2022/lib/oepa-error-message/oepa-error-message.component.mjs +39 -0
  85. package/esm2022/lib/oepa-forms.service.mjs +199 -0
  86. package/esm2022/lib/oepa-images.mjs +59 -0
  87. package/esm2022/lib/oepa-wait-message/oepa-wait-message.component.mjs +29 -0
  88. package/esm2022/lib/ohio-lat-long/ohio-lat-long.component.mjs +176 -0
  89. package/esm2022/lib/parameter/parameter.mjs +2 -0
  90. package/esm2022/lib/parameter/parameter.service.mjs +47 -0
  91. package/esm2022/lib/params-help-button/params-help-button.component.mjs +42 -0
  92. package/esm2022/lib/phone-number/phone-number.component.mjs +44 -0
  93. package/esm2022/lib/pin-modal/oepa-attestation.mjs +2 -0
  94. package/esm2022/lib/pin-modal/oepa-pin.mjs +2 -0
  95. package/esm2022/lib/pin-modal/oepa-pin.service.mjs +54 -0
  96. package/esm2022/lib/pin-modal/oepa-security-question.mjs +2 -0
  97. package/esm2022/lib/pin-modal/pin-modal.component.mjs +186 -0
  98. package/esm2022/lib/progress-indicator/progress-info.mjs +2 -0
  99. package/esm2022/lib/select-input/select-input.component.mjs +96 -0
  100. package/esm2022/lib/server-timeout-modal/server-timeout-modal.component.mjs +63 -0
  101. package/esm2022/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.mjs +54 -0
  102. package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.mjs +2 -0
  103. package/esm2022/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.mjs +190 -0
  104. package/esm2022/lib/shopping-cart/shopping-cart.service.mjs +89 -0
  105. package/esm2022/lib/start-end-timepicker/start-end-timepicker.component.mjs +126 -0
  106. package/esm2022/lib/table/oepa-p-column.mjs +2 -0
  107. package/esm2022/lib/table/oepa-table-cell-classname.pipe.mjs +22 -0
  108. package/esm2022/lib/table/oepa-table-cell-click-event.mjs +2 -0
  109. package/esm2022/lib/table/oepa-table-cell-colspan.pipe.mjs +22 -0
  110. package/esm2022/lib/table/oepa-table-cell-hidden.pipe.mjs +22 -0
  111. package/esm2022/lib/table/oepa-table-cell-icon-classname.pipe.mjs +22 -0
  112. package/esm2022/lib/table/oepa-table-cell-img-src.pipe.mjs +22 -0
  113. package/esm2022/lib/table/oepa-table-cell-inner-html.pipe.mjs +22 -0
  114. package/esm2022/lib/table/oepa-table-cell-input-component.pipe.mjs +22 -0
  115. package/esm2022/lib/table/oepa-table-cell-not-selectable.pipe.mjs +22 -0
  116. package/esm2022/lib/table/oepa-table-cell-value.pipe.mjs +22 -0
  117. package/esm2022/lib/table/oepa-table-cell.mjs +2 -0
  118. package/esm2022/lib/table/oepa-table-column.mjs +2 -0
  119. package/esm2022/lib/table/oepa-table-config.mjs +2 -0
  120. package/esm2022/lib/table/oepa-table-filter.mjs +2 -0
  121. package/esm2022/lib/table/oepa-table-filtering.directive.mjs +57 -0
  122. package/esm2022/lib/table/oepa-table-header.mjs +2 -0
  123. package/esm2022/lib/table/oepa-table-page-info.mjs +2 -0
  124. package/esm2022/lib/table/oepa-table-popover.mjs +2 -0
  125. package/esm2022/lib/table/oepa-table-row.mjs +2 -0
  126. package/esm2022/lib/table/oepa-table-sort-criterion.mjs +2 -0
  127. package/esm2022/lib/table/oepa-table-sorting.directive.mjs +57 -0
  128. package/esm2022/lib/table/oepa-table.mjs +2 -0
  129. package/esm2022/lib/table/p-table/p-table.component.mjs +826 -0
  130. package/esm2022/lib/table/table-data-cell/table-data-cell-click-event.mjs +2 -0
  131. package/esm2022/lib/table/table-data-cell/table-data-cell.component.mjs +60 -0
  132. package/esm2022/lib/table/table-export.service.mjs +57 -0
  133. package/esm2022/lib/table/table-header-cell/table-header-cell.component.mjs +61 -0
  134. package/esm2022/lib/table/table.component.mjs +793 -0
  135. package/esm2022/lib/table/table.service.mjs +112 -0
  136. package/esm2022/lib/template-confirmation-modal/template-confirmation-modal.component.mjs +46 -0
  137. package/esm2022/lib/text-area-input/text-area-input.component.mjs +48 -0
  138. package/esm2022/lib/text-input/text-input.component.mjs +48 -0
  139. package/esm2022/lib/timeout-modal/timeout-modal.component.mjs +31 -0
  140. package/esm2022/lib/timepicker/timepicker.component.mjs +48 -0
  141. package/esm2022/lib/validation/form-validator.mjs +2 -0
  142. package/esm2022/lib/validation/validation.service.mjs +134 -0
  143. package/esm2022/lib/yes-no/yes-no.component.mjs +44 -0
  144. package/esm2022/lib/yes-no-boolean/yes-no.component.mjs +44 -0
  145. package/esm2022/lib/yes-no-other-input/yes-no-other-input.component.mjs +41 -0
  146. package/esm2022/lib/zip-code/zip-code.component.mjs +42 -0
  147. package/esm2022/ohioepa-oepa-ui-lib.mjs +5 -0
  148. package/esm2022/public-api.mjs +142 -0
  149. package/fesm2022/ohioepa-oepa-ui-lib.mjs +10720 -0
  150. package/fesm2022/ohioepa-oepa-ui-lib.mjs.map +1 -0
  151. package/index.d.ts +5 -0
  152. package/lib/account-search-input/account-search-input.component.d.ts +36 -0
  153. package/lib/account-search-modal/account-search-modal.component.d.ts +40 -0
  154. package/lib/action-btn/action-btn.component.d.ts +34 -0
  155. package/lib/action-btn/oepa-action-event.d.ts +19 -0
  156. package/lib/action-btn/oepa-action.d.ts +13 -0
  157. package/lib/action-btn-modal/action-btn-modal.component.d.ts +12 -0
  158. package/lib/address/address.component.d.ts +43 -0
  159. package/lib/address/oepa-address.service.d.ts +28 -0
  160. package/lib/address/oepa-form-address.d.ts +19 -0
  161. package/lib/blank/blank.component.d.ts +8 -0
  162. package/lib/checkbox/checkbox.component.d.ts +15 -0
  163. package/lib/checkbox-input/checkbox-input.component.d.ts +17 -0
  164. package/lib/comment-modal/comment-modal.component.d.ts +22 -0
  165. package/lib/common-forms.module.d.ts +104 -0
  166. package/lib/confirmation-modal/confirmation-modal.component.d.ts +49 -0
  167. package/lib/contact/contact.component.d.ts +33 -0
  168. package/lib/contact/oepa-form-contact.d.ts +58 -0
  169. package/lib/date-input/date-input.component.d.ts +18 -0
  170. package/lib/date-input-modal/date-input-modal.component.d.ts +25 -0
  171. package/lib/datepicker/datepicker.component.d.ts +28 -0
  172. package/lib/daterangepicker/daterangepicker.component.d.ts +22 -0
  173. package/lib/document/document-editor/document-editor.component.d.ts +34 -0
  174. package/lib/document/document-event-entity-type.d.ts +5 -0
  175. package/lib/document/document-event-type.d.ts +5 -0
  176. package/lib/document/document-event.d.ts +9 -0
  177. package/lib/document/document-group/document-group.component.d.ts +38 -0
  178. package/lib/document/document-part/document-part.component.d.ts +10 -0
  179. package/lib/document/document-part-editor/document-part-editor.component.d.ts +46 -0
  180. package/lib/document/document-placeholder-modal/document-placeholder-modal.component.d.ts +19 -0
  181. package/lib/document/document-section/document-section.component.d.ts +37 -0
  182. package/lib/document/document.service.d.ts +90 -0
  183. package/lib/document/group-modal/group-modal.component.d.ts +20 -0
  184. package/lib/document/part-modal/part-modal.component.d.ts +20 -0
  185. package/lib/document/portal-document-class.d.ts +10 -0
  186. package/lib/document/portal-document-group.d.ts +15 -0
  187. package/lib/document/portal-document-part.d.ts +22 -0
  188. package/lib/document/portal-document-placeholder.d.ts +12 -0
  189. package/lib/document/portal-document-section.d.ts +13 -0
  190. package/lib/document/portal-document-text.d.ts +7 -0
  191. package/lib/document/portal-document-type.d.ts +15 -0
  192. package/lib/document/portal-document.d.ts +27 -0
  193. package/lib/document/portal-email-attachment-type.d.ts +6 -0
  194. package/lib/document/portal-email-attachment.d.ts +12 -0
  195. package/lib/document/portal-email-filter.d.ts +12 -0
  196. package/lib/document/portal-email.d.ts +18 -0
  197. package/lib/document/section-modal/section-modal.component.d.ts +20 -0
  198. package/lib/dual-list-box/array.pipes.d.ts +36 -0
  199. package/lib/dual-list-box/dual-list-box.component.d.ts +91 -0
  200. package/lib/dual-list-box/items-moved-event.d.ts +11 -0
  201. package/lib/dual-list-box/list-box-item.d.ts +7 -0
  202. package/lib/ebiz-address/ebiz-address.component.d.ts +23 -0
  203. package/lib/edoc-attachment/edoc-attachment.component.d.ts +44 -0
  204. package/lib/edoc-attachment/edoc-attachment.service.d.ts +16 -0
  205. package/lib/edoc-attachment/edocument-attachment-metadata.d.ts +16 -0
  206. package/lib/edoc-attachment/edocument-attachment.d.ts +12 -0
  207. package/lib/edoc-attachment/edocument-reference.d.ts +5 -0
  208. package/lib/entity/entity.service.d.ts +31 -0
  209. package/lib/entity/organization-create-modal/organization-create-modal.component.d.ts +53 -0
  210. package/lib/entity/organization-search-input/organization-search-input.component.d.ts +34 -0
  211. package/lib/entity/organization-search-modal/organization-search-modal.component.d.ts +56 -0
  212. package/lib/entity/person-create-modal/person-create-modal.component.d.ts +53 -0
  213. package/lib/entity/person-search-input/person-search-input.component.d.ts +34 -0
  214. package/lib/entity/person-search-modal/person-search-modal.component.d.ts +56 -0
  215. package/lib/entity/place-create-modal/place-create-modal.component.d.ts +8 -0
  216. package/lib/entity/place-search-input/place-search-input.component.d.ts +34 -0
  217. package/lib/entity/place-search-modal/place-search-modal.component.d.ts +41 -0
  218. package/lib/esri-map/esri-map.component.d.ts +41 -0
  219. package/lib/file-upload/file-upload.component.d.ts +37 -0
  220. package/lib/lynx-image-upload/lynx-image-upload.component.d.ts +36 -0
  221. package/lib/lynx-image-upload/lynx.service.d.ts +16 -0
  222. package/lib/masks/oepa-create-integer-mask.d.ts +8 -0
  223. package/lib/masks/oepa-integer-mask-args.d.ts +5 -0
  224. package/lib/message/message.component.d.ts +10 -0
  225. package/lib/message/oepa-message-type.d.ts +5 -0
  226. package/lib/message/oepa-message.d.ts +7 -0
  227. package/lib/message-list/message-list.component.d.ts +11 -0
  228. package/lib/multi-file-upload/multi-file-upload.component.d.ts +36 -0
  229. package/lib/notes-modal/notes-modal.component.d.ts +50 -0
  230. package/lib/notes-modal/oepa-note-result.d.ts +10 -0
  231. package/lib/notes-modal/oepa-note.d.ts +13 -0
  232. package/lib/numeric-input/numeric-input.component.d.ts +20 -0
  233. package/lib/numeric-input.directive.d.ts +19 -0
  234. package/lib/oepa-error-message/oepa-error-message.component.d.ts +9 -0
  235. package/lib/oepa-forms.service.d.ts +28 -0
  236. package/lib/oepa-images.d.ts +53 -0
  237. package/lib/oepa-wait-message/oepa-wait-message.component.d.ts +9 -0
  238. package/lib/ohio-lat-long/ohio-lat-long.component.d.ts +63 -0
  239. package/lib/parameter/parameter.d.ts +7 -0
  240. package/lib/parameter/parameter.service.d.ts +18 -0
  241. package/lib/params-help-button/params-help-button.component.d.ts +15 -0
  242. package/lib/phone-number/phone-number.component.d.ts +19 -0
  243. package/lib/pin-modal/oepa-attestation.d.ts +10 -0
  244. package/lib/pin-modal/oepa-pin.d.ts +26 -0
  245. package/lib/pin-modal/oepa-pin.service.d.ts +38 -0
  246. package/lib/pin-modal/oepa-security-question.d.ts +8 -0
  247. package/lib/pin-modal/pin-modal.component.d.ts +46 -0
  248. package/lib/progress-indicator/progress-info.d.ts +4 -0
  249. package/lib/select-input/select-input.component.d.ts +27 -0
  250. package/lib/server-timeout-modal/server-timeout-modal.component.d.ts +23 -0
  251. package/lib/shopping-cart/shopping-cart-summary/shopping-cart-summary.component.d.ts +18 -0
  252. package/lib/shopping-cart/shopping-cart-view/shopping-cart-view-parameters.d.ts +10 -0
  253. package/lib/shopping-cart/shopping-cart-view/shopping-cart-view.component.d.ts +51 -0
  254. package/lib/shopping-cart/shopping-cart.service.d.ts +44 -0
  255. package/lib/start-end-timepicker/start-end-timepicker.component.d.ts +29 -0
  256. package/lib/table/oepa-p-column.d.ts +4 -0
  257. package/lib/table/oepa-table-cell-classname.pipe.d.ts +9 -0
  258. package/lib/table/oepa-table-cell-click-event.d.ts +15 -0
  259. package/lib/table/oepa-table-cell-colspan.pipe.d.ts +9 -0
  260. package/lib/table/oepa-table-cell-hidden.pipe.d.ts +9 -0
  261. package/lib/table/oepa-table-cell-icon-classname.pipe.d.ts +9 -0
  262. package/lib/table/oepa-table-cell-img-src.pipe.d.ts +9 -0
  263. package/lib/table/oepa-table-cell-inner-html.pipe.d.ts +9 -0
  264. package/lib/table/oepa-table-cell-input-component.pipe.d.ts +9 -0
  265. package/lib/table/oepa-table-cell-not-selectable.pipe.d.ts +9 -0
  266. package/lib/table/oepa-table-cell-value.pipe.d.ts +9 -0
  267. package/lib/table/oepa-table-cell.d.ts +66 -0
  268. package/lib/table/oepa-table-column.d.ts +71 -0
  269. package/lib/table/oepa-table-config.d.ts +72 -0
  270. package/lib/table/oepa-table-filter.d.ts +10 -0
  271. package/lib/table/oepa-table-filtering.directive.d.ts +17 -0
  272. package/lib/table/oepa-table-header.d.ts +9 -0
  273. package/lib/table/oepa-table-page-info.d.ts +22 -0
  274. package/lib/table/oepa-table-popover.d.ts +28 -0
  275. package/lib/table/oepa-table-row.d.ts +84 -0
  276. package/lib/table/oepa-table-sort-criterion.d.ts +4 -0
  277. package/lib/table/oepa-table-sorting.directive.d.ts +16 -0
  278. package/lib/table/oepa-table.d.ts +42 -0
  279. package/lib/table/p-table/p-table.component.d.ts +155 -0
  280. package/lib/table/table-data-cell/table-data-cell-click-event.d.ts +5 -0
  281. package/lib/table/table-data-cell/table-data-cell.component.d.ts +23 -0
  282. package/lib/table/table-export.service.d.ts +33 -0
  283. package/lib/table/table-header-cell/table-header-cell.component.d.ts +24 -0
  284. package/lib/table/table.component.d.ts +144 -0
  285. package/lib/table/table.service.d.ts +28 -0
  286. package/lib/template-confirmation-modal/template-confirmation-modal.component.d.ts +19 -0
  287. package/lib/text-area-input/text-area-input.component.d.ts +19 -0
  288. package/lib/text-input/text-input.component.d.ts +19 -0
  289. package/lib/timeout-modal/timeout-modal.component.d.ts +13 -0
  290. package/lib/timepicker/timepicker.component.d.ts +17 -0
  291. package/lib/validation/form-validator.d.ts +10 -0
  292. package/lib/validation/validation.service.d.ts +16 -0
  293. package/lib/yes-no/yes-no.component.d.ts +19 -0
  294. package/lib/yes-no-boolean/yes-no.component.d.ts +19 -0
  295. package/lib/yes-no-other-input/yes-no-other-input.component.d.ts +18 -0
  296. package/lib/zip-code/zip-code.component.d.ts +19 -0
  297. package/ohioepa-oepa-ui-lib-1.1.0.tgz +0 -0
  298. package/package.json +25 -0
  299. package/public-api.d.ts +138 -0
@@ -0,0 +1,186 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import { Validators } from '@angular/forms';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ohioepa/oepa-common-lib";
5
+ import * as i2 from "@angular/forms";
6
+ import * as i3 from "./oepa-pin.service";
7
+ import * as i4 from "ngx-bootstrap/modal";
8
+ import * as i5 from "@angular/common";
9
+ export class PinModalComponent {
10
+ userAccountService;
11
+ fb;
12
+ pinService;
13
+ bsModalRef;
14
+ _attestationID = '';
15
+ set attestationID(id) {
16
+ this._attestationID = id;
17
+ this.retrieveAttestations(id);
18
+ }
19
+ get attestationID() {
20
+ return this._attestationID;
21
+ }
22
+ submitCallback;
23
+ submittingComponent;
24
+ close = new EventEmitter();
25
+ imageRoot = '/AngularWebApp/assets/images';
26
+ oepaSubmissionForm;
27
+ pinAttestation = {};
28
+ serviceAttestation = {};
29
+ securityQuestion = { question: '' };
30
+ noPin = false;
31
+ loadingQuestion = false;
32
+ submitInProgress = false;
33
+ submitDisabled = false;
34
+ errorMessage = '';
35
+ showValidation = false;
36
+ loadingAttestations = false;
37
+ currentUserID = '';
38
+ userAccount;
39
+ // public parentURL: string = undefined;
40
+ // public parentSessionID: string = undefined;
41
+ constructor(userAccountService, fb, pinService, bsModalRef) {
42
+ this.userAccountService = userAccountService;
43
+ this.fb = fb;
44
+ this.pinService = pinService;
45
+ this.bsModalRef = bsModalRef;
46
+ }
47
+ ngOnInit() {
48
+ this.retrieveNewSecurityQuestion();
49
+ this.createForm();
50
+ this.retrievePin();
51
+ }
52
+ retrievePin() {
53
+ this.errorMessage = '';
54
+ this.userAccountService.retrieveAccountForCurrentUser().subscribe(account => {
55
+ if (account) {
56
+ this.userAccount = account;
57
+ this.currentUserID = account.loginName;
58
+ this.noPin = true;
59
+ if (this.currentUserID) {
60
+ this.pinService.retrievePin(this.currentUserID).subscribe({
61
+ next: (result) => {
62
+ if (result) {
63
+ if (result.status == 'ACTIVE') {
64
+ this.noPin = false;
65
+ }
66
+ }
67
+ }, error: (err) => {
68
+ console.error('Could not retrieve pin:' + JSON.stringify(err));
69
+ }
70
+ });
71
+ }
72
+ else {
73
+ this.errorMessage = 'No current user';
74
+ }
75
+ }
76
+ else {
77
+ console.log('No account found');
78
+ }
79
+ });
80
+ }
81
+ submit() {
82
+ this.submitInProgress = true;
83
+ this.errorMessage = '';
84
+ this.showValidation = false;
85
+ // console.log('is form valid? ' + this.oepaSubmissionForm.valid);
86
+ const securityAnswer = this.oepaSubmissionForm.get('securityAnswer')?.value;
87
+ const securityPIN = this.oepaSubmissionForm.get('securityPIN')?.value;
88
+ // console.log('securityAnswer = ' + securityAnswer + ', correct answer is ' + this.securityQuestion.answer);
89
+ if (securityAnswer && this.securityQuestion.answer && this.securityQuestion.answer.toUpperCase() === securityAnswer.toUpperCase()) {
90
+ this.pinService.validate({ pin: securityPIN }).subscribe((isPINValid) => {
91
+ if (isPINValid) {
92
+ this.invokeSubmitCallback();
93
+ }
94
+ else {
95
+ this.retrieveNewSecurityQuestion();
96
+ this.errorMessage = 'The PIN entered was incorrect. Please try again.';
97
+ this.submitInProgress = false;
98
+ }
99
+ }, (err) => {
100
+ console.error('Could not validate PIN:' + JSON.stringify(err));
101
+ });
102
+ }
103
+ else {
104
+ this.errorMessage = 'The answer to the security question is incorrect. Please try again.';
105
+ this.submitInProgress = false;
106
+ this.showValidation = true;
107
+ }
108
+ }
109
+ cancel() {
110
+ this.bsModalRef.hide();
111
+ this.close.emit();
112
+ }
113
+ createForm() {
114
+ this.oepaSubmissionForm = this.fb.group({
115
+ securityAnswer: ['', Validators.required],
116
+ securityPIN: ['', Validators.required],
117
+ });
118
+ }
119
+ invokeSubmitCallback() {
120
+ if (this.submittingComponent && this.submitCallback && this.submitCallback instanceof Function) {
121
+ this.submitCallback.call(this.submittingComponent).subscribe((result) => {
122
+ this.submitInProgress = false;
123
+ this.bsModalRef.hide();
124
+ }, (err) => {
125
+ this.submitInProgress = false;
126
+ console.error('Error processing submission: ' + JSON.stringify(err));
127
+ this.errorMessage = 'Submission failed: ' + err;
128
+ });
129
+ }
130
+ else {
131
+ this.submitInProgress = false;
132
+ this.errorMessage = 'No submit callback defined';
133
+ }
134
+ }
135
+ retrieveAttestations(attestationId) {
136
+ // console.log('retrieveAttestations: ' + attestationId);
137
+ this.loadingAttestations = true;
138
+ if (attestationId && attestationId.length > 0) {
139
+ this.pinService.retrieveAttestation('PIN').subscribe((attestation) => {
140
+ this.pinAttestation = attestation;
141
+ }, (err) => {
142
+ console.error('Could not retrieve PIN attestation: ' + JSON.stringify(err));
143
+ });
144
+ this.pinService.retrieveAttestationByID(attestationId).subscribe((attestation) => {
145
+ this.serviceAttestation = attestation;
146
+ this.loadingAttestations = false;
147
+ }, (err) => {
148
+ console.error('Could not retrieve attestation for service: "' + attestationId + '" :' + JSON.stringify(err));
149
+ });
150
+ }
151
+ else {
152
+ console.error('ERROR: Attempt to retrieve invalid attestationId: ' + attestationId);
153
+ }
154
+ }
155
+ retrieveNewSecurityQuestion() {
156
+ this.loadingQuestion = true;
157
+ this.pinService.retrieveSecurityQuestion().subscribe((question) => {
158
+ this.securityQuestion = question;
159
+ if (this.securityQuestion === null) {
160
+ this.securityQuestion = { questionID: '', question: '', answer: '' };
161
+ }
162
+ this.loadingQuestion = false;
163
+ if (!this.securityQuestion) {
164
+ this.errorMessage = 'There is no PIN enabled for your account. ' +
165
+ 'To continue, you must first request a PIN by selecting the "Request New PIN" option from the eBusiness Center "My Account" menu.';
166
+ }
167
+ }, (err) => {
168
+ console.error('Could not retrieve security question:' + JSON.stringify(err));
169
+ });
170
+ }
171
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PinModalComponent, deps: [{ token: i1.OepaUserAccountService }, { token: i2.FormBuilder }, { token: i3.OepaPinService }, { token: i4.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
172
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: PinModalComponent, selector: "oepa-pin-modal", inputs: { attestationID: "attestationID", submitCallback: "submitCallback", submittingComponent: "submittingComponent" }, outputs: { close: "close" }, ngImport: i0, template: "<form [formGroup]=\"oepaSubmissionForm\">\n <div class=\"modal-body\">\n\n <div [hidden]=\"noPin\">\n <div class=\"card-header\">\n <div class=\"row\" *ngIf=\"pinAttestation.text\">\n <div class=\"col-md-12\">\n <div class=\"well\" [innerHTML]=\"pinAttestation.text\"></div>\n </div>\n </div>\n </div>\n <br>\n <div class=\"card-header\" *ngIf=\"serviceAttestation\">\n <div class=\"row\" *ngIf=\"serviceAttestation.text\">\n <div class=\"col-md-12\">\n <div class=\"well\" [innerHTML]=\"serviceAttestation.text\">\"</div>\n </div>\n </div>\n </div>\n </div>\n <br>\n\n <div class=\"row\" *ngIf=\"loadingAttestations\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-info\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span> Loading PIN information...\n </div>\n </div>\n </div>\n\n <div [hidden]=\"loadingAttestations || noPin\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label style=\"padding: 5px;\"><b>Security Question:</b></label>\n <label>{{securityQuestion.question}}</label>\n <div>\n <input [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid}\"\n formControlName=\"securityAnswer\" type=\"password\" class=\"form-control\" name=\"securityAnswer\" placeholder=\"Answer\" required>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid\">Answer to security question is required</small>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label><b>PIN: </b></label>\n <div>\n <input [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityPIN'].valid}\"\n formControlName=\"securityPIN\" type=\"password\" class=\"form-control\" name=\"securityPIN\" placeholder=\"PIN\" required>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityPIN'].valid\">A valid PIN is required</small>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div >\n <div class=\"row\">\n <div class=\"col-md-12\">\n <!-- toggle hasPin message -->\n <div *ngIf=\"noPin\">\n <b>Attention:</b> Before you can submit, you first must activate your PIN. Cancel this submission, save the application/report and go back to the main eBusiness Home Page. \n Select <b>MY Account- Request New PIN</b> to get started. <br>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"errorMessage\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-danger\" role=\"alert\">{{ errorMessage }}</div>\n </div>\n </div>\n\n </div>\n\n\n <div class=\"modal-footer\">\n <span *ngIf=\"submitInProgress === true\" id=\"wait\"><span class=\"spinner-border text-primary\" role=\"status\"></span>Please wait...&nbsp;&nbsp;</span>\n <button class=\"btn btn-primary mr-1\" (click)=\"submit()\" [disabled]=\"submitInProgress || !oepaSubmissionForm.valid\">Submit</button>\n <button class=\"btn btn-primary mr-1\" (click)=\"cancel()\" [disabled]=\"submitInProgress\">Cancel</button>\n </div>\n\n</form>", styles: [""], dependencies: [{ kind: "directive", type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
173
+ }
174
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: PinModalComponent, decorators: [{
175
+ type: Component,
176
+ args: [{ selector: 'oepa-pin-modal', template: "<form [formGroup]=\"oepaSubmissionForm\">\n <div class=\"modal-body\">\n\n <div [hidden]=\"noPin\">\n <div class=\"card-header\">\n <div class=\"row\" *ngIf=\"pinAttestation.text\">\n <div class=\"col-md-12\">\n <div class=\"well\" [innerHTML]=\"pinAttestation.text\"></div>\n </div>\n </div>\n </div>\n <br>\n <div class=\"card-header\" *ngIf=\"serviceAttestation\">\n <div class=\"row\" *ngIf=\"serviceAttestation.text\">\n <div class=\"col-md-12\">\n <div class=\"well\" [innerHTML]=\"serviceAttestation.text\">\"</div>\n </div>\n </div>\n </div>\n </div>\n <br>\n\n <div class=\"row\" *ngIf=\"loadingAttestations\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-info\">\n <span class=\"spinner-border text-primary\" role=\"status\"></span> Loading PIN information...\n </div>\n </div>\n </div>\n\n <div [hidden]=\"loadingAttestations || noPin\">\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label style=\"padding: 5px;\"><b>Security Question:</b></label>\n <label>{{securityQuestion.question}}</label>\n <div>\n <input [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid}\"\n formControlName=\"securityAnswer\" type=\"password\" class=\"form-control\" name=\"securityAnswer\" placeholder=\"Answer\" required>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityAnswer'].valid\">Answer to security question is required</small>\n </div>\n </div>\n </div>\n </div>\n <div class=\"row\">\n <div class=\"col-md-12\">\n <div class=\"form-group\">\n <label><b>PIN: </b></label>\n <div>\n <input [ngClass]=\"{'is-invalid':showValidation && !oepaSubmissionForm.controls['securityPIN'].valid}\"\n formControlName=\"securityPIN\" type=\"password\" class=\"form-control\" name=\"securityPIN\" placeholder=\"PIN\" required>\n <small class=\"invalid-feedback\" *ngIf=\"showValidation && !oepaSubmissionForm.controls['securityPIN'].valid\">A valid PIN is required</small>\n </div>\n </div>\n </div>\n </div>\n </div>\n \n <div >\n <div class=\"row\">\n <div class=\"col-md-12\">\n <!-- toggle hasPin message -->\n <div *ngIf=\"noPin\">\n <b>Attention:</b> Before you can submit, you first must activate your PIN. Cancel this submission, save the application/report and go back to the main eBusiness Home Page. \n Select <b>MY Account- Request New PIN</b> to get started. <br>\n </div>\n </div>\n </div>\n </div>\n\n <div class=\"row\" *ngIf=\"errorMessage\">\n <div class=\"col-md-12\">\n <div class=\"alert alert-danger\" role=\"alert\">{{ errorMessage }}</div>\n </div>\n </div>\n\n </div>\n\n\n <div class=\"modal-footer\">\n <span *ngIf=\"submitInProgress === true\" id=\"wait\"><span class=\"spinner-border text-primary\" role=\"status\"></span>Please wait...&nbsp;&nbsp;</span>\n <button class=\"btn btn-primary mr-1\" (click)=\"submit()\" [disabled]=\"submitInProgress || !oepaSubmissionForm.valid\">Submit</button>\n <button class=\"btn btn-primary mr-1\" (click)=\"cancel()\" [disabled]=\"submitInProgress\">Cancel</button>\n </div>\n\n</form>" }]
177
+ }], ctorParameters: () => [{ type: i1.OepaUserAccountService }, { type: i2.FormBuilder }, { type: i3.OepaPinService }, { type: i4.BsModalRef }], propDecorators: { attestationID: [{
178
+ type: Input
179
+ }], submitCallback: [{
180
+ type: Input
181
+ }], submittingComponent: [{
182
+ type: Input
183
+ }], close: [{
184
+ type: Output
185
+ }] } });
186
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGluLW1vZGFsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcGluLW1vZGFsL3Bpbi1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3Bpbi1tb2RhbC9waW4tbW9kYWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFvQixZQUFZLEVBQUcsTUFBTSxlQUFlLENBQUM7QUFDbEcsT0FBTyxFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQzs7Ozs7OztBQWVwRSxNQUFNLE9BQU8saUJBQWlCO0lBcUNSO0lBQW9EO0lBQXlCO0lBQW1DO0lBcEM1SCxjQUFjLEdBQUcsRUFBRSxDQUFDO0lBRTVCLElBQ0ksYUFBYSxDQUFDLEVBQVU7UUFDMUIsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFDRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDN0IsQ0FBQztJQUVRLGNBQWMsQ0FBeUI7SUFDdEMsbUJBQW1CLENBQU07SUFFekIsS0FBSyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO0lBRXhELFNBQVMsR0FBRyw4QkFBOEIsQ0FBQztJQUUzQyxrQkFBa0IsQ0FBYTtJQUMvQixjQUFjLEdBQW9CLEVBQUUsQ0FBQztJQUNyQyxrQkFBa0IsR0FBb0IsRUFBRSxDQUFDO0lBQ3pDLGdCQUFnQixHQUF5QixFQUFFLFFBQVEsRUFBRyxFQUFFLEVBQUUsQ0FBQztJQUMzRCxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2QsZUFBZSxHQUFHLEtBQUssQ0FBQztJQUN4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QyxZQUFZLEdBQUcsNENBQTRDO29CQUNoRSxrSUFBa0ksQ0FBQztZQUNySSxDQUFDO1FBQ0gsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7WUFDVCxPQUFPLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztJQUVMLENBQUM7d0dBL0tVLGlCQUFpQjs0RkFBakIsaUJBQWlCLDZNQ2hCOUIsNmpIQXFGTzs7NEZEckVNLGlCQUFpQjtrQkFMN0IsU0FBUzsrQkFDRSxnQkFBZ0I7MktBUXRCLGFBQWE7c0JBRGhCLEtBQUs7Z0JBU0csY0FBYztzQkFBdEIsS0FBSztnQkFDSSxtQkFBbUI7c0JBQTVCLEtBQUs7Z0JBRUksS0FBSztzQkFBZCxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIE9wdGlvbmFsLCBJbmplY3QsIEV2ZW50RW1pdHRlciAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1CdWlsZGVyLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEJzTW9kYWxSZWYgfSBmcm9tICduZ3gtYm9vdHN0cmFwL21vZGFsJztcblxuaW1wb3J0IHsgT2VwYVVzZXJBY2NvdW50U2VydmljZSwgT2VwYVVzZXJBY2NvdW50IH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcbmltcG9ydCB7IE9lcGFBdHRlc3RhdGlvbiB9IGZyb20gJy4vb2VwYS1hdHRlc3RhdGlvbic7XG5pbXBvcnQgeyBPZXBhU2VjdXJpdHlRdWVzdGlvbiB9IGZyb20gJy4vb2VwYS1zZWN1cml0eS1xdWVzdGlvbic7XG5pbXBvcnQgeyBPZXBhUGluU2VydmljZSB9IGZyb20gJy4vb2VwYS1waW4uc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtcGluLW1vZGFsJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Bpbi1tb2RhbC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Bpbi1tb2RhbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgUGluTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9hdHRlc3RhdGlvbklEID0gJyc7XG5cbiAgQElucHV0KClcbiAgc2V0IGF0dGVzdGF0aW9uSUQoaWQ6IHN0cmluZykge1xuICAgIHRoaXMuX2F0dGVzdGF0aW9uSUQgPSBpZDtcbiAgICB0aGlzLnJldHJpZXZlQXR0ZXN0YXRpb25zKGlkKTtcbiAgfVxuICBnZXQgYXR0ZXN0YXRpb25JRCgpIHtcbiAgICByZXR1cm4gdGhpcy5fYXR0ZXN0YXRpb25JRDtcbiAgfVxuXG4gIEBJbnB1dCgpIHN1Ym1pdENhbGxiYWNrITogKCkgPT4gT2JzZXJ2YWJsZTxhbnk+O1xuICBASW5wdXQoKSAgc3VibWl0dGluZ0NvbXBvbmVudDogYW55O1xuXG4gIEBPdXRwdXQoKSBjbG9zZTogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIHB1YmxpYyBpbWFnZVJvb3QgPSAnL0FuZ3VsYXJXZWJBcHAvYXNzZXRzL2ltYWdlcyc7XG5cbiAgcHVibGljIG9lcGFTdWJtaXNzaW9uRm9ybSE6IEZvcm1Hcm91cDtcbiAgcHVibGljIHBpbkF0dGVzdGF0aW9uOiBPZXBhQXR0ZXN0YXRpb24gPSB7fTtcbiAgcHVibGljIHNlcnZpY2VBdHRlc3RhdGlvbjogT2VwYUF0dGVzdGF0aW9uID0ge307XG4gIHB1YmxpYyBzZWN1cml0eVF1ZXN0aW9uOiBPZXBhU2VjdXJpdHlRdWVzdGlvbiA9IHsgcXVlc3Rpb246ICAnJyB9O1xuICBwdWJsaWMgbm9QaW4gPSBmYWxzZTtcbiAgcHVibGljIGxvYWRpbmdRdWVzdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgc3VibWl0SW5Qcm9ncmVzcyA9IGZhbHNlO1xuICBwdWJsaWMgc3VibWl0RGlzYWJsZWQgPSBmYWxzZTtcbiAgcHVibGljIGVycm9yTWVzc2FnZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBzaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuICBwdWJsaWMgbG9hZGluZ0F0dGVzdGF0aW9ucyA9IGZhbHNlO1xuXG4gIHB1YmxpYyBjdXJyZW50VXNlcklEOiBzdHJpbmcgfCB1bmRlZmluZWQgPSAnJztcbiAgcHVibGljIHVzZXJBY2NvdW50OiBPZXBhVXNlckFjY291bnQgfCB1bmRlZmluZWQ7XG4gIC8vIHB1YmxpYyBwYXJlbnRVUkw6IHN0cmluZyA9IHVuZGVmaW5lZDtcbiAgLy8gcHVibGljIHBhcmVudFNlc3Npb25JRDogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSB1c2VyQWNjb3VudFNlcnZpY2U6IE9lcGFVc2VyQWNjb3VudFNlcnZpY2UsIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLCBwcml2YXRlIHBpblNlcnZpY2U6IE9lcGFQaW5TZXJ2aWNlLCBwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZikge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXRyaWV2ZU5ld1NlY3VyaXR5UXVlc3Rpb24oKTtcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICB0aGlzLnJldHJpZXZlUGluKCk7XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlUGluKCkge1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgdGhpcy51c2VyQWNjb3VudFNlcnZpY2UucmV0cmlldmVBY2NvdW50Rm9yQ3VycmVudFVzZXIoKS5zdWJzY3JpYmUoYWNjb3VudCA9PiB7XG4gICAgICBpZiAoYWNjb3VudCkge1xuICAgICAgICB0aGlzLnVzZXJBY2NvdW50ID0gYWNjb3VudDtcbiAgICAgICAgdGhpcy5jdXJyZW50VXNlcklEID0gYWNjb3VudC5sb2dpbk5hbWU7XG4gICAgICAgIHRoaXMubm9QaW4gPSB0cnVlO1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50VXNlcklEKSB7XG4gICAgICAgICAgdGhpcy5waW5TZXJ2aWNlLnJldHJpZXZlUGluKHRoaXMuY3VycmVudFVzZXJJRCkuc3Vic2NyaWJlKHtcbiAgICAgICAgICAgIG5leHQ6IChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gJ0FDVElWRScpIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vUGluID0gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gXG4gICAgICAgICAgfSwgZXJyb3I6IChlcnIpID0+IHsgIFxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHJldHJpZXZlIHBpbjonICsgSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgICAgICAgfX0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ05vIGN1cnJlbnQgdXNlcic7XG4gICAgICAgIH1cblxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coJ05vIGFjY291bnQgZm91bmQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICB9XG5cbiAgcHVibGljIHN1Ym1pdCgpIHtcbiAgICB0aGlzLnN1Ym1pdEluUHJvZ3Jlc3MgPSB0cnVlO1xuICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJyc7XG4gICAgdGhpcy5zaG93VmFsaWRhdGlvbiA9IGZhbHNlO1xuXG4gICAgLy8gY29uc29sZS5sb2coJ2lzIGZvcm0gdmFsaWQ/ICcgKyB0aGlzLm9lcGFTdWJtaXNzaW9uRm9ybS52YWxpZCk7XG4gICAgY29uc3Qgc2VjdXJpdHlBbnN3ZXIgPSB0aGlzLm9lcGFTdWJtaXNzaW9uRm9ybS5nZXQoJ3NlY3VyaXR5QW5zd2VyJyk/LnZhbHVlO1xuICAgIGNvbnN0IHNlY3VyaXR5UElOID0gdGhpcy5vZXBhU3VibWlzc2lvbkZvcm0uZ2V0KCdzZWN1cml0eVBJTicpPy52YWx1ZTtcblxuICAgIC8vIGNvbnNvbGUubG9nKCdzZWN1cml0eUFuc3dlciA9ICcgKyBzZWN1cml0eUFuc3dlciArICcsIGNvcnJlY3QgYW5zd2VyIGlzICcgKyB0aGlzLnNlY3VyaXR5UXVlc3Rpb24uYW5zd2VyKTtcbiAgICBpZiAoc2VjdXJpdHlBbnN3ZXIgJiYgdGhpcy5zZWN1cml0eVF1ZXN0aW9uLmFuc3dlciAmJiB0aGlzLnNlY3VyaXR5UXVlc3Rpb24uYW5zd2VyLnRvVXBwZXJDYXNlKCkgPT09IHNlY3VyaXR5QW5zd2VyLnRvVXBwZXJDYXNlKCkpIHtcbiAgICAgIHRoaXMucGluU2VydmljZS52YWxpZGF0ZSh7IHBpbjogc2VjdXJpdHlQSU4gfSkuc3Vic2NyaWJlKChpc1BJTlZhbGlkOiBib29sZWFuKSA9PiB7XG4gICAgICAgIGlmIChpc1BJTlZhbGlkKSB7XG4gICAgICAgICAgdGhpcy5pbnZva2VTdWJtaXRDYWxsYmFjaygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucmV0cmlldmVOZXdTZWN1cml0eVF1ZXN0aW9uKCk7XG4gICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSAnVGhlIFBJTiBlbnRlcmVkIHdhcyBpbmNvcnJlY3QuIFBsZWFzZSB0cnkgYWdhaW4uJztcbiAgICAgICAgICB0aGlzLnN1Ym1pdEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdDb3VsZCBub3QgdmFsaWRhdGUgUElOOicgKyBKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmVycm9yTWVzc2FnZSA9ICdUaGUgYW5zd2VyIHRvIHRoZSBzZWN1cml0eSBxdWVzdGlvbiBpcyBpbmNvcnJlY3QuIFBsZWFzZSB0cnkgYWdhaW4uJztcbiAgICAgIHRoaXMuc3VibWl0SW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgdGhpcy5zaG93VmFsaWRhdGlvbiA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNhbmNlbCgpIHtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICAgIHRoaXMuY2xvc2UuZW1pdCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMub2VwYVN1Ym1pc3Npb25Gb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBzZWN1cml0eUFuc3dlcjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkIF0sXG4gICAgICBzZWN1cml0eVBJTjogWycnLCBWYWxpZGF0b3JzLnJlcXVpcmVkIF0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGludm9rZVN1Ym1pdENhbGxiYWNrKCkge1xuICAgIGlmICh0aGlzLnN1Ym1pdHRpbmdDb21wb25lbnQgJiYgdGhpcy5zdWJtaXRDYWxsYmFjayAmJiB0aGlzLnN1Ym1pdENhbGxiYWNrIGluc3RhbmNlb2YgRnVuY3Rpb24pIHtcbiAgICAgIHRoaXMuc3VibWl0Q2FsbGJhY2suY2FsbCh0aGlzLnN1Ym1pdHRpbmdDb21wb25lbnQpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgIHRoaXMuc3VibWl0SW5Qcm9ncmVzcyA9IGZhbHNlO1xuICAgICAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICAgICAgfSwgKGVycikgPT4ge1xuICAgICAgICB0aGlzLnN1Ym1pdEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyBzdWJtaXNzaW9uOiAnICsgSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ1N1Ym1pc3Npb24gZmFpbGVkOiAnICsgZXJyOyBcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnN1Ym1pdEluUHJvZ3Jlc3MgPSBmYWxzZTtcbiAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ05vIHN1Ym1pdCBjYWxsYmFjayBkZWZpbmVkJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJldHJpZXZlQXR0ZXN0YXRpb25zKGF0dGVzdGF0aW9uSWQ6IHN0cmluZykge1xuICAgIC8vIGNvbnNvbGUubG9nKCdyZXRyaWV2ZUF0dGVzdGF0aW9uczogJyArIGF0dGVzdGF0aW9uSWQpO1xuXG4gICAgdGhpcy5sb2FkaW5nQXR0ZXN0YXRpb25zID0gdHJ1ZTtcblxuICAgIGlmIChhdHRlc3RhdGlvbklkICYmIGF0dGVzdGF0aW9uSWQubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5waW5TZXJ2aWNlLnJldHJpZXZlQXR0ZXN0YXRpb24oJ1BJTicpLnN1YnNjcmliZSgoYXR0ZXN0YXRpb246IE9lcGFBdHRlc3RhdGlvbikgPT4ge1xuICAgICAgICB0aGlzLnBpbkF0dGVzdGF0aW9uID0gYXR0ZXN0YXRpb247XG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCByZXRyaWV2ZSBQSU4gYXR0ZXN0YXRpb246ICcgKyBKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5waW5TZXJ2aWNlLnJldHJpZXZlQXR0ZXN0YXRpb25CeUlEKGF0dGVzdGF0aW9uSWQpLnN1YnNjcmliZSgoYXR0ZXN0YXRpb246IE9lcGFBdHRlc3RhdGlvbikgPT4ge1xuICAgICAgICB0aGlzLnNlcnZpY2VBdHRlc3RhdGlvbiA9IGF0dGVzdGF0aW9uO1xuXG4gICAgICAgIHRoaXMubG9hZGluZ0F0dGVzdGF0aW9ucyA9IGZhbHNlO1xuXG4gICAgICB9LCAoZXJyKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0NvdWxkIG5vdCByZXRyaWV2ZSBhdHRlc3RhdGlvbiBmb3Igc2VydmljZTogXCInICsgYXR0ZXN0YXRpb25JZCArICdcIiA6JyArIEpTT04uc3RyaW5naWZ5KGVycikpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0VSUk9SOiBBdHRlbXB0IHRvIHJldHJpZXZlIGludmFsaWQgYXR0ZXN0YXRpb25JZDogJyArIGF0dGVzdGF0aW9uSWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmV0cmlldmVOZXdTZWN1cml0eVF1ZXN0aW9uKCkge1xuXG4gICAgdGhpcy5sb2FkaW5nUXVlc3Rpb24gPSB0cnVlO1xuXG4gICAgdGhpcy5waW5TZXJ2aWNlLnJldHJpZXZlU2VjdXJpdHlRdWVzdGlvbigpLnN1YnNjcmliZSgocXVlc3Rpb246IE9lcGFTZWN1cml0eVF1ZXN0aW9uKSA9PiB7XG4gICAgICB0aGlzLnNlY3VyaXR5UXVlc3Rpb24gPSBxdWVzdGlvbjtcbiAgICAgIGlmICh0aGlzLnNlY3VyaXR5UXVlc3Rpb24gPT09IG51bGwpIHtcbiAgICAgICAgIHRoaXMuc2VjdXJpdHlRdWVzdGlvbiA9IHsgcXVlc3Rpb25JRDonJywgcXVlc3Rpb246JycsIGFuc3dlcjonJyAgfTtcbiAgICAgIH1cbiAgICAgIHRoaXMubG9hZGluZ1F1ZXN0aW9uID0gZmFsc2U7XG5cbiAgICAgIGlmICghdGhpcy5zZWN1cml0eVF1ZXN0aW9uKSB7XG4gICAgICAgIHRoaXMuZXJyb3JNZXNzYWdlID0gJ1RoZXJlIGlzIG5vIFBJTiBlbmFibGVkIGZvciB5b3VyIGFjY291bnQuICcgKyBcbiAgICAgICAgJ1RvIGNvbnRpbnVlLCB5b3UgbXVzdCBmaXJzdCByZXF1ZXN0IGEgUElOIGJ5IHNlbGVjdGluZyB0aGUgXCJSZXF1ZXN0IE5ldyBQSU5cIiBvcHRpb24gZnJvbSB0aGUgZUJ1c2luZXNzIENlbnRlciBcIk15IEFjY291bnRcIiBtZW51Lic7XG4gICAgICB9XG4gICAgfSwgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignQ291bGQgbm90IHJldHJpZXZlIHNlY3VyaXR5IHF1ZXN0aW9uOicgKyBKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICB9KTtcblxuICB9XG5cbn1cbiIsIjxmb3JtIFtmb3JtR3JvdXBdPVwib2VwYVN1Ym1pc3Npb25Gb3JtXCI+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG5cbiAgICA8ZGl2IFtoaWRkZW5dPVwibm9QaW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIiAqbmdJZj1cInBpbkF0dGVzdGF0aW9uLnRleHRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWxsXCIgW2lubmVySFRNTF09XCJwaW5BdHRlc3RhdGlvbi50ZXh0XCI+PC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxicj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJkLWhlYWRlclwiICpuZ0lmPVwic2VydmljZUF0dGVzdGF0aW9uXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwic2VydmljZUF0dGVzdGF0aW9uLnRleHRcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWxsXCIgW2lubmVySFRNTF09XCJzZXJ2aWNlQXR0ZXN0YXRpb24udGV4dFwiPlwiPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8YnI+XG5cbiAgICA8ZGl2IGNsYXNzPVwicm93XCIgKm5nSWY9XCJsb2FkaW5nQXR0ZXN0YXRpb25zXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1pbmZvXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJzcGlubmVyLWJvcmRlciB0ZXh0LXByaW1hcnlcIiByb2xlPVwic3RhdHVzXCI+PC9zcGFuPiBMb2FkaW5nIFBJTiBpbmZvcm1hdGlvbi4uLlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBbaGlkZGVuXT1cImxvYWRpbmdBdHRlc3RhdGlvbnMgfHwgbm9QaW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWwgc3R5bGU9XCJwYWRkaW5nOiA1cHg7XCI+PGI+U2VjdXJpdHkgUXVlc3Rpb246PC9iPjwvbGFiZWw+XG4gICAgICAgICAgICA8bGFiZWw+e3tzZWN1cml0eVF1ZXN0aW9uLnF1ZXN0aW9ufX08L2xhYmVsPlxuICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgPGlucHV0ICBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmICFvZXBhU3VibWlzc2lvbkZvcm0uY29udHJvbHNbJ3NlY3VyaXR5QW5zd2VyJ10udmFsaWR9XCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWN1cml0eUFuc3dlclwiIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInNlY3VyaXR5QW5zd2VyXCIgcGxhY2Vob2xkZXI9XCJBbnN3ZXJcIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic2hvd1ZhbGlkYXRpb24gJiYgIW9lcGFTdWJtaXNzaW9uRm9ybS5jb250cm9sc1snc2VjdXJpdHlBbnN3ZXInXS52YWxpZFwiPkFuc3dlciB0byBzZWN1cml0eSBxdWVzdGlvbiBpcyByZXF1aXJlZDwvc21hbGw+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMlwiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgICAgICAgICA8bGFiZWw+PGI+UElOOiA8L2I+PC9sYWJlbD5cbiAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgIDxpbnB1dCBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOnNob3dWYWxpZGF0aW9uICYmICFvZXBhU3VibWlzc2lvbkZvcm0uY29udHJvbHNbJ3NlY3VyaXR5UElOJ10udmFsaWR9XCJcbiAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJzZWN1cml0eVBJTlwiIHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgbmFtZT1cInNlY3VyaXR5UElOXCIgcGxhY2Vob2xkZXI9XCJQSU5cIiByZXF1aXJlZD5cbiAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiICpuZ0lmPVwic2hvd1ZhbGlkYXRpb24gJiYgIW9lcGFTdWJtaXNzaW9uRm9ybS5jb250cm9sc1snc2VjdXJpdHlQSU4nXS52YWxpZFwiPkEgdmFsaWQgUElOIGlzIHJlcXVpcmVkPC9zbWFsbD5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICAgIFxuICAgIDxkaXYgPlxuICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgICAgPCEtLSB0b2dnbGUgaGFzUGluIG1lc3NhZ2UgLS0+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cIm5vUGluXCI+XG4gICAgICAgICAgICA8Yj5BdHRlbnRpb246PC9iPiBCZWZvcmUgeW91IGNhbiBzdWJtaXQsIHlvdSBmaXJzdCBtdXN0IGFjdGl2YXRlIHlvdXIgUElOLiBDYW5jZWwgdGhpcyBzdWJtaXNzaW9uLCBzYXZlIHRoZSBhcHBsaWNhdGlvbi9yZXBvcnQgYW5kIGdvIGJhY2sgdG8gdGhlIG1haW4gZUJ1c2luZXNzIEhvbWUgUGFnZS4gXG4gICAgICAgICAgICBTZWxlY3QgPGI+TVkgQWNjb3VudC0gUmVxdWVzdCBOZXcgUElOPC9iPiB0byBnZXQgc3RhcnRlZC4gPGJyPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cInJvd1wiICpuZ0lmPVwiZXJyb3JNZXNzYWdlXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJhbGVydCBhbGVydC1kYW5nZXJcIiByb2xlPVwiYWxlcnRcIj57eyBlcnJvck1lc3NhZ2UgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gIDwvZGl2PlxuXG5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxzcGFuICpuZ0lmPVwic3VibWl0SW5Qcm9ncmVzcyA9PT0gdHJ1ZVwiIGlkPVwid2FpdFwiPjxzcGFuIGNsYXNzPVwic3Bpbm5lci1ib3JkZXIgdGV4dC1wcmltYXJ5XCIgcm9sZT1cInN0YXR1c1wiPjwvc3Bhbj5QbGVhc2Ugd2FpdC4uLiZuYnNwOyZuYnNwOzwvc3Bhbj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTFcIiAoY2xpY2spPVwic3VibWl0KClcIiBbZGlzYWJsZWRdPVwic3VibWl0SW5Qcm9ncmVzcyB8fCAhb2VwYVN1Ym1pc3Npb25Gb3JtLnZhbGlkXCI+U3VibWl0PC9idXR0b24+XG4gICAgPGJ1dHRvbiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtci0xXCIgKGNsaWNrKT1cImNhbmNlbCgpXCIgW2Rpc2FibGVkXT1cInN1Ym1pdEluUHJvZ3Jlc3NcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPC9kaXY+XG5cbjwvZm9ybT4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZ3Jlc3MtaW5mby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvcHJvZ3Jlc3MtaW5kaWNhdG9yL3Byb2dyZXNzLWluZm8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgUHJvZ3Jlc3NJbmZvIHtcbiAgICB0b3RhbD86IG51bWJlcjtcbiAgICBjb21wbGV0ZWQ/OiBudW1iZXI7XG59Il19
@@ -0,0 +1,96 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ohioepa/oepa-common-lib";
4
+ import * as i2 from "@angular/common";
5
+ import * as i3 from "@angular/forms";
6
+ export class SelectInputComponent {
7
+ idService;
8
+ smallService;
9
+ elRef;
10
+ componentId = 'SelectInputComponent';
11
+ group;
12
+ field = '';
13
+ tableIdx;
14
+ title = 'Select';
15
+ pickList = [];
16
+ fullList = [];
17
+ valueField = '';
18
+ displayField = '';
19
+ small = false;
20
+ onValueSelected = new EventEmitter();
21
+ internalPickList;
22
+ constructor(idService, smallService, elRef) {
23
+ this.idService = idService;
24
+ this.smallService = smallService;
25
+ this.elRef = elRef;
26
+ }
27
+ ngOnInit() {
28
+ this.small = this.smallService.isSmall(this.elRef.nativeElement);
29
+ if (this.group) {
30
+ this.componentId = (this.field || 'selectInput') + (this.tableIdx || this.tableIdx === 0 ? this.tableIdx : '');
31
+ this.group.get(this.field)?.valueChanges.subscribe(value => {
32
+ this.onValueSelected.emit(value);
33
+ });
34
+ this.addCurrentValueToListIfMissing();
35
+ }
36
+ }
37
+ ngOnChanges(changes) {
38
+ for (const propName in changes) {
39
+ if (changes.hasOwnProperty(propName)) {
40
+ switch (propName) {
41
+ case 'pickList':
42
+ case 'fullList':
43
+ this.addCurrentValueToListIfMissing();
44
+ break;
45
+ }
46
+ }
47
+ }
48
+ }
49
+ addCurrentValueToListIfMissing() {
50
+ let currValue = this.group.get(this.field)?.value;
51
+ if (!this.internalPickList && this.pickList && this.pickList.length > 0) {
52
+ this.internalPickList = Object.assign([], this.pickList);
53
+ }
54
+ if (currValue && this.pickList && this.pickList.length > 0 && this.fullList && this.fullList.length > 0) {
55
+ this.internalPickList = Object.assign([], this.pickList);
56
+ let matches = this.pickList.filter(item => {
57
+ return (item[this.valueField] === currValue);
58
+ });
59
+ if (!matches || matches.length === 0 && this.fullList) {
60
+ let inactiveItems = this.fullList.filter(item => {
61
+ return (item[this.valueField] === currValue);
62
+ });
63
+ if (inactiveItems && inactiveItems.length > 0) {
64
+ this.internalPickList.push(inactiveItems[0]);
65
+ }
66
+ }
67
+ }
68
+ }
69
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectInputComponent, deps: [{ token: i1.OepaComponentIdService }, { token: i1.OepaSmallService }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
70
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: SelectInputComponent, selector: "oepa-select-input", inputs: { group: "group", field: "field", tableIdx: "tableIdx", title: "title", pickList: "pickList", fullList: "fullList", valueField: "valueField", displayField: "displayField", small: "small" }, outputs: { onValueSelected: "onValueSelected" }, usesOnChanges: true, ngImport: i0, template: "<div [formGroup]=\"group\">\n<select class=\"form-select\" [formControlName]=\"field\" [ngClass]=\"{'is-invalid':group.controls[field].invalid, 'form-control-sm': small}\" \n [id]=\"componentId\">\n<option *ngFor=\"let item of internalPickList\" [ngValue]=\"item[valueField]\">{{item[displayField]}}</option>\n</select>\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i3.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }] });
71
+ }
72
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: SelectInputComponent, decorators: [{
73
+ type: Component,
74
+ args: [{ selector: 'oepa-select-input', template: "<div [formGroup]=\"group\">\n<select class=\"form-select\" [formControlName]=\"field\" [ngClass]=\"{'is-invalid':group.controls[field].invalid, 'form-control-sm': small}\" \n [id]=\"componentId\">\n<option *ngFor=\"let item of internalPickList\" [ngValue]=\"item[valueField]\">{{item[displayField]}}</option>\n</select>\n<small class=\"invalid-feedback\" *ngIf=\"group.controls[field].invalid\">{{title}} is required</small>\n</div>\n" }]
75
+ }], ctorParameters: () => [{ type: i1.OepaComponentIdService }, { type: i1.OepaSmallService }, { type: i0.ElementRef }], propDecorators: { group: [{
76
+ type: Input
77
+ }], field: [{
78
+ type: Input
79
+ }], tableIdx: [{
80
+ type: Input
81
+ }], title: [{
82
+ type: Input
83
+ }], pickList: [{
84
+ type: Input
85
+ }], fullList: [{
86
+ type: Input
87
+ }], valueField: [{
88
+ type: Input
89
+ }], displayField: [{
90
+ type: Input
91
+ }], small: [{
92
+ type: Input
93
+ }], onValueSelected: [{
94
+ type: Output
95
+ }] } });
96
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvc2VsZWN0LWlucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3NlbGVjdC1pbnB1dC9zZWxlY3QtaW5wdXQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBd0MsTUFBTSxlQUFlLENBQUM7Ozs7O0FBU3JILE1BQU0sT0FBTyxvQkFBb0I7SUFnQlg7SUFDVjtJQUNBO0lBakJILFdBQVcsR0FBRyxzQkFBc0IsQ0FBQztJQUNuQyxLQUFLLENBQWE7SUFDbEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixRQUFRLENBQXFCO0lBQzdCLEtBQUssR0FBRyxRQUFRLENBQUM7SUFDakIsUUFBUSxHQUFVLEVBQUUsQ0FBQztJQUNyQixRQUFRLEdBQVUsRUFBRSxDQUFDO0lBQ3JCLFVBQVUsR0FBVyxFQUFFLENBQUM7SUFDeEIsWUFBWSxHQUFXLEVBQUUsQ0FBQztJQUMxQixLQUFLLEdBQUcsS0FBSyxDQUFDO0lBRWIsZUFBZSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO0lBRXRFLGdCQUFnQixDQUFvQjtJQUUzQyxZQUFvQixTQUFpQyxFQUMzQyxZQUE4QixFQUM5QixLQUFpQjtRQUZQLGNBQVMsR0FBVCxTQUFTLENBQXdCO1FBQzNDLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixVQUFLLEdBQUwsS0FBSyxDQUFZO0lBQzNCLENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFD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LG9CQUFvQjs0RkFBcEIsb0JBQW9CLHFVQ1RqQyxvYkFPQTs7NEZERWEsb0JBQW9CO2tCQUxoQyxTQUFTOytCQUNFLG1CQUFtQjttSkFNcEIsS0FBSztzQkFBYixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFFSSxlQUFlO3NCQUF4QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIElucHV0LCBPdXRwdXQsIEV2ZW50RW1pdHRlciwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBFbGVtZW50UmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBPZXBhQ29tcG9uZW50SWRTZXJ2aWNlLCBPZXBhU21hbGxTZXJ2aWNlIH0gZnJvbSAnQG9oaW9lcGEvb2VwYS1jb21tb24tbGliJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnb2VwYS1zZWxlY3QtaW5wdXQnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LWlucHV0LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vc2VsZWN0LWlucHV0LmNvbXBvbmVudC5jc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBTZWxlY3RJbnB1dENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgcHVibGljIGNvbXBvbmVudElkID0gJ1NlbGVjdElucHV0Q29tcG9uZW50JztcbiAgQElucHV0KCkgZ3JvdXAhOiBGb3JtR3JvdXA7XG4gIEBJbnB1dCgpIGZpZWxkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgdGFibGVJZHg6IG51bWJlciB8IHVuZGVmaW5lZDtcbiAgQElucHV0KCkgdGl0bGUgPSAnU2VsZWN0JztcbiAgQElucHV0KCkgcGlja0xpc3Q6IGFueVtdID0gW107XG4gIEBJbnB1dCgpIGZ1bGxMaXN0OiBhbnlbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZUZpZWxkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgZGlzcGxheUZpZWxkOiBzdHJpbmcgPSAnJztcbiAgQElucHV0KCkgc21hbGwgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgb25WYWx1ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHB1YmxpYyBpbnRlcm5hbFBpY2tMaXN0OiBhbnlbXSB8IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGlkU2VydmljZTogT2VwYUNvbXBvbmVudElkU2VydmljZSwgXG4gICAgcHJpdmF0ZSBzbWFsbFNlcnZpY2U6IE9lcGFTbWFsbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBlbFJlZjogRWxlbWVudFJlZikgeyBcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuc21hbGwgPSB0aGlzLnNtYWxsU2VydmljZS5pc1NtYWxsKHRoaXMuZWxSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgIHRoaXMuY29tcG9uZW50SWQgPSAodGhpcy5maWVsZCB8fCAnc2VsZWN0SW5wdXQnKSArICh0aGlzLnRhYmxlSWR4IHx8IHRoaXMudGFibGVJZHggPT09IDAgPyB0aGlzLnRhYmxlSWR4IDogJycpO1xuICAgICAgdGhpcy5ncm91cC5nZXQodGhpcy5maWVsZCk/LnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgICB0aGlzLm9uVmFsdWVTZWxlY3RlZC5lbWl0KHZhbHVlKTtcbiAgICAgIH0pO1xuICAgICAgdGhpcy5hZGRDdXJyZW50VmFsdWVUb0xpc3RJZk1pc3NpbmcoKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKSB7XG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBpbiBjaGFuZ2VzKSB7XG4gICAgICBpZiAoY2hhbmdlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgc3dpdGNoIChwcm9wTmFtZSkge1xuICAgICAgICAgIGNhc2UgJ3BpY2tMaXN0JzpcbiAgICAgICAgICBjYXNlICdmdWxsTGlzdCc6XG4gICAgICAgICAgICB0aGlzLmFkZEN1cnJlbnRWYWx1ZVRvTGlzdElmTWlzc2luZygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0gXG5cbiAgcHJpdmF0ZSBhZGRDdXJyZW50VmFsdWVUb0xpc3RJZk1pc3NpbmcoKSB7XG4gICAgbGV0IGN1cnJWYWx1ZSA9IHRoaXMuZ3JvdXAuZ2V0KHRoaXMuZmllbGQpPy52YWx1ZTtcbiAgICBpZiAoIXRoaXMuaW50ZXJuYWxQaWNrTGlzdCAmJiB0aGlzLnBpY2tMaXN0ICYmIHRoaXMucGlja0xpc3QubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5pbnRlcm5hbFBpY2tMaXN0ID0gT2JqZWN0LmFzc2lnbihbXSwgdGhpcy5waWNrTGlzdCk7XG4gICAgfVxuICAgIGlmIChjdXJyVmFsdWUgJiYgdGhpcy5waWNrTGlzdCAmJiB0aGlzLnBpY2tMaXN0Lmxlbmd0aCA+IDAgJiYgdGhpcy5mdWxsTGlzdCAmJiB0aGlzLmZ1bGxMaXN0Lmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaW50ZXJuYWxQaWNrTGlzdCA9IE9iamVjdC5hc3NpZ24oW10sIHRoaXMucGlja0xpc3QpO1xuICAgICAgbGV0IG1hdGNoZXMgPSB0aGlzLnBpY2tMaXN0LmZpbHRlcihpdGVtID0+IHtcbiAgICAgICAgcmV0dXJuIChpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT09IGN1cnJWYWx1ZSk7XG4gICAgICB9KTtcbiAgICAgIGlmICghbWF0Y2hlcyB8fCBtYXRjaGVzLmxlbmd0aCA9PT0gMCAmJiB0aGlzLmZ1bGxMaXN0KSB7XG4gICAgICAgIGxldCBpbmFjdGl2ZUl0ZW1zID0gdGhpcy5mdWxsTGlzdC5maWx0ZXIoaXRlbSA9PiB7XG4gICAgICAgICAgcmV0dXJuIChpdGVtW3RoaXMudmFsdWVGaWVsZF0gPT09IGN1cnJWYWx1ZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoaW5hY3RpdmVJdGVtcyAmJiBpbmFjdGl2ZUl0ZW1zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICB0aGlzLmludGVybmFsUGlja0xpc3QucHVzaChpbmFjdGl2ZUl0ZW1zWzBdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG59XG4iLCI8ZGl2IFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbjxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGRcIiBbbmdDbGFzc109XCJ7J2lzLWludmFsaWQnOmdyb3VwLmNvbnRyb2xzW2ZpZWxkXS5pbnZhbGlkLCAnZm9ybS1jb250cm9sLXNtJzogc21hbGx9XCIgXG4gW2lkXT1cImNvbXBvbmVudElkXCI+XG48b3B0aW9uICpuZ0Zvcj1cImxldCBpdGVtIG9mIGludGVybmFsUGlja0xpc3RcIiBbbmdWYWx1ZV09XCJpdGVtW3ZhbHVlRmllbGRdXCI+e3tpdGVtW2Rpc3BsYXlGaWVsZF19fTwvb3B0aW9uPlxuPC9zZWxlY3Q+XG48c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCIgKm5nSWY9XCJncm91cC5jb250cm9sc1tmaWVsZF0uaW52YWxpZFwiPnt7dGl0bGV9fSBpcyByZXF1aXJlZDwvc21hbGw+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,63 @@
1
+ import { Component, Output, EventEmitter, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@ohioepa/oepa-common-lib";
4
+ import * as i2 from "ngx-bootstrap/modal";
5
+ import * as i3 from "@angular/common";
6
+ export class ServerTimeoutModalComponent {
7
+ userAccountService;
8
+ bsModalRef;
9
+ mm = '01';
10
+ ss = '00';
11
+ errorMessage = '';
12
+ connectionLost = false;
13
+ timeoutID;
14
+ countdownSeconds = 60;
15
+ onKeepAlive = new EventEmitter();
16
+ constructor(userAccountService, bsModalRef) {
17
+ this.userAccountService = userAccountService;
18
+ this.bsModalRef = bsModalRef;
19
+ }
20
+ ngOnInit() {
21
+ this.setMMSS();
22
+ this.tick();
23
+ }
24
+ setMMSS() {
25
+ let minutes = Math.floor(this.countdownSeconds / 60);
26
+ let seconds = this.countdownSeconds % 60;
27
+ this.mm = (minutes < 10) ? ('0' + minutes) : ('' + minutes);
28
+ this.ss = (seconds < 10) ? ('0' + seconds) : ('' + seconds);
29
+ }
30
+ tick() {
31
+ let me = this;
32
+ this.timeoutID = setTimeout(() => {
33
+ me.countdownSeconds--;
34
+ me.setMMSS();
35
+ if (this.countdownSeconds > 0) {
36
+ me.tick();
37
+ }
38
+ else {
39
+ me.connectionLost = true;
40
+ me.userAccountService.redirectToLogout();
41
+ }
42
+ }, 1000);
43
+ }
44
+ keepAlive() {
45
+ clearTimeout(this.timeoutID);
46
+ this.onKeepAlive.emit(true);
47
+ this.bsModalRef.hide();
48
+ }
49
+ close() {
50
+ this.bsModalRef.hide();
51
+ }
52
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ServerTimeoutModalComponent, deps: [{ token: i1.OepaUserAccountService }, { token: i2.BsModalRef }], target: i0.ɵɵFactoryTarget.Component });
53
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ServerTimeoutModalComponent, selector: "oepa-server-timeout-modal", inputs: { countdownSeconds: "countdownSeconds" }, outputs: { onKeepAlive: "onKeepAlive" }, ngImport: i0, template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">\n <span>Connection Timeout</span>\n <span *ngIf=\"!connectionLost\">&nbsp;Pending</span>\n </h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"close()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div *ngIf=\"!connectionLost\">\n Your connection is about to time out: {{mm}}:{{ss}}\n <!-- : <countdown [config]=\"config\" (event)=\"handleEvent($event)\"></countdown> -->\n <br/>\n Click the button below to keep from being logged out.\n </div>\n <div *ngIf=\"connectionLost\">\n Connection timeout.\n </div>\n </div>\n <div class=\"modal-footer\">\n <div class=\"row\">\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n </div>\n <div class=\"col-sm-12 text-right\">\n <button *ngIf=\"!connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"keepAlive()\">Stay Logged In</button>\n <button *ngIf=\"connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"close()\">Close</button>\n </div>\n </div>\n", styles: [""], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] });
54
+ }
55
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ServerTimeoutModalComponent, decorators: [{
56
+ type: Component,
57
+ args: [{ selector: 'oepa-server-timeout-modal', template: "<div class=\"modal-header\">\n <h4 class=\"modal-title pull-left\">\n <span>Connection Timeout</span>\n <span *ngIf=\"!connectionLost\">&nbsp;Pending</span>\n </h4>\n <button type=\"button\" class=\"close pull-right\" aria-label=\"Close\" (click)=\"close()\">\n <span aria-hidden=\"true\">&times;</span>\n </button>\n </div>\n <div class=\"modal-body\">\n <div *ngIf=\"!connectionLost\">\n Your connection is about to time out: {{mm}}:{{ss}}\n <!-- : <countdown [config]=\"config\" (event)=\"handleEvent($event)\"></countdown> -->\n <br/>\n Click the button below to keep from being logged out.\n </div>\n <div *ngIf=\"connectionLost\">\n Connection timeout.\n </div>\n </div>\n <div class=\"modal-footer\">\n <div class=\"row\">\n <div *ngIf=\"errorMessage\" class=\"col-sm-12\">\n <div class=\"alert alert-danger\">\n {{errorMessage}}\n </div>\n </div>\n </div>\n <div class=\"col-sm-12 text-right\">\n <button *ngIf=\"!connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"keepAlive()\">Stay Logged In</button>\n <button *ngIf=\"connectionLost\" type=\"button\" class=\"btn btn-primary mr-2\" (click)=\"close()\">Close</button>\n </div>\n </div>\n" }]
58
+ }], ctorParameters: () => [{ type: i1.OepaUserAccountService }, { type: i2.BsModalRef }], propDecorators: { countdownSeconds: [{
59
+ type: Input
60
+ }], onKeepAlive: [{
61
+ type: Output
62
+ }] } });
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmVyLXRpbWVvdXQtbW9kYWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvb2VwYS11aS1saWIvc3JjL2xpYi9zZXJ2ZXItdGltZW91dC1tb2RhbC9zZXJ2ZXItdGltZW91dC1tb2RhbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3NlcnZlci10aW1lb3V0LW1vZGFsL3NlcnZlci10aW1lb3V0LW1vZGFsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBUy9FLE1BQU0sT0FBTywyQkFBMkI7SUFXbEI7SUFDWDtJQVhGLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDVixFQUFFLEdBQUcsSUFBSSxDQUFDO0lBQ1YsWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUNsQixjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3RCLFNBQVMsQ0FBTTtJQUVkLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztJQUVyQixXQUFXLEdBQTBCLElBQUksWUFBWSxFQUFXLENBQUM7SUFFM0UsWUFBb0Isa0JBQTBDLEVBQ3JELFVBQXNCO1FBRFgsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUF3QjtRQUNyRCxlQUFVLEdBQVYsVUFBVSxDQUFZO0lBQUksQ0FBQztJQUVwQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2YsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVPLE9BQU87UUFDYixJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRCxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVPLElBQUk7UUFDVixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUU7WUFDL0IsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDdEIsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNaLENBQUM7aUJBQU0sQ0FBQztnQkFDTixFQUFFLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztnQkFDekIsRUFBRSxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDM0MsQ0FBQztRQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNYLENBQUM7SUFFTSxTQUFTO1FBQ2QsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFTSxLQUFLO1FBQ1YsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN6QixDQUFDO3dHQWhEVSwyQkFBMkI7NEZBQTNCLDJCQUEyQiw0SkNUeEMseXpDQWlDQTs7NEZEeEJhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSwyQkFBMkI7b0hBVzVCLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2VwYVVzZXJBY2NvdW50U2VydmljZSB9IGZyb20gJ0BvaGlvZXBhL29lcGEtY29tbW9uLWxpYic7XG5pbXBvcnQgeyBCc01vZGFsUmVmIH0gZnJvbSAnbmd4LWJvb3RzdHJhcC9tb2RhbCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtc2VydmVyLXRpbWVvdXQtbW9kYWwnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VydmVyLXRpbWVvdXQtbW9kYWwuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZXJ2ZXItdGltZW91dC1tb2RhbC5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2VydmVyVGltZW91dE1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHVibGljIG1tID0gJzAxJztcbiAgcHVibGljIHNzID0gJzAwJztcbiAgcHVibGljIGVycm9yTWVzc2FnZSA9ICcnO1xuICBwdWJsaWMgY29ubmVjdGlvbkxvc3QgPSBmYWxzZTtcbiAgcHJpdmF0ZSB0aW1lb3V0SUQ6IGFueTtcbiAgXG4gIEBJbnB1dCgpIGNvdW50ZG93blNlY29uZHMgPSA2MDtcblxuICBAT3V0cHV0KCkgb25LZWVwQWxpdmU6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHVzZXJBY2NvdW50U2VydmljZTogT2VwYVVzZXJBY2NvdW50U2VydmljZSxcbiAgICBwdWJsaWMgYnNNb2RhbFJlZjogQnNNb2RhbFJlZikgeyB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5zZXRNTVNTKCk7XG4gICAgdGhpcy50aWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHNldE1NU1MoKSB7XG4gICAgbGV0IG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRoaXMuY291bnRkb3duU2Vjb25kcy82MCk7XG4gICAgbGV0IHNlY29uZHMgPSB0aGlzLmNvdW50ZG93blNlY29uZHMgJSA2MDtcbiAgICB0aGlzLm1tID0gKG1pbnV0ZXMgPCAxMCkgPyAoJzAnK21pbnV0ZXMpIDogKCcnK21pbnV0ZXMpO1xuICAgIHRoaXMuc3MgPSAoc2Vjb25kcyA8IDEwKSA/ICgnMCcrc2Vjb25kcykgOiAoJycrc2Vjb25kcyk7XG4gIH1cblxuICBwcml2YXRlIHRpY2soKSB7XG4gICAgbGV0IG1lID0gdGhpcztcbiAgICB0aGlzLnRpbWVvdXRJRCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgbWUuY291bnRkb3duU2Vjb25kcy0tO1xuICAgICAgbWUuc2V0TU1TUygpO1xuICAgICAgaWYgKHRoaXMuY291bnRkb3duU2Vjb25kcyA+IDApIHtcbiAgICAgICAgbWUudGljaygpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWUuY29ubmVjdGlvbkxvc3QgPSB0cnVlO1xuICAgICAgICBtZS51c2VyQWNjb3VudFNlcnZpY2UucmVkaXJlY3RUb0xvZ291dCgpO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9XG5cbiAgcHVibGljIGtlZXBBbGl2ZSgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy50aW1lb3V0SUQpO1xuICAgIHRoaXMub25LZWVwQWxpdmUuZW1pdCh0cnVlKTtcbiAgICB0aGlzLmJzTW9kYWxSZWYuaGlkZSgpO1xuICB9XG5cbiAgcHVibGljIGNsb3NlKCkge1xuICAgIHRoaXMuYnNNb2RhbFJlZi5oaWRlKCk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cIm1vZGFsLWhlYWRlclwiPlxuICAgIDxoNCBjbGFzcz1cIm1vZGFsLXRpdGxlIHB1bGwtbGVmdFwiPlxuICAgICAgICA8c3Bhbj5Db25uZWN0aW9uIFRpbWVvdXQ8L3NwYW4+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiIWNvbm5lY3Rpb25Mb3N0XCI+Jm5ic3A7UGVuZGluZzwvc3Bhbj5cbiAgICA8L2g0PlxuICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiY2xvc2UgcHVsbC1yaWdodFwiIGFyaWEtbGFiZWw9XCJDbG9zZVwiIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPVwidHJ1ZVwiPiZ0aW1lczs8L3NwYW4+XG4gICAgICA8L2J1dHRvbj5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJtb2RhbC1ib2R5XCI+XG4gICAgPGRpdiAqbmdJZj1cIiFjb25uZWN0aW9uTG9zdFwiPlxuICAgICAgICBZb3VyIGNvbm5lY3Rpb24gaXMgYWJvdXQgdG8gdGltZSBvdXQ6IHt7bW19fTp7e3NzfX1cbiAgICAgICAgPCEtLSA6IDxjb3VudGRvd24gW2NvbmZpZ109XCJjb25maWdcIiAoZXZlbnQpPVwiaGFuZGxlRXZlbnQoJGV2ZW50KVwiPjwvY291bnRkb3duPiAtLT5cbiAgICAgICAgPGJyLz5cbiAgICAgICAgQ2xpY2sgdGhlIGJ1dHRvbiBiZWxvdyB0byBrZWVwIGZyb20gYmVpbmcgbG9nZ2VkIG91dC5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2ICpuZ0lmPVwiY29ubmVjdGlvbkxvc3RcIj5cbiAgICAgICAgQ29ubmVjdGlvbiB0aW1lb3V0LlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1vZGFsLWZvb3RlclwiPlxuICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZVwiIGNsYXNzPVwiY29sLXNtLTEyXCI+XG4gICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImFsZXJ0IGFsZXJ0LWRhbmdlclwiPlxuICAgICAgICAgICAgICAgIHt7ZXJyb3JNZXNzYWdlfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwiY29sLXNtLTEyIHRleHQtcmlnaHRcIj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cIiFjb25uZWN0aW9uTG9zdFwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSBtci0yXCIgKGNsaWNrKT1cImtlZXBBbGl2ZSgpXCI+U3RheSBMb2dnZWQgSW48L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiAqbmdJZj1cImNvbm5lY3Rpb25Mb3N0XCIgdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IG1yLTJcIiAoY2xpY2spPVwiY2xvc2UoKVwiPkNsb3NlPC9idXR0b24+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuIl19
@@ -0,0 +1,54 @@
1
+ import { Component, Input, Output, EventEmitter } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "../shopping-cart.service";
4
+ import * as i2 from "ngx-toastr";
5
+ import * as i3 from "@angular/common";
6
+ export class ShoppingCartSummaryComponent {
7
+ shoppingCartService;
8
+ toastr;
9
+ serviceName = '';
10
+ cartChange = new EventEmitter();
11
+ itemsText = '';
12
+ totalCost = 0;
13
+ constructor(shoppingCartService, toastr) {
14
+ this.shoppingCartService = shoppingCartService;
15
+ this.toastr = toastr;
16
+ }
17
+ ngOnInit() {
18
+ this.loadCart();
19
+ }
20
+ loadCart() {
21
+ this.itemsText = 'Loading...';
22
+ this.totalCost = 0;
23
+ this.shoppingCartService.retrieveShoppingCart(this.serviceName).subscribe({
24
+ next: shoppingCart => {
25
+ if (shoppingCart && shoppingCart.cartItems) {
26
+ if (shoppingCart.cartItems.length === 1) {
27
+ this.itemsText = 'One item';
28
+ }
29
+ else if (shoppingCart.cartItems.length > 1) {
30
+ this.itemsText = shoppingCart.cartItems.length + ' items';
31
+ }
32
+ }
33
+ else {
34
+ this.itemsText = 'No items';
35
+ }
36
+ this.cartChange.emit(shoppingCart);
37
+ this.totalCost = shoppingCart.totalAmount?.amount;
38
+ }, error: err => {
39
+ this.toastr.error('Failed retrieving shopping cart: ' + err);
40
+ }
41
+ });
42
+ }
43
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShoppingCartSummaryComponent, deps: [{ token: i1.ShoppingCartService }, { token: i2.ToastrService }], target: i0.ɵɵFactoryTarget.Component });
44
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: ShoppingCartSummaryComponent, selector: "oepa-shopping-cart-summary", inputs: { serviceName: "serviceName" }, outputs: { cartChange: "cartChange" }, ngImport: i0, template: "<div class=\"cart-summary\">\n <div class=\"cart-summary-icon\">\n <svg version=\"1.1\" class=\"summary-icon\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\">\n <path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" fill=\"none\" stroke-linejoin=\"round\"\n d=\"M2,4 L6,4 L10,20 L21,20 L25,10 L8,10 M13,10 L13,20 M18,20 L18,10 M10,15 L23,15\"/>\n <circle fill=\"currentColor\" cx=\"11\" cy=\"24\" r=\"2\"/>\n <circle fill=\"currentColor\" cx=\"21\" cy=\"24\" r=\"2\"/>\n </svg>\n </div>\n <div class=\"cart-summary-contents\">\n <div class=\"cart-summary-items\">\n {{itemsText}}\n </div>\n <div class=\"cart-summary-cost\">\n {{totalCost | currency}}\n </div>\n </div>\n </div>\n", styles: [".cart-summary{display:inline-block}.cart-summary-icon{float:left;width:32px;height:32px}img.summary-icon{width:100%;height:100%;object-fit:cover}.cart-summary-contents{padding-left:5px;float:left;font-size:.75}\n"], dependencies: [{ kind: "pipe", type: i3.CurrencyPipe, name: "currency" }] });
45
+ }
46
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: ShoppingCartSummaryComponent, decorators: [{
47
+ type: Component,
48
+ args: [{ selector: 'oepa-shopping-cart-summary', template: "<div class=\"cart-summary\">\n <div class=\"cart-summary-icon\">\n <svg version=\"1.1\" class=\"summary-icon\" xmlns=\"http://www.w3.org/2000/svg\"\n xmlns:xlink=\"http://www.w3.org/1999/xlink\" viewBox=\"0 0 32 32\">\n <path stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" fill=\"none\" stroke-linejoin=\"round\"\n d=\"M2,4 L6,4 L10,20 L21,20 L25,10 L8,10 M13,10 L13,20 M18,20 L18,10 M10,15 L23,15\"/>\n <circle fill=\"currentColor\" cx=\"11\" cy=\"24\" r=\"2\"/>\n <circle fill=\"currentColor\" cx=\"21\" cy=\"24\" r=\"2\"/>\n </svg>\n </div>\n <div class=\"cart-summary-contents\">\n <div class=\"cart-summary-items\">\n {{itemsText}}\n </div>\n <div class=\"cart-summary-cost\">\n {{totalCost | currency}}\n </div>\n </div>\n </div>\n", styles: [".cart-summary{display:inline-block}.cart-summary-icon{float:left;width:32px;height:32px}img.summary-icon{width:100%;height:100%;object-fit:cover}.cart-summary-contents{padding-left:5px;float:left;font-size:.75}\n"] }]
49
+ }], ctorParameters: () => [{ type: i1.ShoppingCartService }, { type: i2.ToastrService }], propDecorators: { serviceName: [{
50
+ type: Input
51
+ }], cartChange: [{
52
+ type: Output
53
+ }] } });
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC1zdW1tYXJ5LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvc2hvcHBpbmctY2FydC9zaG9wcGluZy1jYXJ0LXN1bW1hcnkvc2hvcHBpbmctY2FydC1zdW1tYXJ5LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL29lcGEtdWktbGliL3NyYy9saWIvc2hvcHBpbmctY2FydC9zaG9wcGluZy1jYXJ0LXN1bW1hcnkvc2hvcHBpbmctY2FydC1zdW1tYXJ5LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsS0FBSyxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxlQUFlLENBQUM7Ozs7O0FBVS9FLE1BQU0sT0FBTyw0QkFBNEI7SUFRbkI7SUFBa0Q7SUFON0QsV0FBVyxHQUFXLEVBQUUsQ0FBQztJQUN4QixVQUFVLEdBQStCLElBQUksWUFBWSxFQUFnQixDQUFDO0lBRXBGLFNBQVMsR0FBVyxFQUFFLENBQUM7SUFDdkIsU0FBUyxHQUF1QixDQUFDLENBQUM7SUFFbEMsWUFBb0IsbUJBQXdDLEVBQVUsTUFBcUI7UUFBdkUsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFxQjtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7SUFBSSxDQUFDO0lBRWhHLFFBQVE7UUFDTixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQztJQUVPLFFBQVE7UUFDZCxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQztRQUM5QixJQUFJLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQztRQUNuQixJQUFJLENBQUMsbUJBQW1CLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN4RSxJQUFJLEVBQUUsWUFBWSxDQUFDLEVBQUU7Z0JBQ3JCLElBQUksWUFBWSxJQUFJLFlBQVksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDM0MsSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUM7b0JBQzlCLENBQUM7eUJBQU0sSUFBSSxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQzt3QkFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxRQUFRLENBQUM7b0JBQzVELENBQUM7Z0JBQ0gsQ0FBQztxQkFBTSxDQUFDO29CQUNOLElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO2dCQUM5QixDQUFDO2dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO2dCQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDO1lBQ3BELENBQUMsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ2QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsbUNBQW1DLEdBQUcsR0FBRyxDQUFDLENBQUM7WUFDL0QsQ0FBQztTQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7d0dBakNVLDRCQUE0Qjs0RkFBNUIsNEJBQTRCLGlKQ1Z6Qyw2MUJBbUJBOzs0RkRUYSw0QkFBNEI7a0JBTHhDLFNBQVM7K0JBQ0UsNEJBQTRCO29IQU03QixXQUFXO3NCQUFuQixLQUFLO2dCQUNJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBTaG9wcGluZ0NhcnQgfSBmcm9tICdAb2hpb2VwYS9vZXBhLWViaXotbGliJ1xuaW1wb3J0IHsgU2hvcHBpbmdDYXJ0U2VydmljZSB9IGZyb20gJy4uL3Nob3BwaW5nLWNhcnQuc2VydmljZSc7XG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ29lcGEtc2hvcHBpbmctY2FydC1zdW1tYXJ5JyxcbiAgdGVtcGxhdGVVcmw6ICcuL3Nob3BwaW5nLWNhcnQtc3VtbWFyeS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Nob3BwaW5nLWNhcnQtc3VtbWFyeS5jb21wb25lbnQuY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgU2hvcHBpbmdDYXJ0U3VtbWFyeUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgQElucHV0KCkgc2VydmljZU5hbWU6IHN0cmluZyA9ICcnO1xuICBAT3V0cHV0KCkgY2FydENoYW5nZTogRXZlbnRFbWl0dGVyPFNob3BwaW5nQ2FydD4gPSBuZXcgRXZlbnRFbWl0dGVyPFNob3BwaW5nQ2FydD4oKTtcbiBcbiAgaXRlbXNUZXh0OiBzdHJpbmcgPSAnJztcbiAgdG90YWxDb3N0OiBudW1iZXIgfCB1bmRlZmluZWQgPSAwO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2hvcHBpbmdDYXJ0U2VydmljZTogU2hvcHBpbmdDYXJ0U2VydmljZSwgcHJpdmF0ZSB0b2FzdHI6IFRvYXN0clNlcnZpY2UpIHsgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMubG9hZENhcnQoKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZENhcnQoKSB7XG4gICAgdGhpcy5pdGVtc1RleHQgPSAnTG9hZGluZy4uLic7XG4gICAgdGhpcy50b3RhbENvc3QgPSAwO1xuICAgIHRoaXMuc2hvcHBpbmdDYXJ0U2VydmljZS5yZXRyaWV2ZVNob3BwaW5nQ2FydCh0aGlzLnNlcnZpY2VOYW1lKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogc2hvcHBpbmdDYXJ0ID0+IHtcbiAgICAgIGlmIChzaG9wcGluZ0NhcnQgJiYgc2hvcHBpbmdDYXJ0LmNhcnRJdGVtcykge1xuICAgICAgICBpZiAoc2hvcHBpbmdDYXJ0LmNhcnRJdGVtcy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICB0aGlzLml0ZW1zVGV4dCA9ICdPbmUgaXRlbSc7XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvcHBpbmdDYXJ0LmNhcnRJdGVtcy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdGhpcy5pdGVtc1RleHQgPSBzaG9wcGluZ0NhcnQuY2FydEl0ZW1zLmxlbmd0aCArICcgaXRlbXMnO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLml0ZW1zVGV4dCA9ICdObyBpdGVtcyc7XG4gICAgICB9XG4gICAgICB0aGlzLmNhcnRDaGFuZ2UuZW1pdChzaG9wcGluZ0NhcnQpO1xuICAgICAgdGhpcy50b3RhbENvc3QgPSBzaG9wcGluZ0NhcnQudG90YWxBbW91bnQ/LmFtb3VudDtcbiAgICB9LCBlcnJvcjogZXJyID0+IHtcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKCdGYWlsZWQgcmV0cmlldmluZyBzaG9wcGluZyBjYXJ0OiAnICsgZXJyKTtcbiAgICB9fSk7XG4gIH1cblxufVxuIiwiPGRpdiBjbGFzcz1cImNhcnQtc3VtbWFyeVwiPlxuICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXN1bW1hcnktaWNvblwiPlxuICAgICAgPHN2ZyB2ZXJzaW9uPVwiMS4xXCIgY2xhc3M9XCJzdW1tYXJ5LWljb25cIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgdmlld0JveD1cIjAgMCAzMiAzMlwiPlxuICAgICAgICA8cGF0aCBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2Utd2lkdGg9XCIyXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICBkPVwiTTIsNCBMNiw0IEwxMCwyMCBMMjEsMjAgTDI1LDEwIEw4LDEwIE0xMywxMCBMMTMsMjAgTTE4LDIwIEwxOCwxMCBNMTAsMTUgTDIzLDE1XCIvPlxuICAgICAgICA8Y2lyY2xlIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBjeD1cIjExXCIgY3k9XCIyNFwiIHI9XCIyXCIvPlxuICAgICAgICA8Y2lyY2xlIGZpbGw9XCJjdXJyZW50Q29sb3JcIiBjeD1cIjIxXCIgY3k9XCIyNFwiIHI9XCIyXCIvPlxuICAgICAgPC9zdmc+XG4gICAgPC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cImNhcnQtc3VtbWFyeS1jb250ZW50c1wiPlxuICAgICAgPGRpdiBjbGFzcz1cImNhcnQtc3VtbWFyeS1pdGVtc1wiPlxuICAgICAgICB7e2l0ZW1zVGV4dH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJjYXJ0LXN1bW1hcnktY29zdFwiPlxuICAgICAgICB7e3RvdGFsQ29zdCB8IGN1cnJlbmN5fX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hvcHBpbmctY2FydC12aWV3LXBhcmFtZXRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9vZXBhLXVpLWxpYi9zcmMvbGliL3Nob3BwaW5nLWNhcnQvc2hvcHBpbmctY2FydC12aWV3L3Nob3BwaW5nLWNhcnQtdmlldy1wYXJhbWV0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNob3BwaW5nQ2FydFZpZXdQYXJhbWV0ZXJzIHtcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgcmV0dXJuTGFiZWw6IHN0cmluZztcbiAgICByZXR1cm5Vcmw6IHN0cmluZztcbiAgICBpdGVtTnVtYmVyTGFiZWw6IHN0cmluZztcbiAgICBpdGVtQ2xhc3NpZmljYXRpb25MYWJlbDogc3RyaW5nO1xuICAgIGl0ZW1OYW1lTGFiZWw6IHN0cmluZztcbiAgICBpdGVtRGVzY3JpcHRpb25MYWJlbDogc3RyaW5nO1xufSJdfQ==