@sebgroup/green-angular 4.5.0 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. package/esm2022/index.mjs +19 -1
  2. package/esm2022/lib/shared/on-scroll.directive.mjs +2 -2
  3. package/esm2022/src/lib/shared/on-scroll.directive.mjs +2 -2
  4. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +287 -0
  5. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +17 -0
  6. package/esm2022/src/v-angular/base-control-value-accessor/index.mjs +3 -0
  7. package/esm2022/src/v-angular/base-control-value-accessor/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +5 -0
  8. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +25 -0
  9. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +20 -0
  10. package/esm2022/src/v-angular/breadcrumbs/index.mjs +3 -0
  11. package/esm2022/src/v-angular/breadcrumbs/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +5 -0
  12. package/esm2022/src/v-angular/button/button.component.mjs +108 -0
  13. package/esm2022/src/v-angular/button/button.module.mjs +20 -0
  14. package/esm2022/src/v-angular/button/index.mjs +3 -0
  15. package/esm2022/src/v-angular/button/sebgroup-green-angular-src-v-angular-button.mjs +5 -0
  16. package/esm2022/src/v-angular/card/card.component.mjs +11 -0
  17. package/esm2022/src/v-angular/card/card.module.mjs +18 -0
  18. package/esm2022/src/v-angular/card/index.mjs +3 -0
  19. package/esm2022/src/v-angular/card/sebgroup-green-angular-src-v-angular-card.mjs +5 -0
  20. package/esm2022/src/v-angular/character-countdown/character-countdown.directive.mjs +51 -0
  21. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +18 -0
  22. package/esm2022/src/v-angular/character-countdown/index.mjs +3 -0
  23. package/esm2022/src/v-angular/character-countdown/sebgroup-green-angular-src-v-angular-character-countdown.mjs +5 -0
  24. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +72 -0
  25. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +19 -0
  26. package/esm2022/src/v-angular/checkbox/index.mjs +3 -0
  27. package/esm2022/src/v-angular/checkbox/sebgroup-green-angular-src-v-angular-checkbox.mjs +5 -0
  28. package/esm2022/src/v-angular/core/core.globals.mjs +17 -0
  29. package/esm2022/src/v-angular/core/core.utils.mjs +28 -0
  30. package/esm2022/src/v-angular/core/index.mjs +3 -0
  31. package/esm2022/src/v-angular/core/sebgroup-green-angular-src-v-angular-core.mjs +5 -0
  32. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +256 -0
  33. package/esm2022/src/v-angular/dropdown/dropdown-list/index.mjs +2 -0
  34. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +239 -0
  35. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +22 -0
  36. package/esm2022/src/v-angular/dropdown/index.mjs +6 -0
  37. package/esm2022/src/v-angular/dropdown/sebgroup-green-angular-src-v-angular-dropdown.mjs +5 -0
  38. package/esm2022/src/v-angular/dropdown/typeahead/index.mjs +3 -0
  39. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +98 -0
  40. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +85 -0
  41. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +132 -0
  42. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +33 -0
  43. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +37 -0
  44. package/esm2022/src/v-angular/external-link/external-link.module.mjs +18 -0
  45. package/esm2022/src/v-angular/external-link/index.mjs +3 -0
  46. package/esm2022/src/v-angular/external-link/sebgroup-green-angular-src-v-angular-external-link.mjs +5 -0
  47. package/esm2022/src/v-angular/i18n/i18n.json +12 -0
  48. package/esm2022/src/v-angular/i18n/i18n.module.mjs +83 -0
  49. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +89 -0
  50. package/esm2022/src/v-angular/i18n/index.mjs +3 -0
  51. package/esm2022/src/v-angular/i18n/sebgroup-green-angular-src-v-angular-i18n.mjs +5 -0
  52. package/esm2022/src/v-angular/info-circle/index.mjs +3 -0
  53. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +28 -0
  54. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +21 -0
  55. package/esm2022/src/v-angular/info-circle/sebgroup-green-angular-src-v-angular-info-circle.mjs +5 -0
  56. package/esm2022/src/v-angular/input/index.mjs +3 -0
  57. package/esm2022/src/v-angular/input/input.component.mjs +221 -0
  58. package/esm2022/src/v-angular/input/input.module.mjs +32 -0
  59. package/esm2022/src/v-angular/input/sebgroup-green-angular-src-v-angular-input.mjs +5 -0
  60. package/esm2022/src/v-angular/input-mask/config.mjs +9 -0
  61. package/esm2022/src/v-angular/input-mask/constants.mjs +2 -0
  62. package/esm2022/src/v-angular/input-mask/index.mjs +6 -0
  63. package/esm2022/src/v-angular/input-mask/input-mask-format.pipe.mjs +20 -0
  64. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +165 -0
  65. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +35 -0
  66. package/esm2022/src/v-angular/input-mask/input-mask.types.mjs +2 -0
  67. package/esm2022/src/v-angular/input-mask/sebgroup-green-angular-src-v-angular-input-mask.mjs +5 -0
  68. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +190 -0
  69. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +56 -0
  70. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +19 -0
  71. package/esm2022/src/v-angular/modal/index.mjs +6 -0
  72. package/esm2022/src/v-angular/modal/modal.globals.mjs +17 -0
  73. package/esm2022/src/v-angular/modal/modal.module.mjs +40 -0
  74. package/esm2022/src/v-angular/modal/modal.types.mjs +2 -0
  75. package/esm2022/src/v-angular/modal/sebgroup-green-angular-src-v-angular-modal.mjs +5 -0
  76. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +229 -0
  77. package/esm2022/src/v-angular/radio/index.mjs +3 -0
  78. package/esm2022/src/v-angular/radio/radio.component.mjs +130 -0
  79. package/esm2022/src/v-angular/radio/radio.module.mjs +20 -0
  80. package/esm2022/src/v-angular/radio/sebgroup-green-angular-src-v-angular-radio.mjs +5 -0
  81. package/esm2022/src/v-angular/slug/index.mjs +3 -0
  82. package/esm2022/src/v-angular/slug/sebgroup-green-angular-src-v-angular-slug.mjs +5 -0
  83. package/esm2022/src/v-angular/slug/slug.module.mjs +18 -0
  84. package/esm2022/src/v-angular/slug/slug.pipe.mjs +27 -0
  85. package/esm2022/src/v-angular/textarea/index.mjs +3 -0
  86. package/esm2022/src/v-angular/textarea/sebgroup-green-angular-src-v-angular-textarea.mjs +5 -0
  87. package/esm2022/src/v-angular/textarea/textarea.component.mjs +101 -0
  88. package/esm2022/src/v-angular/textarea/textarea.module.mjs +18 -0
  89. package/esm2022/src/v-angular/tooltip/index.mjs +3 -0
  90. package/esm2022/src/v-angular/tooltip/sebgroup-green-angular-src-v-angular-tooltip.mjs +5 -0
  91. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +273 -0
  92. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +18 -0
  93. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +287 -0
  94. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +17 -0
  95. package/esm2022/v-angular/base-control-value-accessor/index.mjs +3 -0
  96. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +25 -0
  97. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +20 -0
  98. package/esm2022/v-angular/breadcrumbs/index.mjs +3 -0
  99. package/esm2022/v-angular/button/button.component.mjs +108 -0
  100. package/esm2022/v-angular/button/button.module.mjs +20 -0
  101. package/esm2022/v-angular/button/index.mjs +3 -0
  102. package/esm2022/v-angular/card/card.component.mjs +11 -0
  103. package/esm2022/v-angular/card/card.module.mjs +18 -0
  104. package/esm2022/v-angular/card/index.mjs +3 -0
  105. package/esm2022/v-angular/checkbox/checkbox.component.mjs +72 -0
  106. package/esm2022/v-angular/checkbox/checkbox.module.mjs +19 -0
  107. package/esm2022/v-angular/checkbox/index.mjs +3 -0
  108. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +256 -0
  109. package/esm2022/v-angular/dropdown/dropdown-list/index.mjs +2 -0
  110. package/esm2022/v-angular/dropdown/dropdown.component.mjs +239 -0
  111. package/esm2022/v-angular/dropdown/dropdown.module.mjs +22 -0
  112. package/esm2022/v-angular/dropdown/index.mjs +6 -0
  113. package/esm2022/v-angular/dropdown/typeahead/index.mjs +3 -0
  114. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +98 -0
  115. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +85 -0
  116. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +132 -0
  117. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +33 -0
  118. package/esm2022/v-angular/i18n/i18n.json +12 -0
  119. package/esm2022/v-angular/i18n/i18n.module.mjs +83 -0
  120. package/esm2022/v-angular/i18n/i18n.test.module.mjs +89 -0
  121. package/esm2022/v-angular/i18n/index.mjs +3 -0
  122. package/esm2022/v-angular/info-circle/index.mjs +3 -0
  123. package/esm2022/v-angular/info-circle/info-circle.component.mjs +28 -0
  124. package/esm2022/v-angular/info-circle/info-circle.module.mjs +21 -0
  125. package/esm2022/v-angular/input/index.mjs +3 -0
  126. package/esm2022/v-angular/input/input.component.mjs +221 -0
  127. package/esm2022/v-angular/input/input.module.mjs +32 -0
  128. package/esm2022/v-angular/input-mask/config.mjs +9 -0
  129. package/esm2022/v-angular/input-mask/constants.mjs +2 -0
  130. package/esm2022/v-angular/input-mask/index.mjs +6 -0
  131. package/esm2022/v-angular/input-mask/input-mask-format.pipe.mjs +20 -0
  132. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +165 -0
  133. package/esm2022/v-angular/input-mask/input-mask.module.mjs +35 -0
  134. package/esm2022/v-angular/input-mask/input-mask.types.mjs +2 -0
  135. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +190 -0
  136. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +56 -0
  137. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +19 -0
  138. package/esm2022/v-angular/modal/index.mjs +6 -0
  139. package/esm2022/v-angular/modal/modal.globals.mjs +17 -0
  140. package/esm2022/v-angular/modal/modal.module.mjs +40 -0
  141. package/esm2022/v-angular/modal/modal.types.mjs +2 -0
  142. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +229 -0
  143. package/esm2022/v-angular/radio/index.mjs +3 -0
  144. package/esm2022/v-angular/radio/radio.component.mjs +130 -0
  145. package/esm2022/v-angular/radio/radio.module.mjs +20 -0
  146. package/esm2022/v-angular/textarea/index.mjs +3 -0
  147. package/esm2022/v-angular/textarea/textarea.component.mjs +101 -0
  148. package/esm2022/v-angular/textarea/textarea.module.mjs +18 -0
  149. package/esm2022/v-angular/tooltip/index.mjs +3 -0
  150. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +273 -0
  151. package/esm2022/v-angular/tooltip/tooltip.module.mjs +18 -0
  152. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs +1 -1
  153. package/fesm2022/sebgroup-green-angular-src-lib-shared.mjs.map +1 -1
  154. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +308 -0
  155. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -0
  156. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +49 -0
  157. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -0
  158. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +131 -0
  159. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -0
  160. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +33 -0
  161. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -0
  162. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +73 -0
  163. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -0
  164. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +94 -0
  165. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -0
  166. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +51 -0
  167. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -0
  168. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +830 -0
  169. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -0
  170. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +58 -0
  171. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -0
  172. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +192 -0
  173. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -0
  174. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +53 -0
  175. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -0
  176. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +226 -0
  177. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -0
  178. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +256 -0
  179. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -0
  180. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +542 -0
  181. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -0
  182. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +153 -0
  183. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -0
  184. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +49 -0
  185. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -0
  186. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +122 -0
  187. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -0
  188. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +295 -0
  189. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -0
  190. package/fesm2022/sebgroup-green-angular.mjs +3106 -14
  191. package/fesm2022/sebgroup-green-angular.mjs.map +1 -1
  192. package/index.d.ts +18 -0
  193. package/package.json +114 -3
  194. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +124 -0
  195. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +7 -0
  196. package/src/v-angular/base-control-value-accessor/index.d.ts +2 -0
  197. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +18 -0
  198. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +10 -0
  199. package/src/v-angular/breadcrumbs/index.d.ts +2 -0
  200. package/src/v-angular/button/button.component.d.ts +62 -0
  201. package/src/v-angular/button/button.module.d.ts +10 -0
  202. package/src/v-angular/button/index.d.ts +2 -0
  203. package/src/v-angular/card/card.component.d.ts +5 -0
  204. package/src/v-angular/card/card.module.d.ts +8 -0
  205. package/src/v-angular/card/index.d.ts +2 -0
  206. package/src/v-angular/character-countdown/character-countdown.directive.d.ts +17 -0
  207. package/src/v-angular/character-countdown/character-countdown.module.d.ts +8 -0
  208. package/src/v-angular/character-countdown/index.d.ts +2 -0
  209. package/src/v-angular/checkbox/checkbox.component.d.ts +27 -0
  210. package/src/v-angular/checkbox/checkbox.module.d.ts +9 -0
  211. package/src/v-angular/checkbox/index.d.ts +2 -0
  212. package/src/v-angular/core/core.globals.d.ts +13 -0
  213. package/src/v-angular/core/core.utils.d.ts +22 -0
  214. package/src/v-angular/core/index.d.ts +2 -0
  215. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +89 -0
  216. package/src/v-angular/dropdown/dropdown-list/index.d.ts +1 -0
  217. package/src/v-angular/dropdown/dropdown.component.d.ts +99 -0
  218. package/src/v-angular/dropdown/dropdown.module.d.ts +12 -0
  219. package/src/v-angular/dropdown/index.d.ts +5 -0
  220. package/src/v-angular/dropdown/typeahead/index.d.ts +2 -0
  221. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +34 -0
  222. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +34 -0
  223. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +59 -0
  224. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +11 -0
  225. package/src/v-angular/external-link/external-link.directive.d.ts +17 -0
  226. package/src/v-angular/external-link/external-link.module.d.ts +8 -0
  227. package/src/v-angular/external-link/index.d.ts +2 -0
  228. package/src/v-angular/i18n/i18n.module.d.ts +15 -0
  229. package/src/v-angular/i18n/i18n.test.module.d.ts +27 -0
  230. package/src/v-angular/i18n/index.d.ts +2 -0
  231. package/src/v-angular/info-circle/index.d.ts +2 -0
  232. package/src/v-angular/info-circle/info-circle.component.d.ts +16 -0
  233. package/src/v-angular/info-circle/info-circle.module.d.ts +10 -0
  234. package/src/v-angular/input/index.d.ts +2 -0
  235. package/src/v-angular/input/input.component.d.ts +90 -0
  236. package/src/v-angular/input/input.module.d.ts +11 -0
  237. package/src/v-angular/input-mask/config.d.ts +6 -0
  238. package/src/v-angular/input-mask/constants.d.ts +2 -0
  239. package/src/v-angular/input-mask/index.d.ts +5 -0
  240. package/src/v-angular/input-mask/input-mask-format.pipe.d.ts +8 -0
  241. package/src/v-angular/input-mask/input-mask.directive.d.ts +39 -0
  242. package/src/v-angular/input-mask/input-mask.module.d.ts +11 -0
  243. package/src/v-angular/input-mask/input-mask.types.d.ts +20 -0
  244. package/src/v-angular/modal/dialog/dialog.component.d.ts +55 -0
  245. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +24 -0
  246. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +6 -0
  247. package/src/v-angular/modal/index.d.ts +5 -0
  248. package/src/v-angular/modal/modal.globals.d.ts +13 -0
  249. package/src/v-angular/modal/modal.module.d.ts +13 -0
  250. package/src/v-angular/modal/modal.types.d.ts +5 -0
  251. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +76 -0
  252. package/src/v-angular/radio/index.d.ts +2 -0
  253. package/src/v-angular/radio/radio.component.d.ts +48 -0
  254. package/src/v-angular/radio/radio.module.d.ts +9 -0
  255. package/src/v-angular/slug/index.d.ts +2 -0
  256. package/src/v-angular/slug/slug.module.d.ts +8 -0
  257. package/src/v-angular/slug/slug.pipe.d.ts +12 -0
  258. package/src/v-angular/textarea/index.d.ts +2 -0
  259. package/src/v-angular/textarea/textarea.component.d.ts +44 -0
  260. package/src/v-angular/textarea/textarea.module.d.ts +8 -0
  261. package/src/v-angular/tooltip/index.d.ts +2 -0
  262. package/src/v-angular/tooltip/tooltip.directive.d.ts +106 -0
  263. package/src/v-angular/tooltip/tooltip.module.d.ts +8 -0
  264. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +124 -0
  265. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +7 -0
  266. package/v-angular/base-control-value-accessor/index.d.ts +2 -0
  267. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +18 -0
  268. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +10 -0
  269. package/v-angular/breadcrumbs/index.d.ts +2 -0
  270. package/v-angular/button/button.component.d.ts +62 -0
  271. package/v-angular/button/button.module.d.ts +10 -0
  272. package/v-angular/button/index.d.ts +2 -0
  273. package/v-angular/card/card.component.d.ts +5 -0
  274. package/v-angular/card/card.module.d.ts +8 -0
  275. package/v-angular/card/index.d.ts +2 -0
  276. package/v-angular/checkbox/checkbox.component.d.ts +27 -0
  277. package/v-angular/checkbox/checkbox.module.d.ts +9 -0
  278. package/v-angular/checkbox/index.d.ts +2 -0
  279. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +89 -0
  280. package/v-angular/dropdown/dropdown-list/index.d.ts +1 -0
  281. package/v-angular/dropdown/dropdown.component.d.ts +99 -0
  282. package/v-angular/dropdown/dropdown.module.d.ts +12 -0
  283. package/v-angular/dropdown/index.d.ts +5 -0
  284. package/v-angular/dropdown/typeahead/index.d.ts +2 -0
  285. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +34 -0
  286. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +34 -0
  287. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +59 -0
  288. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +11 -0
  289. package/v-angular/i18n/i18n.module.d.ts +15 -0
  290. package/v-angular/i18n/i18n.test.module.d.ts +27 -0
  291. package/v-angular/i18n/index.d.ts +2 -0
  292. package/v-angular/info-circle/index.d.ts +2 -0
  293. package/v-angular/info-circle/info-circle.component.d.ts +16 -0
  294. package/v-angular/info-circle/info-circle.module.d.ts +10 -0
  295. package/v-angular/input/index.d.ts +2 -0
  296. package/v-angular/input/input.component.d.ts +90 -0
  297. package/v-angular/input/input.module.d.ts +11 -0
  298. package/v-angular/input-mask/config.d.ts +6 -0
  299. package/v-angular/input-mask/constants.d.ts +2 -0
  300. package/v-angular/input-mask/index.d.ts +5 -0
  301. package/v-angular/input-mask/input-mask-format.pipe.d.ts +8 -0
  302. package/v-angular/input-mask/input-mask.directive.d.ts +39 -0
  303. package/v-angular/input-mask/input-mask.module.d.ts +11 -0
  304. package/v-angular/input-mask/input-mask.types.d.ts +20 -0
  305. package/v-angular/modal/dialog/dialog.component.d.ts +55 -0
  306. package/v-angular/modal/fold-out/fold-out.component.d.ts +24 -0
  307. package/v-angular/modal/fold-out/fold-out.directive.d.ts +6 -0
  308. package/v-angular/modal/index.d.ts +5 -0
  309. package/v-angular/modal/modal.globals.d.ts +13 -0
  310. package/v-angular/modal/modal.module.d.ts +13 -0
  311. package/v-angular/modal/modal.types.d.ts +5 -0
  312. package/v-angular/modal/slide-out/slide-out.component.d.ts +76 -0
  313. package/v-angular/radio/index.d.ts +2 -0
  314. package/v-angular/radio/radio.component.d.ts +48 -0
  315. package/v-angular/radio/radio.module.d.ts +9 -0
  316. package/v-angular/textarea/index.d.ts +2 -0
  317. package/v-angular/textarea/textarea.component.d.ts +44 -0
  318. package/v-angular/textarea/textarea.module.d.ts +8 -0
  319. package/v-angular/tooltip/index.d.ts +2 -0
  320. package/v-angular/tooltip/tooltip.directive.d.ts +106 -0
  321. package/v-angular/tooltip/tooltip.module.d.ts +8 -0
@@ -0,0 +1,19 @@
1
+ import { Directive, HostBinding } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export class NgvFoldOutOptionDirective {
4
+ constructor() {
5
+ this.baseClass = true;
6
+ }
7
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutOptionDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
8
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "16.2.12", type: NgvFoldOutOptionDirective, selector: "[ngvOption]", host: { properties: { "class.sdv-field-dropdown__options__label": "this.baseClass" } }, ngImport: i0 }); }
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvFoldOutOptionDirective, decorators: [{
11
+ type: Directive,
12
+ args: [{
13
+ selector: '[ngvOption]',
14
+ }]
15
+ }], propDecorators: { baseClass: [{
16
+ type: HostBinding,
17
+ args: ['class.sdv-field-dropdown__options__label']
18
+ }] } });
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9sZC1vdXQuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvZm9sZC1vdXQvZm9sZC1vdXQuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBOztBQUt0RCxNQUFNLE9BQU8seUJBQXlCO0lBSHRDO1FBSTJELGNBQVMsR0FBRyxJQUFJLENBQUE7S0FDMUU7K0dBRlkseUJBQXlCO21HQUF6Qix5QkFBeUI7OzRGQUF6Qix5QkFBeUI7a0JBSHJDLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLGFBQWE7aUJBQ3hCOzhCQUUwRCxTQUFTO3NCQUFqRSxXQUFXO3VCQUFDLDBDQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpcmVjdGl2ZSwgSG9zdEJpbmRpbmcgfSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5ARGlyZWN0aXZlKHtcbiAgc2VsZWN0b3I6ICdbbmd2T3B0aW9uXScsXG59KVxuZXhwb3J0IGNsYXNzIE5ndkZvbGRPdXRPcHRpb25EaXJlY3RpdmUge1xuICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNkdi1maWVsZC1kcm9wZG93bl9fb3B0aW9uc19fbGFiZWwnKSBiYXNlQ2xhc3MgPSB0cnVlXG59XG4iXX0=
@@ -0,0 +1,6 @@
1
+ export * from './modal.module';
2
+ export * from './dialog/dialog.component';
3
+ export * from './slide-out/slide-out.component';
4
+ export * from './fold-out/fold-out.component';
5
+ export * from './fold-out/fold-out.directive';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9tb2RhbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGdCQUFnQixDQUFBO0FBQzlCLGNBQWMsMkJBQTJCLENBQUE7QUFDekMsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLCtCQUErQixDQUFBO0FBQzdDLGNBQWMsK0JBQStCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL21vZGFsLm1vZHVsZSdcbmV4cG9ydCAqIGZyb20gJy4vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL3NsaWRlLW91dC9zbGlkZS1vdXQuY29tcG9uZW50J1xuZXhwb3J0ICogZnJvbSAnLi9mb2xkLW91dC9mb2xkLW91dC5jb21wb25lbnQnXG5leHBvcnQgKiBmcm9tICcuL2ZvbGQtb3V0L2ZvbGQtb3V0LmRpcmVjdGl2ZSdcbiJdfQ==
@@ -0,0 +1,17 @@
1
+ (() => {
2
+ // Make sure there is an incremental ID each component can use
3
+ if (typeof window !== 'undefined' && !window.ngv) {
4
+ window.ngv = {
5
+ ids: { default: -1 },
6
+ nextId(namespace = 'default') {
7
+ let id = this.ids[namespace] || 0;
8
+ if (typeof this.ids[namespace] === 'number')
9
+ id++;
10
+ this.ids[namespace] = id;
11
+ return namespace === 'default' ? `ngv-${id}` : `ngv-${namespace}-${id}`;
12
+ },
13
+ };
14
+ }
15
+ })();
16
+ export {};
17
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwuZ2xvYmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL21vZGFsL21vZGFsLmdsb2JhbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsQ0FBQyxHQUFHLEVBQUU7SUFDSiw4REFBOEQ7SUFDOUQsSUFBSSxPQUFPLE1BQU0sS0FBSyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxFQUFFO1FBQ2hELE1BQU0sQ0FBQyxHQUFHLEdBQUc7WUFDWCxHQUFHLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDcEIsTUFBTSxDQUFDLFNBQVMsR0FBRyxTQUFTO2dCQUMxQixJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsSUFBSSxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssUUFBUTtvQkFBRSxFQUFFLEVBQUUsQ0FBQztnQkFDbEQsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ3pCLE9BQU8sU0FBUyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxTQUFTLElBQUksRUFBRSxFQUFFLENBQUM7WUFDMUUsQ0FBQztTQUNGLENBQUM7S0FDSDtBQUNILENBQUMsQ0FBQyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBXZSBtdXN0IGZvcmNlIHRzYyB0byBpbnRlcnByZXQgdGhpcyBmaWxlIGFzIGEgbW9kdWxlLCByZXNvbHZlc1xuLy8gXCJBdWdtZW50YXRpb25zIGZvciB0aGUgZ2xvYmFsIHNjb3BlIGNhbiBvbmx5IGJlIGRpcmVjdGx5IG5lc3RlZCBpbiBleHRlcm5hbCBtb2R1bGVzIG9yIGFtYmllbnQgbW9kdWxlIGRlY2xhcmF0aW9ucy5cIlxuZXhwb3J0IHt9O1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIC8qKiBDb3VudGVyIGZvciB1bmlxdWUgaWRlbnRpZmllcnMgKi9cbiAgICBuZ3Y6IHtcbiAgICAgIGlkczogeyBbbmFtZXNwYWNlOiBzdHJpbmddOiBudW1iZXI7IGRlZmF1bHQ6IG51bWJlciB9O1xuICAgICAgbmV4dElkOiAobmFtZXNwYWNlPzogc3RyaW5nKSA9PiBzdHJpbmc7XG4gICAgfTtcbiAgfVxufVxuXG4oKCkgPT4ge1xuICAvLyBNYWtlIHN1cmUgdGhlcmUgaXMgYW4gaW5jcmVtZW50YWwgSUQgZWFjaCBjb21wb25lbnQgY2FuIHVzZVxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgIXdpbmRvdy5uZ3YpIHtcbiAgICB3aW5kb3cubmd2ID0ge1xuICAgICAgaWRzOiB7IGRlZmF1bHQ6IC0xIH0sXG4gICAgICBuZXh0SWQobmFtZXNwYWNlID0gJ2RlZmF1bHQnKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IGlkID0gdGhpcy5pZHNbbmFtZXNwYWNlXSB8fCAwO1xuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWRzW25hbWVzcGFjZV0gPT09ICdudW1iZXInKSBpZCsrO1xuICAgICAgICB0aGlzLmlkc1tuYW1lc3BhY2VdID0gaWQ7XG4gICAgICAgIHJldHVybiBuYW1lc3BhY2UgPT09ICdkZWZhdWx0JyA/IGBuZ3YtJHtpZH1gIDogYG5ndi0ke25hbWVzcGFjZX0tJHtpZH1gO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59KSgpO1xuIl19
@@ -0,0 +1,40 @@
1
+ import './modal.globals';
2
+ import { CommonModule } from '@angular/common';
3
+ import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
4
+ import { NgvDialogComponent } from './dialog/dialog.component';
5
+ import { NgvFoldOutComponent } from './fold-out/fold-out.component';
6
+ import { NgvFoldOutOptionDirective } from './fold-out/fold-out.directive';
7
+ import { NgvSlideOutComponent } from './slide-out/slide-out.component';
8
+ import { NgvButtonModule } from '@sebgroup/green-angular/src/v-angular/button';
9
+ import * as i0 from "@angular/core";
10
+ export class NgvModalModule {
11
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
12
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, declarations: [NgvDialogComponent,
13
+ NgvSlideOutComponent,
14
+ NgvFoldOutComponent,
15
+ NgvFoldOutOptionDirective], imports: [CommonModule, NgvButtonModule], exports: [NgvDialogComponent,
16
+ NgvSlideOutComponent,
17
+ NgvFoldOutComponent,
18
+ NgvFoldOutOptionDirective] }); }
19
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, imports: [CommonModule, NgvButtonModule] }); }
20
+ }
21
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvModalModule, decorators: [{
22
+ type: NgModule,
23
+ args: [{
24
+ imports: [CommonModule, NgvButtonModule],
25
+ declarations: [
26
+ NgvDialogComponent,
27
+ NgvSlideOutComponent,
28
+ NgvFoldOutComponent,
29
+ NgvFoldOutOptionDirective,
30
+ ],
31
+ exports: [
32
+ NgvDialogComponent,
33
+ NgvSlideOutComponent,
34
+ NgvFoldOutComponent,
35
+ NgvFoldOutOptionDirective,
36
+ ],
37
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
38
+ }]
39
+ }] });
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvbW9kYWwubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8saUJBQWlCLENBQUE7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxRQUFRLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDaEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDOUQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDbkUsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sK0JBQStCLENBQUE7QUFDekUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFDdEUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDhDQUE4QyxDQUFBOztBQWtCOUUsTUFBTSxPQUFPLGNBQWM7K0dBQWQsY0FBYztnSEFBZCxjQUFjLGlCQWJ2QixrQkFBa0I7WUFDbEIsb0JBQW9CO1lBQ3BCLG1CQUFtQjtZQUNuQix5QkFBeUIsYUFMakIsWUFBWSxFQUFFLGVBQWUsYUFRckMsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixtQkFBbUI7WUFDbkIseUJBQXlCO2dIQUloQixjQUFjLFlBZmYsWUFBWSxFQUFFLGVBQWU7OzRGQWU1QixjQUFjO2tCQWhCMUIsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxZQUFZLEVBQUUsZUFBZSxDQUFDO29CQUN4QyxZQUFZLEVBQUU7d0JBQ1osa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ1Asa0JBQWtCO3dCQUNsQixvQkFBb0I7d0JBQ3BCLG1CQUFtQjt3QkFDbkIseUJBQXlCO3FCQUMxQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQztpQkFDbEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgJy4vbW9kYWwuZ2xvYmFscydcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbidcbmltcG9ydCB7IE5nTW9kdWxlLCBDVVNUT01fRUxFTUVOVFNfU0NIRU1BIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7IE5ndkRpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4vZGlhbG9nL2RpYWxvZy5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ3ZGb2xkT3V0Q29tcG9uZW50IH0gZnJvbSAnLi9mb2xkLW91dC9mb2xkLW91dC5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ3ZGb2xkT3V0T3B0aW9uRGlyZWN0aXZlIH0gZnJvbSAnLi9mb2xkLW91dC9mb2xkLW91dC5kaXJlY3RpdmUnXG5pbXBvcnQgeyBOZ3ZTbGlkZU91dENvbXBvbmVudCB9IGZyb20gJy4vc2xpZGUtb3V0L3NsaWRlLW91dC5jb21wb25lbnQnXG5pbXBvcnQgeyBOZ3ZCdXR0b25Nb2R1bGUgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvdi1hbmd1bGFyL2J1dHRvbidcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgTmd2QnV0dG9uTW9kdWxlXSxcbiAgZGVjbGFyYXRpb25zOiBbXG4gICAgTmd2RGlhbG9nQ29tcG9uZW50LFxuICAgIE5ndlNsaWRlT3V0Q29tcG9uZW50LFxuICAgIE5ndkZvbGRPdXRDb21wb25lbnQsXG4gICAgTmd2Rm9sZE91dE9wdGlvbkRpcmVjdGl2ZSxcbiAgXSxcbiAgZXhwb3J0czogW1xuICAgIE5ndkRpYWxvZ0NvbXBvbmVudCxcbiAgICBOZ3ZTbGlkZU91dENvbXBvbmVudCxcbiAgICBOZ3ZGb2xkT3V0Q29tcG9uZW50LFxuICAgIE5ndkZvbGRPdXRPcHRpb25EaXJlY3RpdmUsXG4gIF0sXG4gIHNjaGVtYXM6IFtDVVNUT01fRUxFTUVOVFNfU0NIRU1BXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd2TW9kYWxNb2R1bGUge31cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kYWwudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9tb2RhbC9tb2RhbC50eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBEaWFsb2dCdXR0b25zIHtcbiAgcG9zaXRpdmU/OiBzdHJpbmcgfCBudWxsO1xuICBuZXV0cmFsPzogc3RyaW5nIHwgbnVsbDtcbiAgbmVnYXRpdmU/OiBzdHJpbmcgfCBudWxsO1xufVxuIl19
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci1zcmMtdi1hbmd1bGFyLW1vZGFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvc2ViZ3JvdXAtZ3JlZW4tYW5ndWxhci1zcmMtdi1hbmd1bGFyLW1vZGFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,229 @@
1
+ import { Component, ElementRef, EventEmitter, HostListener, Input, Output, ViewChild, } from '@angular/core';
2
+ import { trigger, query, style, animate, transition, group, } from '@angular/animations';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@angular/common";
5
+ /** Modal slide-out component based on vanilla pattern library design.
6
+ * The modal title can be set using the @Input heading, and will automatically be translated if
7
+ * the string matches a cms key.
8
+ * Content can be injected into the body of the slide-out by either setting the @Input content to any type of
9
+ * markdown, or using content projection (adding content between the `ngv-slideout-modal`-start and end tag).
10
+ * If the content needs to stretch outside the normal padded area, add the attribute `slot="outside-content"` to the
11
+ * projected content main element.
12
+ * Test hooks:
13
+ * The modal hook defaults to 'slideout' but is customizeable.
14
+ * The closing button can be selected using 'slideout-close'.
15
+ * The backdrop is selectable using 'slideout-backdrop'.
16
+ */
17
+ export class NgvSlideOutComponent {
18
+ /** @internal */
19
+ get fromLeft() {
20
+ return this.side === 'left';
21
+ }
22
+ /** Buttons are defined as a key-value pair where key is one of "positive|neutral|negative" and value is the button label. */
23
+ set buttons(buttons) {
24
+ this._buttons = buttons;
25
+ }
26
+ constructor(host) {
27
+ this.host = host;
28
+ /** Sets from which side the modal should open. */
29
+ this.side = 'right';
30
+ /** Defines the default visibility state of the slide-out. */
31
+ this.shown = false;
32
+ /** Defines the default visibility state of the modal. */
33
+ this.initiallyShown = false;
34
+ /** Sets whether it is possible to close the modal from the top right corner. */
35
+ this.closable = true;
36
+ /** Allows the modal content to decide the width of the modal. */
37
+ this.autoWidth = false;
38
+ /** Special property used for selecting DOM elements during automated UI testing. */
39
+ this.thook = 'slideout';
40
+ /** Will emit true on closing event. */
41
+ this.ngvCloseEvent = new EventEmitter();
42
+ this.ngvPositiveEvent = new EventEmitter();
43
+ this.ngvNeutralEvent = new EventEmitter();
44
+ this.ngvNegativeEvent = new EventEmitter();
45
+ // appends methods for opening and closing modal to native element
46
+ this.host.nativeElement.open = this.open.bind(this);
47
+ this.host.nativeElement.close = this.close.bind(this);
48
+ }
49
+ ngOnInit() {
50
+ this.shown = this.initiallyShown;
51
+ if (this.shown)
52
+ this.limitFocusable();
53
+ }
54
+ onAction(event, action) {
55
+ event.preventDefault();
56
+ switch (action) {
57
+ case 'positive':
58
+ this.ngvPositiveEvent.emit();
59
+ break;
60
+ case 'neutral':
61
+ this.ngvNeutralEvent.emit();
62
+ break;
63
+ case 'negative':
64
+ this.ngvNegativeEvent.emit();
65
+ break;
66
+ }
67
+ this.close(event, 'action');
68
+ }
69
+ /**
70
+ * Called on a modal element. Opens the modal and sets focus to the last focusable element in the modal.
71
+ *
72
+ * @param opener - reference to last focused element before opening modal
73
+ * @returns - true
74
+ */
75
+ open(opener) {
76
+ this.shown = true;
77
+ this.previous = opener || document.activeElement;
78
+ this.limitFocusable();
79
+ return true;
80
+ }
81
+ /**
82
+ * Called on a modal element. Closes the modal and emits a `ngvCloseEvent`. Sets focus to the lats focused element if an element was sent in to open function.
83
+ *
84
+ * @param event
85
+ * @param initiator
86
+ */
87
+ close(event, initiator) {
88
+ if (initiator === 'host' &&
89
+ event instanceof MouseEvent &&
90
+ event.target !== event.currentTarget)
91
+ return;
92
+ if (this.shown && this.closable) {
93
+ this.ngvCloseEvent.emit(this.shown);
94
+ this.shown = false;
95
+ window.setTimeout(() => {
96
+ if (this.previous)
97
+ this.previous.focus();
98
+ this.previous = undefined;
99
+ });
100
+ }
101
+ }
102
+ /** @internal */
103
+ focusTrap(event) {
104
+ if (event.key !== 'Tab')
105
+ return;
106
+ if (event.shiftKey) {
107
+ // shift + tab
108
+ if (this.lastFocusable &&
109
+ document.activeElement === this.firstFocusable) {
110
+ this.lastFocusable.focus();
111
+ event.preventDefault();
112
+ }
113
+ }
114
+ else {
115
+ // tab
116
+ if (this.firstFocusable &&
117
+ document.activeElement === this.lastFocusable) {
118
+ this.firstFocusable.focus();
119
+ event.preventDefault();
120
+ }
121
+ }
122
+ }
123
+ limitFocusable() {
124
+ window.setTimeout(() => {
125
+ if (!this.slideOutRef)
126
+ return;
127
+ const focusable = this.slideOutRef.nativeElement.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
128
+ this.firstFocusable = focusable[0];
129
+ this.lastFocusable = focusable[focusable.length - 1];
130
+ if (this.lastFocusable)
131
+ this.lastFocusable.focus();
132
+ });
133
+ }
134
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvSlideOutComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
135
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvSlideOutComponent, selector: "ngv-slideout-modal", inputs: { side: "side", shown: "shown", initiallyShown: "initiallyShown", heading: "heading", title: "title", content: "content", closable: "closable", autoWidth: "autoWidth", thook: "thook", buttons: "buttons" }, outputs: { ngvCloseEvent: "ngvCloseEvent", ngvPositiveEvent: "ngvPositiveEvent", ngvNeutralEvent: "ngvNeutralEvent", ngvNegativeEvent: "ngvNegativeEvent" }, host: { listeners: { "click": "close($event,\"host\")", "document:keydown.escape": "close($event)", "keydown": "focusTrap($event)" } }, viewQueries: [{ propertyName: "slideOutRef", first: true, predicate: ["slideOut"], descendants: true }], ngImport: i0, template: "<ng-container *ngIf=\"shown\">\n <div\n [ngClass]=\"{\n 'gds-slide-out--left': fromLeft,\n 'gds-slide-out--right': !fromLeft\n }\"\n *transloco=\"let t\"\n [class.-active]=\"shown\"\n [attr.data-thook]=\"thook\"\n [attr.aria-hidden]=\"!shown\"\n [@modalAnimation]\n >\n <div\n #slideOut\n class=\"gds-slide-out\"\n [class.auto-width]=\"autoWidth\"\n [class.entered]=\"shown\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"sdv-modal-title\"\n aria-describedby=\"sdv-modal-body\"\n >\n <header class=\"gds-slide-out__header\">\n <h3 class=\"gds-slide-out__heading\" id=\"sdv-modal-title\">\n {{ heading || title || '' }}\n </h3>\n <button\n data-testid=\"modal-close-button\"\n class=\"close\"\n (click)=\"this.close()\"\n >\n <span className=\"sr-only\">Close</span>\n <i></i>\n </button>\n </header>\n\n <section id=\"sdv-modal-body\">\n <div class=\"gds-slide-out__content hide-if-empty\">\n <div *ngIf=\"content\" [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"[slot='outside-content']\"></ng-content>\n </section>\n\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"danger\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n\n <button\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n </div>\n\n <div\n class=\"gds-backdrop\"\n data-thook=\"slideout-backdrop\"\n (click)=\"close()\"\n ></div>\n </div>\n</ng-container>\n", styles: [":host .gds-slide-out{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:fixed;height:100dvh;max-width:512px;min-height:-webkit-fill-available;min-height:-moz-available;min-height:stretch;right:0;top:0;transition:transform .35s cubic-bezier(.33,1,.68,1);transform:translate(100%);z-index:1050}:host .gds-slide-out>.header,:host .gds-slide-out>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .gds-slide-out>.header h3,:host .gds-slide-out>.header .h3,:host .gds-slide-out>header h3,:host .gds-slide-out>header .h3{margin-bottom:0;margin-top:0}:host .gds-slide-out>.header h3+.close,:host .gds-slide-out>.header .h3+.close,:host .gds-slide-out>header h3+.close,:host .gds-slide-out>header .h3+.close{margin:-7px}:host .gds-slide-out>.body{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out>.body p{margin-bottom:0;margin-top:0}:host .gds-slide-out>.footer,:host .gds-slide-out>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .gds-slide-out>.footer,:host .gds-slide-out>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-left:.75rem}}:host .gds-slide-out.is-entering,:host .gds-slide-out.entered{transform:translate(0)}:host .gds-slide-out.is-exiting{transform:translate(100%)}:host .gds-slide-out.large{max-width:720px}:host .gds-slide-out>.body{flex:1 0}:host .gds-slide-out.left{left:0}:host .gds-slide-out.gds-slide-out--768{max-width:48rem}:host .gds-slide-out.gds-slide-out--960{max-width:60rem}:host .gds-slide-out.gds-slide-out--768 header,:host .gds-slide-out.gds-slide-out--960 header{padding:1.5rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 .body,:host .gds-slide-out.gds-slide-out--960 .body{padding:2rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 footer,:host .gds-slide-out.gds-slide-out--960 footer{padding:1rem 2rem 2rem}:host .gds-slide-out.auto-width{width:auto;max-width:initial}:host .hide-if-empty:empty{display:none}:host .gds-backdrop{background:#00000059;inset:0;position:fixed;z-index:1040;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .gds-backdrop--transparent{opacity:0}:host .gds-backdrop--transparent.entered,:host .gds-backdrop--transparent.is-entering{opacity:1}:host .gds-backdrop--transparent.is-exiting{opacity:0}:host .gds-slide-out__content{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out__content p{margin-bottom:0;margin-top:0}:host #sdv-modal-body{flex:1}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: [
136
+ trigger('modalAnimation', [
137
+ transition(':enter', [
138
+ query('.gds-slide-out', style({ transform: 'translateX(100%)' }), {
139
+ optional: true,
140
+ }),
141
+ query('.gds-backdrop, [role=dialog]', style({ opacity: '0' }), {
142
+ optional: true,
143
+ }),
144
+ group([
145
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(0)' })), { optional: true }),
146
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '1' })), { optional: true }),
147
+ ]),
148
+ ]),
149
+ transition(':leave', [
150
+ query('.gds-slide-out', style({ transform: 'translateX(0)' }), {
151
+ optional: true,
152
+ }),
153
+ group([
154
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(100%)' })), { optional: true }),
155
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '0' })), { optional: true }),
156
+ ]),
157
+ ]),
158
+ ]),
159
+ ] }); }
160
+ }
161
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvSlideOutComponent, decorators: [{
162
+ type: Component,
163
+ args: [{ selector: 'ngv-slideout-modal', animations: [
164
+ trigger('modalAnimation', [
165
+ transition(':enter', [
166
+ query('.gds-slide-out', style({ transform: 'translateX(100%)' }), {
167
+ optional: true,
168
+ }),
169
+ query('.gds-backdrop, [role=dialog]', style({ opacity: '0' }), {
170
+ optional: true,
171
+ }),
172
+ group([
173
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(0)' })), { optional: true }),
174
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '1' })), { optional: true }),
175
+ ]),
176
+ ]),
177
+ transition(':leave', [
178
+ query('.gds-slide-out', style({ transform: 'translateX(0)' }), {
179
+ optional: true,
180
+ }),
181
+ group([
182
+ query('.gds-slide-out', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ transform: 'translateX(100%)' })), { optional: true }),
183
+ query('.gds-backdrop, [role=dialog]', animate('350ms cubic-bezier(0.33, 1, 0.68, 1)', style({ opacity: '0' })), { optional: true }),
184
+ ]),
185
+ ]),
186
+ ]),
187
+ ], template: "<ng-container *ngIf=\"shown\">\n <div\n [ngClass]=\"{\n 'gds-slide-out--left': fromLeft,\n 'gds-slide-out--right': !fromLeft\n }\"\n *transloco=\"let t\"\n [class.-active]=\"shown\"\n [attr.data-thook]=\"thook\"\n [attr.aria-hidden]=\"!shown\"\n [@modalAnimation]\n >\n <div\n #slideOut\n class=\"gds-slide-out\"\n [class.auto-width]=\"autoWidth\"\n [class.entered]=\"shown\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-labelledby=\"sdv-modal-title\"\n aria-describedby=\"sdv-modal-body\"\n >\n <header class=\"gds-slide-out__header\">\n <h3 class=\"gds-slide-out__heading\" id=\"sdv-modal-title\">\n {{ heading || title || '' }}\n </h3>\n <button\n data-testid=\"modal-close-button\"\n class=\"close\"\n (click)=\"this.close()\"\n >\n <span className=\"sr-only\">Close</span>\n <i></i>\n </button>\n </header>\n\n <section id=\"sdv-modal-body\">\n <div class=\"gds-slide-out__content hide-if-empty\">\n <div *ngIf=\"content\" [innerHtml]=\"content\"></div>\n <ng-content></ng-content>\n </div>\n <ng-content select=\"[slot='outside-content']\"></ng-content>\n </section>\n\n <footer class=\"sdv-modal-dialog__actions\">\n <button\n class=\"danger\"\n type=\"reset\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.negative || 'negative')\"\n (click)=\"onAction($event, 'negative')\"\n (keydown.enter)=\"onAction($event, 'negative')\"\n *ngIf=\"_buttons && _buttons.negative\"\n >\n {{ t(_buttons.negative) }}\n </button>\n\n <button\n class=\"secondary\"\n type=\"button\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.neutral || 'neutral')\"\n (click)=\"onAction($event, 'neutral')\"\n (keydown.enter)=\"onAction($event, 'neutral')\"\n *ngIf=\"_buttons && _buttons.neutral\"\n >\n {{ t(_buttons.neutral) }}\n </button>\n\n <button\n type=\"submit\"\n [attr.data-thook]=\"'dialog-' + (_buttons?.positive || 'positive')\"\n (click)=\"onAction($event, 'positive')\"\n (keydown.enter)=\"onAction($event, 'positive')\"\n *ngIf=\"_buttons && _buttons.positive\"\n >\n {{ t(_buttons.positive) }}\n </button>\n </footer>\n </div>\n\n <div\n class=\"gds-backdrop\"\n data-thook=\"slideout-backdrop\"\n (click)=\"close()\"\n ></div>\n </div>\n</ng-container>\n", styles: [":host .gds-slide-out{background:var(--sg-modal-background);display:flex;flex-direction:column;box-shadow:var(--sg-modal-box-shadow);position:absolute;width:100%;z-index:var(--sg-z-index-modal);position:fixed;height:100dvh;max-width:512px;min-height:-webkit-fill-available;min-height:-moz-available;min-height:stretch;right:0;top:0;transition:transform .35s cubic-bezier(.33,1,.68,1);transform:translate(100%);z-index:1050}:host .gds-slide-out>.header,:host .gds-slide-out>header{padding:1rem;border-bottom:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--sg-border-color);display:inline-flex;justify-content:space-between;align-items:center;width:100%}:host .gds-slide-out>.header h3,:host .gds-slide-out>.header .h3,:host .gds-slide-out>header h3,:host .gds-slide-out>header .h3{margin-bottom:0;margin-top:0}:host .gds-slide-out>.header h3+.close,:host .gds-slide-out>.header .h3+.close,:host .gds-slide-out>header h3+.close,:host .gds-slide-out>header .h3+.close{margin:-7px}:host .gds-slide-out>.body{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out>.body p{margin-bottom:0;margin-top:0}:host .gds-slide-out>.footer,:host .gds-slide-out>footer{padding:1rem;width:100%}@media (min-width: 36em){:host .gds-slide-out>.footer,:host .gds-slide-out>footer{display:flex;justify-content:flex-end}}@media (max-width: 35.98em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-top:.75rem}}@media (min-width: 36em){:host .gds-slide-out>.footer button+button,:host .gds-slide-out>.footer button+.button,:host .gds-slide-out>.footer .button+button,:host .gds-slide-out>.footer .button+.button,:host .gds-slide-out>footer button+button,:host .gds-slide-out>footer button+.button,:host .gds-slide-out>footer .button+button,:host .gds-slide-out>footer .button+.button{margin-left:.75rem}}:host .gds-slide-out.is-entering,:host .gds-slide-out.entered{transform:translate(0)}:host .gds-slide-out.is-exiting{transform:translate(100%)}:host .gds-slide-out.large{max-width:720px}:host .gds-slide-out>.body{flex:1 0}:host .gds-slide-out.left{left:0}:host .gds-slide-out.gds-slide-out--768{max-width:48rem}:host .gds-slide-out.gds-slide-out--960{max-width:60rem}:host .gds-slide-out.gds-slide-out--768 header,:host .gds-slide-out.gds-slide-out--960 header{padding:1.5rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 .body,:host .gds-slide-out.gds-slide-out--960 .body{padding:2rem 2rem 1rem}:host .gds-slide-out.gds-slide-out--768 footer,:host .gds-slide-out.gds-slide-out--960 footer{padding:1rem 2rem 2rem}:host .gds-slide-out.auto-width{width:auto;max-width:initial}:host .hide-if-empty:empty{display:none}:host .gds-backdrop{background:#00000059;inset:0;position:fixed;z-index:1040;display:block;transition:opacity .5s cubic-bezier(.33,1,.68,1)}:host .gds-backdrop--transparent{opacity:0}:host .gds-backdrop--transparent.entered,:host .gds-backdrop--transparent.is-entering{opacity:1}:host .gds-backdrop--transparent.is-exiting{opacity:0}:host .gds-slide-out__content{padding:1rem;overflow:auto;width:100%}:host .gds-slide-out__content p{margin-bottom:0;margin-top:0}:host #sdv-modal-body{flex:1}\n"] }]
188
+ }], ctorParameters: function () { return [{ type: i0.ElementRef }]; }, propDecorators: { slideOutRef: [{
189
+ type: ViewChild,
190
+ args: ['slideOut']
191
+ }], side: [{
192
+ type: Input
193
+ }], shown: [{
194
+ type: Input
195
+ }], initiallyShown: [{
196
+ type: Input
197
+ }], heading: [{
198
+ type: Input
199
+ }], title: [{
200
+ type: Input
201
+ }], content: [{
202
+ type: Input
203
+ }], closable: [{
204
+ type: Input
205
+ }], autoWidth: [{
206
+ type: Input
207
+ }], thook: [{
208
+ type: Input
209
+ }], buttons: [{
210
+ type: Input
211
+ }], ngvCloseEvent: [{
212
+ type: Output
213
+ }], ngvPositiveEvent: [{
214
+ type: Output
215
+ }], ngvNeutralEvent: [{
216
+ type: Output
217
+ }], ngvNegativeEvent: [{
218
+ type: Output
219
+ }], close: [{
220
+ type: HostListener,
221
+ args: ['click', ['$event', '"host"']]
222
+ }, {
223
+ type: HostListener,
224
+ args: ['document:keydown.escape', ['$event']]
225
+ }], focusTrap: [{
226
+ type: HostListener,
227
+ args: ['keydown', ['$event']]
228
+ }] } });
229
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2xpZGUtb3V0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYW5ndWxhci9zcmMvdi1hbmd1bGFyL21vZGFsL3NsaWRlLW91dC9zbGlkZS1vdXQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvbW9kYWwvc2xpZGUtb3V0L3NsaWRlLW91dC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBQ04sU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFBO0FBRXRCLE9BQU8sRUFDTCxPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLEVBQ1AsVUFBVSxFQUNWLEtBQUssR0FDTixNQUFNLHFCQUFxQixDQUFBOzs7QUFNNUI7Ozs7Ozs7Ozs7O0dBV0c7QUEyREgsTUFBTSxPQUFPLG9CQUFvQjtJQTJCL0IsZ0JBQWdCO0lBQ2hCLElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxNQUFNLENBQUE7SUFDN0IsQ0FBQztJQU1ELDZIQUE2SDtJQUM3SCxJQUFhLE9BQU8sQ0FBQyxPQUFzQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQTtJQUN6QixDQUFDO0lBWUQsWUFBb0IsSUFBZ0I7UUFBaEIsU0FBSSxHQUFKLElBQUksQ0FBWTtRQS9DcEMsa0RBQWtEO1FBQ3pDLFNBQUksR0FBcUIsT0FBTyxDQUFBO1FBQ3pDLDZEQUE2RDtRQUNwRCxVQUFLLEdBQUcsS0FBSyxDQUFBO1FBQ3RCLHlEQUF5RDtRQUNoRCxtQkFBYyxHQUFHLEtBQUssQ0FBQTtRQVUvQixnRkFBZ0Y7UUFDdkUsYUFBUSxHQUFHLElBQUksQ0FBQTtRQUN4QixpRUFB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RSxDQUFDLENBQ3hCLEVBQ0QsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQ25CO2lDQUNGLENBQUM7NkJBQ0gsQ0FBQzt5QkFDSCxDQUFDO3FCQUNIO2lHQUlzQixXQUFXO3NCQUFqQyxTQUFTO3VCQUFDLFVBQVU7Z0JBR1osSUFBSTtzQkFBWixLQUFLO2dCQUVHLEtBQUs7c0JBQWIsS0FBSztnQkFFRyxjQUFjO3NCQUF0QixLQUFLO2dCQUVHLE9BQU87c0JBQWYsS0FBSztnQkFLRyxLQUFLO3NCQUFiLEtBQUs7Z0JBRUcsT0FBTztzQkFBZixLQUFLO2dCQUVHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUcsU0FBUztzQkFBakIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBWU8sT0FBTztzQkFBbkIsS0FBSztnQkFLSSxhQUFhO3NCQUF0QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxlQUFlO3NCQUF4QixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFzRFAsS0FBSztzQkFGSixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7O3NCQUMxQyxZQUFZO3VCQUFDLHlCQUF5QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW9CbkQsU0FBUztzQkFEUixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0TGlzdGVuZXIsXG4gIElucHV0LFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJ1xuXG5pbXBvcnQge1xuICB0cmlnZ2VyLFxuICBxdWVyeSxcbiAgc3R5bGUsXG4gIGFuaW1hdGUsXG4gIHRyYW5zaXRpb24sXG4gIGdyb3VwLFxufSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJ1xuXG4vLyBpbXBvcnQgeyBmYVRpbWVzIH0gZnJvbSAnQGZvcnRhd2Vzb21lL3Byby1yZWd1bGFyLXN2Zy1pY29ucyc7XG5cbmltcG9ydCB7IERpYWxvZ0J1dHRvbnMgfSBmcm9tICcuLi9tb2RhbC50eXBlcydcblxuLyoqIE1vZGFsIHNsaWRlLW91dCBjb21wb25lbnQgYmFzZWQgb24gdmFuaWxsYSBwYXR0ZXJuIGxpYnJhcnkgZGVzaWduLlxuICogVGhlIG1vZGFsIHRpdGxlIGNhbiBiZSBzZXQgdXNpbmcgdGhlIEBJbnB1dCBoZWFkaW5nLCBhbmQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIHRyYW5zbGF0ZWQgaWZcbiAqIHRoZSBzdHJpbmcgbWF0Y2hlcyBhIGNtcyBrZXkuXG4gKiBDb250ZW50IGNhbiBiZSBpbmplY3RlZCBpbnRvIHRoZSBib2R5IG9mIHRoZSBzbGlkZS1vdXQgYnkgZWl0aGVyIHNldHRpbmcgdGhlIEBJbnB1dCBjb250ZW50IHRvIGFueSB0eXBlIG9mXG4gKiBtYXJrZG93biwgb3IgdXNpbmcgY29udGVudCBwcm9qZWN0aW9uIChhZGRpbmcgY29udGVudCBiZXR3ZWVuIHRoZSBgbmd2LXNsaWRlb3V0LW1vZGFsYC1zdGFydCBhbmQgZW5kIHRhZykuXG4gKiBJZiB0aGUgY29udGVudCBuZWVkcyB0byBzdHJldGNoIG91dHNpZGUgdGhlIG5vcm1hbCBwYWRkZWQgYXJlYSwgYWRkIHRoZSBhdHRyaWJ1dGUgYHNsb3Q9XCJvdXRzaWRlLWNvbnRlbnRcImAgdG8gdGhlXG4gKiBwcm9qZWN0ZWQgY29udGVudCBtYWluIGVsZW1lbnQuXG4gKiBUZXN0IGhvb2tzOlxuICogVGhlIG1vZGFsIGhvb2sgZGVmYXVsdHMgdG8gJ3NsaWRlb3V0JyBidXQgaXMgY3VzdG9taXplYWJsZS5cbiAqIFRoZSBjbG9zaW5nIGJ1dHRvbiBjYW4gYmUgc2VsZWN0ZWQgdXNpbmcgJ3NsaWRlb3V0LWNsb3NlJy5cbiAqIFRoZSBiYWNrZHJvcCBpcyBzZWxlY3RhYmxlIHVzaW5nICdzbGlkZW91dC1iYWNrZHJvcCcuXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ25ndi1zbGlkZW91dC1tb2RhbCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9zbGlkZS1vdXQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9zbGlkZS1vdXQuY29tcG9uZW50LnNjc3MnXSxcbiAgYW5pbWF0aW9uczogW1xuICAgIHRyaWdnZXIoJ21vZGFsQW5pbWF0aW9uJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBxdWVyeSgnLmdkcy1zbGlkZS1vdXQnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoMTAwJSknIH0pLCB7XG4gICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgICBxdWVyeSgnLmdkcy1iYWNrZHJvcCwgW3JvbGU9ZGlhbG9nXScsIHN0eWxlKHsgb3BhY2l0eTogJzAnIH0pLCB7XG4gICAgICAgICAgb3B0aW9uYWw6IHRydWUsXG4gICAgICAgIH0pLFxuICAgICAgICBncm91cChbXG4gICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAnLmdkcy1zbGlkZS1vdXQnLFxuICAgICAgICAgICAgYW5pbWF0ZShcbiAgICAgICAgICAgICAgJzM1MG1zIGN1YmljLWJlemllcigwLjMzLCAxLCAwLjY4LCAxKScsXG4gICAgICAgICAgICAgIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgeyBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICAgICksXG4gICAgICAgICAgcXVlcnkoXG4gICAgICAgICAgICAnLmdkcy1iYWNrZHJvcCwgW3JvbGU9ZGlhbG9nXScsXG4gICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAnMzUwbXMgY3ViaWMtYmV6aWVyKDAuMzMsIDEsIDAuNjgsIDEpJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyBvcGFjaXR5OiAnMScgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgeyBvcHRpb25hbDogdHJ1ZSB9LFxuICAgICAgICAgICksXG4gICAgICAgIF0pLFxuICAgICAgXSksXG4gICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgIHF1ZXJ5KCcuZ2RzLXNsaWRlLW91dCcsIHN0eWxlKHsgdHJhbnNmb3JtOiAndHJhbnNsYXRlWCgwKScgfSksIHtcbiAgICAgICAgICBvcHRpb25hbDogdHJ1ZSxcbiAgICAgICAgfSksXG4gICAgICAgIGdyb3VwKFtcbiAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICcuZ2RzLXNsaWRlLW91dCcsXG4gICAgICAgICAgICBhbmltYXRlKFxuICAgICAgICAgICAgICAnMzUwbXMgY3ViaWMtYmV6aWVyKDAuMzMsIDEsIDAuNjgsIDEpJyxcbiAgICAgICAgICAgICAgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVYKDEwMCUpJyB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgICBxdWVyeShcbiAgICAgICAgICAgICcuZ2RzLWJhY2tkcm9wLCBbcm9sZT1kaWFsb2ddJyxcbiAgICAgICAgICAgIGFuaW1hdGUoXG4gICAgICAgICAgICAgICczNTBtcyBjdWJpYy1iZXppZXIoMC4zMywgMSwgMC42OCwgMSknLFxuICAgICAgICAgICAgICBzdHlsZSh7IG9wYWNpdHk6ICcwJyB9KSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgICB7IG9wdGlvbmFsOiB0cnVlIH0sXG4gICAgICAgICAgKSxcbiAgICAgICAgXSksXG4gICAgICBdKSxcbiAgICBdKSxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTmd2U2xpZGVPdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKiogQGludGVybmFsICovXG4gIEBWaWV3Q2hpbGQoJ3NsaWRlT3V0Jykgc2xpZGVPdXRSZWY6IEVsZW1lbnRSZWYgfCB1bmRlZmluZWRcblxuICAvKiogU2V0cyBmcm9tIHdoaWNoIHNpZGUgdGhlIG1vZGFsIHNob3VsZCBvcGVuLiAqL1xuICBASW5wdXQoKSBzaWRlOiAnbGVmdCcgfCAncmlnaHQnID0gJ3JpZ2h0J1xuICAvKiogRGVmaW5lcyB0aGUgZGVmYXVsdCB2aXNpYmlsaXR5IHN0YXRlIG9mIHRoZSBzbGlkZS1vdXQuICovXG4gIEBJbnB1dCgpIHNob3duID0gZmFsc2VcbiAgLyoqIERlZmluZXMgdGhlIGRlZmF1bHQgdmlzaWJpbGl0eSBzdGF0ZSBvZiB0aGUgbW9kYWwuICovXG4gIEBJbnB1dCgpIGluaXRpYWxseVNob3duID0gZmFsc2VcbiAgLyoqIFNldHMgbW9kYWwgaGVhZGluZy4gV2lsbCBiZSB0cmFuc2xhdGVkICh1c2luZyB0cmFuc2xvY28pIGlmIHRoZSBzdHJpbmcgbWF0Y2hlcyBhIGNtcyBrZXkuICovXG4gIEBJbnB1dCgpIGhlYWRpbmchOiBzdHJpbmdcbiAgLyoqXG4gICAqIFNldHMgbW9kYWwgdGl0bGUuIFdpbGwgYmUgdHJhbnNsYXRlZCAodXNpbmcgdHJhbnNsb2NvKSBpZiB0aGUgc3RyaW5nIG1hdGNoZXMgYSBjbXMga2V5LlxuICAgKiBAZGVwcmVjYXRlZCAtIHVzZSBASW5wdXQoKSBoZWFkaW5nIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZSE6IHN0cmluZ1xuICAvKiogU2V0cyBjb250ZW50IGJvZHkgb2YgdGhlIG1vZGFsIGFuZCBjYW4gY29udGFpbiBodG1sIGNvZGUuIFRoZSBjb250ZW50IGJvZHkgY2FuIGFsc28gYmUgc2V0IGJ5IG5lc3RpbmcgY2hpbGRyZW4gdG8gdGhlIG1vZGFsIHRhZy4gKi9cbiAgQElucHV0KCkgY29udGVudD86IHN0cmluZ1xuICAvKiogU2V0cyB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGNsb3NlIHRoZSBtb2RhbCBmcm9tIHRoZSB0b3AgcmlnaHQgY29ybmVyLiAqL1xuICBASW5wdXQoKSBjbG9zYWJsZSA9IHRydWVcbiAgLyoqIEFsbG93cyB0aGUgbW9kYWwgY29udGVudCB0byBkZWNpZGUgdGhlIHdpZHRoIG9mIHRoZSBtb2RhbC4gKi9cbiAgQElucHV0KCkgYXV0b1dpZHRoID0gZmFsc2VcblxuICAvKiogU3BlY2lhbCBwcm9wZXJ0eSB1c2VkIGZvciBzZWxlY3RpbmcgRE9NIGVsZW1lbnRzIGR1cmluZyBhdXRvbWF0ZWQgVUkgdGVzdGluZy4gKi9cbiAgQElucHV0KCkgdGhvb2sgPSAnc2xpZGVvdXQnXG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBnZXQgZnJvbUxlZnQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2lkZSA9PT0gJ2xlZnQnXG4gIH1cblxuICAvLyAvKiogQGludGVybmFsICovXG4gIC8vIGNsb3NlSWNvbiA9IGZhVGltZXM7XG5cbiAgX2J1dHRvbnM6IERpYWxvZ0J1dHRvbnMgfCB1bmRlZmluZWRcbiAgLyoqIEJ1dHRvbnMgYXJlIGRlZmluZWQgYXMgYSBrZXktdmFsdWUgcGFpciB3aGVyZSBrZXkgaXMgb25lIG9mIFwicG9zaXRpdmV8bmV1dHJhbHxuZWdhdGl2ZVwiIGFuZCB2YWx1ZSBpcyB0aGUgYnV0dG9uIGxhYmVsLiAqL1xuICBASW5wdXQoKSBzZXQgYnV0dG9ucyhidXR0b25zOiBEaWFsb2dCdXR0b25zKSB7XG4gICAgdGhpcy5fYnV0dG9ucyA9IGJ1dHRvbnNcbiAgfVxuXG4gIC8qKiBXaWxsIGVtaXQgdHJ1ZSBvbiBjbG9zaW5nIGV2ZW50LiAqL1xuICBAT3V0cHV0KCkgbmd2Q2xvc2VFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKVxuICBAT3V0cHV0KCkgbmd2UG9zaXRpdmVFdmVudCA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKVxuICBAT3V0cHV0KCkgbmd2TmV1dHJhbEV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG4gIEBPdXRwdXQoKSBuZ3ZOZWdhdGl2ZUV2ZW50ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpXG5cbiAgcHJpdmF0ZSBwcmV2aW91czogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBmaXJzdEZvY3VzYWJsZTogSFRNTEVsZW1lbnQgfCB1bmRlZmluZWRcbiAgcHJpdmF0ZSBsYXN0Rm9jdXNhYmxlOiBIVE1MRWxlbWVudCB8IHVuZGVmaW5lZFxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaG9zdDogRWxlbWVudFJlZikge1xuICAgIC8vIGFwcGVuZHMgbWV0aG9kcyBmb3Igb3BlbmluZyBhbmQgY2xvc2luZyBtb2RhbCB0byBuYXRpdmUgZWxlbWVudFxuICAgIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50Lm9wZW4gPSB0aGlzLm9wZW4uYmluZCh0aGlzKVxuICAgIHRoaXMuaG9zdC5uYXRpdmVFbGVtZW50LmNsb3NlID0gdGhpcy5jbG9zZS5iaW5kKHRoaXMpXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnNob3duID0gdGhpcy5pbml0aWFsbHlTaG93blxuICAgIGlmICh0aGlzLnNob3duKSB0aGlzLmxpbWl0Rm9jdXNhYmxlKClcbiAgfVxuXG4gIHB1YmxpYyBvbkFjdGlvbihldmVudDogRXZlbnQsIGFjdGlvbjogc3RyaW5nKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgICBjYXNlICdwb3NpdGl2ZSc6XG4gICAgICAgIHRoaXMubmd2UG9zaXRpdmVFdmVudC5lbWl0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ25ldXRyYWwnOlxuICAgICAgICB0aGlzLm5ndk5ldXRyYWxFdmVudC5lbWl0KClcbiAgICAgICAgYnJlYWtcbiAgICAgIGNhc2UgJ25lZ2F0aXZlJzpcbiAgICAgICAgdGhpcy5uZ3ZOZWdhdGl2ZUV2ZW50LmVtaXQoKVxuICAgICAgICBicmVha1xuICAgIH1cbiAgICB0aGlzLmNsb3NlKGV2ZW50LCAnYWN0aW9uJylcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxsZWQgb24gYSBtb2RhbCBlbGVtZW50LiBPcGVucyB0aGUgbW9kYWwgYW5kIHNldHMgZm9jdXMgdG8gdGhlIGxhc3QgZm9jdXNhYmxlIGVsZW1lbnQgaW4gdGhlIG1vZGFsLlxuICAgKlxuICAgKiBAcGFyYW0gb3BlbmVyIC0gcmVmZXJlbmNlIHRvIGxhc3QgZm9jdXNlZCBlbGVtZW50IGJlZm9yZSBvcGVuaW5nIG1vZGFsXG4gICAqIEByZXR1cm5zIC0gdHJ1ZVxuICAgKi9cbiAgb3BlbihvcGVuZXI/OiBIVE1MRWxlbWVudCk6IGJvb2xlYW4ge1xuICAgIHRoaXMuc2hvd24gPSB0cnVlXG4gICAgdGhpcy5wcmV2aW91cyA9IG9wZW5lciB8fCAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCBhcyBIVE1MRWxlbWVudClcbiAgICB0aGlzLmxpbWl0Rm9jdXNhYmxlKClcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgLyoqXG4gICAqIENhbGxlZCBvbiBhIG1vZGFsIGVsZW1lbnQuIENsb3NlcyB0aGUgbW9kYWwgYW5kIGVtaXRzIGEgYG5ndkNsb3NlRXZlbnRgLiBTZXRzIGZvY3VzIHRvIHRoZSBsYXRzIGZvY3VzZWQgZWxlbWVudCBpZiBhbiBlbGVtZW50IHdhcyBzZW50IGluIHRvIG9wZW4gZnVuY3Rpb24uXG4gICAqXG4gICAqIEBwYXJhbSBldmVudFxuICAgKiBAcGFyYW0gaW5pdGlhdG9yXG4gICAqL1xuICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50JywgJ1wiaG9zdFwiJ10pXG4gIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmtleWRvd24uZXNjYXBlJywgWyckZXZlbnQnXSlcbiAgY2xvc2UoZXZlbnQ/OiBFdmVudCwgaW5pdGlhdG9yPzogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKFxuICAgICAgaW5pdGlhdG9yID09PSAnaG9zdCcgJiZcbiAgICAgIGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCAmJlxuICAgICAgZXZlbnQudGFyZ2V0ICE9PSBldmVudC5jdXJyZW50VGFyZ2V0XG4gICAgKVxuICAgICAgcmV0dXJuXG4gICAgaWYgKHRoaXMuc2hvd24gJiYgdGhpcy5jbG9zYWJsZSkge1xuICAgICAgdGhpcy5uZ3ZDbG9zZUV2ZW50LmVtaXQodGhpcy5zaG93bilcbiAgICAgIHRoaXMuc2hvd24gPSBmYWxzZVxuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5wcmV2aW91cykgdGhpcy5wcmV2aW91cy5mb2N1cygpXG4gICAgICAgIHRoaXMucHJldmlvdXMgPSB1bmRlZmluZWRcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgZm9jdXNUcmFwKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LmtleSAhPT0gJ1RhYicpIHJldHVyblxuICAgIGlmIChldmVudC5zaGlmdEtleSkge1xuICAgICAgLy8gc2hpZnQgKyB0YWJcbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5sYXN0Rm9jdXNhYmxlICYmXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMuZmlyc3RGb2N1c2FibGVcbiAgICAgICkge1xuICAgICAgICB0aGlzLmxhc3RGb2N1c2FibGUuZm9jdXMoKVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIHRhYlxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmZpcnN0Rm9jdXNhYmxlICYmXG4gICAgICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgPT09IHRoaXMubGFzdEZvY3VzYWJsZVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuZmlyc3RGb2N1c2FibGUuZm9jdXMoKVxuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBsaW1pdEZvY3VzYWJsZSgpIHtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuc2xpZGVPdXRSZWYpIHJldHVyblxuICAgICAgY29uc3QgZm9jdXNhYmxlID0gdGhpcy5zbGlkZU91dFJlZi5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICdidXR0b24sIFtocmVmXSwgaW5wdXQsIHNlbGVjdCwgdGV4dGFyZWEsIFt0YWJpbmRleF06bm90KFt0YWJpbmRleD1cIi0xXCJdKScsXG4gICAgICApXG4gICAgICB0aGlzLmZpcnN0Rm9jdXNhYmxlID0gZm9jdXNhYmxlWzBdXG4gICAgICB0aGlzLmxhc3RGb2N1c2FibGUgPSBmb2N1c2FibGVbZm9jdXNhYmxlLmxlbmd0aCAtIDFdXG4gICAgICBpZiAodGhpcy5sYXN0Rm9jdXNhYmxlKSB0aGlzLmxhc3RGb2N1c2FibGUuZm9jdXMoKVxuICAgIH0pXG4gIH1cbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJzaG93blwiPlxuICA8ZGl2XG4gICAgW25nQ2xhc3NdPVwie1xuICAgICAgJ2dkcy1zbGlkZS1vdXQtLWxlZnQnOiBmcm9tTGVmdCxcbiAgICAgICdnZHMtc2xpZGUtb3V0LS1yaWdodCc6ICFmcm9tTGVmdFxuICAgIH1cIlxuICAgICp0cmFuc2xvY289XCJsZXQgdFwiXG4gICAgW2NsYXNzLi1hY3RpdmVdPVwic2hvd25cIlxuICAgIFthdHRyLmRhdGEtdGhvb2tdPVwidGhvb2tcIlxuICAgIFthdHRyLmFyaWEtaGlkZGVuXT1cIiFzaG93blwiXG4gICAgW0Btb2RhbEFuaW1hdGlvbl1cbiAgPlxuICAgIDxkaXZcbiAgICAgICNzbGlkZU91dFxuICAgICAgY2xhc3M9XCJnZHMtc2xpZGUtb3V0XCJcbiAgICAgIFtjbGFzcy5hdXRvLXdpZHRoXT1cImF1dG9XaWR0aFwiXG4gICAgICBbY2xhc3MuZW50ZXJlZF09XCJzaG93blwiXG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGFyaWEtbW9kYWw9XCJ0cnVlXCJcbiAgICAgIGFyaWEtbGFiZWxsZWRieT1cInNkdi1tb2RhbC10aXRsZVwiXG4gICAgICBhcmlhLWRlc2NyaWJlZGJ5PVwic2R2LW1vZGFsLWJvZHlcIlxuICAgID5cbiAgICAgIDxoZWFkZXIgY2xhc3M9XCJnZHMtc2xpZGUtb3V0X19oZWFkZXJcIj5cbiAgICAgICAgPGgzIGNsYXNzPVwiZ2RzLXNsaWRlLW91dF9faGVhZGluZ1wiIGlkPVwic2R2LW1vZGFsLXRpdGxlXCI+XG4gICAgICAgICAge3sgaGVhZGluZyB8fCB0aXRsZSB8fCAnJyB9fVxuICAgICAgICA8L2gzPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgZGF0YS10ZXN0aWQ9XCJtb2RhbC1jbG9zZS1idXR0b25cIlxuICAgICAgICAgIGNsYXNzPVwiY2xvc2VcIlxuICAgICAgICAgIChjbGljayk9XCJ0aGlzLmNsb3NlKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwic3Itb25seVwiPkNsb3NlPC9zcGFuPlxuICAgICAgICAgIDxpPjwvaT5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2hlYWRlcj5cblxuICAgICAgPHNlY3Rpb24gaWQ9XCJzZHYtbW9kYWwtYm9keVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZ2RzLXNsaWRlLW91dF9fY29udGVudCBoaWRlLWlmLWVtcHR5XCI+XG4gICAgICAgICAgPGRpdiAqbmdJZj1cImNvbnRlbnRcIiBbaW5uZXJIdG1sXT1cImNvbnRlbnRcIj48L2Rpdj5cbiAgICAgICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbc2xvdD0nb3V0c2lkZS1jb250ZW50J11cIj48L25nLWNvbnRlbnQ+XG4gICAgICA8L3NlY3Rpb24+XG5cbiAgICAgIDxmb290ZXIgY2xhc3M9XCJzZHYtbW9kYWwtZGlhbG9nX19hY3Rpb25zXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cImRhbmdlclwiXG4gICAgICAgICAgdHlwZT1cInJlc2V0XCJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRob29rXT1cIidkaWFsb2ctJyArIChfYnV0dG9ucz8ubmVnYXRpdmUgfHwgJ25lZ2F0aXZlJylcIlxuICAgICAgICAgIChjbGljayk9XCJvbkFjdGlvbigkZXZlbnQsICduZWdhdGl2ZScpXCJcbiAgICAgICAgICAoa2V5ZG93bi5lbnRlcik9XCJvbkFjdGlvbigkZXZlbnQsICduZWdhdGl2ZScpXCJcbiAgICAgICAgICAqbmdJZj1cIl9idXR0b25zICYmIF9idXR0b25zLm5lZ2F0aXZlXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IHQoX2J1dHRvbnMubmVnYXRpdmUpIH19XG4gICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBjbGFzcz1cInNlY29uZGFyeVwiXG4gICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCInZGlhbG9nLScgKyAoX2J1dHRvbnM/Lm5ldXRyYWwgfHwgJ25ldXRyYWwnKVwiXG4gICAgICAgICAgKGNsaWNrKT1cIm9uQWN0aW9uKCRldmVudCwgJ25ldXRyYWwnKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25BY3Rpb24oJGV2ZW50LCAnbmV1dHJhbCcpXCJcbiAgICAgICAgICAqbmdJZj1cIl9idXR0b25zICYmIF9idXR0b25zLm5ldXRyYWxcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgdChfYnV0dG9ucy5uZXV0cmFsKSB9fVxuICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgdHlwZT1cInN1Ym1pdFwiXG4gICAgICAgICAgW2F0dHIuZGF0YS10aG9va109XCInZGlhbG9nLScgKyAoX2J1dHRvbnM/LnBvc2l0aXZlIHx8ICdwb3NpdGl2ZScpXCJcbiAgICAgICAgICAoY2xpY2spPVwib25BY3Rpb24oJGV2ZW50LCAncG9zaXRpdmUnKVwiXG4gICAgICAgICAgKGtleWRvd24uZW50ZXIpPVwib25BY3Rpb24oJGV2ZW50LCAncG9zaXRpdmUnKVwiXG4gICAgICAgICAgKm5nSWY9XCJfYnV0dG9ucyAmJiBfYnV0dG9ucy5wb3NpdGl2ZVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyB0KF9idXR0b25zLnBvc2l0aXZlKSB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIDwvZm9vdGVyPlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJnZHMtYmFja2Ryb3BcIlxuICAgICAgZGF0YS10aG9vaz1cInNsaWRlb3V0LWJhY2tkcm9wXCJcbiAgICAgIChjbGljayk9XCJjbG9zZSgpXCJcbiAgICA+PC9kaXY+XG4gIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './radio.component';
2
+ export * from './radio.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FuZ3VsYXIvc3JjL3YtYW5ndWxhci9yYWRpby9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsZ0JBQWdCLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3JhZGlvLmNvbXBvbmVudCdcbmV4cG9ydCAqIGZyb20gJy4vcmFkaW8ubW9kdWxlJ1xuIl19
@@ -0,0 +1,130 @@
1
+ import { ChangeDetectorRef, Component, HostBinding, Inject, Injectable, Input, Optional, Self, } from '@angular/core';
2
+ import { NgControl } from '@angular/forms';
3
+ import { TRANSLOCO_SCOPE } from '@ngneat/transloco';
4
+ import { NgvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "@angular/forms";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@ngneat/transloco";
9
+ /** @internal Internal class used to uncheck radio buttons with the matching name. */
10
+ export class NgvRadioControlRegistry {
11
+ constructor() {
12
+ this._radios = [];
13
+ }
14
+ add(control, radio) {
15
+ this._radios.push([control, radio]);
16
+ }
17
+ remove(radio) {
18
+ for (let i = this._radios.length - 1; i >= 0; --i) {
19
+ if (this._radios[i][1] === radio) {
20
+ this._radios.splice(i, 1);
21
+ return;
22
+ }
23
+ }
24
+ }
25
+ select(radio) {
26
+ this._radios.forEach((controlPair) => {
27
+ if (this._isSameGroup(controlPair, radio) && controlPair[1] !== radio) {
28
+ controlPair[1].writeValue(radio.value);
29
+ }
30
+ });
31
+ }
32
+ _isSameGroup(controlPair, radio) {
33
+ if (!controlPair[0].control)
34
+ return false;
35
+ return (
36
+ //@ts-expect-error internal properties not exposed
37
+ controlPair[0]._parent === radio.ngControl._parent &&
38
+ controlPair[1].name === radio.name);
39
+ }
40
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
41
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry }); }
42
+ }
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioControlRegistry, decorators: [{
44
+ type: Injectable
45
+ }] });
46
+ /**
47
+ * Use radio buttons when users must select one option in a list with exclusive options out of a set of two or more options.
48
+ * https://designlibrary.sebgroup.com/components/component-radiobutton
49
+ */
50
+ export class NgvRadioComponent extends NgvBaseControlValueAccessorComponent {
51
+ /**
52
+ * Creates a new RadioComponent
53
+ * @param ngControl optional FormControl provided when component is used in a form, through dependency injection.
54
+ * @param registry internal registry used to uncheck radio buttons with the matching name, through dependency injection.
55
+ * @param cdr change detection reference for rendering purposes.
56
+ */
57
+ constructor(ngControl, translocoScope, registry, cdr) {
58
+ super(ngControl, translocoScope, cdr);
59
+ this.ngControl = ngControl;
60
+ this.translocoScope = translocoScope;
61
+ this.registry = registry;
62
+ this.cdr = cdr;
63
+ /** Special property used for selecting DOM elements during automated UI testing. */
64
+ this.thook = 'radio';
65
+ }
66
+ ngOnInit() {
67
+ super.ngOnInit();
68
+ this._checkName();
69
+ this.registry.add(this.ngControl, this);
70
+ }
71
+ ngOnDestroy() {
72
+ this.registry.remove(this);
73
+ }
74
+ /** @internal */
75
+ onInputChange(event) {
76
+ event.stopPropagation();
77
+ if (this.disabled)
78
+ return;
79
+ this.onChange(this.state);
80
+ }
81
+ /** Writes a new value of true or false based on if argument matches this components value property. */
82
+ writeValue(value) {
83
+ // Phantom null value on first load https://github.com/angular/angular/pull/38140
84
+ super.writeValue(value === this.value);
85
+ }
86
+ /** Registers a callback function that is called when the child input element's value changes. */
87
+ registerOnChange(fn) {
88
+ // Override default to update registry
89
+ this.onChange = () => {
90
+ fn(this.value);
91
+ this.registry.select(this);
92
+ };
93
+ }
94
+ /** Checks that the name properties match and updates name property if only formControlName is given. */
95
+ _checkName() {
96
+ if (this.name &&
97
+ this.formControlName &&
98
+ this.name !== this.formControlName) {
99
+ throw new Error(`
100
+ If you define both a name and a formControlName attribute on your radio button, their values
101
+ must match. Ex: <input type="radio" formControlName="food" name="food">
102
+ `);
103
+ }
104
+ if (!this.name && this.formControlName)
105
+ this.name = this.formControlName;
106
+ }
107
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioComponent, deps: [{ token: i1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: NgvRadioControlRegistry }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
108
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: NgvRadioComponent, selector: "ngv-radio", inputs: { thook: "thook", formControlName: "formControlName" }, host: { properties: { "attr.data-thook": "this.thook" } }, providers: [NgvRadioControlRegistry], usesInheritance: true, ngImport: i0, template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-radio-wrap\">\n <div\n [id]=\"id + '-radio'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-radio-wrap\">\n <!-- RADIO BUTTON FIELD -->\n <label [attr.for]=\"id + '-radio'\" class=\"form-control\">\n <input\n #input\n type=\"radio\"\n [attr.id]=\"id + '-radio'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <!-- LABEL -->\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"\n labelContentTpl ?? null;\n context: { $implicit: value }\n \"\n ></ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-radio'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host .ngv-field--locked{display:inline-block;border-radius:.25em;position:relative;min-height:2em;padding:.5em .75em .5em 0}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}:host label.form-control input[type=radio]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control:has(input[type=radio]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=radio]:focus-visible):focus,:host label.form-control:has(input[type=radio]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=radio]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;position:relative;border-radius:var(--gds-comp-radio-border-radius);display:flex;height:var(--gds-comp-radio-container-height);width:var(--gds-comp-radio-container-width);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border)}:host label.form-control input[type=radio]~i:after{content:\"\";width:100%;height:100%;border-radius:var(--gds-comp-radio-border-radius);background-color:var(--gds-comp-radio-dot);transform:scale(.5)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-hover)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-hover)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked-hover)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked-hover)}:host .was-validated label.form-control input[type=radio]:not(.is-invalid):valid~i,:host label.form-control input[type=radio].is-valid~i{--border-color: var(--intent-success-background);--sg-border-color: var(--intent-success-background)}:host .was-validated label.form-control input[type=radio]:not(.is-valid):invalid~i,:host label.form-control input[type=radio].is-invalid~i{--border-color: var(--intent-danger-background);--sg-border-color: var(--intent-danger-background)}:host label.form-control input[type=radio]:disabled~i,:host label.form-control input[type=radio].disabled~i{background-color:var(--gds-comp-radio-container-background-disabled);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-disabled)}:host label.form-control input[type=radio]:disabled~span,:host label.form-control input[type=radio].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=radio]:disabled~span::placeholder,:host label.form-control input[type=radio].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=radio]:disabled:checked~i:after,:host label.form-control input[type=radio]:checked.disabled~i:after{background-color:var(--gds-comp-radio-dot-disabled)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoLang", "translocoLoadingTpl"] }] }); }
109
+ }
110
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: NgvRadioComponent, decorators: [{
111
+ type: Component,
112
+ args: [{ selector: 'ngv-radio', providers: [NgvRadioControlRegistry], template: "<!-- LOCKED INPUT -->\n<div *ngIf=\"locked && state\" class=\"sdv-field-radio-wrap\">\n <div\n [id]=\"id + '-radio'\"\n class=\"ngv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n >\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl ?? null; context: { $implicit: value }\"\n ></ng-template>\n </div>\n</div>\n\n<!-- INPUT WRAPPER -->\n<ng-container *ngIf=\"!locked\">\n <div class=\"sdv-field-radio-wrap\">\n <!-- RADIO BUTTON FIELD -->\n <label [attr.for]=\"id + '-radio'\" class=\"form-control\">\n <input\n #input\n type=\"radio\"\n [attr.id]=\"id + '-radio'\"\n [attr.name]=\"name\"\n [attr.value]=\"value\"\n [attr.required]=\"required\"\n [disabled]=\"disabled\"\n [autofocus]=\"autofocus\"\n [attr.aria-label]=\"description\"\n [checked]=\"state\"\n (click)=\"$event.stopPropagation()\"\n (change)=\"onInputChange($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n\n <!-- LABEL -->\n {{ label }}\n <ng-template\n *ngTemplateOutlet=\"\n labelContentTpl ?? null;\n context: { $implicit: value }\n \"\n ></ng-template>\n <i></i>\n </label>\n </div>\n\n <!-- ERRORS -->\n <ng-container *transloco=\"let t; read: scope\">\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-radio'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span *ngIf=\"error; else errorsRef\">{{ error }}</span>\n <ng-template #errorsRef>\n <span *ngIf=\"firstError as error\">\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </label>\n </ng-container>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n</ng-container>\n", styles: [":host .ngv-field--locked{display:inline-block;border-radius:.25em;position:relative;min-height:2em;padding:.5em .75em .5em 0}:host .form-control{padding:.75rem 1rem;border:1px solid transparent;border-radius:var(--gds-sys-shape-corner-medium);align-items:center;cursor:pointer;display:flex;flex-direction:row-reverse;font:inherit;justify-content:flex-end;position:relative;user-select:none;-webkit-user-select:none}:host .form-control:has(input:disabled){cursor:not-allowed}:host label.form-control input[type=radio]{cursor:pointer;height:0;opacity:0;position:absolute;width:0;z-index:-1}:host label.form-control:has(input[type=radio]:focus-visible):focus:not(:focus-visible){box-shadow:none;outline:0}:host label.form-control:has(input[type=radio]:focus-visible):focus,:host label.form-control:has(input[type=radio]:focus-visible):focus-within{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host label.form-control input[type=radio]~i{margin-right:.75rem;margin-top:.0625rem;flex-shrink:0;position:relative;border-radius:var(--gds-comp-radio-border-radius);display:flex;height:var(--gds-comp-radio-container-height);width:var(--gds-comp-radio-container-width);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border)}:host label.form-control input[type=radio]~i:after{content:\"\";width:100%;height:100%;border-radius:var(--gds-comp-radio-border-radius);background-color:var(--gds-comp-radio-dot);transform:scale(.5)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-hover)}:host label.form-control:hover input[type=radio]:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-hover)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked)}:host label.form-control input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i{box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-checked-hover)}:host label.form-control:hover input[type=radio]:checked:not(.disabled,:disabled)~i:after{background-color:var(--gds-comp-radio-dot-checked-hover)}:host .was-validated label.form-control input[type=radio]:not(.is-invalid):valid~i,:host label.form-control input[type=radio].is-valid~i{--border-color: var(--intent-success-background);--sg-border-color: var(--intent-success-background)}:host .was-validated label.form-control input[type=radio]:not(.is-valid):invalid~i,:host label.form-control input[type=radio].is-invalid~i{--border-color: var(--intent-danger-background);--sg-border-color: var(--intent-danger-background)}:host label.form-control input[type=radio]:disabled~i,:host label.form-control input[type=radio].disabled~i{background-color:var(--gds-comp-radio-container-background-disabled);box-shadow:inset 0 0 0 .05rem var(--gds-comp-radio-border-disabled)}:host label.form-control input[type=radio]:disabled~span,:host label.form-control input[type=radio].disabled~span{color:var(--text-disabled-color)!important;cursor:not-allowed}:host label.form-control input[type=radio]:disabled~span::placeholder,:host label.form-control input[type=radio].disabled~span::placeholder{color:var(--text-disabled-color)}:host label.form-control input[type=radio]:disabled:checked~i:after,:host label.form-control input[type=radio]:checked.disabled~i:after{background-color:var(--gds-comp-radio-dot-disabled)}\n"] }]
113
+ }], ctorParameters: function () { return [{ type: i1.NgControl, decorators: [{
114
+ type: Self
115
+ }, {
116
+ type: Optional
117
+ }] }, { type: undefined, decorators: [{
118
+ type: Optional
119
+ }, {
120
+ type: Inject,
121
+ args: [TRANSLOCO_SCOPE]
122
+ }] }, { type: NgvRadioControlRegistry }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { thook: [{
123
+ type: HostBinding,
124
+ args: ['attr.data-thook']
125
+ }, {
126
+ type: Input
127
+ }], formControlName: [{
128
+ type: Input
129
+ }] } });
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvcmFkaW8vcmFkaW8uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9hbmd1bGFyL3NyYy92LWFuZ3VsYXIvcmFkaW8vcmFkaW8uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsV0FBVyxFQUNYLE1BQU0sRUFDTixVQUFVLEVBQ1YsS0FBSyxFQUdMLFFBQVEsRUFDUixJQUFJLEdBQ0wsTUFBTSxlQUFlLENBQUE7QUFDdEIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRTFDLE9BQU8sRUFBRSxlQUFlLEVBQWtCLE1BQU0sbUJBQW1CLENBQUE7QUFFbkUsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sbUVBQW1FLENBQUE7Ozs7O0FBRXhILHFGQUFxRjtBQUVyRixNQUFNLE9BQU8sdUJBQXVCO0lBRHBDO1FBRVUsWUFBTyxHQUFVLEVBQUUsQ0FBQTtLQWtDNUI7SUFoQ0MsR0FBRyxDQUFDLE9BQWtCLEVBQUUsS0FBd0I7UUFDOUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxDQUFDO0lBRUQsTUFBTSxDQUFDLEtBQXdCO1FBQzdCLEtBQUssSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUU7WUFDakQsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEtBQUssRUFBRTtnQkFDaEMsSUFBSSxDQUFDLE9BQU8sQ0FB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ZSxFQUNsQztZQUNBLE1BQU0sSUFBSSxLQUFLLENBQUM7OztLQUdqQixDQUFDLENBQUE7U0FDRDtRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlO1lBQUUsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFBO0lBQzFFLENBQUM7K0dBeEVVLGlCQUFpQix1RUFtQmxCLGVBQWU7bUdBbkJkLGlCQUFpQiwrSkFGakIsQ0FBQyx1QkFBdUIsQ0FBQyxpRENsRXRDLHMzREFvRUE7OzRGREFhLGlCQUFpQjtrQkFQN0IsU0FBUzsrQkFFRSxXQUFXLGFBR1YsQ0FBQyx1QkFBdUIsQ0FBQzs7MEJBbUJqQyxJQUFJOzswQkFBSSxRQUFROzswQkFDaEIsUUFBUTs7MEJBQ1IsTUFBTTsyQkFBQyxlQUFlOytHQWRnQixLQUFLO3NCQUE3QyxXQUFXO3VCQUFDLGlCQUFpQjs7c0JBQUcsS0FBSztnQkFHN0IsZUFBZTtzQkFBdkIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEhvc3RCaW5kaW5nLFxuICBJbmplY3QsXG4gIEluamVjdGFibGUsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3B0aW9uYWwsXG4gIFNlbGYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQgeyBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3JtcydcblxuaW1wb3J0IHsgVFJBTlNMT0NPX1NDT1BFLCBUcmFuc2xvY29TY29wZSB9IGZyb20gJ0BuZ25lYXQvdHJhbnNsb2NvJ1xuXG5pbXBvcnQgeyBOZ3ZCYXNlQ29udHJvbFZhbHVlQWNjZXNzb3JDb21wb25lbnQgfSBmcm9tICdAc2ViZ3JvdXAvZ3JlZW4tYW5ndWxhci9zcmMvdi1hbmd1bGFyL2Jhc2UtY29udHJvbC12YWx1ZS1hY2Nlc3NvcidcblxuLyoqIEBpbnRlcm5hbCBJbnRlcm5hbCBjbGFzcyB1c2VkIHRvIHVuY2hlY2sgcmFkaW8gYnV0dG9ucyB3aXRoIHRoZSBtYXRjaGluZyBuYW1lLiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE5ndlJhZGlvQ29udHJvbFJlZ2lzdHJ5IHtcbiAgcHJpdmF0ZSBfcmFkaW9zOiBhbnlbXSA9IFtdXG5cbiAgYWRkKGNvbnRyb2w6IE5nQ29udHJvbCwgcmFkaW86IE5ndlJhZGlvQ29tcG9uZW50KSB7XG4gICAgdGhpcy5fcmFkaW9zLnB1c2goW2NvbnRyb2wsIHJhZGlvXSlcbiAgfVxuXG4gIHJlbW92ZShyYWRpbzogTmd2UmFkaW9Db21wb25lbnQpIHtcbiAgICBmb3IgKGxldCBpID0gdGhpcy5fcmFkaW9zLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICBpZiAodGhpcy5fcmFkaW9zW2ldWzFdID09PSByYWRpbykge1xuICAgICAgICB0aGlzLl9yYWRpb3Muc3BsaWNlKGksIDEpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdChyYWRpbzogTmd2UmFkaW9Db21wb25lbnQpIHtcbiAgICB0aGlzLl9yYWRpb3MuZm9yRWFjaCgoY29udHJvbFBhaXIpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1NhbWVHcm91cChjb250cm9sUGFpciwgcmFkaW8pICYmIGNvbnRyb2xQYWlyWzFdICE9PSByYWRpbykge1xuICAgICAgICBjb250cm9sUGFpclsxXS53cml0ZVZhbHVlKHJhZGlvLnZhbHVlKVxuICAgICAgfVxuICAgIH0pXG4gIH1cblxuICBwcml2YXRlIF9pc1NhbWVHcm91cChcbiAgICBjb250cm9sUGFpcjogW05nQ29udHJvbCwgTmd2UmFkaW9Db21wb25lbnRdLFxuICAgIHJhZGlvOiBOZ3ZSYWRpb0NvbXBvbmVudCxcbiAgKSB7XG4gICAgaWYgKCFjb250cm9sUGFpclswXS5jb250cm9sKSByZXR1cm4gZmFsc2VcbiAgICByZXR1cm4gKFxuICAgICAgLy9AdHMtZXhwZWN0LWVycm9yIGludGVybmFsIHByb3BlcnRpZXMgbm90IGV4cG9zZWRcbiAgICAgIGNvbnRyb2xQYWlyWzBdLl9wYXJlbnQgPT09IHJhZGlvLm5nQ29udHJvbC5fcGFyZW50ICYmXG4gICAgICBjb250cm9sUGFpclsxXS5uYW1lID09PSByYWRpby5uYW1lXG4gICAgKVxuICB9XG59XG5cbi8qKlxuICogVXNlIHJhZGlvIGJ1dHRvbnMgd2hlbiB1c2VycyBtdXN0IHNlbGVjdCBvbmUgb3B0aW9uIGluIGEgbGlzdCB3aXRoIGV4Y2x1c2l2ZSBvcHRpb25zIG91dCBvZiBhIHNldCBvZiB0d28gb3IgbW9yZSBvcHRpb25zLlxuICogaHR0cHM6Ly9kZXNpZ25saWJyYXJ5LnNlYmdyb3VwLmNvbS9jb21wb25lbnRzL2NvbXBvbmVudC1yYWRpb2J1dHRvblxuICovXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICduZ3YtcmFkaW8nLFxuICB0ZW1wbGF0ZVVybDogJy4vcmFkaW8uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9yYWRpby5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtOZ3ZSYWRpb0NvbnRyb2xSZWdpc3RyeV0sXG59KVxuZXhwb3J0IGNsYXNzIE5ndlJhZGlvQ29tcG9uZW50XG4gIGV4dGVuZHMgTmd2QmFzZUNvbnRyb2xWYWx1ZUFjY2Vzc29yQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3lcbntcbiAgLyoqIFNwZWNpYWwgcHJvcGVydHkgdXNlZCBmb3Igc2VsZWN0aW5nIERPTSBlbGVtZW50cyBkdXJpbmcgYXV0b21hdGVkIFVJIHRlc3RpbmcuICovXG4gIEBIb3N0QmluZGluZygnYXR0ci5kYXRhLXRob29rJykgQElucHV0KCkgdGhvb2sgPSAncmFkaW8nXG5cbiAgLyoqIFN5bmNzIGEgRm9ybUNvbnRyb2wgaW4gYW4gZXhpc3RpbmcgRm9ybUdyb3VwIHRvIGEgZm9ybSBjb250cm9sIGVsZW1lbnQgYnkgbmFtZS4gKi9cbiAgQElucHV0KCkgZm9ybUNvbnRyb2xOYW1lPzogc3RyaW5nXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgUmFkaW9Db21wb25lbnRcbiAgICogQHBhcmFtIG5nQ29udHJvbCBvcHRpb25hbCBGb3JtQ29udHJvbCBwcm92aWRlZCB3aGVuIGNvbXBvbmVudCBpcyB1c2VkIGluIGEgZm9ybSwgdGhyb3VnaCBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICogQHBhcmFtIHJlZ2lzdHJ5IGludGVybmFsIHJlZ2lzdHJ5IHVzZWQgdG8gdW5jaGVjayByYWRpbyBidXR0b25zIHdpdGggdGhlIG1hdGNoaW5nIG5hbWUsIHRocm91Z2ggZGVwZW5kZW5jeSBpbmplY3Rpb24uXG4gICAqIEBwYXJhbSBjZHIgY2hhbmdlIGRldGVjdGlvbiByZWZlcmVuY2UgZm9yIHJlbmRlcmluZyBwdXJwb3Nlcy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgcHVibGljIG5nQ29udHJvbDogTmdDb250cm9sLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChUUkFOU0xPQ09fU0NPUEUpXG4gICAgcHJvdGVjdGVkIHRyYW5zbG9jb1Njb3BlOiBUcmFuc2xvY29TY29wZSxcbiAgICBwcm90ZWN0ZWQgcmVnaXN0cnk6IE5ndlJhZGlvQ29udHJvbFJlZ2lzdHJ5LFxuICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihuZ0NvbnRyb2wsIHRyYW5zbG9jb1Njb3BlLCBjZHIpXG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBzdXBlci5uZ09uSW5pdCgpXG4gICAgdGhpcy5fY2hlY2tOYW1lKClcbiAgICB0aGlzLnJlZ2lzdHJ5LmFkZCh0aGlzLm5nQ29udHJvbCwgdGhpcylcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMucmVnaXN0cnkucmVtb3ZlKHRoaXMpXG4gIH1cblxuICAvKiogQGludGVybmFsICovXG4gIG9uSW5wdXRDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuXG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLnN0YXRlKVxuICB9XG5cbiAgLyoqIFdyaXRlcyBhIG5ldyB2YWx1ZSBvZiB0cnVlIG9yIGZhbHNlIGJhc2VkIG9uIGlmIGFyZ3VtZW50IG1hdGNoZXMgdGhpcyBjb21wb25lbnRzIHZhbHVlIHByb3BlcnR5LiAqL1xuICB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkIHtcbiAgICAvLyBQaGFudG9tIG51bGwgdmFsdWUgb24gZmlyc3QgbG9hZCBodHRwczovL2dpdGh1Yi5jb20vYW5ndWxhci9hbmd1bGFyL3B1bGwvMzgxNDBcbiAgICBzdXBlci53cml0ZVZhbHVlKHZhbHVlID09PSB0aGlzLnZhbHVlKVxuICB9XG5cbiAgLyoqIFJlZ2lzdGVycyBhIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgaXMgY2FsbGVkIHdoZW4gdGhlIGNoaWxkIGlucHV0IGVsZW1lbnQncyB2YWx1ZSBjaGFuZ2VzLiAqL1xuICByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gYW55KSB7XG4gICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCB0byB1cGRhdGUgcmVnaXN0cnlcbiAgICB0aGlzLm9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgZm4odGhpcy52YWx1ZSlcbiAgICAgIHRoaXMucmVnaXN0cnkuc2VsZWN0KHRoaXMpXG4gICAgfVxuICB9XG5cbiAgLyoqIENoZWNrcyB0aGF0IHRoZSBuYW1lIHByb3BlcnRpZXMgbWF0Y2ggYW5kIHVwZGF0ZXMgbmFtZSBwcm9wZXJ0eSBpZiBvbmx5IGZvcm1Db250cm9sTmFtZSBpcyBnaXZlbi4gKi9cbiAgcHJpdmF0ZSBfY2hlY2tOYW1lKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMubmFtZSAmJlxuICAgICAgdGhpcy5mb3JtQ29udHJvbE5hbWUgJiZcbiAgICAgIHRoaXMubmFtZSAhPT0gdGhpcy5mb3JtQ29udHJvbE5hbWVcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXG4gICAgICBJZiB5b3UgZGVmaW5lIGJvdGggYSBuYW1lIGFuZCBhIGZvcm1Db250cm9sTmFtZSBhdHRyaWJ1dGUgb24geW91ciByYWRpbyBidXR0b24sIHRoZWlyIHZhbHVlc1xuICAgICAgbXVzdCBtYXRjaC4gRXg6IDxpbnB1dCB0eXBlPVwicmFkaW9cIiBmb3JtQ29udHJvbE5hbWU9XCJmb29kXCIgbmFtZT1cImZvb2RcIj5cbiAgICBgKVxuICAgIH1cbiAgICBpZiAoIXRoaXMubmFtZSAmJiB0aGlzLmZvcm1Db250cm9sTmFtZSkgdGhpcy5uYW1lID0gdGhpcy5mb3JtQ29udHJvbE5hbWVcbiAgfVxufVxuIiwiPCEtLSBMT0NLRUQgSU5QVVQgLS0+XG48ZGl2ICpuZ0lmPVwibG9ja2VkICYmIHN0YXRlXCIgY2xhc3M9XCJzZHYtZmllbGQtcmFkaW8td3JhcFwiPlxuICA8ZGl2XG4gICAgW2lkXT1cImlkICsgJy1yYWRpbydcIlxuICAgIGNsYXNzPVwibmd2LWZpZWxkLS1sb2NrZWRcIlxuICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgW2F0dHIudmFsdWVdPVwidmFsdWVcIlxuICA+XG4gICAge3sgbGFiZWwgfX1cbiAgICA8bmctdGVtcGxhdGVcbiAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxDb250ZW50VHBsID8/IG51bGw7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSB9XCJcbiAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgPC9kaXY+XG48L2Rpdj5cblxuPCEtLSBJTlBVVCBXUkFQUEVSIC0tPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFsb2NrZWRcIj5cbiAgPGRpdiBjbGFzcz1cInNkdi1maWVsZC1yYWRpby13cmFwXCI+XG4gICAgPCEtLSBSQURJTyBCVVRUT04gRklFTEQgLS0+XG4gICAgPGxhYmVsIFthdHRyLmZvcl09XCJpZCArICctcmFkaW8nXCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIj5cbiAgICAgIDxpbnB1dFxuICAgICAgICAjaW5wdXRcbiAgICAgICAgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgW2F0dHIuaWRdPVwiaWQgKyAnLXJhZGlvJ1wiXG4gICAgICAgIFthdHRyLm5hbWVdPVwibmFtZVwiXG4gICAgICAgIFthdHRyLnZhbHVlXT1cInZhbHVlXCJcbiAgICAgICAgW2F0dHIucmVxdWlyZWRdPVwicmVxdWlyZWRcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbYXV0b2ZvY3VzXT1cImF1dG9mb2N1c1wiXG4gICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiZGVzY3JpcHRpb25cIlxuICAgICAgICBbY2hlY2tlZF09XCJzdGF0ZVwiXG4gICAgICAgIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcIlxuICAgICAgICAoY2hhbmdlKT1cIm9uSW5wdXRDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIChmb2N1cyk9XCJvbkZvY3VzKCRldmVudClcIlxuICAgICAgICAoYmx1cik9XCJvbkJsdXIoJGV2ZW50KVwiXG4gICAgICAvPlxuXG4gICAgICA8IS0tIExBQkVMIC0tPlxuICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDxuZy10ZW1wbGF0ZVxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cIlxuICAgICAgICAgIGxhYmVsQ29udGVudFRwbCA/PyBudWxsO1xuICAgICAgICAgIGNvbnRleHQ6IHsgJGltcGxpY2l0OiB2YWx1ZSB9XG4gICAgICAgIFwiXG4gICAgICA+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDxpPjwvaT5cbiAgICA8L2xhYmVsPlxuICA8L2Rpdj5cblxuICA8IS0tIEVSUk9SUyAtLT5cbiAgPG5nLWNvbnRhaW5lciAqdHJhbnNsb2NvPVwibGV0IHQ7IHJlYWQ6IHNjb3BlXCI+XG4gICAgPGxhYmVsXG4gICAgICBjbGFzcz1cInNkdi1maWVsZC1ub3RpY2Ugc2R2LWZpZWxkLW5vdGljZS0tZXJyb3JcIlxuICAgICAgW2F0dHIuZm9yXT1cImlkICsgJy1yYWRpbydcIlxuICAgICAgKm5nSWY9XCJpbnZhbGlkICYmIChlcnJvciB8fCBuZ0NvbnRyb2w/LmludmFsaWQpXCJcbiAgICA+XG4gICAgICA8c3BhbiAqbmdJZj1cImVycm9yOyBlbHNlIGVycm9yc1JlZlwiPnt7IGVycm9yIH19PC9zcGFuPlxuICAgICAgPG5nLXRlbXBsYXRlICNlcnJvcnNSZWY+XG4gICAgICAgIDxzcGFuICpuZ0lmPVwiZmlyc3RFcnJvciBhcyBlcnJvclwiPlxuICAgICAgICAgIHt7IHQoJ2Vycm9yLmZpZWxkJyArIGVycm9yPy5jb2RlLCBlcnJvcj8ucGFyYW1zKSB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG4gIDwvbmctY29udGFpbmVyPlxuXG4gIDwhLS0gQ0hJTERSRU4gLS0+XG4gIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbjwvbmctY29udGFpbmVyPlxuIl19