@flywheel-io/vision 2.0.0-beta-4 → 2.0.0-beta.10

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 (264) hide show
  1. package/assets/fonts/Flywheel-Vision-Icons.svg +26 -0
  2. package/assets/fonts/Flywheel-Vision-Icons.ttf +0 -0
  3. package/assets/fonts/Flywheel-Vision-Icons.woff +0 -0
  4. package/assets/svg/arrow-redo.svg +4 -0
  5. package/assets/svg/arrow-undo.svg +4 -0
  6. package/assets/svg/arrow-up-high-priority.svg +6 -0
  7. package/assets/svg/arrow-up-low-priority.svg +6 -0
  8. package/assets/svg/certificate.svg +4 -0
  9. package/assets/svg/check-mark-certificate.svg +4 -0
  10. package/assets/svg/document-file-checkmark-bottom-left.svg +4 -0
  11. package/assets/svg/folders-copy-expand-arrow-down.svg +6 -0
  12. package/assets/svg/folders-copy-expand-arrow-up.svg +6 -0
  13. package/assets/svg/monitor-computer.svg +4 -0
  14. package/assets/svg/server-databases-checkmark-user.svg +4 -0
  15. package/assets/svg/stop-minus.svg +4 -0
  16. package/assets/svg/user-profile-cards-pool.svg +4 -0
  17. package/components/alert/alert.component.d.ts +1 -1
  18. package/components/app-icon/app-icon.component.d.ts +1 -1
  19. package/components/avatar/avatar.component.d.ts +1 -1
  20. package/components/badge/badge.component.d.ts +1 -1
  21. package/components/breadcrumbs/crumb.component.d.ts +1 -1
  22. package/components/button/button.component.d.ts +1 -1
  23. package/components/button-group/button-group.component.d.ts +1 -1
  24. package/components/button-toggle/button-toggle-item/button-toggle-item.component.d.ts +1 -1
  25. package/components/button-toggle/button-toggle.component.d.ts +2 -1
  26. package/components/card/card-attribute/card-attribute.component.d.ts +1 -1
  27. package/components/card/card-author/card-author.component.d.ts +1 -1
  28. package/components/card/card-header/card-header.component.d.ts +1 -1
  29. package/components/card/card.component.d.ts +1 -1
  30. package/components/checkbox/checkbox.component.d.ts +1 -1
  31. package/components/chip/chip.component.d.ts +1 -1
  32. package/components/contained-input/contained-input.component.d.ts +1 -1
  33. package/components/date-input/date-input.component.d.ts +1 -1
  34. package/components/dialog/dialog-confirm.component.d.ts +1 -1
  35. package/components/dialog/dialog-content.component.d.ts +1 -1
  36. package/components/dialog/dialog-simple.component.d.ts +1 -1
  37. package/components/dialog/dialog.component.d.ts +1 -1
  38. package/components/form-heading/form-heading.component.d.ts +1 -1
  39. package/components/icon/icon.component.d.ts +1 -1
  40. package/components/icon/icon.types.d.ts +2 -2
  41. package/components/icon-button/icon-button.component.d.ts +1 -1
  42. package/components/layouts/context/context.component.d.ts +1 -1
  43. package/components/layouts/grid/grid.component.d.ts +1 -1
  44. package/components/layouts/layout-group.component.d.ts +1 -1
  45. package/components/layouts/panel/panel.component.d.ts +1 -1
  46. package/components/layouts/sidebar/sidebar.component.d.ts +1 -1
  47. package/components/layouts/toolbar/toolbar.component.d.ts +1 -1
  48. package/components/menu/menu-container/menu-container.component.d.ts +1 -1
  49. package/components/menu/menu-item/menu-item.component.d.ts +1 -1
  50. package/components/menu/menu-item-group/menu-item-group.component.d.ts +1 -1
  51. package/components/menu/menu-sub-item/menu-sub-item.component.d.ts +1 -1
  52. package/components/menu/menu.component.d.ts +1 -1
  53. package/components/navbar/navbar-item/navbar-item.component.d.ts +1 -1
  54. package/components/navbar/navbar-sub-item/navbar-sub-item.component.d.ts +1 -1
  55. package/components/navbar/navbar.component.d.ts +1 -1
  56. package/components/number-input/number-input.component.d.ts +1 -1
  57. package/components/paginator/paginator-advanced/paginator-advanced.component.d.ts +1 -1
  58. package/components/paginator/paginator.component.d.ts +1 -1
  59. package/components/phone-input/phone-input.component.d.ts +1 -1
  60. package/components/phone-input/phone-input.model.d.ts +1 -1
  61. package/components/popover/popover-panel/popover-panel.component.d.ts +1 -1
  62. package/components/popover/popover.component.d.ts +1 -1
  63. package/components/progress/bar/bar.component.d.ts +1 -1
  64. package/components/progress/spinner/spinner.component.d.ts +1 -1
  65. package/components/radio/radio-group.component.d.ts +1 -1
  66. package/components/radio/radio.component.d.ts +1 -1
  67. package/components/section-heading/back-button/back-button.component.d.ts +1 -1
  68. package/components/section-heading/section-heading.component.d.ts +1 -1
  69. package/components/section-heading/subsection-heading/subsection-heading.component.d.ts +1 -1
  70. package/components/select-menu/multi-select-menu/multi-select-menu.component.d.ts +5 -4
  71. package/components/select-menu/select-menu.component.d.ts +6 -4
  72. package/components/select-menu/select-menu.module.d.ts +2 -1
  73. package/components/shared/services/menu-manager.service.d.ts +10 -0
  74. package/components/snackbar/snackbar/snackbar.component.d.ts +1 -1
  75. package/components/stepper/step.component.d.ts +1 -1
  76. package/components/stepper/stepper.component.d.ts +1 -1
  77. package/components/switch/switch.component.d.ts +1 -1
  78. package/components/table/cell.d.ts +1 -1
  79. package/components/table/row.d.ts +3 -3
  80. package/components/tabs/tab/tab.component.d.ts +1 -1
  81. package/components/tabs/tab-panel/tab-panel.component.d.ts +1 -1
  82. package/components/tabs/tabs.component.d.ts +1 -1
  83. package/components/text-input/text-input.component.d.ts +1 -1
  84. package/components/textarea-input/textarea-input.component.d.ts +1 -1
  85. package/components/tooltip/tooltip-panel/tooltip-panel.component.d.ts +1 -1
  86. package/components/tooltip/tooltip.component.d.ts +1 -1
  87. package/components/wrapped-input/wrapped-input.component.d.ts +1 -1
  88. package/directives/menu-register.directive.d.ts +14 -0
  89. package/{esm2020 → esm2022}/components/alert/alert.component.mjs +4 -4
  90. package/{esm2020 → esm2022}/components/alert/alert.module.mjs +9 -9
  91. package/{esm2020 → esm2022}/components/app-icon/app-icon.component.mjs +4 -4
  92. package/{esm2020 → esm2022}/components/app-icon/app-icon.module.mjs +7 -7
  93. package/{esm2020 → esm2022}/components/avatar/avatar.component.mjs +4 -4
  94. package/{esm2020 → esm2022}/components/avatar/avatar.module.mjs +7 -7
  95. package/{esm2020 → esm2022}/components/badge/badge.component.mjs +5 -5
  96. package/{esm2020 → esm2022}/components/badge/badge.module.mjs +5 -5
  97. package/{esm2020 → esm2022}/components/breadcrumbs/breadcrumbs.component.mjs +4 -4
  98. package/{esm2020 → esm2022}/components/breadcrumbs/breadcrumbs.module.mjs +9 -9
  99. package/{esm2020 → esm2022}/components/breadcrumbs/crumb.component.mjs +4 -4
  100. package/{esm2020 → esm2022}/components/button/button.component.mjs +4 -4
  101. package/esm2022/components/button/button.directives.mjs +129 -0
  102. package/{esm2020 → esm2022}/components/button/button.module.mjs +19 -19
  103. package/esm2022/components/button-group/button-group.component.mjs +131 -0
  104. package/{esm2020 → esm2022}/components/button-group/button-group.module.mjs +9 -9
  105. package/esm2022/components/button-toggle/button-toggle-item/button-toggle-item.component.mjs +54 -0
  106. package/esm2022/components/button-toggle/button-toggle.component.mjs +137 -0
  107. package/{esm2020 → esm2022}/components/button-toggle/button-toggle.module.mjs +9 -9
  108. package/{esm2020 → esm2022}/components/card/card-attribute/card-attribute.component.mjs +4 -4
  109. package/{esm2020 → esm2022}/components/card/card-author/card-author.component.mjs +4 -4
  110. package/{esm2020 → esm2022}/components/card/card-content/card-content.component.mjs +4 -4
  111. package/{esm2020 → esm2022}/components/card/card-footer/card-footer.component.mjs +7 -7
  112. package/{esm2020 → esm2022}/components/card/card-header/card-header.component.mjs +4 -4
  113. package/{esm2020 → esm2022}/components/card/card.component.mjs +4 -4
  114. package/{esm2020 → esm2022}/components/card/card.module.mjs +19 -19
  115. package/esm2022/components/checkbox/checkbox.component.mjs +79 -0
  116. package/{esm2020 → esm2022}/components/checkbox/checkbox.module.mjs +9 -9
  117. package/{esm2020 → esm2022}/components/chip/chip.component.mjs +5 -5
  118. package/{esm2020 → esm2022}/components/chip/chip.module.mjs +9 -9
  119. package/esm2022/components/contained-input/contained-input.component.mjs +86 -0
  120. package/{esm2020 → esm2022}/components/contained-input/contained-input.module.mjs +13 -13
  121. package/esm2022/components/date-input/date-input.component.mjs +139 -0
  122. package/{esm2020 → esm2022}/components/date-input/date-input.module.mjs +9 -9
  123. package/{esm2020 → esm2022}/components/dialog/dialog-actions.component.mjs +8 -8
  124. package/{esm2020 → esm2022}/components/dialog/dialog-confirm.component.mjs +4 -4
  125. package/{esm2020 → esm2022}/components/dialog/dialog-content.component.mjs +8 -8
  126. package/{esm2020 → esm2022}/components/dialog/dialog-header.component.mjs +8 -8
  127. package/{esm2020 → esm2022}/components/dialog/dialog-simple.component.mjs +4 -4
  128. package/{esm2020 → esm2022}/components/dialog/dialog.component.mjs +4 -4
  129. package/{esm2020 → esm2022}/components/dialog/dialog.service.mjs +4 -4
  130. package/{esm2020 → esm2022}/components/dialog/dialogs.module.mjs +27 -27
  131. package/{esm2020 → esm2022}/components/form-heading/form-heading.component.mjs +4 -4
  132. package/{esm2020 → esm2022}/components/form-heading/form-heading.module.mjs +9 -9
  133. package/esm2022/components/forms/validators.mjs +81 -0
  134. package/esm2022/components/icon/icon.component.mjs +61 -0
  135. package/{esm2020 → esm2022}/components/icon/icon.module.mjs +5 -5
  136. package/esm2022/components/icon/icon.types.mjs +330 -0
  137. package/{esm2020 → esm2022}/components/icon-button/icon-button.component.mjs +4 -4
  138. package/{esm2020 → esm2022}/components/icon-button/icon-button.module.mjs +7 -7
  139. package/{esm2020 → esm2022}/components/layouts/context/context.component.mjs +4 -4
  140. package/{esm2020 → esm2022}/components/layouts/grid/grid.component.mjs +7 -7
  141. package/{esm2020 → esm2022}/components/layouts/layout-group.component.mjs +4 -4
  142. package/{esm2020 → esm2022}/components/layouts/layouts.module.mjs +19 -19
  143. package/{esm2020 → esm2022}/components/layouts/panel/panel.component.mjs +5 -5
  144. package/{esm2020 → esm2022}/components/layouts/sidebar/sidebar.component.mjs +4 -4
  145. package/{esm2020 → esm2022}/components/layouts/toolbar/toolbar.component.mjs +4 -4
  146. package/{esm2020 → esm2022}/components/menu/menu-close-triggers.directive.mjs +4 -4
  147. package/esm2022/components/menu/menu-container/menu-container.component.mjs +90 -0
  148. package/{esm2020 → esm2022}/components/menu/menu-header/menu-header.component.mjs +4 -4
  149. package/{esm2020 → esm2022}/components/menu/menu-item/menu-item.component.mjs +4 -4
  150. package/{esm2020 → esm2022}/components/menu/menu-item-group/menu-item-group.component.mjs +4 -4
  151. package/{esm2020 → esm2022}/components/menu/menu-separator/menu-separator.component.mjs +4 -4
  152. package/esm2022/components/menu/menu-sub-item/menu-sub-item.component.mjs +109 -0
  153. package/{esm2020 → esm2022}/components/menu/menu.component.mjs +21 -21
  154. package/{esm2020 → esm2022}/components/menu/menu.module.mjs +37 -37
  155. package/{esm2020 → esm2022}/components/navbar/navbar-header/navbar-header.component.mjs +4 -4
  156. package/{esm2020 → esm2022}/components/navbar/navbar-item/navbar-item.component.mjs +4 -4
  157. package/esm2022/components/navbar/navbar-sub-item/navbar-sub-item.component.mjs +76 -0
  158. package/{esm2020 → esm2022}/components/navbar/navbar.component.mjs +17 -17
  159. package/{esm2020 → esm2022}/components/navbar/navbar.module.mjs +25 -25
  160. package/esm2022/components/number-input/number-input.component.mjs +122 -0
  161. package/{esm2020 → esm2022}/components/number-input/number-input.module.mjs +9 -9
  162. package/{esm2020 → esm2022}/components/paginator/paginator-advanced/paginator-advanced.component.mjs +4 -4
  163. package/{esm2020 → esm2022}/components/paginator/paginator.component.mjs +4 -4
  164. package/{esm2020 → esm2022}/components/paginator/paginator.module.mjs +17 -17
  165. package/esm2022/components/phone-input/phone-input.component.mjs +285 -0
  166. package/{esm2020 → esm2022}/components/phone-input/phone-input.module.mjs +17 -17
  167. package/{esm2020 → esm2022}/components/popover/popover-panel/popover-panel.component.mjs +4 -4
  168. package/{esm2020 → esm2022}/components/popover/popover.component.mjs +4 -4
  169. package/{esm2020 → esm2022}/components/popover/popover.module.mjs +13 -13
  170. package/{esm2020 → esm2022}/components/progress/bar/bar.component.mjs +4 -4
  171. package/{esm2020 → esm2022}/components/progress/progress.module.mjs +7 -7
  172. package/{esm2020 → esm2022}/components/progress/spinner/spinner.component.mjs +4 -4
  173. package/esm2022/components/radio/radio-group.component.mjs +117 -0
  174. package/esm2022/components/radio/radio.component.mjs +51 -0
  175. package/{esm2020 → esm2022}/components/radio/radio.module.mjs +11 -11
  176. package/{esm2020 → esm2022}/components/section-heading/back-button/back-button.component.mjs +4 -4
  177. package/{esm2020 → esm2022}/components/section-heading/section-heading.component.mjs +4 -4
  178. package/{esm2020 → esm2022}/components/section-heading/section-heading.module.mjs +13 -13
  179. package/{esm2020 → esm2022}/components/section-heading/subsection-heading/subsection-heading.component.mjs +4 -4
  180. package/esm2022/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +376 -0
  181. package/esm2022/components/select-menu/select-menu.component.mjs +332 -0
  182. package/esm2022/components/select-menu/select-menu.module.mjs +56 -0
  183. package/esm2022/components/shared/pipes/pipes.module.mjs +36 -0
  184. package/{esm2020 → esm2022}/components/shared/pipes/translate.pipe.mjs +4 -4
  185. package/{esm2020 → esm2022}/components/shared/pipes/trusthtml.pipe.mjs +4 -4
  186. package/esm2022/components/shared/services/menu-manager.service.mjs +27 -0
  187. package/esm2022/components/shared/translation.service.mjs +26 -0
  188. package/esm2022/components/snackbar/snackbar/snackbar.component.mjs +111 -0
  189. package/esm2022/components/snackbar/snackbar-container/snackbar-container.component.mjs +63 -0
  190. package/{esm2020 → esm2022}/components/snackbar/snackbar.module.mjs +15 -15
  191. package/{esm2020 → esm2022}/components/snackbar/snackbar.service.mjs +4 -4
  192. package/{esm2020 → esm2022}/components/stepper/step.component.mjs +7 -7
  193. package/esm2022/components/stepper/stepper.component.mjs +95 -0
  194. package/{esm2020 → esm2022}/components/stepper/stepper.module.mjs +13 -13
  195. package/esm2022/components/switch/switch.component.mjs +73 -0
  196. package/{esm2020 → esm2022}/components/switch/switch.module.mjs +5 -5
  197. package/{esm2020 → esm2022}/components/table/cell.mjs +24 -24
  198. package/{esm2020 → esm2022}/components/table/row.mjs +22 -22
  199. package/esm2022/components/table/table-dense.component.mjs +38 -0
  200. package/esm2022/components/table/table.component.mjs +38 -0
  201. package/{esm2020 → esm2022}/components/table/table.module.mjs +37 -37
  202. package/{esm2020 → esm2022}/components/tabs/tab/tab.component.mjs +4 -4
  203. package/{esm2020 → esm2022}/components/tabs/tab-panel/tab-panel.component.mjs +4 -4
  204. package/{esm2020 → esm2022}/components/tabs/tabs.component.mjs +4 -4
  205. package/{esm2020 → esm2022}/components/tabs/tabs.module.mjs +11 -11
  206. package/esm2022/components/text-input/text-input.component.mjs +112 -0
  207. package/{esm2020 → esm2022}/components/text-input/text-input.module.mjs +9 -9
  208. package/esm2022/components/textarea-input/textarea-input.component.mjs +86 -0
  209. package/{esm2020 → esm2022}/components/textarea-input/textarea-input.module.mjs +11 -11
  210. package/{esm2020 → esm2022}/components/tooltip/tooltip-panel/tooltip-panel.component.mjs +4 -4
  211. package/{esm2020 → esm2022}/components/tooltip/tooltip.component.mjs +5 -5
  212. package/{esm2020 → esm2022}/components/tooltip/tooltip.module.mjs +13 -13
  213. package/{esm2020 → esm2022}/components/wrapped-input/wrapped-input.component.mjs +4 -4
  214. package/{esm2020 → esm2022}/components/wrapped-input/wrapped-input.module.mjs +7 -7
  215. package/esm2022/directives/menu-register.directive.mjs +38 -0
  216. package/esm2022/public-api.mjs +128 -0
  217. package/{fesm2020 → fesm2022}/flywheel-io-vision.mjs +1351 -1250
  218. package/fesm2022/flywheel-io-vision.mjs.map +1 -0
  219. package/flywheel-io-vision-2.0.0-beta.10.tgz +0 -0
  220. package/package.json +5 -11
  221. package/public-api.d.ts +2 -0
  222. package/scss/icons/_icon-glyphs.scss +667 -1256
  223. package/styles.css +54 -1
  224. package/esm2020/components/button/button.directives.mjs +0 -129
  225. package/esm2020/components/button-group/button-group.component.mjs +0 -131
  226. package/esm2020/components/button-toggle/button-toggle-item/button-toggle-item.component.mjs +0 -54
  227. package/esm2020/components/button-toggle/button-toggle.component.mjs +0 -132
  228. package/esm2020/components/checkbox/checkbox.component.mjs +0 -79
  229. package/esm2020/components/contained-input/contained-input.component.mjs +0 -86
  230. package/esm2020/components/date-input/date-input.component.mjs +0 -139
  231. package/esm2020/components/forms/validators.mjs +0 -81
  232. package/esm2020/components/icon/icon.component.mjs +0 -61
  233. package/esm2020/components/icon/icon.types.mjs +0 -317
  234. package/esm2020/components/menu/menu-container/menu-container.component.mjs +0 -90
  235. package/esm2020/components/menu/menu-sub-item/menu-sub-item.component.mjs +0 -109
  236. package/esm2020/components/navbar/navbar-sub-item/navbar-sub-item.component.mjs +0 -76
  237. package/esm2020/components/number-input/number-input.component.mjs +0 -122
  238. package/esm2020/components/phone-input/phone-input.component.mjs +0 -285
  239. package/esm2020/components/radio/radio-group.component.mjs +0 -117
  240. package/esm2020/components/radio/radio.component.mjs +0 -51
  241. package/esm2020/components/select-menu/multi-select-menu/multi-select-menu.component.mjs +0 -356
  242. package/esm2020/components/select-menu/select-menu.component.mjs +0 -328
  243. package/esm2020/components/select-menu/select-menu.module.mjs +0 -53
  244. package/esm2020/components/shared/pipes/pipes.module.mjs +0 -36
  245. package/esm2020/components/shared/translation.service.mjs +0 -26
  246. package/esm2020/components/snackbar/snackbar/snackbar.component.mjs +0 -111
  247. package/esm2020/components/snackbar/snackbar-container/snackbar-container.component.mjs +0 -63
  248. package/esm2020/components/stepper/stepper.component.mjs +0 -95
  249. package/esm2020/components/switch/switch.component.mjs +0 -73
  250. package/esm2020/components/table/table-dense.component.mjs +0 -38
  251. package/esm2020/components/table/table.component.mjs +0 -38
  252. package/esm2020/components/text-input/text-input.component.mjs +0 -112
  253. package/esm2020/components/textarea-input/textarea-input.component.mjs +0 -86
  254. package/esm2020/public-api.mjs +0 -126
  255. package/fesm2015/flywheel-io-vision.mjs +0 -8039
  256. package/fesm2015/flywheel-io-vision.mjs.map +0 -1
  257. package/fesm2020/flywheel-io-vision.mjs.map +0 -1
  258. package/flywheel-io-vision-2.0.0-beta-4.tgz +0 -0
  259. /package/{esm2020 → esm2022}/components/paginator/paginator.model.mjs +0 -0
  260. /package/{esm2020 → esm2022}/components/phone-input/country-code.data.mjs +0 -0
  261. /package/{esm2020 → esm2022}/components/phone-input/phone-input.model.mjs +0 -0
  262. /package/{esm2020 → esm2022}/components/snackbar/snackbar-message.model.mjs +0 -0
  263. /package/{esm2020 → esm2022}/components/snackbar/snackbar-timer.service.mjs +0 -0
  264. /package/{esm2020 → esm2022}/flywheel-io-vision.mjs +0 -0
@@ -1,328 +0,0 @@
1
- /* eslint-disable @typescript-eslint/no-explicit-any */
2
- import { CdkMenuTrigger } from '@angular/cdk/menu';
3
- import { Component, ContentChildren, EventEmitter, HostListener, Input, Optional, Output, Self, ViewChild, } from '@angular/core';
4
- import { FwMenuComponent } from '../menu/menu.component';
5
- import { FwMenuItemComponent } from '../menu/menu-item/menu-item.component';
6
- import * as i0 from "@angular/core";
7
- import * as i1 from "@angular/forms";
8
- import * as i2 from "@angular/common";
9
- import * as i3 from "@angular/cdk/menu";
10
- import * as i4 from "../menu/menu.component";
11
- import * as i5 from "../menu/menu-container/menu-container.component";
12
- import * as i6 from "../menu/menu-item/menu-item.component";
13
- import * as i7 from "../text-input/text-input.component";
14
- export class FwSelectMenuComponent {
15
- constructor(_changeDetectorRef, ngControl) {
16
- this._changeDetectorRef = _changeDetectorRef;
17
- this.ngControl = ngControl;
18
- this.options = [];
19
- this.valueProperty = 'value';
20
- this.titleProperty = 'title';
21
- this.iconProperty = 'icon';
22
- this.descriptionProperty = 'description';
23
- this.showFilter = false;
24
- this.showReset = false;
25
- this.disabled = false;
26
- this.errored = false;
27
- this.width = '200px';
28
- this.size = 'medium';
29
- this.placeholder = 'Select something...';
30
- // eslint-disable-next-line @angular-eslint/no-output-native
31
- this.change = new EventEmitter();
32
- this.filterChanged = new EventEmitter();
33
- this.selectValue = '';
34
- this.selectTitle = '';
35
- this.selectIcon = '';
36
- this.filterValue = '';
37
- this.subscriptions = [];
38
- this._isOpen = false;
39
- this.focused = 0;
40
- this.inFocusOpen = false;
41
- this.onTouched = () => {
42
- };
43
- // this is just a different way of binding the controlValueAccessor
44
- // it can be accessed in the component this way
45
- if (this.ngControl) {
46
- this.ngControl.valueAccessor = this;
47
- }
48
- }
49
- outsideClick(evt) {
50
- if (this._isOpen && evt.nodeName !== 'INPUT') {
51
- this.onTouched();
52
- this.close();
53
- this._isOpen = false;
54
- }
55
- if (this.trigger && this.trigger.isOpen()) {
56
- this._isOpen = true;
57
- }
58
- }
59
- get value() {
60
- return this._value;
61
- }
62
- set value(newValue) {
63
- this._valueType = typeof newValue;
64
- this.updateValue(newValue);
65
- }
66
- ngOnChanges(changes) {
67
- const currentOptions = changes.options?.currentValue;
68
- // if the options change check if the title we should be displaying has changed
69
- if (currentOptions && currentOptions !== changes.options?.previousValue) {
70
- const selectedOption = currentOptions.find(item => item['value']?.toString() === this.selectValue);
71
- if (selectedOption) {
72
- this.selectTitle = selectedOption['title'];
73
- }
74
- }
75
- }
76
- ngAfterContentInit() {
77
- if (!this.options || (this.options.length === 0 && this.menuItems && this.menuItems.length > 0)) {
78
- this.options = [];
79
- this.menuItems.forEach(item => {
80
- this.options.push({
81
- value: item.value.toString(),
82
- title: item.title.toString(),
83
- icon: item.icon,
84
- description: item.description,
85
- });
86
- const sub = item.click.subscribe(value => this.menu.writeValue(value));
87
- this.subscriptions.push(sub);
88
- if (item.value.toString() === this.selectValue) {
89
- this.selectTitle = item.title.toString();
90
- this.selectIcon = item.icon;
91
- }
92
- });
93
- }
94
- }
95
- ngOnDestroy() {
96
- for (const subscription of this.subscriptions) {
97
- subscription.unsubscribe();
98
- }
99
- }
100
- get invalid() {
101
- return this.ngControl?.invalid;
102
- }
103
- get touched() {
104
- return this.ngControl?.touched;
105
- }
106
- registerOnChange(fn) {
107
- this.onChange = fn;
108
- }
109
- registerOnTouched(fn) {
110
- this.onTouched = fn;
111
- }
112
- setDisabledState(isDisabled) {
113
- this.disabled = isDisabled;
114
- // eslint-disable-next-line @rx-angular/no-explicit-change-detection-apis
115
- this._changeDetectorRef.markForCheck();
116
- }
117
- writeValue(value) {
118
- this.updateValue(value);
119
- }
120
- handleClick(e) {
121
- this.onTouched();
122
- if (this.selectValue !== e) {
123
- this.options.forEach(item => {
124
- if (item[this.valueProperty].toString() === e) {
125
- if (this._valueType === 'object') {
126
- this.updateValue(item);
127
- }
128
- else {
129
- this.updateValue(item[this.valueProperty]);
130
- }
131
- }
132
- });
133
- }
134
- this.close();
135
- }
136
- moveFocused(direction) {
137
- switch (direction) {
138
- case 'down': {
139
- this.focused++;
140
- if (this.focused >= this.options.length) {
141
- this.focused = 0;
142
- }
143
- break;
144
- }
145
- case 'up': {
146
- this.focused--;
147
- if (this.focused < 0) {
148
- this.focused = this.options.length - 1;
149
- }
150
- break;
151
- }
152
- default: {
153
- this.focused = 0;
154
- break;
155
- }
156
- }
157
- }
158
- handleKeyDown(event) {
159
- if (this.trigger.isOpen()) {
160
- if (this.inFocusOpen) {
161
- if (event.key === 'ArrowDown') {
162
- this.moveFocused('down');
163
- if (this._valueType === 'object') {
164
- this.updateValue(this.options[this.focused]);
165
- }
166
- else {
167
- this.updateValue(this.options[this.focused][this.valueProperty]);
168
- }
169
- }
170
- if (event.key === 'ArrowUp') {
171
- this.moveFocused('up');
172
- if (this._valueType === 'object') {
173
- this.updateValue(this.options[this.focused]);
174
- }
175
- else {
176
- this.updateValue(this.options[this.focused][this.valueProperty]);
177
- }
178
- }
179
- if (event.key === 'Tab') {
180
- this.close();
181
- this.inFocusOpen = false;
182
- this.updateValue(this.preFocusValue);
183
- }
184
- }
185
- else {
186
- this.inFocusOpen = true;
187
- this.preFocusValue = this.value;
188
- }
189
- }
190
- else {
191
- if (event.key === 'Enter') {
192
- this.inFocusOpen = false;
193
- this.preFocusValue = this.value;
194
- }
195
- }
196
- }
197
- handleKeyUp(event) {
198
- if (this.trigger.isOpen()) {
199
- if (event.key === 'Escape') {
200
- this.close();
201
- this.inFocusOpen = false;
202
- this.updateValue(this.preFocusValue);
203
- }
204
- }
205
- else {
206
- if (this.showReset) {
207
- if (event.key === 'Escape') {
208
- this.handleReset();
209
- }
210
- }
211
- }
212
- }
213
- updateValue(value) {
214
- this._value = value;
215
- if (value && this._valueType === 'object' && typeof value === 'object') {
216
- this.selectValue = value[this.valueProperty].toString();
217
- this.selectTitle = value[this.titleProperty].toString();
218
- this.selectIcon = value[this.iconProperty];
219
- }
220
- else {
221
- let selectedOption;
222
- if (this.options && this.options.length > 0 && this.valueProperty && this.value) {
223
- selectedOption = this.options.find(option => option[this.valueProperty] === value[this.valueProperty]);
224
- }
225
- if (selectedOption) {
226
- this.selectValue = selectedOption[this.valueProperty].toString();
227
- this.selectTitle = selectedOption[this.titleProperty].toString();
228
- this.selectIcon = selectedOption[this.iconProperty];
229
- }
230
- else {
231
- this.selectValue = value ? value.toString() : '';
232
- this.selectTitle = value ? value.toString() : '';
233
- }
234
- if (this.options && this.options.length) {
235
- this.options.forEach((opt, index) => {
236
- if (opt[this.valueProperty] === value) {
237
- this.selectTitle = opt[this.titleProperty]?.toString();
238
- this.selectIcon = opt[this.iconProperty];
239
- this.focused = index;
240
- }
241
- });
242
- }
243
- }
244
- this.onTouched();
245
- this.onChange?.(value);
246
- this.change.emit(value);
247
- }
248
- handleReset() {
249
- if (this.showReset) {
250
- if (this._valueType === 'object') {
251
- this.updateValue(null);
252
- }
253
- else {
254
- this.updateValue('');
255
- }
256
- }
257
- }
258
- close() {
259
- this.trigger.close();
260
- this.filterValue = '';
261
- this.filterChanged.emit(this.filterValue);
262
- }
263
- onFilterChanged(value) {
264
- this.filterValue = value;
265
- this.filterChanged.emit(value);
266
- }
267
- }
268
- FwSelectMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FwSelectMenuComponent, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Component });
269
- FwSelectMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: FwSelectMenuComponent, selector: "fw-select", inputs: { options: "options", valueProperty: "valueProperty", titleProperty: "titleProperty", iconProperty: "iconProperty", staticIcon: "staticIcon", descriptionProperty: "descriptionProperty", showFilter: "showFilter", showReset: "showReset", disabled: "disabled", errored: "errored", width: "width", optionsWidth: "optionsWidth", minOptionsHeight: "minOptionsHeight", maxOptionsHeight: "maxOptionsHeight", size: "size", placeholder: "placeholder", value: "value" }, outputs: { change: "change", filterChanged: "filterChanged" }, host: { listeners: { "document:click": "outsideClick($event.target)" } }, queries: [{ propertyName: "menuItems", predicate: FwMenuItemComponent, descendants: true }], viewQueries: [{ propertyName: "trigger", first: true, predicate: CdkMenuTrigger, descendants: true }, { propertyName: "menu", first: true, predicate: FwMenuComponent, descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #wrapper [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"staticIcon || selectIcon\"\n [rightIcon]=\"(selectTitle&&showReset)?'close-circled':'chevron-down'\"\n (rightIconAction)=\"handleReset()\"\n [useActionableIcons]=\"true\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [error]=\"errored || (invalid && touched)\"\n (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container\n [filterText]=\"filterValue\"\n *ngIf=\"!disabled\" [showFilter]=\"showFilter\" [width]=\"optionsWidth || wrapper.offsetWidth + 'px'\"\n [maxHeight]=\"maxOptionsHeight\" [minHeight]=\"minOptionsHeight\" (filterChanged)=\"onFilterChanged($event)\">\n <fw-menu [disabled]=\"disabled\" [value]=\"selectValue\" (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty]?.toString()\"\n [description]=\"item[descriptionProperty]\"\n [value]=\"item[valueProperty]?.toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <div #menuContentWrapper>\n <ng-content select=\"[fw-menu-item, fw-menu-separator, fw-menu-item-group]\"></ng-content>\n </div>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box;max-width:100%}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i3.CdkMenuTrigger, selector: "[cdkMenuTriggerFor]", inputs: ["cdkMenuTriggerFor", "cdkMenuPosition", "cdkMenuTriggerData"], outputs: ["cdkMenuOpened", "cdkMenuClosed"], exportAs: ["cdkMenuTriggerFor"] }, { kind: "component", type: i4.FwMenuComponent, selector: "fw-menu", inputs: ["disabled", "size", "multiSelect", "useCheckbox", "value", "variant", "collapsed", "collapsedWidth", "openWidth"], outputs: ["change", "filteredItemsChange"] }, { kind: "component", type: i5.FwMenuContainerComponent, selector: "fw-menu-container", inputs: ["width", "maxHeight", "minHeight", "border", "shadow", "showFilter", "filterText", "offset", "collapsed"], outputs: ["filterChanged"] }, { kind: "component", type: i6.FwMenuItemComponent, selector: "fw-menu-item", inputs: ["value", "size", "title", "description", "icon", "iconColor", "disabled", "showCheckbox", "checkboxColor", "multiSelect", "hidden", "collapsed", "href", "target", "subItemsOpen", "focused", "selected", "variant"], outputs: ["click"] }, { kind: "component", type: i7.FwTextInputComponent, selector: "fw-text-input", inputs: ["disabled", "useActionableIcons", "leftIcon", "rightIcon", "prefix", "context", "helperText", "errorText", "placeholder", "readOnly", "size", "type", "maxLength", "autofocus", "autocomplete", "error", "value"], outputs: ["leftIconAction", "rightIconAction"] }] });
270
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FwSelectMenuComponent, decorators: [{
271
- type: Component,
272
- args: [{ selector: 'fw-select', template: "<div #wrapper [ngStyle]=\"{width: width, cursor: 'pointer'}\">\n <fw-text-input\n [cdkMenuTriggerFor]=\"selectMenu\"\n [value]=\"selectTitle\"\n [leftIcon]=\"staticIcon || selectIcon\"\n [rightIcon]=\"(selectTitle&&showReset)?'close-circled':'chevron-down'\"\n (rightIconAction)=\"handleReset()\"\n [useActionableIcons]=\"true\"\n [placeholder]=\"placeholder\"\n [disabled]=\"disabled\"\n [size]=\"size\"\n [error]=\"errored || (invalid && touched)\"\n (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"handleKeyDown($event)\"\n readOnly=\"true\">\n </fw-text-input>\n <ng-template #selectMenu>\n <fw-menu-container\n [filterText]=\"filterValue\"\n *ngIf=\"!disabled\" [showFilter]=\"showFilter\" [width]=\"optionsWidth || wrapper.offsetWidth + 'px'\"\n [maxHeight]=\"maxOptionsHeight\" [minHeight]=\"minOptionsHeight\" (filterChanged)=\"onFilterChanged($event)\">\n <fw-menu [disabled]=\"disabled\" [value]=\"selectValue\" (change)=\"handleClick($event)\">\n <ng-container *ngIf=\"menuItems.length===0\">\n <fw-menu-item\n *ngFor=\"let item of options\"\n [title]=\"item[titleProperty]?.toString()\"\n [description]=\"item[descriptionProperty]\"\n [value]=\"item[valueProperty]?.toString()\"\n [icon]=\"item[iconProperty]\"\n >\n </fw-menu-item>\n </ng-container>\n <div #menuContentWrapper>\n <ng-content select=\"[fw-menu-item, fw-menu-separator, fw-menu-item-group]\"></ng-content>\n </div>\n </fw-menu>\n </fw-menu-container>\n </ng-template>\n</div>\n", styles: [":host{box-sizing:border-box;max-width:100%}\n"] }]
273
- }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.NgControl, decorators: [{
274
- type: Optional
275
- }, {
276
- type: Self
277
- }] }]; }, propDecorators: { outsideClick: [{
278
- type: HostListener,
279
- args: ['document:click', ['$event.target']]
280
- }], options: [{
281
- type: Input
282
- }], valueProperty: [{
283
- type: Input
284
- }], titleProperty: [{
285
- type: Input
286
- }], iconProperty: [{
287
- type: Input
288
- }], staticIcon: [{
289
- type: Input
290
- }], descriptionProperty: [{
291
- type: Input
292
- }], showFilter: [{
293
- type: Input
294
- }], showReset: [{
295
- type: Input
296
- }], disabled: [{
297
- type: Input
298
- }], errored: [{
299
- type: Input
300
- }], width: [{
301
- type: Input
302
- }], optionsWidth: [{
303
- type: Input
304
- }], minOptionsHeight: [{
305
- type: Input
306
- }], maxOptionsHeight: [{
307
- type: Input
308
- }], size: [{
309
- type: Input
310
- }], placeholder: [{
311
- type: Input
312
- }], trigger: [{
313
- type: ViewChild,
314
- args: [CdkMenuTrigger]
315
- }], menu: [{
316
- type: ViewChild,
317
- args: [FwMenuComponent]
318
- }], menuItems: [{
319
- type: ContentChildren,
320
- args: [FwMenuItemComponent, { descendants: true }]
321
- }], change: [{
322
- type: Output
323
- }], filterChanged: [{
324
- type: Output
325
- }], value: [{
326
- type: Input
327
- }] } });
328
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsd0RBQXdEO0FBQ3hELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBR0wsU0FBUyxFQUNULGVBQWUsRUFDZixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFHTCxRQUFRLEVBQ1IsTUFBTSxFQUVOLElBQUksRUFFSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFLdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHVDQUF1QyxDQUFDOzs7Ozs7Ozs7QUFPNUUsTUFBTSxPQUFPLHFCQUFxQjtJQXlEaEMsWUFDWSxrQkFBcUMsRUFDbkIsU0FBb0I7UUFEdEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUNuQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBL0N6QyxZQUFPLEdBQWEsRUFBRSxDQUFDO1FBQ3ZCLGtCQUFhLEdBQVksT0FBTyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVksT0FBTyxDQUFDO1FBQ2pDLGlCQUFZLEdBQVksTUFBTSxDQUFDO1FBRS9CLHdCQUFtQixHQUFZLGFBQWEsQ0FBQztRQUM3QyxlQUFVLEdBQWEsS0FBSyxDQUFDO1FBQzdCLGNBQVMsR0FBYSxLQUFLLENBQUM7UUFDNUIsYUFBUSxHQUFhLEtBQUssQ0FBQztRQUMzQixZQUFPLEdBQWEsS0FBSyxDQUFDO1FBQzFCLFVBQUssR0FBVyxPQUFPLENBQUM7UUFJeEIsU0FBSSxH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c0JBQS9CLE1BQU07Z0JBWUgsS0FBSztzQkFEUixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENka01lbnVUcmlnZ2VyIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL21lbnUnO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFdmVudEVtaXR0ZXIsXG4gIEhvc3RMaXN0ZW5lcixcbiAgSW5wdXQsXG4gIE9uQ2hhbmdlcyxcbiAgT25EZXN0cm95LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFNlbGYsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IEljb25UeXBlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnR5cGVzJztcbmltcG9ydCB7IEZ3TWVudUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUvbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndNZW51SXRlbUNvbXBvbmVudCB9IGZyb20gJy4uL21lbnUvbWVudS1pdGVtL21lbnUtaXRlbS5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdmdy1zZWxlY3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vc2VsZWN0LW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zZWxlY3QtbWVudS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBGd1NlbGVjdE1lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIEFmdGVyQ29udGVudEluaXQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDpjbGljaycsIFsnJGV2ZW50LnRhcmdldCddKSBvdXRzaWRlQ2xpY2soZXZ0OiBhbnkpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5faXNPcGVuICYmIGV2dC5ub2RlTmFtZSAhPT0gJ0lOUFVUJykge1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIHRoaXMuX2lzT3BlbiA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy50cmlnZ2VyICYmIHRoaXMudHJpZ2dlci5pc09wZW4oKSkge1xuICAgICAgdGhpcy5faXNPcGVuID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBASW5wdXQoKSBvcHRpb25zOiBvYmplY3RbXSA9IFtdO1xuICBASW5wdXQoKSB2YWx1ZVByb3BlcnR5Pzogc3RyaW5nID0gJ3ZhbHVlJztcbiAgQElucHV0KCkgdGl0bGVQcm9wZXJ0eT86IHN0cmluZyA9ICd0aXRsZSc7XG4gIEBJbnB1dCgpIGljb25Qcm9wZXJ0eT86IHN0cmluZyA9ICdpY29uJztcbiAgQElucHV0KCkgc3RhdGljSWNvbj86IEljb25UeXBlO1xuICBASW5wdXQoKSBkZXNjcmlwdGlvblByb3BlcnR5Pzogc3RyaW5nID0gJ2Rlc2NyaXB0aW9uJztcbiAgQElucHV0KCkgc2hvd0ZpbHRlcj86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1Jlc2V0PzogYm9vbGVhbiA9IGZhbHNlO1xuICBASW5wdXQoKSBkaXNhYmxlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgZXJyb3JlZD86IGJvb2xlYW4gPSBmYWxzZTtcbiAgQElucHV0KCkgd2lkdGg6IHN0cmluZyA9ICcyMDBweCc7XG4gIEBJbnB1dCgpIG9wdGlvbnNXaWR0aD86IHN0cmluZztcbiAgQElucHV0KCkgbWluT3B0aW9uc0hlaWdodD86IHN0cmluZztcbiAgQElucHV0KCkgbWF4T3B0aW9uc0hlaWdodD86IHN0cmluZztcbiAgQElucHV0KCkgc2l6ZT86ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZScgPSAnbWVkaXVtJztcbiAgQElucHV0KCkgcGxhY2Vob2xkZXI6IHN0cmluZyA9ICdTZWxlY3Qgc29tZXRoaW5nLi4uJztcbiAgQFZpZXdDaGlsZChDZGtNZW51VHJpZ2dlcikgdHJpZ2dlcjogQ2RrTWVudVRyaWdnZXI7XG4gIEBWaWV3Q2hpbGQoRndNZW51Q29tcG9uZW50KSBtZW51OiBGd01lbnVDb21wb25lbnQ7XG4gIEBDb250ZW50Q2hpbGRyZW4oRndNZW51SXRlbUNvbXBvbmVudCwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KSBtZW51SXRlbXM6IFF1ZXJ5TGlzdDxGd01lbnVJdGVtQ29tcG9uZW50PjtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBjaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueT4oKTtcbiAgQE91dHB1dCgpIHJlYWRvbmx5IGZpbHRlckNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgc2VsZWN0VmFsdWU6IHN0cmluZyA9ICcnO1xuICBzZWxlY3RUaXRsZTogc3RyaW5nID0gJyc7XG4gIHNlbGVjdEljb246IHN0cmluZyA9ICcnO1xuICBmaWx0ZXJWYWx1ZTogc3RyaW5nID0gJyc7XG4gIHByaXZhdGUgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgcHJpdmF0ZSBfaXNPcGVuID0gZmFsc2U7XG4gIGZvY3VzZWQgPSAwO1xuICBpbkZvY3VzT3BlbiA9IGZhbHNlO1xuICBwcmVGb2N1c1ZhbHVlOiBhbnk7XG5cbiAgQElucHV0KClcbiAgZ2V0IHZhbHVlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICB9XG5cbiAgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnkpIHtcbiAgICB0aGlzLl92YWx1ZVR5cGUgPSB0eXBlb2YgbmV3VmFsdWU7XG4gICAgdGhpcy51cGRhdGVWYWx1ZShuZXdWYWx1ZSk7XG4gIH1cblxuICBwcml2YXRlIF92YWx1ZTogYW55O1xuICBwcml2YXRlIF92YWx1ZVR5cGU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcm90ZWN0ZWQgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBAT3B0aW9uYWwoKSBAU2VsZigpIHByaXZhdGUgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICkge1xuICAgIC8vIHRoaXMgaXMganVzdCBhIGRpZmZlcmVudCB3YXkgb2YgYmluZGluZyB0aGUgY29udHJvbFZhbHVlQWNjZXNzb3JcbiAgICAvLyBpdCBjYW4gYmUgYWNjZXNzZWQgaW4gdGhlIGNvbXBvbmVudCB0aGlzIHdheVxuICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgdGhpcy5uZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gY2hhbmdlcy5vcHRpb25zPy5jdXJyZW50VmFsdWU7XG5cbiAgICAvLyBpZiB0aGUgb3B0aW9ucyBjaGFuZ2UgY2hlY2sgaWYgdGhlIHRpdGxlIHdlIHNob3VsZCBiZSBkaXNwbGF5aW5nIGhhcyBjaGFuZ2VkXG4gICAgaWYgKGN1cnJlbnRPcHRpb25zICYmIGN1cnJlbnRPcHRpb25zICE9PSBjaGFuZ2VzLm9wdGlvbnM/LnByZXZpb3VzVmFsdWUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkT3B0aW9uID0gY3VycmVudE9wdGlvbnMuZmluZChpdGVtID0+IGl0ZW1bJ3ZhbHVlJ10/LnRvU3RyaW5nKCkgPT09IHRoaXMuc2VsZWN0VmFsdWUpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IHNlbGVjdGVkT3B0aW9uWyd0aXRsZSddO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3B0aW9ucyB8fCAodGhpcy5vcHRpb25zLmxlbmd0aCA9PT0gMCAmJiB0aGlzLm1lbnVJdGVtcyAmJiB0aGlzLm1lbnVJdGVtcy5sZW5ndGggPiAwKSkge1xuICAgICAgdGhpcy5vcHRpb25zID0gW107XG4gICAgICB0aGlzLm1lbnVJdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICB0aGlzLm9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUudG9TdHJpbmcoKSxcbiAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZS50b1N0cmluZygpLFxuICAgICAgICAgIGljb246IGl0ZW0uaWNvbixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogaXRlbS5kZXNjcmlwdGlvbixcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHN1YiA9IGl0ZW0uY2xpY2suc3Vic2NyaWJlKHZhbHVlID0+IHRoaXMubWVudS53cml0ZVZhbHVlKHZhbHVlKSk7XG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9ucy5wdXNoKHN1Yik7XG4gICAgICAgIGlmIChpdGVtLnZhbHVlLnRvU3RyaW5nKCkgPT09IHRoaXMuc2VsZWN0VmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnNlbGVjdFRpdGxlID0gaXRlbS50aXRsZS50b1N0cmluZygpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0SWNvbiA9IGl0ZW0uaWNvbjtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBzdWJzY3JpcHRpb24gb2YgdGhpcy5zdWJzY3JpcHRpb25zKSB7XG4gICAgICBzdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG4gIH1cblxuICBnZXQgaW52YWxpZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2w/LmludmFsaWQ7XG4gIH1cblxuICBnZXQgdG91Y2hlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5uZ0NvbnRyb2w/LnRvdWNoZWQ7XG4gIH1cblxuICBvbkNoYW5nZT86ICh2YWx1ZTogYW55KSA9PiB2b2lkO1xuXG4gIG9uVG91Y2hlZCA9ICgpOiB2b2lkID0+IHtcbiAgfTtcblxuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiAoKSA9PiB7fSk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICBzZXREaXNhYmxlZFN0YXRlPyhpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5kaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEByeC1hbmd1bGFyL25vLWV4cGxpY2l0LWNoYW5nZS1kZXRlY3Rpb24tYXBpc1xuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgd3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgdGhpcy51cGRhdGVWYWx1ZSh2YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVDbGljayhlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIGlmICh0aGlzLnNlbGVjdFZhbHVlICE9PSBlKSB7XG4gICAgICB0aGlzLm9wdGlvbnMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW1bdGhpcy52YWx1ZVByb3BlcnR5XS50b1N0cmluZygpID09PSBlKSB7XG4gICAgICAgICAgaWYgKHRoaXMuX3ZhbHVlVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoaXRlbSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUoaXRlbVt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKCk7XG4gIH1cblxuICBtb3ZlRm9jdXNlZChkaXJlY3Rpb246IHN0cmluZyk6IHZvaWQge1xuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG4gICAgICBjYXNlICdkb3duJzoge1xuICAgICAgICB0aGlzLmZvY3VzZWQrKztcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCA+PSB0aGlzLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5mb2N1c2VkID0gMDtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGNhc2UgJ3VwJzoge1xuICAgICAgICB0aGlzLmZvY3VzZWQtLTtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZCA8IDApIHtcbiAgICAgICAgICB0aGlzLmZvY3VzZWQgPSB0aGlzLm9wdGlvbnMubGVuZ3RoIC0gMTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgdGhpcy5mb2N1c2VkID0gMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIGlmICh0aGlzLmluRm9jdXNPcGVuKSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XG4gICAgICAgICAgdGhpcy5tb3ZlRm9jdXNlZCgnZG93bicpO1xuICAgICAgICAgIGlmICh0aGlzLl92YWx1ZVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMub3B0aW9uc1t0aGlzLmZvY3VzZWRdKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLm9wdGlvbnNbdGhpcy5mb2N1c2VkXVt0aGlzLnZhbHVlUHJvcGVydHldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnKSB7XG4gICAgICAgICAgdGhpcy5tb3ZlRm9jdXNlZCgndXAnKTtcbiAgICAgICAgICBpZiAodGhpcy5fdmFsdWVUeXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVWYWx1ZSh0aGlzLm9wdGlvbnNbdGhpcy5mb2N1c2VkXSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlVmFsdWUodGhpcy5vcHRpb25zW3RoaXMuZm9jdXNlZF1bdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdUYWInKSB7XG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICAgIHRoaXMuaW5Gb2N1c09wZW4gPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMucHJlRm9jdXNWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuaW5Gb2N1c09wZW4gPSB0cnVlO1xuICAgICAgICB0aGlzLnByZUZvY3VzVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRW50ZXInKSB7XG4gICAgICAgIHRoaXMuaW5Gb2N1c09wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5wcmVGb2N1c1ZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnRyaWdnZXIuaXNPcGVuKCkpIHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5pbkZvY3VzT3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKHRoaXMucHJlRm9jdXNWYWx1ZSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0aGlzLnNob3dSZXNldCkge1xuICAgICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJykge1xuICAgICAgICAgIHRoaXMuaGFuZGxlUmVzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG5cbiAgdXBkYXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIHRoaXMuX3ZhbHVlID0gdmFsdWU7XG4gICAgaWYgKHZhbHVlICYmIHRoaXMuX3ZhbHVlVHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IHZhbHVlW3RoaXMudmFsdWVQcm9wZXJ0eV0udG9TdHJpbmcoKTtcbiAgICAgIHRoaXMuc2VsZWN0VGl0bGUgPSB2YWx1ZVt0aGlzLnRpdGxlUHJvcGVydHldLnRvU3RyaW5nKCk7XG4gICAgICB0aGlzLnNlbGVjdEljb24gPSB2YWx1ZVt0aGlzLmljb25Qcm9wZXJ0eV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBzZWxlY3RlZE9wdGlvbjogb2JqZWN0O1xuICAgICAgaWYgKHRoaXMub3B0aW9ucyAmJiB0aGlzLm9wdGlvbnMubGVuZ3RoID4gMCAmJiB0aGlzLnZhbHVlUHJvcGVydHkgJiYgdGhpcy52YWx1ZSkge1xuICAgICAgICBzZWxlY3RlZE9wdGlvbiA9IHRoaXMub3B0aW9ucy5maW5kKG9wdGlvbiA9PiBvcHRpb25bdGhpcy52YWx1ZVByb3BlcnR5XSA9PT0gdmFsdWVbdGhpcy52YWx1ZVByb3BlcnR5XSk7XG4gICAgICB9XG4gICAgICBpZiAoc2VsZWN0ZWRPcHRpb24pIHtcbiAgICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IHNlbGVjdGVkT3B0aW9uW3RoaXMudmFsdWVQcm9wZXJ0eV0udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RUaXRsZSA9IHNlbGVjdGVkT3B0aW9uW3RoaXMudGl0bGVQcm9wZXJ0eV0udG9TdHJpbmcoKTtcbiAgICAgICAgdGhpcy5zZWxlY3RJY29uID0gc2VsZWN0ZWRPcHRpb25bdGhpcy5pY29uUHJvcGVydHldO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RWYWx1ZSA9IHZhbHVlID8gdmFsdWUudG9TdHJpbmcoKSA6ICcnO1xuICAgICAgICB0aGlzLnNlbGVjdFRpdGxlID0gdmFsdWUgPyB2YWx1ZS50b1N0cmluZygpIDogJyc7XG4gICAgICB9XG4gICAgICBpZiAodGhpcy5vcHRpb25zICYmIHRoaXMub3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmZvckVhY2goKG9wdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICBpZiAob3B0W3RoaXMudmFsdWVQcm9wZXJ0eV0gPT09IHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFRpdGxlID0gb3B0W3RoaXMudGl0bGVQcm9wZXJ0eV0/LnRvU3RyaW5nKCk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdEljb24gPSBvcHRbdGhpcy5pY29uUHJvcGVydHldO1xuICAgICAgICAgICAgdGhpcy5mb2N1c2VkID0gaW5kZXg7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIHRoaXMub25DaGFuZ2U/Lih2YWx1ZSk7XG4gICAgdGhpcy5jaGFuZ2UuZW1pdCh2YWx1ZSk7XG4gIH1cblxuICBoYW5kbGVSZXNldCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zaG93UmVzZXQpIHtcbiAgICAgIGlmICh0aGlzLl92YWx1ZVR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRoaXMudXBkYXRlVmFsdWUobnVsbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnVwZGF0ZVZhbHVlKCcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRyaWdnZXIuY2xvc2UoKTtcbiAgICB0aGlzLmZpbHRlclZhbHVlID0gJyc7XG4gICAgdGhpcy5maWx0ZXJDaGFuZ2VkLmVtaXQodGhpcy5maWx0ZXJWYWx1ZSk7XG4gIH1cblxuICBvbkZpbHRlckNoYW5nZWQodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMuZmlsdGVyVmFsdWUgPSB2YWx1ZTtcbiAgICB0aGlzLmZpbHRlckNoYW5nZWQuZW1pdCh2YWx1ZSk7XG4gIH1cbn1cbiIsIjxkaXYgI3dyYXBwZXIgW25nU3R5bGVdPVwie3dpZHRoOiB3aWR0aCwgY3Vyc29yOiAncG9pbnRlcid9XCI+XG4gIDxmdy10ZXh0LWlucHV0XG4gICAgW2Nka01lbnVUcmlnZ2VyRm9yXT1cInNlbGVjdE1lbnVcIlxuICAgIFt2YWx1ZV09XCJzZWxlY3RUaXRsZVwiXG4gICAgW2xlZnRJY29uXT1cInN0YXRpY0ljb24gfHwgc2VsZWN0SWNvblwiXG4gICAgW3JpZ2h0SWNvbl09XCIoc2VsZWN0VGl0bGUmJnNob3dSZXNldCk/J2Nsb3NlLWNpcmNsZWQnOidjaGV2cm9uLWRvd24nXCJcbiAgICAocmlnaHRJY29uQWN0aW9uKT1cImhhbmRsZVJlc2V0KClcIlxuICAgIFt1c2VBY3Rpb25hYmxlSWNvbnNdPVwidHJ1ZVwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgIFtzaXplXT1cInNpemVcIlxuICAgIFtlcnJvcl09XCJlcnJvcmVkIHx8IChpbnZhbGlkICYmIHRvdWNoZWQpXCJcbiAgICAoa2V5dXApPVwiaGFuZGxlS2V5VXAoJGV2ZW50KVwiXG4gICAgKGtleWRvd24pPVwiaGFuZGxlS2V5RG93bigkZXZlbnQpXCJcbiAgICByZWFkT25seT1cInRydWVcIj5cbiAgPC9mdy10ZXh0LWlucHV0PlxuICA8bmctdGVtcGxhdGUgI3NlbGVjdE1lbnU+XG4gICAgPGZ3LW1lbnUtY29udGFpbmVyXG4gICAgICBbZmlsdGVyVGV4dF09XCJmaWx0ZXJWYWx1ZVwiXG4gICAgICAqbmdJZj1cIiFkaXNhYmxlZFwiIFtzaG93RmlsdGVyXT1cInNob3dGaWx0ZXJcIiBbd2lkdGhdPVwib3B0aW9uc1dpZHRoIHx8IHdyYXBwZXIub2Zmc2V0V2lkdGggKyAncHgnXCJcbiAgICAgIFttYXhIZWlnaHRdPVwibWF4T3B0aW9uc0hlaWdodFwiIFttaW5IZWlnaHRdPVwibWluT3B0aW9uc0hlaWdodFwiIChmaWx0ZXJDaGFuZ2VkKT1cIm9uRmlsdGVyQ2hhbmdlZCgkZXZlbnQpXCI+XG4gICAgICA8ZnctbWVudSBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbdmFsdWVdPVwic2VsZWN0VmFsdWVcIiAoY2hhbmdlKT1cImhhbmRsZUNsaWNrKCRldmVudClcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1lbnVJdGVtcy5sZW5ndGg9PT0wXCI+XG4gICAgICAgICAgPGZ3LW1lbnUtaXRlbVxuICAgICAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2Ygb3B0aW9uc1wiXG4gICAgICAgICAgICBbdGl0bGVdPVwiaXRlbVt0aXRsZVByb3BlcnR5XT8udG9TdHJpbmcoKVwiXG4gICAgICAgICAgICBbZGVzY3JpcHRpb25dPVwiaXRlbVtkZXNjcmlwdGlvblByb3BlcnR5XVwiXG4gICAgICAgICAgICBbdmFsdWVdPVwiaXRlbVt2YWx1ZVByb3BlcnR5XT8udG9TdHJpbmcoKVwiXG4gICAgICAgICAgICBbaWNvbl09XCJpdGVtW2ljb25Qcm9wZXJ0eV1cIlxuICAgICAgICAgID5cbiAgICAgICAgICA8L2Z3LW1lbnUtaXRlbT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxkaXYgI21lbnVDb250ZW50V3JhcHBlcj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2Z3LW1lbnUtaXRlbSwgZnctbWVudS1zZXBhcmF0b3IsIGZ3LW1lbnUtaXRlbS1ncm91cF1cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9mdy1tZW51PlxuICAgIDwvZnctbWVudS1jb250YWluZXI+XG4gIDwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
@@ -1,53 +0,0 @@
1
- import { CdkMenuModule } from '@angular/cdk/menu';
2
- import { CommonModule } from '@angular/common';
3
- import { NgModule } from '@angular/core';
4
- import { FormsModule } from '@angular/forms';
5
- import { FwChipModule } from '../chip/chip.module';
6
- import { FwIconModule } from '../icon/icon.module';
7
- import { FwMenuModule } from '../menu/menu.module';
8
- import { FwTextInputModule } from '../text-input/text-input.module';
9
- import { FwMultiSelectMenuComponent } from './multi-select-menu/multi-select-menu.component';
10
- import { FwSelectMenuComponent } from './select-menu.component';
11
- import * as i0 from "@angular/core";
12
- export class FwSelectMenuModule {
13
- }
14
- FwSelectMenuModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FwSelectMenuModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
15
- FwSelectMenuModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: FwSelectMenuModule, declarations: [FwMultiSelectMenuComponent,
16
- FwSelectMenuComponent], imports: [CommonModule,
17
- CdkMenuModule,
18
- FormsModule,
19
- FwChipModule,
20
- FwIconModule,
21
- FwMenuModule,
22
- FwTextInputModule], exports: [FwMultiSelectMenuComponent,
23
- FwSelectMenuComponent] });
24
- FwSelectMenuModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FwSelectMenuModule, imports: [CommonModule,
25
- CdkMenuModule,
26
- FormsModule,
27
- FwChipModule,
28
- FwIconModule,
29
- FwMenuModule,
30
- FwTextInputModule] });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: FwSelectMenuModule, decorators: [{
32
- type: NgModule,
33
- args: [{
34
- imports: [
35
- CommonModule,
36
- CdkMenuModule,
37
- FormsModule,
38
- FwChipModule,
39
- FwIconModule,
40
- FwMenuModule,
41
- FwTextInputModule,
42
- ],
43
- exports: [
44
- FwMultiSelectMenuComponent,
45
- FwSelectMenuComponent,
46
- ],
47
- declarations: [
48
- FwMultiSelectMenuComponent,
49
- FwSelectMenuComponent,
50
- ],
51
- }]
52
- }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LW1lbnUubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2VsZWN0LW1lbnUvc2VsZWN0LW1lbnUubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ25ELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0saURBQWlELENBQUM7QUFDN0YsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUM7O0FBcUJoRSxNQUFNLE9BQU8sa0JBQWtCOztnSEFBbEIsa0JBQWtCO2lIQUFsQixrQkFBa0IsaUJBSjNCLDBCQUEwQjtRQUMxQixxQkFBcUIsYUFkckIsWUFBWTtRQUNaLGFBQWE7UUFDYixXQUFXO1FBQ1gsWUFBWTtRQUNaLFlBQVk7UUFDWixZQUFZO1FBQ1osaUJBQWlCLGFBR2pCLDBCQUEwQjtRQUMxQixxQkFBcUI7aUhBT1osa0JBQWtCLFlBakIzQixZQUFZO1FBQ1osYUFBYTtRQUNiLFdBQVc7UUFDWCxZQUFZO1FBQ1osWUFBWTtRQUNaLFlBQVk7UUFDWixpQkFBaUI7NEZBV1Isa0JBQWtCO2tCQW5COUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixZQUFZO3dCQUNaLFlBQVk7d0JBQ1osaUJBQWlCO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1AsMEJBQTBCO3dCQUMxQixxQkFBcUI7cUJBQ3RCO29CQUNELFlBQVksRUFBRTt3QkFDWiwwQkFBMEI7d0JBQzFCLHFCQUFxQjtxQkFDdEI7aUJBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZGtNZW51TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL21lbnUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgRndDaGlwTW9kdWxlIH0gZnJvbSAnLi4vY2hpcC9jaGlwLm1vZHVsZSc7XG5pbXBvcnQgeyBGd0ljb25Nb2R1bGUgfSBmcm9tICcuLi9pY29uL2ljb24ubW9kdWxlJztcbmltcG9ydCB7IEZ3TWVudU1vZHVsZSB9IGZyb20gJy4uL21lbnUvbWVudS5tb2R1bGUnO1xuaW1wb3J0IHsgRndUZXh0SW5wdXRNb2R1bGUgfSBmcm9tICcuLi90ZXh0LWlucHV0L3RleHQtaW5wdXQubW9kdWxlJztcbmltcG9ydCB7IEZ3TXVsdGlTZWxlY3RNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9tdWx0aS1zZWxlY3QtbWVudS9tdWx0aS1zZWxlY3QtbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHsgRndTZWxlY3RNZW51Q29tcG9uZW50IH0gZnJvbSAnLi9zZWxlY3QtbWVudS5jb21wb25lbnQnO1xuXG5ATmdNb2R1bGUoe1xuICBpbXBvcnRzOiBbXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIENka01lbnVNb2R1bGUsXG4gICAgRm9ybXNNb2R1bGUsXG4gICAgRndDaGlwTW9kdWxlLFxuICAgIEZ3SWNvbk1vZHVsZSxcbiAgICBGd01lbnVNb2R1bGUsXG4gICAgRndUZXh0SW5wdXRNb2R1bGUsXG4gIF0sXG4gIGV4cG9ydHM6IFtcbiAgICBGd011bHRpU2VsZWN0TWVudUNvbXBvbmVudCxcbiAgICBGd1NlbGVjdE1lbnVDb21wb25lbnQsXG4gIF0sXG4gIGRlY2xhcmF0aW9uczogW1xuICAgIEZ3TXVsdGlTZWxlY3RNZW51Q29tcG9uZW50LFxuICAgIEZ3U2VsZWN0TWVudUNvbXBvbmVudCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgRndTZWxlY3RNZW51TW9kdWxlIHtcbn1cbiJdfQ==
@@ -1,36 +0,0 @@
1
- import { NgModule } from '@angular/core';
2
- import { MinimalTranslationService, TranslationService } from '../translation.service';
3
- import { TranslatePipe } from './translate.pipe';
4
- import { TrustHtmlPipe } from './trusthtml.pipe';
5
- import * as i0 from "@angular/core";
6
- const exports = [
7
- TranslatePipe,
8
- TrustHtmlPipe,
9
- ];
10
- export class PipesModule {
11
- }
12
- PipesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PipesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
13
- PipesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.10", ngImport: i0, type: PipesModule, declarations: [TranslatePipe,
14
- TrustHtmlPipe], exports: [TranslatePipe,
15
- TrustHtmlPipe] });
16
- PipesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PipesModule, providers: [
17
- {
18
- provide: TranslationService,
19
- useClass: MinimalTranslationService,
20
- },
21
- ] });
22
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: PipesModule, decorators: [{
23
- type: NgModule,
24
- args: [{
25
- declarations: exports,
26
- exports: exports,
27
- providers: [
28
- {
29
- provide: TranslationService,
30
- useClass: MinimalTranslationService,
31
- },
32
- ],
33
- }]
34
- }] });
35
- export { TranslationService };
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGlwZXMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvc2hhcmVkL3BpcGVzL3BpcGVzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXpDLE9BQU8sRUFBRSx5QkFBeUIsRUFBQyxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3RGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7O0FBRWpELE1BQU0sT0FBTyxHQUFHO0lBQ2QsYUFBYTtJQUNiLGFBQWE7Q0FDZCxDQUFDO0FBWUYsTUFBTSxPQUFPLFdBQVc7O3lHQUFYLFdBQVc7MEdBQVgsV0FBVyxpQkFkdEIsYUFBYTtRQUNiLGFBQWEsYUFEYixhQUFhO1FBQ2IsYUFBYTswR0FhRixXQUFXLGFBUFg7UUFDVDtZQUNFLE9BQU8sRUFBRSxrQkFBa0I7WUFDM0IsUUFBUSxFQUFFLHlCQUF5QjtTQUNwQztLQUNGOzRGQUVVLFdBQVc7a0JBVnZCLFFBQVE7bUJBQUM7b0JBQ1IsWUFBWSxFQUFFLE9BQU87b0JBQ3JCLE9BQU8sRUFBRSxPQUFPO29CQUNoQixTQUFTLEVBQUU7d0JBQ1Q7NEJBQ0UsT0FBTyxFQUFFLGtCQUFrQjs0QkFDM0IsUUFBUSxFQUFFLHlCQUF5Qjt5QkFDcEM7cUJBQ0Y7aUJBQ0Y7O0FBR0QsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBNaW5pbWFsVHJhbnNsYXRpb25TZXJ2aWNlLFRyYW5zbGF0aW9uU2VydmljZSB9IGZyb20gJy4uL3RyYW5zbGF0aW9uLnNlcnZpY2UnO1xuaW1wb3J0IHsgVHJhbnNsYXRlUGlwZSB9IGZyb20gJy4vdHJhbnNsYXRlLnBpcGUnO1xuaW1wb3J0IHsgVHJ1c3RIdG1sUGlwZSB9IGZyb20gJy4vdHJ1c3RodG1sLnBpcGUnO1xuXG5jb25zdCBleHBvcnRzID0gW1xuICBUcmFuc2xhdGVQaXBlLFxuICBUcnVzdEh0bWxQaXBlLFxuXTtcblxuQE5nTW9kdWxlKHtcbiAgZGVjbGFyYXRpb25zOiBleHBvcnRzLFxuICBleHBvcnRzOiBleHBvcnRzLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBUcmFuc2xhdGlvblNlcnZpY2UsXG4gICAgICB1c2VDbGFzczogTWluaW1hbFRyYW5zbGF0aW9uU2VydmljZSxcbiAgICB9LFxuICBdLFxufSlcbmV4cG9ydCBjbGFzcyBQaXBlc01vZHVsZSB7fVxuXG5leHBvcnQgeyBUcmFuc2xhdGlvblNlcnZpY2UgfVxuIl19
@@ -1,26 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { of } from 'rxjs';
3
- import * as i0 from "@angular/core";
4
- export class TranslationService {
5
- }
6
- /**
7
- * Very basic i18n implementation. Consumer apps can provide their own implementation of TranslationService to override.
8
- */
9
- export class MinimalTranslationService {
10
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
11
- getMessage(key, silent) {
12
- return of(MinimalTranslationService.messages[key]);
13
- }
14
- }
15
- MinimalTranslationService.messages = {
16
- 'common.actions.close': 'Close',
17
- 'confirmDialog.body': 'Are you sure?',
18
- 'confirmDialog.no': 'No',
19
- 'confirmDialog.yes': 'Yes',
20
- };
21
- MinimalTranslationService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MinimalTranslationService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
22
- MinimalTranslationService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MinimalTranslationService });
23
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: MinimalTranslationService, decorators: [{
24
- type: Injectable
25
- }] });
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNsYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3NoYXJlZC90cmFuc2xhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFjLEVBQUUsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFFdEMsTUFBTSxPQUFnQixrQkFBa0I7Q0FFdkM7QUFFRDs7R0FFRztBQUVILE1BQU0sT0FBTyx5QkFBeUI7SUFRcEMsNkRBQTZEO0lBQzdELFVBQVUsQ0FBQyxHQUFXLEVBQUUsTUFBZ0I7UUFDdEMsT0FBTyxFQUFFLENBQUMseUJBQXlCLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQzs7QUFWYyxrQ0FBUSxHQUFHO0lBQ3hCLHNCQUFzQixFQUFFLE9BQU87SUFDL0Isb0JBQW9CLEVBQUUsZUFBZTtJQUNyQyxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLG1CQUFtQixFQUFFLEtBQUs7Q0FDM0IsQ0FBQzt1SEFOUyx5QkFBeUI7MkhBQXpCLHlCQUF5Qjs0RkFBekIseUJBQXlCO2tCQURyQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgb2YgfSBmcm9tICdyeGpzJztcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zbGF0aW9uU2VydmljZSB7XG4gIGFic3RyYWN0IGdldE1lc3NhZ2Uoa2V5OiBzdHJpbmcsIHNpbGVudD86IGJvb2xlYW4pOiBPYnNlcnZhYmxlPHN0cmluZz5cbn1cblxuLyoqXG4gKiBWZXJ5IGJhc2ljIGkxOG4gaW1wbGVtZW50YXRpb24uIENvbnN1bWVyIGFwcHMgY2FuIHByb3ZpZGUgdGhlaXIgb3duIGltcGxlbWVudGF0aW9uIG9mIFRyYW5zbGF0aW9uU2VydmljZSB0byBvdmVycmlkZS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1pbmltYWxUcmFuc2xhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBUcmFuc2xhdGlvblNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBtZXNzYWdlcyA9IHtcbiAgICAnY29tbW9uLmFjdGlvbnMuY2xvc2UnOiAnQ2xvc2UnLFxuICAgICdjb25maXJtRGlhbG9nLmJvZHknOiAnQXJlIHlvdSBzdXJlPycsXG4gICAgJ2NvbmZpcm1EaWFsb2cubm8nOiAnTm8nLFxuICAgICdjb25maXJtRGlhbG9nLnllcyc6ICdZZXMnLFxuICB9O1xuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcbiAgZ2V0TWVzc2FnZShrZXk6IHN0cmluZywgc2lsZW50PzogYm9vbGVhbik6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIG9mKE1pbmltYWxUcmFuc2xhdGlvblNlcnZpY2UubWVzc2FnZXNba2V5XSk7XG4gIH1cbn1cbiJdfQ==