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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/esm2022/energycap-components.mjs +5 -0
  2. package/esm2022/lib/components.module.mjs +423 -0
  3. package/esm2022/lib/controls/banner/banner.component.mjs +109 -0
  4. package/esm2022/lib/controls/button/button.component.mjs +106 -0
  5. package/esm2022/lib/controls/button/copy-button-base.directive.mjs +67 -0
  6. package/esm2022/lib/controls/button/copy-button.directive.mjs +28 -0
  7. package/esm2022/lib/controls/button/copy-table-button.directive.mjs +43 -0
  8. package/esm2022/lib/controls/calendar/calendar-item.component.mjs +91 -0
  9. package/esm2022/lib/controls/calendar/calendar.component.mjs +248 -0
  10. package/esm2022/lib/controls/calendar/calendar.types.mjs +2 -0
  11. package/esm2022/lib/controls/checkbox/checkbox.component.mjs +140 -0
  12. package/esm2022/lib/controls/collapsible-toggle/collapsible-toggle.component.mjs +38 -0
  13. package/esm2022/lib/controls/combobox/combobox.component.mjs +879 -0
  14. package/esm2022/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.mjs +57 -0
  15. package/esm2022/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.mjs +62 -0
  16. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.mjs +100 -0
  17. package/esm2022/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.mjs +101 -0
  18. package/esm2022/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.mjs +76 -0
  19. package/esm2022/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.mjs +79 -0
  20. package/esm2022/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.mjs +210 -0
  21. package/esm2022/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.mjs +81 -0
  22. package/esm2022/lib/controls/date-input/date-input.component.mjs +464 -0
  23. package/esm2022/lib/controls/date-input/date-input.types.mjs +44 -0
  24. package/esm2022/lib/controls/dropdown/dropdown.component.mjs +243 -0
  25. package/esm2022/lib/controls/file-upload/file-upload.component.mjs +261 -0
  26. package/esm2022/lib/controls/form-control/form-control.component.mjs +98 -0
  27. package/esm2022/lib/controls/form-control-base.mjs +151 -0
  28. package/esm2022/lib/controls/form-control-label/form-control-label.component.mjs +136 -0
  29. package/esm2022/lib/controls/form-group/form-group.component.mjs +261 -0
  30. package/esm2022/lib/controls/help-popover/help-popover.component.mjs +31 -0
  31. package/esm2022/lib/controls/item-picker/item-picker.component.mjs +329 -0
  32. package/esm2022/lib/controls/link-button/link-button.component.mjs +11 -0
  33. package/esm2022/lib/controls/menu/menu.component.mjs +485 -0
  34. package/esm2022/lib/controls/navigation/link-item.mjs +2 -0
  35. package/esm2022/lib/controls/navigation/nav-group.mjs +39 -0
  36. package/esm2022/lib/controls/navigation/nav-item-active.directive.mjs +92 -0
  37. package/esm2022/lib/controls/navigation/nav-item.mjs +2 -0
  38. package/esm2022/lib/controls/numericbox/numericbox.component.mjs +372 -0
  39. package/esm2022/lib/controls/popover/popover.component.mjs +117 -0
  40. package/esm2022/lib/controls/radio-button/radio-button-option.mjs +3 -0
  41. package/esm2022/lib/controls/radio-button/radio-button.component.mjs +82 -0
  42. package/esm2022/lib/controls/select/select.component.mjs +88 -0
  43. package/esm2022/lib/controls/tabs/tabs.component.mjs +47 -0
  44. package/esm2022/lib/controls/textbox/textbox.component.mjs +155 -0
  45. package/esm2022/lib/core/cache.service.mjs +105 -0
  46. package/esm2022/lib/core/custom-validators.mjs +29 -0
  47. package/esm2022/lib/core/date-time-helper.mjs +228 -0
  48. package/esm2022/lib/core/error.service.mjs +61 -0
  49. package/esm2022/lib/core/router-helper.service.mjs +111 -0
  50. package/esm2022/lib/core/scroll.service.mjs +89 -0
  51. package/esm2022/lib/core/telemetry-tracker.service.mjs +16 -0
  52. package/esm2022/lib/core/telemetry.service.mjs +38 -0
  53. package/esm2022/lib/core/validation-message.service.mjs +185 -0
  54. package/esm2022/lib/core/validation-patterns.mjs +31 -0
  55. package/esm2022/lib/core/window.service.mjs +186 -0
  56. package/esm2022/lib/display/app-bar/app-bar.component.mjs +46 -0
  57. package/esm2022/lib/display/avatar/avatar.component.mjs +67 -0
  58. package/esm2022/lib/display/avatar/avatar.service.mjs +64 -0
  59. package/esm2022/lib/display/confirm/confirm.component.mjs +168 -0
  60. package/esm2022/lib/display/dialog/dialog-content.mjs +2 -0
  61. package/esm2022/lib/display/dialog/dialog-group/dialog-group.component.mjs +63 -0
  62. package/esm2022/lib/display/dialog/dialog-types.mjs +77 -0
  63. package/esm2022/lib/display/dialog/dialog.component.mjs +281 -0
  64. package/esm2022/lib/display/dialog/dialog.service.mjs +71 -0
  65. package/esm2022/lib/display/help/help-types.mjs +2 -0
  66. package/esm2022/lib/display/hierarchy/hierarchy-base.mjs +111 -0
  67. package/esm2022/lib/display/hierarchy/hierarchy-mocks.spec.mjs +54 -0
  68. package/esm2022/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.mjs +61 -0
  69. package/esm2022/lib/display/item-display/item-display.component.mjs +81 -0
  70. package/esm2022/lib/display/json-display/json-display.component.mjs +47 -0
  71. package/esm2022/lib/display/resizable/resizable-base.mjs +120 -0
  72. package/esm2022/lib/display/resizable/resizable.component.mjs +57 -0
  73. package/esm2022/lib/display/spinner/spinner.component.mjs +12 -0
  74. package/esm2022/lib/display/splash/splash.component.mjs +42 -0
  75. package/esm2022/lib/display/splash/splash.service.mjs +35 -0
  76. package/esm2022/lib/display/table/resizable-column.component.mjs +20 -0
  77. package/esm2022/lib/display/table/resizable-table.directive.mjs +227 -0
  78. package/esm2022/lib/display/table/searchable-table.component.mjs +342 -0
  79. package/esm2022/lib/display/table/table-detail-row.component.mjs +28 -0
  80. package/esm2022/lib/display/table/table-locked-column.component.mjs +58 -0
  81. package/esm2022/lib/display/table/table-master-header-row.component.mjs +14 -0
  82. package/esm2022/lib/display/table/table-master-row.component.mjs +163 -0
  83. package/esm2022/lib/display/table/table-pagination.component.mjs +155 -0
  84. package/esm2022/lib/display/table/table-selectable-row.component.mjs +235 -0
  85. package/esm2022/lib/display/table/table.component.mjs +249 -0
  86. package/esm2022/lib/display/tags/tag.mjs +18 -0
  87. package/esm2022/lib/display/tags/tags.component.mjs +77 -0
  88. package/esm2022/lib/display/toast/toast/toast.component.mjs +77 -0
  89. package/esm2022/lib/display/toast/toast-types.mjs +8 -0
  90. package/esm2022/lib/display/toast/toast.service.mjs +35 -0
  91. package/esm2022/lib/display/toast/toaster/toaster.component.mjs +114 -0
  92. package/esm2022/lib/display/tooltip/tooltip.component.mjs +28 -0
  93. package/esm2022/lib/display/tooltip/tooltip.service.mjs +78 -0
  94. package/esm2022/lib/display/tooltip-directive/tooltip.directive.mjs +173 -0
  95. package/esm2022/lib/display/tour/tour-types.mjs +34 -0
  96. package/esm2022/lib/display/tour/tour.component.mjs +398 -0
  97. package/esm2022/lib/display/tour/tour.service.mjs +75 -0
  98. package/esm2022/lib/display/tree/tree.component.mjs +135 -0
  99. package/esm2022/lib/display/view-overlay/view-overlay.component.mjs +58 -0
  100. package/esm2022/lib/shared/directives/click-area-for/click-area-for.directive.mjs +32 -0
  101. package/esm2022/lib/shared/directives/if-viewport-width/if-viewport-width.directive.mjs +111 -0
  102. package/esm2022/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.mjs +100 -0
  103. package/esm2022/lib/shared/directives/popup/popup-container.directive.mjs +166 -0
  104. package/esm2022/lib/shared/display/pipes/date-display.pipe.mjs +50 -0
  105. package/esm2022/lib/shared/display/pipes/highlight-text.pipe.mjs +30 -0
  106. package/esm2022/lib/shared/display/pipes/relative-date.pipe.mjs +62 -0
  107. package/esm2022/lib/shared/display/pipes/row-count.pipe.mjs +48 -0
  108. package/esm2022/lib/shared/display/pipes/time-display.pipe.mjs +41 -0
  109. package/esm2022/lib/shared/display.mjs +6 -0
  110. package/esm2022/lib/shared/form-group.helper.mjs +67 -0
  111. package/esm2022/lib/shared/json-helper.mjs +19 -0
  112. package/esm2022/lib/shared/lodash-helper.mjs +52 -0
  113. package/esm2022/lib/shared/page/page-base/page-base.component.mjs +387 -0
  114. package/esm2022/lib/shared/page/page-statuses.mjs +23 -0
  115. package/esm2022/lib/shared/page/page-title/page-title.component.mjs +23 -0
  116. package/esm2022/lib/shared/page/page-view/page-view.component.mjs +147 -0
  117. package/esm2022/lib/shared/testing/copy-button-base-test-injector-factory.spec.mjs +17 -0
  118. package/esm2022/lib/shared/testing/hierarchy-base-test-injector-factory.spec.mjs +17 -0
  119. package/esm2022/lib/shared/testing/page-base-component-test-helper.spec.mjs +38 -0
  120. package/esm2022/lib/shared/testing/page-base-component-test-injector-factory.spec.mjs +98 -0
  121. package/esm2022/lib/shared/testing/public-mocks.spec.mjs +148 -0
  122. package/esm2022/lib/shared/testing/spy-factory.spec.mjs +40 -0
  123. package/esm2022/lib/shared/testing/translation-mocks.spec.mjs +57 -0
  124. package/esm2022/lib/shared/user-preference.service.mjs +17 -0
  125. package/esm2022/lib/shared/wizard/wizard-base/wizard-base.component.mjs +246 -0
  126. package/esm2022/lib/shared/wizard/wizard-buttons/wizard-buttons.component.mjs +68 -0
  127. package/esm2022/lib/shared/wizard/wizard-progress/wizard-progress.component.mjs +18 -0
  128. package/esm2022/public-api.mjs +117 -0
  129. package/fesm2022/energycap-components.mjs +13219 -0
  130. package/fesm2022/energycap-components.mjs.map +1 -0
  131. package/index.d.ts +5 -0
  132. package/lib/components.module.d.ts +92 -0
  133. package/lib/controls/banner/banner.component.d.ts +50 -0
  134. package/lib/controls/button/button.component.d.ts +78 -0
  135. package/lib/controls/button/copy-button-base.directive.d.ts +20 -0
  136. package/lib/controls/button/copy-button.directive.d.ts +14 -0
  137. package/lib/controls/button/copy-table-button.directive.d.ts +19 -0
  138. package/lib/controls/calendar/calendar-item.component.d.ts +22 -0
  139. package/lib/controls/calendar/calendar.component.d.ts +52 -0
  140. package/lib/controls/calendar/calendar.types.d.ts +11 -0
  141. package/lib/controls/checkbox/checkbox.component.d.ts +65 -0
  142. package/lib/controls/collapsible-toggle/collapsible-toggle.component.d.ts +25 -0
  143. package/lib/controls/combobox/combobox.component.d.ts +418 -0
  144. package/lib/controls/date-input/date-input-selection-strategies/date-input-selection-strategy-base.d.ts +42 -0
  145. package/lib/controls/date-input/date-input-selection-strategies/day-selection-strategy.d.ts +21 -0
  146. package/lib/controls/date-input/date-input-selection-strategies/last-28-days-selection-strategy.d.ts +21 -0
  147. package/lib/controls/date-input/date-input-selection-strategies/last-7-days-selection-strategy.d.ts +21 -0
  148. package/lib/controls/date-input/date-input-selection-strategies/month-selection-strategy.d.ts +18 -0
  149. package/lib/controls/date-input/date-input-selection-strategies/quarter-selection-strategy.d.ts +18 -0
  150. package/lib/controls/date-input/date-input-selection-strategies/range-selection-strategy.d.ts +21 -0
  151. package/lib/controls/date-input/date-input-selection-strategies/year-selection-strategy.d.ts +20 -0
  152. package/lib/controls/date-input/date-input.component.d.ts +115 -0
  153. package/lib/controls/date-input/date-input.types.d.ts +62 -0
  154. package/lib/controls/dropdown/dropdown.component.d.ts +161 -0
  155. package/lib/controls/file-upload/file-upload.component.d.ts +124 -0
  156. package/lib/controls/form-control/form-control.component.d.ts +28 -0
  157. package/lib/controls/form-control-base.d.ts +110 -0
  158. package/lib/controls/form-control-label/form-control-label.component.d.ts +73 -0
  159. package/lib/controls/form-group/form-group.component.d.ts +105 -0
  160. package/lib/controls/help-popover/help-popover.component.d.ts +11 -0
  161. package/lib/controls/item-picker/item-picker.component.d.ts +164 -0
  162. package/lib/controls/link-button/link-button.component.d.ts +5 -0
  163. package/lib/controls/menu/menu.component.d.ts +255 -0
  164. package/lib/controls/navigation/link-item.d.ts +32 -0
  165. package/lib/controls/navigation/nav-group.d.ts +18 -0
  166. package/lib/controls/navigation/nav-item-active.directive.d.ts +42 -0
  167. package/lib/controls/navigation/nav-item.d.ts +31 -0
  168. package/lib/controls/numericbox/numericbox.component.d.ts +148 -0
  169. package/lib/controls/popover/popover.component.d.ts +51 -0
  170. package/lib/controls/radio-button/radio-button-option.d.ts +19 -0
  171. package/lib/controls/radio-button/radio-button.component.d.ts +53 -0
  172. package/lib/controls/select/select.component.d.ts +44 -0
  173. package/lib/controls/tabs/tabs.component.d.ts +30 -0
  174. package/lib/controls/textbox/textbox.component.d.ts +107 -0
  175. package/lib/core/cache.service.d.ts +33 -0
  176. package/lib/core/custom-validators.d.ts +20 -0
  177. package/lib/core/date-time-helper.d.ts +101 -0
  178. package/lib/core/error.service.d.ts +20 -0
  179. package/lib/core/router-helper.service.d.ts +48 -0
  180. package/lib/core/scroll.service.d.ts +36 -0
  181. package/lib/core/telemetry-tracker.service.d.ts +13 -0
  182. package/lib/core/telemetry.service.d.ts +31 -0
  183. package/lib/core/validation-message.service.d.ts +26 -0
  184. package/lib/core/validation-patterns.d.ts +22 -0
  185. package/lib/core/window.service.d.ts +116 -0
  186. package/lib/display/app-bar/app-bar.component.d.ts +20 -0
  187. package/lib/display/avatar/avatar.component.d.ts +35 -0
  188. package/lib/display/avatar/avatar.service.d.ts +24 -0
  189. package/lib/display/confirm/confirm.component.d.ts +123 -0
  190. package/lib/display/dialog/dialog-content.d.ts +19 -0
  191. package/lib/display/dialog/dialog-group/dialog-group.component.d.ts +32 -0
  192. package/lib/display/dialog/dialog-types.d.ts +130 -0
  193. package/lib/display/dialog/dialog.component.d.ts +120 -0
  194. package/lib/display/dialog/dialog.service.d.ts +48 -0
  195. package/lib/display/help/help-types.d.ts +33 -0
  196. package/lib/display/hierarchy/hierarchy-base.d.ts +97 -0
  197. package/lib/display/hierarchy/hierarchy-mocks.spec.d.ts +53 -0
  198. package/lib/display/hierarchy/hierarchy-tree/hierarchy-tree.component.d.ts +34 -0
  199. package/lib/display/item-display/item-display.component.d.ts +43 -0
  200. package/lib/display/json-display/json-display.component.d.ts +16 -0
  201. package/lib/display/resizable/resizable-base.d.ts +67 -0
  202. package/lib/display/resizable/resizable.component.d.ts +31 -0
  203. package/lib/display/spinner/spinner.component.d.ts +5 -0
  204. package/lib/display/splash/splash.component.d.ts +16 -0
  205. package/lib/display/splash/splash.service.d.ts +22 -0
  206. package/lib/display/table/resizable-column.component.d.ts +10 -0
  207. package/lib/display/table/resizable-table.directive.d.ts +93 -0
  208. package/lib/display/table/searchable-table.component.d.ts +206 -0
  209. package/lib/display/table/table-detail-row.component.d.ts +8 -0
  210. package/lib/display/table/table-locked-column.component.d.ts +20 -0
  211. package/lib/display/table/table-master-header-row.component.d.ts +9 -0
  212. package/lib/display/table/table-master-row.component.d.ts +113 -0
  213. package/lib/display/table/table-pagination.component.d.ts +91 -0
  214. package/lib/display/table/table-selectable-row.component.d.ts +102 -0
  215. package/lib/display/table/table.component.d.ts +121 -0
  216. package/lib/display/tags/tag.d.ts +18 -0
  217. package/lib/display/tags/tags.component.d.ts +48 -0
  218. package/lib/display/toast/toast/toast.component.d.ts +23 -0
  219. package/lib/display/toast/toast-types.d.ts +24 -0
  220. package/lib/display/toast/toast.service.d.ts +20 -0
  221. package/lib/display/toast/toaster/toaster.component.d.ts +35 -0
  222. package/lib/display/tooltip/tooltip.component.d.ts +70 -0
  223. package/lib/display/tooltip/tooltip.service.d.ts +16 -0
  224. package/lib/display/tooltip-directive/tooltip.directive.d.ts +44 -0
  225. package/lib/display/tour/tour-types.d.ts +70 -0
  226. package/lib/display/tour/tour.component.d.ts +147 -0
  227. package/lib/display/tour/tour.service.d.ts +38 -0
  228. package/lib/display/tree/tree.component.d.ts +75 -0
  229. package/lib/display/view-overlay/view-overlay.component.d.ts +38 -0
  230. package/lib/shared/directives/click-area-for/click-area-for.directive.d.ts +14 -0
  231. package/lib/shared/directives/if-viewport-width/if-viewport-width.directive.d.ts +60 -0
  232. package/lib/shared/directives/keyboard-nav-container/keyboard-nav-container.directive.d.ts +23 -0
  233. package/lib/shared/directives/popup/popup-container.directive.d.ts +101 -0
  234. package/lib/shared/display/pipes/date-display.pipe.d.ts +21 -0
  235. package/lib/shared/display/pipes/highlight-text.pipe.d.ts +9 -0
  236. package/lib/shared/display/pipes/relative-date.pipe.d.ts +36 -0
  237. package/lib/shared/display/pipes/row-count.pipe.d.ts +23 -0
  238. package/lib/shared/display/pipes/time-display.pipe.d.ts +18 -0
  239. package/lib/shared/display.d.ts +42 -0
  240. package/lib/shared/form-group.helper.d.ts +31 -0
  241. package/lib/shared/json-helper.d.ts +7 -0
  242. package/lib/shared/lodash-helper.d.ts +18 -0
  243. package/lib/shared/page/page-base/page-base.component.d.ts +259 -0
  244. package/lib/shared/page/page-statuses.d.ts +13 -0
  245. package/lib/shared/page/page-title/page-title.component.d.ts +9 -0
  246. package/lib/shared/page/page-view/page-view.component.d.ts +102 -0
  247. package/lib/shared/testing/copy-button-base-test-injector-factory.spec.d.ts +4 -0
  248. package/lib/shared/testing/hierarchy-base-test-injector-factory.spec.d.ts +4 -0
  249. package/lib/shared/testing/page-base-component-test-helper.spec.d.ts +30 -0
  250. package/lib/shared/testing/page-base-component-test-injector-factory.spec.d.ts +28 -0
  251. package/lib/shared/testing/public-mocks.spec.d.ts +90 -0
  252. package/lib/shared/testing/spy-factory.spec.d.ts +27 -0
  253. package/lib/shared/testing/translation-mocks.spec.d.ts +30 -0
  254. package/lib/shared/user-preference.service.d.ts +13 -0
  255. package/lib/shared/wizard/wizard-base/wizard-base.component.d.ts +134 -0
  256. package/lib/shared/wizard/wizard-buttons/wizard-buttons.component.d.ts +27 -0
  257. package/lib/shared/wizard/wizard-progress/wizard-progress.component.d.ts +10 -0
  258. package/package.json +1 -5
  259. package/public-api.d.ts +113 -0
  260. package/schematics/collection.json +10 -0
  261. package/schematics/rxjs-7-upgrade/index.d.ts +3 -0
  262. package/schematics/rxjs-7-upgrade/index.js +68 -0
  263. package/schematics/rxjs-7-upgrade/index.js.map +1 -0
  264. package/schematics/rxjs-7-upgrade/schema.d.ts +4 -0
  265. package/schematics/rxjs-7-upgrade/schema.js +3 -0
  266. package/schematics/rxjs-7-upgrade/schema.js.map +1 -0
  267. package/schematics/rxjs-7-upgrade/schema.json +14 -0
  268. package/schematics/utilities/typescript.d.ts +7 -0
  269. package/schematics/utilities/typescript.js +42 -0
  270. package/schematics/utilities/typescript.js.map +1 -0
  271. package/schematics/utilities/workspace.d.ts +8 -0
  272. package/schematics/utilities/workspace.js +72 -0
  273. package/schematics/utilities/workspace.js.map +1 -0
  274. package/src/assets/images/email-icon.png +0 -0
  275. package/src/assets/images/email-logo.png +0 -0
  276. package/src/assets/images/favicon-ech.svg +7 -0
  277. package/src/assets/images/favicon-esa.svg +6 -0
  278. package/src/assets/images/favicon-eum.svg +6 -0
  279. package/src/assets/images/favicon.svg +5 -0
  280. package/src/assets/images/icon-carbonhub.svg +10 -0
  281. package/src/assets/images/icon-eum.svg +5 -0
  282. package/src/assets/images/icon-ucp.svg +5 -0
  283. package/src/assets/images/icon-wattics.svg +5 -0
  284. package/src/assets/images/icon.svg +4 -0
  285. package/src/assets/images/logo.svg +3 -0
  286. package/src/assets/images/splash.gif +0 -0
  287. package/src/assets/locales/en_US.json +59 -0
  288. package/src/assets/scripts/unsupported-browser.js +17 -0
  289. package/src/styles/_base.scss +38 -0
  290. package/src/styles/_colors.scss +96 -0
  291. package/src/styles/_core.scss +4 -0
  292. package/src/styles/_functions.scss +114 -0
  293. package/src/styles/_global-variables.scss +232 -0
  294. package/src/styles/_icons.scss +24 -0
  295. package/src/styles/bootstrap/_grid.scss +34 -0
  296. package/src/styles/bootstrap/_reboot.scss +323 -0
  297. package/src/styles/components/_card.scss +21 -0
  298. package/src/styles/components/_link-icons.scss +38 -0
  299. package/src/styles/components/_splash.scss +57 -0
  300. package/src/styles/components/_unsupported-browsers.scss +24 -0
  301. package/src/styles/email/_email-base.scss +228 -0
  302. package/src/styles/email/email.scss +43 -0
  303. package/src/styles/index.scss +27 -0
  304. package/src/styles/mixins/_animations.scss +18 -0
  305. package/src/styles/mixins/_button-base.scss +185 -0
  306. package/src/styles/mixins/_card-base.scss +40 -0
  307. package/src/styles/mixins/_common.scss +52 -0
  308. package/src/styles/mixins/_dialog-base.scss +96 -0
  309. package/src/styles/mixins/_form-control-base.scss +641 -0
  310. package/src/styles/mixins/_login.scss +74 -0
  311. package/src/styles/mixins/_menu-base.scss +153 -0
  312. package/src/styles/mixins/_overlay-base.scss +33 -0
  313. package/src/styles/mixins/_resizable-base.scss +57 -0
  314. package/src/styles/mixins/_spinner-base.scss +34 -0
  315. package/src/styles/mixins/_table-base.scss +298 -0
  316. package/src/styles/mixins/_tabs-base.scss +110 -0
  317. package/src/styles/mixins/_tags-base.scss +116 -0
  318. package/src/styles/mixins/_text.scss +89 -0
  319. package/src/styles/mixins.scss +15 -0
  320. package/src/styles/utilities/_borders.scss +30 -0
  321. package/src/styles/utilities/_common.scss +49 -0
  322. package/src/styles/utilities/_layout.scss +116 -0
  323. package/src/styles/utilities/_spacing.scss +65 -0
  324. package/src/styles/utilities/_text.scss +139 -0
@@ -0,0 +1,40 @@
1
+ export class SpyFactory {
2
+ /**
3
+ * Create a jasmine Spy Object with spies for the methods of the given type.
4
+ *
5
+ * @param {Type<T>} type Type you want as a mock object, full of spies
6
+ * @returns {jasmine.SpyObj<T>} Spy object, full of spies, with type definitions
7
+ */
8
+ static createSpy(type) {
9
+ const methodNames = Object.getOwnPropertyNames(type.prototype);
10
+ const spyObj = jasmine.createSpyObj(methodNames);
11
+ return spyObj;
12
+ }
13
+ /**
14
+ * Create a jasmine Spy Object with spies for the type's properties and methods.
15
+ *
16
+ * @param {Type<T>} type Type you want as a mock object
17
+ * @returns {jasmine.SpyObj<T>} Spy object with method and property spies
18
+ */
19
+ static createSpyWithProperties(type) {
20
+ const methodNames = Object.getOwnPropertyNames(type.prototype);
21
+ // Passing in "new type()" as the second param here creates spies for the properties
22
+ // on the provided type that return the default values for each property. To access the spies
23
+ // to modify return values for these properties, use getPropertySpy()
24
+ const spyObj = jasmine.createSpyObj(methodNames, new type());
25
+ return spyObj;
26
+ }
27
+ /**
28
+ * Returns the jasmine spy for the given property on the spy object.
29
+ * NOTE: This will only work for properties on spy objects created using createSpyWithProperties() as
30
+ * createSpy() only creates spies for the type's methods
31
+ *
32
+ * @param {jasmine.SpyObj<T>} spyObj
33
+ * @param {K extends keyof T} property
34
+ * @returns
35
+ */
36
+ static getPropertySpy(spyObj, property) {
37
+ return Object.getOwnPropertyDescriptor(spyObj, property)?.get;
38
+ }
39
+ }
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3B5LWZhY3Rvcnkuc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdGVzdGluZy9zcHktZmFjdG9yeS5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sT0FBTyxVQUFVO0lBQ25COzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLFNBQVMsQ0FBSSxJQUFhO1FBQ3BDLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0QsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQXNCLENBQUM7UUFDdEUsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLHVCQUF1QixDQUFtQixJQUFhO1FBQ2pFLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDL0Qsb0ZBQW9GO1FBQ3BGLDZGQUE2RjtRQUM3RixxRUFBcUU7UUFDckUsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBc0IsQ0FBQztRQUNsRixPQUFPLE1BQU0sQ0FBQztJQUNsQixDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSSxNQUFNLENBQUMsY0FBYyxDQUF1QixNQUF5QixFQUFFLFFBQVc7UUFDckYsT0FBTyxNQUFNLENBQUMsd0JBQXdCLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEdBQThCLENBQUM7SUFDN0YsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFNweUZhY3Rvcnkge1xyXG4gICAgLyoqXHJcbiAgICAgKiBDcmVhdGUgYSBqYXNtaW5lIFNweSBPYmplY3Qgd2l0aCBzcGllcyBmb3IgdGhlIG1ldGhvZHMgb2YgdGhlIGdpdmVuIHR5cGUuXHJcbiAgICAgKlxyXG4gICAgICogQHBhcmFtIHtUeXBlPFQ+fSB0eXBlIFR5cGUgeW91IHdhbnQgYXMgYSBtb2NrIG9iamVjdCwgZnVsbCBvZiBzcGllc1xyXG4gICAgICogQHJldHVybnMge2phc21pbmUuU3B5T2JqPFQ+fSBTcHkgb2JqZWN0LCBmdWxsIG9mIHNwaWVzLCB3aXRoIHR5cGUgZGVmaW5pdGlvbnNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVTcHk8VD4odHlwZTogVHlwZTxUPik6IGphc21pbmUuU3B5T2JqPFQ+IHtcclxuICAgICAgICBjb25zdCBtZXRob2ROYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHR5cGUucHJvdG90eXBlKTtcclxuICAgICAgICBjb25zdCBzcHlPYmogPSBqYXNtaW5lLmNyZWF0ZVNweU9iaihtZXRob2ROYW1lcykgYXMgamFzbWluZS5TcHlPYmo8VD47XHJcbiAgICAgICAgcmV0dXJuIHNweU9iajtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIENyZWF0ZSBhIGphc21pbmUgU3B5IE9iamVjdCB3aXRoIHNwaWVzIGZvciB0aGUgdHlwZSdzIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMuXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7VHlwZTxUPn0gdHlwZSBUeXBlIHlvdSB3YW50IGFzIGEgbW9jayBvYmplY3RcclxuICAgICAqIEByZXR1cm5zIHtqYXNtaW5lLlNweU9iajxUPn0gU3B5IG9iamVjdCB3aXRoIG1ldGhvZCBhbmQgcHJvcGVydHkgc3BpZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBjcmVhdGVTcHlXaXRoUHJvcGVydGllczxUIGV4dGVuZHMgb2JqZWN0Pih0eXBlOiBUeXBlPFQ+KTogamFzbWluZS5TcHlPYmo8VD4ge1xyXG4gICAgICAgIGNvbnN0IG1ldGhvZE5hbWVzID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModHlwZS5wcm90b3R5cGUpO1xyXG4gICAgICAgIC8vIFBhc3NpbmcgaW4gXCJuZXcgdHlwZSgpXCIgYXMgdGhlIHNlY29uZCBwYXJhbSBoZXJlIGNyZWF0ZXMgc3BpZXMgZm9yIHRoZSBwcm9wZXJ0aWVzXHJcbiAgICAgICAgLy8gb24gdGhlIHByb3ZpZGVkIHR5cGUgdGhhdCByZXR1cm4gdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBlYWNoIHByb3BlcnR5LiBUbyBhY2Nlc3MgdGhlIHNwaWVzXHJcbiAgICAgICAgLy8gdG8gbW9kaWZ5IHJldHVybiB2YWx1ZXMgZm9yIHRoZXNlIHByb3BlcnRpZXMsIHVzZSBnZXRQcm9wZXJ0eVNweSgpXHJcbiAgICAgICAgY29uc3Qgc3B5T2JqID0gamFzbWluZS5jcmVhdGVTcHlPYmoobWV0aG9kTmFtZXMsIG5ldyB0eXBlKCkpIGFzIGphc21pbmUuU3B5T2JqPFQ+O1xyXG4gICAgICAgIHJldHVybiBzcHlPYmo7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZXR1cm5zIHRoZSBqYXNtaW5lIHNweSBmb3IgdGhlIGdpdmVuIHByb3BlcnR5IG9uIHRoZSBzcHkgb2JqZWN0LlxyXG4gICAgICogTk9URTogVGhpcyB3aWxsIG9ubHkgd29yayBmb3IgcHJvcGVydGllcyBvbiBzcHkgb2JqZWN0cyBjcmVhdGVkIHVzaW5nIGNyZWF0ZVNweVdpdGhQcm9wZXJ0aWVzKCkgYXNcclxuICAgICAqIGNyZWF0ZVNweSgpIG9ubHkgY3JlYXRlcyBzcGllcyBmb3IgdGhlIHR5cGUncyBtZXRob2RzXHJcbiAgICAgKiBcclxuICAgICAqIEBwYXJhbSB7amFzbWluZS5TcHlPYmo8VD59IHNweU9ialxyXG4gICAgICogQHBhcmFtIHtLIGV4dGVuZHMga2V5b2YgVH0gcHJvcGVydHkgXHJcbiAgICAgKiBAcmV0dXJucyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eVNweTxULCBLIGV4dGVuZHMga2V5b2YgVD4oc3B5T2JqOiBqYXNtaW5lLlNweU9iajxUPiwgcHJvcGVydHk6IEspOiBqYXNtaW5lLlNweTwoKSA9PiBUW0tdPiB7XHJcbiAgICAgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc3B5T2JqLCBwcm9wZXJ0eSk/LmdldCBhcyBqYXNtaW5lLlNweTwoKSA9PiBUW0tdPjtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -0,0 +1,57 @@
1
+ import { of } from "rxjs";
2
+ export const clickEvent = new MouseEvent('click');
3
+ ;
4
+ /**
5
+ * returns an object that is formatted the same way as an API error would be
6
+ * if the provided message was the message coming from the API
7
+ * @param message
8
+ */
9
+ export function getApiError(message) {
10
+ return {
11
+ error: {
12
+ status: {
13
+ message: message
14
+ }
15
+ }
16
+ };
17
+ }
18
+ export class MockTranslateService {
19
+ constructor(suffix) {
20
+ this.suffix = suffix;
21
+ this.currentLang = 'en_US';
22
+ }
23
+ get(key, interpolateParams) {
24
+ return of(key + (this.suffix || ''));
25
+ }
26
+ stream(key, interpolateParams) {
27
+ return of(key + (this.suffix || ''));
28
+ }
29
+ instant(key, interpolateParams) {
30
+ return key + (this.suffix || '');
31
+ }
32
+ setTranslation(langKey, languagePack, shouldMerge) {
33
+ //do nothing
34
+ }
35
+ setDefaultLang(lang) {
36
+ //do nothing
37
+ }
38
+ use(lang) {
39
+ //do nothing
40
+ }
41
+ }
42
+ export class MockTranslationHelperService {
43
+ translateObjectArray(items, prop) {
44
+ return Promise.resolve(items);
45
+ }
46
+ translateObjectProperty(item, prop, interpolateParams) {
47
+ return of(item);
48
+ }
49
+ getKendoLocaleId() {
50
+ return 'en';
51
+ }
52
+ translateCorePopValue(key, defaultValue) {
53
+ return defaultValue;
54
+ }
55
+ setLanguage() { }
56
+ }
57
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24tbW9ja3Muc3BlYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvdGVzdGluZy90cmFuc2xhdGlvbi1tb2Nrcy5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBYyxFQUFFLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFJdEMsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFlLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBRVIsQ0FBQztBQUN2RDs7OztHQUlHO0FBQ0YsTUFBTSxVQUFVLFdBQVcsQ0FBQyxPQUFlO0lBQ3hDLE9BQTBCO1FBQ3hCLEtBQUssRUFBRTtZQUNMLE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsT0FBTzthQUNqQjtTQUNGO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFFSCxNQUFNLE9BQU8sb0JBQW9CO0lBRS9CLFlBQW1CLE1BQWU7UUFBZixXQUFNLEdBQU4sTUFBTSxDQUFTO1FBRDNCLGdCQUFXLEdBQVUsT0FBTyxDQUFDO0lBQ0UsQ0FBQztJQUNoQyxHQUFHLENBQUMsR0FBc0IsRUFBRSxpQkFBc0M7UUFDdkUsT0FBTyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxNQUFNLENBQUMsR0FBc0IsRUFBRSxpQkFBc0M7UUFDMUUsT0FBTyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxPQUFPLENBQUMsR0FBcUIsRUFBRSxpQkFBc0M7UUFDMUUsT0FBTyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxjQUFjLENBQUMsT0FBZSxFQUFFLFlBQWlCLEVBQUUsV0FBb0I7UUFDNUUsWUFBWTtJQUNkLENBQUM7SUFFTSxjQUFjLENBQUMsSUFBWTtRQUNoQyxZQUFZO0lBQ2QsQ0FBQztJQUVNLEdBQUcsQ0FBQyxJQUFZO1FBQ3JCLFlBQVk7SUFDZCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sNEJBQTRCO0lBQ2hDLG9CQUFvQixDQUFJLEtBQWUsRUFBRSxJQUFZO1FBQzFELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRU0sdUJBQXVCLENBQUksSUFBTyxFQUFFLElBQVksRUFBRSxpQkFBdUI7UUFDOUUsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxxQkFBcUIsQ0FBQyxHQUFVLEVBQUUsWUFBb0I7UUFDM0QsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVNLFdBQVcsS0FBVSxDQUFDO0NBQzlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tIFwicnhqc1wiO1xyXG5pbXBvcnQgeyBQaXBlVHJhbnNmb3JtLCBQaXBlIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uL2h0dHBcIjtcclxuXHJcbmV4cG9ydCBjb25zdCBjbGlja0V2ZW50OiBNb3VzZUV2ZW50ID0gbmV3IE1vdXNlRXZlbnQoJ2NsaWNrJyk7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEFwaUVycm9yIHsgZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlIH07XHJcbi8qKlxyXG4gKiByZXR1cm5zIGFuIG9iamVjdCB0aGF0IGlzIGZvcm1hdHRlZCB0aGUgc2FtZSB3YXkgYXMgYW4gQVBJIGVycm9yIHdvdWxkIGJlXHJcbiAqIGlmIHRoZSBwcm92aWRlZCBtZXNzYWdlIHdhcyB0aGUgbWVzc2FnZSBjb21pbmcgZnJvbSB0aGUgQVBJXHJcbiAqIEBwYXJhbSBtZXNzYWdlXHJcbiAqL1xyXG4gZXhwb3J0IGZ1bmN0aW9uIGdldEFwaUVycm9yKG1lc3NhZ2U6IHN0cmluZyk6IEFwaUVycm9yIHtcclxuICAgIHJldHVybiA8SHR0cEVycm9yUmVzcG9uc2U+e1xyXG4gICAgICBlcnJvcjoge1xyXG4gICAgICAgIHN0YXR1czoge1xyXG4gICAgICAgICAgbWVzc2FnZTogbWVzc2FnZVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuICB9XHJcblxyXG5leHBvcnQgY2xhc3MgTW9ja1RyYW5zbGF0ZVNlcnZpY2Uge1xyXG4gIHB1YmxpYyBjdXJyZW50TGFuZzpzdHJpbmcgPSAnZW5fVVMnO1xyXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBzdWZmaXg/OiBzdHJpbmcpIHsgfVxyXG4gIHB1YmxpYyBnZXQoa2V5OiBzdHJpbmcgfCBzdHJpbmdbXSwgaW50ZXJwb2xhdGVQYXJhbXM/OiBPYmplY3QgfCB1bmRlZmluZWQpOiBPYnNlcnZhYmxlPHN0cmluZyB8IGFueT4ge1xyXG4gICAgcmV0dXJuIG9mKGtleSArICh0aGlzLnN1ZmZpeCB8fCAnJykpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHN0cmVhbShrZXk6IHN0cmluZyB8IHN0cmluZ1tdLCBpbnRlcnBvbGF0ZVBhcmFtcz86IE9iamVjdCB8IHVuZGVmaW5lZCk6IE9ic2VydmFibGU8c3RyaW5nIHwgYW55PiB7XHJcbiAgICByZXR1cm4gb2Yoa2V5ICsgKHRoaXMuc3VmZml4IHx8ICcnKSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaW5zdGFudChrZXk6c3RyaW5nIHwgc3RyaW5nW10sIGludGVycG9sYXRlUGFyYW1zPzogT2JqZWN0IHwgdW5kZWZpbmVkKTogYW55IHtcclxuICAgIHJldHVybiBrZXkgKyAodGhpcy5zdWZmaXggfHwgJycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRyYW5zbGF0aW9uKGxhbmdLZXk6IHN0cmluZywgbGFuZ3VhZ2VQYWNrOiBhbnksIHNob3VsZE1lcmdlOiBib29sZWFuKXtcclxuICAgIC8vZG8gbm90aGluZ1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldERlZmF1bHRMYW5nKGxhbmc6IHN0cmluZyl7XHJcbiAgICAvL2RvIG5vdGhpbmdcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1c2UobGFuZzogc3RyaW5nKSB7XHJcbiAgICAvL2RvIG5vdGhpbmdcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBNb2NrVHJhbnNsYXRpb25IZWxwZXJTZXJ2aWNlIHtcclxuICBwdWJsaWMgdHJhbnNsYXRlT2JqZWN0QXJyYXk8VD4oaXRlbXM6IEFycmF5PFQ+LCBwcm9wOiBzdHJpbmcpOiBQcm9taXNlPEFycmF5PFQ+PiB7XHJcbiAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKGl0ZW1zKTtcclxuICB9XHJcbiAgXHJcbiAgcHVibGljIHRyYW5zbGF0ZU9iamVjdFByb3BlcnR5PFQ+KGl0ZW06IFQsIHByb3A6IHN0cmluZywgaW50ZXJwb2xhdGVQYXJhbXM/OiBhbnkpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiBvZihpdGVtKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRLZW5kb0xvY2FsZUlkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gJ2VuJztcclxuICB9XHJcblxyXG4gIHB1YmxpYyB0cmFuc2xhdGVDb3JlUG9wVmFsdWUoa2V5OnN0cmluZywgZGVmYXVsdFZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIGRlZmF1bHRWYWx1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRMYW5ndWFnZSgpOiB2b2lkIHt9XHJcbn0iXX0=
@@ -0,0 +1,17 @@
1
+ import { Injectable } from '@angular/core';
2
+ import { of } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ export class UserPreferenceService {
5
+ getPreferences() {
6
+ return of({ preference: { dateFormat: 'MM/DD/YYYY', timeFormat: 'h:mm:ss a' } });
7
+ }
8
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserPreferenceService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
9
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserPreferenceService, providedIn: 'root' }); }
10
+ }
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: UserPreferenceService, decorators: [{
12
+ type: Injectable,
13
+ args: [{
14
+ providedIn: 'root'
15
+ }]
16
+ }] });
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1wcmVmZXJlbmNlLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb21wb25lbnRzL3NyYy9saWIvc2hhcmVkL3VzZXItcHJlZmVyZW5jZS5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFVdEMsTUFBTSxPQUFPLHFCQUFxQjtJQUV6QixjQUFjO1FBQ2pCLE9BQU8sRUFBRSxDQUFDLEVBQUMsVUFBVSxFQUFDLEVBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ2hGLENBQUM7K0dBSlUscUJBQXFCO21IQUFyQixxQkFBcUIsY0FGdEIsTUFBTTs7NEZBRUwscUJBQXFCO2tCQUhqQyxVQUFVO21CQUFDO29CQUNaLFVBQVUsRUFBRSxNQUFNO2lCQUNqQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcclxuXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIERhdGVQcmVmZXJlbmNlQ29udGFpbmVyIHtcclxuICBwcmVmZXJlbmNlOiB7ZGF0ZUZvcm1hdDogc3RyaW5nfG51bGx8dW5kZWZpbmVkLCB0aW1lRm9ybWF0OiBzdHJpbmd8bnVsbHx1bmRlZmluZWR9IHwgbnVsbCB8IHVuZGVmaW5lZFxyXG59XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbnByb3ZpZGVkSW46ICdyb290J1xyXG59KVxyXG5leHBvcnQgY2xhc3MgVXNlclByZWZlcmVuY2VTZXJ2aWNlIHtcclxuXHJcbiAgcHVibGljIGdldFByZWZlcmVuY2VzKCk6IE9ic2VydmFibGU8RGF0ZVByZWZlcmVuY2VDb250YWluZXI+IHsgXHJcbiAgICAgIHJldHVybiBvZih7cHJlZmVyZW5jZTp7ZGF0ZUZvcm1hdDogJ01NL0REL1lZWVknLCB0aW1lRm9ybWF0OiAnaDptbTpzcyBhJ319KTtcclxuICB9XHJcbiAgXHJcbn1cclxuIl19
@@ -0,0 +1,246 @@
1
+ import { Directive } from '@angular/core';
2
+ import { upperFirst } from 'lodash';
3
+ import { takeUntil } from 'rxjs/operators';
4
+ import { TelemetryService } from '../../../core/telemetry.service';
5
+ import { PageBaseComponent } from '../../page/page-base/page-base.component';
6
+ import * as i0 from "@angular/core";
7
+ export class WizardBaseComponent extends PageBaseComponent {
8
+ get tabGroup() {
9
+ return this._tabGroup;
10
+ }
11
+ set tabGroup(value) {
12
+ this._tabGroup = value;
13
+ }
14
+ get currentTab() {
15
+ return this._currentTab;
16
+ }
17
+ constructor(injector) {
18
+ super(injector);
19
+ this.isWizardMode = true;
20
+ this.showWizardSaveSuccess = false;
21
+ /** True when there are no custom fields or when in wizard mode on the custom fields tab */
22
+ this.showSave = true;
23
+ /** True when in wizard mode you do not want to show the next or save button*/
24
+ this.hideNextSaveButton = false;
25
+ /** True when in wizard mode and on the custom fields tab */
26
+ this.showBack = false;
27
+ this.cancelLabel = 'Cancel';
28
+ this.dialogId = '';
29
+ this.telemetryService = injector.get(TelemetryService);
30
+ }
31
+ onFirstInit() {
32
+ this._tabGroup = this.configureTabs();
33
+ this.setCurrentTab(this._tabGroup.selected);
34
+ this.subscribeToTabChanges();
35
+ }
36
+ onWizardSaveSuccess() { }
37
+ async onAfterViewInit() {
38
+ this.updateButtons();
39
+ }
40
+ //
41
+ // PageBase lifecycle hooks. Override in derived class if needed.
42
+ //
43
+ async applyModelUpdates() { }
44
+ async saveToApi() { }
45
+ onSaveComplete(entityId) { }
46
+ async onSave(event) {
47
+ // Mark the current tab as completed if the tab is valid before attempting to save.
48
+ if (this._currentTab && this.isCurrentTabValid()) {
49
+ this._currentTab.completed = true;
50
+ }
51
+ await super.onSave(event);
52
+ if (this.showWizardSaveSuccess) {
53
+ this.onWizardSaveSuccess();
54
+ this.telemetryService.trackEvent(`${this.dialogId}_WizardSuccess`);
55
+ }
56
+ }
57
+ /**
58
+ * Navigates to the next tab in the tab group. Calls canGoToNextTab() to determine if navigating to the next tab
59
+ * is allowed or not. If tab validation succeeds, enables the next tab (if it is disabled) and selects it.
60
+ * @memberof WizardBaseComponent
61
+ */
62
+ nextTab() {
63
+ const currentTabIndex = this._tabGroup.items.findIndex(t => t === this._currentTab);
64
+ // If there is a current tab selected and the current tab is not the last tab,
65
+ // update the selected tab in the tabGroup to the next tab
66
+ if (currentTabIndex > -1 && currentTabIndex < this._tabGroup.items.length - 1) {
67
+ const nextTab = this._tabGroup.items[currentTabIndex + 1];
68
+ if (this.canGoToNextTab(nextTab)) {
69
+ // Enable the next tab if it is disabled
70
+ if (nextTab.disabled) {
71
+ nextTab.disabled = false;
72
+ }
73
+ this._tabGroup.selected = nextTab;
74
+ this.telemetryService.trackEvent(`${this.dialogId}_${upperFirst(nextTab.id?.toString())}`);
75
+ }
76
+ else {
77
+ this.onTabChangeFailed();
78
+ }
79
+ }
80
+ }
81
+ /**
82
+ * Navigates to the previous tab in the tab group. Calls canGoToPreviousTab() to determine if navigating to the previous tab
83
+ * is allowed or not. Navigates to the tab if validation succeeds
84
+ * @memberof WizardBaseComponent
85
+ */
86
+ previousTab() {
87
+ const currentTabIndex = this._tabGroup.items.findIndex(t => t === this._currentTab);
88
+ // If there is a current tab selected and the current tab is not the first tab,
89
+ // update the selected tab in the tabGroup to the previous tab
90
+ if (currentTabIndex > 0 && currentTabIndex < this._tabGroup.items.length) {
91
+ const prevTab = this._tabGroup.items[currentTabIndex - 1];
92
+ if (this.canGoToPreviousTab(prevTab)) {
93
+ this._tabGroup.selected = prevTab;
94
+ this.telemetryService.trackEvent(`${this.dialogId}_${upperFirst(prevTab.id?.toString())}`);
95
+ }
96
+ else {
97
+ this.onTabChangeFailed();
98
+ }
99
+ }
100
+ }
101
+ updateButtons() {
102
+ if (this.isWizardMode) {
103
+ if (this.currentTab) {
104
+ const tabIndex = this._tabGroup.items.findIndex(t => t === this.currentTab);
105
+ if (tabIndex > 0) {
106
+ // Show the back button and set the label to the previous tab when not on the first tab
107
+ this.showBack = true;
108
+ const prevTabKey = this._tabGroup.items[tabIndex - 1].label;
109
+ this.backLabel = `${this.translateService.instant('Back_TC')}: ${this.translateService.instant(prevTabKey)}`;
110
+ }
111
+ else {
112
+ // Hide the back button when on the first tab
113
+ this.showBack = false;
114
+ }
115
+ if (tabIndex < this._tabGroup.items.length - 1) {
116
+ // Show the next button and set the label to the next tab when not on the last tab
117
+ this.showSave = false;
118
+ const nextTabKey = this._tabGroup.items[tabIndex + 1].label;
119
+ this.nextLabel = `${this.translateService.instant('Next_TC')}: ${this.translateService.instant(nextTabKey)}`;
120
+ }
121
+ else {
122
+ this.nextLabel = undefined;
123
+ // Show the save button instead of next when on the last tab
124
+ this.showSave = true;
125
+ }
126
+ }
127
+ }
128
+ else {
129
+ this.showBack = false;
130
+ this.showSave = true;
131
+ }
132
+ }
133
+ /**
134
+ * Used to determine whether navigation to the next tab is prevented or not. Fired in nextTab(), but not when a tab is
135
+ * clicked or selected programmatically. By default, this checks the validity of the current tab's form model and
136
+ * prevents navigation if it is invalid. Can be overridden if different logic is needed.
137
+ * @param nextTab - The tab being navigated to
138
+ * @memberof WizardBaseComponent
139
+ */
140
+ canGoToNextTab(nextTab) {
141
+ return this.isCurrentTabValid();
142
+ }
143
+ /**
144
+ * Used to determine whether navigation to the previous tab is prevented or not. Fired in previousTab(), but not when a tab is
145
+ * clicked or selected programmatically. By default, this checks the validity of the current tab's form model and
146
+ * prevents navigation if it is invalid. Can be overridden if different logic is needed.
147
+ * @param prevTab - The tab being navigated to
148
+ * @memberof WizardBaseComponent
149
+ */
150
+ canGoToPreviousTab(prevTab) {
151
+ return this.isCurrentTabValid();
152
+ }
153
+ /**
154
+ * Used to determine whether navigating away from the current tab is prevented or not. Fired any time the selected tab
155
+ * changes in the tabGroup. By default, this checks the validity of the current tab's form model and prevents navigation
156
+ * if it is invalid. Can be overridden if different logic is needed.
157
+ * @memberof WizardBaseComponent
158
+ */
159
+ canLeaveCurrentTab() {
160
+ return this.isCurrentTabValid();
161
+ }
162
+ /**
163
+ * Triggers validation on the current wizard tab's form control. Returns true if the form control is valid, false if not.
164
+ * Returns true if the formModelPath for the tab is not defined or no form control is found. Can be overridden if different
165
+ * logic is needed to validate the form control for the current tab.
166
+ * @memberof WizardBaseComponent
167
+ */
168
+ isCurrentTabValid() {
169
+ if (this._currentTab && this._currentTab.formModelPath) {
170
+ let formModel = this.formGroup.get(this._currentTab.formModelPath);
171
+ if (formModel) {
172
+ formModel.markAllAsTouched();
173
+ return formModel.valid || formModel.disabled;
174
+ }
175
+ }
176
+ return true;
177
+ }
178
+ /**
179
+ * Fired if navigation to a tab succeeds. Hides the error banner by default, but can be overridden if logic is needed.
180
+ * @memberof WizardBaseComponent
181
+ */
182
+ onTabChangeSuccess() {
183
+ this.updateButtons();
184
+ this.hideErrorBanner();
185
+ }
186
+ /**
187
+ * Fired if navigation to a tab fails. By default, shows the error banner with the default invalid form message, but
188
+ * can be overridden if different logic is needed.
189
+ * @memberof WizardBaseComponent
190
+ */
191
+ onTabChangeFailed() {
192
+ this.showErrorBanner(this.defaultInvalidFormMessage);
193
+ }
194
+ /**
195
+ * Listen for when the tabGroup's selected item is changed (I.E. when a tab is clicked or selected programmatically)
196
+ * and navigate to that tab.
197
+ */
198
+ subscribeToTabChanges() {
199
+ // Whenever the tabGroup's selected tab changes, go to the selected tab
200
+ this._tabGroup.selectedChanges.pipe(takeUntil(this.destroyed)).subscribe(tab => {
201
+ this.goToTab(tab);
202
+ });
203
+ }
204
+ /**
205
+ * Triggered when the tabGroup's selected item changes. If the current tab passes validation, updates
206
+ * the current tab to the selected tab.
207
+ * @param tab - the tab that was selected
208
+ */
209
+ goToTab(tab) {
210
+ // Only continue if the current tab is not the tab that was selected. They are the same
211
+ // when we are resetting the tab group's selected tab back to the current tab when validation fails.
212
+ // Without this check, we could end up in an infinite loop.
213
+ if (tab !== this._currentTab) {
214
+ if (this.canLeaveCurrentTab()) {
215
+ // Mark the current tab as complete before switching
216
+ if (this._currentTab) {
217
+ this._currentTab.completed = true;
218
+ }
219
+ this.setCurrentTab(tab);
220
+ this.onTabChangeSuccess();
221
+ }
222
+ else {
223
+ // Because the tabGroup's selected tab is updated when a tab is clicked before we can run any form validation,
224
+ // we need to reset the selected tab back to the current tab if validation fails.
225
+ // Without this we would have no way to prevent the user from leaving the current tab if the form is invalid.
226
+ this._tabGroup.selected = this._currentTab;
227
+ this.onTabChangeFailed();
228
+ }
229
+ }
230
+ }
231
+ /**
232
+ * Updates the current tab, title, and help.
233
+ * @param tab Tab to set
234
+ */
235
+ setCurrentTab(tab) {
236
+ this._currentTab = tab;
237
+ this.help = tab ? tab.help : undefined;
238
+ this.title = tab ? tab.title : undefined;
239
+ }
240
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardBaseComponent, deps: [{ token: i0.Injector }], target: i0.ɵɵFactoryTarget.Directive }); }
241
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: WizardBaseComponent, usesInheritance: true, ngImport: i0 }); }
242
+ }
243
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardBaseComponent, decorators: [{
244
+ type: Directive
245
+ }], ctorParameters: () => [{ type: i0.Injector }] });
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJhc2UuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLWJhc2Uvd2l6YXJkLWJhc2UuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVksTUFBTSxlQUFlLENBQUM7QUFDcEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHM0MsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFbkUsT0FBTyxFQUFFLGlCQUFpQixFQUFrQixNQUFNLDBDQUEwQyxDQUFDOztBQWU3RixNQUFNLE9BQWdCLG1CQUFvQixTQUFRLGlCQUFpQjtJQTBCakUsSUFBVyxRQUFRO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4QixDQUFDO0lBQ0QsSUFBVyxRQUFRLENBQUMsS0FBZTtRQUNqQyxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO0lBT0QsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBTUQsWUFBWSxRQUFrQjtRQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUE3Q1gsaUJBQVksR0FBWSxJQUFJLENBQUM7UUFDN0IsMEJBQXFCLEdBQVksS0FBSyxDQUFDO1FBRTlDLDJGQUEyRjtRQUNwRixhQUFRLEdBQVksSUFBSSxDQUFDO1FBRWhDLDhFQUE4RTtRQUN2RSx1QkFBa0IsR0FBWSxLQUFLLENBQUM7UUFFM0MsNERBQTREO1FBQ3JELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFLMUIsZ0JBQVcsR0FBVyxRQUFRLENBQUM7UUFFL0IsYUFBUSxH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SSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQzdCLElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztnQkFDOUIsb0RBQW9EO2dCQUNwRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztvQkFDckIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO2dCQUNwQyxDQUFDO2dCQUNELElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQU0sQ0FBQztnQkFDTiw4R0FBOEc7Z0JBQzlHLGlGQUFpRjtnQkFDakYsNkdBQTZHO2dCQUM3RyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO2dCQUMzQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSyxhQUFhLENBQUMsR0FBZTtRQUNuQyxJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDM0MsQ0FBQzsrR0F6Um1CLG1CQUFtQjttR0FBbkIsbUJBQW1COzs0RkFBbkIsbUJBQW1CO2tCQUR4QyxTQUFTIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBJbmplY3RvciB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyB1cHBlckZpcnN0IH0gZnJvbSAnbG9kYXNoJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBOYXZHcm91cCB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWdyb3VwJztcclxuaW1wb3J0IHsgTmF2SXRlbSB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWl0ZW0nO1xyXG5pbXBvcnQgeyBUZWxlbWV0cnlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vY29yZS90ZWxlbWV0cnkuc2VydmljZSc7XHJcbmltcG9ydCB7IEhlbHAgfSBmcm9tICcuLi8uLi8uLi9kaXNwbGF5L2hlbHAvaGVscC10eXBlcyc7XHJcbmltcG9ydCB7IFBhZ2VCYXNlQ29tcG9uZW50LCBQYWdlSW5pdFJlc3VsdCB9IGZyb20gJy4uLy4uL3BhZ2UvcGFnZS1iYXNlL3BhZ2UtYmFzZS5jb21wb25lbnQnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBXaXphcmRUYWIgZXh0ZW5kcyBOYXZJdGVtIHtcclxuICAvKipcclxuICAgKiBQYXRoIHRvIGEgZm9ybSBncm91cC9hcnJheS9jb250cm9sIGNvbnRhaW5lZCBpbiB0aGUgZm9ybSdzIG1haW4gZm9ybSBncm91cC5cclxuICAgKiBVc2VkIHRvIG1hcCBhIHRhYiB0byBpdCdzIGZvcm0gbW9kZWwgZm9yIGZvcm0gdmFsaWRhdGlvbiBpbiBXaXphcmRCYXNlQ29tcG9uZW50LlxyXG4gICAqIFNlZSBodHRwczovL2FuZ3VsYXIuaW8vYXBpL2Zvcm1zL0Fic3RyYWN0Q29udHJvbCNnZXQtdXNhZ2Utbm90ZXMgZm9yIGRldGFpbHMgb24gcGF0aHMuXHJcbiAgICovXHJcbiAgZm9ybU1vZGVsUGF0aD86IHN0cmluZyB8IChzdHJpbmcgfCBudW1iZXIpW107XHJcbiAgaGVscD86IEhlbHA7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgY29tcGxldGVkPzogYm9vbGVhbjtcclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBXaXphcmRCYXNlQ29tcG9uZW50IGV4dGVuZHMgUGFnZUJhc2VDb21wb25lbnQge1xyXG5cclxuICBwdWJsaWMgaXNXaXphcmRNb2RlOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd1dpemFyZFNhdmVTdWNjZXNzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gdGhlcmUgYXJlIG5vIGN1c3RvbSBmaWVsZHMgb3Igd2hlbiBpbiB3aXphcmQgbW9kZSBvbiB0aGUgY3VzdG9tIGZpZWxkcyB0YWIgKi9cclxuICBwdWJsaWMgc2hvd1NhdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICAvKiogVHJ1ZSB3aGVuIGluIHdpemFyZCBtb2RlIHlvdSBkbyBub3Qgd2FudCB0byBzaG93IHRoZSBuZXh0IG9yIHNhdmUgYnV0dG9uKi9cclxuICBwdWJsaWMgaGlkZU5leHRTYXZlQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIC8qKiBUcnVlIHdoZW4gaW4gd2l6YXJkIG1vZGUgYW5kIG9uIHRoZSBjdXN0b20gZmllbGRzIHRhYiAqL1xyXG4gIHB1YmxpYyBzaG93QmFjazogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAvKiogTGFiZWxzIGZvciB0aGUgY2FuY2VsLCBuZXh0IGFuZCBiYWNrIGJ1dHRvbnMgKi9cclxuICBwdWJsaWMgbmV4dExhYmVsPzogc3RyaW5nO1xyXG4gIHB1YmxpYyBiYWNrTGFiZWw/OiBzdHJpbmc7XHJcbiAgcHVibGljIGNhbmNlbExhYmVsOiBzdHJpbmcgPSAnQ2FuY2VsJztcclxuXHJcbiAgcHVibGljIGRpYWxvZ0lkOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgLyoqXHJcbiAgICogQ29udGFpbnMgdGhlIGF2YWlsYWJsZSB3aXphcmQgdGFicy4gUGFzc2VkIHRvIFRhYnNDb21wb25lbnQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIF90YWJHcm91cCE6IE5hdkdyb3VwO1xyXG4gIHB1YmxpYyBnZXQgdGFiR3JvdXAoKTogTmF2R3JvdXAge1xyXG4gICAgcmV0dXJuIHRoaXMuX3RhYkdyb3VwO1xyXG4gIH1cclxuICBwdWJsaWMgc2V0IHRhYkdyb3VwKHZhbHVlOiBOYXZHcm91cCkge1xyXG4gICAgdGhpcy5fdGFiR3JvdXAgPSB2YWx1ZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbnRhaW5zIHRoZSB0YWIgdGhhdCBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcml2YXRlIF9jdXJyZW50VGFiPzogV2l6YXJkVGFiO1xyXG4gIHB1YmxpYyBnZXQgY3VycmVudFRhYigpOiBXaXphcmRUYWIgfCB1bmRlZmluZWQge1xyXG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUYWI7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgaW5pdFByb21pc2UhOiBQcm9taXNlPFdpemFyZEJhc2VDb21wb25lbnQ+O1xyXG5cclxuICBwcm90ZWN0ZWQgdGVsZW1ldHJ5U2VydmljZTogVGVsZW1ldHJ5U2VydmljZTtcclxuXHJcbiAgY29uc3RydWN0b3IoaW5qZWN0b3I6IEluamVjdG9yKSB7XHJcbiAgICBzdXBlcihpbmplY3Rvcik7XHJcblxyXG4gICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlID0gaW5qZWN0b3IuZ2V0KFRlbGVtZXRyeVNlcnZpY2UpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIG9uRmlyc3RJbml0KCkge1xyXG4gICAgdGhpcy5fdGFiR3JvdXAgPSB0aGlzLmNvbmZpZ3VyZVRhYnMoKTtcclxuICAgIHRoaXMuc2V0Q3VycmVudFRhYih0aGlzLl90YWJHcm91cC5zZWxlY3RlZCk7XHJcbiAgICB0aGlzLnN1YnNjcmliZVRvVGFiQ2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IG9uSW5pdCgpOiBQcm9taXNlPFBhZ2VJbml0UmVzdWx0PjtcclxuXHJcbiAgcHJvdGVjdGVkIG9uV2l6YXJkU2F2ZVN1Y2Nlc3MoKTogdm9pZCB7IH1cclxuXHJcbiAgcHJvdGVjdGVkIGFzeW5jIG9uQWZ0ZXJWaWV3SW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHRoaXMudXBkYXRlQnV0dG9ucygpO1xyXG4gIH1cclxuXHJcbiAgLy9cclxuICAvLyBQYWdlQmFzZSBsaWZlY3ljbGUgaG9va3MuIE92ZXJyaWRlIGluIGRlcml2ZWQgY2xhc3MgaWYgbmVlZGVkLlxyXG4gIC8vXHJcbiAgcHJvdGVjdGVkIGFzeW5jIGFwcGx5TW9kZWxVcGRhdGVzKCkge31cclxuICBwcm90ZWN0ZWQgYXN5bmMgc2F2ZVRvQXBpKCk6IFByb21pc2U8bnVtYmVyfHZvaWQ+IHt9XHJcbiAgcHJvdGVjdGVkIG9uU2F2ZUNvbXBsZXRlKGVudGl0eUlkOiBudW1iZXIpIHt9XHJcblxyXG4gIHB1YmxpYyBhc3luYyBvblNhdmUoZXZlbnQ6IEV2ZW50KSB7XHJcbiAgICAvLyBNYXJrIHRoZSBjdXJyZW50IHRhYiBhcyBjb21wbGV0ZWQgaWYgdGhlIHRhYiBpcyB2YWxpZCBiZWZvcmUgYXR0ZW1wdGluZyB0byBzYXZlLlxyXG4gICAgaWYgKHRoaXMuX2N1cnJlbnRUYWIgJiYgdGhpcy5pc0N1cnJlbnRUYWJWYWxpZCgpKSB7XHJcbiAgICAgIHRoaXMuX2N1cnJlbnRUYWIuY29tcGxldGVkID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBhd2FpdCBzdXBlci5vblNhdmUoZXZlbnQpO1xyXG5cclxuICAgIGlmICh0aGlzLnNob3dXaXphcmRTYXZlU3VjY2Vzcykge1xyXG4gICAgICB0aGlzLm9uV2l6YXJkU2F2ZVN1Y2Nlc3MoKTtcclxuICAgICAgdGhpcy50ZWxlbWV0cnlTZXJ2aWNlLnRyYWNrRXZlbnQoYCR7dGhpcy5kaWFsb2dJZH1fV2l6YXJkU3VjY2Vzc2ApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogTmF2aWdhdGVzIHRvIHRoZSBuZXh0IHRhYiBpbiB0aGUgdGFiIGdyb3VwLiBDYWxscyBjYW5Hb1RvTmV4dFRhYigpIHRvIGRldGVybWluZSBpZiBuYXZpZ2F0aW5nIHRvIHRoZSBuZXh0IHRhYlxyXG4gICAqIGlzIGFsbG93ZWQgb3Igbm90LiBJZiB0YWIgdmFsaWRhdGlvbiBzdWNjZWVkcywgZW5hYmxlcyB0aGUgbmV4dCB0YWIgKGlmIGl0IGlzIGRpc2FibGVkKSBhbmQgc2VsZWN0cyBpdC5cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHB1YmxpYyBuZXh0VGFiKCkge1xyXG4gICAgY29uc3QgY3VycmVudFRhYkluZGV4ID0gdGhpcy5fdGFiR3JvdXAuaXRlbXMuZmluZEluZGV4KHQgPT4gdCA9PT0gdGhpcy5fY3VycmVudFRhYik7XHJcbiAgICAvLyBJZiB0aGVyZSBpcyBhIGN1cnJlbnQgdGFiIHNlbGVjdGVkIGFuZCB0aGUgY3VycmVudCB0YWIgaXMgbm90IHRoZSBsYXN0IHRhYixcclxuICAgIC8vIHVwZGF0ZSB0aGUgc2VsZWN0ZWQgdGFiIGluIHRoZSB0YWJHcm91cCB0byB0aGUgbmV4dCB0YWJcclxuICAgIGlmIChjdXJyZW50VGFiSW5kZXggPiAtMSAmJiBjdXJyZW50VGFiSW5kZXggPCB0aGlzLl90YWJHcm91cC5pdGVtcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGNvbnN0IG5leHRUYWIgPSB0aGlzLl90YWJHcm91cC5pdGVtc1tjdXJyZW50VGFiSW5kZXggKyAxXTtcclxuICAgICAgaWYgKHRoaXMuY2FuR29Ub05leHRUYWIobmV4dFRhYikpIHtcclxuICAgICAgICAvLyBFbmFibGUgdGhlIG5leHQgdGFiIGlmIGl0IGlzIGRpc2FibGVkXHJcbiAgICAgICAgaWYgKG5leHRUYWIuZGlzYWJsZWQpIHtcclxuICAgICAgICAgIG5leHRUYWIuZGlzYWJsZWQgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5fdGFiR3JvdXAuc2VsZWN0ZWQgPSBuZXh0VGFiO1xyXG4gICAgICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZS50cmFja0V2ZW50KGAke3RoaXMuZGlhbG9nSWR9XyR7dXBwZXJGaXJzdChuZXh0VGFiLmlkPy50b1N0cmluZygpKX1gKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uVGFiQ2hhbmdlRmFpbGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE5hdmlnYXRlcyB0byB0aGUgcHJldmlvdXMgdGFiIGluIHRoZSB0YWIgZ3JvdXAuIENhbGxzIGNhbkdvVG9QcmV2aW91c1RhYigpIHRvIGRldGVybWluZSBpZiBuYXZpZ2F0aW5nIHRvIHRoZSBwcmV2aW91cyB0YWJcclxuICAgKiBpcyBhbGxvd2VkIG9yIG5vdC4gTmF2aWdhdGVzIHRvIHRoZSB0YWIgaWYgdmFsaWRhdGlvbiBzdWNjZWVkc1xyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHVibGljIHByZXZpb3VzVGFiKCkge1xyXG4gICAgY29uc3QgY3VycmVudFRhYkluZGV4ID0gdGhpcy5fdGFiR3JvdXAuaXRlbXMuZmluZEluZGV4KHQgPT4gdCA9PT0gdGhpcy5fY3VycmVudFRhYik7XHJcbiAgICAvLyBJZiB0aGVyZSBpcyBhIGN1cnJlbnQgdGFiIHNlbGVjdGVkIGFuZCB0aGUgY3VycmVudCB0YWIgaXMgbm90IHRoZSBmaXJzdCB0YWIsXHJcbiAgICAvLyB1cGRhdGUgdGhlIHNlbGVjdGVkIHRhYiBpbiB0aGUgdGFiR3JvdXAgdG8gdGhlIHByZXZpb3VzIHRhYlxyXG4gICAgaWYgKGN1cnJlbnRUYWJJbmRleCA+IDAgJiYgY3VycmVudFRhYkluZGV4IDwgdGhpcy5fdGFiR3JvdXAuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IHByZXZUYWIgPSB0aGlzLl90YWJHcm91cC5pdGVtc1tjdXJyZW50VGFiSW5kZXggLSAxXTtcclxuICAgICAgaWYgKHRoaXMuY2FuR29Ub1ByZXZpb3VzVGFiKHByZXZUYWIpKSB7XHJcbiAgICAgICAgdGhpcy5fdGFiR3JvdXAuc2VsZWN0ZWQgPSBwcmV2VGFiO1xyXG4gICAgICAgIHRoaXMudGVsZW1ldHJ5U2VydmljZS50cmFja0V2ZW50KGAke3RoaXMuZGlhbG9nSWR9XyR7dXBwZXJGaXJzdChwcmV2VGFiLmlkPy50b1N0cmluZygpKX1gKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm9uVGFiQ2hhbmdlRmFpbGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCB1cGRhdGVCdXR0b25zKCkge1xyXG4gICAgaWYgKHRoaXMuaXNXaXphcmRNb2RlKSB7XHJcbiAgICAgIGlmICh0aGlzLmN1cnJlbnRUYWIpIHtcclxuICAgICAgICBjb25zdCB0YWJJbmRleCA9IHRoaXMuX3RhYkdyb3VwLml0ZW1zLmZpbmRJbmRleCh0ID0+IHQgPT09IHRoaXMuY3VycmVudFRhYik7XHJcbiAgICAgICAgaWYgKHRhYkluZGV4ID4gMCkge1xyXG4gICAgICAgICAgLy8gU2hvdyB0aGUgYmFjayBidXR0b24gYW5kIHNldCB0aGUgbGFiZWwgdG8gdGhlIHByZXZpb3VzIHRhYiB3aGVuIG5vdCBvbiB0aGUgZmlyc3QgdGFiXHJcbiAgICAgICAgICB0aGlzLnNob3dCYWNrID0gdHJ1ZTtcclxuICAgICAgICAgIGNvbnN0IHByZXZUYWJLZXkgPSB0aGlzLl90YWJHcm91cC5pdGVtc1t0YWJJbmRleCAtIDFdLmxhYmVsITtcclxuICAgICAgICAgIHRoaXMuYmFja0xhYmVsID0gYCR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQoJ0JhY2tfVEMnKX06ICR7dGhpcy50cmFuc2xhdGVTZXJ2aWNlLmluc3RhbnQocHJldlRhYktleSl9YDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgLy8gSGlkZSB0aGUgYmFjayBidXR0b24gd2hlbiBvbiB0aGUgZmlyc3QgdGFiXHJcbiAgICAgICAgICB0aGlzLnNob3dCYWNrID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGFiSW5kZXggPCB0aGlzLl90YWJHcm91cC5pdGVtcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAvLyBTaG93IHRoZSBuZXh0IGJ1dHRvbiBhbmQgc2V0IHRoZSBsYWJlbCB0byB0aGUgbmV4dCB0YWIgd2hlbiBub3Qgb24gdGhlIGxhc3QgdGFiXHJcbiAgICAgICAgICB0aGlzLnNob3dTYXZlID0gZmFsc2U7XHJcbiAgICAgICAgICBjb25zdCBuZXh0VGFiS2V5ID0gdGhpcy5fdGFiR3JvdXAuaXRlbXNbdGFiSW5kZXggKyAxXS5sYWJlbCE7XHJcbiAgICAgICAgICB0aGlzLm5leHRMYWJlbCA9IGAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KCdOZXh0X1RDJyl9OiAke3RoaXMudHJhbnNsYXRlU2VydmljZS5pbnN0YW50KG5leHRUYWJLZXkpfWA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubmV4dExhYmVsID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgLy8gU2hvdyB0aGUgc2F2ZSBidXR0b24gaW5zdGVhZCBvZiBuZXh0IHdoZW4gb24gdGhlIGxhc3QgdGFiXHJcbiAgICAgICAgICB0aGlzLnNob3dTYXZlID0gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2hvd0JhY2sgPSBmYWxzZTtcclxuICAgICAgdGhpcy5zaG93U2F2ZSA9IHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBSZXF1aXJlZCB0byBjb25maWd1cmUgdGhlIHRhYnMgYW5kIGRlZmF1bHQgdGFiIGZvciB0aGUgd2l6YXJkLiBSdW5zIGluIG9uRmlyc3RJbml0LCBiZWZvcmUgb25Jbml0LlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGFic3RyYWN0IGNvbmZpZ3VyZVRhYnMoKTogTmF2R3JvdXA7XHJcblxyXG4gIC8qKlxyXG4gICAqIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgbmF2aWdhdGlvbiB0byB0aGUgbmV4dCB0YWIgaXMgcHJldmVudGVkIG9yIG5vdC4gRmlyZWQgaW4gbmV4dFRhYigpLCBidXQgbm90IHdoZW4gYSB0YWIgaXNcclxuICAgKiBjbGlja2VkIG9yIHNlbGVjdGVkIHByb2dyYW1tYXRpY2FsbHkuIEJ5IGRlZmF1bHQsIHRoaXMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY3VycmVudCB0YWIncyBmb3JtIG1vZGVsIGFuZFxyXG4gICAqIHByZXZlbnRzIG5hdmlnYXRpb24gaWYgaXQgaXMgaW52YWxpZC4gQ2FuIGJlIG92ZXJyaWRkZW4gaWYgZGlmZmVyZW50IGxvZ2ljIGlzIG5lZWRlZC5cclxuICAgKiBAcGFyYW0gbmV4dFRhYiAtIFRoZSB0YWIgYmVpbmcgbmF2aWdhdGVkIHRvXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgY2FuR29Ub05leHRUYWIobmV4dFRhYjogV2l6YXJkVGFiKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0N1cnJlbnRUYWJWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciBuYXZpZ2F0aW9uIHRvIHRoZSBwcmV2aW91cyB0YWIgaXMgcHJldmVudGVkIG9yIG5vdC4gRmlyZWQgaW4gcHJldmlvdXNUYWIoKSwgYnV0IG5vdCB3aGVuIGEgdGFiIGlzXHJcbiAgICogY2xpY2tlZCBvciBzZWxlY3RlZCBwcm9ncmFtbWF0aWNhbGx5LiBCeSBkZWZhdWx0LCB0aGlzIGNoZWNrcyB0aGUgdmFsaWRpdHkgb2YgdGhlIGN1cnJlbnQgdGFiJ3MgZm9ybSBtb2RlbCBhbmRcclxuICAgKiBwcmV2ZW50cyBuYXZpZ2F0aW9uIGlmIGl0IGlzIGludmFsaWQuIENhbiBiZSBvdmVycmlkZGVuIGlmIGRpZmZlcmVudCBsb2dpYyBpcyBuZWVkZWQuXHJcbiAgICogQHBhcmFtIHByZXZUYWIgLSBUaGUgdGFiIGJlaW5nIG5hdmlnYXRlZCB0b1xyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIGNhbkdvVG9QcmV2aW91c1RhYihwcmV2VGFiOiBXaXphcmRUYWIpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLmlzQ3VycmVudFRhYlZhbGlkKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBVc2VkIHRvIGRldGVybWluZSB3aGV0aGVyIG5hdmlnYXRpbmcgYXdheSBmcm9tIHRoZSBjdXJyZW50IHRhYiBpcyBwcmV2ZW50ZWQgb3Igbm90LiBGaXJlZCBhbnkgdGltZSB0aGUgc2VsZWN0ZWQgdGFiXHJcbiAgICogY2hhbmdlcyBpbiB0aGUgdGFiR3JvdXAuIEJ5IGRlZmF1bHQsIHRoaXMgY2hlY2tzIHRoZSB2YWxpZGl0eSBvZiB0aGUgY3VycmVudCB0YWIncyBmb3JtIG1vZGVsIGFuZCBwcmV2ZW50cyBuYXZpZ2F0aW9uXHJcbiAgICogaWYgaXQgaXMgaW52YWxpZC4gQ2FuIGJlIG92ZXJyaWRkZW4gaWYgZGlmZmVyZW50IGxvZ2ljIGlzIG5lZWRlZC5cclxuICAgKiBAbWVtYmVyb2YgV2l6YXJkQmFzZUNvbXBvbmVudFxyXG4gICAqL1xyXG4gIHByb3RlY3RlZCBjYW5MZWF2ZUN1cnJlbnRUYWIoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5pc0N1cnJlbnRUYWJWYWxpZCgpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlcnMgdmFsaWRhdGlvbiBvbiB0aGUgY3VycmVudCB3aXphcmQgdGFiJ3MgZm9ybSBjb250cm9sLiBSZXR1cm5zIHRydWUgaWYgdGhlIGZvcm0gY29udHJvbCBpcyB2YWxpZCwgZmFsc2UgaWYgbm90LlxyXG4gICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZm9ybU1vZGVsUGF0aCBmb3IgdGhlIHRhYiBpcyBub3QgZGVmaW5lZCBvciBubyBmb3JtIGNvbnRyb2wgaXMgZm91bmQuIENhbiBiZSBvdmVycmlkZGVuIGlmIGRpZmZlcmVudFxyXG4gICAqIGxvZ2ljIGlzIG5lZWRlZCB0byB2YWxpZGF0ZSB0aGUgZm9ybSBjb250cm9sIGZvciB0aGUgY3VycmVudCB0YWIuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgaXNDdXJyZW50VGFiVmFsaWQoKTogYm9vbGVhbiB7XHJcbiAgICBpZiAodGhpcy5fY3VycmVudFRhYiAmJiB0aGlzLl9jdXJyZW50VGFiLmZvcm1Nb2RlbFBhdGgpIHtcclxuICAgICAgbGV0IGZvcm1Nb2RlbCA9IHRoaXMuZm9ybUdyb3VwLmdldCh0aGlzLl9jdXJyZW50VGFiLmZvcm1Nb2RlbFBhdGgpO1xyXG4gICAgICBpZiAoZm9ybU1vZGVsKSB7XHJcbiAgICAgICAgZm9ybU1vZGVsLm1hcmtBbGxBc1RvdWNoZWQoKTtcclxuICAgICAgICByZXR1cm4gZm9ybU1vZGVsLnZhbGlkIHx8IGZvcm1Nb2RlbC5kaXNhYmxlZDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBGaXJlZCBpZiBuYXZpZ2F0aW9uIHRvIGEgdGFiIHN1Y2NlZWRzLiBIaWRlcyB0aGUgZXJyb3IgYmFubmVyIGJ5IGRlZmF1bHQsIGJ1dCBjYW4gYmUgb3ZlcnJpZGRlbiBpZiBsb2dpYyBpcyBuZWVkZWQuXHJcbiAgICogQG1lbWJlcm9mIFdpemFyZEJhc2VDb21wb25lbnRcclxuICAgKi9cclxuICBwcm90ZWN0ZWQgb25UYWJDaGFuZ2VTdWNjZXNzKCk6IHZvaWQge1xyXG4gICAgdGhpcy51cGRhdGVCdXR0b25zKCk7XHJcbiAgICB0aGlzLmhpZGVFcnJvckJhbm5lcigpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogRmlyZWQgaWYgbmF2aWdhdGlvbiB0byBhIHRhYiBmYWlscy4gQnkgZGVmYXVsdCwgc2hvd3MgdGhlIGVycm9yIGJhbm5lciB3aXRoIHRoZSBkZWZhdWx0IGludmFsaWQgZm9ybSBtZXNzYWdlLCBidXRcclxuICAgKiBjYW4gYmUgb3ZlcnJpZGRlbiBpZiBkaWZmZXJlbnQgbG9naWMgaXMgbmVlZGVkLlxyXG4gICAqIEBtZW1iZXJvZiBXaXphcmRCYXNlQ29tcG9uZW50XHJcbiAgICovXHJcbiAgcHJvdGVjdGVkIG9uVGFiQ2hhbmdlRmFpbGVkKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93RXJyb3JCYW5uZXIodGhpcy5kZWZhdWx0SW52YWxpZEZvcm1NZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIExpc3RlbiBmb3Igd2hlbiB0aGUgdGFiR3JvdXAncyBzZWxlY3RlZCBpdGVtIGlzIGNoYW5nZWQgKEkuRS4gd2hlbiBhIHRhYiBpcyBjbGlja2VkIG9yIHNlbGVjdGVkIHByb2dyYW1tYXRpY2FsbHkpXHJcbiAgICogYW5kIG5hdmlnYXRlIHRvIHRoYXQgdGFiLlxyXG4gICAqL1xyXG4gIHByaXZhdGUgc3Vic2NyaWJlVG9UYWJDaGFuZ2VzKCkge1xyXG4gICAgLy8gV2hlbmV2ZXIgdGhlIHRhYkdyb3VwJ3Mgc2VsZWN0ZWQgdGFiIGNoYW5nZXMsIGdvIHRvIHRoZSBzZWxlY3RlZCB0YWJcclxuICAgIHRoaXMuX3RhYkdyb3VwLnNlbGVjdGVkQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3llZCkpLnN1YnNjcmliZSh0YWIgPT4ge1xyXG4gICAgICB0aGlzLmdvVG9UYWIodGFiKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogVHJpZ2dlcmVkIHdoZW4gdGhlIHRhYkdyb3VwJ3Mgc2VsZWN0ZWQgaXRlbSBjaGFuZ2VzLiBJZiB0aGUgY3VycmVudCB0YWIgcGFzc2VzIHZhbGlkYXRpb24sIHVwZGF0ZXNcclxuICAgKiB0aGUgY3VycmVudCB0YWIgdG8gdGhlIHNlbGVjdGVkIHRhYi5cclxuICAgKiBAcGFyYW0gdGFiIC0gdGhlIHRhYiB0aGF0IHdhcyBzZWxlY3RlZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgZ29Ub1RhYih0YWI6IFdpemFyZFRhYikge1xyXG4gICAgLy8gT25seSBjb250aW51ZSBpZiB0aGUgY3VycmVudCB0YWIgaXMgbm90IHRoZSB0YWIgdGhhdCB3YXMgc2VsZWN0ZWQuIFRoZXkgYXJlIHRoZSBzYW1lXHJcbiAgICAvLyB3aGVuIHdlIGFyZSByZXNldHRpbmcgdGhlIHRhYiBncm91cCdzIHNlbGVjdGVkIHRhYiBiYWNrIHRvIHRoZSBjdXJyZW50IHRhYiB3aGVuIHZhbGlkYXRpb24gZmFpbHMuXHJcbiAgICAvLyBXaXRob3V0IHRoaXMgY2hlY2ssIHdlIGNvdWxkIGVuZCB1cCBpbiBhbiBpbmZpbml0ZSBsb29wLlxyXG4gICAgaWYgKHRhYiAhPT0gdGhpcy5fY3VycmVudFRhYikge1xyXG4gICAgICBpZiAodGhpcy5jYW5MZWF2ZUN1cnJlbnRUYWIoKSkge1xyXG4gICAgICAgIC8vIE1hcmsgdGhlIGN1cnJlbnQgdGFiIGFzIGNvbXBsZXRlIGJlZm9yZSBzd2l0Y2hpbmdcclxuICAgICAgICBpZiAodGhpcy5fY3VycmVudFRhYikge1xyXG4gICAgICAgICAgdGhpcy5fY3VycmVudFRhYi5jb21wbGV0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnNldEN1cnJlbnRUYWIodGFiKTtcclxuICAgICAgICB0aGlzLm9uVGFiQ2hhbmdlU3VjY2VzcygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIC8vIEJlY2F1c2UgdGhlIHRhYkdyb3VwJ3Mgc2VsZWN0ZWQgdGFiIGlzIHVwZGF0ZWQgd2hlbiBhIHRhYiBpcyBjbGlja2VkIGJlZm9yZSB3ZSBjYW4gcnVuIGFueSBmb3JtIHZhbGlkYXRpb24sXHJcbiAgICAgICAgLy8gd2UgbmVlZCB0byByZXNldCB0aGUgc2VsZWN0ZWQgdGFiIGJhY2sgdG8gdGhlIGN1cnJlbnQgdGFiIGlmIHZhbGlkYXRpb24gZmFpbHMuXHJcbiAgICAgICAgLy8gV2l0aG91dCB0aGlzIHdlIHdvdWxkIGhhdmUgbm8gd2F5IHRvIHByZXZlbnQgdGhlIHVzZXIgZnJvbSBsZWF2aW5nIHRoZSBjdXJyZW50IHRhYiBpZiB0aGUgZm9ybSBpcyBpbnZhbGlkLlxyXG4gICAgICAgIHRoaXMuX3RhYkdyb3VwLnNlbGVjdGVkID0gdGhpcy5fY3VycmVudFRhYjtcclxuICAgICAgICB0aGlzLm9uVGFiQ2hhbmdlRmFpbGVkKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIFVwZGF0ZXMgdGhlIGN1cnJlbnQgdGFiLCB0aXRsZSwgYW5kIGhlbHAuXHJcbiAgICogQHBhcmFtIHRhYiBUYWIgdG8gc2V0XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBzZXRDdXJyZW50VGFiKHRhYj86IFdpemFyZFRhYikge1xyXG4gICAgdGhpcy5fY3VycmVudFRhYiA9IHRhYjtcclxuICAgIHRoaXMuaGVscCA9IHRhYiA/IHRhYi5oZWxwIDogdW5kZWZpbmVkO1xyXG4gICAgdGhpcy50aXRsZSA9IHRhYiA/IHRhYi50aXRsZSA6IHVuZGVmaW5lZDtcclxuICB9XHJcbn1cclxuIl19
@@ -0,0 +1,68 @@
1
+ import { Component, EventEmitter, Input, Output } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "../../../controls/button/button.component";
5
+ export class WizardButtonsComponent {
6
+ constructor() {
7
+ this.nextLabel = 'Next_TC';
8
+ this.backLabel = 'Back_TC';
9
+ this.cancelLabel = 'Cancel';
10
+ this.saveLabel = 'Save';
11
+ this.cancelId = 'cancelWizardDialog';
12
+ this.saveId = 'saveWizardDialog';
13
+ this.tabindex = 0;
14
+ this.cancel = new EventEmitter();
15
+ this.save = new EventEmitter();
16
+ this.nextTab = new EventEmitter();
17
+ this.previousTab = new EventEmitter();
18
+ }
19
+ onCancel() {
20
+ this.cancel.emit();
21
+ }
22
+ onSave(event) {
23
+ this.save.emit(event);
24
+ }
25
+ onPreviousTab() {
26
+ this.previousTab.emit();
27
+ }
28
+ onNextTab() {
29
+ this.nextTab.emit();
30
+ }
31
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardButtonsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
32
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardButtonsComponent, selector: "ec-wizard-buttons", inputs: { nextLabel: "nextLabel", backLabel: "backLabel", cancelLabel: "cancelLabel", saveLabel: "saveLabel", cancelId: "cancelId", saveId: "saveId", tabindex: "tabindex", status: "status", showBack: "showBack", showSave: "showSave", hideNextSaveButton: "hideNextSaveButton" }, outputs: { cancel: "cancel", save: "save", nextTab: "nextTab", previousTab: "previousTab" }, ngImport: i0, template: "<ec-button id=\"{{saveId}}\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideNextSaveButton\"\r\n type=\"primary\"\r\n [label]=\"(!showSave ? nextLabel : saveLabel)\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex\"\r\n (clicked)=\"!showSave ? onNextTab() : onSave($event)\"\r\n [disabled]=\"status?.status === 'pending' || status?.status === 'error'\">\r\n</ec-button>\r\n<ec-button id=\"previousTab\"\r\n class=\"ml-2\"\r\n *ngIf=\"showBack\"\r\n type=\"secondary\"\r\n [label]=\"backLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+1\"\r\n (clicked)=\"onPreviousTab()\">\r\n</ec-button>\r\n<ec-button id=\"{{cancelId}}\"\r\n type=\"secondary\"\r\n [label]=\"cancelLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+2\"\r\n (clicked)=\"onCancel()\">\r\n</ec-button>\r\n", styles: [":host{display:flex;flex-direction:row-reverse}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i2.ButtonComponent, selector: "ec-button", inputs: ["id", "disabled", "icon", "label", "badge", "tabindex", "type", "pending", "pendingIcon", "customTemplate", "isSubmit", "autofocus"], outputs: ["clicked"] }] }); }
33
+ }
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardButtonsComponent, decorators: [{
35
+ type: Component,
36
+ args: [{ selector: 'ec-wizard-buttons', template: "<ec-button id=\"{{saveId}}\"\r\n class=\"ml-2\"\r\n *ngIf=\"!hideNextSaveButton\"\r\n type=\"primary\"\r\n [label]=\"(!showSave ? nextLabel : saveLabel)\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex\"\r\n (clicked)=\"!showSave ? onNextTab() : onSave($event)\"\r\n [disabled]=\"status?.status === 'pending' || status?.status === 'error'\">\r\n</ec-button>\r\n<ec-button id=\"previousTab\"\r\n class=\"ml-2\"\r\n *ngIf=\"showBack\"\r\n type=\"secondary\"\r\n [label]=\"backLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+1\"\r\n (clicked)=\"onPreviousTab()\">\r\n</ec-button>\r\n<ec-button id=\"{{cancelId}}\"\r\n type=\"secondary\"\r\n [label]=\"cancelLabel\"\r\n [tabindex]=\"!tabindex ? 0 : tabindex+2\"\r\n (clicked)=\"onCancel()\">\r\n</ec-button>\r\n", styles: [":host{display:flex;flex-direction:row-reverse}\n"] }]
37
+ }], ctorParameters: () => [], propDecorators: { nextLabel: [{
38
+ type: Input
39
+ }], backLabel: [{
40
+ type: Input
41
+ }], cancelLabel: [{
42
+ type: Input
43
+ }], saveLabel: [{
44
+ type: Input
45
+ }], cancelId: [{
46
+ type: Input
47
+ }], saveId: [{
48
+ type: Input
49
+ }], tabindex: [{
50
+ type: Input
51
+ }], status: [{
52
+ type: Input
53
+ }], showBack: [{
54
+ type: Input
55
+ }], showSave: [{
56
+ type: Input
57
+ }], hideNextSaveButton: [{
58
+ type: Input
59
+ }], cancel: [{
60
+ type: Output
61
+ }], save: [{
62
+ type: Output
63
+ }], nextTab: [{
64
+ type: Output
65
+ }], previousTab: [{
66
+ type: Output
67
+ }] } });
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLWJ1dHRvbnMuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLWJ1dHRvbnMvd2l6YXJkLWJ1dHRvbnMuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLWJ1dHRvbnMvd2l6YXJkLWJ1dHRvbnMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVF2RSxNQUFNLE9BQU8sc0JBQXNCO0lBdUJqQztRQXJCZ0IsY0FBUyxHQUFZLFNBQVMsQ0FBQztRQUMvQixjQUFTLEdBQVksU0FBUyxDQUFDO1FBQy9CLGdCQUFXLEdBQVksUUFBUSxDQUFDO1FBQ2hDLGNBQVMsR0FBWSxNQUFNLENBQUM7UUFFNUIsYUFBUSxHQUFZLG9CQUFvQixDQUFDO1FBQ3pDLFdBQU0sR0FBWSxrQkFBa0IsQ0FBQztRQUVyQyxhQUFRLEdBQVcsQ0FBQyxDQUFDO1FBUXBCLFdBQU0sR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMvQyxTQUFJLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDN0MsWUFBTyxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2hELGdCQUFXLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFFckQsQ0FBQztJQUVWLFFBQVE7UUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFTSxNQUFNLENBQUMsS0FBVTtRQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4QixDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxTQUFTO1FBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUN0QixDQUFDOytHQXZDVSxzQkFBc0I7bUdBQXRCLHNCQUFzQiw0YUNSbkMsODVCQXVCQTs7NEZEZmEsc0JBQXNCO2tCQUxsQyxTQUFTOytCQUNFLG1CQUFtQjt3REFNYixTQUFTO3NCQUF4QixLQUFLO2dCQUNVLFNBQVM7c0JBQXhCLEtBQUs7Z0JBQ1UsV0FBVztzQkFBMUIsS0FBSztnQkFDVSxTQUFTO3NCQUF4QixLQUFLO2dCQUVVLFFBQVE7c0JBQXZCLEtBQUs7Z0JBQ1UsTUFBTTtzQkFBckIsS0FBSztnQkFFVSxRQUFRO3NCQUF2QixLQUFLO2dCQUVVLE1BQU07c0JBQXJCLEtBQUs7Z0JBRVUsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxRQUFRO3NCQUF2QixLQUFLO2dCQUNVLGtCQUFrQjtzQkFBakMsS0FBSztnQkFFVyxNQUFNO3NCQUF0QixNQUFNO2dCQUNVLElBQUk7c0JBQXBCLE1BQU07Z0JBQ1UsT0FBTztzQkFBdkIsTUFBTTtnQkFDVSxXQUFXO3NCQUEzQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRGlzcGxheVN0YXR1cyB9IGZyb20gJy4uLy4uL2Rpc3BsYXknO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdlYy13aXphcmQtYnV0dG9ucycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3dpemFyZC1idXR0b25zLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93aXphcmQtYnV0dG9ucy5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBXaXphcmRCdXR0b25zQ29tcG9uZW50IHtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIG5leHRMYWJlbD86IHN0cmluZyA9ICdOZXh0X1RDJztcclxuICBASW5wdXQoKSBwdWJsaWMgYmFja0xhYmVsPzogc3RyaW5nID0gJ0JhY2tfVEMnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBjYW5jZWxMYWJlbD86IHN0cmluZyA9ICdDYW5jZWwnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlTGFiZWw/OiBzdHJpbmcgPSAnU2F2ZSc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBjYW5jZWxJZD86IHN0cmluZyA9ICdjYW5jZWxXaXphcmREaWFsb2cnO1xyXG4gIEBJbnB1dCgpIHB1YmxpYyBzYXZlSWQ/OiBzdHJpbmcgPSAnc2F2ZVdpemFyZERpYWxvZyc7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyB0YWJpbmRleDogbnVtYmVyID0gMDtcclxuXHJcbiAgQElucHV0KCkgcHVibGljIHN0YXR1cz86IERpc3BsYXlTdGF0dXM7XHJcblxyXG4gIEBJbnB1dCgpIHB1YmxpYyBzaG93QmFjaz86IGJvb2xlYW47XHJcbiAgQElucHV0KCkgcHVibGljIHNob3dTYXZlPzogYm9vbGVhbjtcclxuICBASW5wdXQoKSBwdWJsaWMgaGlkZU5leHRTYXZlQnV0dG9uPzogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIHB1YmxpYyBjYW5jZWw6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBwdWJsaWMgc2F2ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHB1YmxpYyBuZXh0VGFiOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgcHVibGljIHByZXZpb3VzVGFiOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxuXHJcbiAgcHVibGljIG9uQ2FuY2VsKCkge1xyXG4gICAgdGhpcy5jYW5jZWwuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uU2F2ZShldmVudDogYW55KSB7XHJcbiAgICB0aGlzLnNhdmUuZW1pdChldmVudCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb25QcmV2aW91c1RhYigpIHtcclxuICAgIHRoaXMucHJldmlvdXNUYWIuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uTmV4dFRhYigpIHtcclxuICAgIHRoaXMubmV4dFRhYi5lbWl0KCk7XHJcbiAgfVxyXG59XHJcbiIsIjxlYy1idXR0b24gaWQ9XCJ7e3NhdmVJZH19XCJcclxuICAgICAgICAgICBjbGFzcz1cIm1sLTJcIlxyXG4gICAgICAgICAgICpuZ0lmPVwiIWhpZGVOZXh0U2F2ZUJ1dHRvblwiXHJcbiAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgIFtsYWJlbF09XCIoIXNob3dTYXZlID8gbmV4dExhYmVsIDogc2F2ZUxhYmVsKVwiXHJcbiAgICAgICAgICAgW3RhYmluZGV4XT1cIiF0YWJpbmRleCA/IDAgOiB0YWJpbmRleFwiXHJcbiAgICAgICAgICAgKGNsaWNrZWQpPVwiIXNob3dTYXZlID8gb25OZXh0VGFiKCkgOiBvblNhdmUoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cInN0YXR1cz8uc3RhdHVzID09PSAncGVuZGluZycgfHwgc3RhdHVzPy5zdGF0dXMgPT09ICdlcnJvcidcIj5cclxuPC9lYy1idXR0b24+XHJcbjxlYy1idXR0b24gaWQ9XCJwcmV2aW91c1RhYlwiXHJcbiAgICAgICAgICAgY2xhc3M9XCJtbC0yXCJcclxuICAgICAgICAgICAqbmdJZj1cInNob3dCYWNrXCJcclxuICAgICAgICAgICB0eXBlPVwic2Vjb25kYXJ5XCJcclxuICAgICAgICAgICBbbGFiZWxdPVwiYmFja0xhYmVsXCJcclxuICAgICAgICAgICBbdGFiaW5kZXhdPVwiIXRhYmluZGV4ID8gMCA6IHRhYmluZGV4KzFcIlxyXG4gICAgICAgICAgIChjbGlja2VkKT1cIm9uUHJldmlvdXNUYWIoKVwiPlxyXG48L2VjLWJ1dHRvbj5cclxuPGVjLWJ1dHRvbiBpZD1cInt7Y2FuY2VsSWR9fVwiXHJcbiAgICAgICAgICAgdHlwZT1cInNlY29uZGFyeVwiXHJcbiAgICAgICAgICAgW2xhYmVsXT1cImNhbmNlbExhYmVsXCJcclxuICAgICAgICAgICBbdGFiaW5kZXhdPVwiIXRhYmluZGV4ID8gMCA6IHRhYmluZGV4KzJcIlxyXG4gICAgICAgICAgIChjbGlja2VkKT1cIm9uQ2FuY2VsKClcIj5cclxuPC9lYy1idXR0b24+XHJcbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { Component, Input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ import * as i1 from "@angular/common";
4
+ import * as i2 from "@ngx-translate/core";
5
+ export class WizardProgressComponent {
6
+ constructor() { }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardProgressComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
8
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: WizardProgressComponent, selector: "ec-wizard-progress", inputs: { tabGroup: "tabGroup", currentTab: "currentTab" }, ngImport: i0, template: "<div *ngFor=\"let tab of tabGroup?.items; index as index; first as isFirst; last as isLast\"\r\n class=\"progress-tab\"\r\n [class.ml-2]=\"!isFirst\"\r\n [class.is-active]=\"currentTab?.id === tab.id\">\r\n\r\n <i *ngIf=\"tab.completed\"\r\n class=\"ec-icon icon-check-circle mr-1 font-color-success\"></i>\r\n <span *ngIf=\"!tab.completed\">{{index+1}}.&nbsp;</span>\r\n <span>{{tab.label | translate}}</span>\r\n <i *ngIf=\"!isLast\"\r\n class=\"ec-icon icon-angle-down rotate-270 ml-2\"></i>\r\n</div>", styles: [":host{display:flex;align-items:center;padding:0 1rem}.progress-tab{display:flex;align-items:center}.progress-tab.is-active{font-weight:700}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: WizardProgressComponent, decorators: [{
11
+ type: Component,
12
+ args: [{ selector: 'ec-wizard-progress', template: "<div *ngFor=\"let tab of tabGroup?.items; index as index; first as isFirst; last as isLast\"\r\n class=\"progress-tab\"\r\n [class.ml-2]=\"!isFirst\"\r\n [class.is-active]=\"currentTab?.id === tab.id\">\r\n\r\n <i *ngIf=\"tab.completed\"\r\n class=\"ec-icon icon-check-circle mr-1 font-color-success\"></i>\r\n <span *ngIf=\"!tab.completed\">{{index+1}}.&nbsp;</span>\r\n <span>{{tab.label | translate}}</span>\r\n <i *ngIf=\"!isLast\"\r\n class=\"ec-icon icon-angle-down rotate-270 ml-2\"></i>\r\n</div>", styles: [":host{display:flex;align-items:center;padding:0 1rem}.progress-tab{display:flex;align-items:center}.progress-tab.is-active{font-weight:700}\n"] }]
13
+ }], ctorParameters: () => [], propDecorators: { tabGroup: [{
14
+ type: Input
15
+ }], currentTab: [{
16
+ type: Input
17
+ }] } });
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l6YXJkLXByb2dyZXNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NvbXBvbmVudHMvc3JjL2xpYi9zaGFyZWQvd2l6YXJkL3dpemFyZC1wcm9ncmVzcy93aXphcmQtcHJvZ3Jlc3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29tcG9uZW50cy9zcmMvbGliL3NoYXJlZC93aXphcmQvd2l6YXJkLXByb2dyZXNzL3dpemFyZC1wcm9ncmVzcy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQVNqRCxNQUFNLE9BQU8sdUJBQXVCO0lBS2xDLGdCQUFnQixDQUFDOytHQUxOLHVCQUF1QjttR0FBdkIsdUJBQXVCLHNIQ1RwQyx3aEJBV007OzRGREZPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxvQkFBb0I7d0RBTWQsUUFBUTtzQkFBdkIsS0FBSztnQkFDVSxVQUFVO3NCQUF6QixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOYXZHcm91cCB9IGZyb20gJy4uLy4uLy4uL2NvbnRyb2xzL25hdmlnYXRpb24vbmF2LWdyb3VwJztcclxuaW1wb3J0IHsgV2l6YXJkVGFiIH0gZnJvbSAnLi4vd2l6YXJkLWJhc2Uvd2l6YXJkLWJhc2UuY29tcG9uZW50JztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnZWMtd2l6YXJkLXByb2dyZXNzJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vd2l6YXJkLXByb2dyZXNzLmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi93aXphcmQtcHJvZ3Jlc3MuY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgV2l6YXJkUHJvZ3Jlc3NDb21wb25lbnQge1xyXG5cclxuICBASW5wdXQoKSBwdWJsaWMgdGFiR3JvdXA/OiBOYXZHcm91cDtcclxuICBASW5wdXQoKSBwdWJsaWMgY3VycmVudFRhYj86IFdpemFyZFRhYjtcclxuXHJcbiAgY29uc3RydWN0b3IoKSB7IH1cclxufVxyXG4iLCI8ZGl2ICpuZ0Zvcj1cImxldCB0YWIgb2YgdGFiR3JvdXA/Lml0ZW1zOyBpbmRleCBhcyBpbmRleDsgZmlyc3QgYXMgaXNGaXJzdDsgbGFzdCBhcyBpc0xhc3RcIlxyXG4gICAgIGNsYXNzPVwicHJvZ3Jlc3MtdGFiXCJcclxuICAgICBbY2xhc3MubWwtMl09XCIhaXNGaXJzdFwiXHJcbiAgICAgW2NsYXNzLmlzLWFjdGl2ZV09XCJjdXJyZW50VGFiPy5pZCA9PT0gdGFiLmlkXCI+XHJcblxyXG4gICA8aSAqbmdJZj1cInRhYi5jb21wbGV0ZWRcIlxyXG4gICAgICBjbGFzcz1cImVjLWljb24gaWNvbi1jaGVjay1jaXJjbGUgbXItMSBmb250LWNvbG9yLXN1Y2Nlc3NcIj48L2k+XHJcbiAgIDxzcGFuICpuZ0lmPVwiIXRhYi5jb21wbGV0ZWRcIj57e2luZGV4KzF9fS4mbmJzcDs8L3NwYW4+XHJcbiAgIDxzcGFuPnt7dGFiLmxhYmVsIHwgdHJhbnNsYXRlfX08L3NwYW4+XHJcbiAgIDxpICpuZ0lmPVwiIWlzTGFzdFwiXHJcbiAgICAgIGNsYXNzPVwiZWMtaWNvbiBpY29uLWFuZ2xlLWRvd24gcm90YXRlLTI3MCBtbC0yXCI+PC9pPlxyXG48L2Rpdj4iXX0=