@energycap/components 0.42.4-esbuild.20250131-1219 → 0.42.4-esbuild.20250131-1256

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 (324) hide show
  1. package/esm2022/energycap-components.mjs +5 -0
  2. package/esm2022/lib/components.module.mjs +423 -0
  3. package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
  4. package/esm2022/lib/controls/button/button.component.mjs +106 -0
  5. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
  6. package/esm2022/lib/controls/button/copy-button.directive.mjs +28 -0
  7. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
  8. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +91 -0
  9. package/esm2022/lib/controls/calendar/calendar.component.mjs +248 -0
  10. package/esm2022/lib/controls/calendar/calendar.types.mjs +2 -0
  11. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
  12. package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
  13. package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
  14. package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
  15. package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
  16. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
  17. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
  18. package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
  19. package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
  20. package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
  21. package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
  22. package/esm2022/lib/controls/date-input/date-input.component.mjs +464 -0
  23. package/esm2022/lib/controls/date-input/date-input.types.mjs +44 -0
  24. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
  25. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
  26. package/esm2022/lib/controls/form-control/form-control.component.mjs +98 -0
  27. package/esm2022/lib/controls/form-control-base.mjs +151 -0
  28. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  29. package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
  30. package/esm2022/lib/controls/help-popover/help-popover.component.mjs +31 -0
  31. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
  32. package/esm2022/lib/controls/link-button/link-button.component.mjs +11 -0
  33. package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
  34. package/esm2022/lib/controls/navigation/link-item.mjs +2 -0
  35. package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
  36. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  37. package/esm2022/lib/controls/navigation/nav-item.mjs +2 -0
  38. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
  39. package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
  40. package/esm2022/lib/controls/radio-button/radio-button-option.mjs +3 -0
  41. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
  42. package/esm2022/lib/controls/select/select.component.mjs +88 -0
  43. package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
  44. package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
  45. package/esm2022/lib/core/cache.service.mjs +105 -0
  46. package/esm2022/lib/core/custom-validators.mjs +29 -0
  47. package/esm2022/lib/core/date-time-helper.mjs +228 -0
  48. package/esm2022/lib/core/error.service.mjs +61 -0
  49. package/esm2022/lib/core/router-helper.service.mjs +111 -0
  50. package/esm2022/lib/core/scroll.service.mjs +89 -0
  51. package/esm2022/lib/core/telemetry-tracker.service.mjs +16 -0
  52. package/esm2022/lib/core/telemetry.service.mjs +38 -0
  53. package/esm2022/lib/core/validation-message.service.mjs +185 -0
  54. package/esm2022/lib/core/validation-patterns.mjs +31 -0
  55. package/esm2022/lib/core/window.service.mjs +186 -0
  56. package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
  57. package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
  58. package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
  59. package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
  60. package/esm2022/lib/display/dialog/dialog-content.mjs +2 -0
  61. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  62. package/esm2022/lib/display/dialog/dialog-types.mjs +77 -0
  63. package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
  64. package/esm2022/lib/display/dialog/dialog.service.mjs +71 -0
  65. package/esm2022/lib/display/help/help-types.mjs +2 -0
  66. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
  67. package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +54 -0
  68. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
  69. package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
  70. package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
  71. package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
  72. package/esm2022/lib/display/resizable/resizable.component.mjs +57 -0
  73. package/esm2022/lib/display/spinner/spinner.component.mjs +12 -0
  74. package/esm2022/lib/display/splash/splash.component.mjs +42 -0
  75. package/esm2022/lib/display/splash/splash.service.mjs +35 -0
  76. package/esm2022/lib/display/table/resizable-column.component.mjs +20 -0
  77. package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
  78. package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
  79. package/esm2022/lib/display/table/table-detail-row.component.mjs +28 -0
  80. package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
  81. package/esm2022/lib/display/table/table-master-header-row.component.mjs +14 -0
  82. package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
  83. package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
  84. package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
  85. package/esm2022/lib/display/table/table.component.mjs +249 -0
  86. package/esm2022/lib/display/tags/tag.mjs +18 -0
  87. package/esm2022/lib/display/tags/tags.component.mjs +77 -0
  88. package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
  89. package/esm2022/lib/display/toast/toast-types.mjs +8 -0
  90. package/esm2022/lib/display/toast/toast.service.mjs +35 -0
  91. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
  92. package/esm2022/lib/display/tooltip/tooltip.component.mjs +28 -0
  93. package/esm2022/lib/display/tooltip/tooltip.service.mjs +78 -0
  94. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
  95. package/esm2022/lib/display/tour/tour-types.mjs +34 -0
  96. package/esm2022/lib/display/tour/tour.component.mjs +398 -0
  97. package/esm2022/lib/display/tour/tour.service.mjs +75 -0
  98. package/esm2022/lib/display/tree/tree.component.mjs +135 -0
  99. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  100. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  101. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  102. package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -0
  103. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
  104. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  105. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  106. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
  107. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  108. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  109. package/esm2022/lib/shared/display.mjs +6 -0
  110. package/esm2022/lib/shared/form-group.helper.mjs +67 -0
  111. package/esm2022/lib/shared/json-helper.mjs +19 -0
  112. package/esm2022/lib/shared/lodash-helper.mjs +52 -0
  113. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
  114. package/esm2022/lib/shared/page/page-statuses.mjs +23 -0
  115. package/esm2022/lib/shared/page/page-title/page-title.component.mjs +23 -0
  116. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
  117. package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +17 -0
  118. package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +17 -0
  119. package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +38 -0
  120. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
  121. package/esm2022/lib/shared/testing/public-mocks.spec.mjs +148 -0
  122. package/esm2022/lib/shared/testing/spy-factory.spec.mjs +40 -0
  123. package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +57 -0
  124. package/esm2022/lib/shared/user-preference.service.mjs +17 -0
  125. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  126. package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
  127. package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
  128. package/esm2022/public-api.mjs +117 -0
  129. package/fesm2022/energycap-components.mjs +13219 -0
  130. package/fesm2022/energycap-components.mjs.map +1 -0
  131. package/index.d.ts +5 -0
  132. package/lib/components.module.d.ts +92 -0
  133. package/lib/controls/banner/banner.component.d.ts +50 -0
  134. package/lib/controls/button/button.component.d.ts +78 -0
  135. package/lib/controls/button/copy-button-base.directive.d.ts +20 -0
  136. package/lib/controls/button/copy-button.directive.d.ts +14 -0
  137. package/lib/controls/button/copy-table-button.directive.d.ts +19 -0
  138. package/lib/controls/calendar/calendar-item.component.d.ts +22 -0
  139. package/lib/controls/calendar/calendar.component.d.ts +52 -0
  140. package/lib/controls/calendar/calendar.types.d.ts +11 -0
  141. package/lib/controls/checkbox/checkbox.component.d.ts +65 -0
  142. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -0
  143. package/lib/controls/combobox/combobox.component.d.ts +418 -0
  144. package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +42 -0
  145. package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -0
  146. package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -0
  147. package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -0
  148. package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -0
  149. package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -0
  150. package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -0
  151. package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -0
  152. package/lib/controls/date-input/date-input.component.d.ts +115 -0
  153. package/lib/controls/date-input/date-input.types.d.ts +62 -0
  154. package/lib/controls/dropdown/dropdown.component.d.ts +161 -0
  155. package/lib/controls/file-upload/file-upload.component.d.ts +124 -0
  156. package/lib/controls/form-control/form-control.component.d.ts +28 -0
  157. package/lib/controls/form-control-base.d.ts +110 -0
  158. package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -0
  159. package/lib/controls/form-group/form-group.component.d.ts +105 -0
  160. package/lib/controls/help-popover/help-popover.component.d.ts +11 -0
  161. package/lib/controls/item-picker/item-picker.component.d.ts +164 -0
  162. package/lib/controls/link-button/link-button.component.d.ts +5 -0
  163. package/lib/controls/menu/menu.component.d.ts +255 -0
  164. package/lib/controls/navigation/link-item.d.ts +32 -0
  165. package/lib/controls/navigation/nav-group.d.ts +18 -0
  166. package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -0
  167. package/lib/controls/navigation/nav-item.d.ts +31 -0
  168. package/lib/controls/numericbox/numericbox.component.d.ts +148 -0
  169. package/lib/controls/popover/popover.component.d.ts +51 -0
  170. package/lib/controls/radio-button/radio-button-option.d.ts +19 -0
  171. package/lib/controls/radio-button/radio-button.component.d.ts +53 -0
  172. package/lib/controls/select/select.component.d.ts +44 -0
  173. package/lib/controls/tabs/tabs.component.d.ts +30 -0
  174. package/lib/controls/textbox/textbox.component.d.ts +107 -0
  175. package/lib/core/cache.service.d.ts +33 -0
  176. package/lib/core/custom-validators.d.ts +20 -0
  177. package/lib/core/date-time-helper.d.ts +101 -0
  178. package/lib/core/error.service.d.ts +20 -0
  179. package/lib/core/router-helper.service.d.ts +48 -0
  180. package/lib/core/scroll.service.d.ts +36 -0
  181. package/lib/core/telemetry-tracker.service.d.ts +13 -0
  182. package/lib/core/telemetry.service.d.ts +31 -0
  183. package/lib/core/validation-message.service.d.ts +26 -0
  184. package/lib/core/validation-patterns.d.ts +22 -0
  185. package/lib/core/window.service.d.ts +116 -0
  186. package/lib/display/app-bar/app-bar.component.d.ts +20 -0
  187. package/lib/display/avatar/avatar.component.d.ts +35 -0
  188. package/lib/display/avatar/avatar.service.d.ts +24 -0
  189. package/lib/display/confirm/confirm.component.d.ts +123 -0
  190. package/lib/display/dialog/dialog-content.d.ts +19 -0
  191. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -0
  192. package/lib/display/dialog/dialog-types.d.ts +130 -0
  193. package/lib/display/dialog/dialog.component.d.ts +120 -0
  194. package/lib/display/dialog/dialog.service.d.ts +48 -0
  195. package/lib/display/help/help-types.d.ts +33 -0
  196. package/lib/display/hierarchy/hierarchy-base.d.ts +97 -0
  197. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -0
  198. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -0
  199. package/lib/display/item-display/item-display.component.d.ts +43 -0
  200. package/lib/display/json-display/json-display.component.d.ts +16 -0
  201. package/lib/display/resizable/resizable-base.d.ts +67 -0
  202. package/lib/display/resizable/resizable.component.d.ts +31 -0
  203. package/lib/display/spinner/spinner.component.d.ts +5 -0
  204. package/lib/display/splash/splash.component.d.ts +16 -0
  205. package/lib/display/splash/splash.service.d.ts +22 -0
  206. package/lib/display/table/resizable-column.component.d.ts +10 -0
  207. package/lib/display/table/resizable-table.directive.d.ts +93 -0
  208. package/lib/display/table/searchable-table.component.d.ts +206 -0
  209. package/lib/display/table/table-detail-row.component.d.ts +8 -0
  210. package/lib/display/table/table-locked-column.component.d.ts +20 -0
  211. package/lib/display/table/table-master-header-row.component.d.ts +9 -0
  212. package/lib/display/table/table-master-row.component.d.ts +113 -0
  213. package/lib/display/table/table-pagination.component.d.ts +91 -0
  214. package/lib/display/table/table-selectable-row.component.d.ts +102 -0
  215. package/lib/display/table/table.component.d.ts +121 -0
  216. package/lib/display/tags/tag.d.ts +18 -0
  217. package/lib/display/tags/tags.component.d.ts +48 -0
  218. package/lib/display/toast/toast/toast.component.d.ts +23 -0
  219. package/lib/display/toast/toast-types.d.ts +24 -0
  220. package/lib/display/toast/toast.service.d.ts +20 -0
  221. package/lib/display/toast/toaster/toaster.component.d.ts +35 -0
  222. package/lib/display/tooltip/tooltip.component.d.ts +70 -0
  223. package/lib/display/tooltip/tooltip.service.d.ts +16 -0
  224. package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -0
  225. package/lib/display/tour/tour-types.d.ts +70 -0
  226. package/lib/display/tour/tour.component.d.ts +147 -0
  227. package/lib/display/tour/tour.service.d.ts +38 -0
  228. package/lib/display/tree/tree.component.d.ts +75 -0
  229. package/lib/display/view-overlay/view-overlay.component.d.ts +38 -0
  230. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -0
  231. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -0
  232. package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -0
  233. package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -0
  234. package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -0
  235. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -0
  236. package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -0
  237. package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -0
  238. package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -0
  239. package/lib/shared/display.d.ts +42 -0
  240. package/lib/shared/form-group.helper.d.ts +31 -0
  241. package/lib/shared/json-helper.d.ts +7 -0
  242. package/lib/shared/lodash-helper.d.ts +18 -0
  243. package/lib/shared/page/page-base/page-base.component.d.ts +259 -0
  244. package/lib/shared/page/page-statuses.d.ts +13 -0
  245. package/lib/shared/page/page-title/page-title.component.d.ts +9 -0
  246. package/lib/shared/page/page-view/page-view.component.d.ts +102 -0
  247. package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -0
  248. package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -0
  249. package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -0
  250. package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -0
  251. package/lib/shared/testing/public-mocks.spec.d.ts +90 -0
  252. package/lib/shared/testing/spy-factory.spec.d.ts +27 -0
  253. package/lib/shared/testing/translation-mocks.spec.d.ts +30 -0
  254. package/lib/shared/user-preference.service.d.ts +13 -0
  255. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -0
  256. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -0
  257. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -0
  258. package/package.json +1 -5
  259. package/public-api.d.ts +113 -0
  260. package/schematics/collection.json +10 -0
  261. package/schematics/rxjs-7-upgrade/index.d.ts +3 -0
  262. package/schematics/rxjs-7-upgrade/index.js +68 -0
  263. package/schematics/rxjs-7-upgrade/index.js.map +1 -0
  264. package/schematics/rxjs-7-upgrade/schema.d.ts +4 -0
  265. package/schematics/rxjs-7-upgrade/schema.js +3 -0
  266. package/schematics/rxjs-7-upgrade/schema.js.map +1 -0
  267. package/schematics/rxjs-7-upgrade/schema.json +14 -0
  268. package/schematics/utilities/typescript.d.ts +7 -0
  269. package/schematics/utilities/typescript.js +42 -0
  270. package/schematics/utilities/typescript.js.map +1 -0
  271. package/schematics/utilities/workspace.d.ts +8 -0
  272. package/schematics/utilities/workspace.js +72 -0
  273. package/schematics/utilities/workspace.js.map +1 -0
  274. package/src/assets/images/email-icon.png +0 -0
  275. package/src/assets/images/email-logo.png +0 -0
  276. package/src/assets/images/favicon-ech.svg +7 -0
  277. package/src/assets/images/favicon-esa.svg +6 -0
  278. package/src/assets/images/favicon-eum.svg +6 -0
  279. package/src/assets/images/favicon.svg +5 -0
  280. package/src/assets/images/icon-carbonhub.svg +10 -0
  281. package/src/assets/images/icon-eum.svg +5 -0
  282. package/src/assets/images/icon-ucp.svg +5 -0
  283. package/src/assets/images/icon-wattics.svg +5 -0
  284. package/src/assets/images/icon.svg +4 -0
  285. package/src/assets/images/logo.svg +3 -0
  286. package/src/assets/images/splash.gif +0 -0
  287. package/src/assets/locales/en_US.json +59 -0
  288. package/src/assets/scripts/unsupported-browser.js +17 -0
  289. package/src/styles/_base.scss +38 -0
  290. package/src/styles/_colors.scss +96 -0
  291. package/src/styles/_core.scss +4 -0
  292. package/src/styles/_functions.scss +114 -0
  293. package/src/styles/_global-variables.scss +232 -0
  294. package/src/styles/_icons.scss +24 -0
  295. package/src/styles/bootstrap/_grid.scss +34 -0
  296. package/src/styles/bootstrap/_reboot.scss +323 -0
  297. package/src/styles/components/_card.scss +21 -0
  298. package/src/styles/components/_link-icons.scss +38 -0
  299. package/src/styles/components/_splash.scss +57 -0
  300. package/src/styles/components/_unsupported-browsers.scss +24 -0
  301. package/src/styles/email/_email-base.scss +228 -0
  302. package/src/styles/email/email.scss +43 -0
  303. package/src/styles/index.scss +27 -0
  304. package/src/styles/mixins/_animations.scss +18 -0
  305. package/src/styles/mixins/_button-base.scss +185 -0
  306. package/src/styles/mixins/_card-base.scss +40 -0
  307. package/src/styles/mixins/_common.scss +52 -0
  308. package/src/styles/mixins/_dialog-base.scss +96 -0
  309. package/src/styles/mixins/_form-control-base.scss +641 -0
  310. package/src/styles/mixins/_login.scss +74 -0
  311. package/src/styles/mixins/_menu-base.scss +153 -0
  312. package/src/styles/mixins/_overlay-base.scss +33 -0
  313. package/src/styles/mixins/_resizable-base.scss +57 -0
  314. package/src/styles/mixins/_spinner-base.scss +34 -0
  315. package/src/styles/mixins/_table-base.scss +298 -0
  316. package/src/styles/mixins/_tabs-base.scss +110 -0
  317. package/src/styles/mixins/_tags-base.scss +116 -0
  318. package/src/styles/mixins/_text.scss +89 -0
  319. package/src/styles/mixins.scss +15 -0
  320. package/src/styles/utilities/_borders.scss +30 -0
  321. package/src/styles/utilities/_common.scss +49 -0
  322. package/src/styles/utilities/_layout.scss +116 -0
  323. package/src/styles/utilities/_spacing.scss +65 -0
  324. package/src/styles/utilities/_text.scss +139 -0
@@ -0,0 +1,151 @@
1
+ import { Directive, Input } from '@angular/core';
2
+ import { Subject } from "rxjs";
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import * as i0 from "@angular/core";
5
+ import * as i1 from "../core/validation-message.service";
6
+ import * as i2 from "../shared/form-group.helper";
7
+ /**
8
+ * Base class for Reactive Form Controls, containing ECI-specific shared properties
9
+ */
10
+ export class FormControlBase {
11
+ /**
12
+ * Creates an instance of FormControlBase.
13
+ */
14
+ constructor(validationMessageService, formGroupHelper) {
15
+ this.validationMessageService = validationMessageService;
16
+ this.formGroupHelper = formGroupHelper;
17
+ /**
18
+ * If true, will focus the control's input when the view is intialized
19
+ */
20
+ this.autofocus = false;
21
+ /**
22
+ * The position of the form control label (top|bottom)
23
+ */
24
+ this.labelPosition = "top";
25
+ /**
26
+ * The id of the component. We use this to identify a control on focus events and help.
27
+ */
28
+ this.id = '';
29
+ /**
30
+ * The pending status of the control, can be used to tell the user the control is
31
+ * awaiting data via a spinner or animation
32
+ */
33
+ this.pending = false;
34
+ /**
35
+ * Whether the input is a required field or not
36
+ * @todo: Sometime in the future Angular makes it sound like this will be handled via the Reactive form When that happens this property can be removed
37
+ */
38
+ this.required = false;
39
+ /**
40
+ * The tabindex of the control
41
+ */
42
+ this.tabindex = 0;
43
+ /**
44
+ * When a help popover is present, allows the popover to be positioned in different locations.
45
+ */
46
+ this.helpPopoverPosition = 'top-left';
47
+ /**
48
+ * All current validation errors
49
+ */
50
+ this.validationErrors = "";
51
+ /**
52
+ * The id of the form controls input, getnerated from the components id.
53
+ */
54
+ this.inputId = '';
55
+ /**
56
+ * Notifies component subscriptions that component is destroyed.
57
+ * Use with `takeUntil()` when subscribing to complete subscriptions
58
+ * automatically.
59
+ *
60
+ * See:
61
+ * [RxJs]{@link http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-takeUntil}
62
+ * [and this]{@link https://medium.com/@benlesh/rxjs-dont-unsubscribe-6753ed4fda87}
63
+ * [and this]{@link https://netbasal.com/when-to-unsubscribe-in-angular-d61c6b21bad3}
64
+ * [and this]{@link http://brianflove.com/2016/12/11/anguar-2-unsubscribe-observables/}
65
+ */
66
+ this.componentDestroyed = new Subject();
67
+ }
68
+ /**
69
+ * Angular onChange lifecyle hook
70
+ */
71
+ ngOnChanges(changes) {
72
+ if (changes.readonly && changes.readonly.currentValue !== undefined) {
73
+ if (changes.readonly.currentValue === true) {
74
+ this.formModel.disable();
75
+ }
76
+ else if (changes.readonly.currentValue === false) {
77
+ this.formModel.enable();
78
+ }
79
+ }
80
+ if (changes.id && changes.id.currentValue !== undefined) {
81
+ this.inputId = this.formGroupHelper.getInputId(this.id);
82
+ }
83
+ }
84
+ /**
85
+ * Angular onInit lifecycle hook.
86
+ */
87
+ ngOnInit() {
88
+ this.inputId = this.formGroupHelper.getInputId(this.id);
89
+ // subscribe to valueChanges Observable to take any erros and translate them
90
+ this.formModel.statusChanges.pipe(takeUntil(this.componentDestroyed)).subscribe(data => {
91
+ this.translateValidationMessages(data);
92
+ });
93
+ // (re)set validation messages
94
+ this.translateValidationMessages();
95
+ }
96
+ /**
97
+ * Angular onDestroy lifecyle hook.
98
+ * Unsubscribe from any observables
99
+ */
100
+ ngOnDestroy() {
101
+ this.componentDestroyed.next();
102
+ this.componentDestroyed.unsubscribe();
103
+ }
104
+ /**
105
+ * Function that subscribes to the formModel's valueChanges Observable
106
+ * to take any erros and translate them
107
+ */
108
+ async translateValidationMessages(data) {
109
+ if (!this.formModel) {
110
+ return;
111
+ }
112
+ const form = this.formModel;
113
+ this.validationErrors = '';
114
+ if (!form.valid) {
115
+ let messages = await this.validationMessageService.getErrorMessages(form.errors);
116
+ if (messages) {
117
+ this.validationErrors = messages.join('; ');
118
+ }
119
+ }
120
+ }
121
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormControlBase, deps: [{ token: i1.ValidationMessageService }, { token: i2.FormGroupHelper }], target: i0.ɵɵFactoryTarget.Directive }); }
122
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: FormControlBase, inputs: { autofocus: "autofocus", formModel: "formModel", label: "label", labelPosition: "labelPosition", id: "id", pending: "pending", required: "required", tabindex: "tabindex", readonly: "readonly", tooltip: "tooltip", helpPopover: "helpPopover", helpPopoverPosition: "helpPopoverPosition" }, usesOnChanges: true, ngImport: i0 }); }
123
+ }
124
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormControlBase, decorators: [{
125
+ type: Directive
126
+ }], ctorParameters: () => [{ type: i1.ValidationMessageService }, { type: i2.FormGroupHelper }], propDecorators: { autofocus: [{
127
+ type: Input
128
+ }], formModel: [{
129
+ type: Input
130
+ }], label: [{
131
+ type: Input
132
+ }], labelPosition: [{
133
+ type: Input
134
+ }], id: [{
135
+ type: Input
136
+ }], pending: [{
137
+ type: Input
138
+ }], required: [{
139
+ type: Input
140
+ }], tabindex: [{
141
+ type: Input
142
+ }], readonly: [{
143
+ type: Input
144
+ }], tooltip: [{
145
+ type: Input
146
+ }], helpPopover: [{
147
+ type: Input
148
+ }], helpPopoverPosition: [{
149
+ type: Input
150
+ }] } });
151
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvZm9ybS1jb250cm9sLWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQStDLE1BQU0sZUFBZSxDQUFDO0FBRTlGLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0IsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7O0FBVTNDOztHQUVHO0FBRUgsTUFBTSxPQUFnQixlQUFlO0lBc0duQzs7T0FFRztJQUNILFlBQ1ksd0JBQWtELEVBQ2xELGVBQWdDO1FBRGhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBeEc1Qzs7V0FFRztRQUNhLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFnQjVDOztXQUVHO1FBQ2Esa0JBQWEsR0FBMEIsS0FBSyxDQUFDO1FBRzdEOztXQUVHO1FBQ2EsT0FBRSxHQUFXLEVBQUUsQ0FBQztRQUdoQzs7O1dBR0c7UUFDYSxZQUFPLEdBQWEsS0FBSyxDQUFDO1FBRzFDOzs7V0FHRztRQUNhLGFBQVEsR0FBYSxLQUFLLENBQUM7UUFHM0M7O1dBRUc7UUFDYSxhQUFRLEdBQVksQ0FBQyxDQUFDO1FBb0J0Qzs7V0FFRztRQUNhLHdCQUFtQixHQUE0QixVQUFVLENBQUM7UUFFMUU7O1dBRUc7UUFDSSxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFHckM7O1dBRUc7UUFDSSxZQUFPLEdBQVcsRUFBRSxDQUFDO1FBRzdCOzs7Ozs7Ozs7O1dBVUc7UUFDUSx1QkFBa0IsR0FBa0IsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQVM5RCxDQUFDO0lBRUw7O09BRUc7SUFDSSxXQUFXLENBQUMsT0FBcUI7UUFDdEMsSUFBSSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3BFLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxZQUFZLEtBQUssSUFBSSxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDM0IsQ0FBQztpQkFBTSxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsWUFBWSxLQUFLLEtBQUssRUFBRSxDQUFDO2dCQUNuRCxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzFCLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBQyxDQUFDO1lBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFELENBQUM7SUFDSCxDQUFDO0lBR0Q7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7UUFFeEQsNEVBQTRFO1FBQzVFLElBQUksQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDL0IsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUNuQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNqQixJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDeEMsQ0FBQyxDQUFDLENBQUM7UUFFSCw4QkFBOEI7UUFDOUIsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUM7SUFHckMsQ0FBQztJQUdEOzs7T0FHRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBR0Q7OztPQUdHO0lBQ08sS0FBSyxDQUFDLDJCQUEyQixDQUFDLElBQVU7UUFDcEQsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUFDLE9BQU87UUFBQyxDQUFDO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFFNUIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUUzQixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqRixJQUFJLFFBQVEsRUFBRSxDQUFDO2dCQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzlDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzsrR0E5S21CLGVBQWU7bUdBQWYsZUFBZTs7NEZBQWYsZUFBZTtrQkFEcEMsU0FBUzsySEFPUSxTQUFTO3NCQUF4QixLQUFLO2dCQU9VLFNBQVM7c0JBQXhCLEtBQUs7Z0JBTVUsS0FBSztzQkFBcEIsS0FBSztnQkFNVSxhQUFhO3NCQUE1QixLQUFLO2dCQU1VLEVBQUU7c0JBQWpCLEtBQUs7Z0JBT1UsT0FBTztzQkFBdEIsS0FBSztnQkFPVSxRQUFRO3NCQUF2QixLQUFLO2dCQU1VLFFBQVE7c0JBQXZCLEtBQUs7Z0JBTVUsUUFBUTtzQkFBdkIsS0FBSztnQkFNVSxPQUFPO3NCQUF0QixLQUFLO2dCQU1VLFdBQVc7c0JBQTFCLEtBQUs7Z0JBS1UsbUJBQW1CO3NCQUFsQyxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbnB1dCwgT25DaGFuZ2VzLCBPbkRlc3Ryb3ksIE9uSW5pdCwgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wgfSBmcm9tIFwiQGFuZ3VsYXIvZm9ybXNcIjtcclxuaW1wb3J0IHsgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSBcIi4uL2NvcmUvdmFsaWRhdGlvbi1tZXNzYWdlLnNlcnZpY2VcIjtcclxuaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgUG9wb3ZlckNvbnRlbnRQb3NpdGlvbiB9IGZyb20gJy4vcG9wb3Zlci9wb3BvdmVyLmNvbXBvbmVudCc7XHJcblxyXG5cclxuXHJcbmV4cG9ydCB0eXBlIENvbnRyb2xMYWJlbFBvc2l0aW9uID0gXCJ0b3BcIiB8IFwiYm90dG9tXCIgfCBcImxlZnRcIjtcclxuXHJcblxyXG4vKipcclxuICogQmFzZSBjbGFzcyBmb3IgUmVhY3RpdmUgRm9ybSBDb250cm9scywgY29udGFpbmluZyBFQ0ktc3BlY2lmaWMgc2hhcmVkIHByb3BlcnRpZXNcclxuICovXHJcbkBEaXJlY3RpdmUoKVxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRm9ybUNvbnRyb2xCYXNlIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcyB7XHJcbiAgXHJcbiAgXHJcbiAgLyoqXHJcbiAgICogSWYgdHJ1ZSwgd2lsbCBmb2N1cyB0aGUgY29udHJvbCdzIGlucHV0IHdoZW4gdGhlIHZpZXcgaXMgaW50aWFsaXplZFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBhdXRvZm9jdXM/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBVSS1vcmllbnRlZCBmb3JtIG1vZGVsIHRoYXQgcmV0YWlucyB0aGUgc3RhdGVzIGFuZCB2YWx1ZXMgb2YgdGhlIEhUTUwgY29udHJvbHMgb24gc2NyZWVuLlxyXG4gICAqIENhbiBiZSBhIHtAbGluayBGb3JtQ29udHJvbH0gb3IgYSB7QGxpbmsgRm9ybUdyb3VwfVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBmb3JtTW9kZWwhOiBBYnN0cmFjdENvbnRyb2w7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBUaGUgZm9ybSBjb250cm9sIGxhYmVsXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsPzogc3RyaW5nO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBmb3JtIGNvbnRyb2wgbGFiZWwgKHRvcHxib3R0b20pXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsUG9zaXRpb24/OiBDb250cm9sTGFiZWxQb3NpdGlvbiA9IFwidG9wXCI7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBUaGUgaWQgb2YgdGhlIGNvbXBvbmVudC4gV2UgdXNlIHRoaXMgdG8gaWRlbnRpZnkgYSBjb250cm9sIG9uIGZvY3VzIGV2ZW50cyBhbmQgaGVscC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIHBlbmRpbmcgc3RhdHVzIG9mIHRoZSBjb250cm9sLCBjYW4gYmUgdXNlZCB0byB0ZWxsIHRoZSB1c2VyIHRoZSBjb250cm9sIGlzXHJcbiAgICogYXdhaXRpbmcgZGF0YSB2aWEgYSBzcGlubmVyIG9yIGFuaW1hdGlvblxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBwZW5kaW5nPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogV2hldGhlciB0aGUgaW5wdXQgaXMgYSByZXF1aXJlZCBmaWVsZCBvciBub3RcclxuICAgKiBAdG9kbzogU29tZXRpbWUgaW4gdGhlIGZ1dHVyZSBBbmd1bGFyIG1ha2VzIGl0IHNvdW5kIGxpa2UgdGhpcyB3aWxsIGJlIGhhbmRsZWQgdmlhIHRoZSBSZWFjdGl2ZSBmb3JtIFdoZW4gdGhhdCBoYXBwZW5zIHRoaXMgcHJvcGVydHkgY2FuIGJlIHJlbW92ZWRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcmVxdWlyZWQ/OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICAvKipcclxuICAgKiBUaGUgdGFiaW5kZXggb2YgdGhlIGNvbnRyb2xcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgdGFiaW5kZXg/OiBudW1iZXIgPSAwO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogRGlzYWJsZSB0aGUgY29udHJvbCBhbmQgZGlzcGxheSB0aGUgdmFsdWVcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgcmVhZG9ubHk/OiBib29sZWFuO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ29uZGl0aW9uYWxseSBzaG93IGEgdG9vbHRpcCBvbiB0aGUgZm9ybSBjb250cm9sJ3MgaW5wdXQuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHRvb2x0aXA/OiBzdHJpbmc7XHJcblxyXG4gIFxyXG4gIC8qKlxyXG4gICAqIENvbmRpdGlvbmFsbHkgc2hvdyBhIGhlbHAgcG9wb3ZlciBuZXh0IHRvIHRoZSBjb250cm9scyBsYWJlbC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaGVscFBvcG92ZXI/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gYSBoZWxwIHBvcG92ZXIgaXMgcHJlc2VudCwgYWxsb3dzIHRoZSBwb3BvdmVyIHRvIGJlIHBvc2l0aW9uZWQgaW4gZGlmZmVyZW50IGxvY2F0aW9ucy5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaGVscFBvcG92ZXJQb3NpdGlvbj86IFBvcG92ZXJDb250ZW50UG9zaXRpb24gPSAndG9wLWxlZnQnO1xyXG5cclxuICAvKipcclxuICAgKiBBbGwgY3VycmVudCB2YWxpZGF0aW9uIGVycm9yc1xyXG4gICAqL1xyXG4gIHB1YmxpYyB2YWxpZGF0aW9uRXJyb3JzOiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGlkIG9mIHRoZSBmb3JtIGNvbnRyb2xzIGlucHV0LCBnZXRuZXJhdGVkIGZyb20gdGhlIGNvbXBvbmVudHMgaWQuXHJcbiAgICovXHJcbiAgcHVibGljIGlucHV0SWQ6IHN0cmluZyA9ICcnO1xyXG5cclxuXHJcbiAvKipcclxuICAqIE5vdGlmaWVzIGNvbXBvbmVudCBzdWJzY3JpcHRpb25zIHRoYXQgY29tcG9uZW50IGlzIGRlc3Ryb3llZC5cclxuICAqIFVzZSB3aXRoIGB0YWtlVW50aWwoKWAgd2hlbiBzdWJzY3JpYmluZyB0byBjb21wbGV0ZSBzdWJzY3JpcHRpb25zXHJcbiAgKiBhdXRvbWF0aWNhbGx5LlxyXG4gICpcclxuICAqIFNlZTpcclxuICAqIFtSeEpzXXtAbGluayBodHRwOi8vcmVhY3RpdmV4LmlvL3J4anMvY2xhc3MvZXM2L09ic2VydmFibGUuanN+T2JzZXJ2YWJsZS5odG1sI2luc3RhbmNlLW1ldGhvZC10YWtlVW50aWx9XHJcbiAgKiBbYW5kIHRoaXNde0BsaW5rIGh0dHBzOi8vbWVkaXVtLmNvbS9AYmVubGVzaC9yeGpzLWRvbnQtdW5zdWJzY3JpYmUtNjc1M2VkNGZkYTg3fVxyXG4gICogW2FuZCB0aGlzXXtAbGluayBodHRwczovL25ldGJhc2FsLmNvbS93aGVuLXRvLXVuc3Vic2NyaWJlLWluLWFuZ3VsYXItZDYxYzZiMjFiYWQzfVxyXG4gICogW2FuZCB0aGlzXXtAbGluayBodHRwOi8vYnJpYW5mbG92ZS5jb20vMjAxNi8xMi8xMS9hbmd1YXItMi11bnN1YnNjcmliZS1vYnNlcnZhYmxlcy99XHJcbiAgKi9cclxuICBwcm90ZWN0ZWQgY29tcG9uZW50RGVzdHJveWVkOiBTdWJqZWN0PHZvaWQ+ID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgRm9ybUNvbnRyb2xCYXNlLlxyXG4gICAqL1xyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1Hcm91cEhlbHBlcjogRm9ybUdyb3VwSGVscGVyXHJcbiAgKSB7IH1cclxuXHJcbiAgLyoqXHJcbiAgICogQW5ndWxhciBvbkNoYW5nZSBsaWZlY3lsZSBob29rXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6U2ltcGxlQ2hhbmdlcyk6dm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlcy5yZWFkb25seSAmJiBjaGFuZ2VzLnJlYWRvbmx5LmN1cnJlbnRWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIGlmIChjaGFuZ2VzLnJlYWRvbmx5LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLmRpc2FibGUoKTtcclxuICAgICAgfSBlbHNlIGlmIChjaGFuZ2VzLnJlYWRvbmx5LmN1cnJlbnRWYWx1ZSA9PT0gZmFsc2UpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5lbmFibGUoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChjaGFuZ2VzLmlkICYmIGNoYW5nZXMuaWQuY3VycmVudFZhbHVlICE9PSB1bmRlZmluZWQpe1xyXG4gICAgICB0aGlzLmlucHV0SWQgPSB0aGlzLmZvcm1Hcm91cEhlbHBlci5nZXRJbnB1dElkKHRoaXMuaWQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgXHJcbiAgLyoqXHJcbiAgICogQW5ndWxhciBvbkluaXQgbGlmZWN5Y2xlIGhvb2suXHJcbiAgICovXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5pbnB1dElkID0gdGhpcy5mb3JtR3JvdXBIZWxwZXIuZ2V0SW5wdXRJZCh0aGlzLmlkKTtcclxuICAgIFxyXG4gICAgLy8gc3Vic2NyaWJlIHRvIHZhbHVlQ2hhbmdlcyBPYnNlcnZhYmxlIHRvIHRha2UgYW55IGVycm9zIGFuZCB0cmFuc2xhdGUgdGhlbVxyXG4gICAgdGhpcy5mb3JtTW9kZWwuc3RhdHVzQ2hhbmdlcy5waXBlKFxyXG4gICAgICB0YWtlVW50aWwodGhpcy5jb21wb25lbnREZXN0cm95ZWQpXHJcbiAgICApLnN1YnNjcmliZShkYXRhID0+IHtcclxuICAgICAgdGhpcy50cmFuc2xhdGVWYWxpZGF0aW9uTWVzc2FnZXMoZGF0YSlcclxuICAgIH0pO1xyXG5cclxuICAgIC8vIChyZSlzZXQgdmFsaWRhdGlvbiBtZXNzYWdlc1xyXG4gICAgdGhpcy50cmFuc2xhdGVWYWxpZGF0aW9uTWVzc2FnZXMoKTtcclxuXHJcbiAgICBcclxuICB9XHJcbiAgICBcclxuXHJcbiAgLyoqXHJcbiAgICogQW5ndWxhciBvbkRlc3Ryb3kgbGlmZWN5bGUgaG9vay4gXHJcbiAgICogVW5zdWJzY3JpYmUgZnJvbSBhbnkgb2JzZXJ2YWJsZXNcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRoYXQgc3Vic2NyaWJlcyB0byB0aGUgZm9ybU1vZGVsJ3MgdmFsdWVDaGFuZ2VzIE9ic2VydmFibGVcclxuICAgKiB0byB0YWtlIGFueSBlcnJvcyBhbmQgdHJhbnNsYXRlIHRoZW1cclxuICAgKi9cclxuICBwcm90ZWN0ZWQgYXN5bmMgdHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKGRhdGE/OiBhbnkpIHtcclxuICAgIGlmICghdGhpcy5mb3JtTW9kZWwpIHsgcmV0dXJuOyB9XHJcbiAgICBjb25zdCBmb3JtID0gdGhpcy5mb3JtTW9kZWw7XHJcblxyXG4gICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gJyc7XHJcblxyXG4gICAgaWYgKCFmb3JtLnZhbGlkKSB7XHJcbiAgICAgIGxldCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMudmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLmdldEVycm9yTWVzc2FnZXMoZm9ybS5lcnJvcnMpO1xyXG4gICAgICBpZiAobWVzc2FnZXMpIHtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBtZXNzYWdlcy5qb2luKCc7ICcpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxufSJdfQ==
@@ -0,0 +1,136 @@
1
+ import { Component, HostBinding, Input } from '@angular/core';
2
+ import { Subject } from 'rxjs';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { forEachFormControl } from '../form-group/form-group.component';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../core/validation-message.service";
7
+ import * as i2 from "@ngx-translate/core";
8
+ import * as i3 from "@angular/common";
9
+ export class FormControlLabelComponent {
10
+ constructor(validationMessageService, translateService) {
11
+ this.validationMessageService = validationMessageService;
12
+ this.translateService = translateService;
13
+ /**
14
+ * The form control label
15
+ */
16
+ this.label = '';
17
+ /**
18
+ * The position of the form control label (top|bottom|left)
19
+ */
20
+ this.labelPosition = "top";
21
+ /**An optional string to show if any of the underlying controls has an error. If falsy, one of the
22
+ * errors from the underlying controls will be used.
23
+ */
24
+ this.overrideValidationError = "";
25
+ /**An optional flag to hide the validation messages.
26
+ */
27
+ this.hideValidationMessage = false;
28
+ /**
29
+ * All current validation errors
30
+ *
31
+ * @type {string}
32
+ * @memberof FormControlBase
33
+ */
34
+ this.validationErrors = "";
35
+ this.allControlsTouched = false;
36
+ this.componentDestroyed = new Subject();
37
+ }
38
+ async ngOnInit() {
39
+ // subscribe to statusChanges Observable to take any errors and translate them
40
+ if (this.control) {
41
+ this.control.statusChanges
42
+ .pipe(takeUntil(this.componentDestroyed))
43
+ .subscribe(() => {
44
+ this.translateValidationMessages(this.getErrors(this.control));
45
+ });
46
+ // (re)set validation messages
47
+ this.translateValidationMessages(this.getErrors(this.control));
48
+ }
49
+ if (this.id) {
50
+ this.attrId = this.id;
51
+ }
52
+ }
53
+ /**
54
+ * Angular onDestroy lifecyle hook.
55
+ * Unsubscribe from any observables
56
+ *
57
+ * @see https://angular.io/guide/lifecycle-hooks
58
+ * @memberof FormControlBase
59
+ */
60
+ ngOnDestroy() {
61
+ this.componentDestroyed.next();
62
+ this.componentDestroyed.unsubscribe();
63
+ }
64
+ getErrors(control) {
65
+ control.markAsUntouched();
66
+ let errors = null;
67
+ let allTouched = true;
68
+ let controlFound = false;
69
+ forEachFormControl(control, (control) => {
70
+ errors = this.assignErrors(control, errors);
71
+ if (control.untouched) {
72
+ allTouched = false;
73
+ }
74
+ controlFound = true;
75
+ });
76
+ if (control.errors) {
77
+ errors = Object.assign(errors || {}, control.errors);
78
+ }
79
+ if (allTouched && controlFound) {
80
+ control.markAsTouched();
81
+ }
82
+ return errors;
83
+ }
84
+ assignErrors(control, errors) {
85
+ if (control.errors) {
86
+ errors = Object.assign(errors || {}, control.errors);
87
+ }
88
+ return errors;
89
+ }
90
+ /**
91
+ * Function that subscribes to the controls valueChanges Observable
92
+ * to take any erros and translate them
93
+ *
94
+ * @param {*} [data]
95
+ * @returns
96
+ * @memberof FormControlBase
97
+ */
98
+ async translateValidationMessages(errors) {
99
+ if (errors) {
100
+ if (this.overrideValidationError) {
101
+ this.validationErrors = this.translateService.instant(this.overrideValidationError);
102
+ }
103
+ else {
104
+ let messages = await this.validationMessageService.getErrorMessages(errors);
105
+ if (messages) {
106
+ this.validationErrors = messages.join('; ');
107
+ }
108
+ }
109
+ }
110
+ else {
111
+ this.validationErrors = '';
112
+ }
113
+ }
114
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormControlLabelComponent, deps: [{ token: i1.ValidationMessageService }, { token: i2.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
115
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: FormControlLabelComponent, selector: "ec-form-control-label", inputs: { id: "id", label: "label", control: "control", labelPosition: "labelPosition", overrideValidationError: "overrideValidationError", hideValidationMessage: "hideValidationMessage" }, host: { properties: { "attr.id": "this.attrId" } }, ngImport: i0, template: "<div class=\"control control-label-{{labelPosition}}\" [class.ec-untouched]=\"control?.untouched\">\r\n <label *ngIf=\"label\" ngPreserveWhitespaces>\r\n\r\n <span id=\"{{id}}_label\">{{label | translate}}</span>\r\n\r\n <span *ngIf=\"!hideValidationMessage && validationErrors && control?.touched && control?.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}label{color:var(--ec-form-control-label-color, var(--ec-color-secondary-dark));display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched{background-image:none;padding-left:.5rem}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched:not(.is-empty)~.units-left{left:0}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty{background-image:none;background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty:focus{border-color:var(--ec-form-control-border-color-focus);box-shadow:var(--ec-form-control-box-shadow-focus);position:relative;z-index:1}.control-label-left{display:flex}\n"], dependencies: [{ kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: FormControlLabelComponent, decorators: [{
118
+ type: Component,
119
+ args: [{ selector: 'ec-form-control-label', template: "<div class=\"control control-label-{{labelPosition}}\" [class.ec-untouched]=\"control?.untouched\">\r\n <label *ngIf=\"label\" ngPreserveWhitespaces>\r\n\r\n <span id=\"{{id}}_label\">{{label | translate}}</span>\r\n\r\n <span *ngIf=\"!hideValidationMessage && validationErrors && control?.touched && control?.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n</div>", styles: [":host{color:var(--ec-form-control-color);font-size:var(--ec-form-control-font-size);display:block;margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{width:100%;display:flex;flex-direction:column}:host .control.control-label-bottom{flex-direction:column-reverse}:host .control.control-label-left{flex-direction:row}:host .control.control-label-left label{margin-right:.25rem}:host .control.control-label-right{flex-direction:row-reverse}:host .control.control-label-right label{margin-left:.25rem}:host .control.control-label-left,:host .control.control-label-right{align-items:center}:host .control.control-label-left label,:host .control.control-label-right label{flex:1 1;margin-top:0;margin-bottom:0}:host .control.control-label-left .control-input,:host .control.control-label-right .control-input{flex:2 2}:host .control.is-readonly input,:host .control.is-readonly select,:host .control.is-readonly textarea{border-color:var(--ec-form-control-border-color-readonly);background-color:var(--ec-form-control-background-color-readonly);background-clip:border-box;background-image:none;color:var(--ec-form-control-color-readonly);opacity:1;-webkit-user-select:none;user-select:none;pointer-events:none;overflow:hidden;white-space:nowrap}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid{background-color:var(--ec-form-control-background-color-invalid);border-color:var(--ec-form-control-border-color-invalid);background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem;background-image:none}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:focus,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:focus{border-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-invalid,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-invalid{display:inline-flex;position:absolute;left:.5rem;top:.5rem;z-index:1}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid~.icon-required,:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid~.icon-required{display:none}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-form-control-background-color-invalid)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-form-control-border-color-invalid)}:host .textbox-group{display:flex;position:relative}:host textarea:focus,:host input:focus,:host select:focus{outline:none}label{color:var(--ec-form-control-label-color, var(--ec-color-secondary-dark));display:block;font-size:var(--ec-font-size-label);line-height:1;margin:calc(var(--ec-font-size-label) / 2) 0}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched{background-image:none;padding-left:.5rem}.control.ec-untouched ::ng-deep input.ng-invalid.ng-touched:not(.is-empty)~.units-left{left:0}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty{background-image:none;background-repeat:no-repeat;background-position:.5rem center;background-size:1rem,1rem;padding-left:1.75rem}.control.ec-untouched ::ng-deep input:required:not(:disabled).is-empty:focus{border-color:var(--ec-form-control-border-color-focus);box-shadow:var(--ec-form-control-box-shadow-focus);position:relative;z-index:1}.control-label-left{display:flex}\n"] }]
120
+ }], ctorParameters: () => [{ type: i1.ValidationMessageService }, { type: i2.TranslateService }], propDecorators: { id: [{
121
+ type: Input
122
+ }], attrId: [{
123
+ type: HostBinding,
124
+ args: ['attr.id']
125
+ }], label: [{
126
+ type: Input
127
+ }], control: [{
128
+ type: Input
129
+ }], labelPosition: [{
130
+ type: Input
131
+ }], overrideValidationError: [{
132
+ type: Input
133
+ }], hideValidationMessage: [{
134
+ type: Input
135
+ }] } });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLWxhYmVsLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9mb3JtLWNvbnRyb2wtbGFiZWwvZm9ybS1jb250cm9sLWxhYmVsLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9mb3JtLWNvbnRyb2wtbGFiZWwvZm9ybS1jb250cm9sLWxhYmVsLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBVSxNQUFNLGVBQWUsQ0FBQztBQUd0RSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUczQyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFPeEUsTUFBTSxPQUFPLHlCQUF5QjtJQW9EcEMsWUFDWSx3QkFBa0QsRUFDcEQsZ0JBQWtDO1FBRGhDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDcEQscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFrQjtRQTFDNUM7O1dBRUc7UUFDYSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBV25DOzthQUVLO1FBQ1csa0JBQWEsR0FBMEIsS0FBSyxDQUFDO1FBRzdEOztXQUVHO1FBQ2EsNEJBQXVCLEdBQVksRUFBRSxDQUFDO1FBRXREO1dBQ0c7UUFDYSwwQkFBcUIsR0FBWSxLQUFLLENBQUM7UUFDdkQ7Ozs7O1dBS0c7UUFDSSxxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFFOUIsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBRW5DLHVCQUFrQixHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO0lBSzVELENBQUM7SUFFRSxLQUFLLENBQUMsUUFBUTtRQUNuQiw4RUFBOEU7UUFDOUUsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhO2lCQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO2lCQUN4QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFRLENBQUMsQ0FBQyxDQUFBO1lBQ2pFLENBQUMsQ0FBQyxDQUFDO1lBRUwsOEJBQThCO1lBQzlCLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUN4QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLFdBQVc7UUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0lBRU8sU0FBUyxDQUFDLE9BQXdCO1FBQ3hDLE9BQU8sQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUUxQixJQUFJLE1BQU0sR0FBNEIsSUFBSSxDQUFDO1FBQzNDLElBQUksVUFBVSxHQUFZLElBQUksQ0FBQztRQUMvQixJQUFJLFlBQVksR0FBWSxLQUFLLENBQUM7UUFFbEMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLENBQUMsT0FBd0IsRUFBRSxFQUFFO1lBQ3ZELE1BQU0sR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztZQUM1QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDdEIsVUFBVSxHQUFHLEtBQUssQ0FBQztZQUNyQixDQUFDO1lBQ0QsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDLENBQUMsQ0FBQztRQUVILElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ25CLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxFQUFFLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCxJQUFJLFVBQVUsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUMvQixPQUFPLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUVELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFTyxZQUFZLENBQUMsT0FBd0IsRUFBRSxNQUErQjtRQUM1RSxJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUE7SUFDZixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxNQUErQjtRQUN2RSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBRyxJQUFJLENBQUMsdUJBQXVCLEVBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUM7WUFDdEYsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksUUFBUSxHQUFHLE1BQU0sSUFBSSxDQUFDLHdCQUF3QixDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUM1RSxJQUFJLFFBQVEsRUFBRSxDQUFDO29CQUNiLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUM5QyxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUM3QixDQUFDO0lBQ0gsQ0FBQzsrR0E5SVUseUJBQXlCO21HQUF6Qix5QkFBeUIsK1NDZHRDLHdZQU9NOzs0RkRPTyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0UsdUJBQXVCOzRIQVNqQixFQUFFO3NCQUFqQixLQUFLO2dCQUt5QixNQUFNO3NCQUFwQyxXQUFXO3VCQUFDLFNBQVM7Z0JBS04sS0FBSztzQkFBcEIsS0FBSztnQkFTVSxPQUFPO3NCQUF0QixLQUFLO2dCQUtVLGFBQWE7c0JBQTVCLEtBQUs7Z0JBTVUsdUJBQXVCO3NCQUF0QyxLQUFLO2dCQUlVLHFCQUFxQjtzQkFBcEMsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSG9zdEJpbmRpbmcsIElucHV0LCBPbkluaXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UgfSBmcm9tICcuLi8uLi9jb3JlL3ZhbGlkYXRpb24tbWVzc2FnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQ29udHJvbExhYmVsUG9zaXRpb24gfSBmcm9tICcuLi9mb3JtLWNvbnRyb2wtYmFzZSc7XHJcbmltcG9ydCB7IGZvckVhY2hGb3JtQ29udHJvbCB9IGZyb20gJy4uL2Zvcm0tZ3JvdXAvZm9ybS1ncm91cC5jb21wb25lbnQnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy1mb3JtLWNvbnRyb2wtbGFiZWwnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNvbnRyb2wtbGFiZWwuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC1sYWJlbC5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBGb3JtQ29udHJvbExhYmVsQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgLyoqXHJcbiAgICogSWRcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgaWQ/OiBzdHJpbmc7XHJcblxyXG4gIC8qKlxyXG4gICAqIEJpbmQgaWQgdG8gaG9zdCBlbGVtZW50XHJcbiAgICovXHJcbiAgQEhvc3RCaW5kaW5nKCdhdHRyLmlkJykgcHVibGljIGF0dHJJZD86IHN0cmluZztcclxuXHJcbiAgLyoqXHJcbiAgICogVGhlIGZvcm0gY29udHJvbCBsYWJlbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBsYWJlbDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVJLW9yaWVudGVkIGZvcm0gbW9kZWwgdGhhdCByZXRhaW5zIHRoZSBzdGF0ZXMgYW5kIHZhbHVlcyBvZiB0aGUgSFRNTCBjb250cm9scyBvbiBzY3JlZW4uXHJcbiAgICogQ2FuIGJlIGEge0BsaW5rIEZvcm1Db250cm9sfSwgYSB7QGxpbmsgRm9ybUdyb3VwfSBvciBhIHtAbGluayBGb3JtQXJyYXl9XHJcbiAgICpcclxuICAgKiBAdHlwZSB7QWJzdHJhY3RDb250cm9sfVxyXG4gICAqIEBtZW1iZXJvZiBGb3JtQ29udHJvbEJhc2VcclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgY29udHJvbD86IEFic3RyYWN0Q29udHJvbDtcclxuXHJcbiAgLyoqXHJcbiAgICAgKiBUaGUgcG9zaXRpb24gb2YgdGhlIGZvcm0gY29udHJvbCBsYWJlbCAodG9wfGJvdHRvbXxsZWZ0KVxyXG4gICAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGxhYmVsUG9zaXRpb24/OiBDb250cm9sTGFiZWxQb3NpdGlvbiA9IFwidG9wXCI7XHJcblxyXG5cclxuICAvKipBbiBvcHRpb25hbCBzdHJpbmcgdG8gc2hvdyBpZiBhbnkgb2YgdGhlIHVuZGVybHlpbmcgY29udHJvbHMgaGFzIGFuIGVycm9yLiBJZiBmYWxzeSwgb25lIG9mIHRoZVxyXG4gICAqIGVycm9ycyBmcm9tIHRoZSB1bmRlcmx5aW5nIGNvbnRyb2xzIHdpbGwgYmUgdXNlZC5cclxuICAgKi9cclxuICBASW5wdXQoKSBwdWJsaWMgb3ZlcnJpZGVWYWxpZGF0aW9uRXJyb3I/OiBzdHJpbmcgPSBcIlwiO1xyXG5cclxuICAvKipBbiBvcHRpb25hbCBmbGFnIHRvIGhpZGUgdGhlIHZhbGlkYXRpb24gbWVzc2FnZXMuXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGhpZGVWYWxpZGF0aW9uTWVzc2FnZT86Ym9vbGVhbiA9IGZhbHNlO1xyXG4gIC8qKlxyXG4gICAqIEFsbCBjdXJyZW50IHZhbGlkYXRpb24gZXJyb3JzXHJcbiAgICpcclxuICAgKiBAdHlwZSB7c3RyaW5nfVxyXG4gICAqIEBtZW1iZXJvZiBGb3JtQ29udHJvbEJhc2VcclxuICAgKi9cclxuICBwdWJsaWMgdmFsaWRhdGlvbkVycm9yczogc3RyaW5nID0gXCJcIjtcclxuXHJcbiAgcHVibGljIGFsbENvbnRyb2xzVG91Y2hlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGNvbXBvbmVudERlc3Ryb3llZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJpdmF0ZSB0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgKSB7IH1cclxuXHJcbiAgcHVibGljIGFzeW5jIG5nT25Jbml0KCkge1xyXG4gICAgLy8gc3Vic2NyaWJlIHRvIHN0YXR1c0NoYW5nZXMgT2JzZXJ2YWJsZSB0byB0YWtlIGFueSBlcnJvcnMgYW5kIHRyYW5zbGF0ZSB0aGVtXHJcbiAgICBpZiAodGhpcy5jb250cm9sKSB7XHJcbiAgICAgIHRoaXMuY29udHJvbC5zdGF0dXNDaGFuZ2VzXHJcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuY29tcG9uZW50RGVzdHJveWVkKSlcclxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgIHRoaXMudHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKHRoaXMuZ2V0RXJyb3JzKHRoaXMuY29udHJvbCEpKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgLy8gKHJlKXNldCB2YWxpZGF0aW9uIG1lc3NhZ2VzXHJcbiAgICAgIHRoaXMudHJhbnNsYXRlVmFsaWRhdGlvbk1lc3NhZ2VzKHRoaXMuZ2V0RXJyb3JzKHRoaXMuY29udHJvbCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLmlkKSB7XHJcbiAgICAgIHRoaXMuYXR0cklkID0gdGhpcy5pZDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEFuZ3VsYXIgb25EZXN0cm95IGxpZmVjeWxlIGhvb2suXHJcbiAgICogVW5zdWJzY3JpYmUgZnJvbSBhbnkgb2JzZXJ2YWJsZXNcclxuICAgKlxyXG4gICAqIEBzZWUgaHR0cHM6Ly9hbmd1bGFyLmlvL2d1aWRlL2xpZmVjeWNsZS1ob29rc1xyXG4gICAqIEBtZW1iZXJvZiBGb3JtQ29udHJvbEJhc2VcclxuICAgKi9cclxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZC5uZXh0KCk7XHJcbiAgICB0aGlzLmNvbXBvbmVudERlc3Ryb3llZC51bnN1YnNjcmliZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRFcnJvcnMoY29udHJvbDogQWJzdHJhY3RDb250cm9sKTogVmFsaWRhdGlvbkVycm9ycyB8IG51bGwge1xyXG4gICAgY29udHJvbC5tYXJrQXNVbnRvdWNoZWQoKTtcclxuXHJcbiAgICBsZXQgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCA9IG51bGw7XHJcbiAgICBsZXQgYWxsVG91Y2hlZDogYm9vbGVhbiA9IHRydWU7XHJcbiAgICBsZXQgY29udHJvbEZvdW5kOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgZm9yRWFjaEZvcm1Db250cm9sKGNvbnRyb2wsIChjb250cm9sOiBBYnN0cmFjdENvbnRyb2wpID0+IHtcclxuICAgICAgZXJyb3JzID0gdGhpcy5hc3NpZ25FcnJvcnMoY29udHJvbCwgZXJyb3JzKTtcclxuICAgICAgaWYgKGNvbnRyb2wudW50b3VjaGVkKSB7XHJcbiAgICAgICAgYWxsVG91Y2hlZCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRyb2xGb3VuZCA9IHRydWU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBpZiAoY29udHJvbC5lcnJvcnMpIHtcclxuICAgICAgZXJyb3JzID0gT2JqZWN0LmFzc2lnbihlcnJvcnMgfHwge30sIGNvbnRyb2wuZXJyb3JzKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoYWxsVG91Y2hlZCAmJiBjb250cm9sRm91bmQpIHtcclxuICAgICAgY29udHJvbC5tYXJrQXNUb3VjaGVkKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGVycm9ycztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXNzaWduRXJyb3JzKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCwgZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCk6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsIHtcclxuICAgIGlmIChjb250cm9sLmVycm9ycykge1xyXG4gICAgICBlcnJvcnMgPSBPYmplY3QuYXNzaWduKGVycm9ycyB8fCB7fSwgY29udHJvbC5lcnJvcnMpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlcnJvcnNcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEZ1bmN0aW9uIHRoYXQgc3Vic2NyaWJlcyB0byB0aGUgY29udHJvbHMgdmFsdWVDaGFuZ2VzIE9ic2VydmFibGVcclxuICAgKiB0byB0YWtlIGFueSBlcnJvcyBhbmQgdHJhbnNsYXRlIHRoZW1cclxuICAgKlxyXG4gICAqIEBwYXJhbSB7Kn0gW2RhdGFdXHJcbiAgICogQHJldHVybnNcclxuICAgKiBAbWVtYmVyb2YgRm9ybUNvbnRyb2xCYXNlXHJcbiAgICovXHJcbiAgcHJpdmF0ZSBhc3luYyB0cmFuc2xhdGVWYWxpZGF0aW9uTWVzc2FnZXMoZXJyb3JzOiBWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbCkge1xyXG4gICAgaWYgKGVycm9ycykge1xyXG4gICAgICBpZih0aGlzLm92ZXJyaWRlVmFsaWRhdGlvbkVycm9yKXtcclxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSB0aGlzLnRyYW5zbGF0ZVNlcnZpY2UuaW5zdGFudCh0aGlzLm92ZXJyaWRlVmFsaWRhdGlvbkVycm9yKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLnZhbGlkYXRpb25NZXNzYWdlU2VydmljZS5nZXRFcnJvck1lc3NhZ2VzKGVycm9ycyk7XHJcbiAgICAgICAgaWYgKG1lc3NhZ2VzKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMgPSBtZXNzYWdlcy5qb2luKCc7ICcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy52YWxpZGF0aW9uRXJyb3JzID0gJyc7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjb250cm9sIGNvbnRyb2wtbGFiZWwte3tsYWJlbFBvc2l0aW9ufX1cIiBbY2xhc3MuZWMtdW50b3VjaGVkXT1cImNvbnRyb2w/LnVudG91Y2hlZFwiPlxyXG4gIDxsYWJlbCAqbmdJZj1cImxhYmVsXCIgbmdQcmVzZXJ2ZVdoaXRlc3BhY2VzPlxyXG5cclxuICAgIDxzcGFuIGlkPVwie3tpZH19X2xhYmVsXCI+e3tsYWJlbCB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwiIWhpZGVWYWxpZGF0aW9uTWVzc2FnZSAmJiB2YWxpZGF0aW9uRXJyb3JzICYmIGNvbnRyb2w/LnRvdWNoZWQgJiYgY29udHJvbD8uaW52YWxpZFwiPnt7dmFsaWRhdGlvbkVycm9ycyB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gIDwvbGFiZWw+XHJcbjwvZGl2PiJdfQ==