@sebgroup/green-angular 5.1.2 → 5.2.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 (434) hide show
  1. package/esm2022/src/v-angular/account-number/account-number.module.mjs +18 -0
  2. package/esm2022/src/v-angular/account-number/account-number.pipe.mjs +54 -0
  3. package/esm2022/src/v-angular/account-number/index.mjs +3 -0
  4. package/esm2022/src/v-angular/account-number/sebgroup-green-angular-src-v-angular-account-number.mjs +5 -0
  5. package/esm2022/src/v-angular/alert/alert.component.mjs +47 -0
  6. package/esm2022/src/v-angular/alert/alert.models.mjs +8 -0
  7. package/esm2022/src/v-angular/alert/alert.module.mjs +18 -0
  8. package/esm2022/src/v-angular/alert/index.mjs +4 -0
  9. package/esm2022/src/v-angular/alert/sebgroup-green-angular-src-v-angular-alert.mjs +5 -0
  10. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  11. package/esm2022/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  12. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  13. package/esm2022/src/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  14. package/esm2022/src/v-angular/button/button.component.mjs +9 -9
  15. package/esm2022/src/v-angular/button/button.module.mjs +11 -11
  16. package/esm2022/src/v-angular/card/card.component.mjs +6 -6
  17. package/esm2022/src/v-angular/card/card.module.mjs +9 -9
  18. package/esm2022/src/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  19. package/esm2022/src/v-angular/checkbox/checkbox.component.mjs +9 -7
  20. package/esm2022/src/v-angular/checkbox/checkbox.module.mjs +14 -12
  21. package/esm2022/src/v-angular/core/core.utils.mjs +35 -1
  22. package/esm2022/src/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  23. package/esm2022/src/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  24. package/esm2022/src/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  25. package/esm2022/src/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  26. package/esm2022/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  27. package/esm2022/src/v-angular/datepicker/datepicker.globals.mjs +20 -0
  28. package/esm2022/src/v-angular/datepicker/datepicker.models.mjs +56 -0
  29. package/esm2022/src/v-angular/datepicker/datepicker.module.mjs +63 -0
  30. package/esm2022/src/v-angular/datepicker/datepicker.utils.mjs +196 -0
  31. package/esm2022/src/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  32. package/esm2022/src/v-angular/datepicker/index.mjs +17 -0
  33. package/esm2022/src/v-angular/datepicker/models/dates.mjs +291 -0
  34. package/esm2022/src/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  35. package/esm2022/src/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  36. package/esm2022/src/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  37. package/esm2022/src/v-angular/datepicker/sebgroup-green-angular-src-v-angular-datepicker.mjs +5 -0
  38. package/esm2022/src/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  39. package/esm2022/src/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  40. package/esm2022/src/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  41. package/esm2022/src/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  42. package/esm2022/src/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  43. package/esm2022/src/v-angular/drag-drop/index.mjs +5 -0
  44. package/esm2022/src/v-angular/drag-drop/sebgroup-green-angular-src-v-angular-drag-drop.mjs +5 -0
  45. package/esm2022/src/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  46. package/esm2022/src/v-angular/dropdown/dropdown.component.mjs +16 -9
  47. package/esm2022/src/v-angular/dropdown/dropdown.module.mjs +31 -15
  48. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  49. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  50. package/esm2022/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  51. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  52. package/esm2022/src/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  53. package/esm2022/src/v-angular/external-link/external-link.directive.mjs +5 -5
  54. package/esm2022/src/v-angular/external-link/external-link.module.mjs +9 -9
  55. package/esm2022/src/v-angular/i18n/i18n.module.mjs +12 -12
  56. package/esm2022/src/v-angular/i18n/i18n.test.module.mjs +6 -6
  57. package/esm2022/src/v-angular/info-circle/info-circle.component.mjs +6 -6
  58. package/esm2022/src/v-angular/info-circle/info-circle.module.mjs +11 -11
  59. package/esm2022/src/v-angular/input/input.component.mjs +11 -15
  60. package/esm2022/src/v-angular/input/input.module.mjs +27 -22
  61. package/esm2022/src/v-angular/input-mask/input-mask.directive.mjs +6 -6
  62. package/esm2022/src/v-angular/input-mask/input-mask.module.mjs +10 -10
  63. package/esm2022/src/v-angular/modal/dialog/dialog.component.mjs +53 -31
  64. package/esm2022/src/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  65. package/esm2022/src/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  66. package/esm2022/src/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  67. package/esm2022/src/v-angular/modal/modal.module.mjs +38 -27
  68. package/esm2022/src/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  69. package/esm2022/src/v-angular/pagination/index.mjs +3 -0
  70. package/esm2022/src/v-angular/pagination/pagination.component.mjs +144 -0
  71. package/esm2022/src/v-angular/pagination/pagination.module.mjs +37 -0
  72. package/esm2022/src/v-angular/pagination/sebgroup-green-angular-src-v-angular-pagination.mjs +5 -0
  73. package/esm2022/src/v-angular/radio/radio.component.mjs +14 -12
  74. package/esm2022/src/v-angular/radio/radio.module.mjs +12 -11
  75. package/esm2022/src/v-angular/slug/slug.module.mjs +6 -6
  76. package/esm2022/src/v-angular/table/index.mjs +9 -0
  77. package/esm2022/src/v-angular/table/sebgroup-green-angular-src-v-angular-table.mjs +5 -0
  78. package/esm2022/src/v-angular/table/table.component.mjs +387 -0
  79. package/esm2022/src/v-angular/table/table.directive.mjs +110 -0
  80. package/esm2022/src/v-angular/table/table.models.mjs +2 -0
  81. package/esm2022/src/v-angular/table/table.module.mjs +40 -0
  82. package/esm2022/src/v-angular/table/table.tools.mjs +29 -0
  83. package/esm2022/src/v-angular/table/tr-thook.pipe.mjs +22 -0
  84. package/esm2022/src/v-angular/tabs/index.mjs +8 -0
  85. package/esm2022/src/v-angular/tabs/sebgroup-green-angular-src-v-angular-tabs.mjs +5 -0
  86. package/esm2022/src/v-angular/tabs/tab.directive.mjs +81 -0
  87. package/esm2022/src/v-angular/tabs/tabs.component.mjs +262 -0
  88. package/esm2022/src/v-angular/tabs/tabs.models.mjs +2 -0
  89. package/esm2022/src/v-angular/tabs/tabs.module.mjs +21 -0
  90. package/esm2022/src/v-angular/textarea/textarea.component.mjs +9 -7
  91. package/esm2022/src/v-angular/textarea/textarea.module.mjs +27 -13
  92. package/esm2022/src/v-angular/toast/index.mjs +8 -0
  93. package/esm2022/src/v-angular/toast/sebgroup-green-angular-src-v-angular-toast.mjs +5 -0
  94. package/esm2022/src/v-angular/toast/toast-message.service.mjs +63 -0
  95. package/esm2022/src/v-angular/toast/toast.component.mjs +70 -0
  96. package/esm2022/src/v-angular/toast/toast.models.mjs +8 -0
  97. package/esm2022/src/v-angular/toast/toast.module.mjs +21 -0
  98. package/esm2022/src/v-angular/tooltip/tooltip.directive.mjs +35 -15
  99. package/esm2022/src/v-angular/tooltip/tooltip.module.mjs +11 -11
  100. package/esm2022/src/v-angular/tooltip/tooltip.styles.mjs +60 -0
  101. package/esm2022/v-angular/alert/alert.component.mjs +47 -0
  102. package/esm2022/v-angular/alert/alert.models.mjs +8 -0
  103. package/esm2022/v-angular/alert/alert.module.mjs +18 -0
  104. package/esm2022/v-angular/alert/index.mjs +4 -0
  105. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.component.mjs +16 -6
  106. package/esm2022/v-angular/base-control-value-accessor/base-control-value-accessor.module.mjs +9 -9
  107. package/esm2022/v-angular/breadcrumbs/breadcrumbs.component.mjs +5 -5
  108. package/esm2022/v-angular/breadcrumbs/breadcrumbs.module.mjs +11 -11
  109. package/esm2022/v-angular/button/button.component.mjs +9 -9
  110. package/esm2022/v-angular/button/button.module.mjs +11 -11
  111. package/esm2022/v-angular/card/card.component.mjs +6 -6
  112. package/esm2022/v-angular/card/card.module.mjs +9 -9
  113. package/esm2022/v-angular/character-countdown/character-countdown.module.mjs +6 -6
  114. package/esm2022/v-angular/checkbox/checkbox.component.mjs +9 -7
  115. package/esm2022/v-angular/checkbox/checkbox.module.mjs +14 -12
  116. package/esm2022/v-angular/datepicker/components/calendar/calendar.component.mjs +200 -0
  117. package/esm2022/v-angular/datepicker/components/calendar-control/calendar-control.component.mjs +115 -0
  118. package/esm2022/v-angular/datepicker/components/date-input/date-input.component.mjs +203 -0
  119. package/esm2022/v-angular/datepicker/components/datepicker/datepicker.component.mjs +135 -0
  120. package/esm2022/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.mjs +408 -0
  121. package/esm2022/v-angular/datepicker/datepicker.globals.mjs +20 -0
  122. package/esm2022/v-angular/datepicker/datepicker.models.mjs +56 -0
  123. package/esm2022/v-angular/datepicker/datepicker.module.mjs +63 -0
  124. package/esm2022/v-angular/datepicker/datepicker.utils.mjs +196 -0
  125. package/esm2022/v-angular/datepicker/directives/calendar-date.directive.mjs +47 -0
  126. package/esm2022/v-angular/datepicker/index.mjs +17 -0
  127. package/esm2022/v-angular/datepicker/models/dates.mjs +291 -0
  128. package/esm2022/v-angular/datepicker/pipes/date-thook.pipe.mjs +30 -0
  129. package/esm2022/v-angular/datepicker/pipes/is-disabled.pipe.mjs +37 -0
  130. package/esm2022/v-angular/datepicker/pipes/matches.pipe.mjs +17 -0
  131. package/esm2022/v-angular/drag-drop/drag-drop.component.mjs +497 -0
  132. package/esm2022/v-angular/drag-drop/drag-drop.models.mjs +2 -0
  133. package/esm2022/v-angular/drag-drop/drag-drop.module.mjs +49 -0
  134. package/esm2022/v-angular/drag-drop/drag-drop.pipes.mjs +70 -0
  135. package/esm2022/v-angular/drag-drop/drag-drop.utils.mjs +76 -0
  136. package/esm2022/v-angular/drag-drop/index.mjs +5 -0
  137. package/esm2022/v-angular/dropdown/dropdown-list/dropdown-list.component.mjs +24 -9
  138. package/esm2022/v-angular/dropdown/dropdown.component.mjs +16 -9
  139. package/esm2022/v-angular/dropdown/dropdown.module.mjs +31 -15
  140. package/esm2022/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.mjs +8 -8
  141. package/esm2022/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.mjs +5 -5
  142. package/esm2022/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.mjs +17 -10
  143. package/esm2022/v-angular/dropdown/typeahead/typeahead.directive.mjs +27 -20
  144. package/esm2022/v-angular/dropdown/typeahead/typeahead.module.mjs +21 -21
  145. package/esm2022/v-angular/external-link/external-link.directive.mjs +37 -0
  146. package/esm2022/v-angular/external-link/external-link.module.mjs +18 -0
  147. package/esm2022/v-angular/external-link/index.mjs +3 -0
  148. package/esm2022/v-angular/i18n/i18n.module.mjs +12 -12
  149. package/esm2022/v-angular/i18n/i18n.test.module.mjs +6 -6
  150. package/esm2022/v-angular/index.mjs +10 -1
  151. package/esm2022/v-angular/info-circle/info-circle.component.mjs +6 -6
  152. package/esm2022/v-angular/info-circle/info-circle.module.mjs +11 -11
  153. package/esm2022/v-angular/input/input.component.mjs +11 -15
  154. package/esm2022/v-angular/input/input.module.mjs +27 -22
  155. package/esm2022/v-angular/input-mask/input-mask.directive.mjs +6 -6
  156. package/esm2022/v-angular/input-mask/input-mask.module.mjs +10 -10
  157. package/esm2022/v-angular/modal/dialog/dialog.component.mjs +53 -31
  158. package/esm2022/v-angular/modal/fold-out/fold-out.component.mjs +116 -16
  159. package/esm2022/v-angular/modal/fold-out/fold-out.directive.mjs +5 -5
  160. package/esm2022/v-angular/modal/fold-out/keyboard-key.enum.mjs +9 -0
  161. package/esm2022/v-angular/modal/modal.module.mjs +38 -27
  162. package/esm2022/v-angular/modal/slide-out/slide-out.component.mjs +35 -12
  163. package/esm2022/v-angular/pagination/index.mjs +3 -0
  164. package/esm2022/v-angular/pagination/pagination.component.mjs +144 -0
  165. package/esm2022/v-angular/pagination/pagination.module.mjs +37 -0
  166. package/esm2022/v-angular/radio/radio.component.mjs +14 -12
  167. package/esm2022/v-angular/radio/radio.module.mjs +12 -11
  168. package/esm2022/v-angular/slug/index.mjs +3 -0
  169. package/esm2022/v-angular/slug/slug.module.mjs +18 -0
  170. package/esm2022/v-angular/slug/slug.pipe.mjs +27 -0
  171. package/esm2022/v-angular/table/index.mjs +9 -0
  172. package/esm2022/v-angular/table/table.component.mjs +387 -0
  173. package/esm2022/v-angular/table/table.directive.mjs +110 -0
  174. package/esm2022/v-angular/table/table.models.mjs +2 -0
  175. package/esm2022/v-angular/table/table.module.mjs +40 -0
  176. package/esm2022/v-angular/table/table.tools.mjs +29 -0
  177. package/esm2022/v-angular/table/tr-thook.pipe.mjs +22 -0
  178. package/esm2022/v-angular/tabs/index.mjs +8 -0
  179. package/esm2022/v-angular/tabs/tab.directive.mjs +81 -0
  180. package/esm2022/v-angular/tabs/tabs.component.mjs +262 -0
  181. package/esm2022/v-angular/tabs/tabs.models.mjs +2 -0
  182. package/esm2022/v-angular/tabs/tabs.module.mjs +21 -0
  183. package/esm2022/v-angular/textarea/textarea.component.mjs +9 -7
  184. package/esm2022/v-angular/textarea/textarea.module.mjs +27 -13
  185. package/esm2022/v-angular/toast/index.mjs +8 -0
  186. package/esm2022/v-angular/toast/toast-message.service.mjs +63 -0
  187. package/esm2022/v-angular/toast/toast.component.mjs +70 -0
  188. package/esm2022/v-angular/toast/toast.models.mjs +8 -0
  189. package/esm2022/v-angular/toast/toast.module.mjs +21 -0
  190. package/esm2022/v-angular/tooltip/tooltip.directive.mjs +35 -15
  191. package/esm2022/v-angular/tooltip/tooltip.module.mjs +11 -11
  192. package/esm2022/v-angular/tooltip/tooltip.styles.mjs +60 -0
  193. package/esm2022/v-angular/v-angular.module.mjs +104 -68
  194. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs +76 -0
  195. package/fesm2022/sebgroup-green-angular-src-v-angular-account-number.mjs.map +1 -0
  196. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs +76 -0
  197. package/fesm2022/sebgroup-green-angular-src-v-angular-alert.mjs.map +1 -0
  198. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs +23 -13
  199. package/fesm2022/sebgroup-green-angular-src-v-angular-base-control-value-accessor.mjs.map +1 -1
  200. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs +14 -14
  201. package/fesm2022/sebgroup-green-angular-src-v-angular-breadcrumbs.mjs.map +1 -1
  202. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs +18 -18
  203. package/fesm2022/sebgroup-green-angular-src-v-angular-button.mjs.map +1 -1
  204. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs +13 -13
  205. package/fesm2022/sebgroup-green-angular-src-v-angular-card.mjs.map +1 -1
  206. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs +6 -6
  207. package/fesm2022/sebgroup-green-angular-src-v-angular-character-countdown.mjs.map +1 -1
  208. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs +21 -17
  209. package/fesm2022/sebgroup-green-angular-src-v-angular-checkbox.mjs.map +1 -1
  210. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs +34 -0
  211. package/fesm2022/sebgroup-green-angular-src-v-angular-core.mjs.map +1 -1
  212. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs +1759 -0
  213. package/fesm2022/sebgroup-green-angular-src-v-angular-datepicker.mjs.map +1 -0
  214. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs +687 -0
  215. package/fesm2022/sebgroup-green-angular-src-v-angular-drag-drop.mjs.map +1 -0
  216. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs +126 -74
  217. package/fesm2022/sebgroup-green-angular-src-v-angular-dropdown.mjs.map +1 -1
  218. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs +12 -12
  219. package/fesm2022/sebgroup-green-angular-src-v-angular-external-link.mjs.map +1 -1
  220. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs +17 -17
  221. package/fesm2022/sebgroup-green-angular-src-v-angular-i18n.mjs.map +1 -1
  222. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs +15 -15
  223. package/fesm2022/sebgroup-green-angular-src-v-angular-info-circle.mjs.map +1 -1
  224. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs +14 -14
  225. package/fesm2022/sebgroup-green-angular-src-v-angular-input-mask.mjs.map +1 -1
  226. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs +36 -35
  227. package/fesm2022/sebgroup-green-angular-src-v-angular-input.mjs.map +1 -1
  228. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs +246 -81
  229. package/fesm2022/sebgroup-green-angular-src-v-angular-modal.mjs.map +1 -1
  230. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs +185 -0
  231. package/fesm2022/sebgroup-green-angular-src-v-angular-pagination.mjs.map +1 -0
  232. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs +24 -21
  233. package/fesm2022/sebgroup-green-angular-src-v-angular-radio.mjs.map +1 -1
  234. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs +6 -6
  235. package/fesm2022/sebgroup-green-angular-src-v-angular-slug.mjs.map +1 -1
  236. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs +585 -0
  237. package/fesm2022/sebgroup-green-angular-src-v-angular-table.mjs.map +1 -0
  238. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs +367 -0
  239. package/fesm2022/sebgroup-green-angular-src-v-angular-tabs.mjs.map +1 -0
  240. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs +33 -18
  241. package/fesm2022/sebgroup-green-angular-src-v-angular-textarea.mjs.map +1 -1
  242. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs +166 -0
  243. package/fesm2022/sebgroup-green-angular-src-v-angular-toast.mjs.map +1 -0
  244. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs +103 -24
  245. package/fesm2022/sebgroup-green-angular-src-v-angular-tooltip.mjs.map +1 -1
  246. package/fesm2022/sebgroup-green-angular-v-angular.mjs +6295 -2165
  247. package/fesm2022/sebgroup-green-angular-v-angular.mjs.map +1 -1
  248. package/package.json +51 -3
  249. package/src/v-angular/account-number/README.md +70 -0
  250. package/src/v-angular/account-number/account-number.module.d.ts +8 -0
  251. package/src/v-angular/account-number/account-number.pipe.d.ts +32 -0
  252. package/src/v-angular/account-number/index.d.ts +2 -0
  253. package/src/v-angular/alert/alert.component.d.ts +19 -0
  254. package/src/v-angular/alert/alert.models.d.ts +13 -0
  255. package/src/v-angular/alert/alert.module.d.ts +8 -0
  256. package/src/v-angular/alert/index.d.ts +3 -0
  257. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  258. package/src/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  259. package/src/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  260. package/src/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  261. package/src/v-angular/button/button.component.d.ts +5 -5
  262. package/src/v-angular/button/button.module.d.ts +4 -4
  263. package/src/v-angular/card/card.component.d.ts +3 -3
  264. package/src/v-angular/card/card.module.d.ts +4 -4
  265. package/src/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  266. package/src/v-angular/checkbox/checkbox.component.d.ts +6 -5
  267. package/src/v-angular/checkbox/checkbox.module.d.ts +5 -4
  268. package/src/v-angular/core/core.utils.d.ts +1 -0
  269. package/src/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  270. package/src/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  271. package/src/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  272. package/src/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  273. package/src/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  274. package/src/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  275. package/src/v-angular/datepicker/datepicker.models.d.ts +50 -0
  276. package/src/v-angular/datepicker/datepicker.module.d.ts +19 -0
  277. package/src/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  278. package/src/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  279. package/src/v-angular/datepicker/index.d.ts +13 -0
  280. package/src/v-angular/datepicker/models/dates.d.ts +15 -0
  281. package/src/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  282. package/src/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  283. package/src/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  284. package/src/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  285. package/src/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  286. package/src/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  287. package/src/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  288. package/src/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  289. package/src/v-angular/drag-drop/index.d.ts +4 -0
  290. package/src/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  291. package/src/v-angular/dropdown/dropdown.component.d.ts +10 -6
  292. package/src/v-angular/dropdown/dropdown.module.d.ts +8 -7
  293. package/src/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  294. package/src/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  295. package/src/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  296. package/src/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  297. package/src/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  298. package/src/v-angular/external-link/external-link.directive.d.ts +3 -3
  299. package/src/v-angular/external-link/external-link.module.d.ts +4 -4
  300. package/src/v-angular/i18n/i18n.module.d.ts +7 -7
  301. package/src/v-angular/i18n/i18n.test.module.d.ts +4 -4
  302. package/src/v-angular/info-circle/info-circle.component.d.ts +4 -4
  303. package/src/v-angular/info-circle/info-circle.module.d.ts +4 -4
  304. package/src/v-angular/input/input.component.d.ts +5 -10
  305. package/src/v-angular/input/input.module.d.ts +5 -4
  306. package/src/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  307. package/src/v-angular/input-mask/input-mask.module.d.ts +5 -5
  308. package/src/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  309. package/src/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  310. package/src/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  311. package/src/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  312. package/src/v-angular/modal/modal.module.d.ts +4 -4
  313. package/src/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  314. package/src/v-angular/pagination/index.d.ts +2 -0
  315. package/src/v-angular/pagination/pagination.component.d.ts +64 -0
  316. package/src/v-angular/pagination/pagination.module.d.ts +12 -0
  317. package/src/v-angular/radio/radio.component.d.ts +14 -13
  318. package/src/v-angular/radio/radio.module.d.ts +5 -4
  319. package/src/v-angular/slug/slug.module.d.ts +4 -4
  320. package/src/v-angular/table/index.d.ts +5 -0
  321. package/src/v-angular/table/table.component.d.ts +229 -0
  322. package/src/v-angular/table/table.directive.d.ts +36 -0
  323. package/src/v-angular/table/table.models.d.ts +62 -0
  324. package/src/v-angular/table/table.module.d.ts +12 -0
  325. package/src/v-angular/table/table.tools.d.ts +5 -0
  326. package/src/v-angular/table/tr-thook.pipe.d.ts +7 -0
  327. package/src/v-angular/tabs/index.d.ts +4 -0
  328. package/src/v-angular/tabs/tab.directive.d.ts +37 -0
  329. package/src/v-angular/tabs/tabs.component.d.ts +65 -0
  330. package/src/v-angular/tabs/tabs.models.d.ts +25 -0
  331. package/src/v-angular/tabs/tabs.module.d.ts +11 -0
  332. package/src/v-angular/textarea/textarea.component.d.ts +6 -5
  333. package/src/v-angular/textarea/textarea.module.d.ts +6 -4
  334. package/src/v-angular/toast/index.d.ts +4 -0
  335. package/src/v-angular/toast/toast-message.service.d.ts +17 -0
  336. package/src/v-angular/toast/toast.component.d.ts +22 -0
  337. package/src/v-angular/toast/toast.models.d.ts +15 -0
  338. package/src/v-angular/toast/toast.module.d.ts +10 -0
  339. package/src/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  340. package/src/v-angular/tooltip/tooltip.module.d.ts +4 -4
  341. package/src/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  342. package/v-angular/alert/alert.component.d.ts +19 -0
  343. package/v-angular/alert/alert.models.d.ts +13 -0
  344. package/v-angular/alert/alert.module.d.ts +8 -0
  345. package/v-angular/alert/index.d.ts +3 -0
  346. package/v-angular/base-control-value-accessor/base-control-value-accessor.component.d.ts +10 -4
  347. package/v-angular/base-control-value-accessor/base-control-value-accessor.module.d.ts +4 -4
  348. package/v-angular/breadcrumbs/breadcrumbs.component.d.ts +4 -4
  349. package/v-angular/breadcrumbs/breadcrumbs.module.d.ts +4 -4
  350. package/v-angular/button/button.component.d.ts +5 -5
  351. package/v-angular/button/button.module.d.ts +4 -4
  352. package/v-angular/card/card.component.d.ts +3 -3
  353. package/v-angular/card/card.module.d.ts +4 -4
  354. package/v-angular/character-countdown/character-countdown.module.d.ts +4 -4
  355. package/v-angular/checkbox/checkbox.component.d.ts +6 -5
  356. package/v-angular/checkbox/checkbox.module.d.ts +5 -4
  357. package/v-angular/datepicker/components/calendar/calendar.component.d.ts +36 -0
  358. package/v-angular/datepicker/components/calendar-control/calendar-control.component.d.ts +30 -0
  359. package/v-angular/datepicker/components/date-input/date-input.component.d.ts +102 -0
  360. package/v-angular/datepicker/components/datepicker/datepicker.component.d.ts +62 -0
  361. package/v-angular/datepicker/date-control-value-accessor/date-control-value-accessor.component.d.ts +165 -0
  362. package/v-angular/datepicker/datepicker.globals.d.ts +13 -0
  363. package/v-angular/datepicker/datepicker.models.d.ts +50 -0
  364. package/v-angular/datepicker/datepicker.module.d.ts +19 -0
  365. package/v-angular/datepicker/datepicker.utils.d.ts +39 -0
  366. package/v-angular/datepicker/directives/calendar-date.directive.d.ts +21 -0
  367. package/v-angular/datepicker/index.d.ts +13 -0
  368. package/v-angular/datepicker/models/dates.d.ts +15 -0
  369. package/v-angular/datepicker/pipes/date-thook.pipe.d.ts +8 -0
  370. package/v-angular/datepicker/pipes/is-disabled.pipe.d.ts +8 -0
  371. package/v-angular/datepicker/pipes/matches.pipe.d.ts +7 -0
  372. package/v-angular/drag-drop/drag-drop.component.d.ts +131 -0
  373. package/v-angular/drag-drop/drag-drop.models.d.ts +49 -0
  374. package/v-angular/drag-drop/drag-drop.module.d.ts +13 -0
  375. package/v-angular/drag-drop/drag-drop.pipes.d.ts +40 -0
  376. package/v-angular/drag-drop/drag-drop.utils.d.ts +33 -0
  377. package/v-angular/drag-drop/index.d.ts +4 -0
  378. package/v-angular/dropdown/dropdown-list/dropdown-list.component.d.ts +11 -4
  379. package/v-angular/dropdown/dropdown.component.d.ts +10 -6
  380. package/v-angular/dropdown/dropdown.module.d.ts +8 -7
  381. package/v-angular/dropdown/typeahead/typeahead-dropdown-list/typeahead-dropdown-list.component.d.ts +6 -6
  382. package/v-angular/dropdown/typeahead/typeahead-highlight/typeahead-highlight.component.d.ts +3 -3
  383. package/v-angular/dropdown/typeahead/typeahead-input/typeahead-input.component.d.ts +8 -6
  384. package/v-angular/dropdown/typeahead/typeahead.directive.d.ts +14 -12
  385. package/v-angular/dropdown/typeahead/typeahead.module.d.ts +4 -4
  386. package/v-angular/external-link/external-link.directive.d.ts +17 -0
  387. package/v-angular/external-link/external-link.module.d.ts +8 -0
  388. package/v-angular/external-link/index.d.ts +2 -0
  389. package/v-angular/i18n/i18n.module.d.ts +7 -7
  390. package/v-angular/i18n/i18n.test.module.d.ts +4 -4
  391. package/v-angular/index.d.ts +9 -0
  392. package/v-angular/info-circle/info-circle.component.d.ts +4 -4
  393. package/v-angular/info-circle/info-circle.module.d.ts +4 -4
  394. package/v-angular/input/input.component.d.ts +5 -10
  395. package/v-angular/input/input.module.d.ts +5 -4
  396. package/v-angular/input-mask/input-mask.directive.d.ts +3 -3
  397. package/v-angular/input-mask/input-mask.module.d.ts +5 -5
  398. package/v-angular/modal/dialog/dialog.component.d.ts +16 -7
  399. package/v-angular/modal/fold-out/fold-out.component.d.ts +34 -11
  400. package/v-angular/modal/fold-out/fold-out.directive.d.ts +3 -3
  401. package/v-angular/modal/fold-out/keyboard-key.enum.d.ts +7 -0
  402. package/v-angular/modal/modal.module.d.ts +4 -4
  403. package/v-angular/modal/slide-out/slide-out.component.d.ts +13 -6
  404. package/v-angular/pagination/index.d.ts +2 -0
  405. package/v-angular/pagination/pagination.component.d.ts +64 -0
  406. package/v-angular/pagination/pagination.module.d.ts +12 -0
  407. package/v-angular/radio/radio.component.d.ts +14 -13
  408. package/v-angular/radio/radio.module.d.ts +5 -4
  409. package/v-angular/slug/index.d.ts +2 -0
  410. package/v-angular/slug/slug.module.d.ts +8 -0
  411. package/v-angular/slug/slug.pipe.d.ts +12 -0
  412. package/v-angular/table/index.d.ts +5 -0
  413. package/v-angular/table/table.component.d.ts +229 -0
  414. package/v-angular/table/table.directive.d.ts +36 -0
  415. package/v-angular/table/table.models.d.ts +62 -0
  416. package/v-angular/table/table.module.d.ts +12 -0
  417. package/v-angular/table/table.tools.d.ts +5 -0
  418. package/v-angular/table/tr-thook.pipe.d.ts +7 -0
  419. package/v-angular/tabs/index.d.ts +4 -0
  420. package/v-angular/tabs/tab.directive.d.ts +37 -0
  421. package/v-angular/tabs/tabs.component.d.ts +65 -0
  422. package/v-angular/tabs/tabs.models.d.ts +25 -0
  423. package/v-angular/tabs/tabs.module.d.ts +11 -0
  424. package/v-angular/textarea/textarea.component.d.ts +6 -5
  425. package/v-angular/textarea/textarea.module.d.ts +6 -4
  426. package/v-angular/toast/index.d.ts +4 -0
  427. package/v-angular/toast/toast-message.service.d.ts +17 -0
  428. package/v-angular/toast/toast.component.d.ts +22 -0
  429. package/v-angular/toast/toast.models.d.ts +15 -0
  430. package/v-angular/toast/toast.module.d.ts +10 -0
  431. package/v-angular/tooltip/tooltip.directive.d.ts +5 -3
  432. package/v-angular/tooltip/tooltip.module.d.ts +4 -4
  433. package/v-angular/tooltip/tooltip.styles.d.ts +11 -0
  434. package/v-angular/v-angular.module.d.ts +27 -18
@@ -1,22 +1,25 @@
1
+ import '@sebgroup/green-core/components/icon/icons/triangle-exclamation.js';
1
2
  import * as i0 from '@angular/core';
2
- import { Component, Input, EventEmitter, Optional, Inject, ViewChildren, HostBinding, Output, HostListener, TemplateRef, Self, ContentChild, SkipSelf, NgModule, Directive, Host } from '@angular/core';
3
+ import { Component, Input, EventEmitter, Optional, Inject, ViewChildren, HostBinding, Output, HostListener, TemplateRef, Self, ContentChild, SkipSelf, NgModule, CUSTOM_ELEMENTS_SCHEMA, Directive, Host } from '@angular/core';
3
4
  import * as i1$1 from '@angular/forms';
4
5
  import * as i4 from '@jsverse/transloco';
5
6
  import { TRANSLOCO_SCOPE } from '@jsverse/transloco';
6
7
  import { Subject, fromEvent, takeUntil, distinctUntilChanged, tap, from, withLatestFrom } from 'rxjs';
7
- import { NgvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor';
8
+ import { NggvBaseControlValueAccessorComponent } from '@sebgroup/green-angular/src/v-angular/base-control-value-accessor';
8
9
  import * as i2 from '@sebgroup/green-angular/src/v-angular/core';
9
10
  import { DropdownUtils } from '@sebgroup/green-angular/src/v-angular/core';
10
11
  import * as i1 from '@angular/common';
11
12
  import { CommonModule } from '@angular/common';
13
+ import * as i4$1 from '@sebgroup/green-angular/src/lib/shared';
14
+ import { NggCoreWrapperModule } from '@sebgroup/green-angular/src/lib/shared';
12
15
  import scrollIntoView from 'scroll-into-view-if-needed';
13
16
  import * as i3 from '@sebgroup/green-angular/src/v-angular/tooltip';
14
- import { NgvTooltipModule } from '@sebgroup/green-angular/src/v-angular/tooltip';
15
- import { NgvI18nModule } from '@sebgroup/green-angular/src/v-angular/i18n';
17
+ import { NggvTooltipModule } from '@sebgroup/green-angular/src/v-angular/tooltip';
18
+ import { NggvI18nModule } from '@sebgroup/green-angular/src/v-angular/i18n';
16
19
  import * as i2$1 from '@sebgroup/green-angular/src/v-angular/input';
17
- import { NgvInputComponent } from '@sebgroup/green-angular/src/v-angular/input';
20
+ import { NggvInputComponent } from '@sebgroup/green-angular/src/v-angular/input';
18
21
 
19
- class NgvTypeaheadHighlightComponent {
22
+ class NggvTypeaheadHighlightComponent {
20
23
  constructor() {
21
24
  this.text = '';
22
25
  this.input = '';
@@ -86,10 +89,10 @@ class NgvTypeaheadHighlightComponent {
86
89
  }
87
90
  return { start, end };
88
91
  }
89
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadHighlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
90
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: { textContent: "textContent", textToHighlight: "textToHighlight" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!this.match\">{{ textContent }}</ng-container>\n<!-- Note that this is sensitive to line breaks producing extra spacing between the different parts -->\n<ng-container *ngIf=\"!!this.match\">\n {{ prefix || '' }}<span class=\"match\">{{ match }}</span\n >{{ suffix || '' }}\n</ng-container>\n", styles: [":host .match{font-weight:500}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
92
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadHighlightComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
93
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: { textContent: "textContent", textToHighlight: "textToHighlight" }, usesOnChanges: true, ngImport: i0, template: "<ng-container *ngIf=\"!this.match\">{{ textContent }}</ng-container>\n<!-- Note that this is sensitive to line breaks producing extra spacing between the different parts -->\n<ng-container *ngIf=\"!!this.match\">\n {{ prefix || '' }}<span class=\"match\">{{ match }}</span\n >{{ suffix || '' }}\n</ng-container>\n", styles: [":host .match{font-weight:500}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
91
94
  }
92
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadHighlightComponent, decorators: [{
95
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadHighlightComponent, decorators: [{
93
96
  type: Component,
94
97
  args: [{ selector: 'nggv-typeahead-highlight', template: "<ng-container *ngIf=\"!this.match\">{{ textContent }}</ng-container>\n<!-- Note that this is sensitive to line breaks producing extra spacing between the different parts -->\n<ng-container *ngIf=\"!!this.match\">\n {{ prefix || '' }}<span class=\"match\">{{ match }}</span\n >{{ suffix || '' }}\n</ng-container>\n", styles: [":host .match{font-weight:500}\n"] }]
95
98
  }], propDecorators: { textContent: [{
@@ -98,7 +101,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
98
101
  type: Input
99
102
  }] } });
100
103
 
101
- class NgvDropdownListComponent {
104
+ class NggvDropdownListComponent {
102
105
  set expanded(state) {
103
106
  this.setExpanded(state);
104
107
  }
@@ -113,6 +116,12 @@ class NgvDropdownListComponent {
113
116
  this.id = window.nggv?.nextId();
114
117
  /** Special property used for selecting DOM elements during automated UI testing. */
115
118
  this.thook = 'dropdown';
119
+ /**
120
+ * Used to control if "selectedValueChanged" only should emit distinct changes, or each time a value is selected
121
+ * When true, value is not emitted if there's no distinct change
122
+ * When false, value is emitted every time an option is selected
123
+ * */
124
+ this.onlyEmitDistinctChanges = true;
116
125
  this.selectedValueChanged = new EventEmitter();
117
126
  this.closed = new EventEmitter();
118
127
  /** The current active option based on numeric index. */
@@ -144,9 +153,12 @@ class NgvDropdownListComponent {
144
153
  updateState(option, event) {
145
154
  if (option.disabled)
146
155
  return;
147
- this.selectedValue = option;
148
- this.state = option;
149
- this.selectedValueChanged.emit(option);
156
+ if (!this.onlyEmitDistinctChanges ||
157
+ !this.dropdownUtils.deepEqual(this.selectedValue, option)) {
158
+ this.selectedValue = option;
159
+ this.state = option;
160
+ this.selectedValueChanged.emit(option);
161
+ }
150
162
  this.setExpanded(false);
151
163
  event.stopPropagation();
152
164
  }
@@ -233,10 +245,12 @@ class NgvDropdownListComponent {
233
245
  const options = this.dropdownUtils.flattenOptions(this.options, !this.optionContentTpl);
234
246
  let option;
235
247
  switch (event.key) {
248
+ case 'Tab':
236
249
  case 'Escape':
237
250
  this.setExpanded(false);
238
251
  this.closed.emit();
239
252
  break;
253
+ case 'Space': // Select the currently chosen value
240
254
  case 'Enter': // Select the currently chosen value
241
255
  option = options[this.activeIndex];
242
256
  this.updateState(option, event);
@@ -296,12 +310,12 @@ class NgvDropdownListComponent {
296
310
  }, 0);
297
311
  }
298
312
  }
299
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
300
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgvDropdownListComponent, selector: "nggv-dropdown-list", inputs: { expanded: "expanded", state: "state", scrollOffset: "scrollOffset", optionContentTpl: "optionContentTpl", id: "id", thook: "thook", options: "options", textToHighlight: "textToHighlight" }, outputs: { selectedValueChanged: "selectedValueChanged", closed: "closed" }, host: { listeners: { "document:keydown": "onKeyDown($event)", "document:keyup": "onKeyUp($event)" }, properties: { "attr.id": "this.id", "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "optionRefs", predicate: ["optionRefs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }, { kind: "directive", type: i3.NgvTooltipDirective, selector: "[nggvTooltip]", inputs: ["nggvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "maxWidth"], outputs: ["nggvShow", "nggvHide"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
313
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
314
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvDropdownListComponent, selector: "nggv-dropdown-list", inputs: { expanded: "expanded", state: "state", scrollOffset: "scrollOffset", optionContentTpl: "optionContentTpl", groupLabelTpl: "groupLabelTpl", id: "id", thook: "thook", options: "options", textToHighlight: "textToHighlight", onlyEmitDistinctChanges: "onlyEmitDistinctChanges" }, outputs: { selectedValueChanged: "selectedValueChanged", closed: "closed" }, host: { listeners: { "document:keydown": "onKeyDown($event)", "document:keyup": "onKeyUp($event)" }, properties: { "attr.id": "this.id", "attr.data-thook": "this.thook" } }, viewQueries: [{ propertyName: "optionRefs", predicate: ["optionRefs"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <!-- group label template (default or custom) -->\n <ng-template\n *ngTemplateOutlet=\"listGroupTemplate; context: { $implicit: item }\"\n ></ng-template>\n\n <ul [attr.aria-disabled]=\"item.disabled\" class=\"gds-reset\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #listGroupTemplate let-item>\n <ng-container *ngIf=\"groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"groupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"basicGroupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n\n <ng-template #basicGroupLabelTpl let-item>\n <div class=\"nggv-group-label\">{{ t(item.label) }}</div>\n </ng-template>\n</ng-container>\n", styles: [":host{--gds-ref-pallet-base300: hsl(0, 0%, 87%);--gds-ref-pallet-base400: hsl(0, 0%, 81%);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-z-index-dropdown: ;--sg-z-index-popover: 1060;--sg-z-index-dropdown-backdrop: 990;--sg-z-index-dropdown: 2000;--sg-popover-background: #fff;--sg-popover-box-shadow: 0 .125rem .375rem rgba(0, 0, 0, .15);--text-primary-color: #333;position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover{background-color:var(--gds-ref-pallet-base400)}:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--gds-ref-pallet-base300)}:host .gds-dropdown__options__label:active{background-color:var(--gds-ref-pallet-base500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}:host li+.group{padding-top:0}:host .nggv-group-label{cursor:pointer;background-color:#e7e7e7;padding-inline:1rem;padding-block:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NggvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }, { kind: "directive", type: i3.NggvTooltipDirective, selector: "[nggvTooltip]", inputs: ["nggvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "tooltipId", "maxWidth"], outputs: ["nggvShow", "nggvHide"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }] }); }
301
315
  }
302
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownListComponent, decorators: [{
316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownListComponent, decorators: [{
303
317
  type: Component,
304
- args: [{ selector: 'nggv-dropdown-list', template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"] }]
318
+ args: [{ selector: 'nggv-dropdown-list', template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <!-- group label template (default or custom) -->\n <ng-template\n *ngTemplateOutlet=\"listGroupTemplate; context: { $implicit: item }\"\n ></ng-template>\n\n <ul [attr.aria-disabled]=\"item.disabled\" class=\"gds-reset\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #listGroupTemplate let-item>\n <ng-container *ngIf=\"groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"groupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"basicGroupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n\n <ng-template #basicGroupLabelTpl let-item>\n <div class=\"nggv-group-label\">{{ t(item.label) }}</div>\n </ng-template>\n</ng-container>\n", styles: [":host{--gds-ref-pallet-base300: hsl(0, 0%, 87%);--gds-ref-pallet-base400: hsl(0, 0%, 81%);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-z-index-dropdown: ;--sg-z-index-popover: 1060;--sg-z-index-dropdown-backdrop: 990;--sg-z-index-dropdown: 2000;--sg-popover-background: #fff;--sg-popover-box-shadow: 0 .125rem .375rem rgba(0, 0, 0, .15);--text-primary-color: #333;position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover{background-color:var(--gds-ref-pallet-base400)}:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--gds-ref-pallet-base300)}:host .gds-dropdown__options__label:active{background-color:var(--gds-ref-pallet-base500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}:host li+.group{padding-top:0}:host .nggv-group-label{cursor:pointer;background-color:#e7e7e7;padding-inline:1rem;padding-block:.5rem}\n"] }]
305
319
  }], ctorParameters: () => [{ type: undefined, decorators: [{
306
320
  type: Optional
307
321
  }, {
@@ -315,6 +329,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
315
329
  type: Input
316
330
  }], optionContentTpl: [{
317
331
  type: Input
332
+ }], groupLabelTpl: [{
333
+ type: Input
318
334
  }], optionRefs: [{
319
335
  type: ViewChildren,
320
336
  args: ['optionRefs']
@@ -332,6 +348,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
332
348
  type: Input
333
349
  }], textToHighlight: [{
334
350
  type: Input
351
+ }], onlyEmitDistinctChanges: [{
352
+ type: Input
335
353
  }], selectedValueChanged: [{
336
354
  type: Output
337
355
  }], closed: [{
@@ -349,7 +367,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
349
367
  * Dropdowns enables users to make a quick selection of the available options for a specific entry.
350
368
  * https://designlibrary.sebgroup.com/components/component-dropdown
351
369
  */
352
- class NgvDropdownComponent extends NgvBaseControlValueAccessorComponent {
370
+ class NggvDropdownComponent extends NggvBaseControlValueAccessorComponent {
353
371
  /** List of {@link Option} and {@link OptionGroup} listed when dropdown is expanded. */
354
372
  set options(value) {
355
373
  // update options
@@ -526,12 +544,12 @@ class NgvDropdownComponent extends NgvBaseControlValueAccessorComponent {
526
544
  isOption(option) {
527
545
  return !('options' in option);
528
546
  }
529
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownComponent, deps: [{ token: i1$1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }, { token: i2.DropdownUtils }], target: i0.ɵɵFactoryTarget.Component }); }
530
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgvDropdownComponent, selector: "nggv-dropdown", inputs: { thook: "thook", placeholder: "placeholder", options: "options", scrollOffset: "scrollOffset", allowControlNullishOption: "allowControlNullishOption", textToHighlight: "textToHighlight", selectOnSingleOption: "selectOnSingleOption" }, outputs: { expandedChange: "expandedChange" }, host: { listeners: { "keyup": "onKeyUp($event)" }, properties: { "attr.data-thook": "this.thook" } }, queries: [{ propertyName: "selectedContentTpl", first: true, predicate: ["selectedTpl"], descendants: true, read: TemplateRef }, { propertyName: "optionContentTpl", first: true, predicate: ["optionTpl"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label [id]=\"id + '-label'\" class=\"sdv-field-label hide-if-empty\" [attr.for]=\"id + '-toggle'\">\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"nggv-field-dropdown__label toggle\"\n [class.nggv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-toggle'\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <nggv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [textToHighlight]=\"textToHighlight\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </nggv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-input'\"\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\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host button{font-weight:500;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199);background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-800);--sg-border-color: var(--grey-800);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:inherit;font-weight:400;line-height:1.125;margin-bottom:.5rem;margin-top:.5rem;width:100%}@media screen and (-ms-high-contrast: active){:host button{border:2px solid currentcolor}}:host button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: rgb(25.4035777564, 154.8940067842, 227.221994169);--color: rgb(255, 255, 255);border-color:#199be3}:host button[aria-selected=true],:host button:active,:host button.active,:host button.active:hover,:host button:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host button:disabled,:host button.disabled,:host button[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host button:disabled::placeholder,:host button.disabled::placeholder,:host button[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button:not(:disabled,.disabled,[aria-disabled]):hover{--background: var(--grey-400);--color: var(--grey-1000);background-color:var(--grey-400);color:var(--grey-1000);border-color:var(--grey-1000)}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button.small{font-size:.875rem}:host button:hover{background:var(--grey-400)}:host .dropdown{width:100%;position:relative}:host .dropdown nggv-dropdown-list{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: NgvDropdownListComponent, selector: "nggv-dropdown-list", inputs: ["expanded", "state", "scrollOffset", "optionContentTpl", "id", "thook", "options", "textToHighlight"], outputs: ["selectedValueChanged", "closed"] }] }); }
547
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownComponent, deps: [{ token: i1$1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }, { token: i2.DropdownUtils }], target: i0.ɵɵFactoryTarget.Component }); }
548
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvDropdownComponent, selector: "nggv-dropdown", inputs: { thook: "thook", placeholder: "placeholder", ariaLabel: "ariaLabel", options: "options", scrollOffset: "scrollOffset", allowControlNullishOption: "allowControlNullishOption", textToHighlight: "textToHighlight", selectOnSingleOption: "selectOnSingleOption" }, outputs: { expandedChange: "expandedChange" }, host: { listeners: { "keyup": "onKeyUp($event)" }, properties: { "attr.data-thook": "this.thook" } }, queries: [{ propertyName: "selectedContentTpl", first: true, predicate: ["selectedTpl"], descendants: true, read: TemplateRef }, { propertyName: "optionContentTpl", first: true, predicate: ["optionTpl"], descendants: true, read: TemplateRef }, { propertyName: "groupLabelTpl", first: true, predicate: ["groupLabelTpl"], descendants: true, read: TemplateRef }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-toggle'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"nggv-field-dropdown__label toggle\"\n [class.nggv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"\n ariaLabel ? null : id + '-label ' + id + '-toggle'\n \"\n [attr.aria-label]=\"ariaLabel || null\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <nggv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [groupLabelTpl]=\"groupLabelTpl\"\n [textToHighlight]=\"textToHighlight\"\n (closed)=\"setExpanded(false)\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </nggv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <div class=\"gds-form-item__footer error-wrapper\">\n <span\n class=\"form-info form-info--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span class=\"error-icon\">\n <gds-icon-triangle-exclamation\n width=\"16\"\n height=\"16\"\n [solid]=\"true\"\n *nggCoreElement\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </div>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host{--sg-border-radius: .25rem;--sg-border-width: 1px;--sg-border-color: #868686;--text-primary-color: #333;--sg-form-control-bg: #fff;--grey-000: hsl(0 0% 100%);--grey-100: hsl(0, 0%, 97%);--grey-200: hsl(0, 0%, 91%);--grey-300: hsl(0, 0%, 87%);--grey-400: hsl(0, 0%, 81%);--grey-500: hsl(0, 0%, 68%);--grey-600: hsl(0, 0%, 53%);--grey-700: hsl(0, 0%, 29%);--grey-800: hsl(0, 0%, 20%);--grey-900: hsl(0, 0%, 10%);--grey-1000: hsl(0 0% 0%)}:host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional{font-weight:400}:host button{background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-600);--sg-border-color: var(--grey-600);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:1rem;font-weight:400;line-height:1.125;width:100%}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button:disabled{--background: var(--grey-500)}:host button.small{font-size:.875rem}:host button:hover{background:#e7e7e7}:host button:active{background:inherit;color:inherit;border-color:inherit}:host button:disabled,:host button.disabled{--text-primary-color: var(--grey-600);background:var(--grey-300);color:var(--grey-600);cursor:not-allowed}:host button.nggv-field--error{border-bottom:2px solid #9f000a}:host .gds-form-item__footer .form-info{font-weight:500;font-size:.875rem}:host .gds-form-item__footer .form-info--error{display:flex;align-items:flex-start;gap:.5em;color:#9f000a}:host .gds-form-item__footer .form-info--error .error-icon{margin-top:.128rem;align-items:center}:host .dropdown{width:100%;position:relative}:host .dropdown nggv-dropdown-list{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i4$1.NggCoreElementDirective, selector: "[nggCoreElement]" }, { kind: "directive", type: i4.TranslocoDirective, selector: "[transloco]", inputs: ["transloco", "translocoParams", "translocoScope", "translocoRead", "translocoPrefix", "translocoLang", "translocoLoadingTpl"] }, { kind: "component", type: NggvDropdownListComponent, selector: "nggv-dropdown-list", inputs: ["expanded", "state", "scrollOffset", "optionContentTpl", "groupLabelTpl", "id", "thook", "options", "textToHighlight", "onlyEmitDistinctChanges"], outputs: ["selectedValueChanged", "closed"] }] }); }
531
549
  }
532
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownComponent, decorators: [{
550
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownComponent, decorators: [{
533
551
  type: Component,
534
- args: [{ selector: 'nggv-dropdown', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label [id]=\"id + '-label'\" class=\"sdv-field-label hide-if-empty\" [attr.for]=\"id + '-toggle'\">\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"sdv-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"nggv-field-dropdown__label toggle\"\n [class.nggv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-toggle'\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <nggv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [textToHighlight]=\"textToHighlight\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </nggv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <label\n class=\"sdv-field-notice sdv-field-notice--error\"\n [attr.for]=\"id + '-input'\"\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\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host button{font-weight:500;display:inline-flex;justify-content:center;transition:all .3s cubic-bezier(.23,1,.32,1),outline-offset 0s,outline-width 0s;background:transparent;border-color:#007ac7;color:#007ac7;--color: rgb(0, 122, 199);background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-800);--sg-border-color: var(--grey-800);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:inherit;font-weight:400;line-height:1.125;margin-bottom:.5rem;margin-top:.5rem;width:100%}@media screen and (-ms-high-contrast: active){:host button{border:2px solid currentcolor}}:host button.small{min-height:2rem;padding:.4375rem .75rem;line-height:1rem}:host button.large{min-height:4rem;padding:1rem 1.5rem;font-size:1.5rem;line-height:2rem}:host button:focus:not(:focus-visible){box-shadow:none;outline:0}:host button:focus,:host button:focus-visible{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}:host button:not(:disabled,.disabled,[aria-disabled]):hover{background-color:#199be3;color:#fff;--background: rgb(25.4035777564, 154.8940067842, 227.221994169);--color: rgb(255, 255, 255);border-color:#199be3}:host button[aria-selected=true],:host button:active,:host button.active,:host button.active:hover,:host button:active:hover{background-color:#007ac7;color:#fff;--background: rgb(0, 122, 199);--color: rgb(255, 255, 255);border-color:#007ac7}:host button:disabled,:host button.disabled,:host button[aria-disabled=true]{background:var(--sg-form-control-bg-disabled)!important;color:var(--text-disabled-color)!important;border-color:var(--border-disabled-color)!important;cursor:not-allowed}:host button:disabled::placeholder,:host button.disabled::placeholder,:host button[aria-disabled=true]::placeholder{color:var(--text-disabled-color)}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button:not(:disabled,.disabled,[aria-disabled]):hover{--background: var(--grey-400);--color: var(--grey-1000);background-color:var(--grey-400);color:var(--grey-1000);border-color:var(--grey-1000)}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button.small{font-size:.875rem}:host button:hover{background:var(--grey-400)}:host .dropdown{width:100%;position:relative}:host .dropdown nggv-dropdown-list{width:100%}\n"] }]
552
+ args: [{ selector: 'nggv-dropdown', template: "<!-- LABEL -->\n<ng-container *transloco=\"let t; read: scope\">\n <label\n [id]=\"id + '-label'\"\n class=\"gds-field-label hide-if-empty\"\n [attr.for]=\"id + '-toggle'\"\n >\n <ng-template\n *ngTemplateOutlet=\"labelContentTpl || basicLabelContentTpl\"\n ></ng-template>\n <ng-template #basicLabelContentTpl>\n <!-- to trigger css:empty if no label was added -->\n <ng-container *ngIf=\"label\">\n {{ label }}\n <span\n *ngIf=\"optional === true || (required !== true && optional !== false)\"\n class=\"gds-field-label--optional\"\n >\n ({{ t('label.optional') }})\n </span>\n </ng-container>\n </ng-template>\n </label>\n\n <!-- DESCRIPTION -->\n <div class=\"description\">{{ description }}</div>\n\n <!-- LOCKED INPUT -->\n <ng-container *ngIf=\"locked\">\n <div\n [id]=\"id + '-input'\"\n class=\"nggv-field--locked\"\n [attr.name]=\"name\"\n [attr.value]=\"state\"\n [attr.role]=\"role\"\n [attr.aria-labelledby]=\"id + '-label ' + id + '-input'\"\n >\n <span *ngIf=\"!state\" class=\"unset-state\">-</span>\n <ng-container *ngIf=\"state\">\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </ng-container>\n </div>\n </ng-container>\n\n <!-- INPUT -->\n <ng-container *ngIf=\"!locked\">\n <div #input [id]=\"id + '-input'\" class=\"dropdown\">\n <button\n [id]=\"id + '-toggle'\"\n [disabled]=\"disabled\"\n type=\"button\"\n class=\"nggv-field-dropdown__label toggle\"\n [class.nggv-field--error]=\"invalid\"\n aria-haspopup=\"listbox\"\n [attr.data-thook]=\"thook + '-toggle'\"\n [attr.aria-expanded]=\"expanded\"\n [attr.aria-labelledby]=\"\n ariaLabel ? null : id + '-label ' + id + '-toggle'\n \"\n [attr.aria-label]=\"ariaLabel || null\"\n (click)=\"toggleDropdown()\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n selectedContentTpl || defaultSelectedContentTpl;\n context: { $implicit: state }\n \"\n >\n </ng-template>\n </button>\n\n <nggv-dropdown-list\n #dropDownList\n [options]=\"options\"\n [scrollOffset]=\"scrollOffset\"\n [state]=\"state\"\n [expanded]=\"expanded\"\n [optionContentTpl]=\"optionContentTpl\"\n [groupLabelTpl]=\"groupLabelTpl\"\n [textToHighlight]=\"textToHighlight\"\n (closed)=\"setExpanded(false)\"\n (selectedValueChanged)=\"onSelectChange($event)\"\n >\n </nggv-dropdown-list>\n </div>\n <!-- ERRORS -->\n <div class=\"gds-form-item__footer error-wrapper\">\n <span\n class=\"form-info form-info--error\"\n [attr.for]=\"id + '-input'\"\n *ngIf=\"invalid && (error || ngControl?.invalid)\"\n >\n <span class=\"error-icon\">\n <gds-icon-triangle-exclamation\n width=\"16\"\n height=\"16\"\n [solid]=\"true\"\n *nggCoreElement\n ></gds-icon-triangle-exclamation>\n </span>\n <span\n *ngIf=\"error; else errorsRef\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >{{ error }}</span\n >\n </span>\n <ng-template #errorsRef>\n <span\n *ngIf=\"firstError as error\"\n [attr.data-thook]=\"thook + '-errorlabel'\"\n >\n {{ t('error.field' + error?.code, error?.params) }}\n </span>\n </ng-template>\n </div>\n\n <!-- CHILDREN -->\n <ng-content></ng-content>\n </ng-container>\n\n <ng-template #defaultSelectedContentTpl let-state>\n <!-- eslint-disable-next-line @angular-eslint/template/eqeqeq -->\n {{ state?.key != null && state?.label ? t(state.label) : placeholder }}\n </ng-template>\n</ng-container>\n", styles: [":host{--sg-border-radius: .25rem;--sg-border-width: 1px;--sg-border-color: #868686;--text-primary-color: #333;--sg-form-control-bg: #fff;--grey-000: hsl(0 0% 100%);--grey-100: hsl(0, 0%, 97%);--grey-200: hsl(0, 0%, 91%);--grey-300: hsl(0, 0%, 87%);--grey-400: hsl(0, 0%, 81%);--grey-500: hsl(0, 0%, 68%);--grey-600: hsl(0, 0%, 53%);--grey-700: hsl(0, 0%, 29%);--grey-800: hsl(0, 0%, 20%);--grey-900: hsl(0, 0%, 10%);--grey-1000: hsl(0 0% 0%)}:host label{display:block;font-weight:500;line-height:1.25rem;margin-bottom:.5rem;width:100%}:host .description{margin-bottom:.5rem;line-height:1.25rem;width:100%}:host .gds-field-label--optional{font-weight:400}:host button{background-color:transparent;border:0;cursor:pointer;font-family:inherit;padding:0;padding:.75rem 1rem;border-radius:var(--sg-border-radius);border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--grey-600);--sg-border-color: var(--grey-600);background:var(--sg-form-control-bg);color:var(--text-primary-color);min-height:2.75rem;display:flex;flex-wrap:nowrap;justify-content:space-between;align-items:center;max-width:100%;font-size:1rem;font-weight:400;line-height:1.125;width:100%}:host button:focus{outline-color:var(--gds-sys-color-focus-outline);outline-style:solid;outline-width:.125rem;outline-offset:.125rem}@media (max-width: 35.98em){:host button{min-width:100%}}:host button>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}:host button:after{margin-left:.5rem;margin-right:.5rem;border-bottom:solid 2px var(--text-primary-color);border-left:solid 2px var(--text-primary-color);content:\"\";display:block;height:.5rem;width:.5rem;position:relative;top:-.15rem;transform:translate(75%) rotate3d(0,0,1,-45deg) scaleZ(-1);transition:transform .3s ease-in;flex-shrink:0}:host button[aria-expanded=true]:after{transform:translate(75%,6px) rotate3d(0,0,1,-45deg) scale3d(-1,-1,1)}:host button:hover:after{border-color:currentColor}:host button:disabled{--background: var(--grey-500)}:host button.small{font-size:.875rem}:host button:hover{background:#e7e7e7}:host button:active{background:inherit;color:inherit;border-color:inherit}:host button:disabled,:host button.disabled{--text-primary-color: var(--grey-600);background:var(--grey-300);color:var(--grey-600);cursor:not-allowed}:host button.nggv-field--error{border-bottom:2px solid #9f000a}:host .gds-form-item__footer .form-info{font-weight:500;font-size:.875rem}:host .gds-form-item__footer .form-info--error{display:flex;align-items:flex-start;gap:.5em;color:#9f000a}:host .gds-form-item__footer .form-info--error .error-icon{margin-top:.128rem;align-items:center}:host .dropdown{width:100%;position:relative}:host .dropdown nggv-dropdown-list{width:100%}\n"] }]
535
553
  }], ctorParameters: () => [{ type: i1$1.NgControl, decorators: [{
536
554
  type: Self
537
555
  }, {
@@ -547,6 +565,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
547
565
  }], optionContentTpl: [{
548
566
  type: ContentChild,
549
567
  args: ['optionTpl', { read: TemplateRef }]
568
+ }], groupLabelTpl: [{
569
+ type: ContentChild,
570
+ args: ['groupLabelTpl', { read: TemplateRef }]
550
571
  }], thook: [{
551
572
  type: HostBinding,
552
573
  args: ['attr.data-thook']
@@ -554,6 +575,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
554
575
  type: Input
555
576
  }], placeholder: [{
556
577
  type: Input
578
+ }], ariaLabel: [{
579
+ type: Input
557
580
  }], options: [{
558
581
  type: Input
559
582
  }], scrollOffset: [{
@@ -572,7 +595,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
572
595
  }] } });
573
596
 
574
597
  // Use dropdownList template and combine stylesheets
575
- class NgvTypeaheadDropdownListComponent extends NgvDropdownListComponent {
598
+ class NggvTypeaheadDropdownListComponent extends NggvDropdownListComponent {
576
599
  constructor(translocoScope, element) {
577
600
  super(translocoScope);
578
601
  this.translocoScope = translocoScope;
@@ -639,12 +662,12 @@ class NgvTypeaheadDropdownListComponent extends NgvDropdownListComponent {
639
662
  // If a formatter exists, use it
640
663
  return this.selectedFormatter(value) ?? '';
641
664
  }
642
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
643
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgvTypeaheadDropdownListComponent, selector: "nggv-typeahead-dropdown-list", inputs: { hostComponent: "hostComponent", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NgvTooltipDirective, selector: "[nggvTooltip]", inputs: ["nggvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "maxWidth"], outputs: ["nggvShow", "nggvHide"] }, { kind: "component", type: NgvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }] }); }
665
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadDropdownListComponent, deps: [{ token: TRANSLOCO_SCOPE, optional: true, skipSelf: true }, { token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
666
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvTypeaheadDropdownListComponent, selector: "nggv-typeahead-dropdown-list", inputs: { hostComponent: "hostComponent", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter" }, usesInheritance: true, ngImport: i0, template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <!-- group label template (default or custom) -->\n <ng-template\n *ngTemplateOutlet=\"listGroupTemplate; context: { $implicit: item }\"\n ></ng-template>\n\n <ul [attr.aria-disabled]=\"item.disabled\" class=\"gds-reset\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #listGroupTemplate let-item>\n <ng-container *ngIf=\"groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"groupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"basicGroupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n\n <ng-template #basicGroupLabelTpl let-item>\n <div class=\"nggv-group-label\">{{ t(item.label) }}</div>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{--gds-ref-pallet-base300: hsl(0, 0%, 87%);--gds-ref-pallet-base400: hsl(0, 0%, 81%);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-z-index-dropdown: ;--sg-z-index-popover: 1060;--sg-z-index-dropdown-backdrop: 990;--sg-z-index-dropdown: 2000;--sg-popover-background: #fff;--sg-popover-box-shadow: 0 .125rem .375rem rgba(0, 0, 0, .15);--text-primary-color: #333;position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover{background-color:var(--gds-ref-pallet-base400)}:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--gds-ref-pallet-base300)}:host .gds-dropdown__options__label:active{background-color:var(--gds-ref-pallet-base500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}:host li+.group{padding-top:0}:host .nggv-group-label{cursor:pointer;background-color:#e7e7e7;padding-inline:1rem;padding-block:.5rem}\n"], dependencies: [{ kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.NggvTooltipDirective, selector: "[nggvTooltip]", inputs: ["nggvTooltip", "thook", "placement", "shown", "offset", "resizeThrottle", "tooltipId", "maxWidth"], outputs: ["nggvShow", "nggvHide"] }, { kind: "component", type: NggvTypeaheadHighlightComponent, selector: "nggv-typeahead-highlight", inputs: ["textContent", "textToHighlight"] }] }); }
644
667
  }
645
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadDropdownListComponent, decorators: [{
668
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadDropdownListComponent, decorators: [{
646
669
  type: Component,
647
- args: [{ selector: 'nggv-typeahead-dropdown-list', template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <div class=\"sdv-list__label\">{{ t(item.label) }}</div>\n <ul [attr.aria-disabled]=\"item.disabled\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover,:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--grey-400)}:host .gds-dropdown__options__label:active{background-color:var(--grey-500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}\n"] }]
670
+ args: [{ selector: 'nggv-typeahead-dropdown-list', template: "<ng-container *transloco=\"let t; read: scope\">\n <ul\n class=\"gds-dropdown__options card options gds-reset\"\n [class.gds-dropdown__options-expanded]=\"expanded\"\n role=\"listbox\"\n tabindex=\"-1\"\n [attr.data-thook]=\"thook + '-options'\"\n [attr.aria-labelledby]=\"id + '-label'\"\n [attr.aria-activedescendant]=\"\n state ? id + '-option-' + state?.key : undefined\n \"\n >\n <ng-container *ngFor=\"let item of options\">\n <!-- OPTION -->\n <ng-container *ngIf=\"!isGroup(item)\">\n <ng-template\n *ngTemplateOutlet=\"listItemTemplate; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n\n <!-- OPTION GROUP -->\n <li\n class=\"gds-dropdown__options__label group\"\n [attr.data-thook]=\"thook + '-option-group'\"\n *ngIf=\"isGroup(item)\"\n >\n <!-- group label template (default or custom) -->\n <ng-template\n *ngTemplateOutlet=\"listGroupTemplate; context: { $implicit: item }\"\n ></ng-template>\n\n <ul [attr.aria-disabled]=\"item.disabled\" class=\"gds-reset\">\n <ng-container *ngFor=\"let option of castGroup(item).options\">\n <ng-template\n *ngTemplateOutlet=\"\n listItemTemplate;\n context: { $implicit: option }\n \"\n ></ng-template>\n </ng-container>\n </ul>\n </li>\n </ng-container>\n </ul>\n\n <!-- TEMPLATE -->\n <ng-template #listItemTemplate let-option>\n <li\n #optionRefs\n *ngIf=\"!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n [nggvTooltip]=\"isOverflow(liElem) ? t(option.label) : undefined\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"\n basicOptionContentTpl;\n context: { $implicit: option }\n \"\n >\n </ng-template>\n </li>\n <!-- Checking overflow on custom templates do not work skip adding nggvToolTip if custom template is provided -->\n <li\n #optionRefs\n *ngIf=\"!!optionContentTpl\"\n tabindex=\"-1\"\n [id]=\"id + '-option-' + option.key\"\n class=\"gds-dropdown__options__label option\"\n role=\"option\"\n #liElem\n [attr.data-thook]=\"thook + '-option-' + option.key\"\n [attr.aria-disabled]=\"option.disabled\"\n [attr.aria-selected]=\"\n option.key === selectedValue?.key && !!selectedValue?.key\n \"\n [attr.aria-focus]=\"option.key === state?.key && !option.disabled\"\n (click)=\"updateState(option, $event)\"\n >\n <ng-template\n *ngTemplateOutlet=\"optionContentTpl; context: { $implicit: option }\"\n >\n </ng-template>\n </li>\n </ng-template>\n\n <ng-template #listGroupTemplate let-item>\n <ng-container *ngIf=\"groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"groupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n <ng-container *ngIf=\"!groupLabelTpl\">\n <ng-template\n *ngTemplateOutlet=\"basicGroupLabelTpl; context: { $implicit: item }\"\n ></ng-template>\n </ng-container>\n </ng-template>\n\n <ng-template #basicOptionContentTpl let-option>\n <nggv-typeahead-highlight\n *ngIf=\"!!textToHighlight\"\n [textToHighlight]=\"textToHighlight\"\n [textContent]=\"t(option.label)\"\n >\n </nggv-typeahead-highlight>\n <ng-container *ngIf=\"!textToHighlight\">\n {{ t(option.label) }}\n </ng-container>\n </ng-template>\n\n <ng-template #basicGroupLabelTpl let-item>\n <div class=\"nggv-group-label\">{{ t(item.label) }}</div>\n </ng-template>\n</ng-container>\n", styles: [":host{display:flex;width:100%;position:relative}\n", ":host{--gds-ref-pallet-base300: hsl(0, 0%, 87%);--gds-ref-pallet-base400: hsl(0, 0%, 81%);--gds-ref-pallet-base500: hsl(0, 0%, 68%);--sg-z-index-dropdown: ;--sg-z-index-popover: 1060;--sg-z-index-dropdown-backdrop: 990;--sg-z-index-dropdown: 2000;--sg-popover-background: #fff;--sg-popover-box-shadow: 0 .125rem .375rem rgba(0, 0, 0, .15);--text-primary-color: #333;position:absolute;bottom:0;transform:translateY(calc(100% + .5rem));z-index:var(--sg-z-index-dropdown)}:host .hidden{visibility:hidden;display:none}:host ul[role=menu] [role=menuitem]{padding:.75rem;cursor:pointer}:host ul[role=menu] [role=menuitem]:hover,:host ul[role=menu] [role=menuitem]:focus-visible{background-color:var(--gds-ref-pallet-base200)}:host ul[role=menu] [role=menuitem]:active{background-color:var(--gds-ref-pallet-base300)}:host ul[role=menu] [role=menuitem]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox]{--z-index: var(--sg-z-index-popover);background-color:var(--sg-popover-background);flex-direction:column;justify-content:flex-end;inset:auto;z-index:var(--z-index);box-shadow:var(--sg-popover-box-shadow);color:var(--text-primary-color);padding:0;max-height:500px;overflow-y:auto;border:solid var(--sg-border-width) var(--sg-border-color);--border-color: var(--text-primary-color);--sg-border-color: var(--text-primary-color);border-radius:var(--sg-border-radius)}:host ul[role=listbox] [role=option]{padding:.75rem 1rem;line-height:1.25;cursor:pointer}:host ul[role=listbox] [role=option]:hover,:host ul[role=listbox] [role=option]:focus-visible{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:active{background-color:var(--grey-400)}:host ul[role=listbox] [role=option]:focus{outline-color:#000;outline-offset:-.25rem}:host ul[role=listbox] [role=option].active.sg-highlighted,:host ul[role=listbox] [role=option][aria-selected=true]{background:var(--grey-1000);color:#fff}:host ul[role=listbox] .group ul{list-style-type:none;padding:0}:host ul[role=listbox] .group:hover{color:inherit;background-color:inherit}:host .sg-fieldset-container{overflow-y:auto}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option]{display:flex;width:100%}:host .sg-fieldset-container fieldset[role=listbox][aria-multiselectable=true] [role=option].active.sg-highlighted input[type=checkbox]~i{border-color:#007ac7!important;box-shadow:0 0 .25em .0625em #41b0ee;outline-color:transparent;outline-style:solid}:host .gds-dropdown__options{padding-left:0;margin-bottom:0;margin-top:0;display:flex;flex-direction:column;list-style:none;display:none}:host .gds-dropdown__options>li{padding-bottom:.5rem;padding-top:.5rem;border:0;display:block;position:relative}:host .gds-dropdown__options>li:before{font-weight:500;display:inline-block;left:0;position:absolute;text-align:center}:host .gds-dropdown__options-expanded{display:block}:host .gds-dropdown__options__label:hover{background-color:var(--gds-ref-pallet-base400)}:host .gds-dropdown__options__label:focus-visible,:host .gds-dropdown__options__label[aria-focus=true]{background-color:var(--gds-ref-pallet-base300)}:host .gds-dropdown__options__label:active{background-color:var(--gds-ref-pallet-base500)}:host .gds-dropdown__options__label:focus-visible{outline-color:#000;outline-offset:-.25rem}:host .gds-dropdown__options__label[aria-hidden=true]{display:none}:host .gds-dropdown__options__label[highlighted]{color:#fff}:host li+.group{padding-top:0}:host .nggv-group-label{cursor:pointer;background-color:#e7e7e7;padding-inline:1rem;padding-block:.5rem}\n"] }]
648
671
  }], ctorParameters: () => [{ type: undefined, decorators: [{
649
672
  type: SkipSelf
650
673
  }, {
@@ -660,7 +683,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
660
683
  type: Input
661
684
  }] } });
662
685
 
663
- class NgvTypeaheadInputComponent extends NgvInputComponent {
686
+ class NggvTypeaheadInputComponent extends NggvInputComponent {
664
687
  get dropdownButton() {
665
688
  return this.hostComponent.inputRef?.nativeElement;
666
689
  }
@@ -673,6 +696,8 @@ class NgvTypeaheadInputComponent extends NgvInputComponent {
673
696
  this.cdr = cdr;
674
697
  /** Boolean to indicate wether the dropdown is expanded or not, to apply appropriate styling */
675
698
  this.expanded = false;
699
+ /** @internal Used to determine wether the input has been moved or not */
700
+ this.inputMoved = false;
676
701
  super.ngOnInit();
677
702
  }
678
703
  ngOnInit() {
@@ -688,7 +713,7 @@ class NgvTypeaheadInputComponent extends NgvInputComponent {
688
713
  * @param event fired containing which key was released.
689
714
  */
690
715
  onKeyUp(event) {
691
- if (event.code === 'Space') {
716
+ if (event.code === 'Space' && this.expanded) {
692
717
  event.preventDefault();
693
718
  }
694
719
  }
@@ -706,6 +731,7 @@ class NgvTypeaheadInputComponent extends NgvInputComponent {
706
731
  // Get the height of the parent button so the input can be explicitly set to the same height since it's absolutely positioned
707
732
  this.buttonHeight =
708
733
  this.dropdownButton.getBoundingClientRect().height || 32; // Default to 2em;
734
+ this.inputMoved = true;
709
735
  }
710
736
  }, 0);
711
737
  }
@@ -719,6 +745,10 @@ class NgvTypeaheadInputComponent extends NgvInputComponent {
719
745
  .pipe(takeUntil(this._destroy$))
720
746
  .subscribe((state) => {
721
747
  this.expanded = state;
748
+ // Calling this function from onInit caused issues when DOM has not fully been initialized because of
749
+ // different CSS used to hide (but not remove) from DOM
750
+ if (!this.inputMoved)
751
+ this.moveInput();
722
752
  if (this.expanded) {
723
753
  // Weird workaround for setting focus. Didn't set focus, but wrapping in setTimeout solved it.
724
754
  // See suggestion here: https://github.com/ionic-team/stencil/issues/3772#issuecomment-1292599609
@@ -757,12 +787,12 @@ class NgvTypeaheadInputComponent extends NgvInputComponent {
757
787
  this.inputChange$.next(this.state);
758
788
  }
759
789
  }
760
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
761
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NgvTypeaheadInputComponent, selector: "nggv-typeahead-input", inputs: { hostComponent: "hostComponent", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter" }, host: { listeners: { "document:keyup": "onKeyUp($event)" } }, usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div\n class=\"input-wrapper\"\n [ngClass]=\"{ expanded: expanded, collapsed: !expanded }\"\n [ngStyle]=\"{ 'height.px': buttonHeight }\"\n (click)=\"$event.stopPropagation()\"\n >\n <!-- INPUT FIELD -->\n <div class=\"input-group\">\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;top:0;left:0;width:calc(100% - 2.625em)}:host .input-wrapper{border:none;box-shadow:none}:host .input-wrapper.expanded{display:flex}:host .input-wrapper.expanded .input-group input.sdv-field{height:100%;width:100%;min-height:unset;margin-left:1px;border:none;box-shadow:none}:host .input-wrapper.collapsed{display:none}:host .input-wrapper .input-group{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
790
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadInputComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i1$1.NgControl, optional: true, self: true }, { token: TRANSLOCO_SCOPE, optional: true }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
791
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.12", type: NggvTypeaheadInputComponent, selector: "nggv-typeahead-input", inputs: { hostComponent: "hostComponent", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter" }, host: { listeners: { "keyup": "onKeyUp($event)" } }, usesInheritance: true, ngImport: i0, template: "<ng-container>\n <div\n class=\"input-wrapper\"\n [ngClass]=\"{ expanded: expanded, collapsed: !expanded }\"\n [ngStyle]=\"{ 'height.px': buttonHeight }\"\n (click)=\"$event.stopPropagation()\"\n >\n <!-- INPUT FIELD -->\n <div class=\"input-group\">\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"gds-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;top:0;left:0;width:calc(100% - 2.625em)}:host .input-wrapper{border:none;box-shadow:none}:host .input-wrapper.expanded{display:flex}:host .input-wrapper.expanded .input-group input.gds-field{height:100%;width:100%;min-height:unset;margin-left:1px;border:none;box-shadow:none}:host .input-wrapper.collapsed{display:none}:host .input-wrapper .input-group{width:100%}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
762
792
  }
763
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadInputComponent, decorators: [{
793
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadInputComponent, decorators: [{
764
794
  type: Component,
765
- args: [{ selector: 'nggv-typeahead-input', template: "<ng-container>\n <div\n class=\"input-wrapper\"\n [ngClass]=\"{ expanded: expanded, collapsed: !expanded }\"\n [ngStyle]=\"{ 'height.px': buttonHeight }\"\n (click)=\"$event.stopPropagation()\"\n >\n <!-- INPUT FIELD -->\n <div class=\"input-group\">\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"sdv-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;top:0;left:0;width:calc(100% - 2.625em)}:host .input-wrapper{border:none;box-shadow:none}:host .input-wrapper.expanded{display:flex}:host .input-wrapper.expanded .input-group input.sdv-field{height:100%;width:100%;min-height:unset;margin-left:1px;border:none;box-shadow:none}:host .input-wrapper.collapsed{display:none}:host .input-wrapper .input-group{width:100%}\n"] }]
795
+ args: [{ selector: 'nggv-typeahead-input', template: "<ng-container>\n <div\n class=\"input-wrapper\"\n [ngClass]=\"{ expanded: expanded, collapsed: !expanded }\"\n [ngStyle]=\"{ 'height.px': buttonHeight }\"\n (click)=\"$event.stopPropagation()\"\n >\n <!-- INPUT FIELD -->\n <div class=\"input-group\">\n <input\n #input\n [id]=\"id + '-input'\"\n class=\"gds-field\"\n [attr.type]=\"type\"\n [attr.name]=\"name\"\n [attr.required]=\"required\"\n [attr.email]=\"email\"\n [min]=\"min\"\n [max]=\"max\"\n [step]=\"step\"\n [attr.maxlength]=\"maxlength\"\n [attr.minlength]=\"minlength\"\n [pattern]=\"pattern\"\n [disabled]=\"disabled\"\n [autocomplete]=\"autocomplete\"\n [autofocus]=\"autofocus\"\n [readOnly]=\"readonly\"\n [attr.role]=\"role\"\n [attr.placeholder]=\"placeholder\"\n [attr.aria-label]=\"description\"\n [value]=\"state\"\n (input)=\"onInput($event)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\"\n />\n </div>\n </div>\n</ng-container>\n", styles: [":host{position:absolute;top:0;left:0;width:calc(100% - 2.625em)}:host .input-wrapper{border:none;box-shadow:none}:host .input-wrapper.expanded{display:flex}:host .input-wrapper.expanded .input-group input.gds-field{height:100%;width:100%;min-height:unset;margin-left:1px;border:none;box-shadow:none}:host .input-wrapper.collapsed{display:none}:host .input-wrapper .input-group{width:100%}\n"] }]
766
796
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i1$1.NgControl, decorators: [{
767
797
  type: Self
768
798
  }, {
@@ -780,50 +810,65 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
780
810
  type: Input
781
811
  }], onKeyUp: [{
782
812
  type: HostListener,
783
- args: ['document:keyup', ['$event']]
813
+ args: ['keyup', ['$event']]
784
814
  }] } });
785
815
 
786
- class NgvTypeaheadModule {
787
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
788
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadModule, declarations: [NgvTypeaheadHighlightComponent,
789
- NgvTypeaheadInputComponent,
790
- NgvTypeaheadDropdownListComponent], imports: [CommonModule, NgvTooltipModule], exports: [NgvTypeaheadHighlightComponent,
791
- NgvTypeaheadInputComponent,
792
- NgvTypeaheadDropdownListComponent] }); }
793
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadModule, imports: [CommonModule, NgvTooltipModule] }); }
816
+ class NggvTypeaheadModule {
817
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
818
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadModule, declarations: [NggvTypeaheadHighlightComponent,
819
+ NggvTypeaheadInputComponent,
820
+ NggvTypeaheadDropdownListComponent], imports: [CommonModule, NggvTooltipModule], exports: [NggvTypeaheadHighlightComponent,
821
+ NggvTypeaheadInputComponent,
822
+ NggvTypeaheadDropdownListComponent] }); }
823
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadModule, imports: [CommonModule, NggvTooltipModule] }); }
794
824
  }
795
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadModule, decorators: [{
825
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadModule, decorators: [{
796
826
  type: NgModule,
797
827
  args: [{
798
828
  declarations: [
799
- NgvTypeaheadHighlightComponent,
800
- NgvTypeaheadInputComponent,
801
- NgvTypeaheadDropdownListComponent,
829
+ NggvTypeaheadHighlightComponent,
830
+ NggvTypeaheadInputComponent,
831
+ NggvTypeaheadDropdownListComponent,
802
832
  ],
803
- imports: [CommonModule, NgvTooltipModule],
833
+ imports: [CommonModule, NggvTooltipModule],
804
834
  exports: [
805
- NgvTypeaheadHighlightComponent,
806
- NgvTypeaheadInputComponent,
807
- NgvTypeaheadDropdownListComponent,
835
+ NggvTypeaheadHighlightComponent,
836
+ NggvTypeaheadInputComponent,
837
+ NggvTypeaheadDropdownListComponent,
808
838
  ],
809
839
  }]
810
840
  }] });
811
841
 
812
- class NgvDropdownModule {
813
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
814
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownModule, declarations: [NgvDropdownComponent, NgvDropdownListComponent], imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule, NgvI18nModule], exports: [NgvDropdownComponent, NgvDropdownListComponent] }); }
815
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownModule, imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule, NgvI18nModule] }); }
842
+ class NggvDropdownModule {
843
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
844
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownModule, declarations: [NggvDropdownComponent, NggvDropdownListComponent], imports: [CommonModule,
845
+ NggCoreWrapperModule,
846
+ NggvTypeaheadModule,
847
+ NggvTooltipModule,
848
+ NggvI18nModule], exports: [NggvDropdownComponent, NggvDropdownListComponent] }); }
849
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownModule, imports: [CommonModule,
850
+ NggCoreWrapperModule,
851
+ NggvTypeaheadModule,
852
+ NggvTooltipModule,
853
+ NggvI18nModule] }); }
816
854
  }
817
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvDropdownModule, decorators: [{
855
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvDropdownModule, decorators: [{
818
856
  type: NgModule,
819
857
  args: [{
820
- declarations: [NgvDropdownComponent, NgvDropdownListComponent],
821
- imports: [CommonModule, NgvTypeaheadModule, NgvTooltipModule, NgvI18nModule],
822
- exports: [NgvDropdownComponent, NgvDropdownListComponent],
858
+ declarations: [NggvDropdownComponent, NggvDropdownListComponent],
859
+ imports: [
860
+ CommonModule,
861
+ NggCoreWrapperModule,
862
+ NggvTypeaheadModule,
863
+ NggvTooltipModule,
864
+ NggvI18nModule,
865
+ ],
866
+ exports: [NggvDropdownComponent, NggvDropdownListComponent],
867
+ schemas: [CUSTOM_ELEMENTS_SCHEMA],
823
868
  }]
824
869
  }] });
825
870
 
826
- class NgvTypeaheadDirective {
871
+ class NggvTypeaheadDirective {
827
872
  /** Function that filter the inputvalue */
828
873
  set nggvTypeahead(value) {
829
874
  this.typeaheadFunction = value;
@@ -835,7 +880,7 @@ class NgvTypeaheadDirective {
835
880
  }
836
881
  }
837
882
  /** Forward text inputs to apply the filter function*/
838
- onNgvInput(event) {
883
+ onNggvInput(event) {
839
884
  this.inputValue$.next(event);
840
885
  }
841
886
  /** Helper to the determine if the host is nggv-drodpown or nggv-input*/
@@ -847,9 +892,13 @@ class NgvTypeaheadDirective {
847
892
  return { key: null, label: this.unselectLabel || '\u00A0' };
848
893
  }
849
894
  get emptyOption() {
850
- return { key: null, label: 'label.nomatchingoptions', disabled: true };
895
+ return {
896
+ key: null,
897
+ label: this.emptyOptionLabel || 'label.nomatchingoptions',
898
+ disabled: true,
899
+ };
851
900
  }
852
- /** Name of the component. nggv-dropdown if NgvDropdownComponent or nggv-input if NgvInputComponent */
901
+ /** Name of the component. nggv-dropdown if NggvDropdownComponent or nggv-input if NggvInputComponent */
853
902
  get localName() {
854
903
  return this.element.nativeElement.localName;
855
904
  }
@@ -867,7 +916,6 @@ class NgvTypeaheadDirective {
867
916
  }
868
917
  ngOnInit() {
869
918
  this.handleInputChanges();
870
- this.inputValue$.next('');
871
919
  if (this.hostIsDropdown)
872
920
  this.createInput();
873
921
  else
@@ -887,6 +935,8 @@ class NgvTypeaheadDirective {
887
935
  this.inputSubscription$ = this.inputValue$
888
936
  .pipe(takeUntil(this.onDestroy$), distinctUntilChanged(), tap((inputValue) => this.filterPhraseChange.emit(inputValue)), this.typeaheadFunction ? this.typeaheadFunction : () => from([]), withLatestFrom(this.inputValue$))
889
937
  .subscribe(([filteredValues, input]) => this.setOptions(filteredValues, input));
938
+ // Trigger the pipe when this function have been called
939
+ this.inputValue$.next('');
890
940
  }
891
941
  /**
892
942
  * @internal
@@ -896,7 +946,7 @@ class NgvTypeaheadDirective {
896
946
  * */
897
947
  createInput() {
898
948
  // Create the input component
899
- this.inputComponent = this.viewContainerRef.createComponent(NgvTypeaheadInputComponent);
949
+ this.inputComponent = this.viewContainerRef.createComponent(NggvTypeaheadInputComponent);
900
950
  // Forward necessary info to component
901
951
  this.inputComponent.setInput('hostComponent', this.hostDropdown);
902
952
  this.inputComponent.setInput('selectedFormatter', this.selectedFormatter);
@@ -908,7 +958,7 @@ class NgvTypeaheadDirective {
908
958
  }
909
959
  /** @internal Creates a nggv-dropdown-list if the host itself is a nggv-input */
910
960
  createDropdownList() {
911
- this.dropdownListComponent = this.viewContainerRef.createComponent(NgvTypeaheadDropdownListComponent);
961
+ this.dropdownListComponent = this.viewContainerRef.createComponent(NggvTypeaheadDropdownListComponent);
912
962
  this.dropdownListComponent.setInput('hostComponent', this.hostInput);
913
963
  }
914
964
  /**
@@ -924,8 +974,8 @@ class NgvTypeaheadDirective {
924
974
  // Conditionally add empty or nullish option if it's allowed, the input is empty and does not already contain nullish
925
975
  const allowNullish = this.allowUnselect &&
926
976
  !input &&
927
- !(Object.keys(filteredValues[0]).includes('key') &&
928
- filteredValues[0].key == null);
977
+ !(Object.keys(filteredValues[0] ?? {}).includes('key') &&
978
+ filteredValues[0]?.key == null);
929
979
  if (filteredValues.length === 0) {
930
980
  filteredValues = [this.emptyOption];
931
981
  }
@@ -957,20 +1007,20 @@ class NgvTypeaheadDirective {
957
1007
  return options;
958
1008
  return options.map((value) => value?.label ? this.resultFormatter?.(value) : value);
959
1009
  }
960
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: NgvDropdownComponent, host: true, optional: true }, { token: i2$1.NgvInputComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
961
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NgvTypeaheadDirective, isStandalone: true, selector: "nggv-input[nggvTypeahead], nggv-dropdown[nggvTypeahead]", inputs: { nggvTypeahead: "nggvTypeahead", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter", allowUnselect: "allowUnselect", unselectLabel: "unselectLabel" }, outputs: { filterPhraseChange: "filterPhraseChange" }, host: { listeners: { "nggvInput": "onNgvInput($event)" } }, ngImport: i0 }); }
1010
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadDirective, deps: [{ token: i0.ViewContainerRef }, { token: i0.ElementRef }, { token: NggvDropdownComponent, host: true, optional: true }, { token: i2$1.NggvInputComponent, host: true, optional: true }], target: i0.ɵɵFactoryTarget.Directive }); }
1011
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "17.3.12", type: NggvTypeaheadDirective, isStandalone: true, selector: "nggv-input[nggvTypeahead], nggv-dropdown[nggvTypeahead]", inputs: { nggvTypeahead: "nggvTypeahead", resultFormatter: "resultFormatter", selectedFormatter: "selectedFormatter", allowUnselect: "allowUnselect", unselectLabel: "unselectLabel", emptyOptionLabel: "emptyOptionLabel" }, outputs: { filterPhraseChange: "filterPhraseChange" }, host: { listeners: { "nggvInput": "onNggvInput($event)" } }, ngImport: i0 }); }
962
1012
  }
963
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NgvTypeaheadDirective, decorators: [{
1013
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: NggvTypeaheadDirective, decorators: [{
964
1014
  type: Directive,
965
1015
  args: [{
966
1016
  selector: 'nggv-input[nggvTypeahead], nggv-dropdown[nggvTypeahead]',
967
1017
  standalone: true,
968
1018
  }]
969
- }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: NgvDropdownComponent, decorators: [{
1019
+ }], ctorParameters: () => [{ type: i0.ViewContainerRef }, { type: i0.ElementRef }, { type: NggvDropdownComponent, decorators: [{
970
1020
  type: Optional
971
1021
  }, {
972
1022
  type: Host
973
- }] }, { type: i2$1.NgvInputComponent, decorators: [{
1023
+ }] }, { type: i2$1.NggvInputComponent, decorators: [{
974
1024
  type: Optional
975
1025
  }, {
976
1026
  type: Host
@@ -984,9 +1034,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
984
1034
  type: Input
985
1035
  }], unselectLabel: [{
986
1036
  type: Input
1037
+ }], emptyOptionLabel: [{
1038
+ type: Input
987
1039
  }], filterPhraseChange: [{
988
1040
  type: Output
989
- }], onNgvInput: [{
1041
+ }], onNggvInput: [{
990
1042
  type: HostListener,
991
1043
  args: ['nggvInput', ['$event']]
992
1044
  }] } });
@@ -995,5 +1047,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
995
1047
  * Generated bundle index. Do not edit.
996
1048
  */
997
1049
 
998
- export { NgvDropdownComponent, NgvDropdownListComponent, NgvDropdownModule, NgvTypeaheadDirective, NgvTypeaheadDropdownListComponent, NgvTypeaheadHighlightComponent, NgvTypeaheadInputComponent, NgvTypeaheadModule };
1050
+ export { NggvDropdownComponent, NggvDropdownListComponent, NggvDropdownModule, NggvTypeaheadDirective, NggvTypeaheadDropdownListComponent, NggvTypeaheadHighlightComponent, NggvTypeaheadInputComponent, NggvTypeaheadModule };
999
1051
  //# sourceMappingURL=sebgroup-green-angular-src-v-angular-dropdown.mjs.map