@tedi-design-system/angular 3.0.0-rc.1

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 (341) hide show
  1. package/README.md +44 -0
  2. package/community/components/cards/accordion/accordion/accordion.component.d.ts +22 -0
  3. package/community/components/cards/accordion/accordion/accordion.component.d.ts.map +1 -0
  4. package/community/components/cards/accordion/accordion-icon/accordion-icon.component.d.ts +7 -0
  5. package/community/components/cards/accordion/accordion-icon/accordion-icon.component.d.ts.map +1 -0
  6. package/community/components/cards/accordion/accordion-item/accordion-item.component.d.ts +20 -0
  7. package/community/components/cards/accordion/accordion-item/accordion-item.component.d.ts.map +1 -0
  8. package/community/components/cards/accordion/accordion-item-content/accordion-item-content.component.d.ts +12 -0
  9. package/community/components/cards/accordion/accordion-item-content/accordion-item-content.component.d.ts.map +1 -0
  10. package/community/components/cards/accordion/accordion-item-header/accordion-item-header.component.d.ts +42 -0
  11. package/community/components/cards/accordion/accordion-item-header/accordion-item-header.component.d.ts.map +1 -0
  12. package/community/components/cards/accordion/index.d.ts +6 -0
  13. package/community/components/cards/accordion/index.d.ts.map +1 -0
  14. package/community/components/cards/card/card-colors.directive.d.ts +13 -0
  15. package/community/components/cards/card/card-colors.directive.d.ts.map +1 -0
  16. package/community/components/cards/card/card-content/card-content.component.d.ts +25 -0
  17. package/community/components/cards/card/card-content/card-content.component.d.ts.map +1 -0
  18. package/community/components/cards/card/card-header/card-header.component.d.ts +14 -0
  19. package/community/components/cards/card/card-header/card-header.component.d.ts.map +1 -0
  20. package/community/components/cards/card/card-padding.directive.d.ts +21 -0
  21. package/community/components/cards/card/card-padding.directive.d.ts.map +1 -0
  22. package/community/components/cards/card/card-row/card-row.component.d.ts +11 -0
  23. package/community/components/cards/card/card-row/card-row.component.d.ts.map +1 -0
  24. package/community/components/cards/card/card.component.d.ts +30 -0
  25. package/community/components/cards/card/card.component.d.ts.map +1 -0
  26. package/community/components/cards/card/index.d.ts +7 -0
  27. package/community/components/cards/card/index.d.ts.map +1 -0
  28. package/community/components/cards/index.d.ts +3 -0
  29. package/community/components/cards/index.d.ts.map +1 -0
  30. package/community/components/form/checkbox/checkbox/checkbox.component.d.ts +38 -0
  31. package/community/components/form/checkbox/checkbox/checkbox.component.d.ts.map +1 -0
  32. package/community/components/form/checkbox/checkbox-card-group/checkbox-card-group.component.d.ts +22 -0
  33. package/community/components/form/checkbox/checkbox-card-group/checkbox-card-group.component.d.ts.map +1 -0
  34. package/community/components/form/checkbox/checkbox-group/checkbox-group.component.d.ts +23 -0
  35. package/community/components/form/checkbox/checkbox-group/checkbox-group.component.d.ts.map +1 -0
  36. package/community/components/form/checkbox/index.d.ts +4 -0
  37. package/community/components/form/checkbox/index.d.ts.map +1 -0
  38. package/community/components/form/choicegroup/choicegroup.directive.d.ts +11 -0
  39. package/community/components/form/choicegroup/choicegroup.directive.d.ts.map +1 -0
  40. package/community/components/form/file-dropzone/constants.d.ts +13 -0
  41. package/community/components/form/file-dropzone/constants.d.ts.map +1 -0
  42. package/community/components/form/file-dropzone/file-dropzone.component.d.ts +133 -0
  43. package/community/components/form/file-dropzone/file-dropzone.component.d.ts.map +1 -0
  44. package/community/components/form/file-dropzone/file.service.d.ts +25 -0
  45. package/community/components/form/file-dropzone/file.service.d.ts.map +1 -0
  46. package/community/components/form/file-dropzone/index.d.ts +2 -0
  47. package/community/components/form/file-dropzone/index.d.ts.map +1 -0
  48. package/community/components/form/file-dropzone/types.d.ts +23 -0
  49. package/community/components/form/file-dropzone/types.d.ts.map +1 -0
  50. package/community/components/form/file-dropzone/utils.d.ts +7 -0
  51. package/community/components/form/file-dropzone/utils.d.ts.map +1 -0
  52. package/community/components/form/form-field/form-field.component.d.ts +6 -0
  53. package/community/components/form/form-field/form-field.component.d.ts.map +1 -0
  54. package/community/components/form/index.d.ts +11 -0
  55. package/community/components/form/index.d.ts.map +1 -0
  56. package/community/components/form/input/input.component.d.ts +19 -0
  57. package/community/components/form/input/input.component.d.ts.map +1 -0
  58. package/community/components/form/input-group/input-group.component.d.ts +38 -0
  59. package/community/components/form/input-group/input-group.component.d.ts.map +1 -0
  60. package/community/components/form/radio/index.d.ts +4 -0
  61. package/community/components/form/radio/index.d.ts.map +1 -0
  62. package/community/components/form/radio/radio/radio.component.d.ts +27 -0
  63. package/community/components/form/radio/radio/radio.component.d.ts.map +1 -0
  64. package/community/components/form/radio/radio-card-group/radio-card-group.component.d.ts +9 -0
  65. package/community/components/form/radio/radio-card-group/radio-card-group.component.d.ts.map +1 -0
  66. package/community/components/form/radio/radio-group/radio-group.component.d.ts +37 -0
  67. package/community/components/form/radio/radio-group/radio-group.component.d.ts.map +1 -0
  68. package/community/components/form/search/search.component.d.ts +115 -0
  69. package/community/components/form/search/search.component.d.ts.map +1 -0
  70. package/community/components/form/select/index.d.ts +4 -0
  71. package/community/components/form/select/index.d.ts.map +1 -0
  72. package/community/components/form/select/multiselect.component.d.ts +108 -0
  73. package/community/components/form/select/multiselect.component.d.ts.map +1 -0
  74. package/community/components/form/select/select-option.component.d.ts +26 -0
  75. package/community/components/form/select/select-option.component.d.ts.map +1 -0
  76. package/community/components/form/select/select.component.d.ts +77 -0
  77. package/community/components/form/select/select.component.d.ts.map +1 -0
  78. package/community/components/form/textarea/textarea.component.d.ts +17 -0
  79. package/community/components/form/textarea/textarea.component.d.ts.map +1 -0
  80. package/community/components/navigation/breadcrumbs/breadcrumbs.component.d.ts +48 -0
  81. package/community/components/navigation/breadcrumbs/breadcrumbs.component.d.ts.map +1 -0
  82. package/community/components/navigation/index.d.ts +4 -0
  83. package/community/components/navigation/index.d.ts.map +1 -0
  84. package/community/components/navigation/pagination/pagination-page/pagination-page.component.d.ts +10 -0
  85. package/community/components/navigation/pagination/pagination-page/pagination-page.component.d.ts.map +1 -0
  86. package/community/components/navigation/pagination/pagination.component.d.ts +20 -0
  87. package/community/components/navigation/pagination/pagination.component.d.ts.map +1 -0
  88. package/community/components/navigation/pagination/pagination.utils.d.ts +2 -0
  89. package/community/components/navigation/pagination/pagination.utils.d.ts.map +1 -0
  90. package/community/components/navigation/tabs/index.d.ts +4 -0
  91. package/community/components/navigation/tabs/index.d.ts.map +1 -0
  92. package/community/components/navigation/tabs/tab/tab.component.d.ts +21 -0
  93. package/community/components/navigation/tabs/tab/tab.component.d.ts.map +1 -0
  94. package/community/components/navigation/tabs/tab-content/tab-content.component.d.ts +9 -0
  95. package/community/components/navigation/tabs/tab-content/tab-content.component.d.ts.map +1 -0
  96. package/community/components/navigation/tabs/tabs.component.d.ts +19 -0
  97. package/community/components/navigation/tabs/tabs.component.d.ts.map +1 -0
  98. package/community/components/overlay/dropdown/dropdown-trigger/dropdown-trigger.directive.d.ts +20 -0
  99. package/community/components/overlay/dropdown/dropdown-trigger/dropdown-trigger.directive.d.ts.map +1 -0
  100. package/community/components/overlay/dropdown/dropdown.component.d.ts +20 -0
  101. package/community/components/overlay/dropdown/dropdown.component.d.ts.map +1 -0
  102. package/community/components/overlay/dropdown-item/dropdown-item.component.d.ts +35 -0
  103. package/community/components/overlay/dropdown-item/dropdown-item.component.d.ts.map +1 -0
  104. package/community/components/overlay/index.d.ts +5 -0
  105. package/community/components/overlay/index.d.ts.map +1 -0
  106. package/community/components/overlay/modal/footer/modal-footer.component.d.ts +23 -0
  107. package/community/components/overlay/modal/footer/modal-footer.component.d.ts.map +1 -0
  108. package/community/components/overlay/modal/header/modal-header.component.d.ts +15 -0
  109. package/community/components/overlay/modal/header/modal-header.component.d.ts.map +1 -0
  110. package/community/components/overlay/modal/index.d.ts +4 -0
  111. package/community/components/overlay/modal/index.d.ts.map +1 -0
  112. package/community/components/overlay/modal/modal.component.d.ts +23 -0
  113. package/community/components/overlay/modal/modal.component.d.ts.map +1 -0
  114. package/community/components/table/index.d.ts +2 -0
  115. package/community/components/table/index.d.ts.map +1 -0
  116. package/community/components/table/table-styles/table-styles.component.d.ts +11 -0
  117. package/community/components/table/table-styles/table-styles.component.d.ts.map +1 -0
  118. package/community/components/tags/index.d.ts +3 -0
  119. package/community/components/tags/index.d.ts.map +1 -0
  120. package/community/components/tags/status-badge/status-badge.component.d.ts +54 -0
  121. package/community/components/tags/status-badge/status-badge.component.d.ts.map +1 -0
  122. package/community/components/tags/tag/tag.component.d.ts +32 -0
  123. package/community/components/tags/tag/tag.component.d.ts.map +1 -0
  124. package/community/index.d.ts +7 -0
  125. package/community/index.d.ts.map +1 -0
  126. package/community/tedi-design-system-angular-community.d.ts.map +1 -0
  127. package/fesm2022/tedi-design-system-angular-community.mjs +2906 -0
  128. package/fesm2022/tedi-design-system-angular-community.mjs.map +1 -0
  129. package/fesm2022/tedi-design-system-angular-tedi.mjs +3135 -0
  130. package/fesm2022/tedi-design-system-angular-tedi.mjs.map +1 -0
  131. package/fesm2022/tedi-design-system-angular.mjs +6 -0
  132. package/fesm2022/tedi-design-system-angular.mjs.map +1 -0
  133. package/fonts/README.md +34 -0
  134. package/fonts/material-symbols-outlined.woff2 +0 -0
  135. package/fonts/material-symbols-rounded.woff2 +0 -0
  136. package/fonts/material-symbols-sharp.woff2 +0 -0
  137. package/fonts/roboto-v30-cyrillic-300-italic.woff2 +0 -0
  138. package/fonts/roboto-v30-cyrillic-300.woff2 +0 -0
  139. package/fonts/roboto-v30-cyrillic-400-italic.woff2 +0 -0
  140. package/fonts/roboto-v30-cyrillic-400.woff2 +0 -0
  141. package/fonts/roboto-v30-cyrillic-700-italic.woff2 +0 -0
  142. package/fonts/roboto-v30-cyrillic-700.woff2 +0 -0
  143. package/fonts/roboto-v30-cyrillic-ext-300-italic.woff2 +0 -0
  144. package/fonts/roboto-v30-cyrillic-ext-300.woff2 +0 -0
  145. package/fonts/roboto-v30-cyrillic-ext-400-italic.woff2 +0 -0
  146. package/fonts/roboto-v30-cyrillic-ext-400.woff2 +0 -0
  147. package/fonts/roboto-v30-cyrillic-ext-700-italic.woff2 +0 -0
  148. package/fonts/roboto-v30-cyrillic-ext-700.woff2 +0 -0
  149. package/fonts/roboto-v30-latin-300-italic.woff2 +0 -0
  150. package/fonts/roboto-v30-latin-300.woff2 +0 -0
  151. package/fonts/roboto-v30-latin-400-italic.woff2 +0 -0
  152. package/fonts/roboto-v30-latin-400.woff2 +0 -0
  153. package/fonts/roboto-v30-latin-700-italic.woff2 +0 -0
  154. package/fonts/roboto-v30-latin-700.woff2 +0 -0
  155. package/fonts/roboto-v30-latin-ext-300-italic.woff2 +0 -0
  156. package/fonts/roboto-v30-latin-ext-300.woff2 +0 -0
  157. package/fonts/roboto-v30-latin-ext-400-italic.woff2 +0 -0
  158. package/fonts/roboto-v30-latin-ext-400.woff2 +0 -0
  159. package/fonts/roboto-v30-latin-ext-700-italic.woff2 +0 -0
  160. package/fonts/roboto-v30-latin-ext-700.woff2 +0 -0
  161. package/index.css +1 -0
  162. package/index.d.ts +6 -0
  163. package/package.json +76 -0
  164. package/public-api.d.ts +3 -0
  165. package/public-api.d.ts.map +1 -0
  166. package/tedi/components/base/icon/icon.component.d.ts +47 -0
  167. package/tedi/components/base/icon/icon.component.d.ts.map +1 -0
  168. package/tedi/components/base/index.d.ts +3 -0
  169. package/tedi/components/base/index.d.ts.map +1 -0
  170. package/tedi/components/base/text/text.component.d.ts +20 -0
  171. package/tedi/components/base/text/text.component.d.ts.map +1 -0
  172. package/tedi/components/buttons/button/button.component.d.ts +25 -0
  173. package/tedi/components/buttons/button/button.component.d.ts.map +1 -0
  174. package/tedi/components/buttons/closing-button/closing-button.component.d.ts +24 -0
  175. package/tedi/components/buttons/closing-button/closing-button.component.d.ts.map +1 -0
  176. package/tedi/components/buttons/collapse/collapse.component.d.ts +37 -0
  177. package/tedi/components/buttons/collapse/collapse.component.d.ts.map +1 -0
  178. package/tedi/components/buttons/index.d.ts +5 -0
  179. package/tedi/components/buttons/index.d.ts.map +1 -0
  180. package/tedi/components/buttons/info-button/info-button.component.d.ts +6 -0
  181. package/tedi/components/buttons/info-button/info-button.component.d.ts.map +1 -0
  182. package/tedi/components/content/index.d.ts +3 -0
  183. package/tedi/components/content/index.d.ts.map +1 -0
  184. package/tedi/components/content/list/list.component.d.ts +18 -0
  185. package/tedi/components/content/list/list.component.d.ts.map +1 -0
  186. package/tedi/components/content/text-group/index.d.ts +4 -0
  187. package/tedi/components/content/text-group/index.d.ts.map +1 -0
  188. package/tedi/components/content/text-group/text-group-label.component.d.ts +6 -0
  189. package/tedi/components/content/text-group/text-group-label.component.d.ts.map +1 -0
  190. package/tedi/components/content/text-group/text-group-value.component.d.ts +6 -0
  191. package/tedi/components/content/text-group/text-group-value.component.d.ts.map +1 -0
  192. package/tedi/components/content/text-group/text-group.component.d.ts +30 -0
  193. package/tedi/components/content/text-group/text-group.component.d.ts.map +1 -0
  194. package/tedi/components/form/feedback-text/feedback-text.component.d.ts +25 -0
  195. package/tedi/components/form/feedback-text/feedback-text.component.d.ts.map +1 -0
  196. package/tedi/components/form/index.d.ts +5 -0
  197. package/tedi/components/form/index.d.ts.map +1 -0
  198. package/tedi/components/form/label/label.component.d.ts +18 -0
  199. package/tedi/components/form/label/label.component.d.ts.map +1 -0
  200. package/tedi/components/form/number-field/number-field.component.d.ts +86 -0
  201. package/tedi/components/form/number-field/number-field.component.d.ts.map +1 -0
  202. package/tedi/components/form/toggle/toggle.component.d.ts +61 -0
  203. package/tedi/components/form/toggle/toggle.component.d.ts.map +1 -0
  204. package/tedi/components/helpers/grid/col/col.component.d.ts +37 -0
  205. package/tedi/components/helpers/grid/col/col.component.d.ts.map +1 -0
  206. package/tedi/components/helpers/grid/index.d.ts +3 -0
  207. package/tedi/components/helpers/grid/index.d.ts.map +1 -0
  208. package/tedi/components/helpers/grid/row/row.component.d.ts +60 -0
  209. package/tedi/components/helpers/grid/row/row.component.d.ts.map +1 -0
  210. package/tedi/components/helpers/index.d.ts +4 -0
  211. package/tedi/components/helpers/index.d.ts.map +1 -0
  212. package/tedi/components/helpers/separator/separator.component.d.ts +57 -0
  213. package/tedi/components/helpers/separator/separator.component.d.ts.map +1 -0
  214. package/tedi/components/helpers/timeline/index.d.ts +5 -0
  215. package/tedi/components/helpers/timeline/index.d.ts.map +1 -0
  216. package/tedi/components/helpers/timeline/timeline-description/timeline-description.component.d.ts +6 -0
  217. package/tedi/components/helpers/timeline/timeline-description/timeline-description.component.d.ts.map +1 -0
  218. package/tedi/components/helpers/timeline/timeline-item/timeline-item.component.d.ts +19 -0
  219. package/tedi/components/helpers/timeline/timeline-item/timeline-item.component.d.ts.map +1 -0
  220. package/tedi/components/helpers/timeline/timeline-title/timeline-title.component.d.ts +6 -0
  221. package/tedi/components/helpers/timeline/timeline-title/timeline-title.component.d.ts.map +1 -0
  222. package/tedi/components/helpers/timeline/timeline.component.d.ts +12 -0
  223. package/tedi/components/helpers/timeline/timeline.component.d.ts.map +1 -0
  224. package/tedi/components/index.d.ts +11 -0
  225. package/tedi/components/index.d.ts.map +1 -0
  226. package/tedi/components/layout/footer/footer-body/footer-body.component.d.ts +9 -0
  227. package/tedi/components/layout/footer/footer-body/footer-body.component.d.ts.map +1 -0
  228. package/tedi/components/layout/footer/footer-bottom/footer-bottom.component.d.ts +19 -0
  229. package/tedi/components/layout/footer/footer-bottom/footer-bottom.component.d.ts.map +1 -0
  230. package/tedi/components/layout/footer/footer-section/footer-section.component.d.ts +26 -0
  231. package/tedi/components/layout/footer/footer-section/footer-section.component.d.ts.map +1 -0
  232. package/tedi/components/layout/footer/footer-side/footer-side.component.d.ts +21 -0
  233. package/tedi/components/layout/footer/footer-side/footer-side.component.d.ts.map +1 -0
  234. package/tedi/components/layout/footer/footer.component.d.ts +9 -0
  235. package/tedi/components/layout/footer/footer.component.d.ts.map +1 -0
  236. package/tedi/components/layout/footer/index.d.ts +6 -0
  237. package/tedi/components/layout/footer/index.d.ts.map +1 -0
  238. package/tedi/components/layout/header/header-actions/header-actions.component.d.ts +6 -0
  239. package/tedi/components/layout/header/header-actions/header-actions.component.d.ts.map +1 -0
  240. package/tedi/components/layout/header/header-content/header-content.component.d.ts +6 -0
  241. package/tedi/components/layout/header/header-content/header-content.component.d.ts.map +1 -0
  242. package/tedi/components/layout/header/header-language/header-language.component.d.ts +25 -0
  243. package/tedi/components/layout/header/header-language/header-language.component.d.ts.map +1 -0
  244. package/tedi/components/layout/header/header-login/header-login.component.d.ts +14 -0
  245. package/tedi/components/layout/header/header-login/header-login.component.d.ts.map +1 -0
  246. package/tedi/components/layout/header/header-logout/header-logout.component.d.ts +10 -0
  247. package/tedi/components/layout/header/header-logout/header-logout.component.d.ts.map +1 -0
  248. package/tedi/components/layout/header/header-profile/header-profile.component.d.ts +20 -0
  249. package/tedi/components/layout/header/header-profile/header-profile.component.d.ts.map +1 -0
  250. package/tedi/components/layout/header/header-role/header-role.component.d.ts +40 -0
  251. package/tedi/components/layout/header/header-role/header-role.component.d.ts.map +1 -0
  252. package/tedi/components/layout/header/header.component.d.ts +6 -0
  253. package/tedi/components/layout/header/header.component.d.ts.map +1 -0
  254. package/tedi/components/layout/header/index.d.ts +9 -0
  255. package/tedi/components/layout/header/index.d.ts.map +1 -0
  256. package/tedi/components/layout/index.d.ts +4 -0
  257. package/tedi/components/layout/index.d.ts.map +1 -0
  258. package/tedi/components/layout/sidenav/index.d.ts +9 -0
  259. package/tedi/components/layout/sidenav/index.d.ts.map +1 -0
  260. package/tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.d.ts +15 -0
  261. package/tedi/components/layout/sidenav/sidenav-dropdown/sidenav-dropdown.component.d.ts.map +1 -0
  262. package/tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.d.ts +6 -0
  263. package/tedi/components/layout/sidenav/sidenav-dropdown-group/sidenav-dropdown-group.component.d.ts.map +1 -0
  264. package/tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.d.ts +20 -0
  265. package/tedi/components/layout/sidenav/sidenav-dropdown-item/sidenav-dropdown-item.component.d.ts.map +1 -0
  266. package/tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.d.ts +6 -0
  267. package/tedi/components/layout/sidenav/sidenav-group-title/sidenav-group-title.component.d.ts.map +1 -0
  268. package/tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.d.ts +37 -0
  269. package/tedi/components/layout/sidenav/sidenav-item/sidenav-item.component.d.ts.map +1 -0
  270. package/tedi/components/layout/sidenav/sidenav-overlay/sidenav-overlay.component.d.ts +10 -0
  271. package/tedi/components/layout/sidenav/sidenav-overlay/sidenav-overlay.component.d.ts.map +1 -0
  272. package/tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.d.ts +13 -0
  273. package/tedi/components/layout/sidenav/sidenav-toggle/sidenav-toggle.component.d.ts.map +1 -0
  274. package/tedi/components/layout/sidenav/sidenav.component.d.ts +30 -0
  275. package/tedi/components/layout/sidenav/sidenav.component.d.ts.map +1 -0
  276. package/tedi/components/loader/index.d.ts +2 -0
  277. package/tedi/components/loader/index.d.ts.map +1 -0
  278. package/tedi/components/loader/spinner/spinner.component.d.ts +24 -0
  279. package/tedi/components/loader/spinner/spinner.component.d.ts.map +1 -0
  280. package/tedi/components/navigation/index.d.ts +2 -0
  281. package/tedi/components/navigation/index.d.ts.map +1 -0
  282. package/tedi/components/navigation/link/link.component.d.ts +42 -0
  283. package/tedi/components/navigation/link/link.component.d.ts.map +1 -0
  284. package/tedi/components/notifications/alert/alert.component.d.ts +64 -0
  285. package/tedi/components/notifications/alert/alert.component.d.ts.map +1 -0
  286. package/tedi/components/notifications/index.d.ts +2 -0
  287. package/tedi/components/notifications/index.d.ts.map +1 -0
  288. package/tedi/components/overlay/index.d.ts +3 -0
  289. package/tedi/components/overlay/index.d.ts.map +1 -0
  290. package/tedi/components/overlay/popover/index.d.ts +4 -0
  291. package/tedi/components/overlay/popover/index.d.ts.map +1 -0
  292. package/tedi/components/overlay/popover/popover-content/popover-content.component.d.ts +25 -0
  293. package/tedi/components/overlay/popover/popover-content/popover-content.component.d.ts.map +1 -0
  294. package/tedi/components/overlay/popover/popover-trigger/popover-trigger.component.d.ts +10 -0
  295. package/tedi/components/overlay/popover/popover-trigger/popover-trigger.component.d.ts.map +1 -0
  296. package/tedi/components/overlay/popover/popover.component.d.ts +44 -0
  297. package/tedi/components/overlay/popover/popover.component.d.ts.map +1 -0
  298. package/tedi/components/overlay/tooltip/index.d.ts +4 -0
  299. package/tedi/components/overlay/tooltip/index.d.ts.map +1 -0
  300. package/tedi/components/overlay/tooltip/tooltip-content.component.d.ts +21 -0
  301. package/tedi/components/overlay/tooltip/tooltip-content.component.d.ts.map +1 -0
  302. package/tedi/components/overlay/tooltip/tooltip-trigger.component.d.ts +11 -0
  303. package/tedi/components/overlay/tooltip/tooltip-trigger.component.d.ts.map +1 -0
  304. package/tedi/components/overlay/tooltip/tooltip.component.d.ts +48 -0
  305. package/tedi/components/overlay/tooltip/tooltip.component.d.ts.map +1 -0
  306. package/tedi/directives/hide-at/hide-at.directive.d.ts +11 -0
  307. package/tedi/directives/hide-at/hide-at.directive.d.ts.map +1 -0
  308. package/tedi/directives/index.d.ts +4 -0
  309. package/tedi/directives/index.d.ts.map +1 -0
  310. package/tedi/directives/show-at/show-at.directive.d.ts +11 -0
  311. package/tedi/directives/show-at/show-at.directive.d.ts.map +1 -0
  312. package/tedi/directives/vertical-spacing/index.d.ts +3 -0
  313. package/tedi/directives/vertical-spacing/index.d.ts.map +1 -0
  314. package/tedi/directives/vertical-spacing/vertical-spacing-item.directive.d.ts +13 -0
  315. package/tedi/directives/vertical-spacing/vertical-spacing-item.directive.d.ts.map +1 -0
  316. package/tedi/directives/vertical-spacing/vertical-spacing.directive.d.ts +13 -0
  317. package/tedi/directives/vertical-spacing/vertical-spacing.directive.d.ts.map +1 -0
  318. package/tedi/helpers/generate-uuid.d.ts +8 -0
  319. package/tedi/helpers/generate-uuid.d.ts.map +1 -0
  320. package/tedi/helpers/index.d.ts +2 -0
  321. package/tedi/helpers/index.d.ts.map +1 -0
  322. package/tedi/index.d.ts +6 -0
  323. package/tedi/index.d.ts.map +1 -0
  324. package/tedi/services/breakpoint/breakpoint.service.d.ts +28 -0
  325. package/tedi/services/breakpoint/breakpoint.service.d.ts.map +1 -0
  326. package/tedi/services/index.d.ts +4 -0
  327. package/tedi/services/index.d.ts.map +1 -0
  328. package/tedi/services/sidenav/sidenav.service.d.ts +20 -0
  329. package/tedi/services/sidenav/sidenav.service.d.ts.map +1 -0
  330. package/tedi/services/translation/translation.pipe.d.ts +10 -0
  331. package/tedi/services/translation/translation.pipe.d.ts.map +1 -0
  332. package/tedi/services/translation/translation.service.d.ts +16 -0
  333. package/tedi/services/translation/translation.service.d.ts.map +1 -0
  334. package/tedi/services/translation/translations.d.ts +538 -0
  335. package/tedi/services/translation/translations.d.ts.map +1 -0
  336. package/tedi/tedi-design-system-angular-tedi.d.ts.map +1 -0
  337. package/tedi/types/index.d.ts +2 -0
  338. package/tedi/types/index.d.ts.map +1 -0
  339. package/tedi/types/inputs.type.d.ts +5 -0
  340. package/tedi/types/inputs.type.d.ts.map +1 -0
  341. package/tedi-design-system-angular.d.ts.map +1 -0
@@ -0,0 +1,2906 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, computed, Directive, ChangeDetectionStrategy, ViewEncapsulation, Component, signal, contentChildren, effect, booleanAttribute, inject, model, forwardRef, viewChild, output, TemplateRef, Injector, contentChild, ElementRef, HostListener, Injectable } from '@angular/core';
3
+ import { IconComponent, ButtonComponent, generateUUID, FeedbackTextComponent, LabelComponent, BreakpointService, ClosingButtonComponent, TextComponent, TediTranslationPipe, SpinnerComponent, TediTranslationService, TooltipComponent, TooltipTriggerComponent, TooltipContentComponent, InfoButtonComponent, VerticalSpacingDirective, LinkComponent } from '@tedi-design-system/angular/tedi';
4
+ import * as i1$1 from '@angular/forms';
5
+ import { NG_VALUE_ACCESSOR, FormsModule, ReactiveFormsModule } from '@angular/forms';
6
+ import * as i2 from '@angular/cdk/overlay';
7
+ import { CdkOverlayOrigin, OverlayModule } from '@angular/cdk/overlay';
8
+ import * as i3 from '@angular/cdk/listbox';
9
+ import { CdkListbox, CdkListboxModule } from '@angular/cdk/listbox';
10
+ import { FocusKeyManager, A11yModule } from '@angular/cdk/a11y';
11
+ import { DialogRef, DIALOG_DATA, DialogModule } from '@angular/cdk/dialog';
12
+ import { CdkScrollable } from '@angular/cdk/scrolling';
13
+ import * as i1 from '@angular/common';
14
+ import { NgStyle, CommonModule } from '@angular/common';
15
+ import * as i2$1 from '@angular/cdk/menu';
16
+ import { CdkMenu, CdkMenuModule } from '@angular/cdk/menu';
17
+ import * as i1$2 from '@angular/router';
18
+ import { RouterLink, RouterLinkActive } from '@angular/router';
19
+ import { toSignal } from '@angular/core/rxjs-interop';
20
+ import { startWith } from 'rxjs';
21
+
22
+ class CardColorsDirective {
23
+ /**
24
+ * Modifies background of the block it's attached to.
25
+ */
26
+ background = input();
27
+ border = input();
28
+ modifierClasses = computed(() => {
29
+ const modifiers = [];
30
+ if (this.background()) {
31
+ modifiers.push(`tedi-card--background--${this.background()}`);
32
+ }
33
+ if (this.border()) {
34
+ modifiers.push(`tedi-card--border--${this.border()}`);
35
+ }
36
+ return modifiers.join(" ");
37
+ });
38
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardColorsDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
39
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: CardColorsDirective, isStandalone: true, inputs: { background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null }, border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "modifierClasses()" } }, ngImport: i0 });
40
+ }
41
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardColorsDirective, decorators: [{
42
+ type: Directive,
43
+ args: [{
44
+ standalone: true,
45
+ host: {
46
+ "[class]": "modifierClasses()",
47
+ },
48
+ }]
49
+ }] });
50
+
51
+ const getPaddingClasses = (padding) => {
52
+ if (typeof padding === "string") {
53
+ return `tedi-card--padding-${padding}`;
54
+ }
55
+ else {
56
+ return Object.entries(padding)
57
+ .map(([direction, padding]) => {
58
+ return `tedi-card--padding-${direction}-${padding}`;
59
+ })
60
+ .join(" ");
61
+ }
62
+ };
63
+ class CardPaddingDirective {
64
+ /**
65
+ * Modifies padding of the block it's attached to. Can be override whole block or horizontal, vertical or each side separately.
66
+ */
67
+ padding = input();
68
+ modifierClasses = computed(() => {
69
+ if (this.padding()) {
70
+ return getPaddingClasses(this.padding());
71
+ }
72
+ return "";
73
+ });
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardPaddingDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
75
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: CardPaddingDirective, isStandalone: true, inputs: { padding: { classPropertyName: "padding", publicName: "padding", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "modifierClasses()" } }, ngImport: i0 });
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardPaddingDirective, decorators: [{
78
+ type: Directive,
79
+ args: [{
80
+ standalone: true,
81
+ host: {
82
+ "[class]": "modifierClasses()",
83
+ },
84
+ }]
85
+ }] });
86
+
87
+ class CardComponent {
88
+ /**
89
+ * Whether card should not have border.
90
+ * @default false
91
+ */
92
+ borderless = input();
93
+ /**
94
+ * Sets padding for header and content block.
95
+ * @default md
96
+ */
97
+ spacing = input("md");
98
+ /**
99
+ * Creates colored accent left border.
100
+ */
101
+ accentBorder = input();
102
+ /**
103
+ * Whether card should have selected border.
104
+ * @default false
105
+ */
106
+ selected = input();
107
+ modifierClasses = computed(() => {
108
+ const modifiers = [`tedi-card--spacing-${this.spacing()}`];
109
+ if (this.accentBorder()) {
110
+ modifiers.push(`tedi-card--accent-border`, `tedi-card--accent-border--${this.accentBorder()}`);
111
+ }
112
+ return modifiers.join(" ");
113
+ });
114
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
115
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardComponent, isStandalone: true, selector: "tedi-card", inputs: { borderless: { classPropertyName: "borderless", publicName: "borderless", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, accentBorder: { classPropertyName: "accentBorder", publicName: "accentBorder", isSignal: true, isRequired: false, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card": "true", "class.tedi-card--borderless": "borderless()", "class.tedi-card--selected": "selected()", "class": "modifierClasses()" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background", "border", "border"] }, { directive: CardPaddingDirective, inputs: ["padding", "padding"] }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card{--_card-border: var(--card-border-primary);--_card-selected-border: var(--card-border-selected);--_card-bg: var(--card-background-primary);--_card-timeline-color: var(--general-border-accent);border-radius:var(--_card-radius);display:flex;flex-direction:column;position:relative}.tedi-card{--_card-radius: var(--card-radius-rounded-mobile)}@media (min-width: 576px){.tedi-card{--_card-radius: var(--card-radius-rounded-tablet)}}@media (min-width: 992px){.tedi-card{--_card-radius: var(--card-radius-rounded-desktop)}}.tedi-card--background--accent{--_card-bg: var(--card-background-accent)}.tedi-card--border--accent{--_card-border: var(--card-background-accent)}.tedi-card--background--brand-primary{--_card-bg: var(--card-background-brand-primary)}.tedi-card--border--brand-primary{--_card-border: var(--card-background-brand-primary)}.tedi-card--background--brand-secondary{--_card-bg: var(--card-background-brand-secondary)}.tedi-card--border--brand-secondary{--_card-border: var(--card-background-brand-secondary)}.tedi-card--background--brand-tertiary{--_card-bg: var(--card-background-brand-tertiary)}.tedi-card--border--brand-tertiary{--_card-border: var(--card-background-brand-tertiary)}.tedi-card--background--brand-quaternary{--_card-bg: var(--card-background-brand-quaternary)}.tedi-card--border--brand-quaternary{--_card-border: var(--card-background-brand-quaternary)}.tedi-card--background--primary{--_card-bg: var(--card-background-primary)}.tedi-card--border--primary{--_card-border: var(--card-background-primary)}.tedi-card--background--secondary{--_card-bg: var(--card-background-secondary)}.tedi-card--border--secondary{--_card-border: var(--card-background-secondary)}.tedi-card--background--tertiary{--_card-bg: var(--card-background-tertiary)}.tedi-card--border--tertiary{--_card-border: var(--card-background-tertiary)}.tedi-card--background--info-primary{--_card-bg: var(--general-status-info-background-light)}.tedi-card--border--info-primary{--_card-border: var(--general-status-info-background-light)}.tedi-card--background--info-secondary{--_card-bg: var(--general-status-info-background-dark)}.tedi-card--border--info-secondary{--_card-border: var(--general-status-info-background-dark)}.tedi-card--background--neutral-primary{--_card-bg: var(--general-status-neutral-background-light)}.tedi-card--border--neutral-primary{--_card-border: var(--general-status-neutral-background-light)}.tedi-card--background--neutral-secondary{--_card-bg: var(--general-status-neutral-background-dark)}.tedi-card--border--neutral-secondary{--_card-border: var(--general-status-neutral-background-dark)}.tedi-card--background--success-primary{--_card-bg: var(--card-background-success)}.tedi-card--border--success-primary{--_card-border: var(--card-background-success)}.tedi-card--background--success-secondary{--_card-bg: var(--general-status-success-background-secondary)}.tedi-card--border--success-secondary{--_card-border: var(--general-status-success-background-secondary)}.tedi-card--background--danger-primary{--_card-bg: var(--general-status-danger-background-primary)}.tedi-card--border--danger-primary{--_card-border: var(--general-status-danger-background-primary)}.tedi-card--background--danger-secondary{--_card-bg: var(--general-status-danger-background-secondary)}.tedi-card--border--danger-secondary{--_card-border: var(--general-status-danger-background-secondary)}.tedi-card--background--warning-primary{--_card-bg: var(--general-status-warning-background-light)}.tedi-card--border--warning-primary{--_card-border: var(--general-status-warning-background-light)}.tedi-card--background--warning-secondary{--_card-bg: var(--general-status-warning-background-dark)}.tedi-card--border--warning-secondary{--_card-border: var(--general-status-warning-background-dark)}.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--spacing-none{--_card-padding: 0}.tedi-card{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal)}.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-desktop)}}.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-desktop)}}.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-desktop)}}.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-desktop)}}.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-desktop)}}.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-desktop)}}.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-desktop)}}.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-desktop)}}.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-desktop)}}.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-desktop)}}.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-desktop)}}.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-desktop)}}.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-desktop)}}.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-desktop)}}.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-desktop)}}.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-desktop)}}.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-desktop)}}.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-desktop)}}.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-desktop)}}.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-desktop)}}.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-desktop)}}.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-desktop)}}.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-desktop)}}.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-desktop)}}.tedi-card--padding-none{--_card-padding: 0}.tedi-card--padding-vertical-none{--_card-padding-vertical: 0}.tedi-card--padding-horizontal-none{--_card-padding-horizontal: 0}.tedi-card--padding-top-none{--_card-padding-top: 0}.tedi-card--padding-bottom-none{--_card-padding-bottom: 0}.tedi-card--padding-left-none{--_card-padding-left: 0}.tedi-card--padding-right-none{--_card-padding-right: 0}.tedi-card--accent-border:before{content:\"\";display:block;position:absolute;left:0;top:0;bottom:0;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius);border-left:4px solid var(--_card-border-accent)}.tedi-card--accent-border--info{--_card-border-accent: var(--general-status-info-background-dark)}.tedi-card--accent-border--success{--_card-border-accent: var(--general-status-success-background-secondary)}.tedi-card--accent-border--warning{--_card-border-accent: var(--general-status-warning-background-dark)}.tedi-card--accent-border--danger{--_card-border-accent: var(--general-status-danger-background-secondary)}.tedi-card>.tedi-card-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:not(:first-child){border-top:transparent}.tedi-card>.tedi-card-content:not(.tedi-card-content--has-separator,:last-child){border-bottom:transparent}.tedi-card>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:last-child{border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row>.tedi-card-content:not(:first-child){border-left:transparent}.tedi-card>.tedi-card-row>.tedi-card-content:not(:last-child,.tedi-card-content--has-separator){border-right:transparent}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:last-child{border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:first-child{border-bottom-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:last-child{border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:not(:first-child)>.tedi-card-content{border-top:transparent}.tedi-card>.tedi-card-row:not(:last-child,.tedi-card-row--has-separator)>.tedi-card-content{border-bottom:transparent}.tedi-card--selected{outline:1px solid var(--_card-selected-border);outline-offset:-1px}.tedi-card--borderless{--_card-border: transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
116
+ }
117
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardComponent, decorators: [{
118
+ type: Component,
119
+ args: [{ selector: "tedi-card", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
120
+ "[class.tedi-card]": "true",
121
+ "[class.tedi-card--borderless]": "borderless()",
122
+ "[class.tedi-card--selected]": "selected()",
123
+ "[class]": "modifierClasses()",
124
+ }, hostDirectives: [
125
+ {
126
+ directive: CardColorsDirective,
127
+ inputs: ["background", "border"],
128
+ },
129
+ {
130
+ directive: CardPaddingDirective,
131
+ inputs: ["padding"],
132
+ },
133
+ ], template: "<ng-content></ng-content>\n", styles: [".tedi-card{--_card-border: var(--card-border-primary);--_card-selected-border: var(--card-border-selected);--_card-bg: var(--card-background-primary);--_card-timeline-color: var(--general-border-accent);border-radius:var(--_card-radius);display:flex;flex-direction:column;position:relative}.tedi-card{--_card-radius: var(--card-radius-rounded-mobile)}@media (min-width: 576px){.tedi-card{--_card-radius: var(--card-radius-rounded-tablet)}}@media (min-width: 992px){.tedi-card{--_card-radius: var(--card-radius-rounded-desktop)}}.tedi-card--background--accent{--_card-bg: var(--card-background-accent)}.tedi-card--border--accent{--_card-border: var(--card-background-accent)}.tedi-card--background--brand-primary{--_card-bg: var(--card-background-brand-primary)}.tedi-card--border--brand-primary{--_card-border: var(--card-background-brand-primary)}.tedi-card--background--brand-secondary{--_card-bg: var(--card-background-brand-secondary)}.tedi-card--border--brand-secondary{--_card-border: var(--card-background-brand-secondary)}.tedi-card--background--brand-tertiary{--_card-bg: var(--card-background-brand-tertiary)}.tedi-card--border--brand-tertiary{--_card-border: var(--card-background-brand-tertiary)}.tedi-card--background--brand-quaternary{--_card-bg: var(--card-background-brand-quaternary)}.tedi-card--border--brand-quaternary{--_card-border: var(--card-background-brand-quaternary)}.tedi-card--background--primary{--_card-bg: var(--card-background-primary)}.tedi-card--border--primary{--_card-border: var(--card-background-primary)}.tedi-card--background--secondary{--_card-bg: var(--card-background-secondary)}.tedi-card--border--secondary{--_card-border: var(--card-background-secondary)}.tedi-card--background--tertiary{--_card-bg: var(--card-background-tertiary)}.tedi-card--border--tertiary{--_card-border: var(--card-background-tertiary)}.tedi-card--background--info-primary{--_card-bg: var(--general-status-info-background-light)}.tedi-card--border--info-primary{--_card-border: var(--general-status-info-background-light)}.tedi-card--background--info-secondary{--_card-bg: var(--general-status-info-background-dark)}.tedi-card--border--info-secondary{--_card-border: var(--general-status-info-background-dark)}.tedi-card--background--neutral-primary{--_card-bg: var(--general-status-neutral-background-light)}.tedi-card--border--neutral-primary{--_card-border: var(--general-status-neutral-background-light)}.tedi-card--background--neutral-secondary{--_card-bg: var(--general-status-neutral-background-dark)}.tedi-card--border--neutral-secondary{--_card-border: var(--general-status-neutral-background-dark)}.tedi-card--background--success-primary{--_card-bg: var(--card-background-success)}.tedi-card--border--success-primary{--_card-border: var(--card-background-success)}.tedi-card--background--success-secondary{--_card-bg: var(--general-status-success-background-secondary)}.tedi-card--border--success-secondary{--_card-border: var(--general-status-success-background-secondary)}.tedi-card--background--danger-primary{--_card-bg: var(--general-status-danger-background-primary)}.tedi-card--border--danger-primary{--_card-border: var(--general-status-danger-background-primary)}.tedi-card--background--danger-secondary{--_card-bg: var(--general-status-danger-background-secondary)}.tedi-card--border--danger-secondary{--_card-border: var(--general-status-danger-background-secondary)}.tedi-card--background--warning-primary{--_card-bg: var(--general-status-warning-background-light)}.tedi-card--border--warning-primary{--_card-border: var(--general-status-warning-background-light)}.tedi-card--background--warning-secondary{--_card-bg: var(--general-status-warning-background-dark)}.tedi-card--border--warning-secondary{--_card-border: var(--general-status-warning-background-dark)}.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--spacing-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--spacing-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--spacing-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--spacing-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--spacing-none{--_card-padding: 0}.tedi-card{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal)}.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-xs{--_card-padding: var(--card-padding-xs-desktop)}}.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-xs{--_card-padding-vertical: var(--card-padding-xs-desktop)}}.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-xs{--_card-padding-horizontal: var(--card-padding-xs-desktop)}}.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-xs{--_card-padding-top: var(--card-padding-xs-desktop)}}.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-xs{--_card-padding-bottom: var(--card-padding-xs-desktop)}}.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-xs{--_card-padding-left: var(--card-padding-xs-desktop)}}.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-mobile)}@media (min-width: 576px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-xs{--_card-padding-right: var(--card-padding-xs-desktop)}}.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-sm{--_card-padding: var(--card-padding-sm-desktop)}}.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-sm{--_card-padding-vertical: var(--card-padding-sm-desktop)}}.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-sm{--_card-padding-horizontal: var(--card-padding-sm-desktop)}}.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-sm{--_card-padding-top: var(--card-padding-sm-desktop)}}.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-sm{--_card-padding-bottom: var(--card-padding-sm-desktop)}}.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-sm{--_card-padding-left: var(--card-padding-sm-desktop)}}.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-mobile)}@media (min-width: 576px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-sm{--_card-padding-right: var(--card-padding-sm-desktop)}}.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-md{--_card-padding: var(--card-padding-md-default-desktop)}}.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-md{--_card-padding-vertical: var(--card-padding-md-default-desktop)}}.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-md{--_card-padding-horizontal: var(--card-padding-md-default-desktop)}}.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-md{--_card-padding-top: var(--card-padding-md-default-desktop)}}.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-md{--_card-padding-bottom: var(--card-padding-md-default-desktop)}}.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-md{--_card-padding-left: var(--card-padding-md-default-desktop)}}.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-mobile)}@media (min-width: 576px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-md{--_card-padding-right: var(--card-padding-md-default-desktop)}}.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-lg{--_card-padding: var(--card-padding-lg-desktop)}}.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-vertical-lg{--_card-padding-vertical: var(--card-padding-lg-desktop)}}.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-horizontal-lg{--_card-padding-horizontal: var(--card-padding-lg-desktop)}}.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-top-lg{--_card-padding-top: var(--card-padding-lg-desktop)}}.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-bottom-lg{--_card-padding-bottom: var(--card-padding-lg-desktop)}}.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-left-lg{--_card-padding-left: var(--card-padding-lg-desktop)}}.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-mobile)}@media (min-width: 576px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-tablet)}}@media (min-width: 992px){.tedi-card--padding-right-lg{--_card-padding-right: var(--card-padding-lg-desktop)}}.tedi-card--padding-none{--_card-padding: 0}.tedi-card--padding-vertical-none{--_card-padding-vertical: 0}.tedi-card--padding-horizontal-none{--_card-padding-horizontal: 0}.tedi-card--padding-top-none{--_card-padding-top: 0}.tedi-card--padding-bottom-none{--_card-padding-bottom: 0}.tedi-card--padding-left-none{--_card-padding-left: 0}.tedi-card--padding-right-none{--_card-padding-right: 0}.tedi-card--accent-border:before{content:\"\";display:block;position:absolute;left:0;top:0;bottom:0;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius);border-left:4px solid var(--_card-border-accent)}.tedi-card--accent-border--info{--_card-border-accent: var(--general-status-info-background-dark)}.tedi-card--accent-border--success{--_card-border-accent: var(--general-status-success-background-secondary)}.tedi-card--accent-border--warning{--_card-border-accent: var(--general-status-warning-background-dark)}.tedi-card--accent-border--danger{--_card-border-accent: var(--general-status-danger-background-secondary)}.tedi-card>.tedi-card-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:not(:first-child){border-top:transparent}.tedi-card>.tedi-card-content:not(.tedi-card-content--has-separator,:last-child){border-bottom:transparent}.tedi-card>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-content:last-child{border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row>.tedi-card-content:not(:first-child){border-left:transparent}.tedi-card>.tedi-card-row>.tedi-card-content:not(:last-child,.tedi-card-content--has-separator){border-right:transparent}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:first-child{border-top-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:first-child>.tedi-card-content:last-child{border-top-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:first-child{border-bottom-left-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:last-child>.tedi-card-content:last-child{border-bottom-right-radius:var(--_card-radius)}.tedi-card>.tedi-card-row:not(:first-child)>.tedi-card-content{border-top:transparent}.tedi-card>.tedi-card-row:not(:last-child,.tedi-card-row--has-separator)>.tedi-card-content{border-bottom:transparent}.tedi-card--selected{outline:1px solid var(--_card-selected-border);outline-offset:-1px}.tedi-card--borderless{--_card-border: transparent}\n"] }]
134
+ }] });
135
+
136
+ class AccordionItemComponent {
137
+ /**
138
+ * Accordion item id
139
+ */
140
+ id = input.required();
141
+ /**
142
+ * Whether accordion item is selected
143
+ */
144
+ selected = input(false);
145
+ opened = signal(false);
146
+ headerId = computed(() => {
147
+ return `tedi-accordion-header-${this.id()}`;
148
+ });
149
+ contentId = computed(() => {
150
+ return `tedi-accordion-content-${this.id()}`;
151
+ });
152
+ open() {
153
+ this.opened.set(true);
154
+ }
155
+ close() {
156
+ this.opened.set(false);
157
+ }
158
+ toggle() {
159
+ this.opened.update((wasOpened) => !wasOpened);
160
+ }
161
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
162
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: AccordionItemComponent, isStandalone: true, selector: "tedi-accordion-item", inputs: { id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-accordion-item": "true" } }, ngImport: i0, template: "<tedi-card\n [selected]=\"selected()\"\n class=\"tedi-accordion-item__card\"\n [class.tedi-accordion-item__card--expanded]=\"opened()\"\n>\n <ng-content></ng-content>\n</tedi-card>\n", styles: [".tedi-accordion-item{--_accordion-columns: minmax(auto, 200px) auto;--_accordion-header-spacing: 8px}.tedi-accordion-item>.tedi-accordion-item__card{display:grid;grid-template-rows:max-content 0fr;transition:grid-template-rows .3s}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-content>.tedi-card-content{border-top:transparent;border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card--expanded{grid-template-rows:max-content 1fr}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-bottom-right-radius:0;border-bottom-left-radius:0}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-content{animation:accordion-content-overflow-transition;animation-delay:.3s;animation-fill-mode:forwards}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon){grid-template-areas:\"accordion-icon-content accordion-header\" \"accordion-icon-fill accordion-content\";grid-template-columns:var(--_accordion-columns)}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-header-host>.tedi-accordion-item-header{grid-area:accordion-header;border-top-left-radius:0;border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content>.tedi-card-content{border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content{grid-area:accordion-content}@keyframes accordion-content-overflow-transition{to{overflow:visible}}\n"], dependencies: [{ kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
163
+ }
164
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemComponent, decorators: [{
165
+ type: Component,
166
+ args: [{ selector: "tedi-accordion-item", standalone: true, imports: [CardComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
167
+ "[class.tedi-accordion-item]": "true",
168
+ }, template: "<tedi-card\n [selected]=\"selected()\"\n class=\"tedi-accordion-item__card\"\n [class.tedi-accordion-item__card--expanded]=\"opened()\"\n>\n <ng-content></ng-content>\n</tedi-card>\n", styles: [".tedi-accordion-item{--_accordion-columns: minmax(auto, 200px) auto;--_accordion-header-spacing: 8px}.tedi-accordion-item>.tedi-accordion-item__card{display:grid;grid-template-rows:max-content 0fr;transition:grid-template-rows .3s}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-top-left-radius:var(--_card-radius);border-top-right-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card>.tedi-accordion-item-content>.tedi-card-content{border-top:transparent;border-bottom-left-radius:var(--_card-radius);border-bottom-right-radius:var(--_card-radius)}.tedi-accordion-item>.tedi-accordion-item__card--expanded{grid-template-rows:max-content 1fr}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-header-host>.tedi-accordion-item-header{border-bottom-right-radius:0;border-bottom-left-radius:0}.tedi-accordion-item>.tedi-accordion-item__card--expanded>.tedi-accordion-item-content{animation:accordion-content-overflow-transition;animation-delay:.3s;animation-fill-mode:forwards}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon){grid-template-areas:\"accordion-icon-content accordion-header\" \"accordion-icon-fill accordion-content\";grid-template-columns:var(--_accordion-columns)}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-header-host>.tedi-accordion-item-header{grid-area:accordion-header;border-top-left-radius:0;border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content>.tedi-card-content{border-bottom-left-radius:0;border-left:transparent}.tedi-accordion-item>.tedi-accordion-item__card:has(.tedi-accordion-icon)>.tedi-accordion-item-content{grid-area:accordion-content}@keyframes accordion-content-overflow-transition{to{overflow:visible}}\n"] }]
169
+ }] });
170
+
171
+ class AccordionComponent {
172
+ /**
173
+ * id-s of items that should be opened by default.
174
+ */
175
+ defaultOpenItems = input();
176
+ /**
177
+ * Whether only one accordion item can be opened at once.
178
+ * @default false
179
+ */
180
+ singleOpen = input(false);
181
+ accordionItems = contentChildren(AccordionItemComponent, {
182
+ descendants: true,
183
+ });
184
+ prevOpens = [];
185
+ constructor() {
186
+ effect(() => {
187
+ const single = this.singleOpen();
188
+ const items = this.accordionItems();
189
+ const opens = items.map((it) => it.opened());
190
+ let newlyOpenedIndex = -1;
191
+ if (single && items.length > 0) {
192
+ for (let i = 0; i < opens.length; i++) {
193
+ const prev = i < this.prevOpens.length ? this.prevOpens[i] : false;
194
+ if (!prev && opens[i]) {
195
+ newlyOpenedIndex = i;
196
+ }
197
+ }
198
+ if (newlyOpenedIndex >= 0) {
199
+ for (let i = 0; i < items.length; i++) {
200
+ if (i !== newlyOpenedIndex && items[i].opened()) {
201
+ items[i].close();
202
+ }
203
+ }
204
+ }
205
+ }
206
+ this.prevOpens = opens;
207
+ });
208
+ }
209
+ openDefaultOpenItems() {
210
+ const defaultOpenItems = this.defaultOpenItems();
211
+ this.accordionItems().forEach((item) => {
212
+ if (defaultOpenItems?.includes(item.id())) {
213
+ item.open();
214
+ }
215
+ });
216
+ }
217
+ ngOnInit() {
218
+ this.openDefaultOpenItems();
219
+ }
220
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
221
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: AccordionComponent, isStandalone: true, selector: "tedi-accordion", inputs: { defaultOpenItems: { classPropertyName: "defaultOpenItems", publicName: "defaultOpenItems", isSignal: true, isRequired: false, transformFunction: null }, singleOpen: { classPropertyName: "singleOpen", publicName: "singleOpen", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "accordionItems", predicate: AccordionItemComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [":host{display:contents}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush });
222
+ }
223
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionComponent, decorators: [{
224
+ type: Component,
225
+ args: [{ selector: "tedi-accordion", standalone: true, imports: [], changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\n", styles: [":host{display:contents}\n"] }]
226
+ }], ctorParameters: () => [] });
227
+
228
+ class AccordionIconComponent {
229
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
230
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: AccordionIconComponent, isStandalone: true, selector: "tedi-accordion-icon", host: { properties: { "class.tedi-accordion-icon": "true" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background"] }], ngImport: i0, template: "<div class=\"tedi-accordion-icon__content\"><ng-content></ng-content></div>\n<div class=\"tedi-accordion-icon__fill\"></div>\n", styles: [".tedi-accordion-icon{display:contents;--_card-bg: var(--card-background-secondary)}.tedi-accordion-icon__content{display:block;padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);grid-area:accordion-icon-content;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-bottom:transparent;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-icon__fill{display:block;grid-area:accordion-icon-fill;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-top:transparent;border-bottom-left-radius:var(--_card-radius);margin-top:-4px}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
231
+ }
232
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionIconComponent, decorators: [{
233
+ type: Component,
234
+ args: [{ standalone: true, selector: "tedi-accordion-icon", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
235
+ "[class.tedi-accordion-icon]": "true",
236
+ }, hostDirectives: [
237
+ {
238
+ directive: CardColorsDirective,
239
+ inputs: ["background"],
240
+ },
241
+ ], template: "<div class=\"tedi-accordion-icon__content\"><ng-content></ng-content></div>\n<div class=\"tedi-accordion-icon__fill\"></div>\n", styles: [".tedi-accordion-icon{display:contents;--_card-bg: var(--card-background-secondary)}.tedi-accordion-icon__content{display:block;padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);grid-area:accordion-icon-content;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-bottom:transparent;border-top-left-radius:var(--_card-radius);border-bottom-left-radius:var(--_card-radius)}.tedi-accordion-icon__fill{display:block;grid-area:accordion-icon-fill;background-color:var(--_card-bg);border:1px solid var(--_card-border);border-top:transparent;border-bottom-left-radius:var(--_card-radius);margin-top:-4px}\n"] }]
242
+ }] });
243
+
244
+ class CardContentComponent {
245
+ /**
246
+ * Whether content block should have separator.
247
+ * Inside card the separator is created under the content, inside card row the separator is created to the right of content.
248
+ * @default false
249
+ */
250
+ hasSeparator = input(false, { transform: booleanAttribute });
251
+ /**
252
+ * Whether content block should take minimal space inside of row.
253
+ * Sets flex-grow to 0.
254
+ * @default false
255
+ */
256
+ autoWidth = input(false, { transform: booleanAttribute });
257
+ /**
258
+ * Creates a timeline line next to the content block.
259
+ * @default false
260
+ */
261
+ timeline = input(false, { transform: booleanAttribute });
262
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
263
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardContentComponent, isStandalone: true, selector: "tedi-card-content", inputs: { hasSeparator: { classPropertyName: "hasSeparator", publicName: "hasSeparator", isSignal: true, isRequired: false, transformFunction: null }, autoWidth: { classPropertyName: "autoWidth", publicName: "autoWidth", isSignal: true, isRequired: false, transformFunction: null }, timeline: { classPropertyName: "timeline", publicName: "timeline", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card-content": "true", "class.tedi-card-content--has-separator": "hasSeparator() || timeline()", "class.tedi-card-content--auto-width": "autoWidth()", "class.tedi-card-content--timeline": "timeline()" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background", "border", "border"] }, { directive: CardPaddingDirective, inputs: ["padding", "padding"] }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card-content{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal);display:block;background-color:var(--_card-bg);border:1px solid var(--_card-border);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);flex:1 1 0}.tedi-card-content--auto-width{flex-grow:0}.tedi-card-content--timeline{position:relative;border-right:1px solid var(--_card-timeline-color)}.tedi-card-content--timeline:after{content:\"\";display:block;background-color:var(--_card-timeline-color);position:absolute;top:22px;right:-.5px;transform:translate(50%);width:9px;height:9px;border-radius:50%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
264
+ }
265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardContentComponent, decorators: [{
266
+ type: Component,
267
+ args: [{ selector: "tedi-card-content", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
268
+ "[class.tedi-card-content]": "true",
269
+ "[class.tedi-card-content--has-separator]": "hasSeparator() || timeline()",
270
+ "[class.tedi-card-content--auto-width]": "autoWidth()",
271
+ "[class.tedi-card-content--timeline]": "timeline()",
272
+ }, hostDirectives: [
273
+ {
274
+ directive: CardColorsDirective,
275
+ inputs: ["background", "border"],
276
+ },
277
+ {
278
+ directive: CardPaddingDirective,
279
+ inputs: ["padding"],
280
+ },
281
+ ], template: "<ng-content></ng-content>\n", styles: [".tedi-card-content{--_card-padding-vertical: var(--_card-padding);--_card-padding-horizontal: var(--_card-padding);--_card-padding-top: var(--_card-padding-vertical);--_card-padding-bottom: var(--_card-padding-vertical);--_card-padding-left: var(--_card-padding-horizontal);--_card-padding-right: var(--_card-padding-horizontal);display:block;background-color:var(--_card-bg);border:1px solid var(--_card-border);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left);flex:1 1 0}.tedi-card-content--auto-width{flex-grow:0}.tedi-card-content--timeline{position:relative;border-right:1px solid var(--_card-timeline-color)}.tedi-card-content--timeline:after{content:\"\";display:block;background-color:var(--_card-timeline-color);position:absolute;top:22px;right:-.5px;transform:translate(50%);width:9px;height:9px;border-radius:50%}\n"] }]
282
+ }] });
283
+
284
+ class AccordionItemContentComponent {
285
+ background = input();
286
+ accordionItem = inject(AccordionItemComponent);
287
+ headerId = this.accordionItem.headerId;
288
+ contentId = this.accordionItem.contentId;
289
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
290
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: AccordionItemContentComponent, isStandalone: true, selector: "tedi-accordion-item-content", inputs: { background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-accordion-item-content": "true" } }, ngImport: i0, template: "<tedi-card-content\n [background]=\"background()\"\n [id]=\"contentId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"headerId()\"\n>\n <ng-content></ng-content>\n</tedi-card-content>\n", styles: [".tedi-accordion-item-content{display:block;overflow:hidden}\n"], dependencies: [{ kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
291
+ }
292
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemContentComponent, decorators: [{
293
+ type: Component,
294
+ args: [{ selector: "tedi-accordion-item-content", standalone: true, imports: [CardContentComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
295
+ "[class.tedi-accordion-item-content]": "true",
296
+ }, template: "<tedi-card-content\n [background]=\"background()\"\n [id]=\"contentId()\"\n role=\"region\"\n [attr.aria-labelledby]=\"headerId()\"\n>\n <ng-content></ng-content>\n</tedi-card-content>\n", styles: [".tedi-accordion-item-content{display:block;overflow:hidden}\n"] }]
297
+ }] });
298
+
299
+ class CardHeaderComponent {
300
+ /**
301
+ * Variant of the card header.
302
+ */
303
+ variant = input();
304
+ modifierClasses = computed(() => {
305
+ return `tedi-card-header--${this.variant()}`;
306
+ });
307
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
308
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardHeaderComponent, isStandalone: true, selector: "tedi-card-header, [tedi-card-header]", inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card-header": "true", "class": "modifierClasses()" } }, hostDirectives: [{ directive: CardColorsDirective, inputs: ["background", "background"] }, { directive: CardPaddingDirective, inputs: ["padding", "padding"] }], ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card-header{border:1px solid var(--_card-border);background:var(--_card-bg);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left)}.tedi-card-header--primary{--_card-bg: var(--card-background-primary);--_card-border: var(--card-border-primary)}.tedi-card-header--secondary{--_card-bg: var(--card-background-secondary);--_card-border: var(--card-border-primary)}.tedi-card-header--tertiary{--_card-bg: var(--card-background-tertiary);--_card-border: var(--card-border-primary)}.tedi-card-header--brand{--_card-bg: linear-gradient(140deg, #005295 -17.66%, #1769ab 71.2%);--_card-border: transparent}.tedi-card-header--brand-dark{--_card-bg: var(--card-background-brand-secondary);--_card-border: transparent}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
309
+ }
310
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardHeaderComponent, decorators: [{
311
+ type: Component,
312
+ args: [{ selector: "tedi-card-header, [tedi-card-header]", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
313
+ "[class.tedi-card-header]": "true",
314
+ "[class]": "modifierClasses()",
315
+ }, hostDirectives: [
316
+ {
317
+ directive: CardColorsDirective,
318
+ inputs: ["background"],
319
+ },
320
+ {
321
+ directive: CardPaddingDirective,
322
+ inputs: ["padding"],
323
+ },
324
+ ], template: "<ng-content></ng-content>\n", styles: [".tedi-card-header{border:1px solid var(--_card-border);background:var(--_card-bg);padding:var(--_card-padding-top) var(--_card-padding-right) var(--_card-padding-bottom) var(--_card-padding-left)}.tedi-card-header--primary{--_card-bg: var(--card-background-primary);--_card-border: var(--card-border-primary)}.tedi-card-header--secondary{--_card-bg: var(--card-background-secondary);--_card-border: var(--card-border-primary)}.tedi-card-header--tertiary{--_card-bg: var(--card-background-tertiary);--_card-border: var(--card-border-primary)}.tedi-card-header--brand{--_card-bg: linear-gradient(140deg, #005295 -17.66%, #1769ab 71.2%);--_card-border: transparent}.tedi-card-header--brand-dark{--_card-bg: var(--card-background-brand-secondary);--_card-border: transparent}\n"] }]
325
+ }] });
326
+
327
+ const WHITE_ICON_VARIANTS = ["brand", "brand-dark"];
328
+ class AccordionItemHeaderComponent {
329
+ /**
330
+ * Whether accordion header should have indicator arrow
331
+ * @default false
332
+ */
333
+ indicator = input(false);
334
+ /**
335
+ * Open button text. Visible if both openText and closeText are provided.
336
+ */
337
+ openText = input();
338
+ /**
339
+ * Close button text. Visible if both openText and closeText are provided.
340
+ */
341
+ closeText = input();
342
+ /**
343
+ * Accordion header variant
344
+ */
345
+ variant = input();
346
+ /**
347
+ * Accordion header background
348
+ */
349
+ background = input();
350
+ /**
351
+ * Color of the indicator arrow
352
+ */
353
+ indicatorColor = input();
354
+ accordionItem = inject(AccordionItemComponent);
355
+ opened = this.accordionItem.opened;
356
+ headerId = this.accordionItem.headerId;
357
+ contentId = this.accordionItem.contentId;
358
+ toggleButtonText = computed(() => {
359
+ if (this.openText() && this.closeText()) {
360
+ return this.opened() ? this.closeText() : this.openText();
361
+ }
362
+ return;
363
+ });
364
+ indicatorIconColor = computed(() => {
365
+ if (this.indicatorColor()) {
366
+ return this.indicatorColor();
367
+ }
368
+ return WHITE_ICON_VARIANTS.includes(this.variant())
369
+ ? "white"
370
+ : "brand";
371
+ });
372
+ toggle() {
373
+ this.accordionItem.toggle();
374
+ }
375
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
376
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: AccordionItemHeaderComponent, isStandalone: true, selector: "tedi-accordion-item-header", inputs: { indicator: { classPropertyName: "indicator", publicName: "indicator", isSignal: true, isRequired: false, transformFunction: null }, openText: { classPropertyName: "openText", publicName: "openText", isSignal: true, isRequired: false, transformFunction: null }, closeText: { classPropertyName: "closeText", publicName: "closeText", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, background: { classPropertyName: "background", publicName: "background", isSignal: true, isRequired: false, transformFunction: null }, indicatorColor: { classPropertyName: "indicatorColor", publicName: "indicatorColor", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-accordion-item-header-host": "true" } }, ngImport: i0, template: "<button\n [id]=\"headerId()\"\n tedi-card-header\n [variant]=\"variant()\"\n [background]=\"background()\"\n class=\"tedi-accordion-item-header\"\n [class.tedi-accordion-item-header--opened]=\"opened()\"\n [attr.aria-expanded]=\"opened()\"\n [attr.aria-controls]=\"contentId()\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n @if (indicator()) {\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"18\"\n [color]=\"indicatorIconColor()\"\n />\n }\n @if (toggleButtonText()) {\n <span\n tedi-button\n variant=\"neutral\"\n class=\"tedi-accordion-item-header__toggle\"\n >\n {{ toggleButtonText() }}\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"16\"\n color=\"brand\"\n />\n </span>\n }\n <ng-content select=\"[tedi-accordion-header-end]\"></ng-content>\n</button>\n", styles: [".tedi-accordion-item-header-host{display:contents}.tedi-accordion-item-header{cursor:pointer;font-size:inherit;display:flex;gap:var(--_accordion-header-spacing);align-items:center;justify-content:space-between}.tedi-accordion-item-header [tedi-accordion-header-end]{margin-left:auto}.tedi-accordion-item-header__indicator{transition:transform .3s}.tedi-accordion-item-header .tedi-accordion-item-header__toggle{--_btn-padding-y: 0}.tedi-accordion-item-header--opened>.tedi-accordion-item-header__indicator,.tedi-accordion-item-header--opened>.tedi-accordion-item-header__toggle>.tedi-accordion-item-header__indicator{transform:rotateX(180deg)}\n"], dependencies: [{ kind: "component", type: CardHeaderComponent, selector: "tedi-card-header, [tedi-card-header]", inputs: ["variant"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
377
+ }
378
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: AccordionItemHeaderComponent, decorators: [{
379
+ type: Component,
380
+ args: [{ selector: "tedi-accordion-item-header", standalone: true, imports: [CardHeaderComponent, IconComponent, ButtonComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
381
+ "[class.tedi-accordion-item-header-host]": "true",
382
+ }, template: "<button\n [id]=\"headerId()\"\n tedi-card-header\n [variant]=\"variant()\"\n [background]=\"background()\"\n class=\"tedi-accordion-item-header\"\n [class.tedi-accordion-item-header--opened]=\"opened()\"\n [attr.aria-expanded]=\"opened()\"\n [attr.aria-controls]=\"contentId()\"\n (click)=\"toggle()\"\n>\n <ng-content></ng-content>\n @if (indicator()) {\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"18\"\n [color]=\"indicatorIconColor()\"\n />\n }\n @if (toggleButtonText()) {\n <span\n tedi-button\n variant=\"neutral\"\n class=\"tedi-accordion-item-header__toggle\"\n >\n {{ toggleButtonText() }}\n <tedi-icon\n name=\"keyboard_arrow_down\"\n class=\"tedi-accordion-item-header__indicator\"\n [size]=\"16\"\n color=\"brand\"\n />\n </span>\n }\n <ng-content select=\"[tedi-accordion-header-end]\"></ng-content>\n</button>\n", styles: [".tedi-accordion-item-header-host{display:contents}.tedi-accordion-item-header{cursor:pointer;font-size:inherit;display:flex;gap:var(--_accordion-header-spacing);align-items:center;justify-content:space-between}.tedi-accordion-item-header [tedi-accordion-header-end]{margin-left:auto}.tedi-accordion-item-header__indicator{transition:transform .3s}.tedi-accordion-item-header .tedi-accordion-item-header__toggle{--_btn-padding-y: 0}.tedi-accordion-item-header--opened>.tedi-accordion-item-header__indicator,.tedi-accordion-item-header--opened>.tedi-accordion-item-header__toggle>.tedi-accordion-item-header__indicator{transform:rotateX(180deg)}\n"] }]
383
+ }] });
384
+
385
+ class CardRowComponent {
386
+ /**
387
+ * Whether row should have separator under it.
388
+ * @default false
389
+ */
390
+ hasSeparator = input(false, { transform: booleanAttribute });
391
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardRowComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
392
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: CardRowComponent, isStandalone: true, selector: "tedi-card-row", inputs: { hasSeparator: { classPropertyName: "hasSeparator", publicName: "hasSeparator", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-card-row": "true", "class.tedi-card-row--has-separator": "hasSeparator()" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".tedi-card-row{display:flex}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
393
+ }
394
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CardRowComponent, decorators: [{
395
+ type: Component,
396
+ args: [{ selector: "tedi-card-row", standalone: true, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
397
+ "[class.tedi-card-row]": "true",
398
+ "[class.tedi-card-row--has-separator]": "hasSeparator()",
399
+ }, template: "<ng-content></ng-content>\n", styles: [".tedi-card-row{display:flex}\n"] }]
400
+ }] });
401
+
402
+ class ChoiceGroupDirective {
403
+ /*
404
+ * Variant of the cards in group.
405
+ */
406
+ variant = input("primary");
407
+ /*
408
+ * Whether choicegroup card has indicator
409
+ */
410
+ hasIndicator = input(true);
411
+ /*
412
+ * Spacing between radios. unit: px.
413
+ * @default 4
414
+ */
415
+ spacing = input(4);
416
+ modifierClasses = computed(() => {
417
+ return `tedi-choicegroup--${this.variant()}`;
418
+ });
419
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChoiceGroupDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
420
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.15", type: ChoiceGroupDirective, isStandalone: true, inputs: { variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, hasIndicator: { classPropertyName: "hasIndicator", publicName: "hasIndicator", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-choicegroup": "true", "class.tedi-choicegroup--stacked": "spacing() === 0", "class.tedi-choicegroup--plain": "!hasIndicator()", "class": "modifierClasses()" } }, ngImport: i0 });
421
+ }
422
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ChoiceGroupDirective, decorators: [{
423
+ type: Directive,
424
+ args: [{
425
+ standalone: true,
426
+ host: {
427
+ "[class.tedi-choicegroup]": "true",
428
+ "[class.tedi-choicegroup--stacked]": "spacing() === 0",
429
+ "[class.tedi-choicegroup--plain]": "!hasIndicator()",
430
+ "[class]": "modifierClasses()",
431
+ },
432
+ }]
433
+ }] });
434
+
435
+ class CheckboxGroupComponent {
436
+ /**
437
+ * Checkbox group label.
438
+ */
439
+ label = input();
440
+ /*
441
+ * Whether checkbox group is disabled
442
+ */
443
+ disabled = input();
444
+ /*
445
+ * Whether checkbox group has error.
446
+ */
447
+ hasError = input();
448
+ /*
449
+ * Size of the checkboxes in group.
450
+ */
451
+ size = input();
452
+ /*
453
+ * Direction in which checkboxes flow.
454
+ */
455
+ direction = input("column");
456
+ /*
457
+ * Spacing between checkboxes. unit: px.
458
+ * @default 4
459
+ */
460
+ spacing = input(4);
461
+ /**
462
+ * FeedbackText component inputs.
463
+ */
464
+ feedbackText = input();
465
+ labelId = computed(() => {
466
+ if (this.label()) {
467
+ return generateUUID();
468
+ }
469
+ return;
470
+ });
471
+ groupDisabled = computed(() => this.disabled());
472
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
473
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CheckboxGroupComponent, isStandalone: true, selector: "tedi-checkbox-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-checkbox-group": "true", "attr.role": "'group'", "attr.aria-labelledby": "labelId()" } }, ngImport: i0, template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
474
+ }
475
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxGroupComponent, decorators: [{
476
+ type: Component,
477
+ args: [{ standalone: true, selector: "tedi-checkbox-group", imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
478
+ "[class.tedi-checkbox-group]": "true",
479
+ "[attr.role]": "'group'",
480
+ "[attr.aria-labelledby]": "labelId()",
481
+ }, template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"] }]
482
+ }] });
483
+
484
+ class CheckboxCardGroupComponent extends CheckboxGroupComponent {
485
+ /*
486
+ * Direction in which checkboxes flow.
487
+ */
488
+ direction = input("row");
489
+ /*
490
+ * Value of card group. Do not use with controlled card group.
491
+ */
492
+ value = model([]);
493
+ checkboxes = contentChildren(forwardRef(() => CheckboxComponent), {
494
+ descendants: true,
495
+ });
496
+ _controlDisabled = signal(false);
497
+ _onChange = () => { };
498
+ _onTouched = () => { };
499
+ groupDisabled = computed(() => {
500
+ return this.disabled() || this._controlDisabled();
501
+ });
502
+ writeValue(value) {
503
+ this.value.set(value);
504
+ this.updateCheckboxesState();
505
+ }
506
+ registerOnChange(fn) {
507
+ this._onChange = fn;
508
+ }
509
+ registerOnTouched(fn) {
510
+ this._onTouched = fn;
511
+ }
512
+ setDisabledState(isDisabled) {
513
+ this._controlDisabled.set(isDisabled);
514
+ }
515
+ updateCheckboxesState() {
516
+ const value = this.value();
517
+ this.checkboxes().forEach((checkbox) => {
518
+ const checked = value?.includes(checkbox.value());
519
+ checkbox.checked.set(checked);
520
+ });
521
+ }
522
+ onCheckboxChange(checked, value) {
523
+ this.value.update((checkedItems) => {
524
+ if (checked) {
525
+ return [...checkedItems, value];
526
+ }
527
+ else {
528
+ return checkedItems.filter((item) => item !== value);
529
+ }
530
+ });
531
+ this._onChange(this.value());
532
+ }
533
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxCardGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
534
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CheckboxCardGroupComponent, isStandalone: true, selector: "tedi-checkbox-card-group", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, providers: [
535
+ {
536
+ provide: NG_VALUE_ACCESSOR,
537
+ useExisting: forwardRef(() => CheckboxCardGroupComponent),
538
+ multi: true,
539
+ },
540
+ {
541
+ provide: CheckboxGroupComponent,
542
+ useExisting: CheckboxCardGroupComponent,
543
+ },
544
+ ], queries: [{ propertyName: "checkboxes", predicate: i0.forwardRef(() => CheckboxComponent), descendants: true, isSignal: true }], usesInheritance: true, hostDirectives: [{ directive: ChoiceGroupDirective, inputs: ["variant", "variant", "hasIndicator", "hasIndicator", "spacing", "spacing"] }], ngImport: i0, template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n", ".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
545
+ }
546
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxCardGroupComponent, decorators: [{
547
+ type: Component,
548
+ args: [{ standalone: true, selector: "tedi-checkbox-card-group", imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
549
+ {
550
+ provide: NG_VALUE_ACCESSOR,
551
+ useExisting: forwardRef(() => CheckboxCardGroupComponent),
552
+ multi: true,
553
+ },
554
+ {
555
+ provide: CheckboxGroupComponent,
556
+ useExisting: CheckboxCardGroupComponent,
557
+ },
558
+ ], hostDirectives: [
559
+ {
560
+ directive: ChoiceGroupDirective,
561
+ inputs: ["variant", "hasIndicator", "spacing"],
562
+ },
563
+ ], template: "@if (label()) {\n <span tedi-label [id]=\"labelId()\">\n {{ label() }}\n </span>\n}\n<div\n class=\"tedi-checkbox-group__checkboxes\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n", ".tedi-checkbox-group{display:block}.tedi-checkbox-group__checkboxes{display:flex;flex-wrap:wrap}\n"] }]
564
+ }] });
565
+
566
+ class CheckboxComponent {
567
+ /*
568
+ * unique id.
569
+ */
570
+ inputId = input.required();
571
+ /*
572
+ * Whether checkbox is checked. Do not used with controlled checkboxes.
573
+ */
574
+ checked = model(null);
575
+ /*
576
+ * Whether checkbox is indeterminate.
577
+ */
578
+ indeterminate = input();
579
+ /*
580
+ * Checkbox value. For use in checkbox card group
581
+ */
582
+ value = input();
583
+ /*
584
+ * Whether checkbox is disabled.
585
+ */
586
+ disabled = model();
587
+ /*
588
+ * Size of the checkbox. Overwrites group size.
589
+ */
590
+ size = input();
591
+ /*
592
+ * Whether checkbox has error.
593
+ */
594
+ hasError = input();
595
+ /**
596
+ * FeedbackText component inputs.
597
+ */
598
+ feedbackText = input();
599
+ _inputEl = viewChild.required("input");
600
+ checkboxGroup = inject(CheckboxGroupComponent, { optional: true });
601
+ checkboxCardGroup = inject(CheckboxCardGroupComponent, {
602
+ optional: true,
603
+ });
604
+ _onChange = () => { };
605
+ _onTouched = () => { };
606
+ feedbackTextId = computed(() => {
607
+ if (this.feedbackText()) {
608
+ return generateUUID();
609
+ }
610
+ return;
611
+ });
612
+ indicatorIcon = computed(() => {
613
+ if (this.indeterminate()) {
614
+ return "remove";
615
+ }
616
+ if (this.checked()) {
617
+ return "check";
618
+ }
619
+ return;
620
+ });
621
+ checkboxSize = computed(() => {
622
+ return this.size() ?? this.checkboxGroup?.size();
623
+ });
624
+ iconSize = computed(() => {
625
+ return this.checkboxSize() === "large" ? 18 : 16;
626
+ });
627
+ checkboxDisabled = computed(() => {
628
+ return this.disabled() || this.checkboxGroup?.groupDisabled();
629
+ });
630
+ focus() {
631
+ this._inputEl().nativeElement.focus();
632
+ }
633
+ writeValue(value) {
634
+ this.checked.set(value);
635
+ }
636
+ registerOnChange(fn) {
637
+ this._onChange = fn;
638
+ }
639
+ registerOnTouched(fn) {
640
+ this._onTouched = fn;
641
+ }
642
+ setDisabledState(isDisabled) {
643
+ this.disabled.set(isDisabled);
644
+ }
645
+ onInputChange(event) {
646
+ const checked = event.target.checked;
647
+ this._onChange(checked);
648
+ this.checked.set(checked);
649
+ this.checkboxCardGroup?.onCheckboxChange(checked, this.value());
650
+ }
651
+ ngOnInit() {
652
+ if (this.checked()) {
653
+ this._onChange(true);
654
+ }
655
+ }
656
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
657
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: CheckboxComponent, isStandalone: true, selector: "tedi-checkbox", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, indeterminate: { classPropertyName: "indeterminate", publicName: "indeterminate", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange", disabled: "disabledChange" }, host: { properties: { "class.tedi-checkbox": "true", "class.tedi-checkbox--error": "hasError() || cardGroup?.hasError()", "class.tedi-checkbox--large": "checkboxSize() === 'large'" } }, providers: [
658
+ {
659
+ provide: NG_VALUE_ACCESSOR,
660
+ useExisting: forwardRef(() => CheckboxComponent),
661
+ multi: true,
662
+ },
663
+ ], viewQueries: [{ propertyName: "_inputEl", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tedi-checkbox__input-area\">\n <input\n class=\"tedi-checkbox__input\"\n type=\"checkbox\"\n #input\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"checkboxDisabled()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"_onTouched()\"\n />\n <div class=\"tedi-checkbox__indicator\">\n @if (indicatorIcon(); as iconName) {\n <tedi-icon [name]=\"iconName\" color=\"white\" [size]=\"iconSize()\" />\n }\n </div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-checkbox__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox{--_checkbox-bg: var(--form-checkbox-radio-default-background-default);--_checkbox-border: var(--form-checkbox-radio-default-border-default);--_checkbox-label-color: var(--general-text-primary);--_checkbox-check-color: var(--_checkbox-border);display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-desktop)}}.tedi-checkbox{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-checkbox{--_label-size: var(--body-regular-size-desktop)}}.tedi-checkbox tedi-icon{-webkit-user-select:none;user-select:none}.tedi-checkbox__input-area{position:relative;grid-area:input-area}.tedi-checkbox__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-checkbox__indicator{position:relative;width:var(--_checkbox-size);height:var(--_checkbox-size);border-radius:var(--_checkbox-radius);border:1px solid var(--_checkbox-border);background:var(--_checkbox-bg);margin-right:var(--_checkbox-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-checkbox__label{color:var(--_checkbox-label-color);font-size:var(--_label-size);grid-area:label}.tedi-checkbox__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-checkbox__label{font-family:var(--family-primary-desktop)}}.tedi-checkbox:has(input:checked){--_checkbox-bg: var(--form-checkbox-radio-default-background-selected);--_checkbox-border: var(--form-checkbox-radio-default-border-selected)}.tedi-checkbox:has(input:hover,input:focus-visible) .tedi-checkbox__indicator{outline:1px solid var(--_checkbox-border)}.tedi-checkbox:has(input:hover,input:focus-visible){--_checkbox-border: var(--form-checkbox-radio-default-border-hover)}.tedi-checkbox:has(input:active){--_checkbox-border: var(--form-checkbox-radio-default-border-active);--_checkbox-bg: var(--form-checkbox-radio-default-background-active)}.tedi-checkbox:has(input:disabled){pointer-events:none;--_checkbox-label-color: var(--general-text-disabled);--_checkbox-bg: var(--form-input-background-disabled);--_checkbox-border: var(--form-input-border-disabled)}.tedi-checkbox:has(input:disabled:checked){--_checkbox-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-checkbox--error{--_checkbox-bg: var(--form-checkbox-radio-default-background-error);--_checkbox-border: var(--form-general-feedback-error-border)}.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-checkbox .tedi-feedback-text{grid-area:feedback}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
664
+ }
665
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: CheckboxComponent, decorators: [{
666
+ type: Component,
667
+ args: [{ standalone: true, selector: "tedi-checkbox", imports: [FeedbackTextComponent, IconComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
668
+ {
669
+ provide: NG_VALUE_ACCESSOR,
670
+ useExisting: forwardRef(() => CheckboxComponent),
671
+ multi: true,
672
+ },
673
+ ], host: {
674
+ "[class.tedi-checkbox]": "true",
675
+ "[class.tedi-checkbox--error]": "hasError() || cardGroup?.hasError()",
676
+ "[class.tedi-checkbox--large]": "checkboxSize() === 'large'",
677
+ }, template: "<div class=\"tedi-checkbox__input-area\">\n <input\n class=\"tedi-checkbox__input\"\n type=\"checkbox\"\n #input\n [id]=\"inputId()\"\n [checked]=\"checked()\"\n [disabled]=\"checkboxDisabled()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n [indeterminate]=\"indeterminate()\"\n (change)=\"onInputChange($event)\"\n (blur)=\"_onTouched()\"\n />\n <div class=\"tedi-checkbox__indicator\">\n @if (indicatorIcon(); as iconName) {\n <tedi-icon [name]=\"iconName\" color=\"white\" [size]=\"iconSize()\" />\n }\n </div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-checkbox__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-checkbox{--_checkbox-bg: var(--form-checkbox-radio-default-background-default);--_checkbox-border: var(--form-checkbox-radio-default-border-default);--_checkbox-label-color: var(--general-text-primary);--_checkbox-check-color: var(--_checkbox-border);display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-mobile)}@media (min-width: 576px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-tablet)}}@media (min-width: 992px){.tedi-checkbox{--_checkbox-radius: var(--form-checkbox-radio-indicator-radius-checkbox-desktop)}}.tedi-checkbox{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-checkbox{--_label-size: var(--body-regular-size-desktop)}}.tedi-checkbox tedi-icon{-webkit-user-select:none;user-select:none}.tedi-checkbox__input-area{position:relative;grid-area:input-area}.tedi-checkbox__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-checkbox__indicator{position:relative;width:var(--_checkbox-size);height:var(--_checkbox-size);border-radius:var(--_checkbox-radius);border:1px solid var(--_checkbox-border);background:var(--_checkbox-bg);margin-right:var(--_checkbox-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-checkbox__label{color:var(--_checkbox-label-color);font-size:var(--_label-size);grid-area:label}.tedi-checkbox__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-checkbox__label{font-family:var(--family-primary-desktop)}}.tedi-checkbox:has(input:checked){--_checkbox-bg: var(--form-checkbox-radio-default-background-selected);--_checkbox-border: var(--form-checkbox-radio-default-border-selected)}.tedi-checkbox:has(input:hover,input:focus-visible) .tedi-checkbox__indicator{outline:1px solid var(--_checkbox-border)}.tedi-checkbox:has(input:hover,input:focus-visible){--_checkbox-border: var(--form-checkbox-radio-default-border-hover)}.tedi-checkbox:has(input:active){--_checkbox-border: var(--form-checkbox-radio-default-border-active);--_checkbox-bg: var(--form-checkbox-radio-default-background-active)}.tedi-checkbox:has(input:disabled){pointer-events:none;--_checkbox-label-color: var(--general-text-disabled);--_checkbox-bg: var(--form-input-background-disabled);--_checkbox-border: var(--form-input-border-disabled)}.tedi-checkbox:has(input:disabled:checked){--_checkbox-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-checkbox--error{--_checkbox-bg: var(--form-checkbox-radio-default-background-error);--_checkbox-border: var(--form-general-feedback-error-border)}.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-checkbox--large{--_checkbox-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-checkbox .tedi-feedback-text{grid-area:feedback}\n"] }]
678
+ }] });
679
+
680
+ class FormFieldComponent {
681
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
682
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.15", type: FormFieldComponent, isStandalone: true, selector: "tedi-form-field", host: { properties: { "class.tedi-form-field": "true" } }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-form-field{display:flex;flex-direction:column}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
683
+ }
684
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FormFieldComponent, decorators: [{
685
+ type: Component,
686
+ args: [{ selector: "tedi-form-field", standalone: true, template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
687
+ "[class.tedi-form-field]": "true",
688
+ }, styles: [".tedi-form-field{display:flex;flex-direction:column}\n"] }]
689
+ }] });
690
+
691
+ class InputComponent {
692
+ /**
693
+ * Size of the input.
694
+ * @default default
695
+ */
696
+ size = input("default");
697
+ /**
698
+ * State of the input.
699
+ * @default default
700
+ */
701
+ state = input("default");
702
+ modifierClasses = computed(() => {
703
+ const modifiers = [];
704
+ if (this.size())
705
+ modifiers.push(`tedi-input--${this.size()}`);
706
+ if (this.state())
707
+ modifiers.push(`tedi-input--${this.state()}`);
708
+ return modifiers.join(" ");
709
+ });
710
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
711
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: InputComponent, isStandalone: true, selector: "[tedi-input]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-input": "true", "class": "modifierClasses()" } }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
712
+ }
713
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputComponent, decorators: [{
714
+ type: Component,
715
+ args: [{ selector: "[tedi-input]", standalone: true, template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
716
+ "[class.tedi-input]": "true",
717
+ "[class]": "modifierClasses()",
718
+ }, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n"] }]
719
+ }] });
720
+
721
+ /**
722
+ * InputGroupComponent is a component that allows you to group multiple input elements together.
723
+ *
724
+ *
725
+ * Use prefix-slot, suffix-slot and unnamed slots to add input elements to the group.
726
+ * @example
727
+ * <tedi-input-group>
728
+ * <tedi-button prefix-slot>Prefix</tedi-button>
729
+ * <tedi-button suffix-slot>Suffix</tedi-button>
730
+ * <input></input>
731
+ * </tedi-input-group>
732
+ *
733
+ */
734
+ class InputGroupComponent {
735
+ /**
736
+ * User-visible label for the input group, visible above the input, should describe the purpose of the input group.
737
+ */
738
+ label = input();
739
+ /**
740
+ * ID of the input group's label, used to associate the label with the input group's custom input.
741
+ */
742
+ labelID = input();
743
+ /**
744
+ * Disabled state of the input group, causes the input group to be grayed out.
745
+ * Does not affect children's disabled state.
746
+ * @default false
747
+ */
748
+ disabled = input(false);
749
+ /**
750
+ * FeedbackText component inputs, displayed below the input group.
751
+ */
752
+ feedback = input();
753
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
754
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: InputGroupComponent, isStandalone: true, selector: "tedi-input-group", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelID: { classPropertyName: "labelID", publicName: "labelID", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, feedback: { classPropertyName: "feedback", publicName: "feedback", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"tedi-input-group\">\n @if (label()) {\n <label tedi-label [for]=\"labelID()\">\n <div class=\"tedi-input-group__label\">{{ label() }}</div>\n </label>\n }\n\n <div\n [class]=\"{\n 'tedi-input-group__container': true,\n 'tedi-input-group__container--disabled': disabled(),\n }\"\n >\n <div class=\"tedi-input-group__prefix\">\n <ng-content select=\"[prefix-slot]\" />\n </div>\n <div class=\"tedi-input-group__center\">\n <ng-content />\n </div>\n <div class=\"tedi-input-group__suffix\">\n <ng-content select=\"[suffix-slot]\" />\n </div>\n </div>\n @if (feedback(); as feedbackResult) {\n <tedi-feedback-text\n [text]=\"feedbackResult.text\"\n [type]=\"feedbackResult.type\"\n [position]=\"feedbackResult.position\"\n />\n }\n</div>\n", styles: [".tedi-input-group__container{--_input-group-rounded: var(--radius-02-default);--_input-group-background-color: var(--form-input-background-default);--_input-group-min-height: var(--dimensions-14);--_input-group-text-color: var(--general-text-secondary);--_input-group-border-width: var(--borders-01);--_input-group-border-color: var(--form-input-border-default);--_input-group-side-background-color: var( --form-general-background-action-background );--_input-group-border: var(--_input-group-border-width) solid var(--_input-group-border-color);--_input-group-input-border-radius: var(0);--_input-group-disabled-border-color: var(--neutral-350);--_input-group-disabled-background-color: var(--neutral-300);--_input-group-text-disabled-color: var(--neutral-450);--_input-group-select-padding: 0;--_input-group-select-border: 0;--_input-group-share-border-size: 0;display:flex;background-color:transparent;color:var(--_input-group-text-color);min-height:var(--_input-group-min-height);overflow:hidden}.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input-group__container input.tedi-input{margin:0;width:100%}.tedi-input-group__container .tedi-input-group__prefix .tedi-input:focus{z-index:1000;overflow:visible}.tedi-input-group__container:has(.tedi-input-group__prefix:empty){border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__prefix:empty) input.tedi-input{border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty){border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty) input.tedi-input{border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:hover{border-right:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:hover{border-left:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container:has(.tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__prefix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-left:var(--_input-group-share-border-size)}.tedi-input-group__container:has(.tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__suffix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-right:var(--_input-group-share-border-size)}.tedi-input-group__center .tedi-input{border-radius:var(--_input-group-input-border-radius)}.tedi-input-group__container--disabled{--_input-group-text-color: var(--_input-group-text-disabled-color);--_input-group-border-color: var(--_input-group-disabled-border-color);--_input-group-background-color: var( --_input-group-disabled-background-color );--_input-group-side-background-color: var( --_input-group-disabled-background-color )}.tedi-input-group__prefix,.tedi-input-group__suffix{display:flex;align-items:center;flex-shrink:0;background:var(--_input-group-side-background-color);border:var(--_input-group-border);padding:var(--_input-group-padding-y) var(--_input-group-padding-x)}.tedi-input-group__prefix:has(tedi-select),.tedi-input-group__suffix:has(tedi-select){--_input-group-border: var(--_input-group-select-border);padding:var(--_input-group-select-padding);background-color:transparent}.tedi-input-group__prefix tedi-select .tedi-select__trigger,.tedi-input-group__suffix tedi-select .tedi-select__trigger{background:var(--_input-group-side-background-color);height:100%;margin:0}.tedi-input-group__prefix:empty,.tedi-input-group__suffix:empty{display:none}.tedi-input-group__prefix{border-right:0;border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__prefix tedi-select .tedi-select__trigger{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.tedi-input-group__suffix{border-left:0;border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__suffix tedi-select .tedi-select__trigger{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], encapsulation: i0.ViewEncapsulation.None });
755
+ }
756
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: InputGroupComponent, decorators: [{
757
+ type: Component,
758
+ args: [{ selector: "tedi-input-group", standalone: true, encapsulation: ViewEncapsulation.None, imports: [FeedbackTextComponent, LabelComponent], template: "<div class=\"tedi-input-group\">\n @if (label()) {\n <label tedi-label [for]=\"labelID()\">\n <div class=\"tedi-input-group__label\">{{ label() }}</div>\n </label>\n }\n\n <div\n [class]=\"{\n 'tedi-input-group__container': true,\n 'tedi-input-group__container--disabled': disabled(),\n }\"\n >\n <div class=\"tedi-input-group__prefix\">\n <ng-content select=\"[prefix-slot]\" />\n </div>\n <div class=\"tedi-input-group__center\">\n <ng-content />\n </div>\n <div class=\"tedi-input-group__suffix\">\n <ng-content select=\"[suffix-slot]\" />\n </div>\n </div>\n @if (feedback(); as feedbackResult) {\n <tedi-feedback-text\n [text]=\"feedbackResult.text\"\n [type]=\"feedbackResult.type\"\n [position]=\"feedbackResult.position\"\n />\n }\n</div>\n", styles: [".tedi-input-group__container{--_input-group-rounded: var(--radius-02-default);--_input-group-background-color: var(--form-input-background-default);--_input-group-min-height: var(--dimensions-14);--_input-group-text-color: var(--general-text-secondary);--_input-group-border-width: var(--borders-01);--_input-group-border-color: var(--form-input-border-default);--_input-group-side-background-color: var( --form-general-background-action-background );--_input-group-border: var(--_input-group-border-width) solid var(--_input-group-border-color);--_input-group-input-border-radius: var(0);--_input-group-disabled-border-color: var(--neutral-350);--_input-group-disabled-background-color: var(--neutral-300);--_input-group-text-disabled-color: var(--neutral-450);--_input-group-select-padding: 0;--_input-group-select-border: 0;--_input-group-share-border-size: 0;display:flex;background-color:transparent;color:var(--_input-group-text-color);min-height:var(--_input-group-min-height);overflow:hidden}.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input-group__container{--_input-group-padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input-group__container input.tedi-input{margin:0;width:100%}.tedi-input-group__container .tedi-input-group__prefix .tedi-input:focus{z-index:1000;overflow:visible}.tedi-input-group__container:has(.tedi-input-group__prefix:empty){border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__prefix:empty) input.tedi-input{border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty){border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container:has(.tedi-input-group__suffix:empty) input.tedi-input{border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__prefix tedi-select .tedi-select__trigger:hover{border-right:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__container .tedi-input-group__suffix tedi-select .tedi-select__trigger:hover{border-left:var(--_input-group-border-width) solid var(--form-input-border-hover)}.tedi-input-group__container:has(.tedi-input-group__prefix tedi-select .tedi-select__trigger:focus,.tedi-input-group__prefix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-left:var(--_input-group-share-border-size)}.tedi-input-group__container:has(.tedi-input-group__suffix tedi-select .tedi-select__trigger:focus,.tedi-input-group__suffix tedi-select .tedi-select__trigger:hover) .tedi-input-group__center .tedi-input{border-right:var(--_input-group-share-border-size)}.tedi-input-group__center .tedi-input{border-radius:var(--_input-group-input-border-radius)}.tedi-input-group__container--disabled{--_input-group-text-color: var(--_input-group-text-disabled-color);--_input-group-border-color: var(--_input-group-disabled-border-color);--_input-group-background-color: var( --_input-group-disabled-background-color );--_input-group-side-background-color: var( --_input-group-disabled-background-color )}.tedi-input-group__prefix,.tedi-input-group__suffix{display:flex;align-items:center;flex-shrink:0;background:var(--_input-group-side-background-color);border:var(--_input-group-border);padding:var(--_input-group-padding-y) var(--_input-group-padding-x)}.tedi-input-group__prefix:has(tedi-select),.tedi-input-group__suffix:has(tedi-select){--_input-group-border: var(--_input-group-select-border);padding:var(--_input-group-select-padding);background-color:transparent}.tedi-input-group__prefix tedi-select .tedi-select__trigger,.tedi-input-group__suffix tedi-select .tedi-select__trigger{background:var(--_input-group-side-background-color);height:100%;margin:0}.tedi-input-group__prefix:empty,.tedi-input-group__suffix:empty{display:none}.tedi-input-group__prefix{border-right:0;border-top-left-radius:var(--_input-group-rounded);border-bottom-left-radius:var(--_input-group-rounded)}.tedi-input-group__prefix tedi-select .tedi-select__trigger{border-top-right-radius:0;border-bottom-right-radius:0;border-right:0}.tedi-input-group__suffix{border-left:0;border-top-right-radius:var(--_input-group-rounded);border-bottom-right-radius:var(--_input-group-rounded)}.tedi-input-group__suffix tedi-select .tedi-select__trigger{border-top-left-radius:0;border-bottom-left-radius:0;border-left:0}\n"] }]
759
+ }] });
760
+
761
+ class RadioGroupComponent {
762
+ /*
763
+ * Radio group name
764
+ */
765
+ name = input.required();
766
+ /*
767
+ * Radio group id.
768
+ */
769
+ id = input.required();
770
+ /**
771
+ * Radio group label.
772
+ */
773
+ label = input();
774
+ /*
775
+ * Whether radio group is disabled. Do not use with controlled radios.
776
+ */
777
+ disabled = input();
778
+ /*
779
+ * Whether radio group has error.
780
+ */
781
+ hasError = input();
782
+ /*
783
+ * Size of the radios radios in group.
784
+ */
785
+ size = input("default");
786
+ /*
787
+ * Direction in which radios flow.
788
+ */
789
+ direction = input("column");
790
+ /*
791
+ * Spacing between radios. unit: px.
792
+ * @default 4
793
+ */
794
+ spacing = input(4);
795
+ /**
796
+ * FeedbackText component inputs.
797
+ */
798
+ feedbackText = input();
799
+ /*
800
+ * Emits selected radio value on change.
801
+ */
802
+ // eslint-disable-next-line @angular-eslint/no-output-native
803
+ change = output();
804
+ _value = signal(null);
805
+ _controlDisabled = signal(false);
806
+ groupDisabled = computed(() => {
807
+ return this.disabled() || this._controlDisabled();
808
+ });
809
+ groupValue = this._value.asReadonly();
810
+ _onChange = () => { };
811
+ _onTouched = () => { };
812
+ writeValue(value) {
813
+ this._value.set(value);
814
+ }
815
+ registerOnChange(fn) {
816
+ this._onChange = fn;
817
+ }
818
+ registerOnTouched(fn) {
819
+ this._onTouched = fn;
820
+ }
821
+ setDisabledState(isDisabled) {
822
+ this._controlDisabled.set(isDisabled);
823
+ }
824
+ selectRadio(value) {
825
+ this._onChange(value);
826
+ this.change.emit(value);
827
+ }
828
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
829
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: RadioGroupComponent, isStandalone: true, selector: "tedi-radio-group", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null }, spacing: { classPropertyName: "spacing", publicName: "spacing", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { change: "change" }, host: { properties: { "class.tedi-radio-group": "true", "attr.role": "'radiogroup'" } }, providers: [
830
+ {
831
+ provide: NG_VALUE_ACCESSOR,
832
+ useExisting: forwardRef(() => RadioGroupComponent),
833
+ multi: true,
834
+ },
835
+ ], ngImport: i0, template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
836
+ }
837
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioGroupComponent, decorators: [{
838
+ type: Component,
839
+ args: [{ selector: "tedi-radio-group", standalone: true, imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
840
+ {
841
+ provide: NG_VALUE_ACCESSOR,
842
+ useExisting: forwardRef(() => RadioGroupComponent),
843
+ multi: true,
844
+ },
845
+ ], host: {
846
+ "[class.tedi-radio-group]": "true",
847
+ "[attr.role]": "'radiogroup'",
848
+ }, template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n"] }]
849
+ }] });
850
+
851
+ class RadioComponent {
852
+ /*
853
+ * unique id.
854
+ */
855
+ inputId = input.required();
856
+ /*
857
+ * Whether radio is checked. Do not used with controlled radios.
858
+ */
859
+ checked = model();
860
+ /*
861
+ * Radio value.
862
+ */
863
+ value = input.required();
864
+ /*
865
+ * Whether radio is disabled.
866
+ */
867
+ disabled = input();
868
+ /*
869
+ * Whether radio has error.
870
+ */
871
+ hasError = input();
872
+ /**
873
+ * FeedbackText component inputs.
874
+ */
875
+ feedbackText = input();
876
+ _inputEl = viewChild.required("input");
877
+ radioGroup = inject(RadioGroupComponent, { optional: true });
878
+ inputDisabled = computed(() => {
879
+ return this.disabled() || this.radioGroup?.groupDisabled();
880
+ });
881
+ inputName = computed(() => {
882
+ return this.radioGroup?.name();
883
+ });
884
+ inputChecked = computed(() => {
885
+ return this.value() === this.radioGroup?.groupValue() || this.checked();
886
+ });
887
+ feedbackTextId = computed(() => {
888
+ if (this.feedbackText()) {
889
+ return generateUUID();
890
+ }
891
+ return;
892
+ });
893
+ focus() {
894
+ this._inputEl().nativeElement.focus();
895
+ }
896
+ onInputChange(event) {
897
+ event.stopPropagation();
898
+ this.radioGroup?.selectRadio(this.value());
899
+ }
900
+ ngOnInit() {
901
+ if (this.checked()) {
902
+ this.radioGroup?.selectRadio(this.value());
903
+ }
904
+ }
905
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
906
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: RadioComponent, isStandalone: true, selector: "tedi-radio", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { checked: "checkedChange" }, host: { properties: { "class.tedi-radio": "true", "class.tedi-radio--error": "hasError() || radioGroup?.hasError()", "class.tedi-radio--large": "radioGroup?.size() === 'large'" } }, viewQueries: [{ propertyName: "_inputEl", first: true, predicate: ["input"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"tedi-radio__input-area\">\n <input\n class=\"tedi-radio__input\"\n type=\"radio\"\n #input\n [id]=\"inputId()\"\n [checked]=\"inputChecked()\"\n [disabled]=\"inputDisabled()\"\n [attr.name]=\"inputName()\"\n [attr.value]=\"value()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n (change)=\"onInputChange($event)\"\n />\n <div class=\"tedi-radio__indicator\"></div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-radio__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio{--_radio-bg: var(--form-checkbox-radio-default-background-default);--_radio-border: var(--form-checkbox-radio-default-border-default);--_radio-label-color: var(--general-text-primary);--_radio-dot-bg: var(--_radio-border);--_radio-dot-size: 12px;display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-radio{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-radio{--_label-size: var(--body-regular-size-desktop)}}.tedi-radio__input-area{position:relative;grid-area:input-area}.tedi-radio__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-radio__indicator{position:relative;width:var(--_radio-size);height:var(--_radio-size);border-radius:50%;border:1px solid var(--_radio-border);background:var(--_radio-bg);margin-right:var(--_radio-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-radio__indicator:after{content:\"\";border-radius:50%;display:none;background:var(--_radio-dot-bg);height:var(--_radio-dot-size);width:var(--_radio-dot-size)}.tedi-radio__label{color:var(--_radio-label-color);font-size:var(--_label-size);grid-area:label}.tedi-radio__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-radio__label{font-family:var(--family-primary-desktop)}}.tedi-radio:has(input:checked) .tedi-radio__indicator:after{display:block}.tedi-radio:has(input:checked){--_radio-border: var(--form-checkbox-radio-default-border-selected)}.tedi-radio:has(input:hover,input:focus-visible) .tedi-radio__indicator{outline:1px solid var(--_radio-border)}.tedi-radio:has(input:hover,input:focus-visible){--_radio-border: var(--form-checkbox-radio-default-border-hover)}.tedi-radio:has(input:active){--_radio-border: var(--form-checkbox-radio-default-border-active)}.tedi-radio:has(input:disabled){pointer-events:none;--_radio-label-color: var(--general-text-disabled);--_radio-bg: var(--form-input-background-disabled);--_radio-border: var(--form-input-border-disabled)}.tedi-radio:has(input:disabled:checked){--_radio-dot-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_radio-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-radio--error{--_radio-bg: var(--form-checkbox-radio-default-background-error);--_radio-border: var(--form-general-feedback-error-border)}.tedi-radio--large{--_radio-dot-size: 16px}.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-radio .tedi-feedback-text{grid-area:feedback}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
907
+ }
908
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioComponent, decorators: [{
909
+ type: Component,
910
+ args: [{ selector: "tedi-radio", imports: [FeedbackTextComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
911
+ "[class.tedi-radio]": "true",
912
+ "[class.tedi-radio--error]": "hasError() || radioGroup?.hasError()",
913
+ "[class.tedi-radio--large]": "radioGroup?.size() === 'large'",
914
+ }, template: "<div class=\"tedi-radio__input-area\">\n <input\n class=\"tedi-radio__input\"\n type=\"radio\"\n #input\n [id]=\"inputId()\"\n [checked]=\"inputChecked()\"\n [disabled]=\"inputDisabled()\"\n [attr.name]=\"inputName()\"\n [attr.value]=\"value()\"\n [attr.aria-describedby]=\"feedbackTextId()\"\n (change)=\"onInputChange($event)\"\n />\n <div class=\"tedi-radio__indicator\"></div>\n</div>\n<label [for]=\"inputId()\" class=\"tedi-radio__label\">\n <ng-content></ng-content>\n</label>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [id]=\"feedbackTextId()\"\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio{--_radio-bg: var(--form-checkbox-radio-default-background-default);--_radio-border: var(--form-checkbox-radio-default-border-default);--_radio-label-color: var(--general-text-primary);--_radio-dot-bg: var(--_radio-border);--_radio-dot-size: 12px;display:grid;grid-template-areas:\"input-area label\" \". feedback\";grid-template-columns:auto 1fr;align-items:center}.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-inner-spacing: var(--form-checkbox-radio-inner-spacing-desktop)}}.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-mobile)}@media (min-width: 576px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-tablet)}}@media (min-width: 992px){.tedi-radio{--_radio-size: var(--form-checkbox-radio-size-responsive-desktop)}}.tedi-radio{--_label-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-radio{--_label-size: var(--body-regular-size-desktop)}}.tedi-radio__input-area{position:relative;grid-area:input-area}.tedi-radio__input{position:absolute;top:0;left:0;height:100%;width:100%;margin:0;padding:0;opacity:0;z-index:1}.tedi-radio__indicator{position:relative;width:var(--_radio-size);height:var(--_radio-size);border-radius:50%;border:1px solid var(--_radio-border);background:var(--_radio-bg);margin-right:var(--_radio-inner-spacing);display:flex;align-items:center;justify-content:center}.tedi-radio__indicator:after{content:\"\";border-radius:50%;display:none;background:var(--_radio-dot-bg);height:var(--_radio-dot-size);width:var(--_radio-dot-size)}.tedi-radio__label{color:var(--_radio-label-color);font-size:var(--_label-size);grid-area:label}.tedi-radio__label{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-radio__label{font-family:var(--family-primary-desktop)}}.tedi-radio:has(input:checked) .tedi-radio__indicator:after{display:block}.tedi-radio:has(input:checked){--_radio-border: var(--form-checkbox-radio-default-border-selected)}.tedi-radio:has(input:hover,input:focus-visible) .tedi-radio__indicator{outline:1px solid var(--_radio-border)}.tedi-radio:has(input:hover,input:focus-visible){--_radio-border: var(--form-checkbox-radio-default-border-hover)}.tedi-radio:has(input:active){--_radio-border: var(--form-checkbox-radio-default-border-active)}.tedi-radio:has(input:disabled){pointer-events:none;--_radio-label-color: var(--general-text-disabled);--_radio-bg: var(--form-input-background-disabled);--_radio-border: var(--form-input-border-disabled)}.tedi-radio:has(input:disabled:checked){--_radio-dot-bg: var( --form-checkbox-radio-default-background-selected-disabled );--_radio-border: var( --form-checkbox-radio-default-border-selected-disabled )}.tedi-radio--error{--_radio-bg: var(--form-checkbox-radio-default-background-error);--_radio-border: var(--form-general-feedback-error-border)}.tedi-radio--large{--_radio-dot-size: 16px}.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-mobile)}@media (min-width: 576px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-tablet)}}@media (min-width: 992px){.tedi-radio--large{--_radio-size: var(--form-checkbox-radio-size-large-desktop)}}.tedi-radio .tedi-feedback-text{grid-area:feedback}\n"] }]
915
+ }] });
916
+
917
+ class RadioCardGroupComponent extends RadioGroupComponent {
918
+ /*
919
+ * Direction in which radios flow.
920
+ */
921
+ direction = input("row");
922
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioCardGroupComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
923
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: RadioCardGroupComponent, isStandalone: true, selector: "tedi-radio-card-group", inputs: { direction: { classPropertyName: "direction", publicName: "direction", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
924
+ {
925
+ provide: NG_VALUE_ACCESSOR,
926
+ useExisting: forwardRef(() => RadioCardGroupComponent),
927
+ multi: true,
928
+ },
929
+ // Necessary for DI in RadioComponent
930
+ {
931
+ provide: RadioGroupComponent,
932
+ useExisting: RadioCardGroupComponent,
933
+ },
934
+ ], usesInheritance: true, hostDirectives: [{ directive: ChoiceGroupDirective, inputs: ["variant", "variant", "hasIndicator", "hasIndicator", "spacing", "spacing"] }], ngImport: i0, template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n", ".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
935
+ }
936
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: RadioCardGroupComponent, decorators: [{
937
+ type: Component,
938
+ args: [{ standalone: true, selector: "tedi-radio-card-group", imports: [FeedbackTextComponent, LabelComponent], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, providers: [
939
+ {
940
+ provide: NG_VALUE_ACCESSOR,
941
+ useExisting: forwardRef(() => RadioCardGroupComponent),
942
+ multi: true,
943
+ },
944
+ // Necessary for DI in RadioComponent
945
+ {
946
+ provide: RadioGroupComponent,
947
+ useExisting: RadioCardGroupComponent,
948
+ },
949
+ ], hostDirectives: [
950
+ {
951
+ directive: ChoiceGroupDirective,
952
+ inputs: ["variant", "hasIndicator", "spacing"],
953
+ },
954
+ ], template: "@if (label()) {\n <label tedi-label [for]=\"id()\">\n {{ label() }}\n </label>\n}\n<div\n class=\"tedi-radio-group__radios\"\n [style.flex-direction]=\"direction()\"\n [style.gap]=\"spacing() + 'px'\"\n>\n <ng-content />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n", styles: [".tedi-radio-group{display:block}.tedi-radio-group__radios{display:flex;flex-wrap:wrap}\n", ".tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{position:relative;background-color:var(--_choicegroup-card-bg);border:1px solid var(--_choicegroup-card-border);border-radius:var(--_choicegroup-card-radius);padding:var(--_choicegroup-card-padding);--_choicegroup-card-padding-top: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-bottom: var(--_choicegroup-card-padding-vertical);--_choicegroup-card-padding-left: var(--_choicegroup-card-padding-horizontal);--_choicegroup-card-padding-right: var( --_choicegroup-card-padding-horizontal );--_choicegroup-card-padding: var(--_choicegroup-card-padding-top) var(--_choicegroup-card-padding-right) var(--_choicegroup-card-padding-bottom) var(--_choicegroup-card-padding-left)}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-radius: var(--form-checkbox-radio-card-radius-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-horizontal: var(--form-checkbox-radio-card-checkbox-padding-x-desktop)}}.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-mobile)}@media (min-width: 576px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-tablet)}}@media (min-width: 992px){.tedi-choicegroup .tedi-radio,.tedi-choicegroup .tedi-checkbox{--_choicegroup-card-padding-vertical: var(--form-checkbox-radio-card-checkbox-padding-y-desktop)}}.tedi-choicegroup .tedi-radio__input-area,.tedi-choicegroup .tedi-checkbox__input-area{position:static}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-inactive-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-active-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-hover-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-primary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-primary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-primary-disabled-text )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-separate )}.tedi-choicegroup--primary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--primary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_radio-bg: transparent;--_checkbox-bg: transparent;--_radio-border: var( --form-checkbox-radio-default-border-selected-inverted );--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary .tedi-checkbox:has(input:active){--_checkbox-border: var( --form-checkbox-radio-default-border-selected-inverted )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-inactive-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-active-border-group )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-hover-border )}.tedi-choicegroup--primary.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-primary-disabled-border-group )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-inactive-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-inactive-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-inactive-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-active-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-active-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-active-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-hover-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-hover-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-hover-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-bg: var( --form-checkbox-radio-card-secondary-disabled-background );--_radio-label-color: var( --form-checkbox-radio-card-secondary-disabled-text );--_checkbox-label-color: var( --form-checkbox-radio-card-secondary-disabled-text )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-inactive-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-active-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:hover){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-hover-border )}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:disabled){--_choicegroup-card-border: var( --form-checkbox-radio-card-secondary-disabled-border )}.tedi-choicegroup--secondary :is(.tedi-radio--error,.tedi-checkbox--error){--_choicegroup-card-bg: var(--form-checkbox-radio-default-background-error);--_choicegroup-card-border: var(--form-general-feedback-error-border)}.tedi-choicegroup--secondary :is(.tedi-radio,.tedi-checkbox):has(input:checked){outline:1px solid var(--_choicegroup-card-border);outline-offset:-2px}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-radio__indicator,.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible) .tedi-checkbox__indicator{outline:none}.tedi-choicegroup :is(.tedi-radio,.tedi-checkbox):has(input:focus-visible){outline:2px solid var(--form-input-border-active);outline-offset:1px}.tedi-choicegroup--plain .tedi-radio__indicator,.tedi-choicegroup--plain .tedi-checkbox__indicator{display:none}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0;margin-right:-1px}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.tedi-choicegroup--stacked :is(.tedi-radio,.tedi-checkbox):has(input:checked){z-index:1}\n"] }]
955
+ }] });
956
+
957
+ class SelectOptionComponent {
958
+ /**
959
+ * Value of the option
960
+ */
961
+ value = input.required();
962
+ /**
963
+ * Label of the option
964
+ */
965
+ label = input.required();
966
+ /**
967
+ * Whether the option is disabled
968
+ */
969
+ disabled = input(false);
970
+ /**
971
+ * Group the option belongs to
972
+ * This is used for grouping options in the dropdown.
973
+ * If not provided, the option will not be grouped.
974
+ */
975
+ group = input(null);
976
+ templateRef = viewChild(TemplateRef);
977
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
978
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: SelectOptionComponent, isStandalone: true, selector: "tedi-select-option", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, group: { classPropertyName: "group", publicName: "group", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "templateRef", first: true, predicate: TemplateRef, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template><ng-content /></ng-template>", isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
979
+ }
980
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectOptionComponent, decorators: [{
981
+ type: Component,
982
+ args: [{
983
+ selector: "tedi-select-option",
984
+ imports: [],
985
+ template: "<ng-template><ng-content /></ng-template>",
986
+ standalone: true,
987
+ encapsulation: ViewEncapsulation.None,
988
+ changeDetection: ChangeDetectionStrategy.OnPush,
989
+ }]
990
+ }] });
991
+
992
+ class DropdownTriggerDirective {
993
+ dropdownContext = inject(DropdownComponent);
994
+ overlayOrigin = inject(CdkOverlayOrigin, { self: true });
995
+ ariaAttributes = computed(() => {
996
+ if (!this.dropdownContext.dropdownRole())
997
+ return {};
998
+ return {
999
+ hasPopup: this.dropdownContext.dropdownRole(),
1000
+ expanded: this.dropdownContext.opened() ? "true" : "false",
1001
+ controls: this.dropdownContext.opened()
1002
+ ? this.dropdownContext.dropdownId()
1003
+ : undefined,
1004
+ };
1005
+ });
1006
+ onClick() {
1007
+ this.dropdownContext.toggle();
1008
+ }
1009
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownTriggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
1010
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.15", type: DropdownTriggerDirective, isStandalone: true, selector: "[tedi-dropdown-trigger]", host: { listeners: { "click": "onClick()" }, properties: { "attr.aria-has-popup": "ariaAttributes().hasPopup", "attr.aria-expanded": "ariaAttributes().expanded", "attr.aria-controls": "ariaAttributes().controls" } }, hostDirectives: [{ directive: i2.CdkOverlayOrigin }], ngImport: i0 });
1011
+ }
1012
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownTriggerDirective, decorators: [{
1013
+ type: Directive,
1014
+ args: [{
1015
+ selector: "[tedi-dropdown-trigger]",
1016
+ host: {
1017
+ "[attr.aria-has-popup]": "ariaAttributes().hasPopup",
1018
+ "[attr.aria-expanded]": "ariaAttributes().expanded",
1019
+ "[attr.aria-controls]": "ariaAttributes().controls",
1020
+ "(click)": "onClick()",
1021
+ },
1022
+ hostDirectives: [CdkOverlayOrigin],
1023
+ }]
1024
+ }] });
1025
+
1026
+ class DropdownComponent {
1027
+ injector = inject(Injector);
1028
+ dropdownId = input.required();
1029
+ dropdownRole = input();
1030
+ opened = model(false);
1031
+ triggerDirective = contentChild.required(DropdownTriggerDirective);
1032
+ dropdownItems = contentChildren(forwardRef(() => DropdownItemComponent), { descendants: true });
1033
+ isMobile = inject(BreakpointService).isBelowBreakpoint("sm");
1034
+ keyManager;
1035
+ overlayOrigin = computed(() => {
1036
+ return this.triggerDirective().overlayOrigin;
1037
+ });
1038
+ toggle() {
1039
+ this.opened.update((wasOpened) => !wasOpened);
1040
+ }
1041
+ close() {
1042
+ this.opened.set(false);
1043
+ }
1044
+ onKeyDown(event) {
1045
+ this.keyManager?.onKeydown(event);
1046
+ }
1047
+ ngOnInit() {
1048
+ this.keyManager = new FocusKeyManager(this.dropdownItems, this.injector).withWrap();
1049
+ }
1050
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1051
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: DropdownComponent, isStandalone: true, selector: "tedi-dropdown", inputs: { dropdownId: { classPropertyName: "dropdownId", publicName: "dropdownId", isSignal: true, isRequired: true, transformFunction: null }, dropdownRole: { classPropertyName: "dropdownRole", publicName: "dropdownRole", isSignal: true, isRequired: false, transformFunction: null }, opened: { classPropertyName: "opened", publicName: "opened", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "openedChange" }, queries: [{ propertyName: "triggerDirective", first: true, predicate: DropdownTriggerDirective, descendants: true, isSignal: true }, { propertyName: "dropdownItems", predicate: i0.forwardRef(() => DropdownItemComponent), descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content select=\"[tedi-dropdown-trigger]\" />\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin()\"\n [cdkConnectedOverlayOpen]=\"opened()\"\n [cdkConnectedOverlayOffsetY]=\"4\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"16\"\n cdkConnectedOverlayPanelClass=\"tedi-dropdown__overlay-pane\"\n (overlayKeydown)=\"onKeyDown($event)\"\n (overlayOutsideClick)=\"close()\"\n>\n <tedi-card\n padding=\"none\"\n class=\"tedi-dropdown__card\"\n [attr.role]=\"dropdownRole()\"\n [attr.id]=\"dropdownId()\"\n >\n @if (isMobile()) {\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n (click)=\"close()\"\n size=\"small\"\n class=\"tedi-dropdown__close-button\"\n ></button>\n </tedi-card-content>\n }\n <tedi-card-content>\n <ng-content />\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-dropdown__card.tedi-card{box-shadow:0 1px 5px 0 var(--alpha-20, rgba(0, 0, 0, .2));overflow-y:auto}@media (max-width: 575.98px){.tedi-dropdown__card.tedi-card{position:fixed;inset:0}}.tedi-dropdown__close-button{margin-left:auto}@media (max-width: 575.98px){.tedi-dropdown__overlay-pane{transform:none!important}}\n"], dependencies: [{ kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1052
+ }
1053
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownComponent, decorators: [{
1054
+ type: Component,
1055
+ args: [{ selector: "tedi-dropdown", imports: [
1056
+ OverlayModule,
1057
+ CardComponent,
1058
+ CardContentComponent,
1059
+ ClosingButtonComponent,
1060
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"[tedi-dropdown-trigger]\" />\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"overlayOrigin()\"\n [cdkConnectedOverlayOpen]=\"opened()\"\n [cdkConnectedOverlayOffsetY]=\"4\"\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\n [cdkConnectedOverlayViewportMargin]=\"16\"\n cdkConnectedOverlayPanelClass=\"tedi-dropdown__overlay-pane\"\n (overlayKeydown)=\"onKeyDown($event)\"\n (overlayOutsideClick)=\"close()\"\n>\n <tedi-card\n padding=\"none\"\n class=\"tedi-dropdown__card\"\n [attr.role]=\"dropdownRole()\"\n [attr.id]=\"dropdownId()\"\n >\n @if (isMobile()) {\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n (click)=\"close()\"\n size=\"small\"\n class=\"tedi-dropdown__close-button\"\n ></button>\n </tedi-card-content>\n }\n <tedi-card-content>\n <ng-content />\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-dropdown__card.tedi-card{box-shadow:0 1px 5px 0 var(--alpha-20, rgba(0, 0, 0, .2));overflow-y:auto}@media (max-width: 575.98px){.tedi-dropdown__card.tedi-card{position:fixed;inset:0}}.tedi-dropdown__close-button{margin-left:auto}@media (max-width: 575.98px){.tedi-dropdown__overlay-pane{transform:none!important}}\n"] }]
1061
+ }] });
1062
+
1063
+ const itemRole = {
1064
+ menu: "menuitem",
1065
+ listbox: "option",
1066
+ };
1067
+ class DropdownItemComponent {
1068
+ element;
1069
+ /**
1070
+ * Applies the selected style to the dropdown item.
1071
+ */
1072
+ selected = input(false);
1073
+ /**
1074
+ * Applies the disabled style to the dropdown item.
1075
+ */
1076
+ // eslint-disable-next-line @angular-eslint/no-input-rename
1077
+ disabledInput = input(false, { alias: "disabled" });
1078
+ disabled; // for cdk/a11y keymanager
1079
+ itemSelected = output();
1080
+ dropdownContext = inject(DropdownComponent, { optional: true });
1081
+ ariaAttributes = computed(() => {
1082
+ const dropdownRole = this.dropdownContext?.dropdownRole();
1083
+ if (!dropdownRole)
1084
+ return {};
1085
+ return {
1086
+ role: itemRole[dropdownRole],
1087
+ disabled: String(this.disabledInput()),
1088
+ selected: dropdownRole === "listbox" ? String(this.selected()) : undefined,
1089
+ tabIndex: 0,
1090
+ };
1091
+ });
1092
+ focus() {
1093
+ this.element.nativeElement.focus();
1094
+ }
1095
+ onKeyDown(event) {
1096
+ if (event.key === "Enter" || event.key === " ") {
1097
+ if (this.element.nativeElement.nodeName === "BUTTON") {
1098
+ event.preventDefault();
1099
+ }
1100
+ if (this.element.nativeElement.nodeName === "A" &&
1101
+ event.key === "Enter") {
1102
+ event.preventDefault();
1103
+ }
1104
+ this.selectItem();
1105
+ }
1106
+ }
1107
+ selectItem() {
1108
+ this.dropdownContext?.close();
1109
+ this.itemSelected.emit();
1110
+ }
1111
+ constructor(element) {
1112
+ this.element = element;
1113
+ effect(() => {
1114
+ this.disabled = this.disabledInput();
1115
+ });
1116
+ }
1117
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownItemComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
1118
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: DropdownItemComponent, isStandalone: true, selector: "[tedi-dropdown-item]", inputs: { selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected" }, host: { listeners: { "click": "selectItem()", "keydown": "onKeyDown($event)" }, properties: { "class.tedi-dropdown-item": "true", "class.tedi-dropdown-item--active": "this.selected()", "class.tedi-dropdown-item--disabled": "this.disabledInput()", "attr.role": "ariaAttributes().role", "attr.aria-disabled": "ariaAttributes().disabled", "attr.aria-selected": "ariaAttributes().selected", "attr.tabindex": "ariaAttributes().tabIndex" } }, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-dropdown-item{--_background-color: var(--dropdown-item-default-background);--_color: var(--dropdown-item-default-text);display:block;width:100%;background-color:var(--_background-color);color:var(--_color);cursor:pointer;text-align:left;border:none;border-radius:0}.tedi-dropdown-item{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-family:var(--family-primary-desktop)}}.tedi-dropdown-item{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-desktop)}}.tedi-dropdown-item{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-size:var(--body-regular-size-desktop)}}.tedi-dropdown-item{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-desktop)}}.tedi-dropdown-item{padding:var(--form-select-item-padding-y-mobile) var(--form-select-item-padding-x-mobile)}@media (min-width: 576px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-tablet) var(--form-select-item-padding-x-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-desktop) var(--form-select-item-padding-x-desktop)}}.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-mobile)}@media (min-width: 576px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-desktop)}}.tedi-dropdown-item--active,.tedi-dropdown-item--active:hover{--_background-color: var(--dropdown-item-active-background);--_color: var(--dropdown-item-active-text)}.tedi-dropdown-item--disabled,.tedi-dropdown-item--disabled:hover{--_background-color: var(--dropdown-item-disabled-background);--_color: var(--dropdown-item-disabled-text)}.tedi-dropdown-item:hover:not(.tedi-dropdown-item--active,.tedi-dropdown-item--disabled){--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:focus-visible{--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:first-child{border-top-left-radius:var(--_form-select-item-radius);border-top-right-radius:var(--_form-select-item-radius)}.tedi-dropdown-item:last-child{border-bottom-left-radius:var(--_form-select-item-radius);border-bottom-right-radius:var(--_form-select-item-radius)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1119
+ }
1120
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: DropdownItemComponent, decorators: [{
1121
+ type: Component,
1122
+ args: [{ selector: "[tedi-dropdown-item]", template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
1123
+ "[class.tedi-dropdown-item]": "true",
1124
+ "[class.tedi-dropdown-item--active]": "this.selected()",
1125
+ "[class.tedi-dropdown-item--disabled]": "this.disabledInput()",
1126
+ "[attr.role]": "ariaAttributes().role",
1127
+ "[attr.aria-disabled]": "ariaAttributes().disabled",
1128
+ "[attr.aria-selected]": "ariaAttributes().selected",
1129
+ "[attr.tabindex]": "ariaAttributes().tabIndex",
1130
+ "(click)": "selectItem()",
1131
+ "(keydown)": "onKeyDown($event)",
1132
+ }, styles: [".tedi-dropdown-item{--_background-color: var(--dropdown-item-default-background);--_color: var(--dropdown-item-default-text);display:block;width:100%;background-color:var(--_background-color);color:var(--_color);cursor:pointer;text-align:left;border:none;border-radius:0}.tedi-dropdown-item{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-family:var(--family-primary-desktop)}}.tedi-dropdown-item{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-weight:var(--body-regular-weight-desktop)}}.tedi-dropdown-item{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-dropdown-item{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{font-size:var(--body-regular-size-desktop)}}.tedi-dropdown-item{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{line-height:var(--body-regular-line-height-desktop)}}.tedi-dropdown-item{padding:var(--form-select-item-padding-y-mobile) var(--form-select-item-padding-x-mobile)}@media (min-width: 576px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-tablet) var(--form-select-item-padding-x-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{padding:var(--form-select-item-padding-y-desktop) var(--form-select-item-padding-x-desktop)}}.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-mobile)}@media (min-width: 576px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-tablet)}}@media (min-width: 992px){.tedi-dropdown-item{--_form-select-item-radius: var(--form-select-item-radius-desktop)}}.tedi-dropdown-item--active,.tedi-dropdown-item--active:hover{--_background-color: var(--dropdown-item-active-background);--_color: var(--dropdown-item-active-text)}.tedi-dropdown-item--disabled,.tedi-dropdown-item--disabled:hover{--_background-color: var(--dropdown-item-disabled-background);--_color: var(--dropdown-item-disabled-text)}.tedi-dropdown-item:hover:not(.tedi-dropdown-item--active,.tedi-dropdown-item--disabled){--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:focus-visible{--_background-color: var(--dropdown-item-hover-background);--_color: var(--dropdown-item-hover-text)}.tedi-dropdown-item:first-child{border-top-left-radius:var(--_form-select-item-radius);border-top-right-radius:var(--_form-select-item-radius)}.tedi-dropdown-item:last-child{border-bottom-left-radius:var(--_form-select-item-radius);border-bottom-right-radius:var(--_form-select-item-radius)}\n"] }]
1133
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
1134
+
1135
+ const modalBreakpoints = ["xs", "sm", "md", "lg", "xl"];
1136
+ class ModalComponent {
1137
+ maxWidth = model("sm");
1138
+ variant = model("default");
1139
+ dialogRef = inject(DialogRef, { optional: true });
1140
+ dialogData = inject(DIALOG_DATA, {
1141
+ optional: true,
1142
+ });
1143
+ // host classes
1144
+ hostClasses = computed(() => {
1145
+ const classes = ["tedi-modal"];
1146
+ if (this.variant() === "small") {
1147
+ classes.push("tedi-modal--padding-small");
1148
+ }
1149
+ for (const breakpoint of modalBreakpoints) {
1150
+ if (this.maxWidth() === breakpoint) {
1151
+ classes.push(`tedi-modal--width-${breakpoint}`);
1152
+ }
1153
+ }
1154
+ return classes.join(" ");
1155
+ });
1156
+ ngOnInit() {
1157
+ const data = this.dialogData;
1158
+ this.dialogRef?.addPanelClass("tedi-modal-panel");
1159
+ if (!data)
1160
+ return;
1161
+ if (data.maxWidth) {
1162
+ this.maxWidth.set(data.maxWidth);
1163
+ }
1164
+ if (data.variant) {
1165
+ this.variant.set(data.variant);
1166
+ }
1167
+ }
1168
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1169
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: ModalComponent, isStandalone: true, selector: "tedi-modal", inputs: { maxWidth: { classPropertyName: "maxWidth", publicName: "maxWidth", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { maxWidth: "maxWidthChange", variant: "variantChange" }, host: { properties: { "class": "hostClasses()" } }, ngImport: i0, template: "<div class=\"tedi-modal__container\">\n <ng-content select=\"tedi-modal-header\" />\n <div class=\"tedi-modal__content\" cdkScrollable>\n <ng-content />\n </div>\n\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media (prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media (forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-desktop)}}.tedi-modal{--_modal-border: var(--borders-01) solid var(--modal-border);--_modal-padding: var(--dimensions-13);overflow:auto;----_tedi-modal-heading-padding-x-x-desktop: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-tablet: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-mobile: var(--dimensions-10);----_tedi-modal-heading-padding-x-y-desktop: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-tablet: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-mobile: var(--dimensions-05)}.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-desktop)}}.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-desktop)}}.tedi-modal--padding-small{--modal-heading-padding-x-desktop: var(--dimensions-10);--modal-heading-padding-x-tablet: var(--dimensions-10);--modal-heading-padding-x-mobile: var(--dimensions-10);--modal-heading-padding-y-desktop: var(--dimensions-05);--modal-heading-padding-y-tablet: var(--dimensions-05);--modal-heading-padding-y-mobile: var(--dimensions-05);--modal-footer-padding-x-desktop: var(--dimensions-10);--modal-footer-padding-x-tablet: var(--dimensions-10);--modal-footer-padding-x-mobile: var(--dimensions-10);--modal-footer-padding-y-desktop: var(--dimensions-05);--modal-footer-padding-y-tablet: var(--dimensions-05);--modal-footer-padding-y-mobile: var(--dimensions-05)}.tedi-modal__content{padding:var(--_modal-padding);overflow-y:auto}.tedi-modal__container{display:flex;flex-direction:column;max-height:95dvh;background-color:var(--modal-background);border:var(--_modal-border)}.tedi-modal__container{border-radius:var(--modal-radius-mobile)}@media (min-width: 576px){.tedi-modal__container{border-radius:var(--modal-radius-tablet)}}@media (min-width: 992px){.tedi-modal__container{border-radius:var(--modal-radius-desktop)}}\n"], dependencies: [{ kind: "ngmodule", type: DialogModule }, { kind: "directive", type: CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], encapsulation: i0.ViewEncapsulation.None });
1170
+ }
1171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalComponent, decorators: [{
1172
+ type: Component,
1173
+ args: [{ selector: "tedi-modal", imports: [DialogModule, CdkScrollable], encapsulation: ViewEncapsulation.None, host: {
1174
+ "[class]": "hostClasses()",
1175
+ }, template: "<div class=\"tedi-modal__container\">\n <ng-content select=\"tedi-modal-header\" />\n <div class=\"tedi-modal__content\" cdkScrollable>\n <ng-content />\n </div>\n\n <ng-content select=\"tedi-modal-footer\" />\n</div>\n", styles: [".cdk-overlay-container,.cdk-global-overlay-wrapper{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container{position:fixed;z-index:1000}.cdk-overlay-container:empty{display:none}.cdk-global-overlay-wrapper{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane{position:absolute;pointer-events:auto;box-sizing:border-box;display:flex;max-width:100%;max-height:100%;z-index:1000}.cdk-overlay-backdrop{position:absolute;inset:0;pointer-events:auto;-webkit-tap-highlight-color:transparent;opacity:0;touch-action:manipulation;z-index:1000;transition:opacity .4s cubic-bezier(.25,.8,.25,1)}@media (prefers-reduced-motion){.cdk-overlay-backdrop{transition-duration:1ms}}.cdk-overlay-backdrop-showing{opacity:1}@media (forced-colors: active){.cdk-overlay-backdrop-showing{opacity:.6}}.cdk-overlay-dark-backdrop{background:#00000052}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing,.cdk-high-contrast-active .cdk-overlay-transparent-backdrop{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.cdk-overlay-connected-position-bounding-box{position:absolute;display:flex;flex-direction:column;min-width:1px;min-height:1px;z-index:1000}.cdk-global-scrollblock{position:fixed;width:100%;overflow-y:scroll}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xs),.tedi-modal--width-xs{max-width:var(--modal-max-width-xs-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-sm),.tedi-modal--width-sm{max-width:var(--modal-max-width-sm-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-md),.tedi-modal--width-md{max-width:var(--modal-max-width-md-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-lg),.tedi-modal--width-lg{max-width:var(--modal-max-width-lg-desktop)}}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{width:100%}.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-mobile)}@media (min-width: 576px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-tablet)}}@media (min-width: 992px){.cdk-overlay-pane:has(.tedi-modal--width-xl),.tedi-modal--width-xl{max-width:var(--modal-max-width-xl-desktop)}}.tedi-modal{--_modal-border: var(--borders-01) solid var(--modal-border);--_modal-padding: var(--dimensions-13);overflow:auto;----_tedi-modal-heading-padding-x-x-desktop: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-tablet: var(--dimensions-10);----_tedi-modal-heading-padding-x-x-mobile: var(--dimensions-10);----_tedi-modal-heading-padding-x-y-desktop: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-tablet: var(--dimensions-05);----_tedi-modal-heading-padding-x-y-mobile: var(--dimensions-05)}.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-x: var(--modal-heading-padding-x-desktop)}}.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-heading-padding-y: var(--modal-heading-padding-y-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-x: var(--modal-footer-padding-x-desktop)}}.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-mobile)}@media (min-width: 576px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-tablet)}}@media (min-width: 992px){.tedi-modal{--_tedi-modal-footer-padding-y: var(--modal-footer-padding-y-desktop)}}.tedi-modal--padding-small{--modal-heading-padding-x-desktop: var(--dimensions-10);--modal-heading-padding-x-tablet: var(--dimensions-10);--modal-heading-padding-x-mobile: var(--dimensions-10);--modal-heading-padding-y-desktop: var(--dimensions-05);--modal-heading-padding-y-tablet: var(--dimensions-05);--modal-heading-padding-y-mobile: var(--dimensions-05);--modal-footer-padding-x-desktop: var(--dimensions-10);--modal-footer-padding-x-tablet: var(--dimensions-10);--modal-footer-padding-x-mobile: var(--dimensions-10);--modal-footer-padding-y-desktop: var(--dimensions-05);--modal-footer-padding-y-tablet: var(--dimensions-05);--modal-footer-padding-y-mobile: var(--dimensions-05)}.tedi-modal__content{padding:var(--_modal-padding);overflow-y:auto}.tedi-modal__container{display:flex;flex-direction:column;max-height:95dvh;background-color:var(--modal-background);border:var(--_modal-border)}.tedi-modal__container{border-radius:var(--modal-radius-mobile)}@media (min-width: 576px){.tedi-modal__container{border-radius:var(--modal-radius-tablet)}}@media (min-width: 992px){.tedi-modal__container{border-radius:var(--modal-radius-desktop)}}\n"] }]
1176
+ }] });
1177
+
1178
+ class ModalFooterComponent {
1179
+ align = model("flex-end");
1180
+ buttons = model();
1181
+ dialogData = inject(DIALOG_DATA, {
1182
+ optional: true,
1183
+ });
1184
+ ngOnInit() {
1185
+ const data = this.dialogData;
1186
+ if (!data)
1187
+ return;
1188
+ const { buttons, align: alignButtons } = data;
1189
+ if (buttons) {
1190
+ this.buttons.set(buttons);
1191
+ }
1192
+ if (alignButtons) {
1193
+ this.align.set(alignButtons);
1194
+ }
1195
+ }
1196
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalFooterComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1197
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ModalFooterComponent, isStandalone: true, selector: "tedi-modal-footer", inputs: { align: { classPropertyName: "align", publicName: "align", isSignal: true, isRequired: false, transformFunction: null }, buttons: { classPropertyName: "buttons", publicName: "buttons", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { align: "alignChange", buttons: "buttonsChange" }, ngImport: i0, template: "<div class=\"tedi-modal-footer\" [style.justify-content]=\"align()\">\n <ng-content>\n @for (button of buttons(); track button.label) {\n <button\n tedi-button\n [size]=\"button.size || 'small'\"\n [variant]=\"button.variant || 'secondary'\"\n [disabled]=\"button.disabled\"\n [ngStyle]=\"button.style\"\n (click)=\"button.action()\"\n >\n @if (button.icon && button.iconPosition == \"start\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n {{ button.label }}\n @if (button.icon && button.iconPosition == \"end\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n </button>\n }\n </ng-content>\n</div>\n", styles: [".tedi-modal-footer{--_modal-footer-gap: .5rem;display:flex;gap:var(--_modal-footer-gap);border-top:var(--_modal-border);padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x)}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] });
1198
+ }
1199
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalFooterComponent, decorators: [{
1200
+ type: Component,
1201
+ args: [{ selector: "tedi-modal-footer", imports: [ButtonComponent, IconComponent, NgStyle], template: "<div class=\"tedi-modal-footer\" [style.justify-content]=\"align()\">\n <ng-content>\n @for (button of buttons(); track button.label) {\n <button\n tedi-button\n [size]=\"button.size || 'small'\"\n [variant]=\"button.variant || 'secondary'\"\n [disabled]=\"button.disabled\"\n [ngStyle]=\"button.style\"\n (click)=\"button.action()\"\n >\n @if (button.icon && button.iconPosition == \"start\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n {{ button.label }}\n @if (button.icon && button.iconPosition == \"end\") {\n <tedi-icon [name]=\"button.icon\" />\n }\n </button>\n }\n </ng-content>\n</div>\n", styles: [".tedi-modal-footer{--_modal-footer-gap: .5rem;display:flex;gap:var(--_modal-footer-gap);border-top:var(--_modal-border);padding:var(--_tedi-modal-footer-padding-y) var(--_tedi-modal-footer-padding-x)}\n"] }]
1202
+ }] });
1203
+
1204
+ class ModalHeaderComponent {
1205
+ title = model("Title");
1206
+ feedback = model();
1207
+ closeButton = model(true);
1208
+ dialogRef = inject(DialogRef, { optional: true });
1209
+ dialogData = inject(DIALOG_DATA, {
1210
+ optional: true,
1211
+ });
1212
+ closeModal() {
1213
+ this.dialogRef?.close();
1214
+ }
1215
+ ngOnInit() {
1216
+ const data = this.dialogData;
1217
+ if (!data)
1218
+ return;
1219
+ const { title, feedback, closeButton } = data;
1220
+ if (title) {
1221
+ this.title.set(title);
1222
+ }
1223
+ if (feedback) {
1224
+ this.feedback.set({
1225
+ ...feedback,
1226
+ });
1227
+ }
1228
+ if (typeof closeButton === "boolean") {
1229
+ this.closeButton.set(data.closeButton);
1230
+ }
1231
+ }
1232
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1233
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: ModalHeaderComponent, isStandalone: true, selector: "tedi-modal-header", inputs: { title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, feedback: { classPropertyName: "feedback", publicName: "feedback", isSignal: true, isRequired: false, transformFunction: null }, closeButton: { classPropertyName: "closeButton", publicName: "closeButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { title: "titleChange", feedback: "feedbackChange", closeButton: "closeButtonChange" }, ngImport: i0, template: "<div class=\"tedi-modal-header\">\n <div class=\"tedi-modal-header__title\">\n <ng-content>\n <h1 tedi-text modifiers=\"h3\">\n {{ title() }}\n </h1>\n </ng-content>\n\n <ng-content select=\"[header-exit-button]\">\n @if (closeButton()) {\n <button\n tedi-closing-button\n variant=\"neutral\"\n (click)=\"closeModal()\"\n ></button>\n }\n </ng-content>\n </div>\n\n @if (feedback()) {\n <tedi-feedback-text\n [text]=\"feedback()!.text\"\n [type]=\"feedback()!.type\"\n [position]=\"feedback()!.position\"\n />\n }\n</div>\n", styles: [".tedi-modal-header{border-bottom:var(--_modal-border);padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x)}.tedi-modal-header__title{display:flex;justify-content:space-between;align-items:center}\n"], dependencies: [{ kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }] });
1234
+ }
1235
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: ModalHeaderComponent, decorators: [{
1236
+ type: Component,
1237
+ args: [{ selector: "tedi-modal-header", imports: [FeedbackTextComponent, ClosingButtonComponent, TextComponent], template: "<div class=\"tedi-modal-header\">\n <div class=\"tedi-modal-header__title\">\n <ng-content>\n <h1 tedi-text modifiers=\"h3\">\n {{ title() }}\n </h1>\n </ng-content>\n\n <ng-content select=\"[header-exit-button]\">\n @if (closeButton()) {\n <button\n tedi-closing-button\n variant=\"neutral\"\n (click)=\"closeModal()\"\n ></button>\n }\n </ng-content>\n </div>\n\n @if (feedback()) {\n <tedi-feedback-text\n [text]=\"feedback()!.text\"\n [type]=\"feedback()!.type\"\n [position]=\"feedback()!.position\"\n />\n }\n</div>\n", styles: [".tedi-modal-header{border-bottom:var(--_modal-border);padding:var(--_tedi-modal-heading-padding-y) var(--_tedi-modal-heading-padding-x)}.tedi-modal-header__title{display:flex;justify-content:space-between;align-items:center}\n"] }]
1238
+ }] });
1239
+
1240
+ class SelectComponent {
1241
+ /**
1242
+ * The id of the select input (for label association).
1243
+ * @default ""
1244
+ */
1245
+ inputId = input.required();
1246
+ /**
1247
+ * The label for the select input.
1248
+ * @default ""
1249
+ */
1250
+ label = input();
1251
+ /**
1252
+ * Should show label as required?
1253
+ * @default false
1254
+ */
1255
+ required = input(false);
1256
+ /**
1257
+ * The placeholder text to display when no option is selected.
1258
+ * @default ""
1259
+ */
1260
+ placeholder = input("");
1261
+ /**
1262
+ * The state of the input.
1263
+ * @default "default"
1264
+ */
1265
+ state = input("default");
1266
+ /**
1267
+ * The size of the input.
1268
+ * @default "default"
1269
+ */
1270
+ size = input("default");
1271
+ /**
1272
+ * Whether the clear button will be shown when an option is selected.
1273
+ * @default false
1274
+ */
1275
+ clearable = input(true);
1276
+ feedbackText = input();
1277
+ isOpen = signal(false);
1278
+ selectedOptions = signal([]);
1279
+ listboxRef = viewChild(CdkListbox, { read: ElementRef });
1280
+ triggerRef = viewChild(CdkOverlayOrigin, { read: ElementRef });
1281
+ hostRef = inject(ElementRef);
1282
+ options = contentChildren(SelectOptionComponent);
1283
+ dropdownWidth = signal(0);
1284
+ disabled = signal(false);
1285
+ optionGroups = computed(() => {
1286
+ const groups = [];
1287
+ this.options().forEach((option) => {
1288
+ const group = groups.find((g) => g.label === option.group());
1289
+ if (group) {
1290
+ group.options.push(option);
1291
+ }
1292
+ else {
1293
+ groups.push({ label: option.group() ?? "", options: [option] });
1294
+ }
1295
+ });
1296
+ return groups;
1297
+ });
1298
+ ngAfterContentChecked() {
1299
+ this.setDropdownWidth();
1300
+ }
1301
+ onWindowResize() {
1302
+ this.setDropdownWidth();
1303
+ }
1304
+ toggleIsOpen(value) {
1305
+ if (this.disabled())
1306
+ return;
1307
+ if (value === undefined) {
1308
+ this.isOpen.update((previousValue) => !previousValue);
1309
+ }
1310
+ else if (value === false) {
1311
+ this.isOpen.set(value);
1312
+ this.focusTrigger();
1313
+ }
1314
+ }
1315
+ handleValueChange(event) {
1316
+ const selected = event.value[0] ?? null;
1317
+ this.selectedOptions.set(selected ? [selected] : []);
1318
+ this.onChange(selected);
1319
+ this.onTouched();
1320
+ this.toggleIsOpen(false);
1321
+ }
1322
+ clear(event) {
1323
+ event.preventDefault();
1324
+ event.stopPropagation();
1325
+ this.selectedOptions.set([]);
1326
+ this.onChange(null);
1327
+ this.onTouched();
1328
+ }
1329
+ focusListboxWhenVisible = effect(() => {
1330
+ if (this.listboxRef())
1331
+ this.listboxRef()?.nativeElement.focus();
1332
+ });
1333
+ focusTrigger() {
1334
+ this.triggerRef()?.nativeElement.focus();
1335
+ }
1336
+ isOptionSelected(option) {
1337
+ return this.selectedOptions().includes(option);
1338
+ }
1339
+ selectedLabels = computed(() => {
1340
+ return this.options()
1341
+ .filter((option) => this.isOptionSelected(option.value()))
1342
+ .map((option) => option.label());
1343
+ });
1344
+ setDropdownWidth() {
1345
+ const computedWidth = this.hostRef?.nativeElement?.getBoundingClientRect()?.width ?? 0;
1346
+ this.dropdownWidth.set(computedWidth);
1347
+ }
1348
+ // ControlValueAccessor implementation
1349
+ onChange = () => { };
1350
+ onTouched = () => { };
1351
+ writeValue(value) {
1352
+ this.selectedOptions.set(value ? [value] : []);
1353
+ }
1354
+ registerOnChange(fn) {
1355
+ this.onChange = fn;
1356
+ }
1357
+ registerOnTouched(fn) {
1358
+ this.onTouched = fn;
1359
+ }
1360
+ setDisabledState(isDisabled) {
1361
+ this.disabled.set(isDisabled);
1362
+ }
1363
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1364
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: SelectComponent, isStandalone: true, selector: "tedi-select", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onWindowResize()" }, classAttribute: "tedi-select" }, providers: [
1365
+ {
1366
+ provide: NG_VALUE_ACCESSOR,
1367
+ useExisting: forwardRef(() => SelectComponent),
1368
+ multi: true,
1369
+ },
1370
+ ], queries: [{ propertyName: "options", predicate: SelectOptionComponent, isSignal: true }], viewQueries: [{ propertyName: "listboxRef", first: true, predicate: CdkListbox, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "triggerRef", first: true, predicate: CdkOverlayOrigin, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedLabels().length) {\n {{ selectedLabels() }}\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxUseActiveDescendant\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n >\n @if (options().length) {\n @for (group of optionGroups(); track $index) {\n @if (group.label.length > 0) {\n <li class=\"tedi-select__group-name\" role=\"presentation\">\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [selected]=\"isOptionSelected(option.value())\"\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n @if (option.templateRef(); as optionNgContent) {\n <div class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionNgContent\" />\n </div>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n }\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: CdkListboxModule }, { kind: "directive", type: i3.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i3.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "component", type: InputComponent, selector: "[tedi-input]", inputs: ["size", "state"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: DropdownItemComponent, selector: "[tedi-dropdown-item]", inputs: ["selected", "disabled"], outputs: ["itemSelected"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1371
+ }
1372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SelectComponent, decorators: [{
1373
+ type: Component,
1374
+ args: [{ selector: "tedi-select", imports: [
1375
+ CommonModule,
1376
+ OverlayModule,
1377
+ CdkListboxModule,
1378
+ InputComponent,
1379
+ CardComponent,
1380
+ CardContentComponent,
1381
+ DropdownItemComponent,
1382
+ ClosingButtonComponent,
1383
+ IconComponent,
1384
+ LabelComponent,
1385
+ FeedbackTextComponent,
1386
+ TextComponent,
1387
+ TediTranslationPipe,
1388
+ ], standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
1389
+ class: "tedi-select",
1390
+ }, providers: [
1391
+ {
1392
+ provide: NG_VALUE_ACCESSOR,
1393
+ useExisting: forwardRef(() => SelectComponent),
1394
+ multi: true,
1395
+ },
1396
+ ], template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedLabels().length) {\n {{ selectedLabels() }}\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxUseActiveDescendant\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n >\n @if (options().length) {\n @for (group of optionGroups(); track $index) {\n @if (group.label.length > 0) {\n <li class=\"tedi-select__group-name\" role=\"presentation\">\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [selected]=\"isOptionSelected(option.value())\"\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n @if (option.templateRef(); as optionNgContent) {\n <div class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionNgContent\" />\n </div>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n }\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"] }]
1397
+ }], propDecorators: { onWindowResize: [{
1398
+ type: HostListener,
1399
+ args: ["window:resize"]
1400
+ }] } });
1401
+
1402
+ class TagComponent {
1403
+ /**
1404
+ * Whether the tag is in loading state.
1405
+ * When true, a spinner will be displayed inside the tag.
1406
+ * @default false
1407
+ */
1408
+ loading = input(false);
1409
+ /**
1410
+ * Whether the tag can be closed.
1411
+ * When true, a close button will be displayed that emits the 'closed' event when clicked.
1412
+ * @default false
1413
+ */
1414
+ closable = input(false);
1415
+ /**
1416
+ * The visual style of the tag.
1417
+ * Possible values: 'primary', 'secondary', 'danger'
1418
+ * @default "primary"
1419
+ */
1420
+ type = input("primary");
1421
+ /**
1422
+ * Event emitted when the close button is clicked.
1423
+ * Only relevant when closable is true.
1424
+ */
1425
+ closed = output();
1426
+ classes = computed(() => {
1427
+ const classList = [];
1428
+ if (this.type()) {
1429
+ classList.push(`tedi-tag--${this.type()}`);
1430
+ }
1431
+ return classList.join(" ");
1432
+ });
1433
+ handleClose(event) {
1434
+ this.closed.emit(event);
1435
+ }
1436
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1437
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TagComponent, isStandalone: true, selector: "tedi-tag", inputs: { loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, closable: { classPropertyName: "closable", publicName: "closable", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed" }, host: { properties: { "class.tedi-tag": "true", "class.tedi-tag--loading": "loading()", "class.tedi-tag--closable": "closable()", "class": "classes()" } }, ngImport: i0, template: "@if (type() === \"danger\") {\n <span class=\"tedi-tag__icon-wrapper\">\n <tedi-icon name=\"error\" color=\"danger\" [size]=\"16\" />\n </span>\n}\n\n<span class=\"tedi-tag__content\">\n <ng-content />\n</span>\n\n@if (loading()) {\n <span class=\"tedi-tag__spinner-wrapper\">\n <tedi-spinner [size]=\"10\" />\n </span>\n} @else if (closable()) {\n <!-- TODO: Not sure about the aria-label and title here. Should they come from input and be translatable? -->\n <button\n type=\"button\"\n class=\"tedi-tag__closing-button\"\n [attr.aria-label]=\"'remove' | tediTranslate\"\n [title]=\"'remove' | tediTranslate\"\n (click)=\"handleClose($event)\"\n >\n <tedi-icon name=\"close\" [size]=\"18\" />\n </button>\n}\n", styles: [".tedi-tag{--_background-color: var(--tag-primary-background);--_border-color: var(--tag-primary-border);--_border-width: 1px;--_tag-padding-y: calc(var(--tag-default-padding-y) - var(--_border-width));display:inline-flex;align-items:flex-start;gap:var(--_gap-x);padding:0 var(--_padding-x);background-color:var(--_background-color);border:var(--_border-width) solid;border-color:var(--_border-color);border-radius:var(--_border-radius);font-family:var(--family-primary);color:var(--general-text-primary);line-height:var(--_line-height);overflow:hidden}.tedi-tag{--_padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag{--_padding-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{--_border-radius: var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-tag{--_border-radius: var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-tag{--_border-radius: var(--tag-default-radius-desktop)}}.tedi-tag{--_gap-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 576px){.tedi-tag{font-weight:var(--body-small-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tag{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-tag{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 576px){.tedi-tag{font-size:var(--body-small-regular-size-tablet)}}@media (min-width: 992px){.tedi-tag{font-size:var(--body-small-regular-size-desktop)}}.tedi-tag{--_line-height: var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-desktop)}}.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag__content{padding:calc(var(--_tag-padding-y) - var(--_border-width)) 0}.tedi-tag__icon-wrapper{line-height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag__closing-button{display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin:0;border:none;background-color:#00000003;transition:background-color .3s ease-in-out;height:calc(var(--_button-height) - var(--_border-width) * 2)}.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button:hover,.tedi-tag__closing-button:focus{background-color:#0000001a}.tedi-tag__spinner-wrapper{display:flex;align-items:center;height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag--closable:not(.tedi-tag--loading){padding-right:0}.tedi-tag--secondary{--_background-color: var(--tag-secondary-background);--_border-color: var(--tag-secondary-border)}.tedi-tag--danger{--_background-color: var(--tag-danger-background);--_border-color: var(--tag-danger-border)}\n"], dependencies: [{ kind: "component", type: SpinnerComponent, selector: "tedi-spinner", inputs: ["size", "color", "label"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1438
+ }
1439
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TagComponent, decorators: [{
1440
+ type: Component,
1441
+ args: [{ selector: "tedi-tag", imports: [SpinnerComponent, IconComponent, TediTranslationPipe], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
1442
+ "[class.tedi-tag]": "true",
1443
+ "[class.tedi-tag--loading]": "loading()",
1444
+ "[class.tedi-tag--closable]": "closable()",
1445
+ "[class]": "classes()",
1446
+ }, template: "@if (type() === \"danger\") {\n <span class=\"tedi-tag__icon-wrapper\">\n <tedi-icon name=\"error\" color=\"danger\" [size]=\"16\" />\n </span>\n}\n\n<span class=\"tedi-tag__content\">\n <ng-content />\n</span>\n\n@if (loading()) {\n <span class=\"tedi-tag__spinner-wrapper\">\n <tedi-spinner [size]=\"10\" />\n </span>\n} @else if (closable()) {\n <!-- TODO: Not sure about the aria-label and title here. Should they come from input and be translatable? -->\n <button\n type=\"button\"\n class=\"tedi-tag__closing-button\"\n [attr.aria-label]=\"'remove' | tediTranslate\"\n [title]=\"'remove' | tediTranslate\"\n (click)=\"handleClose($event)\"\n >\n <tedi-icon name=\"close\" [size]=\"18\" />\n </button>\n}\n", styles: [".tedi-tag{--_background-color: var(--tag-primary-background);--_border-color: var(--tag-primary-border);--_border-width: 1px;--_tag-padding-y: calc(var(--tag-default-padding-y) - var(--_border-width));display:inline-flex;align-items:flex-start;gap:var(--_gap-x);padding:0 var(--_padding-x);background-color:var(--_background-color);border:var(--_border-width) solid;border-color:var(--_border-color);border-radius:var(--_border-radius);font-family:var(--family-primary);color:var(--general-text-primary);line-height:var(--_line-height);overflow:hidden}.tedi-tag{--_padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag{--_padding-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_padding-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{--_border-radius: var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-tag{--_border-radius: var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-tag{--_border-radius: var(--tag-default-radius-desktop)}}.tedi-tag{--_gap-x: var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-tag{--_gap-x: var(--tag-default-padding-x-desktop)}}.tedi-tag{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 576px){.tedi-tag{font-weight:var(--body-small-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tag{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-tag{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 576px){.tedi-tag{font-size:var(--body-small-regular-size-tablet)}}@media (min-width: 992px){.tedi-tag{font-size:var(--body-small-regular-size-desktop)}}.tedi-tag{--_line-height: var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-tag{--_line-height: var(--body-small-regular-line-height-desktop)}}.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-mobile)}@media (min-width: 576px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-tablet)}}@media (min-width: 992px){.tedi-tag{--_tag-padding-y: var(--tag-default-padding-y-desktop)}}.tedi-tag__content{padding:calc(var(--_tag-padding-y) - var(--_border-width)) 0}.tedi-tag__icon-wrapper{line-height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag__closing-button{display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0;margin:0;border:none;background-color:#00000003;transition:background-color .3s ease-in-out;height:calc(var(--_button-height) - var(--_border-width) * 2)}.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{--_button-height: var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-mobile)}@media (min-width: 576px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-tablet)}}@media (min-width: 992px){.tedi-tag__closing-button{min-width:var(--button-xs-icon-size-desktop)}}.tedi-tag__closing-button:hover,.tedi-tag__closing-button:focus{background-color:#0000001a}.tedi-tag__spinner-wrapper{display:flex;align-items:center;height:calc(var(--_line-height) + var(--_tag-padding-y))}.tedi-tag--closable:not(.tedi-tag--loading){padding-right:0}.tedi-tag--secondary{--_background-color: var(--tag-secondary-background);--_border-color: var(--tag-secondary-border)}.tedi-tag--danger{--_background-color: var(--tag-danger-background);--_border-color: var(--tag-danger-border)}\n"] }]
1447
+ }] });
1448
+
1449
+ class StatusBadgeComponent {
1450
+ /**
1451
+ * Additional classes to apply custom styles to the StatusBadge.
1452
+ */
1453
+ className = input();
1454
+ /**
1455
+ * Provides the full text or description when the Badge represents an abbreviation.
1456
+ * This is typically shown as a tooltip on hover.
1457
+ */
1458
+ title = input();
1459
+ /**
1460
+ * ID attribute
1461
+ */
1462
+ id = input();
1463
+ /**
1464
+ * ARIA role attribute for accessibility.
1465
+ */
1466
+ role = input();
1467
+ /**
1468
+ * Specifies the color scheme of the StatusBadge.
1469
+ * @default default
1470
+ */
1471
+ color = input("neutral");
1472
+ /**
1473
+ * Determines the style or visual type of the StatusBadge.
1474
+ * @default filled
1475
+ */
1476
+ variant = input("filled");
1477
+ /**
1478
+ * Specifies the size of the StatusBadge.
1479
+ * @default default
1480
+ */
1481
+ size = input("default");
1482
+ /**
1483
+ * StatusBadge status indicator
1484
+ */
1485
+ status = input("inactive");
1486
+ /**
1487
+ * The name of the icon to be displayed inside the StatusBadge. The icon is rendered using the `Icon` component.
1488
+ */
1489
+ icon = input("");
1490
+ classes = computed(() => {
1491
+ const classList = ["tedi-status-badge"];
1492
+ if (this.color()) {
1493
+ classList.push(`tedi-status-badge--color-${this.color()}`);
1494
+ }
1495
+ if (this.variant()) {
1496
+ classList.push(`tedi-status-badge--variant-${this.variant()}`);
1497
+ }
1498
+ if (this.status() && this.status() !== "none") {
1499
+ classList.push("tedi-status-badge--status", `tedi-status-badge--status-${this.status()}`);
1500
+ }
1501
+ if (this.size() === "large") {
1502
+ classList.push("tedi-status-badge--large");
1503
+ }
1504
+ if (this.icon() && !this.title()) {
1505
+ classList.push("tedi-status-badge__icon-only");
1506
+ }
1507
+ if (this.className()) {
1508
+ classList.push(this.className());
1509
+ }
1510
+ return classList.join(" ");
1511
+ });
1512
+ ariaLive = computed(() => {
1513
+ switch (this.role()) {
1514
+ case "alert":
1515
+ return "assertive";
1516
+ case "status":
1517
+ return "polite";
1518
+ default:
1519
+ return undefined;
1520
+ }
1521
+ });
1522
+ mapBadgeColorToIconColor = computed(() => {
1523
+ switch (this.color()) {
1524
+ case "brand":
1525
+ return "brand-dark";
1526
+ case "success":
1527
+ return "success";
1528
+ case "accent":
1529
+ return "secondary";
1530
+ case "danger":
1531
+ return "danger";
1532
+ case "warning":
1533
+ return "warning-dark";
1534
+ default:
1535
+ return "primary";
1536
+ }
1537
+ });
1538
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1539
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: StatusBadgeComponent, isStandalone: true, selector: "[tedi-status-badge]", inputs: { className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, title: { classPropertyName: "title", publicName: "title", isSignal: true, isRequired: false, transformFunction: null }, id: { classPropertyName: "id", publicName: "id", isSignal: true, isRequired: false, transformFunction: null }, role: { classPropertyName: "role", publicName: "role", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, variant: { classPropertyName: "variant", publicName: "variant", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, status: { classPropertyName: "status", publicName: "status", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "attr.title": "title()", "attr.id": "id()", "attr.role": "role()", "attr.aria-live": "ariaLive()", "attr.aria-label": "title()" } }, ngImport: i0, template: "@if (icon()) {\n <tedi-icon [name]=\"icon()\" [color]=\"mapBadgeColorToIconColor()\" [size]=\"16\" />\n}\n<span class=\"tedi-status-badge__inner-text\">\n <ng-content></ng-content>\n</span>\n", styles: [".tedi-status-badge__inner-text:empty{display:none}.tedi-status-badge{--status-badge-icon-primary: var(--blue-700);--status-badge-icon-secondary: var(--orange-700);position:relative;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--_status-badge-text);background:var(--_status-badge-background);box-shadow:var(--_status-badge-box-shadow)}.tedi-status-badge{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 992px){.tedi-status-badge{font-size:var(--body-small-regular-size-desktop)}}.tedi-status-badge{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 992px){.tedi-status-badge{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-status-badge{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 992px){.tedi-status-badge{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge{padding:var(--tag-default-padding-y-mobile) var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge{padding:var(--tag-default-padding-y-tablet) var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge{padding:var(--tag-default-padding-y-desktop) var(--tag-default-padding-x-desktop)}}.tedi-status-badge{border-radius:var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-status-badge{border-radius:var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-status-badge{border-radius:var(--tag-default-radius-desktop)}}.tedi-status-badge__inner-text{min-width:fit-content}.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-desktop)}}.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-desktop)}}.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-mobile)}@media (min-width: 576px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-desktop)}}.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-mobile) var(--tag-status-large-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-tablet) var(--tag-status-large-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-desktop) var(--tag-status-large-padding-x-desktop)}}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent )}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: transparent}.tedi-status-badge--status:before{position:absolute;top:-.25rem;right:-.25rem;z-index:1;width:.625rem;height:.625rem;content:\"\";border:1px solid var(--neutral-100);border-radius:50%;background-color:var(--_status-badge--indicator-background)}.tedi-status-badge--status.tedi-badge--large:before{top:-.1875rem;right:-.1875rem;width:.875rem;height:.875rem}.tedi-status-badge--status-inactive:before{--_status-badge--indicator-background: var( --status-badge-indicator-inactive )}.tedi-status-badge--status-success:before{--_status-badge--indicator-background: var( --status-badge-indicator-success )}.tedi-status-badge--status-danger:before{--_status-badge--indicator-background: var( --status-badge-indicator-danger )}.tedi-status-badge--status-warning:before{--_status-badge--indicator-background: var( --status-badge-indicator-warning )}.tedi-status-badge__icon-only{display:inline-flex;align-items:center;min-height:24px}.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge__icon-primary{color:var(--status-badge-icon-primary)}.tedi-status-badge__icon-accent{color:var(--status-badge-icon-secondary)}@media print{.tedi-status-badge{filter:grayscale(1)}}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }], encapsulation: i0.ViewEncapsulation.None });
1540
+ }
1541
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: StatusBadgeComponent, decorators: [{
1542
+ type: Component,
1543
+ args: [{ selector: "[tedi-status-badge]", imports: [IconComponent], encapsulation: ViewEncapsulation.None, host: {
1544
+ "[class]": "classes()",
1545
+ "[attr.title]": "title()",
1546
+ "[attr.id]": "id()",
1547
+ "[attr.role]": "role()",
1548
+ "[attr.aria-live]": "ariaLive()",
1549
+ "[attr.aria-label]": "title()",
1550
+ }, template: "@if (icon()) {\n <tedi-icon [name]=\"icon()\" [color]=\"mapBadgeColorToIconColor()\" [size]=\"16\" />\n}\n<span class=\"tedi-status-badge__inner-text\">\n <ng-content></ng-content>\n</span>\n", styles: [".tedi-status-badge__inner-text:empty{display:none}.tedi-status-badge{--status-badge-icon-primary: var(--blue-700);--status-badge-icon-secondary: var(--orange-700);position:relative;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--_status-badge-text);background:var(--_status-badge-background);box-shadow:var(--_status-badge-box-shadow)}.tedi-status-badge{font-size:var(--body-small-regular-size-mobile)}@media (min-width: 992px){.tedi-status-badge{font-size:var(--body-small-regular-size-desktop)}}.tedi-status-badge{font-weight:var(--body-small-regular-weight-mobile)}@media (min-width: 992px){.tedi-status-badge{font-weight:var(--body-small-regular-weight-desktop)}}.tedi-status-badge{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 992px){.tedi-status-badge{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge{padding:var(--tag-default-padding-y-mobile) var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge{padding:var(--tag-default-padding-y-tablet) var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge{padding:var(--tag-default-padding-y-desktop) var(--tag-default-padding-x-desktop)}}.tedi-status-badge{border-radius:var(--tag-default-radius-mobile)}@media (min-width: 576px){.tedi-status-badge{border-radius:var(--tag-default-radius-tablet)}}@media (min-width: 992px){.tedi-status-badge{border-radius:var(--tag-default-radius-desktop)}}.tedi-status-badge__inner-text{min-width:fit-content}.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-left:var(--tag-default-padding-x-desktop)}}.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge__inner-text{padding-right:var(--tag-default-padding-x-desktop)}}.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-mobile)}@media (min-width: 576px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{min-width:var(--tag-status-large-min-width-desktop)}}.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-mobile) var(--tag-status-large-padding-x-mobile)}@media (min-width: 576px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-tablet) var(--tag-status-large-padding-x-tablet)}}@media (min-width: 992px){.tedi-status-badge--large{padding:var(--tag-status-large-padding-y-desktop) var(--tag-status-large-padding-x-desktop)}}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent );--_status-badge-box-shadow: none}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: var( --status-badge-background-neutral )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: var( --status-badge-background-brand )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: var( --status-badge-background-accent )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: var( --status-badge-background-success )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: var( --status-badge-background-danger )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: var( --status-badge-background-warning )}.tedi-status-badge.tedi-status-badge--variant-filled-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: var( --status-badge-background-transparent )}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-neutral{--_status-badge-text: var(--status-badge-text-neutral);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-neutral);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-brand{--_status-badge-text: var(--status-badge-text-brand);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-brand);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-accent{--_status-badge-text: var(--status-badge-text-accent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-accent);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-success{--_status-badge-text: var(--status-badge-text-success);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-success);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-danger{--_status-badge-text: var(--status-badge-text-danger);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-danger);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-warning{--_status-badge-text: var(--status-badge-text-warning);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-warning);--_status-badge-background: transparent}.tedi-status-badge.tedi-status-badge--variant-bordered.tedi-status-badge--color-transparent{--_status-badge-text: var(--status-badge-text-transparent);--_status-badge-box-shadow: inset 0 0 0 1px var(--status-badge-border-transparent);--_status-badge-background: transparent}.tedi-status-badge--status:before{position:absolute;top:-.25rem;right:-.25rem;z-index:1;width:.625rem;height:.625rem;content:\"\";border:1px solid var(--neutral-100);border-radius:50%;background-color:var(--_status-badge--indicator-background)}.tedi-status-badge--status.tedi-badge--large:before{top:-.1875rem;right:-.1875rem;width:.875rem;height:.875rem}.tedi-status-badge--status-inactive:before{--_status-badge--indicator-background: var( --status-badge-indicator-inactive )}.tedi-status-badge--status-success:before{--_status-badge--indicator-background: var( --status-badge-indicator-success )}.tedi-status-badge--status-danger:before{--_status-badge--indicator-background: var( --status-badge-indicator-danger )}.tedi-status-badge--status-warning:before{--_status-badge--indicator-background: var( --status-badge-indicator-warning )}.tedi-status-badge__icon-only{display:inline-flex;align-items:center;min-height:24px}.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-mobile)}@media (min-width: 576px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-status-badge__icon-only{line-height:var(--body-small-regular-line-height-desktop)}}.tedi-status-badge__icon-primary{color:var(--status-badge-icon-primary)}.tedi-status-badge__icon-accent{color:var(--status-badge-icon-secondary)}@media print{.tedi-status-badge{filter:grayscale(1)}}\n"] }]
1551
+ }] });
1552
+
1553
+ var specialOptionControls;
1554
+ (function (specialOptionControls) {
1555
+ specialOptionControls["SELECT_ALL"] = "SELECT_ALL";
1556
+ specialOptionControls["SELECTGROUP"] = "SELECTGROUP_";
1557
+ })(specialOptionControls || (specialOptionControls = {}));
1558
+ class MultiselectComponent {
1559
+ /**
1560
+ * The id of the select input (for label association).
1561
+ * @default ""
1562
+ */
1563
+ inputId = input.required();
1564
+ /**
1565
+ * The label for the select input.
1566
+ * @default ""
1567
+ */
1568
+ label = input();
1569
+ /**
1570
+ * Should show label as required?
1571
+ * @default false
1572
+ */
1573
+ required = input(false);
1574
+ /**
1575
+ * The placeholder text to display when no option is selected.
1576
+ * @default ""
1577
+ */
1578
+ placeholder = input("");
1579
+ /**
1580
+ * The state of the input.
1581
+ * @default "default"
1582
+ */
1583
+ state = input("default");
1584
+ /**
1585
+ * The size of the input.
1586
+ * @default "default"
1587
+ */
1588
+ size = input("default");
1589
+ /**
1590
+ * Whether the select should be rendered as a multi-row dropdown.
1591
+ * @default false
1592
+ */
1593
+ multiRow = input(false);
1594
+ /**
1595
+ * Whether the selected labels show removing buttons.
1596
+ * @default false
1597
+ */
1598
+ clearableTags = input(false);
1599
+ /**
1600
+ * Whether the select should allow selecting all options at once.
1601
+ * @default false
1602
+ */
1603
+ selectAll = input(false);
1604
+ /**
1605
+ * Whether the select should allow selecting groups of options.
1606
+ * @default false
1607
+ */
1608
+ selectableGroups = input(false);
1609
+ /**
1610
+ * Whether the clear button will be shown when an option is selected.
1611
+ * @default true
1612
+ */
1613
+ clearable = input(true);
1614
+ feedbackText = input();
1615
+ specialOptionControls = specialOptionControls;
1616
+ isOpen = signal(false);
1617
+ selectedOptions = signal([]);
1618
+ listboxRef = viewChild(CdkListbox, { read: ElementRef });
1619
+ triggerRef = viewChild(CdkOverlayOrigin, { read: ElementRef });
1620
+ hostRef = inject(ElementRef);
1621
+ options = contentChildren(SelectOptionComponent);
1622
+ dropdownWidth = signal(0);
1623
+ disabled = signal(false);
1624
+ optionGroups = computed(() => {
1625
+ const groups = [];
1626
+ this.options().forEach((option) => {
1627
+ const group = groups.find((g) => g.label === option.group());
1628
+ if (group) {
1629
+ group.options.push(option);
1630
+ }
1631
+ else {
1632
+ groups.push({ label: option.group() ?? "", options: [option] });
1633
+ }
1634
+ });
1635
+ return groups;
1636
+ });
1637
+ onWindowResize() {
1638
+ this.setDropdownWidth();
1639
+ }
1640
+ toggleIsOpen(value) {
1641
+ if (this.disabled())
1642
+ return;
1643
+ if (value === undefined) {
1644
+ this.isOpen.update((previousValue) => !previousValue);
1645
+ }
1646
+ else if (value === false) {
1647
+ this.isOpen.set(value);
1648
+ this.focusTrigger();
1649
+ }
1650
+ }
1651
+ handleValueChange(event) {
1652
+ // Check if event value includes any "select-all-group" selection
1653
+ const selectedGroup = event.value
1654
+ .find((v) => v.startsWith(specialOptionControls.SELECTGROUP))
1655
+ ?.replace(specialOptionControls.SELECTGROUP, "");
1656
+ if (event.value.includes(specialOptionControls.SELECT_ALL)) {
1657
+ // If "select-all" is selected, toggle all options
1658
+ this.toggleSelectAll();
1659
+ }
1660
+ else if (selectedGroup) {
1661
+ // If a group selection is made, toggle the group
1662
+ this.toggleGroupSelection(selectedGroup);
1663
+ }
1664
+ else {
1665
+ // Otherwise, update the selected options directly
1666
+ this.selectedOptions.set(event.value);
1667
+ this.onChange(event.value);
1668
+ }
1669
+ this.onTouched();
1670
+ }
1671
+ clear(event) {
1672
+ event.preventDefault();
1673
+ event.stopPropagation();
1674
+ this.selectedOptions.set([]);
1675
+ this.onChange([]);
1676
+ this.onTouched();
1677
+ }
1678
+ focusListboxWhenVisible = effect(() => {
1679
+ if (this.listboxRef())
1680
+ this.listboxRef()?.nativeElement.focus();
1681
+ });
1682
+ focusTrigger() {
1683
+ this.triggerRef()?.nativeElement.focus();
1684
+ }
1685
+ isOptionSelected(option) {
1686
+ return this.selectedOptions().includes(option);
1687
+ }
1688
+ setDropdownWidth() {
1689
+ const computedWidth = this.hostRef?.nativeElement?.getBoundingClientRect()?.width ?? 0;
1690
+ this.dropdownWidth.set(computedWidth);
1691
+ }
1692
+ allOptions = computed(() => {
1693
+ return this.options()
1694
+ .filter((option) => !option.disabled())
1695
+ .map((option) => option.value());
1696
+ });
1697
+ allOptionsSelected = computed(() => {
1698
+ return this.selectedOptions().length === this.allOptions().length;
1699
+ });
1700
+ toggleSelectAll() {
1701
+ const newSelection = this.allOptionsSelected() ? [] : this.allOptions();
1702
+ this.selectedOptions.set(newSelection);
1703
+ this.onChange(newSelection);
1704
+ }
1705
+ getLabel(value) {
1706
+ const option = this.options().find((opt) => opt.value() === value);
1707
+ return option ? option.label() : undefined;
1708
+ }
1709
+ isGroupSelected(groupLabel) {
1710
+ const group = this.optionGroups().find((g) => g.label === groupLabel);
1711
+ if (!group)
1712
+ return false;
1713
+ const enabledGroupOptions = group.options
1714
+ .filter((option) => !option.disabled())
1715
+ .map((option) => option.value());
1716
+ return (enabledGroupOptions.length > 0 &&
1717
+ enabledGroupOptions.every((option) => this.selectedOptions().includes(option)));
1718
+ }
1719
+ toggleGroupSelection(groupLabel) {
1720
+ const group = this.optionGroups().find((g) => g.label === groupLabel);
1721
+ if (!group)
1722
+ return;
1723
+ const enabledGroupOptions = group.options
1724
+ .filter((option) => !option.disabled())
1725
+ .map((option) => option.value());
1726
+ const allGroupOptionsSelected = this.isGroupSelected(groupLabel);
1727
+ let newSelection;
1728
+ if (allGroupOptionsSelected) {
1729
+ newSelection = this.selectedOptions().filter((option) => !enabledGroupOptions.includes(option));
1730
+ }
1731
+ else {
1732
+ const currentSelected = new Set(this.selectedOptions());
1733
+ enabledGroupOptions.forEach((option) => currentSelected.add(option));
1734
+ newSelection = Array.from(currentSelected);
1735
+ }
1736
+ this.selectedOptions.set(newSelection);
1737
+ this.onChange(newSelection);
1738
+ }
1739
+ deselect(event, value) {
1740
+ event.stopPropagation();
1741
+ event.preventDefault();
1742
+ if (this.disabled())
1743
+ return;
1744
+ const newSelection = this.selectedOptions().filter((option) => option !== value);
1745
+ this.selectedOptions.set(newSelection);
1746
+ this.onChange(newSelection);
1747
+ this.onTouched();
1748
+ }
1749
+ // ControlValueAccessor implementation
1750
+ onChange = () => { };
1751
+ onTouched = () => { };
1752
+ writeValue(value) {
1753
+ this.selectedOptions.set(value || []);
1754
+ }
1755
+ registerOnChange(fn) {
1756
+ this.onChange = fn;
1757
+ }
1758
+ registerOnTouched(fn) {
1759
+ this.onTouched = fn;
1760
+ }
1761
+ setDisabledState(isDisabled) {
1762
+ this.disabled.set(isDisabled);
1763
+ }
1764
+ ngAfterContentChecked() {
1765
+ this.setDropdownWidth();
1766
+ }
1767
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiselectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1768
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: MultiselectComponent, isStandalone: true, selector: "tedi-multiselect", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, required: { classPropertyName: "required", publicName: "required", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, multiRow: { classPropertyName: "multiRow", publicName: "multiRow", isSignal: true, isRequired: false, transformFunction: null }, clearableTags: { classPropertyName: "clearableTags", publicName: "clearableTags", isSignal: true, isRequired: false, transformFunction: null }, selectAll: { classPropertyName: "selectAll", publicName: "selectAll", isSignal: true, isRequired: false, transformFunction: null }, selectableGroups: { classPropertyName: "selectableGroups", publicName: "selectableGroups", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "window:resize": "onWindowResize()" }, classAttribute: "tedi-select tedi-select--multiselect" }, providers: [
1769
+ {
1770
+ provide: NG_VALUE_ACCESSOR,
1771
+ useExisting: forwardRef(() => MultiselectComponent),
1772
+ multi: true,
1773
+ },
1774
+ ], queries: [{ propertyName: "options", predicate: SelectOptionComponent, isSignal: true }], viewQueries: [{ propertyName: "listboxRef", first: true, predicate: CdkListbox, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "triggerRef", first: true, predicate: CdkOverlayOrigin, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedOptions().length) {\n <div\n class=\"tedi-select__multiselect-container\"\n [class.tedi-select__multiselect-container--single-row]=\"!multiRow()\"\n >\n @for (value of selectedOptions(); track value) {\n <tedi-tag\n [closable]=\"clearableTags()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n </div>\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxMultiple\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n #listbox=\"cdkListbox\"\n >\n @if (options().length) {\n @if (selectAll()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"specialOptionControls.SELECT_ALL\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"inputId() + '-select-all'\"\n [checked]=\"allOptionsSelected()\"\n >\n {{ \"select.select-all\" | tediTranslate }}\n </tedi-checkbox>\n </li>\n }\n\n @for (group of optionGroups(); track $index) {\n @if (group.label.length) {\n @if (selectableGroups()) {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name tedi-select__group-name--selectable\"\n [cdkOption]=\"specialOptionControls.SELECTGROUP + group.label\"\n >\n <div class=\"tedi-select__group-checkbox\">\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'group-' + group.label\"\n [checked]=\"isGroupSelected(group.label)\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </tedi-checkbox>\n </div>\n </li>\n } @else {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name\"\n role=\"presentation\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'option-' + option.value()\"\n [checked]=\"isOptionSelected(option.value())\"\n >\n @if (option.templateRef(); as optionTemplate) {\n <span class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionTemplate\" />\n </span>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n } @else {\n {{ option.label() }}\n }\n </tedi-checkbox>\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "ngmodule", type: CdkListboxModule }, { kind: "directive", type: i3.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i3.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }, { kind: "component", type: InputComponent, selector: "[tedi-input]", inputs: ["size", "state"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: DropdownItemComponent, selector: "[tedi-dropdown-item]", inputs: ["selected", "disabled"], outputs: ["itemSelected"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "component", type: CheckboxComponent, selector: "tedi-checkbox", inputs: ["inputId", "checked", "indeterminate", "value", "disabled", "size", "hasError", "feedbackText"], outputs: ["checkedChange", "disabledChange"] }, { kind: "component", type: TagComponent, selector: "tedi-tag", inputs: ["loading", "closable", "type"], outputs: ["closed"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1775
+ }
1776
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: MultiselectComponent, decorators: [{
1777
+ type: Component,
1778
+ args: [{ selector: "tedi-multiselect", imports: [
1779
+ CommonModule,
1780
+ OverlayModule,
1781
+ CdkListboxModule,
1782
+ InputComponent,
1783
+ CardComponent,
1784
+ CardContentComponent,
1785
+ DropdownItemComponent,
1786
+ ClosingButtonComponent,
1787
+ IconComponent,
1788
+ LabelComponent,
1789
+ FeedbackTextComponent,
1790
+ TextComponent,
1791
+ CheckboxComponent,
1792
+ TagComponent,
1793
+ TediTranslationPipe,
1794
+ ], standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
1795
+ class: "tedi-select tedi-select--multiselect",
1796
+ }, providers: [
1797
+ {
1798
+ provide: NG_VALUE_ACCESSOR,
1799
+ useExisting: forwardRef(() => MultiselectComponent),
1800
+ multi: true,
1801
+ },
1802
+ ], template: "@let listboxId = inputId() + \"-listbox\";\n@let labelId = inputId() + \"-label\";\n\n@if (label()) {\n <label\n [id]=\"labelId\"\n tedi-label\n [for]=\"inputId()\"\n [required]=\"required()\"\n [size]=\"size()\"\n >\n {{ label() }}\n </label>\n}\n<div\n [id]=\"inputId()\"\n class=\"tedi-select__trigger\"\n [class.tedi-input--disabled]=\"disabled()\"\n tedi-input\n cdkOverlayOrigin\n #trigger=\"cdkOverlayOrigin\"\n role=\"combobox\"\n aria-haspopup=\"listbox\"\n [attr.aria-expanded]=\"isOpen()\"\n [attr.aria-controls]=\"listboxId\"\n [attr.aria-labelledby]=\"labelId\"\n [tabindex]=\"disabled() ? -1 : 0\"\n [state]=\"state()\"\n [size]=\"size()\"\n (click)=\"toggleIsOpen()\"\n (keydown.enter)=\"toggleIsOpen()\"\n (keydown.space)=\"$event.preventDefault(); toggleIsOpen()\"\n (keydown.arrowdown)=\"$event.preventDefault(); toggleIsOpen()\"\n (blur)=\"onTouched()\"\n>\n <span class=\"tedi-select__label\">\n @if (selectedOptions().length) {\n <div\n class=\"tedi-select__multiselect-container\"\n [class.tedi-select__multiselect-container--single-row]=\"!multiRow()\"\n >\n @for (value of selectedOptions(); track value) {\n <tedi-tag\n [closable]=\"clearableTags()\"\n (closed)=\"deselect($event, value)\"\n >\n {{ getLabel(value) }}\n </tedi-tag>\n }\n </div>\n } @else {\n <span class=\"tedi-select__label--placeholder\">\n {{ placeholder() }}\n </span>\n }\n </span>\n\n @if (clearable() && selectedOptions().length) {\n <button\n class=\"tedi-select__clear\"\n tedi-closing-button\n type=\"button\"\n size=\"small\"\n [iconSize]=\"18\"\n title=\"Clear\"\n (click)=\"clear($event)\"\n ></button>\n }\n\n <tedi-icon class=\"tedi-select__arrow\" name=\"arrow_drop_down\" />\n</div>\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"isOpen()\"\n [cdkConnectedOverlayHasBackdrop]=\"true\"\n cdkConnectedOverlayBackdropClass=\"cdk-overlay-transparent-backdrop\"\n (backdropClick)=\"toggleIsOpen(false)\"\n (detach)=\"toggleIsOpen(false)\"\n>\n <tedi-card\n class=\"tedi-select__dropdown\"\n spacing=\"none\"\n [style.width.px]=\"dropdownWidth()\"\n >\n <tedi-card-content>\n <ul\n [id]=\"listboxId\"\n class=\"tedi-select__options\"\n cdkListbox\n cdkListboxMultiple\n [cdkListboxValue]=\"selectedOptions()\"\n (cdkListboxValueChange)=\"handleValueChange($event)\"\n #listbox=\"cdkListbox\"\n >\n @if (options().length) {\n @if (selectAll()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"specialOptionControls.SELECT_ALL\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"inputId() + '-select-all'\"\n [checked]=\"allOptionsSelected()\"\n >\n {{ \"select.select-all\" | tediTranslate }}\n </tedi-checkbox>\n </li>\n }\n\n @for (group of optionGroups(); track $index) {\n @if (group.label.length) {\n @if (selectableGroups()) {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name tedi-select__group-name--selectable\"\n [cdkOption]=\"specialOptionControls.SELECTGROUP + group.label\"\n >\n <div class=\"tedi-select__group-checkbox\">\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'group-' + group.label\"\n [checked]=\"isGroupSelected(group.label)\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </tedi-checkbox>\n </div>\n </li>\n } @else {\n <li\n tedi-dropdown-item\n class=\"tedi-select__group-name\"\n role=\"presentation\"\n >\n <span tedi-text color=\"tertiary\">\n {{ group.label }}\n </span>\n </li>\n }\n }\n\n @for (option of group.options; track option.value()) {\n <li\n tedi-dropdown-item\n [cdkOption]=\"option.value()\"\n [cdkOptionDisabled]=\"option.disabled()\"\n [disabled]=\"option.disabled()\"\n >\n <tedi-checkbox\n class=\"tedi-select__multiselect-checkbox\"\n [inputId]=\"'option-' + option.value()\"\n [checked]=\"isOptionSelected(option.value())\"\n >\n @if (option.templateRef(); as optionTemplate) {\n <span class=\"tedi-select__dropdown-item--custom-content\">\n <ng-container [ngTemplateOutlet]=\"optionTemplate\" />\n </span>\n <span class=\"tedi-select__dropdown-item--label\">\n {{ option.label() }}\n </span>\n } @else {\n {{ option.label() }}\n }\n </tedi-checkbox>\n </li>\n }\n }\n } @else {\n <li tedi-dropdown-item class=\"tedi-select__no-options\">\n {{ \"select.no-options\" | tediTranslate }}\n </li>\n }\n </ul>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-select{display:block;width:100%}.tedi-select{--_inner-gap: var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select{--_inner-gap: var(--form-field-inner-spacing-desktop)}}.tedi-select__trigger{display:flex;width:100%;justify-content:space-between}.tedi-select__label{overflow:hidden;text-align:left;flex-grow:1;cursor:default}.tedi-select__label--placeholder{pointer-events:none;color:var(--_placeholder-color)}.tedi-select__clear{padding:0;margin:0;border:none;background:none;flex-grow:0;color:var(--button-close-text-default);cursor:pointer}.tedi-select__clear+.tedi-select__arrow{border-left:1px solid var(--general-border-primary)}.tedi-select__arrow{flex-grow:0;cursor:default}.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{padding-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-select__arrow{margin-left:var(--form-field-inner-spacing-desktop)}}.tedi-select__dropdown{box-shadow:0 1px 5px 0 var(--alpha-20);max-height:300px;overflow-y:auto}.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-top:var(--form-field-outer-spacing-desktop)}}.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-select__dropdown{margin-bottom:var(--form-field-outer-spacing-desktop)}}.tedi-select__options{margin:0;padding:0}.tedi-select__options:focus .cdk-option-active{background:var(--dropdown-item-hover-background);color:var(--dropdown-item-hover-text)}.tedi-select__dropdown-item--label{display:none}.tedi-select__dropdown-item--custom-content:empty+.tedi-select__dropdown-item--label{display:block}.tedi-select__group-name{display:block;text-transform:uppercase;letter-spacing:0px;padding:8px 12px 4px}.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-weight:var(--heading-subtitle-small-weight-desktop)}}.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-mobile)}@media (min-width: 576px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-tablet)}}@media (min-width: 992px){.tedi-select__group-name{font-size:var(--heading-subtitle-small-size-desktop)}}.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-mobile)}@media (min-width: 576px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-tablet)}}@media (min-width: 992px){.tedi-select__group-name{line-height:var(--heading-subtitle-small-line-height-desktop)}}.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-mobile)}@media (min-width: 576px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-tablet)}}@media (min-width: 992px){.tedi-select__group-name--selectable~.tedi-dropdown-item:not(.tedi-select__group-name){padding-left:var(--form-checkbox-radio-subitem-padding-left-desktop)}}.tedi-select--multiselect .tedi-select__trigger{align-items:flex-start}.tedi-select__multiselect-container{display:flex;flex-wrap:wrap;gap:var(--_inner-gap)}.tedi-select__multiselect-container--single-row{overflow:hidden;flex-wrap:nowrap}.tedi-select__multiselect-container--single-row .tedi-tag{flex-shrink:0}.tedi-select__multiselect-container--single-row .tedi-tag__content{white-space:nowrap}.tedi-select__multiselect-checkbox{pointer-events:none}\n"] }]
1803
+ }], propDecorators: { onWindowResize: [{
1804
+ type: HostListener,
1805
+ args: ["window:resize"]
1806
+ }] } });
1807
+
1808
+ class TextareaComponent extends InputComponent {
1809
+ /**
1810
+ * Whether the textarea should be resizable in the X direction.
1811
+ * @default false
1812
+ */
1813
+ resizeX = input(false);
1814
+ /**
1815
+ * Whether the textarea should be resizable in the Y direction.
1816
+ * @default true
1817
+ */
1818
+ resizeY = input(true);
1819
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TextareaComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
1820
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: TextareaComponent, isStandalone: true, selector: "[tedi-textarea]", inputs: { resizeX: { classPropertyName: "resizeX", publicName: "resizeX", isSignal: true, isRequired: false, transformFunction: null }, resizeY: { classPropertyName: "resizeY", publicName: "resizeY", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-textarea": "true", "class.tedi-textarea--resizeX": "this.resizeX()", "class.tedi-textarea--resizeY": "this.resizeY()" } }, usesInheritance: true, ngImport: i0, template: "<ng-content />", isInline: true, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n", ".tedi-textarea{width:100%;resize:none}.tedi-textarea{min-height:var(--form-textarea-min-height-mobile)}@media (min-width: 576px){.tedi-textarea{min-height:var(--form-textarea-min-height-tablet)}}@media (min-width: 992px){.tedi-textarea{min-height:var(--form-textarea-min-height-desktop)}}.tedi-textarea{padding:var(--form-field-padding-y-md-default-mobile) var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-tablet) var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-desktop) var(--form-field-padding-x-md-default-desktop)}}.tedi-textarea--resizeX{resize:horizontal}.tedi-textarea--resizeY{resize:vertical}.tedi-textarea--resizeY.tedi-textarea--resizeX{resize:both}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
1821
+ }
1822
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TextareaComponent, decorators: [{
1823
+ type: Component,
1824
+ args: [{ selector: "[tedi-textarea]", standalone: true, template: "<ng-content />", encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
1825
+ "[class.tedi-textarea]": "true",
1826
+ "[class.tedi-textarea--resizeX]": "this.resizeX()",
1827
+ "[class.tedi-textarea--resizeY]": "this.resizeY()",
1828
+ }, styles: [".tedi-input{--_border-color: var(--form-input-border-default);--_color: var(--form-input-text-filled);--_background-color: var(--form-input-background-default);--_placeholder-color: var(--form-input-text-placeholder);padding:var(--_padding-y) var(--_padding-x);border-radius:var(--_border-radius);font-size:var(--_font-size);line-height:var(--_line-height);border:1px solid;border-color:var(--_border-color);color:var(--_color);background-color:var(--_background-color);margin-bottom:var(--_form-field-outer-gap)}.tedi-input{font-family:var(--family-primary-mobile)}@media (min-width: 992px){.tedi-input{font-family:var(--family-primary-desktop)}}.tedi-input{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-input{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-input{--_border-radius: var(--form-field-radius-desktop)}}.tedi-input{--_font-size: var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-input{--_font-size: var(--body-regular-size-desktop)}}.tedi-input{--_line-height: var(--body-regular-line-height-mobile)}@media (min-width: 992px){.tedi-input{--_line-height: var(--body-regular-line-height-desktop)}}.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-y: var(--form-field-padding-y-md-default-desktop)}}.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-input{--_padding-x: var(--form-field-padding-x-md-default-desktop)}}.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-input{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-input:focus,.tedi-input:active{border-color:var(--form-input-border-hover);box-shadow:inset 0 0 0 1px var(--form-input-border-hover)}.tedi-input:hover{--_border-color: var(--form-input-border-hover)}.tedi-input:disabled,.tedi-input--disabled{--_color: var(--form-input-text-disabled);--_border-color: var(--form-input-border-disabled);--_background-color: var(--form-input-background-disabled);pointer-events:none}.tedi-input::placeholder{color:var(--_placeholder-color)}.tedi-input--error:not(:disabled){--_border-color: var(--form-general-feedback-error-border)}.tedi-input--error:not(:disabled):focus,.tedi-input--error:not(:disabled):active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-input--valid:not(:disabled){--_border-color: var(--form-general-feedback-success-border)}.tedi-input--valid:not(:disabled):focus,.tedi-input--valid:not(:disabled):active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-input--small{--_padding-y: var(--form-field-padding-y-sm-desktop)}}\n", ".tedi-textarea{width:100%;resize:none}.tedi-textarea{min-height:var(--form-textarea-min-height-mobile)}@media (min-width: 576px){.tedi-textarea{min-height:var(--form-textarea-min-height-tablet)}}@media (min-width: 992px){.tedi-textarea{min-height:var(--form-textarea-min-height-desktop)}}.tedi-textarea{padding:var(--form-field-padding-y-md-default-mobile) var(--form-field-padding-x-md-default-mobile)}@media (min-width: 576px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-tablet) var(--form-field-padding-x-md-default-tablet)}}@media (min-width: 992px){.tedi-textarea{padding:var(--form-field-padding-y-md-default-desktop) var(--form-field-padding-x-md-default-desktop)}}.tedi-textarea--resizeX{resize:horizontal}.tedi-textarea--resizeY{resize:vertical}.tedi-textarea--resizeY.tedi-textarea--resizeX{resize:both}\n"] }]
1829
+ }] });
1830
+
1831
+ class SearchComponent {
1832
+ /**
1833
+ * Search input ID for accessibility
1834
+ */
1835
+ inputId = input.required();
1836
+ /**
1837
+ * Autocomplete options for the search input
1838
+ * @default []
1839
+ */
1840
+ autocompleteOptions = input([]);
1841
+ /**
1842
+ * Minimum number of characters to trigger autocomplete
1843
+ * @default 3
1844
+ */
1845
+ autocompleteFrom = input();
1846
+ /**
1847
+ * Size of the search component
1848
+ * @default "default"
1849
+ */
1850
+ size = input("default");
1851
+ /**
1852
+ * Input state for validation
1853
+ * @default "default"
1854
+ */
1855
+ state = input("default");
1856
+ /**
1857
+ * Should the search button be shown
1858
+ * @default false
1859
+ */
1860
+ withButton = input(false);
1861
+ /**
1862
+ * Add text to the search button
1863
+ * @default undefined
1864
+ */
1865
+ buttonText = input(undefined);
1866
+ /**
1867
+ * Should the search input be clearable
1868
+ * @default true
1869
+ */
1870
+ clearable = input(true);
1871
+ /**
1872
+ * Text to show when no results are found
1873
+ * @default "Vasteid ei leitud"
1874
+ */
1875
+ noResultText = input("Vasteid ei leitud");
1876
+ /**
1877
+ * Should the searc input be disabled
1878
+ * @default false
1879
+ */
1880
+ disabled = input(false);
1881
+ /**
1882
+ * Placeholder text for the search input
1883
+ * @default ""
1884
+ */
1885
+ placeholder = input("");
1886
+ /**
1887
+ * Should the search input show a loading spinner
1888
+ * @default false
1889
+ */
1890
+ loading = input(false);
1891
+ /**
1892
+ * Label for the search input
1893
+ * @default undefined
1894
+ */
1895
+ label = input();
1896
+ /**
1897
+ * Feedback text component for displaying messages
1898
+ * @default undefined
1899
+ */
1900
+ feedbackText = input();
1901
+ // Emitted events
1902
+ searchEvent = output();
1903
+ clearEvent = output();
1904
+ _inputValue = model();
1905
+ _selectedOption = model();
1906
+ _width = signal(0);
1907
+ _elementRef = inject(ElementRef);
1908
+ _disabled = signal(false);
1909
+ _isVisible = signal(false);
1910
+ _cdkMenuRef = viewChild(CdkMenu, { read: ElementRef });
1911
+ _overlayOriginRef = viewChild(CdkOverlayOrigin, { read: ElementRef });
1912
+ modifierClasses = computed(() => {
1913
+ const modifiers = [];
1914
+ if (this.size())
1915
+ modifiers.push(`tedi-search--${this.size()}`);
1916
+ if (this.state())
1917
+ modifiers.push(`tedi-search--${this.state()}`);
1918
+ return modifiers.join(" ");
1919
+ });
1920
+ ngAfterContentChecked() {
1921
+ this._width.set(this.getWidth());
1922
+ }
1923
+ inputChanged(inputValue) {
1924
+ const selected = this._selectedOption();
1925
+ // Clear selected option if input value is changed and is not matching the selected option
1926
+ if (selected && inputValue !== selected.label) {
1927
+ this._selectedOption.set(undefined);
1928
+ }
1929
+ this.handleOverlayOpen();
1930
+ this.onChange(inputValue);
1931
+ }
1932
+ focusInput() {
1933
+ this.handleOverlayOpen();
1934
+ }
1935
+ // Logic to show/hide the autocomplete dropdown
1936
+ handleOverlayOpen() {
1937
+ const inputValue = this._inputValue();
1938
+ const autocompleteFrom = this.autocompleteFrom();
1939
+ const baseRules = !this.withButton() && !this._selectedOption();
1940
+ const showAutocompleteIfLength = autocompleteFrom && inputValue && inputValue.length >= autocompleteFrom;
1941
+ if (baseRules && (showAutocompleteIfLength || autocompleteFrom === 0)) {
1942
+ this._isVisible.set(true);
1943
+ }
1944
+ else {
1945
+ this._isVisible.set(false);
1946
+ }
1947
+ }
1948
+ // Filter the autocomplete options based on the input value
1949
+ _foundOptions = computed(() => {
1950
+ const inputValue = this._inputValue();
1951
+ if (!inputValue)
1952
+ return this.autocompleteOptions();
1953
+ return this.autocompleteOptions().filter((option) => {
1954
+ const searchString = inputValue.toLowerCase().split(" ");
1955
+ return searchString.every((searchTerm) => option.label.toLowerCase().includes(searchTerm) ||
1956
+ option.description?.toLowerCase().includes(searchTerm));
1957
+ });
1958
+ });
1959
+ iconSize = computed(() => {
1960
+ const size = this.size();
1961
+ const hasButton = this.withButton();
1962
+ const hasButtonText = !!this.buttonText();
1963
+ if (size === "large") {
1964
+ if (hasButton && hasButtonText)
1965
+ return 18;
1966
+ return 24;
1967
+ }
1968
+ else if (size === "small") {
1969
+ if (hasButton)
1970
+ return 18;
1971
+ return 16;
1972
+ }
1973
+ else {
1974
+ return 18;
1975
+ }
1976
+ });
1977
+ buttonSize = computed(() => {
1978
+ switch (this.size()) {
1979
+ case "large":
1980
+ return "default";
1981
+ case "small":
1982
+ return "small";
1983
+ default:
1984
+ return "default";
1985
+ }
1986
+ });
1987
+ // ControlValueAccessor methods
1988
+ onChange = () => { };
1989
+ onTouched = () => { };
1990
+ writeValue(value) {
1991
+ if (typeof value === "string") {
1992
+ this._inputValue.set(value);
1993
+ this._selectedOption.set(undefined);
1994
+ }
1995
+ else {
1996
+ this._inputValue.set(value?.label || "");
1997
+ this._selectedOption.set(value);
1998
+ }
1999
+ }
2000
+ registerOnChange(fn) {
2001
+ this.onChange = fn;
2002
+ }
2003
+ registerOnTouched(fn) {
2004
+ this.onTouched = fn;
2005
+ }
2006
+ setDisabledState(isDisabled) {
2007
+ this._disabled.set(isDisabled);
2008
+ }
2009
+ searchButtonClick() {
2010
+ this.searchEvent.emit(this._selectedOption() ?? this._inputValue() ?? "");
2011
+ this.onChange(this._selectedOption() ?? this._inputValue() ?? "");
2012
+ this.onTouched();
2013
+ }
2014
+ selectResult(option) {
2015
+ this._selectedOption.set(option);
2016
+ this._inputValue.set(option.label);
2017
+ // Emit the selected option if the search button is not shown
2018
+ if (!this.withButton()) {
2019
+ this.searchEvent.emit(option);
2020
+ this.onChange(option);
2021
+ }
2022
+ this.onTouched();
2023
+ this.closeOverlay(true);
2024
+ }
2025
+ clearResult() {
2026
+ this._inputValue.set("");
2027
+ this._selectedOption.set(undefined);
2028
+ this.searchEvent.emit("");
2029
+ this.onChange("");
2030
+ this.onTouched();
2031
+ this.clearEvent.emit();
2032
+ }
2033
+ focusDropdown(event) {
2034
+ // Prevent default behavior and stop propagation if event is provided
2035
+ if (event) {
2036
+ event.preventDefault();
2037
+ event.stopPropagation();
2038
+ }
2039
+ const dropdownToFocus = this._cdkMenuRef();
2040
+ if (dropdownToFocus) {
2041
+ dropdownToFocus.nativeElement.focus();
2042
+ }
2043
+ }
2044
+ closeOverlay(focusBackToInput) {
2045
+ this._isVisible.set(false);
2046
+ if (focusBackToInput) {
2047
+ this._overlayOriginRef()?.nativeElement?.focus();
2048
+ }
2049
+ }
2050
+ getWidth() {
2051
+ return this._elementRef?.nativeElement?.getBoundingClientRect()?.width || 0;
2052
+ }
2053
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2054
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: SearchComponent, isStandalone: true, selector: "tedi-search", inputs: { inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: true, transformFunction: null }, autocompleteOptions: { classPropertyName: "autocompleteOptions", publicName: "autocompleteOptions", isSignal: true, isRequired: false, transformFunction: null }, autocompleteFrom: { classPropertyName: "autocompleteFrom", publicName: "autocompleteFrom", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, withButton: { classPropertyName: "withButton", publicName: "withButton", isSignal: true, isRequired: false, transformFunction: null }, buttonText: { classPropertyName: "buttonText", publicName: "buttonText", isSignal: true, isRequired: false, transformFunction: null }, clearable: { classPropertyName: "clearable", publicName: "clearable", isSignal: true, isRequired: false, transformFunction: null }, noResultText: { classPropertyName: "noResultText", publicName: "noResultText", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, feedbackText: { classPropertyName: "feedbackText", publicName: "feedbackText", isSignal: true, isRequired: false, transformFunction: null }, _inputValue: { classPropertyName: "_inputValue", publicName: "_inputValue", isSignal: true, isRequired: false, transformFunction: null }, _selectedOption: { classPropertyName: "_selectedOption", publicName: "_selectedOption", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchEvent: "searchEvent", clearEvent: "clearEvent", _inputValue: "_inputValueChange", _selectedOption: "_selectedOptionChange" }, host: { properties: { "class.tedi-search": "true", "class.tedi-search--with-button": "withButton()", "class.tedi-search--with-button-text": "!!buttonText()", "class.tedi-search--disabled": "_disabled()", "class": "modifierClasses()" } }, providers: [
2055
+ {
2056
+ provide: NG_VALUE_ACCESSOR,
2057
+ useExisting: forwardRef(() => SearchComponent),
2058
+ multi: true,
2059
+ },
2060
+ ], viewQueries: [{ propertyName: "_cdkMenuRef", first: true, predicate: CdkMenu, descendants: true, read: ElementRef, isSignal: true }, { propertyName: "_overlayOriginRef", first: true, predicate: CdkOverlayOrigin, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n}\n\n<div class=\"tedi-search__container\">\n <input\n cdkOverlayOrigin\n [id]=\"inputId()\"\n class=\"tedi-search__input\"\n type=\"text\"\n [(ngModel)]=\"_inputValue\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"_disabled()\"\n (focus)=\"focusInput()\"\n (keydown.enter)=\"focusDropdown($event)\"\n (keydown.arrowDown)=\"focusDropdown($event)\"\n (ngModelChange)=\"inputChanged($event)\"\n (blur)=\"onTouched()\"\n #trigger=\"cdkOverlayOrigin\"\n />\n\n <div class=\"tedi-search__suffix\">\n @if (clearable() && _inputValue()) {\n <button\n type=\"reset\"\n tedi-closing-button\n [size]=\"size() === 'large' ? 'default' : 'small'\"\n [iconSize]=\"size() === 'large' ? 24 : 18\"\n (click)=\"$event.stopPropagation(); clearResult()\"\n ></button>\n @if (!withButton()) {\n <div class=\"tedi-search__suffix-separator\"></div>\n }\n }\n @if (!withButton()) {\n @if (!loading()) {\n <tedi-icon\n class=\"tedi-search__search-icon\"\n name=\"search\"\n color=\"secondary\"\n [size]=\"iconSize()\"\n />\n } @else {\n <tedi-spinner />\n }\n }\n </div>\n\n @if (withButton()) {\n @if (loading()) {\n <tedi-spinner />\n }\n <button\n tedi-button\n class=\"tedi-search__trigger\"\n [size]=\"buttonSize()\"\n (click)=\"searchButtonClick()\"\n [disabled]=\"_disabled()\"\n >\n <tedi-icon name=\"search\" color=\"white\" [size]=\"iconSize()\" />\n {{ buttonText() }}\n </button>\n }\n</div>\n\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"_isVisible()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n (overlayOutsideClick)=\"closeOverlay(false)\"\n (overlayKeydown)=\"$event.key === 'Escape' ? closeOverlay(true) : null\"\n #searchPanel\n>\n <tedi-card class=\"tedi-search__panel\" [style.width.px]=\"_width()\">\n @if (loading()) {\n <tedi-card-content padding=\"md\" [hasSeparator]=\"true\">\n <tedi-spinner />\n </tedi-card-content>\n } @else if (_foundOptions().length) {\n <tedi-card-content padding=\"none\" [hasSeparator]=\"true\" cdkMenu>\n @for (option of _foundOptions(); track option.value) {\n <button\n cdkMenuItem\n tedi-dropdown-item\n [value]=\"option.value\"\n [selected]=\"option.value === _selectedOption()?.value\"\n (click)=\"selectResult(option)\"\n #autocompleteOption\n >\n @if (option.description) {\n <strong>{{ option.label }}</strong> \u00B7 {{ option.description }}\n } @else {\n {{ option.label }}\n }\n </button>\n }\n </tedi-card-content>\n } @else {\n <tedi-card-content [hasSeparator]=\"true\" padding=\"md\">\n {{ noResultText() }}\n </tedi-card-content>\n }\n\n <tedi-card-content class=\"tedi-search__footer-content\" padding=\"md\">\n <ng-content></ng-content>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-search{--_border-color: var(--form-input-border-default)}.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__container{display:flex;border:1px solid;align-items:center;border-color:var(--_border-color);border-radius:var(--_border-radius);margin-bottom:var(--_form-field-outer-gap)}.tedi-search__container{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-search__container{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-search__container{--_border-radius: var(--form-field-radius-desktop)}}.tedi-search__container{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-search__container{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-search__container{gap:var(--form-field-inner-spacing-desktop)}}.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-desktop)}}.tedi-search__container:hover{--_border-color: var(--form-input-border-hover)}.tedi-search__container:focus-within{--_border-color: var(--form-input-border-active);box-shadow:0 0 0 1px var(--form-input-border-active)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:hover{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus-within{--_border-color: var(--form-general-feedback-error-border);box-shadow:0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:hover{border-color:var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus-within{border-color:var(--form-general-feedback-success-border);box-shadow:0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search__input{width:100%;flex-grow:1;border:0;padding:var(--_padding);padding-right:0;margin:0;border-radius:var(--_border-radius);border-top-right-radius:0;border-bottom-right-radius:0;letter-spacing:0px}.tedi-search__input{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-search__input{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-search__input{font-weight:var(--body-regular-weight-desktop)}}.tedi-search__input{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-search__input{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-search__input{font-size:var(--body-regular-size-desktop)}}.tedi-search__input{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-search__input{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-search__input{line-height:var(--body-regular-line-height-desktop)}}.tedi-search__trigger.tedi-button{border-radius:var(--_border-radius);border-top-left-radius:0;border-bottom-left-radius:0;align-self:stretch}.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-mobile)}@media (min-width: 576px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-tablet)}}@media (min-width: 992px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-desktop)}}.tedi-search__suffix{display:flex;align-self:stretch;align-items:center;padding:0 var(--_padding)}.tedi-search__suffix{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-desktop)}}.tedi-search--with-button .tedi-search__suffix{padding:0}.tedi-search__suffix-separator{width:1px;border-left:1px solid var(--general-border-primary);height:1em}.tedi-search__panel{margin:var(--_form-outer-gap) 0;max-height:300px;overflow-y:auto}.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__footer-content:empty{display:none}.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-desktop)}}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button{height:auto;width:56px}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button .tedi-icon--size-24{font-size:var(--icon-05-desktop)}.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-mobile)}@media (min-width: 576px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-tablet)}}@media (min-width: 992px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-desktop)}}.tedi-search--disabled .tedi-search__container{background-color:var(--form-input-background-disabled);border-color:var(--form-input-border-disabled)}.tedi-search--disabled .tedi-search__input{background-color:var(--form-input-background-disabled);pointer-events:none}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "ngmodule", type: CdkMenuModule }, { kind: "directive", type: i2$1.CdkMenu, selector: "[cdkMenu]", outputs: ["closed"], exportAs: ["cdkMenu"] }, { kind: "directive", type: i2$1.CdkMenuItem, selector: "[cdkMenuItem]", inputs: ["cdkMenuItemDisabled", "cdkMenuitemTypeaheadLabel"], outputs: ["cdkMenuItemTriggered"], exportAs: ["cdkMenuItem"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }, { kind: "directive", type: i2.CdkOverlayOrigin, selector: "[cdk-overlay-origin], [overlay-origin], [cdkOverlayOrigin]", exportAs: ["cdkOverlayOrigin"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: DropdownItemComponent, selector: "[tedi-dropdown-item]", inputs: ["selected", "disabled"], outputs: ["itemSelected"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "ngmodule", type: A11yModule }, { kind: "component", type: SpinnerComponent, selector: "tedi-spinner", inputs: ["size", "color", "label"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: LabelComponent, selector: "label[tedi-label]", inputs: ["size", "required"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2061
+ }
2062
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: SearchComponent, decorators: [{
2063
+ type: Component,
2064
+ args: [{ selector: "tedi-search", standalone: true, imports: [
2065
+ FormsModule,
2066
+ ButtonComponent,
2067
+ IconComponent,
2068
+ CdkMenuModule,
2069
+ OverlayModule,
2070
+ CardComponent,
2071
+ CardContentComponent,
2072
+ DropdownItemComponent,
2073
+ ClosingButtonComponent,
2074
+ A11yModule,
2075
+ SpinnerComponent,
2076
+ FeedbackTextComponent,
2077
+ LabelComponent,
2078
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
2079
+ "[class.tedi-search]": "true",
2080
+ "[class.tedi-search--with-button]": "withButton()",
2081
+ "[class.tedi-search--with-button-text]": "!!buttonText()",
2082
+ "[class.tedi-search--disabled]": "_disabled()",
2083
+ "[class]": "modifierClasses()",
2084
+ }, providers: [
2085
+ {
2086
+ provide: NG_VALUE_ACCESSOR,
2087
+ useExisting: forwardRef(() => SearchComponent),
2088
+ multi: true,
2089
+ },
2090
+ ], template: "@if (label()) {\n <label tedi-label [for]=\"inputId()\">\n {{ label() }}\n </label>\n}\n\n<div class=\"tedi-search__container\">\n <input\n cdkOverlayOrigin\n [id]=\"inputId()\"\n class=\"tedi-search__input\"\n type=\"text\"\n [(ngModel)]=\"_inputValue\"\n [placeholder]=\"placeholder()\"\n [disabled]=\"_disabled()\"\n (focus)=\"focusInput()\"\n (keydown.enter)=\"focusDropdown($event)\"\n (keydown.arrowDown)=\"focusDropdown($event)\"\n (ngModelChange)=\"inputChanged($event)\"\n (blur)=\"onTouched()\"\n #trigger=\"cdkOverlayOrigin\"\n />\n\n <div class=\"tedi-search__suffix\">\n @if (clearable() && _inputValue()) {\n <button\n type=\"reset\"\n tedi-closing-button\n [size]=\"size() === 'large' ? 'default' : 'small'\"\n [iconSize]=\"size() === 'large' ? 24 : 18\"\n (click)=\"$event.stopPropagation(); clearResult()\"\n ></button>\n @if (!withButton()) {\n <div class=\"tedi-search__suffix-separator\"></div>\n }\n }\n @if (!withButton()) {\n @if (!loading()) {\n <tedi-icon\n class=\"tedi-search__search-icon\"\n name=\"search\"\n color=\"secondary\"\n [size]=\"iconSize()\"\n />\n } @else {\n <tedi-spinner />\n }\n }\n </div>\n\n @if (withButton()) {\n @if (loading()) {\n <tedi-spinner />\n }\n <button\n tedi-button\n class=\"tedi-search__trigger\"\n [size]=\"buttonSize()\"\n (click)=\"searchButtonClick()\"\n [disabled]=\"_disabled()\"\n >\n <tedi-icon name=\"search\" color=\"white\" [size]=\"iconSize()\" />\n {{ buttonText() }}\n </button>\n }\n</div>\n\n@if (feedbackText(); as feedback) {\n <tedi-feedback-text\n [text]=\"feedback.text\"\n [type]=\"feedback.type\"\n [position]=\"feedback.position\"\n />\n}\n\n<ng-template\n cdkConnectedOverlay\n [cdkConnectedOverlayOrigin]=\"trigger\"\n [cdkConnectedOverlayOpen]=\"_isVisible()\"\n [cdkConnectedOverlayDisableClose]=\"true\"\n (overlayOutsideClick)=\"closeOverlay(false)\"\n (overlayKeydown)=\"$event.key === 'Escape' ? closeOverlay(true) : null\"\n #searchPanel\n>\n <tedi-card class=\"tedi-search__panel\" [style.width.px]=\"_width()\">\n @if (loading()) {\n <tedi-card-content padding=\"md\" [hasSeparator]=\"true\">\n <tedi-spinner />\n </tedi-card-content>\n } @else if (_foundOptions().length) {\n <tedi-card-content padding=\"none\" [hasSeparator]=\"true\" cdkMenu>\n @for (option of _foundOptions(); track option.value) {\n <button\n cdkMenuItem\n tedi-dropdown-item\n [value]=\"option.value\"\n [selected]=\"option.value === _selectedOption()?.value\"\n (click)=\"selectResult(option)\"\n #autocompleteOption\n >\n @if (option.description) {\n <strong>{{ option.label }}</strong> \u00B7 {{ option.description }}\n } @else {\n {{ option.label }}\n }\n </button>\n }\n </tedi-card-content>\n } @else {\n <tedi-card-content [hasSeparator]=\"true\" padding=\"md\">\n {{ noResultText() }}\n </tedi-card-content>\n }\n\n <tedi-card-content class=\"tedi-search__footer-content\" padding=\"md\">\n <ng-content></ng-content>\n </tedi-card-content>\n </tedi-card>\n</ng-template>\n", styles: [".tedi-search{--_border-color: var(--form-input-border-default)}.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search{--_form-field-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__container{display:flex;border:1px solid;align-items:center;border-color:var(--_border-color);border-radius:var(--_border-radius);margin-bottom:var(--_form-field-outer-gap)}.tedi-search__container{--_border-radius: var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-search__container{--_border-radius: var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-search__container{--_border-radius: var(--form-field-radius-desktop)}}.tedi-search__container{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-search__container{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-search__container{gap:var(--form-field-inner-spacing-desktop)}}.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-mobile)}@media (min-width: 576px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-tablet)}}@media (min-width: 992px){.tedi-search__container{--_padding: var(--form-field-padding-y-md-default-desktop)}}.tedi-search__container:hover{--_border-color: var(--form-input-border-hover)}.tedi-search__container:focus-within{--_border-color: var(--form-input-border-active);box-shadow:0 0 0 1px var(--form-input-border-active)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-error-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:hover{--_border-color: var(--form-general-feedback-error-border)}.tedi-search--error:not(.tedi-search--disabled) .tedi-search__container:focus-within{--_border-color: var(--form-general-feedback-error-border);box-shadow:0 0 0 1px var(--form-general-feedback-error-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container{--_border-color: var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus,.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:active{border-color:var(--form-general-feedback-success-border);box-shadow:inset 0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:hover{border-color:var(--form-general-feedback-success-border)}.tedi-search--valid:not(.tedi-search--disabled) .tedi-search__container:focus-within{border-color:var(--form-general-feedback-success-border);box-shadow:0 0 0 1px var(--form-general-feedback-success-border)}.tedi-search__input{width:100%;flex-grow:1;border:0;padding:var(--_padding);padding-right:0;margin:0;border-radius:var(--_border-radius);border-top-right-radius:0;border-bottom-right-radius:0;letter-spacing:0px}.tedi-search__input{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-search__input{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-search__input{font-weight:var(--body-regular-weight-desktop)}}.tedi-search__input{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-search__input{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-search__input{font-size:var(--body-regular-size-desktop)}}.tedi-search__input{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-search__input{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-search__input{line-height:var(--body-regular-line-height-desktop)}}.tedi-search__trigger.tedi-button{border-radius:var(--_border-radius);border-top-left-radius:0;border-bottom-left-radius:0;align-self:stretch}.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-mobile)}@media (min-width: 576px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-tablet)}}@media (min-width: 992px){.tedi-search__trigger.tedi-button{--_border-radius: var(--button-radius-sm-desktop)}}.tedi-search__suffix{display:flex;align-self:stretch;align-items:center;padding:0 var(--_padding)}.tedi-search__suffix{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-search__suffix{gap:var(--layout-grid-gutters-04-desktop)}}.tedi-search--with-button .tedi-search__suffix{padding:0}.tedi-search__suffix-separator{width:1px;border-left:1px solid var(--general-border-primary);height:1em}.tedi-search__panel{margin:var(--_form-outer-gap) 0;max-height:300px;overflow-y:auto}.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-mobile)}@media (min-width: 576px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-tablet)}}@media (min-width: 992px){.tedi-search__panel{--_form-outer-gap: var(--form-field-outer-spacing-desktop)}}.tedi-search__footer-content:empty{display:none}.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-search--small .tedi-search__container{--_padding: var(--form-field-padding-y-sm-desktop)}}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button{height:auto;width:56px}.tedi-search--large.tedi-search--with-button:not(.tedi-search--with-button-text) .tedi-search__trigger.tedi-button .tedi-icon--size-24{font-size:var(--icon-05-desktop)}.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-mobile)}@media (min-width: 576px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-tablet)}}@media (min-width: 992px){.tedi-search--large .tedi-search__container{--_padding: var(--form-field-padding-y-lg-desktop)}}.tedi-search--disabled .tedi-search__container{background-color:var(--form-input-background-disabled);border-color:var(--form-input-border-disabled)}.tedi-search--disabled .tedi-search__input{background-color:var(--form-input-background-disabled);pointer-events:none}\n"] }]
2091
+ }] });
2092
+
2093
+ const IECkiloBytes = 1024;
2094
+ const SIkiloBytes = 1000;
2095
+ const IECMegabytes = IECkiloBytes * IECkiloBytes;
2096
+ const SIMegabytes = SIkiloBytes * SIkiloBytes;
2097
+ var SIFileSize;
2098
+ (function (SIFileSize) {
2099
+ SIFileSize[SIFileSize["kB"] = 1000] = "kB";
2100
+ SIFileSize[SIFileSize["MB"] = 1000000] = "MB";
2101
+ })(SIFileSize || (SIFileSize = {}));
2102
+ var IECFileSize;
2103
+ (function (IECFileSize) {
2104
+ IECFileSize[IECFileSize["kB"] = 1024] = "kB";
2105
+ IECFileSize[IECFileSize["MB"] = 1048576] = "MB";
2106
+ })(IECFileSize || (IECFileSize = {}));
2107
+ const FileSizeStandards = {
2108
+ SI: SIFileSize,
2109
+ IEC: IECFileSize,
2110
+ };
2111
+
2112
+ function formatBytes(bytes, standard) {
2113
+ let kB = 0;
2114
+ let MB = 0;
2115
+ switch (standard) {
2116
+ case "IEC":
2117
+ kB = IECFileSize.kB;
2118
+ MB = IECFileSize.MB;
2119
+ break;
2120
+ case "SI":
2121
+ kB = SIFileSize.kB;
2122
+ MB = SIFileSize.MB;
2123
+ break;
2124
+ default:
2125
+ throw new Error(`Unknown filesize display standard: ${standard}`);
2126
+ }
2127
+ if (bytes >= MB) {
2128
+ const mbString = standard === "SI" ? "MB" : "MiB";
2129
+ return `${roundNumber(bytes / MB)} ${mbString}`;
2130
+ }
2131
+ if (bytes >= kB) {
2132
+ const bytesString = standard === "SI" ? "kB" : "KiB";
2133
+ return `${roundNumber(bytes / kB)} ${bytesString}`;
2134
+ }
2135
+ return `${bytes} B`;
2136
+ }
2137
+ function roundNumber(num, decimals = 2) {
2138
+ const rounded = num.toFixed(decimals);
2139
+ return rounded.includes(".") ? rounded.replace(/\.?0+$/, "") : rounded;
2140
+ }
2141
+ function getDefaultHelpers(accept, maxSize, standard, translate) {
2142
+ if (!translate)
2143
+ throw new Error("Translate function is required to generate default helpers.");
2144
+ const textArray = [];
2145
+ if (accept) {
2146
+ textArray.push(`${translate("file-upload.accept")} ${accept.replaceAll(",", ", ")}`);
2147
+ }
2148
+ if (maxSize) {
2149
+ textArray.push(`${translate("file-upload.max-size")} ${formatBytes(maxSize, standard)}`);
2150
+ }
2151
+ return textArray.filter(Boolean).join(". ");
2152
+ }
2153
+ function validateFileSize(maxSize, acceptFileTypes, file, standard, translate) {
2154
+ if (maxSize && file.size > maxSize) {
2155
+ const maxSizeMB = formatBytes(maxSize, standard);
2156
+ return translate(`file-upload.size-rejected-extended`, file.name, maxSizeMB);
2157
+ }
2158
+ return undefined;
2159
+ }
2160
+ function validateFileType(maxSize, acceptFileTypes, file, standard, translate) {
2161
+ if (acceptFileTypes) {
2162
+ const validTypes = acceptFileTypes
2163
+ .split(",")
2164
+ .map((type) => type.trim().toLowerCase());
2165
+ const fileType = file.type.toLowerCase();
2166
+ const fileName = file.name.toLowerCase() || "";
2167
+ const matches = validTypes.some((type) => {
2168
+ if (type.startsWith(".")) {
2169
+ return fileName.endsWith(type);
2170
+ }
2171
+ if (type.endsWith("/*")) {
2172
+ return fileType.startsWith(type.replace("/*", ""));
2173
+ }
2174
+ return fileType === type;
2175
+ });
2176
+ if (!matches) {
2177
+ return translate(`file-upload.extension-rejected-extended`, file.name, acceptFileTypes);
2178
+ }
2179
+ }
2180
+ return undefined;
2181
+ }
2182
+
2183
+ class FileDropzone {
2184
+ /*
2185
+ * Additional CSS class names to apply to the dropzone for custom styling
2186
+ */
2187
+ className;
2188
+ /*
2189
+ * The text label displayed for the file dropzone, providing context for users.
2190
+ */
2191
+ label;
2192
+ /*
2193
+ * Provides a tooltip (such as an error or instruction message) to guide the user.
2194
+ */
2195
+ helper;
2196
+ /*
2197
+ * Disables the file delete button, preventing user interaction.
2198
+ */
2199
+ disabled;
2200
+ /*
2201
+ * Per file status of the file set by validation.
2202
+ */
2203
+ fileStatus;
2204
+ /*
2205
+ * Possible additional properties for the file, such as metadata.
2206
+ */
2207
+ metaData;
2208
+ /*
2209
+ * The actual file object being uploaded.
2210
+ */
2211
+ file;
2212
+ constructor(file) {
2213
+ this.file = file;
2214
+ }
2215
+ get name() {
2216
+ return this.file.name;
2217
+ }
2218
+ get size() {
2219
+ return this.file.size;
2220
+ }
2221
+ get type() {
2222
+ return this.file.type;
2223
+ }
2224
+ }
2225
+
2226
+ class FileService {
2227
+ maxSize = signal(0).asReadonly();
2228
+ accept = signal("").asReadonly();
2229
+ mode = signal("append").asReadonly();
2230
+ validators = signal([]).asReadonly();
2231
+ sizeDisplayStandard = signal("IEC").asReadonly();
2232
+ uploadState = signal("none");
2233
+ _files = signal([]);
2234
+ _translateService = inject(TediTranslationService);
2235
+ get files() {
2236
+ return this._files.asReadonly();
2237
+ }
2238
+ async addFiles(files) {
2239
+ let newFiles = this.normalizeFiles(files);
2240
+ const currentFiles = this.files();
2241
+ switch (this.mode()) {
2242
+ case "append": {
2243
+ // index any duplicate name file
2244
+ newFiles = await this._renameDuplicates(currentFiles, newFiles);
2245
+ break;
2246
+ }
2247
+ case "replace": {
2248
+ // replace any files with the same name
2249
+ const filesToCheck = [...currentFiles, ...newFiles];
2250
+ const duplicateFiles = filesToCheck.filter((file, index, self) => self.findIndex((f) => f.name === file.name) !== index);
2251
+ if (duplicateFiles.length > 0) {
2252
+ newFiles = newFiles.filter((file) => !duplicateFiles.some((f) => f.name === file.name));
2253
+ }
2254
+ break;
2255
+ }
2256
+ }
2257
+ newFiles.push(...currentFiles);
2258
+ // remove old invalid files, fileStatus will not yet be set for new files
2259
+ if (this.uploadState() === "invalid") {
2260
+ newFiles = newFiles.filter((file) => file.fileStatus !== "invalid");
2261
+ }
2262
+ const error = this._checkErrorState(newFiles);
2263
+ this._files.set(newFiles);
2264
+ this.uploadState.set(this._getNewState(!!error.length));
2265
+ return error;
2266
+ }
2267
+ reValidateFiles() {
2268
+ const files = this.files();
2269
+ const error = this._checkErrorState(files);
2270
+ this.uploadState.set(this._getNewState(!!error.length));
2271
+ }
2272
+ normalizeFiles(files) {
2273
+ if (!files || files.length === 0) {
2274
+ return [];
2275
+ }
2276
+ const newFiles = files.map((file) => {
2277
+ if (file instanceof FileDropzone) {
2278
+ return file;
2279
+ }
2280
+ if (file instanceof File) {
2281
+ return new FileDropzone(file);
2282
+ }
2283
+ throw new Error("Invalid file type provided to addFiles");
2284
+ });
2285
+ return newFiles;
2286
+ }
2287
+ removeFiles(files) {
2288
+ if (!files || files.length === 0) {
2289
+ return [];
2290
+ }
2291
+ const newFiles = this.files().filter((file) => !files.includes(file));
2292
+ this._files.set(newFiles);
2293
+ const errors = this._checkErrorState(newFiles);
2294
+ if (errors.length) {
2295
+ this.uploadState.set("invalid");
2296
+ }
2297
+ else {
2298
+ this.uploadState.set(this._files.length > 0 ? "valid" : "none");
2299
+ }
2300
+ return errors;
2301
+ }
2302
+ _getNewState(error) {
2303
+ if (error) {
2304
+ return "invalid";
2305
+ }
2306
+ return this._files().length > 0 ? "valid" : "none";
2307
+ }
2308
+ _checkErrorState(files) {
2309
+ const errors = [];
2310
+ for (const file of files) {
2311
+ file.helper = undefined;
2312
+ const error = this.validators()
2313
+ .map((validator) => validator(this.maxSize(), this.accept(), file, this.sizeDisplayStandard(), this._translateService.translate.bind(this._translateService)))
2314
+ .filter((err) => err !== undefined);
2315
+ if (error.length) {
2316
+ errors.push(...error);
2317
+ file.helper = {
2318
+ type: "error",
2319
+ text: error.join(", "),
2320
+ };
2321
+ }
2322
+ file.fileStatus = error.length ? "invalid" : "valid";
2323
+ }
2324
+ return errors;
2325
+ }
2326
+ async _renameDuplicates(currentFiles, newFiles) {
2327
+ const renamedFiles = [];
2328
+ const fileNames = new Set(currentFiles.map((file) => file.name.toLowerCase()));
2329
+ for (const file of newFiles) {
2330
+ const maxCounter = 1000;
2331
+ let newName = file.name;
2332
+ let counter = 1;
2333
+ while (fileNames.has(newName.toLowerCase()) && counter < maxCounter) {
2334
+ // the .extension part of the file name unfortunately
2335
+ const [fileName, ...rest] = file.name.split(".");
2336
+ newName = `${fileName} (${counter}).${rest.join(".")}`;
2337
+ counter++;
2338
+ }
2339
+ fileNames.add(newName.toLowerCase());
2340
+ renamedFiles.push(await this._copyFile(file.file, newName));
2341
+ }
2342
+ return renamedFiles;
2343
+ }
2344
+ _copyFile(original, newName) {
2345
+ return original.arrayBuffer().then((buffer) => {
2346
+ const file = new File([buffer], newName ?? original.name, {
2347
+ type: original.type,
2348
+ lastModified: original.lastModified,
2349
+ });
2350
+ return new FileDropzone(file);
2351
+ });
2352
+ }
2353
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
2354
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileService });
2355
+ }
2356
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileService, decorators: [{
2357
+ type: Injectable
2358
+ }] });
2359
+
2360
+ class FileDropzoneComponent {
2361
+ /**
2362
+ * Specifies the allowed file types (e.g., "image/png, image/jpeg").
2363
+ *
2364
+ * Does not validate the contents of the file, only the file extension.
2365
+ *
2366
+ * https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/accept
2367
+ **/
2368
+ accept = input("");
2369
+ /**
2370
+ * The maximum file size allowed for upload, in bytes.
2371
+ * @default 0 (no limit)
2372
+ **/
2373
+ maxSize = input(0);
2374
+ /**
2375
+ * Specifies the standard to use when displaying file sizes or maximum file size.
2376
+ * Options are "SI" (base 10) or "IEC" (base 2).
2377
+ *
2378
+ * SI units are in multiples of 1000 (e.g., 1 kB = 1000 bytes).
2379
+ *
2380
+ * IEC units are in multiples of 1024 (e.g., 1 KiB = 1024 bytes).
2381
+ * @default "IEC"
2382
+ *
2383
+ * https://wiki.ubuntu.com/UnitsPolicy
2384
+ */
2385
+ sizeDisplayStandard = input("IEC");
2386
+ /**
2387
+ * Determines if multiple files can be uploaded at once via the file picker.
2388
+ *
2389
+ * https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/multiple
2390
+ * @default false
2391
+ **/
2392
+ multiple = input(false);
2393
+ /**
2394
+ * If true, each file is validated separately instead of rejecting all at once.
2395
+ @default false
2396
+ **/
2397
+ validateIndividually = input(false);
2398
+ /**
2399
+ * An array of default files that are preloaded in the upload list.
2400
+ * @default false
2401
+ **/
2402
+ defaultFiles = input([]);
2403
+ /**
2404
+ * The unique identifier for the input element that this label is associated with.
2405
+ * This ID should match the input element's `id` attribute to ensure accessibility.
2406
+ */
2407
+ inputId = input();
2408
+ /**
2409
+ * The name attribute for the file input, used for form submission and identifying the field.
2410
+ */
2411
+ name = input();
2412
+ /**
2413
+ * The text label displayed for the file dropzone, providing context for users.
2414
+ */
2415
+ label = input("file-dropzone.label");
2416
+ /**
2417
+ * Additional CSS class names to apply to the dropzone for custom styling
2418
+ */
2419
+ className = input();
2420
+ /**
2421
+ * Specifies how to handle file name conflicts when multiple file of the same name are added.
2422
+ * Options are:
2423
+ * - "append": Adds new files to the end of the list, keeping existing files
2424
+ * - "replace": Replaces existing files with new files of the same name
2425
+ * @default "append"
2426
+ */
2427
+ mode = input("append");
2428
+ /**
2429
+ * If true, allows uploading folders instead of just files.
2430
+ * This enables the user to select a folder and upload all its contents.
2431
+ * Default file browser behaviour will prevent upload of files in this state.
2432
+ * @default false
2433
+ */
2434
+ uploadFolder = input(false);
2435
+ /**
2436
+ * Validation functions that can be used to validate files.
2437
+ * Each function should return a string error message if validation fails, or undefined if it passes
2438
+ */
2439
+ validators = input([
2440
+ validateFileSize,
2441
+ validateFileType,
2442
+ ]);
2443
+ /**
2444
+ * If true, shows the file dropzone as in a erroring state with red border.
2445
+ * Overrides default validation state.
2446
+ * @default false
2447
+ **/
2448
+ hasError = input(false);
2449
+ /**
2450
+ * Output event triggered when files are added.
2451
+ **/
2452
+ fileChange = output();
2453
+ /**
2454
+ * Output event triggered when a file is removed.
2455
+ **/
2456
+ fileDelete = output();
2457
+ fileInputElement = viewChild.required("fileInput");
2458
+ formatBytes = (bytes) => formatBytes(bytes, this.sizeDisplayStandard());
2459
+ _uploadState = computed(() => this._fileService.uploadState());
2460
+ _onChange = (_) => { };
2461
+ _onTouched = () => { };
2462
+ _translationService = inject(TediTranslationService);
2463
+ _fileService = inject(FileService);
2464
+ isDragActive = signal(false);
2465
+ disabled = signal(false);
2466
+ uploadError = signal(null);
2467
+ files = this._fileService.files;
2468
+ classes = computed(() => {
2469
+ const classList = ["tedi-file-dropzone"];
2470
+ if (this.disabled()) {
2471
+ classList.push("tedi-file-dropzone--disabled");
2472
+ }
2473
+ if (this.hasError()) {
2474
+ classList.push("tedi-file-dropzone--invalid");
2475
+ }
2476
+ else if (this._uploadState() !== "none") {
2477
+ classList.push(`tedi-file-dropzone--${this._uploadState()}`);
2478
+ }
2479
+ if (this.isDragActive()) {
2480
+ classList.push("tedi-file-dropzone--drop-over");
2481
+ }
2482
+ if (this.className()) {
2483
+ classList.push(this.className());
2484
+ }
2485
+ return classList.join(" ");
2486
+ });
2487
+ helperText = computed(() => ({
2488
+ text: getDefaultHelpers(this.accept(), this.maxSize(), this.sizeDisplayStandard(), this._translationService.translate.bind(this._translationService)),
2489
+ type: "hint",
2490
+ position: "left",
2491
+ }));
2492
+ ngOnInit() {
2493
+ this.addFiles(this.defaultFiles());
2494
+ this._fileService.maxSize = this.maxSize;
2495
+ this._fileService.accept = this.accept;
2496
+ this._fileService.mode = this.mode;
2497
+ this._fileService.validators = this.validators;
2498
+ this._fileService.sizeDisplayStandard = this.sizeDisplayStandard;
2499
+ }
2500
+ fileClasses = (file) => {
2501
+ const classList = ["tedi-file-dropzone__file-item"];
2502
+ if (file.className) {
2503
+ classList.push(...file.className);
2504
+ }
2505
+ if (file.fileStatus != "none") {
2506
+ classList.push(`tedi-file-dropzone__file-item--${file.fileStatus}`);
2507
+ }
2508
+ return classList.join(" ");
2509
+ };
2510
+ tooltipClasses = (file) => {
2511
+ const classes = ["tedi-file-dropzone__tooltip"];
2512
+ classes.push(`tedi-file-dropzone__tooltip--${file.helper?.type || "hint"}`);
2513
+ return classes.join(" ");
2514
+ };
2515
+ selectionChange = (event) => {
2516
+ const fileList = event.target.files;
2517
+ const files = Array.from(fileList || []);
2518
+ this.addFiles(files);
2519
+ this.fileInputElement().nativeElement.value = "";
2520
+ };
2521
+ onBlur() {
2522
+ this._onTouched();
2523
+ }
2524
+ openFilePicker() {
2525
+ this.fileInputElement().nativeElement.click();
2526
+ }
2527
+ onDragOver = (event) => {
2528
+ event?.preventDefault();
2529
+ };
2530
+ onDragEnter = (event) => {
2531
+ event?.preventDefault();
2532
+ this.isDragActive.set(true);
2533
+ if (event?.dataTransfer) {
2534
+ event.dataTransfer.dropEffect = "copy";
2535
+ }
2536
+ };
2537
+ onDragLeave = (event) => {
2538
+ event?.preventDefault();
2539
+ this.isDragActive.set(false);
2540
+ };
2541
+ onDrop = async (event) => {
2542
+ this.onDragLeave(event);
2543
+ event?.preventDefault();
2544
+ if (!event.dataTransfer)
2545
+ return;
2546
+ const files = Array.from(event.dataTransfer.files);
2547
+ this.addFiles(files);
2548
+ };
2549
+ async addFiles(files) {
2550
+ if (!Array.isArray(files) || !files.length) {
2551
+ return;
2552
+ }
2553
+ const error = await this._fileService.addFiles(files);
2554
+ const normalizedFiles = this._fileService.normalizeFiles(files);
2555
+ this._updateErrorState(error);
2556
+ this._onChange(this._fileService.files());
2557
+ this.fileChange.emit(normalizedFiles);
2558
+ }
2559
+ removeFile(file) {
2560
+ const error = this._fileService.removeFiles([file]);
2561
+ this._updateErrorState(error);
2562
+ this._onChange(this._fileService.files());
2563
+ this.fileDelete.emit(file);
2564
+ }
2565
+ _updateErrorState(error) {
2566
+ if (this._uploadState() === "invalid" &&
2567
+ !this.validateIndividually() &&
2568
+ error.length) {
2569
+ this.uploadError.set(error[0]);
2570
+ }
2571
+ else {
2572
+ this.uploadError.set("");
2573
+ }
2574
+ }
2575
+ onContainerClick() {
2576
+ this.openFilePicker();
2577
+ }
2578
+ writeValue(files) {
2579
+ this.addFiles(files || []);
2580
+ }
2581
+ registerOnChange(fn) {
2582
+ this._onChange = fn;
2583
+ }
2584
+ registerOnTouched(fn) {
2585
+ this._onTouched = fn;
2586
+ }
2587
+ setDisabledState(isDisabled) {
2588
+ this.disabled.set(isDisabled);
2589
+ }
2590
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileDropzoneComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2591
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: FileDropzoneComponent, isStandalone: true, selector: "tedi-file-dropzone", inputs: { accept: { classPropertyName: "accept", publicName: "accept", isSignal: true, isRequired: false, transformFunction: null }, maxSize: { classPropertyName: "maxSize", publicName: "maxSize", isSignal: true, isRequired: false, transformFunction: null }, sizeDisplayStandard: { classPropertyName: "sizeDisplayStandard", publicName: "sizeDisplayStandard", isSignal: true, isRequired: false, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, validateIndividually: { classPropertyName: "validateIndividually", publicName: "validateIndividually", isSignal: true, isRequired: false, transformFunction: null }, defaultFiles: { classPropertyName: "defaultFiles", publicName: "defaultFiles", isSignal: true, isRequired: false, transformFunction: null }, inputId: { classPropertyName: "inputId", publicName: "inputId", isSignal: true, isRequired: false, transformFunction: null }, name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, uploadFolder: { classPropertyName: "uploadFolder", publicName: "uploadFolder", isSignal: true, isRequired: false, transformFunction: null }, validators: { classPropertyName: "validators", publicName: "validators", isSignal: true, isRequired: false, transformFunction: null }, hasError: { classPropertyName: "hasError", publicName: "hasError", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { fileChange: "fileChange", fileDelete: "fileDelete" }, host: { listeners: { "blur": "onBlur()", "keydown.code.enter": "openFilePicker()", "dragover": "onDragOver($event)", "dragenter": "onDragEnter($event)", "dragleave": "onDragLeave($event)", "drop": "onDrop($event)" } }, providers: [
2592
+ FileService,
2593
+ {
2594
+ provide: NG_VALUE_ACCESSOR,
2595
+ useExisting: forwardRef(() => FileDropzoneComponent),
2596
+ multi: true,
2597
+ },
2598
+ ], viewQueries: [{ propertyName: "fileInputElement", first: true, predicate: ["fileInput"], descendants: true, isSignal: true }], ngImport: i0, template: "<input\n #fileInput\n class=\"tedi-file-dropzone__input\"\n type=\"file\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple()\"\n [id]=\"inputId()\"\n [attr.webkitdirectory]=\"uploadFolder() ? '' : null\"\n [accept]=\"accept()\"\n (change)=\"selectionChange($event)\"\n/>\n\n<button [className]=\"classes()\" (click)=\"onContainerClick()\">\n <div class=\"tedi-file-dropzone__label-wrapper\">\n <tedi-icon\n [name]=\"isDragActive() ? 'file_upload' : 'attach_file'\"\n [color]=\"disabled() ? 'tertiary' : 'secondary'\"\n />\n <label tedi-label class=\"tedi-file-dropzone__label\">{{\n (isDragActive() ? \"file-upload.drag-and-drop\" : label()) | tediTranslate\n }}</label>\n </div>\n</button>\n\n<ng-content select=\"[helper-text]\">\n @if (helperText(); as message) {\n <tedi-feedback-text\n [text]=\"message.text\"\n [type]=\"message.type || 'hint'\"\n [position]=\"message.position || 'left'\"\n />\n }\n</ng-content>\n\n@for (file of files(); track file.name) {\n <div class=\"tedi-file-dropzone__file-list\" [tediVerticalSpacing]=\"0.5\">\n <tedi-card\n [className]=\"fileClasses(file)\"\n padding=\"none\"\n [background]=\"\n file.fileStatus && file.fileStatus == 'invalid'\n ? 'danger-primary'\n : 'tertiary'\n \"\n >\n <tedi-card-content class=\"tedi-file-dropzone__card\" padding=\"xs\">\n <div class=\"tedi-file-dropzone__file-name\">\n {{ file.label ?? file.name }}\n\n @if (file && validateIndividually() && file.helper; as helper) {\n <tedi-tooltip [className]=\"tooltipClasses(file)\">\n <tedi-tooltip-trigger>\n <button tedi-info-button [disabled]=\"file.disabled\"></button>\n </tedi-tooltip-trigger>\n\n <tedi-tooltip-content [position]=\"helper?.position || 'top'\">\n {{ helper.text }}\n </tedi-tooltip-content>\n </tedi-tooltip>\n }\n </div>\n <button\n tedi-closing-button\n [title]=\"'clear' | tediTranslate\"\n [iconSize]=\"18\"\n (click)=\"removeFile(file)\"\n size=\"small\"\n ></button>\n </tedi-card-content>\n </tedi-card>\n </div>\n}\n\n<ng-content select=\"[error-text]\">\n @if (this.uploadError(); as message) {\n <tedi-feedback-text [text]=\"message\" type=\"error\" position=\"left\" />\n }\n</ng-content>\n", styles: [".tedi-file-dropzone{text-align:center;cursor:pointer;background-color:var(--file-dropzone-background-default);border:2px dotted var(--file-dropzone-border-default);transition:border-color .2s ease-in-out,background-color .2s ease-in-out}.tedi-file-dropzone{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-file-dropzone{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{border-radius:var(--form-field-radius-desktop)}}.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone:hover{background-color:var(--file-dropzone-background-hover);border-color:var(--file-dropzone-border-hover)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper{display:flex;justify-content:center}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{font-weight:500;color:var(--file-dropzone-text-default)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label:hover{cursor:pointer}.tedi-file-dropzone--disabled{pointer-events:none;cursor:not-allowed;background-color:var(--file-dropzone-background-disabled);border-color:var(--file-dropzone-border-disabled)}.tedi-file-dropzone--disabled .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{color:var(--general-text-disabled)}.tedi-file-dropzone--invalid{border-color:var(--form-general-feedback-error-border)}.tedi-file-dropzone--valid{border-color:var(--form-general-feedback-success-border)}.tedi-file-dropzone--drop-over{color:var(--file-dropzone-text-drop-over);background-color:var(--file-dropzone-background-drop-over);border-color:var(--file-dropzone-border-drop-over)}.tedi-file-dropzone:focus-visible{outline:2px solid var(--file-dropzone-border-hover);outline-offset:1px}.tedi-file-dropzone__input{display:none}.tedi-file-dropzone__file-list{width:100%;list-style:none}.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone__file-name{overflow-wrap:anywhere}\n", ".tedi-file-dropzone{width:100%}.tedi-file-dropzone__label-wrapper{pointer-events:none}.tedi-file-dropzone__card{display:flex;justify-content:space-between;align-items:center;--_card-border: transparent}.tedi-file-dropzone__tooltip--error .tedi-info-button{--button-main-neutral-text-default: var(--red-700)}\n"], dependencies: [{ kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: FeedbackTextComponent, selector: "tedi-feedback-text", inputs: ["text", "type", "position"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: TooltipComponent, selector: "tedi-tooltip", inputs: ["openWith"] }, { kind: "component", type: TooltipTriggerComponent, selector: "tedi-tooltip-trigger" }, { kind: "component", type: TooltipContentComponent, selector: "tedi-tooltip-content", inputs: ["position", "maxWidth"] }, { kind: "component", type: InfoButtonComponent, selector: "button[tedi-info-button]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: VerticalSpacingDirective, selector: "[tediVerticalSpacing]", inputs: ["tediVerticalSpacing"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }] });
2599
+ }
2600
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: FileDropzoneComponent, decorators: [{
2601
+ type: Component,
2602
+ args: [{ selector: "tedi-file-dropzone", imports: [
2603
+ IconComponent,
2604
+ FeedbackTextComponent,
2605
+ CardComponent,
2606
+ CardContentComponent,
2607
+ ClosingButtonComponent,
2608
+ TooltipComponent,
2609
+ TooltipTriggerComponent,
2610
+ TooltipContentComponent,
2611
+ InfoButtonComponent,
2612
+ ReactiveFormsModule,
2613
+ VerticalSpacingDirective,
2614
+ TediTranslationPipe,
2615
+ ], providers: [
2616
+ FileService,
2617
+ {
2618
+ provide: NG_VALUE_ACCESSOR,
2619
+ useExisting: forwardRef(() => FileDropzoneComponent),
2620
+ multi: true,
2621
+ },
2622
+ ], template: "<input\n #fileInput\n class=\"tedi-file-dropzone__input\"\n type=\"file\"\n [disabled]=\"disabled()\"\n [multiple]=\"multiple()\"\n [id]=\"inputId()\"\n [attr.webkitdirectory]=\"uploadFolder() ? '' : null\"\n [accept]=\"accept()\"\n (change)=\"selectionChange($event)\"\n/>\n\n<button [className]=\"classes()\" (click)=\"onContainerClick()\">\n <div class=\"tedi-file-dropzone__label-wrapper\">\n <tedi-icon\n [name]=\"isDragActive() ? 'file_upload' : 'attach_file'\"\n [color]=\"disabled() ? 'tertiary' : 'secondary'\"\n />\n <label tedi-label class=\"tedi-file-dropzone__label\">{{\n (isDragActive() ? \"file-upload.drag-and-drop\" : label()) | tediTranslate\n }}</label>\n </div>\n</button>\n\n<ng-content select=\"[helper-text]\">\n @if (helperText(); as message) {\n <tedi-feedback-text\n [text]=\"message.text\"\n [type]=\"message.type || 'hint'\"\n [position]=\"message.position || 'left'\"\n />\n }\n</ng-content>\n\n@for (file of files(); track file.name) {\n <div class=\"tedi-file-dropzone__file-list\" [tediVerticalSpacing]=\"0.5\">\n <tedi-card\n [className]=\"fileClasses(file)\"\n padding=\"none\"\n [background]=\"\n file.fileStatus && file.fileStatus == 'invalid'\n ? 'danger-primary'\n : 'tertiary'\n \"\n >\n <tedi-card-content class=\"tedi-file-dropzone__card\" padding=\"xs\">\n <div class=\"tedi-file-dropzone__file-name\">\n {{ file.label ?? file.name }}\n\n @if (file && validateIndividually() && file.helper; as helper) {\n <tedi-tooltip [className]=\"tooltipClasses(file)\">\n <tedi-tooltip-trigger>\n <button tedi-info-button [disabled]=\"file.disabled\"></button>\n </tedi-tooltip-trigger>\n\n <tedi-tooltip-content [position]=\"helper?.position || 'top'\">\n {{ helper.text }}\n </tedi-tooltip-content>\n </tedi-tooltip>\n }\n </div>\n <button\n tedi-closing-button\n [title]=\"'clear' | tediTranslate\"\n [iconSize]=\"18\"\n (click)=\"removeFile(file)\"\n size=\"small\"\n ></button>\n </tedi-card-content>\n </tedi-card>\n </div>\n}\n\n<ng-content select=\"[error-text]\">\n @if (this.uploadError(); as message) {\n <tedi-feedback-text [text]=\"message\" type=\"error\" position=\"left\" />\n }\n</ng-content>\n", styles: [".tedi-file-dropzone{text-align:center;cursor:pointer;background-color:var(--file-dropzone-background-default);border:2px dotted var(--file-dropzone-border-default);transition:border-color .2s ease-in-out,background-color .2s ease-in-out}.tedi-file-dropzone{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-file-dropzone{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{border-radius:var(--form-field-radius-desktop)}}.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-left:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-right:var(--file-dropzone-padding-x-desktop)}}.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-top:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-mobile)}@media (min-width: 576px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{padding-bottom:var(--file-dropzone-padding-y-desktop)}}.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone{margin-bottom:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone:hover{background-color:var(--file-dropzone-background-hover);border-color:var(--file-dropzone-border-hover)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper{display:flex;justify-content:center}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{font-weight:500;color:var(--file-dropzone-text-default)}.tedi-file-dropzone .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label:hover{cursor:pointer}.tedi-file-dropzone--disabled{pointer-events:none;cursor:not-allowed;background-color:var(--file-dropzone-background-disabled);border-color:var(--file-dropzone-border-disabled)}.tedi-file-dropzone--disabled .tedi-file-dropzone__label-wrapper .tedi-file-dropzone__label{color:var(--general-text-disabled)}.tedi-file-dropzone--invalid{border-color:var(--form-general-feedback-error-border)}.tedi-file-dropzone--valid{border-color:var(--form-general-feedback-success-border)}.tedi-file-dropzone--drop-over{color:var(--file-dropzone-text-drop-over);background-color:var(--file-dropzone-background-drop-over);border-color:var(--file-dropzone-border-drop-over)}.tedi-file-dropzone:focus-visible{outline:2px solid var(--file-dropzone-border-hover);outline-offset:1px}.tedi-file-dropzone__input{display:none}.tedi-file-dropzone__file-list{width:100%;list-style:none}.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-file-dropzone__file-list{margin-top:var(--layout-grid-gutters-04-desktop)}}.tedi-file-dropzone__file-name{overflow-wrap:anywhere}\n", ".tedi-file-dropzone{width:100%}.tedi-file-dropzone__label-wrapper{pointer-events:none}.tedi-file-dropzone__card{display:flex;justify-content:space-between;align-items:center;--_card-border: transparent}.tedi-file-dropzone__tooltip--error .tedi-info-button{--button-main-neutral-text-default: var(--red-700)}\n"] }]
2623
+ }], propDecorators: { onBlur: [{
2624
+ type: HostListener,
2625
+ args: ["blur"]
2626
+ }], openFilePicker: [{
2627
+ type: HostListener,
2628
+ args: ["keydown.code.enter"]
2629
+ }], onDragOver: [{
2630
+ type: HostListener,
2631
+ args: ["dragover", ["$event"]]
2632
+ }], onDragEnter: [{
2633
+ type: HostListener,
2634
+ args: ["dragenter", ["$event"]]
2635
+ }], onDragLeave: [{
2636
+ type: HostListener,
2637
+ args: ["dragleave", ["$event"]]
2638
+ }], onDrop: [{
2639
+ type: HostListener,
2640
+ args: ["drop", ["$event"]]
2641
+ }] } });
2642
+
2643
+ class BreadcrumbsComponent {
2644
+ crumbs = input([]);
2645
+ shortCrumbs = input(false);
2646
+ xs = input();
2647
+ sm = input();
2648
+ md = input();
2649
+ lg = input();
2650
+ xl = input();
2651
+ xxl = input();
2652
+ breakpointService = inject(BreakpointService);
2653
+ breakpointInputs = computed(() => {
2654
+ return this.breakpointService.getBreakpointInputs({
2655
+ crumbs: this.crumbs(),
2656
+ shortCrumbs: this.shortCrumbs(),
2657
+ xs: this.xs(),
2658
+ sm: this.sm(),
2659
+ md: this.md(),
2660
+ lg: this.lg(),
2661
+ xl: this.xl(),
2662
+ xxl: this.xxl(),
2663
+ });
2664
+ });
2665
+ getSecondLastCrumb() {
2666
+ const crumbs = this.breakpointInputs().crumbs;
2667
+ if (crumbs.length > 1) {
2668
+ return crumbs[crumbs.length - 2];
2669
+ }
2670
+ return null;
2671
+ }
2672
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BreadcrumbsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2673
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: BreadcrumbsComponent, isStandalone: true, selector: "tedi-breadcrumbs", inputs: { crumbs: { classPropertyName: "crumbs", publicName: "crumbs", isSignal: true, isRequired: false, transformFunction: null }, shortCrumbs: { classPropertyName: "shortCrumbs", publicName: "shortCrumbs", isSignal: true, isRequired: false, transformFunction: null }, xs: { classPropertyName: "xs", publicName: "xs", isSignal: true, isRequired: false, transformFunction: null }, sm: { classPropertyName: "sm", publicName: "sm", isSignal: true, isRequired: false, transformFunction: null }, md: { classPropertyName: "md", publicName: "md", isSignal: true, isRequired: false, transformFunction: null }, lg: { classPropertyName: "lg", publicName: "lg", isSignal: true, isRequired: false, transformFunction: null }, xl: { classPropertyName: "xl", publicName: "xl", isSignal: true, isRequired: false, transformFunction: null }, xxl: { classPropertyName: "xxl", publicName: "xxl", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<nav\n *ngIf=\"this.breakpointInputs().crumbs.length > 0\"\n aria-label=\"Breadcrumb\"\n class=\"tedi__breadcrumbs\"\n>\n <ol class=\"tedi__breadcrumbs__list\">\n <ng-container *ngIf=\"!this.breakpointInputs().shortCrumbs\">\n <ng-container\n *ngFor=\"let crumb of this.breakpointInputs().crumbs; let last = last\"\n >\n @if (!last) {\n <li class=\"tedi__breadcrumbs__item\">\n <a tedi-link [routerLink]=\"crumb.href\" [underline]=\"false\">{{\n crumb.label\n }}</a>\n <tedi-icon color=\"brand\" name=\"chevron_right\" />\n </li>\n } @else {\n <li\n aria-current=\"page\"\n tedi-text\n modifiers=\"inline-block\"\n color=\"secondary\"\n >\n {{ crumb.label }}\n </li>\n }\n </ng-container>\n </ng-container>\n </ol>\n <ng-container\n *ngIf=\"\n this.breakpointInputs().crumbs.length > 1 &&\n this.breakpointInputs().shortCrumbs\n \"\n >\n <div class=\"tedi__breadcrumbs__item\">\n <tedi-icon color=\"brand\" name=\"arrow_back\" />\n <a\n tedi-link\n [routerLink]=\"getSecondLastCrumb()?.href\"\n [underline]=\"false\"\n >{{ getSecondLastCrumb()?.label }}</a\n >\n </div>\n </ng-container>\n</nav>\n", styles: [":host{display:block}.tedi__breadcrumbs__list{display:flex;flex-wrap:wrap;align-items:center;margin:0;list-style:none}.tedi__breadcrumbs__item{display:flex;align-items:center}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { 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: RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "component", type: LinkComponent, selector: "[tedi-link]", inputs: ["variant", "size", "underline", "xs", "sm", "md", "lg", "xl", "xxl"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }] });
2674
+ }
2675
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: BreadcrumbsComponent, decorators: [{
2676
+ type: Component,
2677
+ args: [{ selector: "tedi-breadcrumbs", standalone: true, imports: [
2678
+ CommonModule,
2679
+ RouterLink,
2680
+ LinkComponent,
2681
+ IconComponent,
2682
+ TextComponent,
2683
+ ], template: "<nav\n *ngIf=\"this.breakpointInputs().crumbs.length > 0\"\n aria-label=\"Breadcrumb\"\n class=\"tedi__breadcrumbs\"\n>\n <ol class=\"tedi__breadcrumbs__list\">\n <ng-container *ngIf=\"!this.breakpointInputs().shortCrumbs\">\n <ng-container\n *ngFor=\"let crumb of this.breakpointInputs().crumbs; let last = last\"\n >\n @if (!last) {\n <li class=\"tedi__breadcrumbs__item\">\n <a tedi-link [routerLink]=\"crumb.href\" [underline]=\"false\">{{\n crumb.label\n }}</a>\n <tedi-icon color=\"brand\" name=\"chevron_right\" />\n </li>\n } @else {\n <li\n aria-current=\"page\"\n tedi-text\n modifiers=\"inline-block\"\n color=\"secondary\"\n >\n {{ crumb.label }}\n </li>\n }\n </ng-container>\n </ng-container>\n </ol>\n <ng-container\n *ngIf=\"\n this.breakpointInputs().crumbs.length > 1 &&\n this.breakpointInputs().shortCrumbs\n \"\n >\n <div class=\"tedi__breadcrumbs__item\">\n <tedi-icon color=\"brand\" name=\"arrow_back\" />\n <a\n tedi-link\n [routerLink]=\"getSecondLastCrumb()?.href\"\n [underline]=\"false\"\n >{{ getSecondLastCrumb()?.label }}</a\n >\n </div>\n </ng-container>\n</nav>\n", styles: [":host{display:block}.tedi__breadcrumbs__list{display:flex;flex-wrap:wrap;align-items:center;margin:0;list-style:none}.tedi__breadcrumbs__item{display:flex;align-items:center}\n"] }]
2684
+ }] });
2685
+
2686
+ class PaginationPageComponent {
2687
+ page = input.required();
2688
+ active = input();
2689
+ pageSelected = output();
2690
+ selectPage() {
2691
+ this.pageSelected.emit();
2692
+ }
2693
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationPageComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2694
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: PaginationPageComponent, isStandalone: true, selector: "tedi-pagination-page", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { pageSelected: "pageSelected" }, ngImport: i0, template: "@if (page() === -1) {\n <span tedi-text color=\"secondary\">...</span>\n} @else {\n <button\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--active]=\"active()\"\n type=\"button\"\n [attr.aria-current]=\"active() ? 'page' : undefined\"\n [attr.aria-label]=\"'pagination.page' | tediTranslate: page() : active()\"\n (click)=\"selectPage()\"\n >\n {{ page() }}\n </button>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:center;height:var(--_pagination-button-size);width:var(--_pagination-button-size)}\n"], dependencies: [{ kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
2695
+ }
2696
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationPageComponent, decorators: [{
2697
+ type: Component,
2698
+ args: [{ selector: "tedi-pagination-page", imports: [TextComponent, TediTranslationPipe], changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (page() === -1) {\n <span tedi-text color=\"secondary\">...</span>\n} @else {\n <button\n class=\"tedi-pagination__page\"\n [class.tedi-pagination__page--active]=\"active()\"\n type=\"button\"\n [attr.aria-current]=\"active() ? 'page' : undefined\"\n [attr.aria-label]=\"'pagination.page' | tediTranslate: page() : active()\"\n (click)=\"selectPage()\"\n >\n {{ page() }}\n </button>\n}\n", styles: [":host{display:flex;align-items:center;justify-content:center;height:var(--_pagination-button-size);width:var(--_pagination-button-size)}\n"] }]
2699
+ }] });
2700
+
2701
+ const getPagesToDisplay = (currentPage, lastPage) => {
2702
+ const pages = new Set([1, currentPage, lastPage].filter((nr) => Boolean(nr)));
2703
+ let pagesAdded = pages.size;
2704
+ for (let diffFromCurrent = 1; diffFromCurrent <= 6 && pagesAdded < 7; diffFromCurrent++) {
2705
+ if (currentPage - diffFromCurrent > 1) {
2706
+ pages.add(currentPage - diffFromCurrent);
2707
+ pagesAdded += 1;
2708
+ }
2709
+ if (currentPage + diffFromCurrent < lastPage) {
2710
+ pages.add(currentPage + diffFromCurrent);
2711
+ pagesAdded += 1;
2712
+ }
2713
+ }
2714
+ const sortedPages = [...pages].sort((a, b) => a - b);
2715
+ if (sortedPages[0] && sortedPages[2] && sortedPages[2] - sortedPages[0] > 2) {
2716
+ sortedPages.splice(1, 1, -1);
2717
+ }
2718
+ if (sortedPages[sortedPages.length - 1] &&
2719
+ sortedPages[sortedPages.length - 3] &&
2720
+ sortedPages[sortedPages.length - 1] - sortedPages[sortedPages.length - 3] >
2721
+ 2) {
2722
+ sortedPages.splice(sortedPages.length - 2, 1, -1);
2723
+ }
2724
+ return sortedPages;
2725
+ };
2726
+
2727
+ class PaginationComponent {
2728
+ page = model(1);
2729
+ pageSize = model(50);
2730
+ pageSizeOptions = input([10, 50, 100]);
2731
+ length = input(0);
2732
+ hideResults = input(false, { transform: booleanAttribute });
2733
+ hidePageSize = input(false, { transform: booleanAttribute });
2734
+ lastPage = computed(() => {
2735
+ return Math.ceil(this.length() / this.pageSize());
2736
+ });
2737
+ dropdownId = crypto.randomUUID();
2738
+ pages = computed(() => {
2739
+ return getPagesToDisplay(this.page(), this.lastPage());
2740
+ });
2741
+ hasPreviousButton = computed(() => this.page() > 1);
2742
+ hasNextButton = computed(() => this.page() < this.lastPage());
2743
+ changePage(step) {
2744
+ this.page.update((currentPage) => currentPage + step);
2745
+ }
2746
+ selectPage(page) {
2747
+ this.page.set(page);
2748
+ }
2749
+ pageSizeChanged() {
2750
+ this.page.set(1);
2751
+ }
2752
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2753
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: PaginationComponent, isStandalone: true, selector: "tedi-pagination", inputs: { page: { classPropertyName: "page", publicName: "page", isSignal: true, isRequired: false, transformFunction: null }, pageSize: { classPropertyName: "pageSize", publicName: "pageSize", isSignal: true, isRequired: false, transformFunction: null }, pageSizeOptions: { classPropertyName: "pageSizeOptions", publicName: "pageSizeOptions", isSignal: true, isRequired: false, transformFunction: null }, length: { classPropertyName: "length", publicName: "length", isSignal: true, isRequired: false, transformFunction: null }, hideResults: { classPropertyName: "hideResults", publicName: "hideResults", isSignal: true, isRequired: false, transformFunction: null }, hidePageSize: { classPropertyName: "hidePageSize", publicName: "hidePageSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { page: "pageChange", pageSize: "pageSizeChange" }, ngImport: i0, template: "<div class=\"tedi-pagination\">\n @if (!hideResults()) {\n <span\n tedi-text\n class=\"tedi-pagination__results\"\n color=\"secondary\"\n modifiers=\"small\"\n >{{ length() }} {{ \"pagination.results\" | tediTranslate: length() }}</span\n >\n }\n <nav\n [attr.aria-label]=\"'pagination.title' | tediTranslate\"\n class=\"tedi-pagination__pager\"\n >\n <ul class=\"tedi-pagination__pages\">\n <li>\n <button\n tedi-button\n [disabled]=\"!hasPreviousButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(-1)\"\n [attr.aria-label]=\"'pagination.prev-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n </li>\n @for (pageNr of pages(); track $index) {\n <li>\n <tedi-pagination-page\n [page]=\"pageNr\"\n [active]=\"pageNr === page()\"\n (pageSelected)=\"selectPage(pageNr)\"\n />\n </li>\n }\n <li>\n <button\n tedi-button\n [disabled]=\"!hasNextButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(1)\"\n [attr.aria-label]=\"'pagination.next-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n </li>\n </ul>\n </nav>\n\n @if (!hidePageSize()) {\n <div class=\"tedi-pagination__page-size-options\">\n <label tedi-text color=\"secondary\" modifiers=\"small\" [for]=\"dropdownId\">{{\n \"pagination.page-size\" | tediTranslate\n }}</label>\n <select\n [id]=\"dropdownId\"\n [(ngModel)]=\"pageSize\"\n (change)=\"pageSizeChanged()\"\n class=\"tedi-pagination__dropdown\"\n >\n @for (size of pageSizeOptions(); track size) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </div>\n }\n</div>\n", styles: [".tedi-pagination{--_pagination-border: var(--general-border-secondary, #9293a4);--_pagination-background: var(--general-surface-primary, #fff);--_pagination-page-background: transparent;--_pagination-page-text: var(--general-text-secondary, #4b4e62);--_pagination-layout: \"results page-size-options\" \"pager pager\";border-top:1px solid var(--_pagination-border);background:var(--_pagination-background);padding:var(--_pagination-padding-y) var(--_pagination-padding-x);display:grid;align-items:center;grid-template-areas:var(--_pagination-layout)}.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-desktop)}}.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-desktop)}}.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-desktop)}}.tedi-pagination{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-pagination{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-pagination{gap:var(--layout-grid-gutters-04-desktop)}}@media (min-width: 768px){.tedi-pagination{--_pagination-layout: \"results pager page-size-options\";grid-template-columns:repeat(3,1fr)}}.tedi-pagination__results{grid-area:results}.tedi-pagination__pager{grid-area:pager;justify-self:center}.tedi-pagination__pages{display:flex;justify-items:center;align-items:center;list-style:none;margin:0}.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-mobile)}@media (min-width: 576px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-tablet)}}@media (min-width: 992px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-desktop)}}.tedi-pagination__page{display:flex;justify-content:center;align-items:center;height:100%;width:100%;flex-shrink:0;border-radius:50%;border:none;background:var(--_pagination-page-background);color:var(--_pagination-page-text);cursor:pointer}.tedi-pagination__page:hover{--_pagination-page-background: var( --button-main-neutral-icon-only-background-hover, #e7f0f6 );--_pagination-page-text: var(--button-main-neutral-text-hover, #004277)}.tedi-pagination__page:active{--_pagination-page-background: var( --button-main-neutral-icon-only-background-active, #d0e1ee );--_pagination-page-text: var(--button-main-neutral-text-active, #003662)}.tedi-pagination__page:focus{--_pagination-page-background: var( --button-main-neutral-icon-only-background-focus, rgba(0, 0, 0, 0) );--_pagination-page-text: var(--button-main-neutral-text-focus, #005aa3)}.tedi-pagination__page.tedi-pagination__page--active{--_pagination-page-background: var( --general-surface-brand-secondary, #004277 );--_pagination-page-text: var(--general-text-white, #fff);pointer-events:none}.tedi-pagination__nav-button.tedi-button[disabled]{color:transparent;pointer-events:none;-webkit-user-select:none;user-select:none}.tedi-pagination__page-size-options{grid-area:page-size-options;display:flex;align-items:center;justify-self:flex-end}.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-desktop)}}.tedi-pagination__dropdown{border:1px solid var(--form-input-border-default, #838494)}.tedi-pagination__dropdown{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-desktop)}}.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-desktop)}}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "[tedi-button]", inputs: ["variant", "size"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "component", type: TextComponent, selector: "[tedi-text]", inputs: ["modifiers", "color"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }, { kind: "component", type: PaginationPageComponent, selector: "tedi-pagination-page", inputs: ["page", "active"], outputs: ["pageSelected"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$1.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i1$1.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2754
+ }
2755
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: PaginationComponent, decorators: [{
2756
+ type: Component,
2757
+ args: [{ selector: "tedi-pagination", imports: [
2758
+ ButtonComponent,
2759
+ IconComponent,
2760
+ TextComponent,
2761
+ TediTranslationPipe,
2762
+ PaginationPageComponent,
2763
+ FormsModule,
2764
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"tedi-pagination\">\n @if (!hideResults()) {\n <span\n tedi-text\n class=\"tedi-pagination__results\"\n color=\"secondary\"\n modifiers=\"small\"\n >{{ length() }} {{ \"pagination.results\" | tediTranslate: length() }}</span\n >\n }\n <nav\n [attr.aria-label]=\"'pagination.title' | tediTranslate\"\n class=\"tedi-pagination__pager\"\n >\n <ul class=\"tedi-pagination__pages\">\n <li>\n <button\n tedi-button\n [disabled]=\"!hasPreviousButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(-1)\"\n [attr.aria-label]=\"'pagination.prev-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_back\" />\n </button>\n </li>\n @for (pageNr of pages(); track $index) {\n <li>\n <tedi-pagination-page\n [page]=\"pageNr\"\n [active]=\"pageNr === page()\"\n (pageSelected)=\"selectPage(pageNr)\"\n />\n </li>\n }\n <li>\n <button\n tedi-button\n [disabled]=\"!hasNextButton()\"\n class=\"tedi-pagination__nav-button\"\n size=\"small\"\n variant=\"neutral\"\n type=\"button\"\n (click)=\"changePage(1)\"\n [attr.aria-label]=\"'pagination.next-page' | tediTranslate\"\n >\n <tedi-icon name=\"arrow_forward\" />\n </button>\n </li>\n </ul>\n </nav>\n\n @if (!hidePageSize()) {\n <div class=\"tedi-pagination__page-size-options\">\n <label tedi-text color=\"secondary\" modifiers=\"small\" [for]=\"dropdownId\">{{\n \"pagination.page-size\" | tediTranslate\n }}</label>\n <select\n [id]=\"dropdownId\"\n [(ngModel)]=\"pageSize\"\n (change)=\"pageSizeChanged()\"\n class=\"tedi-pagination__dropdown\"\n >\n @for (size of pageSizeOptions(); track size) {\n <option [value]=\"size\">{{ size }}</option>\n }\n </select>\n </div>\n }\n</div>\n", styles: [".tedi-pagination{--_pagination-border: var(--general-border-secondary, #9293a4);--_pagination-background: var(--general-surface-primary, #fff);--_pagination-page-background: transparent;--_pagination-page-text: var(--general-text-secondary, #4b4e62);--_pagination-layout: \"results page-size-options\" \"pager pager\";border-top:1px solid var(--_pagination-border);background:var(--_pagination-background);padding:var(--_pagination-padding-y) var(--_pagination-padding-x);display:grid;align-items:center;grid-template-areas:var(--_pagination-layout)}.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-y: var(--pagination-padding-y-desktop)}}.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-padding-x: var(--pagination-padding-x-desktop)}}.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-mobile)}@media (min-width: 576px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-tablet)}}@media (min-width: 992px){.tedi-pagination{--_pagination-button-size: var(--pagination-button-size-desktop)}}.tedi-pagination{gap:var(--layout-grid-gutters-04-mobile)}@media (min-width: 576px){.tedi-pagination{gap:var(--layout-grid-gutters-04-tablet)}}@media (min-width: 992px){.tedi-pagination{gap:var(--layout-grid-gutters-04-desktop)}}@media (min-width: 768px){.tedi-pagination{--_pagination-layout: \"results pager page-size-options\";grid-template-columns:repeat(3,1fr)}}.tedi-pagination__results{grid-area:results}.tedi-pagination__pager{grid-area:pager;justify-self:center}.tedi-pagination__pages{display:flex;justify-items:center;align-items:center;list-style:none;margin:0}.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-mobile)}@media (min-width: 576px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-tablet)}}@media (min-width: 992px){.tedi-pagination__pages{gap:var(--layout-grid-gutters-08-desktop)}}.tedi-pagination__page{display:flex;justify-content:center;align-items:center;height:100%;width:100%;flex-shrink:0;border-radius:50%;border:none;background:var(--_pagination-page-background);color:var(--_pagination-page-text);cursor:pointer}.tedi-pagination__page:hover{--_pagination-page-background: var( --button-main-neutral-icon-only-background-hover, #e7f0f6 );--_pagination-page-text: var(--button-main-neutral-text-hover, #004277)}.tedi-pagination__page:active{--_pagination-page-background: var( --button-main-neutral-icon-only-background-active, #d0e1ee );--_pagination-page-text: var(--button-main-neutral-text-active, #003662)}.tedi-pagination__page:focus{--_pagination-page-background: var( --button-main-neutral-icon-only-background-focus, rgba(0, 0, 0, 0) );--_pagination-page-text: var(--button-main-neutral-text-focus, #005aa3)}.tedi-pagination__page.tedi-pagination__page--active{--_pagination-page-background: var( --general-surface-brand-secondary, #004277 );--_pagination-page-text: var(--general-text-white, #fff);pointer-events:none}.tedi-pagination__nav-button.tedi-button[disabled]{color:transparent;pointer-events:none;-webkit-user-select:none;user-select:none}.tedi-pagination__page-size-options{grid-area:page-size-options;display:flex;align-items:center;justify-self:flex-end}.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-mobile)}@media (min-width: 576px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-pagination__page-size-options{gap:var(--form-field-inner-spacing-desktop)}}.tedi-pagination__dropdown{border:1px solid var(--form-input-border-default, #838494)}.tedi-pagination__dropdown{border-radius:var(--form-field-radius-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{border-radius:var(--form-field-radius-desktop)}}.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-mobile)}@media (min-width: 576px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-tablet)}}@media (min-width: 992px){.tedi-pagination__dropdown{min-height:var(--form-field-height-sm-desktop)}}\n"] }]
2765
+ }] });
2766
+
2767
+ class TabContentComponent {
2768
+ tabId = input.required();
2769
+ content = viewChild.required("content");
2770
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2771
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.15", type: TabContentComponent, isStandalone: true, selector: "tedi-tab-content", inputs: { tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "content", first: true, predicate: ["content"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #content>\n <ng-content />\n</ng-template>\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2772
+ }
2773
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabContentComponent, decorators: [{
2774
+ type: Component,
2775
+ args: [{ selector: "tedi-tab-content", imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-template #content>\n <ng-content />\n</ng-template>\n" }]
2776
+ }] });
2777
+
2778
+ class TabComponent {
2779
+ element;
2780
+ tabId = input.required();
2781
+ selected = model(false);
2782
+ disabledInput = input(false, {
2783
+ transform: booleanAttribute,
2784
+ // eslint-disable-next-line @angular-eslint/no-input-rename
2785
+ alias: "disabled",
2786
+ });
2787
+ disabled; // for cdk/a11y keymanager
2788
+ tabSelected = output();
2789
+ routerLinkActive = inject(RouterLinkActive, { self: true });
2790
+ linkActive = toSignal(this.routerLinkActive.isActiveChange.pipe(startWith(this.routerLinkActive.isActive)));
2791
+ isTabActive = computed(() => this.selected() || this.linkActive());
2792
+ selectTab() {
2793
+ this.selected.set(true);
2794
+ this.tabSelected.emit();
2795
+ }
2796
+ focus() {
2797
+ this.element.nativeElement.focus();
2798
+ }
2799
+ constructor(element) {
2800
+ this.element = element;
2801
+ effect(() => {
2802
+ this.disabled = this.disabledInput();
2803
+ });
2804
+ this.routerLinkActive.routerLinkActive = ["tedi-tab--active"]; // should be changed once hostDirectives allow default values
2805
+ }
2806
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component });
2807
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: TabComponent, isStandalone: true, selector: "[tedi-tab]", inputs: { tabId: { classPropertyName: "tabId", publicName: "tabId", isSignal: true, isRequired: true, transformFunction: null }, selected: { classPropertyName: "selected", publicName: "selected", isSignal: true, isRequired: false, transformFunction: null }, disabledInput: { classPropertyName: "disabledInput", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { selected: "selectedChange", tabSelected: "tabSelected" }, host: { listeners: { "click": "selectTab()" }, properties: { "class.tedi-tab": "true", "class.tedi-tab--selected": "selected()", "class.tedi-tab--disabled": "disabledInput()", "attr.role": "'tab'" } }, hostDirectives: [{ directive: i1$2.RouterLinkActive, inputs: ["routerLinkActiveOptions", "routerLinkActiveOptions", "ariaCurrentWhenActive", "ariaCurrentWhenActive"], outputs: ["isActiveChange", "isActiveChange"] }], ngImport: i0, template: "<ng-content />\n", styles: [".tedi-tab{--_tab-background: var(--tab-item-default-background);--_tab-color: var(--tab-item-default-text);--_tab-padding: var(--_tab-padding-y) var(--_tab-padding-x);--_tab-selected-border: var(--tab-item-selected-border);padding:var(--_tab-padding);background:var(--_tab-background);color:var(--_tab-color);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--_tab-inner-spacing);border:none;cursor:pointer;text-decoration:none}.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-desktop)}}.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-desktop)}}.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-desktop)}}.tedi-tab{font-size:var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-tab{font-size:var(--body-regular-size-desktop)}}.tedi-tab:active{--_tab-background: var(--tab-item-active-background);--_tab-color: var(--tab-item-active-text)}.tedi-tab:hover,.tedi-tab:focus{--_tab-background: var(--tab-item-hover-background);--_tab-color: var(--tab-item-hover-text)}.tedi-tab--selected,.tedi-tab--active{--_tab-background: var(--tab-item-selected-background);--_tab-color: var(--tab-item-selected-text)}.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-mobile)}@media (min-width: 576px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-tablet)}}@media (min-width: 992px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-desktop)}}.tedi-tab--selected:after,.tedi-tab--active:after{content:\"\";position:absolute;border-top:3px solid var(--_tab-selected-border);top:0;left:0;right:0}.tedi-tab--disabled{pointer-events:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2808
+ }
2809
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabComponent, decorators: [{
2810
+ type: Component,
2811
+ args: [{ selector: "[tedi-tab]", imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
2812
+ "[class.tedi-tab]": "true",
2813
+ "[class.tedi-tab--selected]": "selected()",
2814
+ "[class.tedi-tab--disabled]": "disabledInput()",
2815
+ "[attr.role]": "'tab'",
2816
+ "(click)": "selectTab()",
2817
+ }, hostDirectives: [
2818
+ {
2819
+ directive: RouterLinkActive,
2820
+ inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive"],
2821
+ outputs: ["isActiveChange"],
2822
+ },
2823
+ ], template: "<ng-content />\n", styles: [".tedi-tab{--_tab-background: var(--tab-item-default-background);--_tab-color: var(--tab-item-default-text);--_tab-padding: var(--_tab-padding-y) var(--_tab-padding-x);--_tab-selected-border: var(--tab-item-selected-border);padding:var(--_tab-padding);background:var(--_tab-background);color:var(--_tab-color);position:relative;display:inline-flex;align-items:center;justify-content:center;gap:var(--_tab-inner-spacing);border:none;cursor:pointer;text-decoration:none}.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-y: var(--tab-spacing-y-desktop)}}.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-padding-x: var(--tab-spacing-x-desktop)}}.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-mobile)}@media (min-width: 576px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-tablet)}}@media (min-width: 992px){.tedi-tab{--_tab-inner-spacing: var(--tab-inner-spacing-desktop)}}.tedi-tab{font-size:var(--body-regular-size-mobile)}@media (min-width: 992px){.tedi-tab{font-size:var(--body-regular-size-desktop)}}.tedi-tab:active{--_tab-background: var(--tab-item-active-background);--_tab-color: var(--tab-item-active-text)}.tedi-tab:hover,.tedi-tab:focus{--_tab-background: var(--tab-item-hover-background);--_tab-color: var(--tab-item-hover-text)}.tedi-tab--selected,.tedi-tab--active{--_tab-background: var(--tab-item-selected-background);--_tab-color: var(--tab-item-selected-text)}.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-mobile)}@media (min-width: 576px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-tablet)}}@media (min-width: 992px){.tedi-tab--selected,.tedi-tab--active{font-weight:var(--body-bold-weight-desktop)}}.tedi-tab--selected:after,.tedi-tab--active:after{content:\"\";position:absolute;border-top:3px solid var(--_tab-selected-border);top:0;left:0;right:0}.tedi-tab--disabled{pointer-events:none}\n"] }]
2824
+ }], ctorParameters: () => [{ type: i0.ElementRef }] });
2825
+
2826
+ class TabsComponent {
2827
+ injector = inject(Injector);
2828
+ mobileTabsOpened = signal(false);
2829
+ tabs = contentChildren(TabComponent);
2830
+ tabContents = contentChildren(TabContentComponent);
2831
+ keyManager;
2832
+ activeTabId = computed(() => this.tabs()
2833
+ .find((tab) => tab.isTabActive())
2834
+ ?.tabId());
2835
+ activeTabContent = computed(() => this.tabContents()
2836
+ .find((content) => content.tabId() === this.activeTabId())
2837
+ ?.content());
2838
+ onActiveTabChanges(tabs) {
2839
+ tabs.forEach((tab) => {
2840
+ tab.tabSelected.subscribe(() => {
2841
+ this.mobileTabsOpened.set(false);
2842
+ tabs.forEach((otherTab) => {
2843
+ if (otherTab !== tab) {
2844
+ otherTab.selected.set(false);
2845
+ }
2846
+ });
2847
+ });
2848
+ });
2849
+ }
2850
+ onKeyDown(event) {
2851
+ this.keyManager?.onKeydown(event);
2852
+ }
2853
+ constructor() {
2854
+ effect(() => {
2855
+ const tabs = this.tabs();
2856
+ this.onActiveTabChanges(tabs);
2857
+ });
2858
+ }
2859
+ ngOnInit() {
2860
+ this.keyManager = new FocusKeyManager(this.tabs, this.injector)
2861
+ .withWrap()
2862
+ .withHorizontalOrientation("ltr");
2863
+ }
2864
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2865
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.15", type: TabsComponent, isStandalone: true, selector: "tedi-tabs", host: { listeners: { "keydown": "onKeyDown($event)" }, properties: { "class.tedi-tabs": "true" } }, queries: [{ propertyName: "tabs", predicate: TabComponent, isSignal: true }, { propertyName: "tabContents", predicate: TabContentComponent, isSignal: true }], ngImport: i0, template: "<ng-template #tabsList><ng-content select=\"[tedi-tab]\" /></ng-template>\n\n<tedi-card padding=\"none\">\n <tedi-card-content>\n <div role=\"tablist\" class=\"tedi-tabs__tab-list\">\n @if (!mobileTabsOpened()) {\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n }\n <button\n aria-haspopup=\"menu\"\n (click)=\"mobileTabsOpened.set(true)\"\n class=\"tedi-tab tedi-tab--more-btn\"\n >\n {{ \"more\" | tediTranslate }}\n <tedi-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n </div>\n </tedi-card-content>\n\n <tedi-card-content role=\"tabpanel\" [attr.aria-labelledby]=\"activeTabId()\">\n @if (activeTabContent(); as activeContent) {\n <ng-container *ngTemplateOutlet=\"activeContent\" />\n }\n <ng-content></ng-content>\n </tedi-card-content>\n</tedi-card>\n\n@if (mobileTabsOpened()) {\n <tedi-card padding=\"none\" class=\"tedi-tabs__mobile-dropdown\">\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n size=\"small\"\n (click)=\"mobileTabsOpened.set(false)\"\n ></button>\n </tedi-card-content>\n <tedi-card-content class=\"tedi-tabs__mobile-list\">\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n </tedi-card-content>\n </tedi-card>\n}\n", styles: [".tedi-tabs{--_tab-list-background: var(--tab-background)}.tedi-tabs__tab-list{display:flex;justify-content:start;overflow:auto;border-top-left-radius:var(--tab-top-radius, 4px);border-top-right-radius:var(--tab-top-radius, 4px);background:var(--_tab-list-background)}@media (max-width: 575.98px){.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--more-btn){flex-grow:1}.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--active,.tedi-tab--selected,.tedi-tab--more-btn){display:none}}@media (min-width: 576px){.tedi-tabs .tedi-tab--more-btn{display:none}}.tedi-tabs__mobile-dropdown.tedi-card{position:fixed;inset:0;z-index:1050}.tedi-tabs__mobile-list.tedi-card-content{display:flex;flex-direction:column}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{--_tab-background: var(--dropdown-item-active-background);--_tab-color: var(--dropdown-item-active-text)}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-desktop)}}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected:after,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active:after{display:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: CardComponent, selector: "tedi-card", inputs: ["borderless", "spacing", "accentBorder", "selected"] }, { kind: "component", type: CardContentComponent, selector: "tedi-card-content", inputs: ["hasSeparator", "autoWidth", "timeline"] }, { kind: "component", type: ClosingButtonComponent, selector: "button[tedi-closing-button]", inputs: ["size", "iconSize"] }, { kind: "component", type: IconComponent, selector: "tedi-icon", inputs: ["name", "size", "color", "background", "variant", "type", "label"] }, { kind: "pipe", type: TediTranslationPipe, name: "tediTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2866
+ }
2867
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TabsComponent, decorators: [{
2868
+ type: Component,
2869
+ args: [{ selector: "tedi-tabs", imports: [
2870
+ CommonModule,
2871
+ CardComponent,
2872
+ CardContentComponent,
2873
+ ClosingButtonComponent,
2874
+ IconComponent,
2875
+ TediTranslationPipe,
2876
+ ], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, host: {
2877
+ "[class.tedi-tabs]": "true",
2878
+ "(keydown)": "onKeyDown($event)",
2879
+ }, template: "<ng-template #tabsList><ng-content select=\"[tedi-tab]\" /></ng-template>\n\n<tedi-card padding=\"none\">\n <tedi-card-content>\n <div role=\"tablist\" class=\"tedi-tabs__tab-list\">\n @if (!mobileTabsOpened()) {\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n }\n <button\n aria-haspopup=\"menu\"\n (click)=\"mobileTabsOpened.set(true)\"\n class=\"tedi-tab tedi-tab--more-btn\"\n >\n {{ \"more\" | tediTranslate }}\n <tedi-icon name=\"expand_more\" [size]=\"18\" />\n </button>\n </div>\n </tedi-card-content>\n\n <tedi-card-content role=\"tabpanel\" [attr.aria-labelledby]=\"activeTabId()\">\n @if (activeTabContent(); as activeContent) {\n <ng-container *ngTemplateOutlet=\"activeContent\" />\n }\n <ng-content></ng-content>\n </tedi-card-content>\n</tedi-card>\n\n@if (mobileTabsOpened()) {\n <tedi-card padding=\"none\" class=\"tedi-tabs__mobile-dropdown\">\n <tedi-card-content hasSeparator autoWidth padding=\"xs\">\n <button\n tedi-closing-button\n size=\"small\"\n (click)=\"mobileTabsOpened.set(false)\"\n ></button>\n </tedi-card-content>\n <tedi-card-content class=\"tedi-tabs__mobile-list\">\n <ng-container *ngTemplateOutlet=\"tabsList\" />\n </tedi-card-content>\n </tedi-card>\n}\n", styles: [".tedi-tabs{--_tab-list-background: var(--tab-background)}.tedi-tabs__tab-list{display:flex;justify-content:start;overflow:auto;border-top-left-radius:var(--tab-top-radius, 4px);border-top-right-radius:var(--tab-top-radius, 4px);background:var(--_tab-list-background)}@media (max-width: 575.98px){.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--more-btn){flex-grow:1}.tedi-tabs__tab-list .tedi-tab:not(.tedi-tab--active,.tedi-tab--selected,.tedi-tab--more-btn){display:none}}@media (min-width: 576px){.tedi-tabs .tedi-tab--more-btn{display:none}}.tedi-tabs__mobile-dropdown.tedi-card{position:fixed;inset:0;z-index:1050}.tedi-tabs__mobile-list.tedi-card-content{display:flex;flex-direction:column}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{--_tab-background: var(--dropdown-item-active-background);--_tab-color: var(--dropdown-item-active-text)}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active{font-weight:var(--body-regular-weight-desktop)}}.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--selected:after,.tedi-tabs__mobile-list.tedi-card-content .tedi-tab--active:after{display:none}\n"] }]
2880
+ }], ctorParameters: () => [] });
2881
+
2882
+ class TableStylesComponent {
2883
+ size = input("default");
2884
+ verticalBorders = input(false, { transform: booleanAttribute });
2885
+ striped = input(false, { transform: booleanAttribute });
2886
+ clickable = input(false, { transform: booleanAttribute });
2887
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TableStylesComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
2888
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.15", type: TableStylesComponent, isStandalone: true, selector: "tedi-table-styles", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, verticalBorders: { classPropertyName: "verticalBorders", publicName: "verticalBorders", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, clickable: { classPropertyName: "clickable", publicName: "clickable", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.tedi-table-styles": "true", "class.tedi-table-styles--striped": "striped()", "class.tedi-table-styles--vertical-borders": "verticalBorders()", "class.tedi-table-styles--clickable": "clickable()", "class.tedi-table-styles--sm": "size() === 'small'" } }, ngImport: i0, template: "<div class=\"tedi-table-scroll\" cdkScrollable>\n <ng-content />\n</div>\n<ng-content select=\"tedi-pagination, [tedi-table-pagination]\" />\n", styles: [".tedi-table-styles{--_table-bg: var(--table-default);--_table-border: var(--table-border);--_table-contrast-border: var(--table-border-th);--_table-stripe: var(--table-striped);--_table-hover: var(--table-hover);--_table-color: var(--general-text-primary);--_table-header-color: var(--general-text-tertiary);display:block;background:var(--_table-bg);border-radius:var(--_table-radius);border:1px solid var(--_table-border);overflow:hidden}.tedi-table-styles{--_table-radius: var(--table-radius-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-radius: var(--table-radius-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-radius: var(--table-radius-desktop)}}.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-desktop)}}.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-desktop)}}.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-desktop)}}.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-desktop)}}.tedi-table-styles table{border-collapse:collapse;border-spacing:0;vertical-align:middle;width:100%;position:relative}.tedi-table-styles th,.tedi-table-styles td{text-align:left}.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-desktop)}}.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-desktop)}}.tedi-table-styles th{padding:var(--_table-header-padding-y) var(--_table-header-padding-x);border-bottom:1px solid var(--_table-contrast-border);color:var(--_table-header-color)}.tedi-table-styles td{padding:var(--_table-data-padding-y) var(--_table-data-padding-x);border-bottom:1px solid var(--_table-border);color:var(--_table-color)}.tedi-table-styles tr:last-child td{border-bottom:none}.tedi-table-styles .tedi-cell--align-center{text-align:center}.tedi-table-styles .tedi-cell--align-right{text-align:right}.tedi-table-styles .tedi-row--secondary{background-color:var(--_table-stripe)}.tedi-table-styles .tedi-table-scroll{overflow-x:auto}.tedi-table-styles--striped tbody tr:nth-child(2n){background-color:var(--_table-stripe)}.tedi-table-styles--clickable tbody tr:hover{cursor:pointer;background-color:var(--_table-hover)}.tedi-table-styles--vertical-borders :is(th,td):not(:last-child){border-right:1px solid var(--_table-border)}.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-desktop)}}\n"], dependencies: [{ kind: "directive", type: CdkScrollable, selector: "[cdk-scrollable], [cdkScrollable]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
2889
+ }
2890
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.15", ngImport: i0, type: TableStylesComponent, decorators: [{
2891
+ type: Component,
2892
+ args: [{ selector: "tedi-table-styles", imports: [CdkScrollable], host: {
2893
+ "[class.tedi-table-styles]": "true",
2894
+ "[class.tedi-table-styles--striped]": "striped()",
2895
+ "[class.tedi-table-styles--vertical-borders]": "verticalBorders()",
2896
+ "[class.tedi-table-styles--clickable]": "clickable()",
2897
+ "[class.tedi-table-styles--sm]": "size() === 'small'",
2898
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"tedi-table-scroll\" cdkScrollable>\n <ng-content />\n</div>\n<ng-content select=\"tedi-pagination, [tedi-table-pagination]\" />\n", styles: [".tedi-table-styles{--_table-bg: var(--table-default);--_table-border: var(--table-border);--_table-contrast-border: var(--table-border-th);--_table-stripe: var(--table-striped);--_table-hover: var(--table-hover);--_table-color: var(--general-text-primary);--_table-header-color: var(--general-text-tertiary);display:block;background:var(--_table-bg);border-radius:var(--_table-radius);border:1px solid var(--_table-border);overflow:hidden}.tedi-table-styles{--_table-radius: var(--table-radius-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-radius: var(--table-radius-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-radius: var(--table-radius-desktop)}}.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-y: var(--table-header-padding-y-desktop)}}.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-header-padding-x: var(--table-header-padding-x-desktop)}}.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-y: var(--table-data-padding-y-desktop)}}.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-mobile)}@media (min-width: 576px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-tablet)}}@media (min-width: 992px){.tedi-table-styles{--_table-data-padding-x: var(--table-data-padding-x-desktop)}}.tedi-table-styles table{border-collapse:collapse;border-spacing:0;vertical-align:middle;width:100%;position:relative}.tedi-table-styles th,.tedi-table-styles td{text-align:left}.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-family:var(--family-primary-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-weight:var(--body-regular-weight-desktop)}}.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{font-size:var(--body-regular-size-desktop)}}.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-mobile)}@media (min-width: 576px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-tablet)}}@media (min-width: 992px){.tedi-table-styles th,.tedi-table-styles td{line-height:var(--body-regular-line-height-desktop)}}.tedi-table-styles th{padding:var(--_table-header-padding-y) var(--_table-header-padding-x);border-bottom:1px solid var(--_table-contrast-border);color:var(--_table-header-color)}.tedi-table-styles td{padding:var(--_table-data-padding-y) var(--_table-data-padding-x);border-bottom:1px solid var(--_table-border);color:var(--_table-color)}.tedi-table-styles tr:last-child td{border-bottom:none}.tedi-table-styles .tedi-cell--align-center{text-align:center}.tedi-table-styles .tedi-cell--align-right{text-align:right}.tedi-table-styles .tedi-row--secondary{background-color:var(--_table-stripe)}.tedi-table-styles .tedi-table-scroll{overflow-x:auto}.tedi-table-styles--striped tbody tr:nth-child(2n){background-color:var(--_table-stripe)}.tedi-table-styles--clickable tbody tr:hover{cursor:pointer;background-color:var(--_table-hover)}.tedi-table-styles--vertical-borders :is(th,td):not(:last-child){border-right:1px solid var(--_table-border)}.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-y: var(--table-header-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-header-padding-x: var(--table-header-padding-x-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-y: var(--table-data-padding-y-sm-desktop)}}.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-mobile)}@media (min-width: 576px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-tablet)}}@media (min-width: 992px){.tedi-table-styles--sm{--_table-data-padding-x: var(--table-data-padding-x-sm-desktop)}}\n"] }]
2899
+ }] });
2900
+
2901
+ /**
2902
+ * Generated bundle index. Do not edit.
2903
+ */
2904
+
2905
+ export { AccordionComponent, AccordionIconComponent, AccordionItemComponent, AccordionItemContentComponent, AccordionItemHeaderComponent, BreadcrumbsComponent, CardColorsDirective, CardComponent, CardContentComponent, CardHeaderComponent, CardPaddingDirective, CardRowComponent, CheckboxCardGroupComponent, CheckboxComponent, CheckboxGroupComponent, ChoiceGroupDirective, DropdownComponent, DropdownItemComponent, DropdownTriggerDirective, FileDropzoneComponent, FormFieldComponent, InputComponent, InputGroupComponent, ModalComponent, ModalFooterComponent, ModalHeaderComponent, MultiselectComponent, PaginationComponent, RadioCardGroupComponent, RadioComponent, RadioGroupComponent, SearchComponent, SelectComponent, SelectOptionComponent, StatusBadgeComponent, TabComponent, TabContentComponent, TableStylesComponent, TabsComponent, TagComponent, TextareaComponent, modalBreakpoints, specialOptionControls };
2906
+ //# sourceMappingURL=tedi-design-system-angular-community.mjs.map