@energycap/components 0.31.5 → 0.32.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 (292) hide show
  1. package/energycap-components.min.css +2 -2
  2. package/energycap-email.min.css +1 -1
  3. package/esm2020/energycap-components.mjs +5 -0
  4. package/esm2020/lib/components.module.mjs +386 -0
  5. package/esm2020/lib/controls/banner/banner.component.mjs +106 -0
  6. package/esm2020/lib/controls/button/button.component.mjs +106 -0
  7. package/esm2020/lib/controls/button/copy-button.directive.mjs +65 -0
  8. package/esm2020/lib/controls/checkbox/checkbox.component.mjs +139 -0
  9. package/esm2020/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
  10. package/esm2020/lib/controls/combobox/combobox.component.mjs +841 -0
  11. package/esm2020/lib/controls/dropdown/dropdown.component.mjs +237 -0
  12. package/esm2020/lib/controls/file-upload/file-upload.component.mjs +169 -0
  13. package/esm2020/lib/controls/form-control/form-control.component.mjs +86 -0
  14. package/esm2020/lib/controls/form-control-base.mjs +143 -0
  15. package/esm2020/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  16. package/esm2020/lib/controls/form-group/form-group.component.mjs +252 -0
  17. package/esm2020/lib/controls/help-popover/help-popover.component.mjs +28 -0
  18. package/esm2020/lib/controls/item-picker/item-picker.component.mjs +233 -0
  19. package/esm2020/lib/controls/link-button/link-button.component.mjs +11 -0
  20. package/esm2020/lib/controls/menu/menu.component.mjs +443 -0
  21. package/{esm2015/lib/controls/navigation/link-item.js → esm2020/lib/controls/navigation/link-item.mjs} +0 -0
  22. package/{esm2015/lib/controls/navigation/nav-group.js → esm2020/lib/controls/navigation/nav-group.mjs} +0 -0
  23. package/esm2020/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  24. package/{esm2015/lib/controls/navigation/nav-item.js → esm2020/lib/controls/navigation/nav-item.mjs} +0 -0
  25. package/esm2020/lib/controls/numericbox/numericbox.component.mjs +371 -0
  26. package/esm2020/lib/controls/popover/popover.component.mjs +84 -0
  27. package/{esm2015/lib/controls/radio-button/radio-button-option.js → esm2020/lib/controls/radio-button/radio-button-option.mjs} +0 -0
  28. package/esm2020/lib/controls/radio-button/radio-button.component.mjs +81 -0
  29. package/esm2020/lib/controls/select/select.component.mjs +87 -0
  30. package/esm2020/lib/controls/tabs/tabs.component.mjs +47 -0
  31. package/esm2020/lib/controls/textbox/textbox.component.mjs +154 -0
  32. package/{esm2015/lib/core/cache.service.js → esm2020/lib/core/cache.service.mjs} +9 -8
  33. package/{esm2015/lib/core/custom-validators.js → esm2020/lib/core/custom-validators.mjs} +0 -0
  34. package/{esm2015/lib/core/date-time-helper.js → esm2020/lib/core/date-time-helper.mjs} +0 -0
  35. package/esm2020/lib/core/error.service.mjs +57 -0
  36. package/esm2020/lib/core/scroll.service.mjs +89 -0
  37. package/esm2020/lib/core/telemetry-tracker.service.mjs +16 -0
  38. package/esm2020/lib/core/telemetry.service.mjs +38 -0
  39. package/esm2020/lib/core/validation-message.service.mjs +181 -0
  40. package/{esm2015/lib/core/validation-patterns.js → esm2020/lib/core/validation-patterns.mjs} +0 -0
  41. package/esm2020/lib/core/window.service.mjs +182 -0
  42. package/esm2020/lib/display/app-bar/app-bar.component.mjs +46 -0
  43. package/esm2020/lib/display/avatar/avatar.component.mjs +67 -0
  44. package/{esm2015/lib/display/avatar/avatar.service.js → esm2020/lib/display/avatar/avatar.service.mjs} +9 -7
  45. package/esm2020/lib/display/confirm/confirm.component.mjs +131 -0
  46. package/{esm2015/lib/display/dialog/dialog-content.js → esm2020/lib/display/dialog/dialog-content.mjs} +0 -0
  47. package/esm2020/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  48. package/{esm2015/lib/display/dialog/dialog-types.js → esm2020/lib/display/dialog/dialog-types.mjs} +0 -0
  49. package/esm2020/lib/display/dialog/dialog.component.mjs +242 -0
  50. package/esm2020/lib/display/dialog/dialog.service.mjs +71 -0
  51. package/{esm2015/lib/display/help/help-types.js → esm2020/lib/display/help/help-types.mjs} +0 -0
  52. package/esm2020/lib/display/hierarchy/hierarchy-base.mjs +106 -0
  53. package/{esm2015/lib/display/hierarchy/hierarchy-mocks.spec.js → esm2020/lib/display/hierarchy/hierarchy-mocks.spec.mjs} +5 -9
  54. package/esm2020/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +59 -0
  55. package/esm2020/lib/display/item-display/item-display.component.mjs +67 -0
  56. package/esm2020/lib/display/json-display/json-display.component.mjs +47 -0
  57. package/esm2020/lib/display/resizable/resizable-base.mjs +120 -0
  58. package/esm2020/lib/display/resizable/resizable.component.mjs +57 -0
  59. package/esm2020/lib/display/spinner/spinner.component.mjs +12 -0
  60. package/esm2020/lib/display/splash/splash.component.mjs +42 -0
  61. package/esm2020/lib/display/splash/splash.service.mjs +35 -0
  62. package/esm2020/lib/display/table/resizable-column.component.mjs +20 -0
  63. package/esm2020/lib/display/table/resizable-table.directive.mjs +227 -0
  64. package/esm2020/lib/display/table/searchable-table.component.mjs +338 -0
  65. package/esm2020/lib/display/table/table-detail-row.component.mjs +27 -0
  66. package/esm2020/lib/display/table/table-locked-column.component.mjs +58 -0
  67. package/esm2020/lib/display/table/table-master-header-row.component.mjs +11 -0
  68. package/esm2020/lib/display/table/table-master-row.component.mjs +150 -0
  69. package/esm2020/lib/display/table/table-pagination.component.mjs +150 -0
  70. package/esm2020/lib/display/table/table-selectable-row.component.mjs +235 -0
  71. package/esm2020/lib/display/table/table.component.mjs +244 -0
  72. package/esm2020/lib/display/tags/tag.mjs +15 -0
  73. package/esm2020/lib/display/tags/tags.component.mjs +77 -0
  74. package/esm2020/lib/display/toast/toast/toast.component.mjs +77 -0
  75. package/{esm2015/lib/display/toast/toast-types.js → esm2020/lib/display/toast/toast-types.mjs} +0 -0
  76. package/esm2020/lib/display/toast/toast.service.mjs +35 -0
  77. package/esm2020/lib/display/toast/toaster/toaster.component.mjs +114 -0
  78. package/esm2020/lib/display/tooltip/tooltip.component.mjs +25 -0
  79. package/esm2020/lib/display/tooltip/tooltip.service.mjs +63 -0
  80. package/esm2020/lib/display/tree/tree.component.mjs +125 -0
  81. package/esm2020/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  82. package/esm2020/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  83. package/esm2020/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  84. package/esm2020/lib/shared/directives/popup/popup-container.directive.mjs +163 -0
  85. package/esm2020/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  86. package/esm2020/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  87. package/esm2020/lib/shared/display/pipes/relative-date.pipe.mjs +48 -0
  88. package/esm2020/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  89. package/esm2020/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  90. package/{esm2015/lib/shared/display.js → esm2020/lib/shared/display.mjs} +0 -0
  91. package/esm2020/lib/shared/form-group.helper.mjs +67 -0
  92. package/{esm2015/lib/shared/json-helper.js → esm2020/lib/shared/json-helper.mjs} +0 -0
  93. package/{esm2015/lib/shared/lodash-helper.js → esm2020/lib/shared/lodash-helper.mjs} +0 -0
  94. package/esm2020/lib/shared/page/page-base/page-base.component.mjs +339 -0
  95. package/{esm2015/lib/shared/page/page-statuses.js → esm2020/lib/shared/page/page-statuses.mjs} +0 -0
  96. package/esm2020/lib/shared/page/page-title/page-title.component.mjs +23 -0
  97. package/esm2020/lib/shared/page/page-view/page-view.component.mjs +121 -0
  98. package/{esm2015/lib/shared/testing/hierarchy-base-test-injector-factory.spec.js → esm2020/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs} +0 -0
  99. package/esm2020/lib/shared/testing/page-base-component-test-helper.spec.mjs +30 -0
  100. package/{esm2015/lib/shared/testing/page-base-component-test-injector-factory.spec.js → esm2020/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs} +0 -0
  101. package/esm2020/lib/shared/testing/public-mocks.spec.mjs +132 -0
  102. package/{esm2015/lib/shared/testing/spy-factory.spec.js → esm2020/lib/shared/testing/spy-factory.spec.mjs} +0 -0
  103. package/{esm2015/lib/shared/testing/translation-mocks.spec.js → esm2020/lib/shared/testing/translation-mocks.spec.mjs} +0 -0
  104. package/esm2020/lib/shared/user-preference.service.mjs +17 -0
  105. package/esm2020/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  106. package/esm2020/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
  107. package/esm2020/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
  108. package/{esm2015/public-api.js → esm2020/public-api.mjs} +0 -0
  109. package/fesm2015/energycap-components.mjs +10090 -0
  110. package/fesm2015/energycap-components.mjs.map +1 -0
  111. package/fesm2020/energycap-components.mjs +9999 -0
  112. package/fesm2020/energycap-components.mjs.map +1 -0
  113. package/index.d.ts +5 -0
  114. package/lib/components.module.d.ts +72 -0
  115. package/lib/controls/banner/banner.component.d.ts +3 -0
  116. package/lib/controls/button/button.component.d.ts +3 -0
  117. package/lib/controls/button/copy-button.directive.d.ts +3 -0
  118. package/lib/controls/checkbox/checkbox.component.d.ts +3 -0
  119. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +3 -0
  120. package/lib/controls/combobox/combobox.component.d.ts +5 -2
  121. package/lib/controls/dropdown/dropdown.component.d.ts +3 -0
  122. package/lib/controls/file-upload/file-upload.component.d.ts +5 -2
  123. package/lib/controls/form-control/form-control.component.d.ts +3 -0
  124. package/lib/controls/form-control-base.d.ts +3 -0
  125. package/lib/controls/form-control-label/form-control-label.component.d.ts +3 -0
  126. package/lib/controls/form-group/form-group.component.d.ts +6 -3
  127. package/lib/controls/help-popover/help-popover.component.d.ts +3 -0
  128. package/lib/controls/item-picker/item-picker.component.d.ts +5 -2
  129. package/lib/controls/link-button/link-button.component.d.ts +3 -0
  130. package/lib/controls/menu/menu.component.d.ts +3 -0
  131. package/lib/controls/navigation/nav-item-active.directive.d.ts +3 -0
  132. package/lib/controls/numericbox/numericbox.component.d.ts +5 -2
  133. package/lib/controls/popover/popover.component.d.ts +3 -0
  134. package/lib/controls/radio-button/radio-button.component.d.ts +3 -0
  135. package/lib/controls/select/select.component.d.ts +3 -0
  136. package/lib/controls/tabs/tabs.component.d.ts +3 -0
  137. package/lib/controls/textbox/textbox.component.d.ts +3 -0
  138. package/lib/core/cache.service.d.ts +3 -0
  139. package/lib/core/error.service.d.ts +3 -0
  140. package/lib/core/scroll.service.d.ts +3 -0
  141. package/lib/core/telemetry-tracker.service.d.ts +3 -0
  142. package/lib/core/telemetry.service.d.ts +3 -0
  143. package/lib/core/validation-message.service.d.ts +3 -0
  144. package/lib/core/window.service.d.ts +3 -0
  145. package/lib/display/app-bar/app-bar.component.d.ts +3 -0
  146. package/lib/display/avatar/avatar.component.d.ts +3 -0
  147. package/lib/display/avatar/avatar.service.d.ts +3 -0
  148. package/lib/display/confirm/confirm.component.d.ts +5 -2
  149. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +3 -0
  150. package/lib/display/dialog/dialog.component.d.ts +3 -0
  151. package/lib/display/dialog/dialog.service.d.ts +3 -0
  152. package/lib/display/hierarchy/hierarchy-base.d.ts +3 -0
  153. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +3 -0
  154. package/lib/display/item-display/item-display.component.d.ts +3 -0
  155. package/lib/display/json-display/json-display.component.d.ts +5 -2
  156. package/lib/display/resizable/resizable-base.d.ts +3 -0
  157. package/lib/display/resizable/resizable.component.d.ts +3 -0
  158. package/lib/display/spinner/spinner.component.d.ts +3 -0
  159. package/lib/display/splash/splash.component.d.ts +3 -0
  160. package/lib/display/splash/splash.service.d.ts +3 -0
  161. package/lib/display/table/resizable-column.component.d.ts +3 -0
  162. package/lib/display/table/resizable-table.directive.d.ts +3 -0
  163. package/lib/display/table/searchable-table.component.d.ts +6 -3
  164. package/lib/display/table/table-detail-row.component.d.ts +3 -0
  165. package/lib/display/table/table-locked-column.component.d.ts +3 -0
  166. package/lib/display/table/table-master-header-row.component.d.ts +3 -0
  167. package/lib/display/table/table-master-row.component.d.ts +3 -0
  168. package/lib/display/table/table-pagination.component.d.ts +3 -0
  169. package/lib/display/table/table-selectable-row.component.d.ts +5 -2
  170. package/lib/display/table/table.component.d.ts +3 -0
  171. package/lib/display/tags/tags.component.d.ts +3 -0
  172. package/lib/display/toast/toast/toast.component.d.ts +3 -0
  173. package/lib/display/toast/toast.service.d.ts +3 -0
  174. package/lib/display/toast/toaster/toaster.component.d.ts +3 -0
  175. package/lib/display/tooltip/tooltip.component.d.ts +3 -0
  176. package/lib/display/tooltip/tooltip.service.d.ts +3 -0
  177. package/lib/display/tree/tree.component.d.ts +3 -0
  178. package/lib/display/view-overlay/view-overlay.component.d.ts +3 -0
  179. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +3 -0
  180. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +3 -0
  181. package/lib/shared/directives/popup/popup-container.directive.d.ts +3 -0
  182. package/lib/shared/display/pipes/date-display.pipe.d.ts +3 -0
  183. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +3 -0
  184. package/lib/shared/display/pipes/relative-date.pipe.d.ts +3 -0
  185. package/lib/shared/display/pipes/row-count.pipe.d.ts +3 -0
  186. package/lib/shared/display/pipes/time-display.pipe.d.ts +3 -0
  187. package/lib/shared/form-group.helper.d.ts +5 -2
  188. package/lib/shared/page/page-base/page-base.component.d.ts +5 -2
  189. package/lib/shared/page/page-title/page-title.component.d.ts +3 -0
  190. package/lib/shared/page/page-view/page-view.component.d.ts +3 -0
  191. package/lib/shared/testing/public-mocks.spec.d.ts +7 -0
  192. package/lib/shared/user-preference.service.d.ts +3 -0
  193. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +3 -0
  194. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +3 -0
  195. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +3 -0
  196. package/package.json +27 -15
  197. package/src/styles/_functions.scss +6 -4
  198. package/src/styles/_icons.scss +1 -1
  199. package/src/styles/mixins/_control-base.scss +2 -2
  200. package/src/styles/mixins/_form-control-base.scss +3 -1
  201. package/src/styles/mixins/_spinner-base.scss +3 -1
  202. package/bundles/energycap-components.umd.js +0 -10646
  203. package/bundles/energycap-components.umd.js.map +0 -1
  204. package/bundles/energycap-components.umd.min.js +0 -17
  205. package/bundles/energycap-components.umd.min.js.map +0 -1
  206. package/energycap-components.d.ts +0 -7
  207. package/energycap-components.metadata.json +0 -1
  208. package/esm2015/energycap-components.js +0 -8
  209. package/esm2015/lib/components.module.js +0 -238
  210. package/esm2015/lib/controls/banner/banner.component.js +0 -94
  211. package/esm2015/lib/controls/button/button.component.js +0 -89
  212. package/esm2015/lib/controls/button/copy-button.directive.js +0 -63
  213. package/esm2015/lib/controls/checkbox/checkbox.component.js +0 -137
  214. package/esm2015/lib/controls/collapsible-toggle/collapsible-toggle.component.js +0 -35
  215. package/esm2015/lib/controls/combobox/combobox.component.js +0 -819
  216. package/esm2015/lib/controls/dropdown/dropdown.component.js +0 -207
  217. package/esm2015/lib/controls/file-upload/file-upload.component.js +0 -172
  218. package/esm2015/lib/controls/form-control/form-control.component.js +0 -65
  219. package/esm2015/lib/controls/form-control-base.js +0 -140
  220. package/esm2015/lib/controls/form-control-label/form-control-label.component.js +0 -139
  221. package/esm2015/lib/controls/form-group/form-group.component.js +0 -254
  222. package/esm2015/lib/controls/help-popover/help-popover.component.js +0 -22
  223. package/esm2015/lib/controls/item-picker/item-picker.component.js +0 -216
  224. package/esm2015/lib/controls/link-button/link-button.component.js +0 -12
  225. package/esm2015/lib/controls/menu/menu.component.js +0 -424
  226. package/esm2015/lib/controls/navigation/nav-item-active.directive.js +0 -86
  227. package/esm2015/lib/controls/numericbox/numericbox.component.js +0 -362
  228. package/esm2015/lib/controls/popover/popover.component.js +0 -85
  229. package/esm2015/lib/controls/radio-button/radio-button.component.js +0 -78
  230. package/esm2015/lib/controls/select/select.component.js +0 -89
  231. package/esm2015/lib/controls/tabs/tabs.component.js +0 -42
  232. package/esm2015/lib/controls/textbox/textbox.component.js +0 -149
  233. package/esm2015/lib/core/error.service.js +0 -56
  234. package/esm2015/lib/core/scroll.service.js +0 -88
  235. package/esm2015/lib/core/telemetry-tracker.service.js +0 -14
  236. package/esm2015/lib/core/telemetry.service.js +0 -40
  237. package/esm2015/lib/core/validation-message.service.js +0 -185
  238. package/esm2015/lib/core/window.service.js +0 -191
  239. package/esm2015/lib/display/app-bar/app-bar.component.js +0 -42
  240. package/esm2015/lib/display/avatar/avatar.component.js +0 -73
  241. package/esm2015/lib/display/confirm/confirm.component.js +0 -127
  242. package/esm2015/lib/display/dialog/dialog-group/dialog-group.component.js +0 -65
  243. package/esm2015/lib/display/dialog/dialog.component.js +0 -229
  244. package/esm2015/lib/display/dialog/dialog.service.js +0 -69
  245. package/esm2015/lib/display/hierarchy/hierarchy-base.js +0 -106
  246. package/esm2015/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.js +0 -58
  247. package/esm2015/lib/display/item-display/item-display.component.js +0 -57
  248. package/esm2015/lib/display/json-display/json-display.component.js +0 -44
  249. package/esm2015/lib/display/resizable/resizable-base.js +0 -119
  250. package/esm2015/lib/display/resizable/resizable.component.js +0 -57
  251. package/esm2015/lib/display/spinner/spinner.component.js +0 -12
  252. package/esm2015/lib/display/splash/splash.component.js +0 -45
  253. package/esm2015/lib/display/splash/splash.service.js +0 -34
  254. package/esm2015/lib/display/table/resizable-column.component.js +0 -23
  255. package/esm2015/lib/display/table/resizable-table.directive.js +0 -223
  256. package/esm2015/lib/display/table/searchable-table.component.js +0 -303
  257. package/esm2015/lib/display/table/table-detail-row.component.js +0 -21
  258. package/esm2015/lib/display/table/table-locked-column.component.js +0 -53
  259. package/esm2015/lib/display/table/table-master-header-row.component.js +0 -11
  260. package/esm2015/lib/display/table/table-master-row.component.js +0 -141
  261. package/esm2015/lib/display/table/table-pagination.component.js +0 -146
  262. package/esm2015/lib/display/table/table-selectable-row.component.js +0 -216
  263. package/esm2015/lib/display/table/table.component.js +0 -210
  264. package/esm2015/lib/display/tags/tag.js +0 -15
  265. package/esm2015/lib/display/tags/tags.component.js +0 -73
  266. package/esm2015/lib/display/toast/toast/toast.component.js +0 -70
  267. package/esm2015/lib/display/toast/toast.service.js +0 -34
  268. package/esm2015/lib/display/toast/toaster/toaster.component.js +0 -117
  269. package/esm2015/lib/display/tooltip/tooltip.component.js +0 -24
  270. package/esm2015/lib/display/tooltip/tooltip.service.js +0 -64
  271. package/esm2015/lib/display/tree/tree.component.js +0 -100
  272. package/esm2015/lib/display/view-overlay/view-overlay.component.js +0 -50
  273. package/esm2015/lib/shared/directives/click-area-for/click-area-for.directive.js +0 -25
  274. package/esm2015/lib/shared/directives/if-viewport-width/if-viewport-width.directive.js +0 -112
  275. package/esm2015/lib/shared/directives/popup/popup-container.directive.js +0 -160
  276. package/esm2015/lib/shared/display/pipes/date-display.pipe.js +0 -49
  277. package/esm2015/lib/shared/display/pipes/highlight-text.pipe.js +0 -26
  278. package/esm2015/lib/shared/display/pipes/relative-date.pipe.js +0 -49
  279. package/esm2015/lib/shared/display/pipes/row-count.pipe.js +0 -47
  280. package/esm2015/lib/shared/display/pipes/time-display.pipe.js +0 -40
  281. package/esm2015/lib/shared/form-group.helper.js +0 -65
  282. package/esm2015/lib/shared/page/page-base/page-base.component.js +0 -356
  283. package/esm2015/lib/shared/page/page-title/page-title.component.js +0 -19
  284. package/esm2015/lib/shared/page/page-view/page-view.component.js +0 -94
  285. package/esm2015/lib/shared/testing/page-base-component-test-helper.spec.js +0 -35
  286. package/esm2015/lib/shared/testing/public-mocks.spec.js +0 -126
  287. package/esm2015/lib/shared/user-preference.service.js +0 -15
  288. package/esm2015/lib/shared/wizard/wizard-base/wizard-base.component.js +0 -260
  289. package/esm2015/lib/shared/wizard/wizard-buttons/wizard-buttons.component.js +0 -54
  290. package/esm2015/lib/shared/wizard/wizard-progress/wizard-progress.component.js +0 -18
  291. package/fesm2015/energycap-components.js +0 -9638
  292. package/fesm2015/energycap-components.js.map +0 -1
@@ -1,78 +0,0 @@
1
- import { Component, ElementRef, Input, ViewChild } from '@angular/core';
2
- import { ValidationMessageService } from '../../core/validation-message.service';
3
- import { FormGroupHelper } from '../../shared/form-group.helper';
4
- import { FormControlBase } from '../form-control-base';
5
- /**
6
- * A single or group of radio button. Only one option can be checked
7
- * at a time
8
- */
9
- export class RadioButtonComponent extends FormControlBase {
10
- constructor(validationMessageService, formGroupHelper) {
11
- super(validationMessageService, formGroupHelper);
12
- this.validationMessageService = validationMessageService;
13
- this.formGroupHelper = formGroupHelper;
14
- /**
15
- * Display the radio button options as a default set of radio button inputs or
16
- * as a toggle switch
17
- * @default 'radio'
18
- */
19
- this.type = "radio";
20
- /**
21
- * One or more options to display
22
- */
23
- this.options = [];
24
- /**
25
- * If there is more than one option, display them in a row or column.
26
- * @default 'row'
27
- */
28
- this.direction = "row";
29
- /**
30
- * The name of the radio input element used to group radio elements
31
- * @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/radio
32
- */
33
- this.name = '';
34
- }
35
- ngOnInit() {
36
- super.ngOnInit();
37
- this.currentClasses = [];
38
- if (this.type === 'toggle') {
39
- this.currentClasses.push('radio-group-toggle');
40
- }
41
- else if (this.direction === 'column') {
42
- this.currentClasses.push('radio-group-column');
43
- }
44
- // If the formModel is assigned an undefined or null value, set it to the first option
45
- this.formModel.valueChanges.subscribe(() => {
46
- if (this.formModel.value === undefined || this.formModel.value === null) {
47
- this.formModel.setValue(this.options[0].value);
48
- }
49
- });
50
- }
51
- ngAfterViewInit() {
52
- if (this.autofocus) {
53
- this.inputElement.nativeElement.focus();
54
- }
55
- if (this.options.length > 5 && this.type === "toggle") {
56
- console.warn("Radio button components with a type of toggle cannot have more than 5 options");
57
- }
58
- }
59
- }
60
- RadioButtonComponent.decorators = [
61
- { type: Component, args: [{
62
- selector: 'ec-radiobutton',
63
- template: "<div class=\"control\"\r\n [class.control-label-bottom]=\"labelPosition === 'bottom'\">\r\n <label *ngIf=\"label\"\r\n ngPreserveWhitespaces>\r\n <span>{{label | translate}}</span>\r\n\r\n <span *ngIf=\"validationErrors.length > 0 && formModel.touched && formModel.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n\r\n\r\n <div class=\"radio-group {{'toggle-options-' + options.length}}\"\r\n [ngClass]=\"currentClasses\"\r\n [class.is-disabled]=\"formModel.disabled\"\r\n [class.is-readonly]=\"readonly\">\r\n\r\n <!-- RadioButton type=\"toggle\"-->\r\n <!-- There are two ng-templates here due to the fact you can't have ngIf and ngFor on the same element -->\r\n <ng-container *ngIf=\"type === 'toggle'\">\r\n <ng-container *ngFor=\"let option of options; index as i; first as isFirst\">\r\n <!-- The input has two name attributes set, one is for the form model and one is for the broswer. With one set\r\n the tabbing did not work, and with the other the controls were all linked together. They both need set\r\n for the best of both worlds -->\r\n <input [attr.id]=\"inputId + i.toString()\"\r\n [formControl]=\"formModel\"\r\n type=\"radio\"\r\n tabindex=\"{{tabindex}}\"\r\n [value]=\"option.value\"\r\n #radioInput\r\n name=\"{{name}}\"\r\n attr.name=\"{{name}}\"\r\n [attr.cdkFocusInitial]=\"(autofocus && isFirst) || null\">\r\n <label [attr.for]=\"inputId + i.toString()\"\r\n title=\"{{ option.tooltip | translate}}\">\r\n <i class=\"ec-icon {{option.icon}}\" *ngIf=\"option.icon\"></i>\r\n <span id=\"{{inputId}}_label{{i.toString()}}\" *ngIf=\"option.label\">{{option.label | translate}}</span>\r\n </label>\r\n </ng-container>\r\n <a>\r\n <div class=\"toggle-handle\"></div>\r\n </a>\r\n <div class=\"toggle-focused\"></div>\r\n </ng-container>\r\n\r\n <!-- RadioButton type=\"radio\"-->\r\n <!-- There are two ng-templates here due to the fact you can't have ngIf and ngFor on the same element -->\r\n <ng-container *ngIf=\"type === 'radio'\">\r\n <ng-container *ngFor=\"let option of options; index as i; first as isFirst\">\r\n <label class='radio-button'\r\n title=\"{{ option.tooltip | translate}}\">\r\n <!-- The input has two name attributes set, one is for the form model and one is for the broswer. With one set\r\n the tabbing did not work, and with the other the controls were all linked together. They both need set\r\n for the best of both worlds -->\r\n <input [attr.id]=\"inputId + i.toString()\"\r\n class=\"input\"\r\n [formControl]=\"formModel\"\r\n type=\"radio\"\r\n value=\"{{option.value}}\"\r\n #radioInput\r\n tabindex=\"{{tabindex}}\"\r\n name=\"{{name}}\"\r\n attr.name=\"{{name}}\"\r\n [attr.cdkFocusInitial]=\"(autofocus && isFirst) || null\">\r\n <span class=\"indicator\"></span>\r\n <span id=\"{{inputId}}_label{{i.toString()}}\"\r\n class=\"label\"\r\n *ngIf=\"option.label\"\r\n [innerHtml]=\"option.label | translate\"></span>\r\n </label>\r\n </ng-container>\r\n </ng-container>\r\n\r\n </div>\r\n\r\n</div>\r\n",
64
- styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{color:var(--ec-color-primary-dark);display:block;font-family:var(--ec-font-family);font-size:var(--ec-font-size-body);margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{display:flex;flex-direction:column;width:100%}: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-bottom:0;margin-top: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{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background-clip:border-box;background-color:rgba(26,26,35,.12);background-image:none;border-color:transparent;color:var(--ec-color-primary-dark);opacity:1;overflow:hidden;pointer-events:none;user-select:none;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-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-position:.25rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:not(:focus){border-color:var(--ec-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-background-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-color-caution)}:host .textbox-group{display:flex;position:relative}:host input:focus,:host select:focus,:host textarea:focus{outline:none}:host(.w-auto){width:auto}.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}.radio-group{display:flex;flex-wrap:wrap}.radio-group-column{flex-direction:column}.radio-group-column .radio-button{margin-right:auto}.radio-group.is-disabled .radio-button{cursor:default}.radio-group.is-readonly .radio-button{pointer-events:none}.radio-group.is-readonly .radio-button .input{opacity:0}.radio-group.is-readonly .radio-button .indicator{background-color:rgba(26,26,35,.12);border:0}.radio-group.is-readonly .radio-button .indicator,.radio-group.is-readonly .radio-button .label,.radio-group.is-readonly.radio-group-toggle{color:var(--ec-color-primary-dark);opacity:1}.radio-group.is-readonly.radio-group-toggle{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background-clip:border-box;background-color:rgba(26,26,35,.12);background-image:none;border-color:transparent;overflow:hidden;pointer-events:none;user-select:none;white-space:nowrap}.radio-group.is-readonly.radio-group-toggle a,.radio-group.is-readonly.radio-group-toggle input:not(:checked),.radio-group.is-readonly.radio-group-toggle input:not(:checked)+label{display:none}.radio-group.is-readonly.radio-group-toggle input:checked+label{color:inherit;justify-content:flex-start}.radio-button{cursor:pointer;display:inline-flex;margin-bottom:0;position:relative}.radio-button:not(:last-child){margin-right:1rem}.input{margin-top:.5rem;opacity:0;position:absolute;z-index:-1}.input:not(:checked)+.indicator{color:var(--ec-border-color)}.input:not(:checked)+.indicator:before{display:none}.input:focus+.indicator{box-shadow:0 0 0 .0625rem var(--ec-color-interactive);color:var(--ec-color-interactive)}.input:disabled+.indicator{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color)}.input:disabled+.indicator,.input:disabled~.label{color:var(--ec-color-secondary-dark);opacity:.65}.indicator{align-items:center;background-clip:padding-box;background-color:var(--ec-background-color);border:1px solid;border-radius:50%;color:var(--ec-color-interactive);display:inline-flex;flex:none;height:1em;justify-content:center;margin-top:.5rem;pointer-events:none;width:1em}.indicator:before{background-color:currentColor;border-radius:50%;content:\"\";display:block;height:.5em;width:.5em}.label{height:2rem;height:auto;line-height:1.25;margin-left:.5rem;min-height:2rem;padding:.375rem 0}.radio-group-toggle{background-color:var(--ec-border-color-legacy);border:.0625rem solid var(--ec-border-color-legacy);border-radius:var(--ec-border-radius);color:var(--ec-color-hint-dark);display:flex;font-size:var(--ec-font-size-body);min-height:2em;position:relative}.radio-group-toggle input{opacity:0;position:absolute;z-index:-1}.radio-group-toggle input:checked+label{color:#0084a9}.radio-group-toggle input:checked:last-of-type~a{transform:translateX(100%)}.radio-group-toggle input:focus~.toggle-focused{display:block}.radio-group-toggle .toggle-focused{border-radius:var(--ec-border-radius);bottom:0;box-shadow:0 0 0 .125rem var(--ec-color-interactive);display:none;left:0;position:absolute;right:0;top:0}.radio-group-toggle label{align-items:center;cursor:pointer;display:flex;flex:1 1 0%;justify-content:center;line-height:1.1em;margin-bottom:0;padding:.375rem .5rem;position:relative;text-align:center;transition:color .3s ease;z-index:2}.radio-group-toggle label .ec-icon{color:inherit}.radio-group-toggle a{border:.1875rem solid transparent;border-radius:calc(var(--ec-border-radius)*0.75);display:block;height:100%;left:0;position:absolute;top:0;transition:transform .25s ease;width:50%;z-index:1}.radio-group-toggle a .toggle-handle{background-color:var(--ec-background-color);border-radius:calc(var(--ec-border-radius)*0.75);height:100%}.radio-group-toggle.is-disabled{background-color:var(--ec-background-color-disabled);color:var(--ec-color-secondary-dark);opacity:.65}.radio-group-toggle.is-disabled label{color:inherit!important;cursor:default}.radio-group-toggle.is-disabled a.toggle-handle{background-color:var(--ec-color-hint-light)}.toggle-options-3 a{width:33.3333333333%}.toggle-options-3 input:checked:last-of-type~a{transform:translateX(200%)}.toggle-options-3 input:checked:nth-of-type(2)~a{transform:translateX(100%)}.toggle-options-4 a{width:25%}.toggle-options-4 input:checked:last-of-type~a{transform:translateX(300%)}.toggle-options-4 input:checked:nth-of-type(3)~a{transform:translateX(200%)}.toggle-options-4 input:checked:nth-of-type(2)~a{transform:translateX(100%)}.toggle-options-5 a{width:20%}.toggle-options-5 input:checked:last-of-type~a{transform:translateX(400%)}.toggle-options-5 input:checked:nth-of-type(4)~a{transform:translateX(300%)}.toggle-options-5 input:checked:nth-of-type(3)~a{transform:translateX(200%)}.toggle-options-5 input:checked:nth-of-type(2)~a{transform:translateX(100%)}"]
65
- },] }
66
- ];
67
- RadioButtonComponent.ctorParameters = () => [
68
- { type: ValidationMessageService },
69
- { type: FormGroupHelper }
70
- ];
71
- RadioButtonComponent.propDecorators = {
72
- type: [{ type: Input }],
73
- options: [{ type: Input }],
74
- direction: [{ type: Input }],
75
- name: [{ type: Input }],
76
- inputElement: [{ type: ViewChild, args: ['radioInput',] }]
77
- };
78
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFVLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMvRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBb0J2RDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sb0JBQXFCLFNBQVEsZUFBZTtJQXFDdkQsWUFDWSx3QkFBa0QsRUFDbEQsZUFBZ0M7UUFFMUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSHZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBdEM1Qzs7OztXQUlHO1FBQ2EsU0FBSSxHQUFxQixPQUFPLENBQUM7UUFFakQ7O1dBRUc7UUFDYSxZQUFPLEdBQXdCLEVBQUUsQ0FBQztRQUVsRDs7O1dBR0c7UUFDYSxjQUFTLEdBQTBCLEtBQUssQ0FBQztRQUV6RDs7O1VBR0U7UUFDYyxTQUFJLEdBQVcsRUFBRSxDQUFDO0lBbUJsQyxDQUFDO0lBRUQsUUFBUTtRQUNOLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUV6QixJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssUUFBUSxFQUFFO1lBQzFCLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDaEQ7YUFBTSxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7U0FDaEQ7UUFFRCxzRkFBc0Y7UUFDdEYsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUN6QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJLEVBQUU7Z0JBQ3ZFLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7YUFDaEQ7UUFDSCxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFRCxlQUFlO1FBQ2IsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ2xCLElBQUksQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ3pDO1FBRUQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUU7WUFDckQsT0FBTyxDQUFDLElBQUksQ0FBQywrRUFBK0UsQ0FBQyxDQUFDO1NBQy9GO0lBQ0gsQ0FBQzs7O1lBaEZGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsZ0JBQWdCO2dCQUMxQixxaEhBQTRDOzthQUU3Qzs7O1lBcEJRLHdCQUF3QjtZQUN4QixlQUFlOzs7bUJBK0JyQixLQUFLO3NCQUtMLEtBQUs7d0JBTUwsS0FBSzttQkFNTCxLQUFLOzJCQVlMLFNBQVMsU0FBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBJbnB1dCwgT25Jbml0LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sQmFzZSB9IGZyb20gJy4uL2Zvcm0tY29udHJvbC1iYXNlJztcclxuaW1wb3J0IHsgUmFkaW9CdXR0b25PcHRpb24gfSBmcm9tICcuL3JhZGlvLWJ1dHRvbi1vcHRpb24nO1xyXG5cclxuXHJcbi8qKlxyXG4gKiBSb3cgZGlzcGxheXMgb3B0aW9ucyBob3Jpem9udGFsbHksIGNvbHVtbiBkaXNwbGF5cyBvcHRpb25zIHZlcnRpY2FsbHlcclxuICovXHJcbmV4cG9ydCB0eXBlIFJhZGlvQnV0dG9uRGlyZWN0aW9uID0gXCJyb3dcIiB8IFwiY29sdW1uXCI7XHJcblxyXG4vKipcclxuICogUmFkaW8gaXMgdGhlIGRlZmF1bHQgYnV0dG9uIHN0eWxlLCB0b2dnbGUgd2lsbCBzdHlsZSBhcyBhIHRvZ2dsZSBzd2l0Y2hcclxuICovXHJcbmV4cG9ydCB0eXBlIFJhZGlvQnV0dG9uVHlwZSA9IFwicmFkaW9cIiB8IFwidG9nZ2xlXCI7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2VjLXJhZGlvYnV0dG9uJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9yYWRpby1idXR0b24uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuLyoqXHJcbiAqIEEgc2luZ2xlIG9yIGdyb3VwIG9mIHJhZGlvIGJ1dHRvbi4gT25seSBvbmUgb3B0aW9uIGNhbiBiZSBjaGVja2VkXHJcbiAqIGF0IGEgdGltZVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIFJhZGlvQnV0dG9uQ29tcG9uZW50IGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25Jbml0IHtcclxuICAvKipcclxuICAgKiBEaXNwbGF5IHRoZSByYWRpbyBidXR0b24gb3B0aW9ucyBhcyBhIGRlZmF1bHQgc2V0IG9mIHJhZGlvIGJ1dHRvbiBpbnB1dHMgb3JcclxuICAgKiBhcyBhIHRvZ2dsZSBzd2l0Y2hcclxuICAgKiBAZGVmYXVsdCAncmFkaW8nXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIHR5cGU/OiBSYWRpb0J1dHRvblR5cGUgPSBcInJhZGlvXCI7XHJcblxyXG4gIC8qKlxyXG4gICAqIE9uZSBvciBtb3JlIG9wdGlvbnMgdG8gZGlzcGxheVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBvcHRpb25zOiBSYWRpb0J1dHRvbk9wdGlvbltdID0gW107XHJcblxyXG4gIC8qKlxyXG4gICAqIElmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUgb3B0aW9uLCBkaXNwbGF5IHRoZW0gaW4gYSByb3cgb3IgY29sdW1uLlxyXG4gICAqIEBkZWZhdWx0ICdyb3cnXHJcbiAgICovXHJcbiAgQElucHV0KCkgcHVibGljIGRpcmVjdGlvbj86IFJhZGlvQnV0dG9uRGlyZWN0aW9uID0gXCJyb3dcIjtcclxuXHJcbiAgLyoqXHJcbiAgKiBUaGUgbmFtZSBvZiB0aGUgcmFkaW8gaW5wdXQgZWxlbWVudCB1c2VkIHRvIGdyb3VwIHJhZGlvIGVsZW1lbnRzXHJcbiAgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0hUTUwvRWxlbWVudC9pbnB1dC9yYWRpb1xyXG4gICovXHJcbiAgQElucHV0KCkgcHVibGljIG5hbWU6IHN0cmluZyA9ICcnO1xyXG5cclxuICAvKipcclxuICAgKiBBbiBhcnJheSBvZiBjbGFzc25hbWVzIHRoYXQgd2lsbCBiZSBwYXNzZWQgaW50byBuZ0NsYXNzXHJcbiAgICovXHJcbiAgcHVibGljIGN1cnJlbnRDbGFzc2VzITogc3RyaW5nW107XHJcblxyXG4gIC8qKlxyXG4gICAqIFJlZmVyZW5jZSB0byB0aGUgZmlyc3QgaW5wdXQgZm91bmQgd2l0aCB0aGUgcmFkaW9JbnB1dCByZWZlcmVuY2UgdmFyaWFibGUuICBBbGwgcmFkaW9cclxuICAgKiBpbnB1dHMgZm9yIHRoaXMgY29tcG9uZW50IHdpbGwgYmUgdGFnZ2VkIHdpdGggdGhpcyByZWYgdmFyaWFibGUsIGJ1dCBvbmx5IHRoZSBmaXJzdCBmb3VuZFxyXG4gICAqIHdpbGwgYmUgc2VsZWN0ZWQgYXMgdGhlIGlucHV0RWxlbWVudCBmb3IgYXV0b2ZvY3VzXHJcbiAgICovXHJcbiAgQFZpZXdDaGlsZCgncmFkaW9JbnB1dCcpIHByb3RlY3RlZCBpbnB1dEVsZW1lbnQhOiBFbGVtZW50UmVmO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCB2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2U6IFZhbGlkYXRpb25NZXNzYWdlU2VydmljZSxcclxuICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlclxyXG4gICkge1xyXG4gICAgc3VwZXIodmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLCBmb3JtR3JvdXBIZWxwZXIpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICBzdXBlci5uZ09uSW5pdCgpO1xyXG4gICAgdGhpcy5jdXJyZW50Q2xhc3NlcyA9IFtdO1xyXG5cclxuICAgIGlmICh0aGlzLnR5cGUgPT09ICd0b2dnbGUnKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudENsYXNzZXMucHVzaCgncmFkaW8tZ3JvdXAtdG9nZ2xlJyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGlyZWN0aW9uID09PSAnY29sdW1uJykge1xyXG4gICAgICB0aGlzLmN1cnJlbnRDbGFzc2VzLnB1c2goJ3JhZGlvLWdyb3VwLWNvbHVtbicpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIElmIHRoZSBmb3JtTW9kZWwgaXMgYXNzaWduZWQgYW4gdW5kZWZpbmVkIG9yIG51bGwgdmFsdWUsIHNldCBpdCB0byB0aGUgZmlyc3Qgb3B0aW9uXHJcbiAgICB0aGlzLmZvcm1Nb2RlbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuZm9ybU1vZGVsLnZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy5mb3JtTW9kZWwudmFsdWUgPT09IG51bGwpIHtcclxuICAgICAgICB0aGlzLmZvcm1Nb2RlbC5zZXRWYWx1ZSh0aGlzLm9wdGlvbnNbMF0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5vcHRpb25zLmxlbmd0aCA+IDUgJiYgdGhpcy50eXBlID09PSBcInRvZ2dsZVwiKSB7XHJcbiAgICAgIGNvbnNvbGUud2FybihcIlJhZGlvIGJ1dHRvbiBjb21wb25lbnRzIHdpdGggYSB0eXBlIG9mIHRvZ2dsZSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gNSBvcHRpb25zXCIpO1xyXG4gICAgfVxyXG4gIH1cclxufSJdfQ==
@@ -1,89 +0,0 @@
1
- import { Component, ElementRef, Input } from '@angular/core';
2
- import { ValidationMessageService } from '../../core/validation-message.service';
3
- import { FormGroupHelper } from '../../shared/form-group.helper';
4
- import { FormControlBase } from '../form-control-base';
5
- export class SelectComponent extends FormControlBase {
6
- constructor(validationMessageService, formGroupHelper, el) {
7
- super(validationMessageService, formGroupHelper);
8
- this.validationMessageService = validationMessageService;
9
- this.formGroupHelper = formGroupHelper;
10
- this.el = el;
11
- /**
12
- * When the component is not required, defines the label for an additional first option that sets the control to null
13
- */
14
- this.placeholder = '';
15
- /**
16
- * When the component is not required, an additional option is added with a value of null.
17
- */
18
- this.options = [];
19
- /**
20
- * Select a default option automatically during initialization and when options change. Default: `true`.
21
- * * If formModel has a value
22
- * * Make no change if the current value exists in options
23
- * * Otherwise, set value to the first option if control is required, or null if optional and emit event
24
- * * If formModel has no value
25
- * * Set value to first option if control is required and emit eventSet to false to manually manage form state.
26
- *
27
- * Set to false to opt out of automatic state management
28
- */
29
- this.autoDefault = true;
30
- }
31
- ngOnChanges(changes) {
32
- if (changes.options && this.autoDefault) {
33
- this.onOptionsChange(changes.options.firstChange);
34
- }
35
- super.ngOnChanges(changes);
36
- }
37
- ngAfterViewInit() {
38
- if (this.autofocus) {
39
- this.focus();
40
- }
41
- if (!this.autoDefault) {
42
- console.warn(`SelectComponent#${this.id} has 'autoDefault' set to false and will not select the default option.`);
43
- }
44
- }
45
- focus() {
46
- const hostEl = this.el.nativeElement;
47
- const selectEl = hostEl.querySelector('select');
48
- if (selectEl) {
49
- selectEl.focus();
50
- }
51
- }
52
- /**
53
- * If formModel has a value
54
- * * Make no change if the current value exists in options
55
- * * Otherwise, set value to the first option if control is required, or null if optional and emit event
56
- * If formModel has no value
57
- * * Set value to first option if control is required and emit event
58
- */
59
- onOptionsChange(firstChange) {
60
- var _a, _b;
61
- if (this.formModel.value !== null && this.formModel.value !== undefined && this.formModel.value !== '') {
62
- if (this.options.every(opt => opt.value !== this.formModel.value)) {
63
- const value = this.required ? (_a = this.options[0]) === null || _a === void 0 ? void 0 : _a.value : null;
64
- this.formModel.setValue(value, { emitEvent: !firstChange });
65
- }
66
- }
67
- else if (this.required) {
68
- this.formModel.setValue((_b = this.options[0]) === null || _b === void 0 ? void 0 : _b.value, { emitEvent: !firstChange });
69
- }
70
- }
71
- }
72
- SelectComponent.decorators = [
73
- { type: Component, args: [{
74
- selector: 'ec-select',
75
- template: "<div class=\"control\"\r\n [ngClass]=\"{'is-readonly': readonly, 'is-disabled': formModel.disabled}\">\r\n <label for=\"{{id}}_select\"\r\n *ngIf=\"label\"\r\n ngPreserveWhitespaces>{{label|translate}}</label>\r\n <select [attr.id]=\"inputId\"\r\n tabindex=\"{{tabindex}}\"\r\n [formControl]=\"formModel\"\r\n [attr.required]=\"required\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n <option *ngIf=\"!required\"\r\n [ngValue]=\"null\">{{placeholder}}</option>\r\n <option *ngFor=\"let option of options\"\r\n [ngValue]=\"option.value\">{{option.label}}</option>\r\n </select>\r\n</div>",
76
- styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{color:var(--ec-color-primary-dark);display:block;font-family:var(--ec-font-family);font-size:var(--ec-font-size-body);margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{display:flex;flex-direction:column;width:100%}: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-bottom:0;margin-top: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{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background-clip:border-box;background-color:rgba(26,26,35,.12);background-image:none;border-color:transparent;color:var(--ec-color-primary-dark);opacity:1;overflow:hidden;pointer-events:none;user-select:none;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-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-position:.25rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:not(:focus){border-color:var(--ec-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-background-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-color-caution)}:host .textbox-group{display:flex;position:relative}:host input:focus,:host select:focus,:host textarea:focus{outline:none}:host 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}:host select{-moz-appearance:none;-webkit-appearance:none;appearance:none;background-clip:padding-box;background-color:var(--ec-background-color);background-image:none;background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M32 8L16 24 0 8z\"/></svg>');background-position:right .5rem center;background-repeat:no-repeat;background-size:.75rem,.75rem;border:.0625rem solid var(--ec-border-color-legacy);border-radius:var(--ec-border-radius);height:2rem;line-height:1.25;padding:.3125rem 1.5rem .3125rem .5rem;width:100%}:host select::-moz-selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host select::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host select::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}:host select::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host select:-ms-input-placeholder{color:var(--ec-color-hint-dark)}:host select:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host select:required.is-empty{background-color:var(--ec-background-color);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"%23ffe433\" d=\"M31.32 21.69l-.09.18-2.48 4.35c-.36.54-.77.62-1.25.27-.12 0-.2 0-.2-.09L19.53 22v9.37a1.26 1.26 0 0 1-.72.67h-5.26c-.59 0-.83-.3-.83-.89 0-.12.15-.21.15-.27V22l-8 4.71h-.12c-.42.66-.8.21-1.16-.27L1 21.82a.82.82 0 0 1 .35-1.26l.18-.1L9 16 .87 11.47v-.09c0-.36-.39-.74-.09-1.16l2.75-4.35v-.09c0-.42.82-.54 1.29-.36l8 4.62V.89c0-.59.18-.89.77-.89h5c.65 0 .91.3.91.89V10l7.94-4.53c.48-.29.72-.21 1.08.27l2.32 4.35v.09c.66.48.45.89-.08 1.25L23 16l7.91 4.53v.09c-.04.18.53.54.41 1.07z\"/></svg>');border-color:var(--ec-border-color-legacy)}:host select.ng-invalid.ng-touched,:host select:required.is-empty{background-position:.25rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host select.ng-invalid.ng-touched{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>')}:host select.ng-invalid.ng-touched:not(:focus){border-color:var(--ec-color-caution)}:host select.is-pending.ng-invalid,:host select.is-pending.ng-pending,:host select.is-pending.ng-valid{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 50 50\"><path fill=\"%230084a9\" d=\"M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z\"><animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.8s\" repeatCount=\"indefinite\"/></path></svg>');background-position:.25rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host select:focus,:host select:focus.is-empty{border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);position:relative;z-index:1}:host select:disabled{color:var(--ec-color-secondary-dark);opacity:.65}:host select:disabled,:host select:disabled:required,:host select:disabled:required.is-empty{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy)}:host select:disabled:required,:host select:disabled:required.is-empty{background-image:none;padding-left:.5rem}:host select.is-uppercase:not(.is-empty){text-transform:uppercase}:host select:focus{position:static}"]
77
- },] }
78
- ];
79
- SelectComponent.ctorParameters = () => [
80
- { type: ValidationMessageService },
81
- { type: FormGroupHelper },
82
- { type: ElementRef }
83
- ];
84
- SelectComponent.propDecorators = {
85
- placeholder: [{ type: Input }],
86
- options: [{ type: Input }],
87
- autoDefault: [{ type: Input }]
88
- };
89
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb250cm9scy9zZWxlY3Qvc2VsZWN0LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQWlCLFNBQVMsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFpQixNQUFNLGVBQWUsQ0FBQztBQUMzRixPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNqRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBUXZELE1BQU0sT0FBTyxlQUFnQixTQUFRLGVBQWU7SUF3QmxELFlBQ1ksd0JBQWtELEVBQ2xELGVBQWdDLEVBQ2xDLEVBQWM7UUFFdEIsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSnZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2xDLE9BQUUsR0FBRixFQUFFLENBQVk7UUF6QnhCOztXQUVHO1FBQ00sZ0JBQVcsR0FBRyxFQUFFLENBQUM7UUFFMUI7O1dBRUc7UUFDTSxZQUFPLEdBQWUsRUFBRSxDQUFDO1FBRWxDOzs7Ozs7Ozs7V0FTRztRQUNNLGdCQUFXLEdBQVksSUFBSSxDQUFDO0lBUXJDLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBc0I7UUFDaEMsSUFBSSxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDdkMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQ25EO1FBQ0QsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsZUFBZTtRQUNiLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNsQixJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDZDtRQUVELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksQ0FBQyxFQUFFLHlFQUF5RSxDQUFDLENBQUE7U0FDbEg7SUFDSCxDQUFDO0lBRU8sS0FBSztRQUNYLE1BQU0sTUFBTSxHQUFnQixJQUFJLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksUUFBUSxFQUFFO1lBQ1osUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNLLGVBQWUsQ0FBQyxXQUFvQjs7UUFDMUMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLEVBQUUsRUFBRTtZQUN0RyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO2dCQUNqRSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQywwQ0FBRSxLQUFLLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQztnQkFDN0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUMsU0FBUyxFQUFFLENBQUMsV0FBVyxFQUFDLENBQUMsQ0FBQzthQUMzRDtTQUNGO2FBQU0sSUFBRyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxPQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLDBDQUFFLEtBQUssRUFBRSxFQUFDLFNBQVMsRUFBRSxDQUFDLFdBQVcsRUFBQyxDQUFDLENBQUM7U0FDNUU7SUFDSCxDQUFDOzs7WUE5RUYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxXQUFXO2dCQUNyQixxckJBQXNDOzthQUV2Qzs7O1lBVFEsd0JBQXdCO1lBQ3hCLGVBQWU7WUFGVyxVQUFVOzs7MEJBZ0IxQyxLQUFLO3NCQUtMLEtBQUs7MEJBWUwsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFmdGVyVmlld0luaXQsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSW5wdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Hcm91cEhlbHBlciB9IGZyb20gJy4uLy4uL3NoYXJlZC9mb3JtLWdyb3VwLmhlbHBlcic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sQmFzZSB9IGZyb20gJy4uL2Zvcm0tY29udHJvbC1iYXNlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0gfSBmcm9tICcuLi9tZW51L21lbnUuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtc2VsZWN0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgU2VsZWN0Q29tcG9uZW50IGV4dGVuZHMgRm9ybUNvbnRyb2xCYXNlIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gdGhlIGNvbXBvbmVudCBpcyBub3QgcmVxdWlyZWQsIGRlZmluZXMgdGhlIGxhYmVsIGZvciBhbiBhZGRpdGlvbmFsIGZpcnN0IG9wdGlvbiB0aGF0IHNldHMgdGhlIGNvbnRyb2wgdG8gbnVsbFxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyID0gJyc7XHJcblxyXG4gIC8qKlxyXG4gICAqIFdoZW4gdGhlIGNvbXBvbmVudCBpcyBub3QgcmVxdWlyZWQsIGFuIGFkZGl0aW9uYWwgb3B0aW9uIGlzIGFkZGVkIHdpdGggYSB2YWx1ZSBvZiBudWxsLlxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIG9wdGlvbnM6IE1lbnVJdGVtW10gPSBbXTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2VsZWN0IGEgZGVmYXVsdCBvcHRpb24gYXV0b21hdGljYWxseSBkdXJpbmcgaW5pdGlhbGl6YXRpb24gYW5kIHdoZW4gb3B0aW9ucyBjaGFuZ2UuIERlZmF1bHQ6IGB0cnVlYC5cclxuICAgKiAqIElmIGZvcm1Nb2RlbCBoYXMgYSB2YWx1ZVxyXG4gICAqICAgKiBNYWtlIG5vIGNoYW5nZSBpZiB0aGUgY3VycmVudCB2YWx1ZSBleGlzdHMgaW4gb3B0aW9uc1xyXG4gICAqICAgKiBPdGhlcndpc2UsIHNldCB2YWx1ZSB0byB0aGUgZmlyc3Qgb3B0aW9uIGlmIGNvbnRyb2wgaXMgcmVxdWlyZWQsIG9yIG51bGwgaWYgb3B0aW9uYWwgYW5kIGVtaXQgZXZlbnQgIFxyXG4gICAqICogSWYgZm9ybU1vZGVsIGhhcyBubyB2YWx1ZVxyXG4gICAqICAgKiBTZXQgdmFsdWUgdG8gZmlyc3Qgb3B0aW9uIGlmIGNvbnRyb2wgaXMgcmVxdWlyZWQgYW5kIGVtaXQgZXZlbnRTZXQgdG8gZmFsc2UgdG8gbWFudWFsbHkgbWFuYWdlIGZvcm0gc3RhdGUuXHJcbiAgICogXHJcbiAgICogU2V0IHRvIGZhbHNlIHRvIG9wdCBvdXQgb2YgYXV0b21hdGljIHN0YXRlIG1hbmFnZW1lbnRcclxuICAgKi9cclxuICBASW5wdXQoKSBhdXRvRGVmYXVsdDogYm9vbGVhbiA9IHRydWU7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgcHJvdGVjdGVkIGZvcm1Hcm91cEhlbHBlcjogRm9ybUdyb3VwSGVscGVyLFxyXG4gICAgcHJpdmF0ZSBlbDogRWxlbWVudFJlZlxyXG4gICkgeyBcclxuICAgIHN1cGVyKHZhbGlkYXRpb25NZXNzYWdlU2VydmljZSwgZm9ybUdyb3VwSGVscGVyKTtcclxuICB9XHJcblxyXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgIGlmIChjaGFuZ2VzLm9wdGlvbnMgJiYgdGhpcy5hdXRvRGVmYXVsdCkge1xyXG4gICAgICB0aGlzLm9uT3B0aW9uc0NoYW5nZShjaGFuZ2VzLm9wdGlvbnMuZmlyc3RDaGFuZ2UpO1xyXG4gICAgfVxyXG4gICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgfVxyXG4gIFxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmF1dG9mb2N1cykge1xyXG4gICAgICB0aGlzLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIGlmICghdGhpcy5hdXRvRGVmYXVsdCkge1xyXG4gICAgICBjb25zb2xlLndhcm4oYFNlbGVjdENvbXBvbmVudCMke3RoaXMuaWR9IGhhcyAnYXV0b0RlZmF1bHQnIHNldCB0byBmYWxzZSBhbmQgd2lsbCBub3Qgc2VsZWN0IHRoZSBkZWZhdWx0IG9wdGlvbi5gKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb2N1cygpOiB2b2lkIHtcclxuICAgIGNvbnN0IGhvc3RFbDogSFRNTEVsZW1lbnQgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICBjb25zdCBzZWxlY3RFbCA9IGhvc3RFbC5xdWVyeVNlbGVjdG9yKCdzZWxlY3QnKTtcclxuICAgIGlmIChzZWxlY3RFbCkge1xyXG4gICAgICBzZWxlY3RFbC5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSWYgZm9ybU1vZGVsIGhhcyBhIHZhbHVlXHJcbiAgICogICogTWFrZSBubyBjaGFuZ2UgaWYgdGhlIGN1cnJlbnQgdmFsdWUgZXhpc3RzIGluIG9wdGlvbnNcclxuICAgKiAgKiBPdGhlcndpc2UsIHNldCB2YWx1ZSB0byB0aGUgZmlyc3Qgb3B0aW9uIGlmIGNvbnRyb2wgaXMgcmVxdWlyZWQsIG9yIG51bGwgaWYgb3B0aW9uYWwgYW5kIGVtaXQgZXZlbnQgIFxyXG4gICAqIElmIGZvcm1Nb2RlbCBoYXMgbm8gdmFsdWVcclxuICAgKiAgKiBTZXQgdmFsdWUgdG8gZmlyc3Qgb3B0aW9uIGlmIGNvbnRyb2wgaXMgcmVxdWlyZWQgYW5kIGVtaXQgZXZlbnRcclxuICAgKi9cclxuICBwcml2YXRlIG9uT3B0aW9uc0NoYW5nZShmaXJzdENoYW5nZTogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuZm9ybU1vZGVsLnZhbHVlICE9PSBudWxsICYmIHRoaXMuZm9ybU1vZGVsLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgdGhpcy5mb3JtTW9kZWwudmFsdWUgIT09ICcnKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZXZlcnkob3B0ID0+IG9wdC52YWx1ZSAhPT0gdGhpcy5mb3JtTW9kZWwudmFsdWUpKSB7XHJcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnJlcXVpcmVkID8gdGhpcy5vcHRpb25zWzBdPy52YWx1ZSA6ICBudWxsO1xyXG4gICAgICAgIHRoaXMuZm9ybU1vZGVsLnNldFZhbHVlKHZhbHVlLCB7ZW1pdEV2ZW50OiAhZmlyc3RDaGFuZ2V9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmKHRoaXMucmVxdWlyZWQpIHtcclxuICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUodGhpcy5vcHRpb25zWzBdPy52YWx1ZSwge2VtaXRFdmVudDogIWZpcnN0Q2hhbmdlfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,42 +0,0 @@
1
- import { Component, Input } from '@angular/core';
2
- import { NavGroup } from '../navigation/nav-group';
3
- /**
4
- * Component to display navigation tabs
5
- */
6
- export class TabsComponent {
7
- constructor() {
8
- /** The id of the tabs component, will be used as a prefix for each individual tab */
9
- this.id = '';
10
- /** The tabindex of the tabs component, will be applied to each individual tab */
11
- this.tabindex = 0;
12
- /** Display tabs in the default style or as pills */
13
- this.tabStyle = 'tabs';
14
- /** The tabs group */
15
- this.tabs = new NavGroup();
16
- }
17
- /**
18
- * Set the selected tab to the one the user clicked on pressed enter
19
- * when focused. If the event was a keypress.enter and the tab
20
- * has a link, navigate to that link.
21
- */
22
- selectTab(event, tab) {
23
- if (!tab.disabled && (event.type === 'click' || (event.type === 'keypress' && event.key === 'Enter'))) {
24
- this.tabs.selected = tab;
25
- }
26
- }
27
- }
28
- TabsComponent.decorators = [
29
- { type: Component, args: [{
30
- selector: 'ec-tabs',
31
- template: "<ul *ngIf=\"tabs?.items?.length\" class=\"{{tabStyle}}\">\r\n\r\n <li class=\"{{tab.classlist}}\" [ngClass]=\"{'icon-only': tab.icon && !tab.label}\" *ngFor=\"let tab of tabs?.items; index as i;\">\r\n\r\n <a *ngIf=\"tab.url && !tab.disabled\"\r\n tabindex=\"{{tabs?.selected === tab ? -1 : tabindex}}\"\r\n class=\"tab\"\r\n id=\"{{tab.id ? tab.id : id + '_item' + i}}\"\r\n routerLinkActive=\"active\"\r\n [routerLink]=\"tab.url\"\r\n [queryParams]=\"tab.queryParams || null\"\r\n [queryParamsHandling]=\"tab.queryParamsHandling || ''\"\r\n (keypress)=\"selectTab($event, tab)\"\r\n (click)=\"selectTab($event, tab)\">\r\n <i class=\"ec-icon {{tab.icon}}\" *ngIf=\"tab.icon\" [class.mr-1]=\"tab.label\"></i>\r\n <span class=\"text-truncate\">{{tab.label | translate}}</span>\r\n <span *ngIf=\"tab?.indicator\" class=\"indicator ml-1\" [style.background-color]=\"tab?.indicator === true ? '' : tab?.indicator\"></span>\r\n </a>\r\n\r\n <span *ngIf=\"!tab.url || tab.disabled\"\r\n tabindex=\"{{tabs?.selected === tab || tab.disabled ? -1 : tabindex}}\"\r\n id=\"{{tab.id ? tab.id : id + '_item' + i}}\"\r\n class=\"tab\"\r\n [ngClass]=\"{'active': tabs?.selected === tab, 'is-disabled': tab.disabled}\"\r\n (keypress)=\"selectTab($event, tab)\"\r\n (click)=\"selectTab($event, tab)\">\r\n <i class=\"ec-icon {{tab.icon}}\" *ngIf=\"tab.icon\" [class.mr-1]=\"tab.label\"></i>\r\n <span class=\"text-truncate\">{{tab.label | translate}}</span>\r\n <span *ngIf=\"tab?.indicator\" class=\"indicator ml-1\" [style.background-color]=\"tab?.indicator === true ? '' : tab?.indicator\"></span>\r\n </span>\r\n </li>\r\n</ul> ",
32
- styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{display:block}ul{list-style:none;margin:0;padding:0}a{text-decoration:none}.tabs{border-bottom:1px solid var(--ec-border-color-legacy);display:flex;padding-left:1rem;padding-right:1rem}.tabs li{display:block;min-width:0}.tabs li:not(:last-child){margin-right:.25rem}.tabs .tab{align-items:center;border:1px solid transparent;border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:var(--ec-border-radius);border-top-right-radius:var(--ec-border-radius);color:var(--ec-color-secondary-dark);cursor:pointer;display:flex;font-size:var(--ec-font-size-label);height:2rem;justify-content:center;margin-bottom:-1px;min-width:2rem;padding-left:.5rem;padding-right:.5rem}.tabs .tab:hover{color:#354751}.tabs .tab.active{background-color:var(--ec-background-color-body);border-left-color:var(--ec-border-color-legacy);border-right-color:var(--ec-border-color-legacy);border-top-color:var(--ec-border-color-legacy);color:#354751}.tabs .tab:focus{outline:none}.tabs .tab:focus:not(.active):not(.is-disabled){border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);box-shadow:none;position:relative;z-index:1}.tabs .tab.is-disabled{color:var(--ec-color-hint-dark);cursor:default}.pills{display:flex}.pills li{display:block;min-width:0}.pills li:not(:last-child){margin-right:.25rem}.pills .tab{align-items:center;border:1px solid transparent;border-radius:var(--ec-border-radius);color:var(--ec-color-secondary-dark);cursor:pointer;display:flex;font-size:var(--ec-font-size-label);height:1.5rem;justify-content:center;min-width:1.5rem;padding-left:.5rem;padding-right:.5rem}.pills .tab:hover{color:#354751}.pills .tab.active{background-color:#d2d7d9;color:#354751}.pills .tab:focus{outline:none}.pills .tab:focus:not(.active):not(.is-disabled){border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);box-shadow:none;position:relative;z-index:1}.pills .tab.is-disabled{color:var(--ec-color-hint-dark);cursor:default}.icon-only .tab{justify-content:center;padding:0}.indicator{background-color:rgba(111,28,138,.25);border:2px solid #6f1c8a;border-radius:50%;display:block;height:.625rem;width:.625rem}:host(.is-condensed) .pills li,:host(.is-condensed) .tabs li{margin-right:0}:host(.is-condensed) .tab{padding-left:.25rem;padding-right:.25rem}"]
33
- },] }
34
- ];
35
- TabsComponent.ctorParameters = () => [];
36
- TabsComponent.propDecorators = {
37
- id: [{ type: Input }],
38
- tabindex: [{ type: Input }],
39
- tabStyle: [{ type: Input }],
40
- tabs: [{ type: Input, args: ['tabGroup',] }]
41
- };
42
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdGFicy90YWJzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVqRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFRbkQ7O0dBRUc7QUFNSCxNQUFNLE9BQU8sYUFBYTtJQWN4QjtRQVpBLHFGQUFxRjtRQUNyRSxPQUFFLEdBQVcsRUFBRSxDQUFDO1FBRWhDLGlGQUFpRjtRQUNqRSxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBRXJDLG9EQUFvRDtRQUNwQyxhQUFRLEdBQXFCLE1BQU0sQ0FBQztRQUVwRCxxQkFBcUI7UUFDSyxTQUFJLEdBQWEsSUFBSSxRQUFRLEVBQUUsQ0FBQztJQUUxQyxDQUFDO0lBRWpCOzs7O09BSUc7SUFDSSxTQUFTLENBQUMsS0FBWSxFQUFFLEdBQVk7UUFDekMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssVUFBVSxJQUFvQixLQUFNLENBQUMsR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLEVBQUU7WUFDdEgsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsR0FBRyxDQUFDO1NBQzFCO0lBQ0gsQ0FBQzs7O1lBOUJGLFNBQVMsU0FBQztnQkFDVCxRQUFRLEVBQUUsU0FBUztnQkFDbkIseXZEQUFvQzs7YUFFckM7Ozs7aUJBSUUsS0FBSzt1QkFHTCxLQUFLO3VCQUdMLEtBQUs7bUJBR0wsS0FBSyxTQUFDLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE5hdkl0ZW0gfSBmcm9tICcuLi9uYXZpZ2F0aW9uL25hdi1pdGVtJztcclxuaW1wb3J0IHsgTmF2R3JvdXAgfSBmcm9tICcuLi9uYXZpZ2F0aW9uL25hdi1ncm91cCc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFRhYiBleHRlbmRzIE5hdkl0ZW0ge1xyXG4gIHVybDogc3RyaW5nLFxyXG4gIHRhYnM/OiBUYWJbXSxcclxuICBoaWRlPzogQXJyYXk8KC4uLmFyZ3M6IGFueVtdKSA9PiBib29sZWFuPixcclxufVxyXG5cclxuLyoqXHJcbiAqIENvbXBvbmVudCB0byBkaXNwbGF5IG5hdmlnYXRpb24gdGFic1xyXG4gKi9cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy10YWJzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vdGFicy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vdGFicy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUYWJzQ29tcG9uZW50IHtcclxuXHJcbiAgLyoqIFRoZSBpZCBvZiB0aGUgdGFicyBjb21wb25lbnQsIHdpbGwgYmUgdXNlZCBhcyBhIHByZWZpeCBmb3IgZWFjaCBpbmRpdmlkdWFsIHRhYiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBpZDogc3RyaW5nID0gJyc7XHJcblxyXG4gIC8qKiBUaGUgdGFiaW5kZXggb2YgdGhlIHRhYnMgY29tcG9uZW50LCB3aWxsIGJlIGFwcGxpZWQgdG8gZWFjaCBpbmRpdmlkdWFsIHRhYiAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgLyoqIERpc3BsYXkgdGFicyBpbiB0aGUgZGVmYXVsdCBzdHlsZSBvciBhcyBwaWxscyAqL1xyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJTdHlsZTogJ3RhYnMnIHwgJ3BpbGxzJyA9ICd0YWJzJztcclxuXHJcbiAgLyoqIFRoZSB0YWJzIGdyb3VwICovXHJcbiAgQElucHV0KCd0YWJHcm91cCcpIHB1YmxpYyB0YWJzOiBOYXZHcm91cCA9IG5ldyBOYXZHcm91cCgpO1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBTZXQgdGhlIHNlbGVjdGVkIHRhYiB0byB0aGUgb25lIHRoZSB1c2VyIGNsaWNrZWQgb24gcHJlc3NlZCBlbnRlclxyXG4gICAqIHdoZW4gZm9jdXNlZC4gSWYgdGhlIGV2ZW50IHdhcyBhIGtleXByZXNzLmVudGVyIGFuZCB0aGUgdGFiXHJcbiAgICogaGFzIGEgbGluaywgbmF2aWdhdGUgdG8gdGhhdCBsaW5rLlxyXG4gICAqL1xyXG4gIHB1YmxpYyBzZWxlY3RUYWIoZXZlbnQ6IEV2ZW50LCB0YWI6IE5hdkl0ZW0pIHtcclxuICAgIGlmICghdGFiLmRpc2FibGVkICYmIChldmVudC50eXBlID09PSAnY2xpY2snIHx8IChldmVudC50eXBlID09PSAna2V5cHJlc3MnICYmICg8S2V5Ym9hcmRFdmVudD5ldmVudCkua2V5ID09PSAnRW50ZXInKSkpIHtcclxuICAgICAgdGhpcy50YWJzLnNlbGVjdGVkID0gdGFiO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0=
@@ -1,149 +0,0 @@
1
- import { FormGroupHelper } from '../../shared/form-group.helper';
2
- import { Component, Input, ViewChild, ElementRef } from '@angular/core';
3
- import { TranslateService } from "@ngx-translate/core";
4
- import { FormControlBase } from "../form-control-base";
5
- import { ValidationMessageService } from "../../core/validation-message.service";
6
- import { Validators } from '@angular/forms';
7
- /** Advanced validation for textbox form controls */
8
- export const textboxValidation = (validatorParams) => {
9
- return (control) => {
10
- let validators = [];
11
- // Innocent until proven guilty
12
- validatorParams.valid = true;
13
- if (validatorParams.required) {
14
- validators.push(Validators.required);
15
- }
16
- if (validatorParams.minLength !== undefined) {
17
- validators.push(Validators.minLength(validatorParams.minLength));
18
- }
19
- if (validatorParams.maxLength !== undefined) {
20
- validators.push(Validators.maxLength(validatorParams.maxLength));
21
- }
22
- if (validatorParams.pattern !== undefined) {
23
- validators.push(Validators.pattern(validatorParams.pattern));
24
- }
25
- validators.forEach(validator => {
26
- let validationResult = validator(control);
27
- if (validationResult) {
28
- validatorParams.valid = false;
29
- }
30
- });
31
- if (validatorParams.valid) {
32
- return null;
33
- }
34
- else {
35
- return {
36
- textbox: validatorParams
37
- };
38
- }
39
- };
40
- };
41
- export const phoneNumberValidationPattern = '^\\s*(?:\\+?(\\d{1,3}))?[-. (]*(\\d{3})[-. )]*(\\d{3})[-. ]*(\\d{4})(?: *x(\\d+))?\\s*$';
42
- export const urlValidationPattern = '([A-Za-z])+(:\/\/)+[^\\s]*';
43
- export class TextboxComponent extends FormControlBase {
44
- constructor(validationMessageService, formGroupHelper, translate) {
45
- super(validationMessageService, formGroupHelper);
46
- this.validationMessageService = validationMessageService;
47
- this.formGroupHelper = formGroupHelper;
48
- this.translate = translate;
49
- /**
50
- * Set the value of the input's autocomplete attribute
51
- */
52
- this.autocomplete = 'off';
53
- /**
54
- * The textbox type
55
- */
56
- this.type = "text";
57
- /**
58
- * The value of the rows attribute for a textarea. Only applies to multi-line type
59
- */
60
- this.rows = 3;
61
- /**
62
- * If set to true, we will select all text within the input if
63
- * autofocus is also set to true
64
- */
65
- this.selectOnAutofocus = false;
66
- /**
67
- * If set to true, we will upper case on focus out
68
- */
69
- this.upperCase = false;
70
- /**
71
- * Validation pattern for the input. This is determined on the input type specified
72
- */
73
- this.validationPattern = '';
74
- }
75
- ngOnChanges(changes) {
76
- super.ngOnChanges(changes);
77
- }
78
- /**
79
- * The angular onInit lifecycle hook
80
- */
81
- ngOnInit() {
82
- super.ngOnInit();
83
- this.validationPattern = '';
84
- if (this.type === 'tel') {
85
- this.validationPattern = phoneNumberValidationPattern;
86
- }
87
- else if (this.type === 'url') {
88
- this.validationPattern = urlValidationPattern;
89
- }
90
- if (this.placeholder) {
91
- this.translate.get(this.placeholder)
92
- .subscribe((translated) => {
93
- this.placeholder = translated;
94
- });
95
- }
96
- }
97
- /**
98
- * The angular afterViewInit lifecycle hook
99
- */
100
- ngAfterViewInit() {
101
- if (this.autofocus) {
102
- this.setFocus(this.selectOnAutofocus);
103
- }
104
- }
105
- /**
106
- * Function to set focus on an input programmatically after the page
107
- * had been rendered. The highlight text flag will select the text
108
- * within the input if passed in and true
109
- */
110
- setFocus(highlightText) {
111
- this.inputElement.nativeElement.focus();
112
- if (highlightText) {
113
- this.inputElement.nativeElement.select();
114
- }
115
- }
116
- /**
117
- * Focus out event handler
118
- * will upper case and trim value if upperCase is true (this is what we do on the apis)
119
- */
120
- focusOutEvent() {
121
- if (this.upperCase && this.formModel.value) {
122
- this.formModel.setValue(this.formModel.value.toUpperCase().trim());
123
- }
124
- }
125
- }
126
- TextboxComponent.decorators = [
127
- { type: Component, args: [{
128
- selector: 'ec-textbox',
129
- template: "<div class=\"control control-label-{{labelPosition}}\"\r\n [ngClass]=\"{'is-readonly': readonly}\">\r\n <label *ngIf=\"label\" ngPreserveWhitespaces>\r\n\r\n <span>{{label | translate}}</span>\r\n\r\n <span *ngIf=\"validationErrors.length > 0 && formModel.touched && formModel.invalid\">{{validationErrors | translate}}</span>\r\n </label>\r\n <div class=\"input-wrapper control-input\">\r\n <input *ngIf=\"type !== 'multi_line'\"\r\n #textboxInput\r\n email=\"{{type === 'email' ? true : false}}\"\r\n pattern=\"{{validationPattern}}\"\r\n type=\"{{type}}\"\r\n tabindex=\"{{tabindex}}\"\r\n title=\"{{tooltip}}\"\r\n [attr.id]=\"inputId\"\r\n [attr.autocomplete]=\"autocomplete\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.required]=\"required ? required : null\"\r\n [formControl]=\"formModel\"\r\n [ngClass]=\"{'is-empty': !formModel?.value, 'is-pending': pending, 'is-uppercase': upperCase}\"\r\n (focusout)=\"focusOutEvent()\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n\r\n <textarea *ngIf=\"type === 'multi_line'\"\r\n [attr.rows]=\"rows\"\r\n #textboxInput\r\n tabindex=\"{{tabindex}}\"\r\n [attr.id]=\"inputId\"\r\n [attr.placeholder]=\"placeholder\"\r\n [attr.maxlength]=\"maxlength\"\r\n [attr.minlength]=\"minlength\"\r\n [attr.required]=\"required ? required : null\"\r\n [formControl]=\"formModel\"\r\n [ngClass]=\"{'is-empty': formModel?.value === '', 'is-pending': pending}\"\r\n [attr.cdkFocusInitial]=\"autofocus || null\">\r\n </textarea>\r\n </div>\r\n</div>",
130
- styles: [":root{--ec-color-icon:rgba(26,26,35,0.66);--ec-font-size-icon:1rem}@-webkit-keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(1turn)}}:host{color:var(--ec-color-primary-dark);display:block;font-family:var(--ec-font-family);font-size:var(--ec-font-size-body);margin-bottom:1rem;width:100%}:host :host-context(.form-condensed){margin-bottom:.5rem}:host .control{display:flex;flex-direction:column;width:100%}: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-bottom:0;margin-top: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{-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;background-clip:border-box;background-color:rgba(26,26,35,.12);background-image:none;border-color:transparent;color:var(--ec-color-primary-dark);opacity:1;overflow:hidden;pointer-events:none;user-select:none;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-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>');background-position:.25rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-invalid:not(:focus),:host .control.invalid .textbox-group-input ::ng-deep .control input.ng-valid:not(:focus){border-color:var(--ec-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button{background-color:var(--ec-background-color-caution)}:host .control.invalid:not(.open) .textbox-group-btn-right ::ng-deep button:not(:focus){border-color:var(--ec-color-caution)}:host .textbox-group{display:flex;position:relative}:host input:focus,:host select:focus,:host textarea:focus{outline:none}:host 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}:host input{background-clip:padding-box;background-color:var(--ec-background-color);background-image:none;border:.0625rem solid var(--ec-border-color-legacy);border-radius:var(--ec-border-radius);height:2rem;line-height:1.25;padding:.3125rem .5rem;width:100%}:host input::-moz-selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host input::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host input::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}:host input::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host input:-ms-input-placeholder{color:var(--ec-color-hint-dark)}:host input:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host input:required.is-empty{background-color:var(--ec-background-color);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"%23ffe433\" d=\"M31.32 21.69l-.09.18-2.48 4.35c-.36.54-.77.62-1.25.27-.12 0-.2 0-.2-.09L19.53 22v9.37a1.26 1.26 0 0 1-.72.67h-5.26c-.59 0-.83-.3-.83-.89 0-.12.15-.21.15-.27V22l-8 4.71h-.12c-.42.66-.8.21-1.16-.27L1 21.82a.82.82 0 0 1 .35-1.26l.18-.1L9 16 .87 11.47v-.09c0-.36-.39-.74-.09-1.16l2.75-4.35v-.09c0-.42.82-.54 1.29-.36l8 4.62V.89c0-.59.18-.89.77-.89h5c.65 0 .91.3.91.89V10l7.94-4.53c.48-.29.72-.21 1.08.27l2.32 4.35v.09c.66.48.45.89-.08 1.25L23 16l7.91 4.53v.09c-.04.18.53.54.41 1.07z\"/></svg>');border-color:var(--ec-border-color-legacy)}:host input.ng-invalid.ng-touched,:host input:required.is-empty{background-position:.25rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host input.ng-invalid.ng-touched{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>')}:host input.ng-invalid.ng-touched:not(:focus){border-color:var(--ec-color-caution)}:host input.is-pending.ng-invalid,:host input.is-pending.ng-pending,:host input.is-pending.ng-valid{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 50 50\"><path fill=\"%230084a9\" d=\"M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z\"><animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.8s\" repeatCount=\"indefinite\"/></path></svg>');background-position:.25rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host input:focus,:host input:focus.is-empty{border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);position:relative;z-index:1}:host input:disabled{color:var(--ec-color-secondary-dark);opacity:.65}:host input:disabled,:host input:disabled:required,:host input:disabled:required.is-empty{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy)}:host input:disabled:required,:host input:disabled:required.is-empty{background-image:none;padding-left:.5rem}:host input.is-uppercase:not(.is-empty){text-transform:uppercase}:host textarea{background-clip:padding-box;background-color:var(--ec-background-color);background-image:none;border:.0625rem solid var(--ec-border-color-legacy);border-radius:var(--ec-border-radius);display:block;height:auto;line-height:1.25;padding:.3125rem .5rem;resize:none;width:100%}:host textarea::-moz-selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host textarea::selection{background-color:var(--ec-color-interactive);color:var(--ec-color-primary-light)}:host textarea::-webkit-input-placeholder{color:var(--ec-color-hint-dark)}:host textarea::-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host textarea:-ms-input-placeholder{color:var(--ec-color-hint-dark)}:host textarea:-moz-placeholder{color:var(--ec-color-hint-dark);opacity:1}:host textarea:required.is-empty{background-color:var(--ec-background-color);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"%23ffe433\" d=\"M31.32 21.69l-.09.18-2.48 4.35c-.36.54-.77.62-1.25.27-.12 0-.2 0-.2-.09L19.53 22v9.37a1.26 1.26 0 0 1-.72.67h-5.26c-.59 0-.83-.3-.83-.89 0-.12.15-.21.15-.27V22l-8 4.71h-.12c-.42.66-.8.21-1.16-.27L1 21.82a.82.82 0 0 1 .35-1.26l.18-.1L9 16 .87 11.47v-.09c0-.36-.39-.74-.09-1.16l2.75-4.35v-.09c0-.42.82-.54 1.29-.36l8 4.62V.89c0-.59.18-.89.77-.89h5c.65 0 .91.3.91.89V10l7.94-4.53c.48-.29.72-.21 1.08.27l2.32 4.35v.09c.66.48.45.89-.08 1.25L23 16l7.91 4.53v.09c-.04.18.53.54.41 1.07z\"/></svg>');border-color:var(--ec-border-color-legacy)}:host textarea.ng-invalid.ng-touched,:host textarea:required.is-empty{background-position:.25rem .5rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host textarea.ng-invalid.ng-touched{background-color:var(--ec-background-color-caution);background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 32 32\"><path fill=\"rgba(26, 26, 35, 0.66)\" d=\"M20.21 20.21h-8.42L10.95 0h10.1l-.84 20.21zm-8.42 3.37h8.42V32h-8.42z\"/></svg>')}:host textarea.ng-invalid.ng-touched:not(:focus){border-color:var(--ec-color-caution)}:host textarea.is-pending.ng-invalid,:host textarea.is-pending.ng-pending,:host textarea.is-pending.ng-valid{background-image:url('data:image/svg+xml;charset=utf8,<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"40\" height=\"40\" viewBox=\"0 0 50 50\"><path fill=\"%230084a9\" d=\"M43.935 25.145c0-10.318-8.364-18.683-18.683-18.683-10.318 0-18.683 8.365-18.683 18.683h4.068c0-8.071 6.543-14.615 14.615-14.615s14.615 6.543 14.615 14.615h4.068z\"><animateTransform attributeType=\"xml\" attributeName=\"transform\" type=\"rotate\" from=\"0 25 25\" to=\"360 25 25\" dur=\"0.8s\" repeatCount=\"indefinite\"/></path></svg>');background-position:.25rem .5rem;background-repeat:no-repeat;background-size:1rem,1rem;padding-left:1.5rem}:host textarea:focus,:host textarea:focus.is-empty{border-color:var(--ec-color-interactive);box-shadow:0 0 0 .0625rem var(--ec-color-interactive);position:relative;z-index:1}:host textarea:disabled{background-color:var(--ec-background-color-disabled);border-color:var(--ec-border-color-legacy);color:var(--ec-color-secondary-dark);opacity:.65}:host textarea:disabled:required,:host textarea:disabled:required.is-empty{background-color:var(--ec-background-color-disabled);background-image:none;border-color:var(--ec-border-color-legacy);padding-left:.5rem}:host textarea.is-uppercase:not(.is-empty){text-transform:uppercase}:host(.textbox-group-input:not(:last-child)){flex:1 1 0%;width:1px}:host(.textbox-group-input:not(:last-child)) .control{margin-bottom:0}:host(.textbox-group-input:not(:last-child)) .control.is-readonly input{border-right-width:.0625rem}:host(.textbox-group-input:not(:last-child)) input{border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}:host(.textbox-group-input:not(:last-child)) input:focus{border-right-width:.0625rem;position:relative;z-index:1}:host(.text-truncate) input{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}:host(.is-monospace) input,:host(.is-monospace) textarea,:host-context(.is-monospace) input,:host-context(.is-monospace) textarea{font-family:var(--ec-font-family-monospace)}"]
131
- },] }
132
- ];
133
- TextboxComponent.ctorParameters = () => [
134
- { type: ValidationMessageService },
135
- { type: FormGroupHelper },
136
- { type: TranslateService }
137
- ];
138
- TextboxComponent.propDecorators = {
139
- autocomplete: [{ type: Input }],
140
- type: [{ type: Input }],
141
- placeholder: [{ type: Input }],
142
- maxlength: [{ type: Input }],
143
- minlength: [{ type: Input }],
144
- rows: [{ type: Input }],
145
- selectOnAutofocus: [{ type: Input }],
146
- upperCase: [{ type: Input }],
147
- inputElement: [{ type: ViewChild, args: ['textboxInput',] }]
148
- };
149
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGV4dGJveC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvY29udHJvbHMvdGV4dGJveC90ZXh0Ym94LmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDakUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBbUQsTUFBTSxlQUFlLENBQUM7QUFDekgsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFdkQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3ZELE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHVDQUF1QyxDQUFDO0FBQ2pGLE9BQU8sRUFBa0QsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUEwQjVGLG9EQUFvRDtBQUNwRCxNQUFNLENBQUMsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLGVBQTJDLEVBQWUsRUFBRTtJQUMxRixPQUFPLENBQUMsT0FBd0IsRUFBRSxFQUFFO1FBQ2hDLElBQUksVUFBVSxHQUFrQixFQUFFLENBQUM7UUFFbkMsK0JBQStCO1FBQy9CLGVBQWUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBRTdCLElBQUksZUFBZSxDQUFDLFFBQVEsRUFBRTtZQUMxQixVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztTQUN4QztRQUVELElBQUksZUFBZSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDekMsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO1NBQ3BFO1FBRUQsSUFBSSxlQUFlLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUN6QyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7U0FDcEU7UUFFRCxJQUFJLGVBQWUsQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3ZDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUNoRTtRQUVELFVBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDM0IsSUFBSSxnQkFBZ0IsR0FBNEIsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25FLElBQUksZ0JBQWdCLEVBQUU7Z0JBQ2xCLGVBQWUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO2FBQ2pDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxJQUFJLGVBQWUsQ0FBQyxLQUFLLEVBQUU7WUFDdkIsT0FBTyxJQUFJLENBQUM7U0FDZjthQUFNO1lBQ0gsT0FBTztnQkFDSCxPQUFPLEVBQUUsZUFBZTthQUMzQixDQUFDO1NBQ0w7SUFDTCxDQUFDLENBQUE7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBVyx5RkFBeUYsQ0FBQztBQUM5SSxNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBVyw0QkFBNEIsQ0FBQztBQVF6RSxNQUFNLE9BQU8sZ0JBQWlCLFNBQVEsZUFBZTtJQXlEakQsWUFDYyx3QkFBa0QsRUFDbEQsZUFBZ0MsRUFDaEMsU0FBMkI7UUFFckMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBSnZDLDZCQUF3QixHQUF4Qix3QkFBd0IsQ0FBMEI7UUFDbEQsb0JBQWUsR0FBZixlQUFlLENBQWlCO1FBQ2hDLGNBQVMsR0FBVCxTQUFTLENBQWtCO1FBM0R6Qzs7V0FFRztRQUNhLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBRTlDOztXQUVHO1FBQ2EsU0FBSSxHQUFpQixNQUFNLENBQUM7UUF5QjVDOztXQUVHO1FBQ2EsU0FBSSxHQUFZLENBQUMsQ0FBQztRQUVsQzs7O1dBR0c7UUFDYSxzQkFBaUIsR0FBYSxLQUFLLENBQUM7UUFFcEQ7O1dBRUc7UUFDYSxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRTNDOztXQUVHO1FBQ0ksc0JBQWlCLEdBQVksRUFBRSxDQUFDO0lBVXZDLENBQUM7SUFFTSxXQUFXLENBQUMsT0FBc0I7UUFDckMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBQ0Q7O09BRUE7SUFDTyxRQUFRO1FBQ1gsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWpCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxFQUFFLENBQUM7UUFFNUIsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsaUJBQWlCLEdBQUcsNEJBQTRCLENBQUM7U0FDekQ7YUFBTSxJQUFJLElBQUksQ0FBQyxJQUFJLEtBQUssS0FBSyxFQUFFO1lBQzVCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxvQkFBb0IsQ0FBQztTQUNqRDtRQUVELElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO2lCQUMvQixTQUFTLENBQUMsQ0FBQyxVQUFrQixFQUFFLEVBQUU7Z0JBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsVUFBVSxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxDQUFBO1NBQ1Q7SUFDTCxDQUFDO0lBRUQ7O09BRUE7SUFDTyxlQUFlO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUNoQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1NBQ3pDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxRQUFRLENBQUMsYUFBdUI7UUFDbkMsSUFBSSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFFeEMsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsWUFBWSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM1QztJQUNMLENBQUM7SUFFRDs7O0lBR0E7SUFDTyxhQUFhO1FBQ2hCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRTtZQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1NBQ3RFO0lBQ0wsQ0FBQzs7O1lBOUhKLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsWUFBWTtnQkFDdEIsdS9EQUF1Qzs7YUFFMUM7OztZQTNFUSx3QkFBd0I7WUFMeEIsZUFBZTtZQUVmLGdCQUFnQjs7OzJCQW9GcEIsS0FBSzttQkFLTCxLQUFLOzBCQUtMLEtBQUs7d0JBU0wsS0FBSzt3QkFTTCxLQUFLO21CQUtMLEtBQUs7Z0NBTUwsS0FBSzt3QkFLTCxLQUFLOzJCQU9MLFNBQVMsU0FBQyxjQUFjIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUdyb3VwSGVscGVyIH0gZnJvbSAnLi4vLi4vc2hhcmVkL2Zvcm0tZ3JvdXAuaGVscGVyJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBBZnRlclZpZXdJbml0LCBPbkluaXQsIE9uQ2hhbmdlcywgU2ltcGxlQ2hhbmdlcyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVTZXJ2aWNlIH0gZnJvbSBcIkBuZ3gtdHJhbnNsYXRlL2NvcmVcIjtcclxuXHJcbmltcG9ydCB7IEZvcm1Db250cm9sQmFzZSB9IGZyb20gXCIuLi9mb3JtLWNvbnRyb2wtYmFzZVwiO1xyXG5pbXBvcnQgeyBWYWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UgfSBmcm9tIFwiLi4vLi4vY29yZS92YWxpZGF0aW9uLW1lc3NhZ2Uuc2VydmljZVwiO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3JGbiwgQWJzdHJhY3RDb250cm9sLCBWYWxpZGF0aW9uRXJyb3JzLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5cclxuLyoqXHJcbiAqIFRoZSB0eXBlIG9mIHRleHRib3ggd2hlcmUgdGV4dCBpcyBpbnB1dFt0eXBlPVwidGV4dFwiXSwgbXVsdGlfbGluZSBpcyBhIFxyXG4gKiB0ZXh0YXJlYSwgZW1haWwgaXMgaW5wdXRbdHlwZT1cImVtYWlsXCJdLCB1cmwgaXMgaW5wdXRbdHlwZT1cInVybFwiXSwgYW5kIHBhc3N3b3JkIFxyXG4gKiBpcyBhbiBpbnB1dFt0eXBlPVwicGFzc3dvcmRcIl1cclxuICogXHJcbiAqIElmIHRoZSB0eXBlIGlzIHVybCBvciB0ZWwgYSByZWdleCBwYXR0ZXJuIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGZvcm0gdmFsaWRhdG9ycy4gIE5vIG90aGVyIHBhdHRlcm4gdmFsaWRhdG9yc1xyXG4gKiBtYXkgYmUgdXNlZCBmb3IgdGhpcyBpbnB1dCwgaGF2aW5nIG1vcmUgdGhhbiBvbmUgd2lsbCBjYXVzZSBpc3N1ZXMuXHJcbiAqIFxyXG4gKiBJZiB0aGUgdHlwZSBpcyBlbWFpbCBhbiBlbWFpbCB2YWxpZGF0b3IgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUgZm9ybSB2YWxpZGF0b3JzLlxyXG4gKiAqL1xyXG5leHBvcnQgdHlwZSBUZXh0Ym94VHlwZSA9IFwidGV4dFwiIHwgXCJtdWx0aV9saW5lXCIgfCBcImVtYWlsXCIgfCBcInVybFwiIHwgXCJwYXNzd29yZFwiIHwgXCJ0ZWxcIjtcclxuXHJcbi8qKiBUeXBlIGZvciBhZHZhbmNlZCB2YWxpZGF0aW9uIG9mIHRleHRib3ggZm9ybSBjb250cm9scywgaWYgaW4gdGhlIGZ1dHVyZVxyXG4gKiAgd2Ugd2FudCBtb3JlIGhhbmRsaW5nIHdlIHdpbGwgbmVlZCB0byB1cGRhdGUgdGhpcyB0eXBlLlxyXG4gKi9cclxuZXhwb3J0IHR5cGUgVGV4dGJveFZhbGlkYXRvclBhcmFtZXRlcnMgPSB7XHJcbiAgICByZXF1aXJlZD86IGJvb2xlYW47XHJcbiAgICBtaW5MZW5ndGg/OiBudW1iZXI7XHJcbiAgICBtYXhMZW5ndGg/OiBudW1iZXI7XHJcbiAgICB1bmlxdWU/OiBib29sZWFuO1xyXG4gICAgdmFsaWQ/OiBib29sZWFuO1xyXG4gICAgcGF0dGVybj86IFJlZ0V4cDtcclxufTtcclxuXHJcbi8qKiBBZHZhbmNlZCB2YWxpZGF0aW9uIGZvciB0ZXh0Ym94IGZvcm0gY29udHJvbHMgKi9cclxuZXhwb3J0IGNvbnN0IHRleHRib3hWYWxpZGF0aW9uID0gKHZhbGlkYXRvclBhcmFtczogVGV4dGJveFZhbGlkYXRvclBhcmFtZXRlcnMpOiBWYWxpZGF0b3JGbiA9PiB7XHJcbiAgICByZXR1cm4gKGNvbnRyb2w6IEFic3RyYWN0Q29udHJvbCkgPT4ge1xyXG4gICAgICAgIGxldCB2YWxpZGF0b3JzOiBWYWxpZGF0b3JGbltdID0gW107XHJcbiBcclxuICAgICAgICAvLyBJbm5vY2VudCB1bnRpbCBwcm92ZW4gZ3VpbHR5XHJcbiAgICAgICAgdmFsaWRhdG9yUGFyYW1zLnZhbGlkID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgaWYgKHZhbGlkYXRvclBhcmFtcy5yZXF1aXJlZCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsaWRhdG9yUGFyYW1zLm1pbkxlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWxpZGF0b3JQYXJhbXMubWluTGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsaWRhdG9yUGFyYW1zLm1heExlbmd0aCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgIHZhbGlkYXRvcnMucHVzaChWYWxpZGF0b3JzLm1heExlbmd0aCh2YWxpZGF0b3JQYXJhbXMubWF4TGVuZ3RoKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodmFsaWRhdG9yUGFyYW1zLnBhdHRlcm4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgICB2YWxpZGF0b3JzLnB1c2goVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbGlkYXRvclBhcmFtcy5wYXR0ZXJuKSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YWxpZGF0b3JzLmZvckVhY2godmFsaWRhdG9yID0+IHtcclxuICAgICAgICAgICAgbGV0IHZhbGlkYXRpb25SZXN1bHQ6IFZhbGlkYXRpb25FcnJvcnMgfCBudWxsID0gdmFsaWRhdG9yKGNvbnRyb2wpO1xyXG4gICAgICAgICAgICBpZiAodmFsaWRhdGlvblJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgdmFsaWRhdG9yUGFyYW1zLnZhbGlkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHZhbGlkYXRvclBhcmFtcy52YWxpZCkge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgdGV4dGJveDogdmFsaWRhdG9yUGFyYW1zXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59O1xyXG5cclxuZXhwb3J0IGNvbnN0IHBob25lTnVtYmVyVmFsaWRhdGlvblBhdHRlcm46IHN0cmluZyA9ICdeXFxcXHMqKD86XFxcXCs/KFxcXFxkezEsM30pKT9bLS4gKF0qKFxcXFxkezN9KVstLiApXSooXFxcXGR7M30pWy0uIF0qKFxcXFxkezR9KSg/OiAqeChcXFxcZCspKT9cXFxccyokJztcclxuZXhwb3J0IGNvbnN0IHVybFZhbGlkYXRpb25QYXR0ZXJuOiBzdHJpbmcgPSAnKFtBLVphLXpdKSsoOlxcL1xcLykrW15cXFxcc10qJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdlYy10ZXh0Ym94JyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi90ZXh0Ym94LmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL3RleHRib3guY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFRleHRib3hDb21wb25lbnQgZXh0ZW5kcyBGb3JtQ29udHJvbEJhc2UgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0luaXQsIE9uQ2hhbmdlcyB7XHJcbiAgICAvKipcclxuICAgICAqIFNldCB0aGUgdmFsdWUgb2YgdGhlIGlucHV0J3MgYXV0b2NvbXBsZXRlIGF0dHJpYnV0ZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgYXV0b2NvbXBsZXRlPzogc3RyaW5nID0gJ29mZic7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgdGV4dGJveCB0eXBlXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyB0eXBlPzogVGV4dGJveFR5cGUgPSBcInRleHRcIjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSB2YWx1ZSBvZiB0aGUgdGV4dGJveCBpbnB1dCdzIHBsYWNlaG9sZGVyXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBwbGFjZWhvbGRlcj86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gdGhlIGlucHV0XHJcbiAgICAgKiBcclxuICAgICAqIFRoaXMgaXMgZm9yIGFkZGluZyB0aGUgYXR0cmlidXRlIG9uIHRoZSBlbGVtZW50IHRvIGdldCB0aGUgYnJvd3NlciBmdW5jdGlvbmFsaXR5XHJcbiAgICAgKiBmcm9tIHRoZSBpbnB1dC4gIElmIHlvdSBuZWVkIHRoZSBmb3JtIHRvIGJlIHZhbGlkYXRlZCBiZWZvcmUgc3VibWlzc2lvbiwgYXBwbHkgdGhlXHJcbiAgICAgKiBtYXhMZW5ndGggdmFsaWRhdG9yIHRvIHRoZSBmb3JtIGNvbnRyb2wuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpIHB1YmxpYyBtYXhsZW5ndGg/OiBudW1iZXI7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoZSBpbnB1dFxyXG4gICAgICogXHJcbiAgICAgKiBUaGlzIGlzIGZvciBhZGRpbmcgdGhlIGF0dHJpYnV0ZSBvbiB0aGUgZWxlbWVudCB0byBnZXQgdGhlIGJyb3dzZXIgZnVuY3Rpb25hbGl0eVxyXG4gICAgICogZnJvbSB0aGUgaW5wdXQuICBJZiB5b3UgbmVlZCB0aGUgZm9ybSB0byBiZSB2YWxpZGF0ZWQgYmVmb3JlIHN1Ym1pc3Npb24sIGFwcGx5IHRoZVxyXG4gICAgICogbWluTGVuZ3RoIHZhbGlkYXRvciB0byB0aGUgZm9ybSBjb250cm9sLlxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgbWlubGVuZ3RoPzogbnVtYmVyO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSByb3dzIGF0dHJpYnV0ZSBmb3IgYSB0ZXh0YXJlYS4gT25seSBhcHBsaWVzIHRvIG11bHRpLWxpbmUgdHlwZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKSBwdWJsaWMgcm93cz86IG51bWJlciA9IDM7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBJZiBzZXQgdG8gdHJ1ZSwgd2Ugd2lsbCBzZWxlY3QgYWxsIHRleHQgd2l0aGluIHRoZSBpbnB1dCBpZlxyXG4gICAgICogYXV0b2ZvY3VzIGlzIGFsc28gc2V0IHRvIHRydWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHNlbGVjdE9uQXV0b2ZvY3VzPzogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogSWYgc2V0IHRvIHRydWUsIHdlIHdpbGwgdXBwZXIgY2FzZSBvbiBmb2N1cyBvdXRcclxuICAgICAqL1xyXG4gICAgQElucHV0KCkgcHVibGljIHVwcGVyQ2FzZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVmFsaWRhdGlvbiBwYXR0ZXJuIGZvciB0aGUgaW5wdXQuIFRoaXMgaXMgZGV0ZXJtaW5lZCBvbiB0aGUgaW5wdXQgdHlwZSBzcGVjaWZpZWRcclxuICAgICAqL1xyXG4gICAgcHVibGljIHZhbGlkYXRpb25QYXR0ZXJuOiBzdHJpbmcgID0gJyc7XHJcblxyXG4gICAgQFZpZXdDaGlsZCgndGV4dGJveElucHV0JykgcHJvdGVjdGVkIGlucHV0RWxlbWVudCE6IEVsZW1lbnRSZWY7XHJcblxyXG4gICAgY29uc3RydWN0b3IoXHJcbiAgICAgICAgcHJvdGVjdGVkIHZhbGlkYXRpb25NZXNzYWdlU2VydmljZTogVmFsaWRhdGlvbk1lc3NhZ2VTZXJ2aWNlLFxyXG4gICAgICAgIHByb3RlY3RlZCBmb3JtR3JvdXBIZWxwZXI6IEZvcm1Hcm91cEhlbHBlcixcclxuICAgICAgICBwcm90ZWN0ZWQgdHJhbnNsYXRlOiBUcmFuc2xhdGVTZXJ2aWNlXHJcbiAgICApIHtcclxuICAgICAgICBzdXBlcih2YWxpZGF0aW9uTWVzc2FnZVNlcnZpY2UsIGZvcm1Hcm91cEhlbHBlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgIH1cclxuICAgIC8qKlxyXG5cdCAqIFRoZSBhbmd1bGFyIG9uSW5pdCBsaWZlY3ljbGUgaG9va1xyXG5cdCAqL1xyXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25Jbml0KCk7XHJcblxyXG4gICAgICAgIHRoaXMudmFsaWRhdGlvblBhdHRlcm4gPSAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMudHlwZSA9PT0gJ3RlbCcpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0aW9uUGF0dGVybiA9IHBob25lTnVtYmVyVmFsaWRhdGlvblBhdHRlcm47XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnR5cGUgPT09ICd1cmwnKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGlvblBhdHRlcm4gPSB1cmxWYWxpZGF0aW9uUGF0dGVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgXHJcbiAgICAgICAgaWYgKHRoaXMucGxhY2Vob2xkZXIpIHtcclxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGUuZ2V0KHRoaXMucGxhY2Vob2xkZXIpXHJcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKCh0cmFuc2xhdGVkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnBsYWNlaG9sZGVyID0gdHJhbnNsYXRlZDtcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG5cdCAqIFRoZSBhbmd1bGFyIGFmdGVyVmlld0luaXQgbGlmZWN5Y2xlIGhvb2tcclxuXHQgKi9cclxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuYXV0b2ZvY3VzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0Rm9jdXModGhpcy5zZWxlY3RPbkF1dG9mb2N1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogRnVuY3Rpb24gdG8gc2V0IGZvY3VzIG9uIGFuIGlucHV0IHByb2dyYW1tYXRpY2FsbHkgYWZ0ZXIgdGhlIHBhZ2VcclxuICAgICAqIGhhZCBiZWVuIHJlbmRlcmVkLiAgVGhlIGhpZ2hsaWdodCB0ZXh0IGZsYWcgd2lsbCBzZWxlY3QgdGhlIHRleHQgXHJcbiAgICAgKiB3aXRoaW4gdGhlIGlucHV0IGlmIHBhc3NlZCBpbiBhbmQgdHJ1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgc2V0Rm9jdXMoaGlnaGxpZ2h0VGV4dD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmlucHV0RWxlbWVudC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcblxyXG4gICAgICAgIGlmIChoaWdobGlnaHRUZXh0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuaW5wdXRFbGVtZW50Lm5hdGl2ZUVsZW1lbnQuc2VsZWN0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICogRm9jdXMgb3V0IGV2ZW50IGhhbmRsZXJcclxuICAqIHdpbGwgdXBwZXIgY2FzZSBhbmQgdHJpbSB2YWx1ZSBpZiB1cHBlckNhc2UgaXMgdHJ1ZSAodGhpcyBpcyB3aGF0IHdlIGRvIG9uIHRoZSBhcGlzKVxyXG4gICovXHJcbiAgICBwdWJsaWMgZm9jdXNPdXRFdmVudCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy51cHBlckNhc2UgJiYgdGhpcy5mb3JtTW9kZWwudmFsdWUpIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtTW9kZWwuc2V0VmFsdWUodGhpcy5mb3JtTW9kZWwudmFsdWUudG9VcHBlckNhc2UoKS50cmltKCkpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSJdfQ==
@@ -1,56 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import * as i0 from "@angular/core";
3
- export function isApiError(errorResponse) {
4
- // errorResponse is typed HttpErrorResponse if the api returns an error
5
- if (errorResponse.error && errorResponse.error.hasOwnProperty('status') && errorResponse.error.status.hasOwnProperty('message')) {
6
- return true;
7
- }
8
- return false;
9
- }
10
- export class ErrorService {
11
- constructor() { }
12
- /**
13
- * Parse an error that comes from the API for use inside the forms
14
- * In most cases this isn't required because the error handler will do it automatically,
15
- * but if you need to analyze the error message you can use this to extract it safely.
16
- * NOTE: Because it can be used for comparison the result is not translated. You must translate
17
- * it before providing it to the user.
18
- * @param error The error object from the API
19
- */
20
- parseApiError(errorResponse, unknownErrorDefault) {
21
- if (typeof errorResponse === 'string') {
22
- return errorResponse;
23
- }
24
- // errorResponse is typed HttpErrorResponse if the api returns an error
25
- let apiErrorMessage = unknownErrorDefault || 'DefaultUnknownError_SC';
26
- if (errorResponse && isApiError(errorResponse)) {
27
- try {
28
- apiErrorMessage = errorResponse.error.status.message;
29
- }
30
- catch (error) {
31
- //log the real error to the console (for developers) but just return the generic error to the user
32
- this.logConsoleError(error);
33
- }
34
- }
35
- else {
36
- this.logConsoleError(errorResponse);
37
- }
38
- return apiErrorMessage;
39
- }
40
- /**
41
- * Just a safe wrapper around console.error in case the browser doesn't have one exposed
42
- */
43
- logConsoleError(error) {
44
- if (console && typeof (console.error) === 'function') {
45
- console.error('unknown error:', error);
46
- }
47
- }
48
- }
49
- ErrorService.ɵprov = i0.ɵɵdefineInjectable({ factory: function ErrorService_Factory() { return new ErrorService(); }, token: ErrorService, providedIn: "root" });
50
- ErrorService.decorators = [
51
- { type: Injectable, args: [{
52
- providedIn: 'root'
53
- },] }
54
- ];
55
- ErrorService.ctorParameters = () => [];
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9jb3JlL2Vycm9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFHM0MsTUFBTSxVQUFVLFVBQVUsQ0FBQyxhQUFrQjtJQUMzQyx1RUFBdUU7SUFDdkUsSUFBSSxhQUFhLENBQUMsS0FBSyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLFFBQVEsQ0FBQyxJQUFJLGFBQWEsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUMvSCxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBS0QsTUFBTSxPQUFPLFlBQVk7SUFFdkIsZ0JBQWdCLENBQUM7SUFFakI7Ozs7Ozs7T0FPRztJQUNJLGFBQWEsQ0FBQyxhQUFrQixFQUFFLG1CQUE0QjtRQUNuRSxJQUFJLE9BQU8sYUFBYSxLQUFLLFFBQVEsRUFBRTtZQUNyQyxPQUFPLGFBQWEsQ0FBQztTQUN0QjtRQUVELHVFQUF1RTtRQUN2RSxJQUFJLGVBQWUsR0FBVyxtQkFBbUIsSUFBSSx3QkFBd0IsQ0FBQztRQUU5RSxJQUFJLGFBQWEsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEVBQUU7WUFDOUMsSUFBSTtnQkFDRixlQUFlLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO2FBQ3REO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2Qsa0dBQWtHO2dCQUNsRyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQzdCO1NBQ0Y7YUFBTTtZQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLENBQUM7U0FDckM7UUFFRCxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlLENBQUMsS0FBVTtRQUMvQixJQUFJLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLFVBQVUsRUFBRTtZQUNwRCxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3hDO0lBQ0gsQ0FBQzs7OztZQTVDRixVQUFVLFNBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGlzQXBpRXJyb3IoZXJyb3JSZXNwb25zZTogYW55KTogYm9vbGVhbiB7XHJcbiAgLy8gZXJyb3JSZXNwb25zZSBpcyB0eXBlZCBIdHRwRXJyb3JSZXNwb25zZSBpZiB0aGUgYXBpIHJldHVybnMgYW4gZXJyb3JcclxuICBpZiAoZXJyb3JSZXNwb25zZS5lcnJvciAmJiBlcnJvclJlc3BvbnNlLmVycm9yLmhhc093blByb3BlcnR5KCdzdGF0dXMnKSAmJiBlcnJvclJlc3BvbnNlLmVycm9yLnN0YXR1cy5oYXNPd25Qcm9wZXJ0eSgnbWVzc2FnZScpKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcbiAgcmV0dXJuIGZhbHNlO1xyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBFcnJvclNlcnZpY2Uge1xyXG5cclxuICBjb25zdHJ1Y3RvcigpIHsgfVxyXG5cclxuICAvKipcclxuICAgKiBQYXJzZSBhbiBlcnJvciB0aGF0IGNvbWVzIGZyb20gdGhlIEFQSSBmb3IgdXNlIGluc2lkZSB0aGUgZm9ybXNcclxuICAgKiBJbiBtb3N0IGNhc2VzIHRoaXMgaXNuJ3QgcmVxdWlyZWQgYmVjYXVzZSB0aGUgZXJyb3IgaGFuZGxlciB3aWxsIGRvIGl0IGF1dG9tYXRpY2FsbHksXHJcbiAgICogYnV0IGlmIHlvdSBuZWVkIHRvIGFuYWx5emUgdGhlIGVycm9yIG1lc3NhZ2UgeW91IGNhbiB1c2UgdGhpcyB0byBleHRyYWN0IGl0IHNhZmVseS5cclxuICAgKiBOT1RFOiBCZWNhdXNlIGl0IGNhbiBiZSB1c2VkIGZvciBjb21wYXJpc29uIHRoZSByZXN1bHQgaXMgbm90IHRyYW5zbGF0ZWQuIFlvdSBtdXN0IHRyYW5zbGF0ZVxyXG4gICAqIGl0IGJlZm9yZSBwcm92aWRpbmcgaXQgdG8gdGhlIHVzZXIuXHJcbiAgICogQHBhcmFtIGVycm9yIFRoZSBlcnJvciBvYmplY3QgZnJvbSB0aGUgQVBJXHJcbiAgICovXHJcbiAgcHVibGljIHBhcnNlQXBpRXJyb3IoZXJyb3JSZXNwb25zZTogYW55LCB1bmtub3duRXJyb3JEZWZhdWx0Pzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGlmICh0eXBlb2YgZXJyb3JSZXNwb25zZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuIGVycm9yUmVzcG9uc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gZXJyb3JSZXNwb25zZSBpcyB0eXBlZCBIdHRwRXJyb3JSZXNwb25zZSBpZiB0aGUgYXBpIHJldHVybnMgYW4gZXJyb3JcclxuICAgIGxldCBhcGlFcnJvck1lc3NhZ2U6IHN0cmluZyA9IHVua25vd25FcnJvckRlZmF1bHQgfHwgJ0RlZmF1bHRVbmtub3duRXJyb3JfU0MnO1xyXG5cclxuICAgIGlmIChlcnJvclJlc3BvbnNlICYmIGlzQXBpRXJyb3IoZXJyb3JSZXNwb25zZSkpIHtcclxuICAgICAgdHJ5IHtcclxuICAgICAgICBhcGlFcnJvck1lc3NhZ2UgPSBlcnJvclJlc3BvbnNlLmVycm9yLnN0YXR1cy5tZXNzYWdlO1xyXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICAgIC8vbG9nIHRoZSByZWFsIGVycm9yIHRvIHRoZSBjb25zb2xlIChmb3IgZGV2ZWxvcGVycykgYnV0IGp1c3QgcmV0dXJuIHRoZSBnZW5lcmljIGVycm9yIHRvIHRoZSB1c2VyXHJcbiAgICAgICAgdGhpcy5sb2dDb25zb2xlRXJyb3IoZXJyb3IpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmxvZ0NvbnNvbGVFcnJvcihlcnJvclJlc3BvbnNlKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gYXBpRXJyb3JNZXNzYWdlO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogSnVzdCBhIHNhZmUgd3JhcHBlciBhcm91bmQgY29uc29sZS5lcnJvciBpbiBjYXNlIHRoZSBicm93c2VyIGRvZXNuJ3QgaGF2ZSBvbmUgZXhwb3NlZFxyXG4gICAqL1xyXG4gIHB1YmxpYyBsb2dDb25zb2xlRXJyb3IoZXJyb3I6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGNvbnNvbGUgJiYgdHlwZW9mIChjb25zb2xlLmVycm9yKSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCd1bmtub3duIGVycm9yOicsIGVycm9yKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuIl19