@educarehq/solaris-ui 0.3.0 → 0.3.2

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 (598) hide show
  1. package/fesm2022/educarehq-solaris-ui.mjs +12261 -0
  2. package/fesm2022/educarehq-solaris-ui.mjs.map +1 -0
  3. package/package.json +9 -5
  4. package/styles/_button.scss +510 -510
  5. package/styles/_dropdown-menu.scss +72 -72
  6. package/styles/_icon-button.scss +481 -481
  7. package/styles/_input.scss +255 -255
  8. package/styles/_popover.scss +73 -73
  9. package/styles/_theme.scss +46 -36
  10. package/styles/_toast.scss +9 -9
  11. package/styles/_tooltip.scss +3 -3
  12. package/styles/token/border/_border.scss +5 -0
  13. package/styles/token/border/_index.scss +1 -0
  14. package/styles/token/color/_dark.scss +78 -0
  15. package/styles/token/color/_high-contrast.scss +27 -0
  16. package/styles/token/color/_index.scss +3 -0
  17. package/styles/token/color/_light.scss +69 -0
  18. package/styles/token/density/_comfortable.scss +15 -0
  19. package/styles/token/density/_compact.scss +15 -0
  20. package/styles/token/density/_index.scss +2 -0
  21. package/styles/token/motion/_index.scss +2 -0
  22. package/styles/token/motion/_motion.scss +15 -0
  23. package/styles/token/motion/_reduced-motion.scss +15 -0
  24. package/styles/token/opacity/_index.scss +1 -0
  25. package/styles/token/opacity/_opacity.scss +4 -0
  26. package/styles/token/radius/_index.scss +1 -0
  27. package/styles/token/radius/_radius.scss +8 -0
  28. package/styles/token/shadow/_index.scss +1 -0
  29. package/styles/token/shadow/_shadow.scss +26 -0
  30. package/styles/token/spacing/_index.scss +1 -0
  31. package/styles/token/spacing/_spacing.scss +15 -0
  32. package/styles/token/typography/_font-family.scss +13 -0
  33. package/styles/token/typography/_index.scss +2 -0
  34. package/styles/token/typography/_typography.scss +25 -0
  35. package/styles/token/z-index/_index.scss +1 -0
  36. package/styles/token/z-index/_z-index.scss +10 -0
  37. package/types/educarehq-solaris-ui.d.ts +3201 -0
  38. package/educarehq-solaris-ui.d.ts +0 -5
  39. package/esm2022/educarehq-solaris-ui.js +0 -5
  40. package/esm2022/educarehq-solaris-ui.js.map +0 -1
  41. package/esm2022/index.js +0 -109
  42. package/esm2022/index.js.map +0 -1
  43. package/esm2022/lib/components/actions/button/directives/button-icon.directive.js +0 -17
  44. package/esm2022/lib/components/actions/button/directives/button-icon.directive.js.map +0 -1
  45. package/esm2022/lib/components/actions/button/directives/button.directive.js +0 -60
  46. package/esm2022/lib/components/actions/button/directives/button.directive.js.map +0 -1
  47. package/esm2022/lib/components/actions/button/index.js +0 -3
  48. package/esm2022/lib/components/actions/button/index.js.map +0 -1
  49. package/esm2022/lib/components/actions/button/model/button.types.js +0 -1
  50. package/esm2022/lib/components/actions/button/model/button.types.js.map +0 -1
  51. package/esm2022/lib/components/actions/button-group/component/button-group.component.js +0 -21
  52. package/esm2022/lib/components/actions/button-group/component/button-group.component.js.map +0 -1
  53. package/esm2022/lib/components/actions/button-group/model/button-group.types.js +0 -1
  54. package/esm2022/lib/components/actions/button-group/model/button-group.types.js.map +0 -1
  55. package/esm2022/lib/components/actions/icon-button/directives/icon-button-badge.directive.js +0 -17
  56. package/esm2022/lib/components/actions/icon-button/directives/icon-button-badge.directive.js.map +0 -1
  57. package/esm2022/lib/components/actions/icon-button/directives/icon-button.directive.js +0 -58
  58. package/esm2022/lib/components/actions/icon-button/directives/icon-button.directive.js.map +0 -1
  59. package/esm2022/lib/components/actions/icon-button/model/icon-button.types.js +0 -1
  60. package/esm2022/lib/components/actions/icon-button/model/icon-button.types.js.map +0 -1
  61. package/esm2022/lib/components/data-display/badge/component/badge.component.js +0 -24
  62. package/esm2022/lib/components/data-display/badge/component/badge.component.js.map +0 -1
  63. package/esm2022/lib/components/data-display/badge/directives/badge-icon.directive.js +0 -17
  64. package/esm2022/lib/components/data-display/badge/directives/badge-icon.directive.js.map +0 -1
  65. package/esm2022/lib/components/data-display/badge/index.js +0 -3
  66. package/esm2022/lib/components/data-display/badge/index.js.map +0 -1
  67. package/esm2022/lib/components/data-display/badge/model/badge.types.js +0 -1
  68. package/esm2022/lib/components/data-display/badge/model/badge.types.js.map +0 -1
  69. package/esm2022/lib/components/data-display/card/component/card.component.js +0 -20
  70. package/esm2022/lib/components/data-display/card/component/card.component.js.map +0 -1
  71. package/esm2022/lib/components/data-display/card/directives/card-actions.directive.js +0 -17
  72. package/esm2022/lib/components/data-display/card/directives/card-actions.directive.js.map +0 -1
  73. package/esm2022/lib/components/data-display/card/directives/card-content.directive.js +0 -17
  74. package/esm2022/lib/components/data-display/card/directives/card-content.directive.js.map +0 -1
  75. package/esm2022/lib/components/data-display/card/directives/card-description.directive.js +0 -17
  76. package/esm2022/lib/components/data-display/card/directives/card-description.directive.js.map +0 -1
  77. package/esm2022/lib/components/data-display/card/directives/card-footer.directive.js +0 -19
  78. package/esm2022/lib/components/data-display/card/directives/card-footer.directive.js.map +0 -1
  79. package/esm2022/lib/components/data-display/card/directives/card-header.directive.js +0 -17
  80. package/esm2022/lib/components/data-display/card/directives/card-header.directive.js.map +0 -1
  81. package/esm2022/lib/components/data-display/card/directives/card-media.directive.js +0 -17
  82. package/esm2022/lib/components/data-display/card/directives/card-media.directive.js.map +0 -1
  83. package/esm2022/lib/components/data-display/card/directives/card-title.directive.js +0 -17
  84. package/esm2022/lib/components/data-display/card/directives/card-title.directive.js.map +0 -1
  85. package/esm2022/lib/components/data-display/card/model/card.types.js +0 -1
  86. package/esm2022/lib/components/data-display/card/model/card.types.js.map +0 -1
  87. package/esm2022/lib/components/data-display/divider/component/divider.component.js +0 -46
  88. package/esm2022/lib/components/data-display/divider/component/divider.component.js.map +0 -1
  89. package/esm2022/lib/components/data-display/divider/index.js +0 -2
  90. package/esm2022/lib/components/data-display/divider/index.js.map +0 -1
  91. package/esm2022/lib/components/data-display/divider/model/divider.types.js +0 -1
  92. package/esm2022/lib/components/data-display/divider/model/divider.types.js.map +0 -1
  93. package/esm2022/lib/components/feedback/alert/component/alert-actions.component.js +0 -18
  94. package/esm2022/lib/components/feedback/alert/component/alert-actions.component.js.map +0 -1
  95. package/esm2022/lib/components/feedback/alert/component/alert.component.js +0 -90
  96. package/esm2022/lib/components/feedback/alert/component/alert.component.js.map +0 -1
  97. package/esm2022/lib/components/feedback/alert/directives/alert-description.directive.js +0 -17
  98. package/esm2022/lib/components/feedback/alert/directives/alert-description.directive.js.map +0 -1
  99. package/esm2022/lib/components/feedback/alert/directives/alert-title.directive.js +0 -17
  100. package/esm2022/lib/components/feedback/alert/directives/alert-title.directive.js.map +0 -1
  101. package/esm2022/lib/components/feedback/alert/model/alert.types.js +0 -1
  102. package/esm2022/lib/components/feedback/alert/model/alert.types.js.map +0 -1
  103. package/esm2022/lib/components/feedback/skeleton/component/skeleton.component.js +0 -69
  104. package/esm2022/lib/components/feedback/skeleton/component/skeleton.component.js.map +0 -1
  105. package/esm2022/lib/components/feedback/skeleton/model/skeleton.types.js +0 -1
  106. package/esm2022/lib/components/feedback/skeleton/model/skeleton.types.js.map +0 -1
  107. package/esm2022/lib/components/feedback/toast/component/toast.component.js +0 -268
  108. package/esm2022/lib/components/feedback/toast/component/toast.component.js.map +0 -1
  109. package/esm2022/lib/components/feedback/toast/container/toast-container.component.js +0 -24
  110. package/esm2022/lib/components/feedback/toast/container/toast-container.component.js.map +0 -1
  111. package/esm2022/lib/components/feedback/toast/model/toast.types.js +0 -1
  112. package/esm2022/lib/components/feedback/toast/model/toast.types.js.map +0 -1
  113. package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js +0 -17
  114. package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js.map +0 -1
  115. package/esm2022/lib/components/feedback/toast/service/toast.service.js +0 -219
  116. package/esm2022/lib/components/feedback/toast/service/toast.service.js.map +0 -1
  117. package/esm2022/lib/components/feedback/toast/token/toast.tokens.js +0 -13
  118. package/esm2022/lib/components/feedback/toast/token/toast.tokens.js.map +0 -1
  119. package/esm2022/lib/components/forms/checkbox/component/checkbox.component.js +0 -227
  120. package/esm2022/lib/components/forms/checkbox/component/checkbox.component.js.map +0 -1
  121. package/esm2022/lib/components/forms/checkbox/model/checkbox.types.js +0 -1
  122. package/esm2022/lib/components/forms/checkbox/model/checkbox.types.js.map +0 -1
  123. package/esm2022/lib/components/forms/checkbox-group/component/checkbox-group.component.js +0 -441
  124. package/esm2022/lib/components/forms/checkbox-group/component/checkbox-group.component.js.map +0 -1
  125. package/esm2022/lib/components/forms/checkbox-group/model/checkbox-group.types.js +0 -1
  126. package/esm2022/lib/components/forms/checkbox-group/model/checkbox-group.types.js.map +0 -1
  127. package/esm2022/lib/components/forms/email-field/component/email-field.component.js +0 -215
  128. package/esm2022/lib/components/forms/email-field/component/email-field.component.js.map +0 -1
  129. package/esm2022/lib/components/forms/email-field/model/email-field.types.js +0 -1
  130. package/esm2022/lib/components/forms/email-field/model/email-field.types.js.map +0 -1
  131. package/esm2022/lib/components/forms/email-field/validators/email-field.validators.js +0 -69
  132. package/esm2022/lib/components/forms/email-field/validators/email-field.validators.js.map +0 -1
  133. package/esm2022/lib/components/forms/form-field/component/form-error.component.js +0 -19
  134. package/esm2022/lib/components/forms/form-field/component/form-error.component.js.map +0 -1
  135. package/esm2022/lib/components/forms/form-field/component/form-field.component.js +0 -442
  136. package/esm2022/lib/components/forms/form-field/component/form-field.component.js.map +0 -1
  137. package/esm2022/lib/components/forms/form-field/component/form-hint.component.js +0 -18
  138. package/esm2022/lib/components/forms/form-field/component/form-hint.component.js.map +0 -1
  139. package/esm2022/lib/components/forms/form-field/component/form-label.component.js +0 -18
  140. package/esm2022/lib/components/forms/form-field/component/form-label.component.js.map +0 -1
  141. package/esm2022/lib/components/forms/form-field/directives/form-field-trigger.directive.js +0 -14
  142. package/esm2022/lib/components/forms/form-field/directives/form-field-trigger.directive.js.map +0 -1
  143. package/esm2022/lib/components/forms/form-field/directives/form-prefix.directive.js +0 -17
  144. package/esm2022/lib/components/forms/form-field/directives/form-prefix.directive.js.map +0 -1
  145. package/esm2022/lib/components/forms/form-field/directives/form-suffix.directive.js +0 -17
  146. package/esm2022/lib/components/forms/form-field/directives/form-suffix.directive.js.map +0 -1
  147. package/esm2022/lib/components/forms/form-field/index.js +0 -8
  148. package/esm2022/lib/components/forms/form-field/index.js.map +0 -1
  149. package/esm2022/lib/components/forms/form-field/model/form-control.contract.js +0 -3
  150. package/esm2022/lib/components/forms/form-field/model/form-control.contract.js.map +0 -1
  151. package/esm2022/lib/components/forms/form-field/model/form-field.types.js +0 -1
  152. package/esm2022/lib/components/forms/form-field/model/form-field.types.js.map +0 -1
  153. package/esm2022/lib/components/forms/input/directives/input.directive.js +0 -148
  154. package/esm2022/lib/components/forms/input/directives/input.directive.js.map +0 -1
  155. package/esm2022/lib/components/forms/input/index.js +0 -2
  156. package/esm2022/lib/components/forms/input/index.js.map +0 -1
  157. package/esm2022/lib/components/forms/input/model/input.defaults.js +0 -27
  158. package/esm2022/lib/components/forms/input/model/input.defaults.js.map +0 -1
  159. package/esm2022/lib/components/forms/input/model/input.types.js +0 -1
  160. package/esm2022/lib/components/forms/input/model/input.types.js.map +0 -1
  161. package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js +0 -1102
  162. package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js.map +0 -1
  163. package/esm2022/lib/components/forms/multi-select/model/multi-select.types.js +0 -1
  164. package/esm2022/lib/components/forms/multi-select/model/multi-select.types.js.map +0 -1
  165. package/esm2022/lib/components/forms/option/component/option.component.js +0 -149
  166. package/esm2022/lib/components/forms/option/component/option.component.js.map +0 -1
  167. package/esm2022/lib/components/forms/option/directives/option-slots.directive.js +0 -58
  168. package/esm2022/lib/components/forms/option/directives/option-slots.directive.js.map +0 -1
  169. package/esm2022/lib/components/forms/option/index.js +0 -3
  170. package/esm2022/lib/components/forms/option/index.js.map +0 -1
  171. package/esm2022/lib/components/forms/option/model/option.types.js +0 -1
  172. package/esm2022/lib/components/forms/option/model/option.types.js.map +0 -1
  173. package/esm2022/lib/components/forms/option-group/component/option-group.component.js +0 -103
  174. package/esm2022/lib/components/forms/option-group/component/option-group.component.js.map +0 -1
  175. package/esm2022/lib/components/forms/option-group/index.js +0 -2
  176. package/esm2022/lib/components/forms/option-group/index.js.map +0 -1
  177. package/esm2022/lib/components/forms/option-group/model/option-group.types.js +0 -1
  178. package/esm2022/lib/components/forms/option-group/model/option-group.types.js.map +0 -1
  179. package/esm2022/lib/components/forms/password-field/component/password-field.component.js +0 -299
  180. package/esm2022/lib/components/forms/password-field/component/password-field.component.js.map +0 -1
  181. package/esm2022/lib/components/forms/password-field/model/password-field-constants.js +0 -5
  182. package/esm2022/lib/components/forms/password-field/model/password-field-constants.js.map +0 -1
  183. package/esm2022/lib/components/forms/password-field/model/password-field.types.js +0 -1
  184. package/esm2022/lib/components/forms/password-field/model/password-field.types.js.map +0 -1
  185. package/esm2022/lib/components/forms/password-field/model/password-policy.types.js +0 -1
  186. package/esm2022/lib/components/forms/password-field/model/password-policy.types.js.map +0 -1
  187. package/esm2022/lib/components/forms/password-field/model/password-strength.js +0 -67
  188. package/esm2022/lib/components/forms/password-field/model/password-strength.js.map +0 -1
  189. package/esm2022/lib/components/forms/password-field/validators/password.validator.js +0 -45
  190. package/esm2022/lib/components/forms/password-field/validators/password.validator.js.map +0 -1
  191. package/esm2022/lib/components/forms/radio/component/radio.component.js +0 -219
  192. package/esm2022/lib/components/forms/radio/component/radio.component.js.map +0 -1
  193. package/esm2022/lib/components/forms/radio/model/radio.types.js +0 -1
  194. package/esm2022/lib/components/forms/radio/model/radio.types.js.map +0 -1
  195. package/esm2022/lib/components/forms/radio-group/component/radio-group.component.js +0 -348
  196. package/esm2022/lib/components/forms/radio-group/component/radio-group.component.js.map +0 -1
  197. package/esm2022/lib/components/forms/radio-group/model/radio-group.token.js +0 -3
  198. package/esm2022/lib/components/forms/radio-group/model/radio-group.token.js.map +0 -1
  199. package/esm2022/lib/components/forms/radio-group/model/radio-group.types.js +0 -1
  200. package/esm2022/lib/components/forms/radio-group/model/radio-group.types.js.map +0 -1
  201. package/esm2022/lib/components/forms/select/component/select.component.js +0 -815
  202. package/esm2022/lib/components/forms/select/component/select.component.js.map +0 -1
  203. package/esm2022/lib/components/forms/select/model/select.types.js +0 -1
  204. package/esm2022/lib/components/forms/select/model/select.types.js.map +0 -1
  205. package/esm2022/lib/components/forms/switch/component/switch.component.js +0 -211
  206. package/esm2022/lib/components/forms/switch/component/switch.component.js.map +0 -1
  207. package/esm2022/lib/components/forms/switch/index.js +0 -2
  208. package/esm2022/lib/components/forms/switch/index.js.map +0 -1
  209. package/esm2022/lib/components/forms/switch/model/switch.types.js +0 -1
  210. package/esm2022/lib/components/forms/switch/model/switch.types.js.map +0 -1
  211. package/esm2022/lib/components/forms/switch-group/component/switch-group.component.js +0 -369
  212. package/esm2022/lib/components/forms/switch-group/component/switch-group.component.js.map +0 -1
  213. package/esm2022/lib/components/forms/switch-group/model/switch-group.types.js +0 -1
  214. package/esm2022/lib/components/forms/switch-group/model/switch-group.types.js.map +0 -1
  215. package/esm2022/lib/components/forms/textarea/directives/textarea.directive.js +0 -137
  216. package/esm2022/lib/components/forms/textarea/directives/textarea.directive.js.map +0 -1
  217. package/esm2022/lib/components/forms/textarea/model/textarea.types.js +0 -1
  218. package/esm2022/lib/components/forms/textarea/model/textarea.types.js.map +0 -1
  219. package/esm2022/lib/components/icon/component/solaris-icon.component.js +0 -20
  220. package/esm2022/lib/components/icon/component/solaris-icon.component.js.map +0 -1
  221. package/esm2022/lib/components/icon/index.js +0 -2
  222. package/esm2022/lib/components/icon/index.js.map +0 -1
  223. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js +0 -27
  224. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js.map +0 -1
  225. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js +0 -96
  226. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js.map +0 -1
  227. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js +0 -22
  228. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js.map +0 -1
  229. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js +0 -105
  230. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js.map +0 -1
  231. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js +0 -95
  232. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js.map +0 -1
  233. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js +0 -631
  234. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js.map +0 -1
  235. package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js +0 -365
  236. package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js.map +0 -1
  237. package/esm2022/lib/components/interaction/dropdown-menu/index.js +0 -8
  238. package/esm2022/lib/components/interaction/dropdown-menu/index.js.map +0 -1
  239. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js +0 -3
  240. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js.map +0 -1
  241. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js +0 -1
  242. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js.map +0 -1
  243. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js +0 -1
  244. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js.map +0 -1
  245. package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js +0 -29
  246. package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js.map +0 -1
  247. package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js +0 -325
  248. package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js.map +0 -1
  249. package/esm2022/lib/components/interaction/popover/directives/popover.directive.js +0 -16
  250. package/esm2022/lib/components/interaction/popover/directives/popover.directive.js.map +0 -1
  251. package/esm2022/lib/components/interaction/popover/index.js +0 -4
  252. package/esm2022/lib/components/interaction/popover/index.js.map +0 -1
  253. package/esm2022/lib/components/interaction/popover/model/popover-position.js +0 -145
  254. package/esm2022/lib/components/interaction/popover/model/popover-position.js.map +0 -1
  255. package/esm2022/lib/components/interaction/popover/model/popover.types.js +0 -1
  256. package/esm2022/lib/components/interaction/popover/model/popover.types.js.map +0 -1
  257. package/esm2022/lib/components/interaction/popover/token/popover.tokens.js +0 -3
  258. package/esm2022/lib/components/interaction/popover/token/popover.tokens.js.map +0 -1
  259. package/esm2022/lib/components/interaction/tooltip/component/tooltip-panel.component.js +0 -23
  260. package/esm2022/lib/components/interaction/tooltip/component/tooltip-panel.component.js.map +0 -1
  261. package/esm2022/lib/components/interaction/tooltip/directive/tooltip.directive.js +0 -405
  262. package/esm2022/lib/components/interaction/tooltip/directive/tooltip.directive.js.map +0 -1
  263. package/esm2022/lib/components/interaction/tooltip/index.js +0 -3
  264. package/esm2022/lib/components/interaction/tooltip/index.js.map +0 -1
  265. package/esm2022/lib/components/interaction/tooltip/model/tooltip-position.js +0 -209
  266. package/esm2022/lib/components/interaction/tooltip/model/tooltip-position.js.map +0 -1
  267. package/esm2022/lib/components/interaction/tooltip/model/tooltip.types.js +0 -1
  268. package/esm2022/lib/components/interaction/tooltip/model/tooltip.types.js.map +0 -1
  269. package/esm2022/lib/components/interaction/tooltip/token/tooltip.tokens.js +0 -3
  270. package/esm2022/lib/components/interaction/tooltip/token/tooltip.tokens.js.map +0 -1
  271. package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js +0 -323
  272. package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js.map +0 -1
  273. package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js +0 -34
  274. package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js.map +0 -1
  275. package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js +0 -1
  276. package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js.map +0 -1
  277. package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js +0 -242
  278. package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js.map +0 -1
  279. package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js +0 -197
  280. package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js.map +0 -1
  281. package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js +0 -1
  282. package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js.map +0 -1
  283. package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js +0 -3
  284. package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js.map +0 -1
  285. package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js +0 -15
  286. package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js.map +0 -1
  287. package/esm2022/lib/components/navigation/stepper/component/stepper.component.js +0 -99
  288. package/esm2022/lib/components/navigation/stepper/component/stepper.component.js.map +0 -1
  289. package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js +0 -13
  290. package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js.map +0 -1
  291. package/esm2022/lib/components/navigation/stepper/model/stepper.types.js +0 -1
  292. package/esm2022/lib/components/navigation/stepper/model/stepper.types.js.map +0 -1
  293. package/esm2022/lib/components/navigation/stepper/step/step.component.js +0 -91
  294. package/esm2022/lib/components/navigation/stepper/step/step.component.js.map +0 -1
  295. package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js +0 -3
  296. package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js.map +0 -1
  297. package/esm2022/lib/components/navigation/tabs/component/tabs.component.js +0 -169
  298. package/esm2022/lib/components/navigation/tabs/component/tabs.component.js.map +0 -1
  299. package/esm2022/lib/components/navigation/tabs/index.js +0 -5
  300. package/esm2022/lib/components/navigation/tabs/index.js.map +0 -1
  301. package/esm2022/lib/components/navigation/tabs/model/tabs.types.js +0 -1
  302. package/esm2022/lib/components/navigation/tabs/model/tabs.types.js.map +0 -1
  303. package/esm2022/lib/components/navigation/tabs/tab/tab.component.js +0 -195
  304. package/esm2022/lib/components/navigation/tabs/tab/tab.component.js.map +0 -1
  305. package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js +0 -55
  306. package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js.map +0 -1
  307. package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js +0 -3
  308. package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js.map +0 -1
  309. package/esm2022/lib/components/overlay/dialog/component/dialog.component.js +0 -49
  310. package/esm2022/lib/components/overlay/dialog/component/dialog.component.js.map +0 -1
  311. package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js +0 -37
  312. package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js.map +0 -1
  313. package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js +0 -13
  314. package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js.map +0 -1
  315. package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js +0 -32
  316. package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js.map +0 -1
  317. package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js +0 -142
  318. package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js.map +0 -1
  319. package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js +0 -56
  320. package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js.map +0 -1
  321. package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js +0 -20
  322. package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js.map +0 -1
  323. package/esm2022/lib/components/overlay/dialog/model/dialog.types.js +0 -1
  324. package/esm2022/lib/components/overlay/dialog/model/dialog.types.js.map +0 -1
  325. package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js +0 -13
  326. package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js.map +0 -1
  327. package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js +0 -23
  328. package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js.map +0 -1
  329. package/esm2022/lib/components/overlay/dialog/service/dialog.service.js +0 -111
  330. package/esm2022/lib/components/overlay/dialog/service/dialog.service.js.map +0 -1
  331. package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js +0 -4
  332. package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js.map +0 -1
  333. package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js +0 -15
  334. package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js.map +0 -1
  335. package/esm2022/lib/services/accessibility/directives/visually-hidden.directive.js +0 -25
  336. package/esm2022/lib/services/accessibility/directives/visually-hidden.directive.js.map +0 -1
  337. package/esm2022/lib/services/accessibility/model/solaris-accessibility-config.interface.js +0 -1
  338. package/esm2022/lib/services/accessibility/model/solaris-accessibility-config.interface.js.map +0 -1
  339. package/esm2022/lib/services/accessibility/model/solaris-accessibility.types.js +0 -1
  340. package/esm2022/lib/services/accessibility/model/solaris-accessibility.types.js.map +0 -1
  341. package/esm2022/lib/services/accessibility/provider/provide-solaris-accessibility.js +0 -10
  342. package/esm2022/lib/services/accessibility/provider/provide-solaris-accessibility.js.map +0 -1
  343. package/esm2022/lib/services/accessibility/service/solaris-accessibility.service.js +0 -60
  344. package/esm2022/lib/services/accessibility/service/solaris-accessibility.service.js.map +0 -1
  345. package/esm2022/lib/services/accessibility/testing/solaris-accessibility-testing.provider.js +0 -10
  346. package/esm2022/lib/services/accessibility/testing/solaris-accessibility-testing.provider.js.map +0 -1
  347. package/esm2022/lib/services/accessibility/token/solaris-accessibility.tokens.js +0 -3
  348. package/esm2022/lib/services/accessibility/token/solaris-accessibility.tokens.js.map +0 -1
  349. package/esm2022/lib/services/icon/icons/groups/actions.js +0 -242
  350. package/esm2022/lib/services/icon/icons/groups/actions.js.map +0 -1
  351. package/esm2022/lib/services/icon/icons/groups/data.js +0 -129
  352. package/esm2022/lib/services/icon/icons/groups/data.js.map +0 -1
  353. package/esm2022/lib/services/icon/icons/groups/layout.js +0 -50
  354. package/esm2022/lib/services/icon/icons/groups/layout.js.map +0 -1
  355. package/esm2022/lib/services/icon/icons/groups/navigation.js +0 -354
  356. package/esm2022/lib/services/icon/icons/groups/navigation.js.map +0 -1
  357. package/esm2022/lib/services/icon/icons/groups/status.js +0 -70
  358. package/esm2022/lib/services/icon/icons/groups/status.js.map +0 -1
  359. package/esm2022/lib/services/icon/icons/groups/theme.js +0 -49
  360. package/esm2022/lib/services/icon/icons/groups/theme.js.map +0 -1
  361. package/esm2022/lib/services/icon/icons/index.js +0 -2
  362. package/esm2022/lib/services/icon/icons/index.js.map +0 -1
  363. package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js +0 -15
  364. package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js.map +0 -1
  365. package/esm2022/lib/services/icon/index.js +0 -5
  366. package/esm2022/lib/services/icon/index.js.map +0 -1
  367. package/esm2022/lib/services/icon/model/solaris-icon-definition.interface.js +0 -1
  368. package/esm2022/lib/services/icon/model/solaris-icon-definition.interface.js.map +0 -1
  369. package/esm2022/lib/services/icon/model/solaris-icon.types.js +0 -1
  370. package/esm2022/lib/services/icon/model/solaris-icon.types.js.map +0 -1
  371. package/esm2022/lib/services/icon/provider/provide-solaris-icons.js +0 -10
  372. package/esm2022/lib/services/icon/provider/provide-solaris-icons.js.map +0 -1
  373. package/esm2022/lib/services/icon/service/solaris-icon-registry.service.js +0 -43
  374. package/esm2022/lib/services/icon/service/solaris-icon-registry.service.js.map +0 -1
  375. package/esm2022/lib/services/icon/token/solaris-icon.tokens.js +0 -3
  376. package/esm2022/lib/services/icon/token/solaris-icon.tokens.js.map +0 -1
  377. package/esm2022/lib/services/theme/model/solaris-theme-config.interface.js +0 -1
  378. package/esm2022/lib/services/theme/model/solaris-theme-config.interface.js.map +0 -1
  379. package/esm2022/lib/services/theme/model/solaris-theme.types.js +0 -1
  380. package/esm2022/lib/services/theme/model/solaris-theme.types.js.map +0 -1
  381. package/esm2022/lib/services/theme/provider/provide-solaris-theme.js +0 -10
  382. package/esm2022/lib/services/theme/provider/provide-solaris-theme.js.map +0 -1
  383. package/esm2022/lib/services/theme/service/solaris-theme.service.js +0 -22
  384. package/esm2022/lib/services/theme/service/solaris-theme.service.js.map +0 -1
  385. package/esm2022/lib/services/theme/testing/solaris-theme-testing.provider.js +0 -10
  386. package/esm2022/lib/services/theme/testing/solaris-theme-testing.provider.js.map +0 -1
  387. package/esm2022/lib/services/theme/token/solaris-theme.tokens.js +0 -3
  388. package/esm2022/lib/services/theme/token/solaris-theme.tokens.js.map +0 -1
  389. package/esm2022/lib/services/translation/index.js +0 -6
  390. package/esm2022/lib/services/translation/index.js.map +0 -1
  391. package/esm2022/lib/services/translation/model/solaris-locale.types.js +0 -1
  392. package/esm2022/lib/services/translation/model/solaris-locale.types.js.map +0 -1
  393. package/esm2022/lib/services/translation/model/solaris-translate-config.interface.js +0 -1
  394. package/esm2022/lib/services/translation/model/solaris-translate-config.interface.js.map +0 -1
  395. package/esm2022/lib/services/translation/model/solaris-translate-defaults.js +0 -96
  396. package/esm2022/lib/services/translation/model/solaris-translate-defaults.js.map +0 -1
  397. package/esm2022/lib/services/translation/model/solaris-translation.types.js +0 -1
  398. package/esm2022/lib/services/translation/model/solaris-translation.types.js.map +0 -1
  399. package/esm2022/lib/services/translation/pipe/solaris-translate.pipe.js +0 -20
  400. package/esm2022/lib/services/translation/pipe/solaris-translate.pipe.js.map +0 -1
  401. package/esm2022/lib/services/translation/provider/provide-solaris-translate.js +0 -10
  402. package/esm2022/lib/services/translation/provider/provide-solaris-translate.js.map +0 -1
  403. package/esm2022/lib/services/translation/service/solaris-translate.service.js +0 -87
  404. package/esm2022/lib/services/translation/service/solaris-translate.service.js.map +0 -1
  405. package/esm2022/lib/services/translation/testing/solaris-translate-testing.provider.js +0 -32
  406. package/esm2022/lib/services/translation/testing/solaris-translate-testing.provider.js.map +0 -1
  407. package/esm2022/lib/services/translation/token/solaris-translate.tokens.js +0 -3
  408. package/esm2022/lib/services/translation/token/solaris-translate.tokens.js.map +0 -1
  409. package/esm2022/lib/testing/provide-solaris-testing.js +0 -11
  410. package/esm2022/lib/testing/provide-solaris-testing.js.map +0 -1
  411. package/esm2022/lib/testing/solaris-test-utilities.js +0 -12
  412. package/esm2022/lib/testing/solaris-test-utilities.js.map +0 -1
  413. package/index.d.ts +0 -197
  414. package/lib/components/actions/button/directives/button-icon.directive.d.ts +0 -5
  415. package/lib/components/actions/button/directives/button.directive.d.ts +0 -22
  416. package/lib/components/actions/button/index.d.ts +0 -3
  417. package/lib/components/actions/button/model/button.types.d.ts +0 -5
  418. package/lib/components/actions/button-group/component/button-group.component.d.ts +0 -10
  419. package/lib/components/actions/button-group/model/button-group.types.d.ts +0 -2
  420. package/lib/components/actions/icon-button/directives/icon-button-badge.directive.d.ts +0 -5
  421. package/lib/components/actions/icon-button/directives/icon-button.directive.d.ts +0 -21
  422. package/lib/components/actions/icon-button/model/icon-button.types.d.ts +0 -5
  423. package/lib/components/data-display/badge/component/badge.component.d.ts +0 -12
  424. package/lib/components/data-display/badge/directives/badge-icon.directive.d.ts +0 -5
  425. package/lib/components/data-display/badge/index.d.ts +0 -3
  426. package/lib/components/data-display/badge/model/badge.types.d.ts +0 -6
  427. package/lib/components/data-display/card/component/card.component.d.ts +0 -10
  428. package/lib/components/data-display/card/directives/card-actions.directive.d.ts +0 -5
  429. package/lib/components/data-display/card/directives/card-content.directive.d.ts +0 -5
  430. package/lib/components/data-display/card/directives/card-description.directive.d.ts +0 -5
  431. package/lib/components/data-display/card/directives/card-footer.directive.d.ts +0 -6
  432. package/lib/components/data-display/card/directives/card-header.directive.d.ts +0 -5
  433. package/lib/components/data-display/card/directives/card-media.directive.d.ts +0 -5
  434. package/lib/components/data-display/card/directives/card-title.directive.d.ts +0 -5
  435. package/lib/components/data-display/card/model/card.types.d.ts +0 -4
  436. package/lib/components/data-display/divider/component/divider.component.d.ts +0 -17
  437. package/lib/components/data-display/divider/index.d.ts +0 -2
  438. package/lib/components/data-display/divider/model/divider.types.d.ts +0 -5
  439. package/lib/components/feedback/alert/component/alert-actions.component.d.ts +0 -5
  440. package/lib/components/feedback/alert/component/alert.component.d.ts +0 -26
  441. package/lib/components/feedback/alert/directives/alert-description.directive.d.ts +0 -5
  442. package/lib/components/feedback/alert/directives/alert-title.directive.d.ts +0 -5
  443. package/lib/components/feedback/alert/model/alert.types.d.ts +0 -5
  444. package/lib/components/feedback/skeleton/component/skeleton.component.d.ts +0 -17
  445. package/lib/components/feedback/skeleton/model/skeleton.types.d.ts +0 -5
  446. package/lib/components/feedback/toast/component/toast.component.d.ts +0 -62
  447. package/lib/components/feedback/toast/container/toast-container.component.d.ts +0 -10
  448. package/lib/components/feedback/toast/model/toast.types.d.ts +0 -106
  449. package/lib/components/feedback/toast/provider/provide-solaris-toast.d.ts +0 -3
  450. package/lib/components/feedback/toast/service/toast.service.d.ts +0 -36
  451. package/lib/components/feedback/toast/token/toast.tokens.d.ts +0 -5
  452. package/lib/components/forms/checkbox/component/checkbox.component.d.ts +0 -70
  453. package/lib/components/forms/checkbox/model/checkbox.types.d.ts +0 -5
  454. package/lib/components/forms/checkbox-group/component/checkbox-group.component.d.ts +0 -123
  455. package/lib/components/forms/checkbox-group/model/checkbox-group.types.d.ts +0 -5
  456. package/lib/components/forms/email-field/component/email-field.component.d.ts +0 -67
  457. package/lib/components/forms/email-field/model/email-field.types.d.ts +0 -6
  458. package/lib/components/forms/email-field/validators/email-field.validators.d.ts +0 -8
  459. package/lib/components/forms/form-field/component/form-error.component.d.ts +0 -5
  460. package/lib/components/forms/form-field/component/form-field.component.d.ts +0 -96
  461. package/lib/components/forms/form-field/component/form-hint.component.d.ts +0 -5
  462. package/lib/components/forms/form-field/component/form-label.component.d.ts +0 -5
  463. package/lib/components/forms/form-field/directives/form-field-trigger.directive.d.ts +0 -5
  464. package/lib/components/forms/form-field/directives/form-prefix.directive.d.ts +0 -5
  465. package/lib/components/forms/form-field/directives/form-suffix.directive.d.ts +0 -5
  466. package/lib/components/forms/form-field/index.d.ts +0 -8
  467. package/lib/components/forms/form-field/model/form-control.contract.d.ts +0 -11
  468. package/lib/components/forms/form-field/model/form-field.types.d.ts +0 -5
  469. package/lib/components/forms/input/directives/input.directive.d.ts +0 -37
  470. package/lib/components/forms/input/index.d.ts +0 -2
  471. package/lib/components/forms/input/model/input.defaults.d.ts +0 -2
  472. package/lib/components/forms/input/model/input.types.d.ts +0 -4
  473. package/lib/components/forms/multi-select/component/multi-select.component.d.ts +0 -199
  474. package/lib/components/forms/multi-select/model/multi-select.types.d.ts +0 -5
  475. package/lib/components/forms/option/component/option.component.d.ts +0 -58
  476. package/lib/components/forms/option/directives/option-slots.directive.d.ts +0 -21
  477. package/lib/components/forms/option/index.d.ts +0 -3
  478. package/lib/components/forms/option/model/option.types.d.ts +0 -3
  479. package/lib/components/forms/option-group/component/option-group.component.d.ts +0 -32
  480. package/lib/components/forms/option-group/index.d.ts +0 -2
  481. package/lib/components/forms/option-group/model/option-group.types.d.ts +0 -2
  482. package/lib/components/forms/password-field/component/password-field.component.d.ts +0 -81
  483. package/lib/components/forms/password-field/model/password-field-constants.d.ts +0 -4
  484. package/lib/components/forms/password-field/model/password-field.types.d.ts +0 -6
  485. package/lib/components/forms/password-field/model/password-policy.types.d.ts +0 -10
  486. package/lib/components/forms/password-field/model/password-strength.d.ts +0 -2
  487. package/lib/components/forms/password-field/validators/password.validator.d.ts +0 -3
  488. package/lib/components/forms/radio/component/radio.component.d.ts +0 -68
  489. package/lib/components/forms/radio/model/radio.types.d.ts +0 -4
  490. package/lib/components/forms/radio-group/component/radio-group.component.d.ts +0 -86
  491. package/lib/components/forms/radio-group/model/radio-group.token.d.ts +0 -2
  492. package/lib/components/forms/radio-group/model/radio-group.types.d.ts +0 -5
  493. package/lib/components/forms/select/component/select.component.d.ts +0 -158
  494. package/lib/components/forms/select/model/select.types.d.ts +0 -4
  495. package/lib/components/forms/switch/component/switch.component.d.ts +0 -66
  496. package/lib/components/forms/switch/index.d.ts +0 -2
  497. package/lib/components/forms/switch/model/switch.types.d.ts +0 -4
  498. package/lib/components/forms/switch-group/component/switch-group.component.d.ts +0 -91
  499. package/lib/components/forms/switch-group/model/switch-group.types.d.ts +0 -5
  500. package/lib/components/forms/textarea/directives/textarea.directive.d.ts +0 -37
  501. package/lib/components/forms/textarea/model/textarea.types.d.ts +0 -5
  502. package/lib/components/icon/component/solaris-icon.component.d.ts +0 -13
  503. package/lib/components/icon/index.d.ts +0 -1
  504. package/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.d.ts +0 -10
  505. package/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.d.ts +0 -28
  506. package/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.d.ts +0 -7
  507. package/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.d.ts +0 -21
  508. package/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.d.ts +0 -21
  509. package/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.d.ts +0 -68
  510. package/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.d.ts +0 -61
  511. package/lib/components/interaction/dropdown-menu/index.d.ts +0 -9
  512. package/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.d.ts +0 -8
  513. package/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.d.ts +0 -11
  514. package/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.d.ts +0 -2
  515. package/lib/components/interaction/popover/component/popover-panel.component.d.ts +0 -10
  516. package/lib/components/interaction/popover/directives/popover-trigger.directive.d.ts +0 -65
  517. package/lib/components/interaction/popover/directives/popover.directive.d.ts +0 -7
  518. package/lib/components/interaction/popover/index.d.ts +0 -4
  519. package/lib/components/interaction/popover/model/popover-position.d.ts +0 -4
  520. package/lib/components/interaction/popover/model/popover.types.d.ts +0 -7
  521. package/lib/components/interaction/popover/token/popover.tokens.d.ts +0 -12
  522. package/lib/components/interaction/tooltip/component/tooltip-panel.component.d.ts +0 -9
  523. package/lib/components/interaction/tooltip/directive/tooltip.directive.d.ts +0 -80
  524. package/lib/components/interaction/tooltip/index.d.ts +0 -3
  525. package/lib/components/interaction/tooltip/model/tooltip-position.d.ts +0 -5
  526. package/lib/components/interaction/tooltip/model/tooltip.types.d.ts +0 -22
  527. package/lib/components/interaction/tooltip/token/tooltip.tokens.d.ts +0 -21
  528. package/lib/components/navigation/editable-tabs/component/editable-tabs.component.d.ts +0 -69
  529. package/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.d.ts +0 -20
  530. package/lib/components/navigation/editable-tabs/model/editable-tabs.types.d.ts +0 -60
  531. package/lib/components/navigation/segmented-control/component/segmented-control.component.d.ts +0 -64
  532. package/lib/components/navigation/segmented-control/item/segmented-item.component.d.ts +0 -35
  533. package/lib/components/navigation/segmented-control/model/segmented-control.types.d.ts +0 -12
  534. package/lib/components/navigation/segmented-control/token/segmented-control.tokens.d.ts +0 -22
  535. package/lib/components/navigation/stepper/actions/stepper-actions.component.d.ts +0 -7
  536. package/lib/components/navigation/stepper/component/stepper.component.d.ts +0 -36
  537. package/lib/components/navigation/stepper/content/stepper-content.component.d.ts +0 -5
  538. package/lib/components/navigation/stepper/model/stepper.types.d.ts +0 -15
  539. package/lib/components/navigation/stepper/step/step.component.d.ts +0 -27
  540. package/lib/components/navigation/stepper/token/stepper.tokens.d.ts +0 -13
  541. package/lib/components/navigation/tabs/component/tabs.component.d.ts +0 -47
  542. package/lib/components/navigation/tabs/index.d.ts +0 -6
  543. package/lib/components/navigation/tabs/model/tabs.types.d.ts +0 -17
  544. package/lib/components/navigation/tabs/tab/tab.component.d.ts +0 -38
  545. package/lib/components/navigation/tabs/tab-panel/tab-panel.component.d.ts +0 -15
  546. package/lib/components/navigation/tabs/token/tabs.tokens.d.ts +0 -19
  547. package/lib/components/overlay/dialog/component/dialog.component.d.ts +0 -29
  548. package/lib/components/overlay/dialog/components/dialog-actions.component.d.ts +0 -12
  549. package/lib/components/overlay/dialog/components/dialog-content.component.d.ts +0 -5
  550. package/lib/components/overlay/dialog/components/dialog-header.component.d.ts +0 -19
  551. package/lib/components/overlay/dialog/container/dialog-container.component.d.ts +0 -32
  552. package/lib/components/overlay/dialog/flow/dialog-flow.component.d.ts +0 -19
  553. package/lib/components/overlay/dialog/flow/dialog-step.component.d.ts +0 -7
  554. package/lib/components/overlay/dialog/model/dialog.types.d.ts +0 -87
  555. package/lib/components/overlay/dialog/provider/provide-solaris-dialog.d.ts +0 -3
  556. package/lib/components/overlay/dialog/service/dialog-ref.d.ts +0 -11
  557. package/lib/components/overlay/dialog/service/dialog.service.d.ts +0 -20
  558. package/lib/components/overlay/dialog/token/dialog-data.token.d.ts +0 -4
  559. package/lib/components/overlay/dialog/token/dialog.tokens.d.ts +0 -4
  560. package/lib/services/accessibility/directives/visually-hidden.directive.d.ts +0 -5
  561. package/lib/services/accessibility/model/solaris-accessibility-config.interface.d.ts +0 -4
  562. package/lib/services/accessibility/model/solaris-accessibility.types.d.ts +0 -5
  563. package/lib/services/accessibility/provider/provide-solaris-accessibility.d.ts +0 -3
  564. package/lib/services/accessibility/service/solaris-accessibility.service.d.ts +0 -15
  565. package/lib/services/accessibility/testing/solaris-accessibility-testing.provider.d.ts +0 -3
  566. package/lib/services/accessibility/token/solaris-accessibility.tokens.d.ts +0 -3
  567. package/lib/services/icon/icons/groups/actions.d.ts +0 -2
  568. package/lib/services/icon/icons/groups/data.d.ts +0 -2
  569. package/lib/services/icon/icons/groups/layout.d.ts +0 -2
  570. package/lib/services/icon/icons/groups/navigation.d.ts +0 -2
  571. package/lib/services/icon/icons/groups/status.d.ts +0 -2
  572. package/lib/services/icon/icons/groups/theme.d.ts +0 -2
  573. package/lib/services/icon/icons/index.d.ts +0 -1
  574. package/lib/services/icon/icons/solaris-built-in-icons.d.ts +0 -2
  575. package/lib/services/icon/index.d.ts +0 -8
  576. package/lib/services/icon/model/solaris-icon-definition.interface.d.ts +0 -45
  577. package/lib/services/icon/model/solaris-icon.types.d.ts +0 -4
  578. package/lib/services/icon/provider/provide-solaris-icons.d.ts +0 -3
  579. package/lib/services/icon/service/solaris-icon-registry.service.d.ts +0 -12
  580. package/lib/services/icon/token/solaris-icon.tokens.d.ts +0 -6
  581. package/lib/services/theme/model/solaris-theme-config.interface.d.ts +0 -5
  582. package/lib/services/theme/model/solaris-theme.types.d.ts +0 -3
  583. package/lib/services/theme/provider/provide-solaris-theme.d.ts +0 -3
  584. package/lib/services/theme/service/solaris-theme.service.d.ts +0 -9
  585. package/lib/services/theme/testing/solaris-theme-testing.provider.d.ts +0 -3
  586. package/lib/services/theme/token/solaris-theme.tokens.d.ts +0 -3
  587. package/lib/services/translation/index.d.ts +0 -8
  588. package/lib/services/translation/model/solaris-locale.types.d.ts +0 -4
  589. package/lib/services/translation/model/solaris-translate-config.interface.d.ts +0 -8
  590. package/lib/services/translation/model/solaris-translate-defaults.d.ts +0 -2
  591. package/lib/services/translation/model/solaris-translation.types.d.ts +0 -3
  592. package/lib/services/translation/pipe/solaris-translate.pipe.d.ts +0 -8
  593. package/lib/services/translation/provider/provide-solaris-translate.d.ts +0 -3
  594. package/lib/services/translation/service/solaris-translate.service.d.ts +0 -15
  595. package/lib/services/translation/testing/solaris-translate-testing.provider.d.ts +0 -3
  596. package/lib/services/translation/token/solaris-translate.tokens.d.ts +0 -3
  597. package/lib/testing/provide-solaris-testing.d.ts +0 -10
  598. package/lib/testing/solaris-test-utilities.d.ts +0 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"educarehq-solaris-ui.mjs","sources":["../../../../packages/angular/src/lib/services/translation/token/solaris-translate.tokens.ts","../../../../packages/angular/src/lib/services/translation/testing/solaris-translate-testing.provider.ts","../../../../packages/angular/src/lib/services/translation/provider/provide-solaris-translate.ts","../../../../packages/angular/src/lib/services/translation/model/solaris-translate-defaults.ts","../../../../packages/angular/src/lib/services/translation/service/solaris-translate.service.ts","../../../../packages/angular/src/lib/services/translation/pipe/solaris-translate.pipe.ts","../../../../packages/angular/src/lib/services/accessibility/token/solaris-accessibility.tokens.ts","../../../../packages/angular/src/lib/services/accessibility/testing/solaris-accessibility-testing.provider.ts","../../../../packages/angular/src/lib/services/accessibility/directives/visually-hidden.directive.ts","../../../../packages/angular/src/lib/services/accessibility/provider/provide-solaris-accessibility.ts","../../../../packages/angular/src/lib/services/accessibility/service/solaris-accessibility.service.ts","../../../../packages/angular/src/lib/services/theme/token/solaris-theme.tokens.ts","../../../../packages/angular/src/lib/services/theme/testing/solaris-theme-testing.provider.ts","../../../../packages/angular/src/lib/services/theme/provider/provide-solaris-theme.ts","../../../../packages/angular/src/lib/services/theme/service/solaris-theme.service.ts","../../../../packages/angular/src/lib/services/icon/token/solaris-icon.tokens.ts","../../../../packages/angular/src/lib/services/icon/icons/groups/navigation.ts","../../../../packages/angular/src/lib/services/icon/icons/groups/actions.ts","../../../../packages/angular/src/lib/services/icon/icons/groups/status.ts","../../../../packages/angular/src/lib/services/icon/icons/groups/layout.ts","../../../../packages/angular/src/lib/services/icon/icons/groups/theme.ts","../../../../packages/angular/src/lib/services/icon/icons/groups/data.ts","../../../../packages/angular/src/lib/services/icon/icons/solaris-built-in-icons.ts","../../../../packages/angular/src/lib/services/icon/service/solaris-icon-registry.service.ts","../../../../packages/angular/src/lib/services/icon/provider/provide-solaris-icons.ts","../../../../packages/angular/src/lib/components/icon/component/solaris-icon.component.ts","../../../../packages/angular/src/lib/components/icon/component/solaris-icon.component.html","../../../../packages/angular/src/lib/components/data-display/badge/component/badge.component.ts","../../../../packages/angular/src/lib/components/data-display/badge/component/badge.component.html","../../../../packages/angular/src/lib/components/data-display/badge/directives/badge-icon.directive.ts","../../../../packages/angular/src/lib/components/data-display/card/component/card.component.ts","../../../../packages/angular/src/lib/components/data-display/card/component/card.component.html","../../../../packages/angular/src/lib/components/data-display/card/directives/card-header.directive.ts","../../../../packages/angular/src/lib/components/data-display/card/directives/card-content.directive.ts","../../../../packages/angular/src/lib/components/data-display/card/directives/card-media.directive.ts","../../../../packages/angular/src/lib/components/data-display/card/directives/card-footer.directive.ts","../../../../packages/angular/src/lib/components/data-display/card/directives/card-actions.directive.ts","../../../../packages/angular/src/lib/components/data-display/card/directives/card-title.directive.ts","../../../../packages/angular/src/lib/components/data-display/card/directives/card-description.directive.ts","../../../../packages/angular/src/lib/components/feedback/alert/component/alert.component.ts","../../../../packages/angular/src/lib/components/feedback/alert/component/alert.component.html","../../../../packages/angular/src/lib/components/feedback/alert/component/alert-actions.component.ts","../../../../packages/angular/src/lib/components/feedback/alert/directives/alert-title.directive.ts","../../../../packages/angular/src/lib/components/feedback/alert/directives/alert-description.directive.ts","../../../../packages/angular/src/lib/components/actions/button/directives/button.directive.ts","../../../../packages/angular/src/lib/components/actions/button/directives/button-icon.directive.ts","../../../../packages/angular/src/lib/components/actions/icon-button/directives/icon-button.directive.ts","../../../../packages/angular/src/lib/components/actions/icon-button/directives/icon-button-badge.directive.ts","../../../../packages/angular/src/lib/components/actions/button-group/component/button-group.component.ts","../../../../packages/angular/src/lib/components/actions/button-group/component/button-group.component.html","../../../../packages/angular/src/lib/components/forms/option/directives/option-slots.directive.ts","../../../../packages/angular/src/lib/components/forms/option/component/option.component.ts","../../../../packages/angular/src/lib/components/forms/option/component/option.component.html","../../../../packages/angular/src/lib/components/forms/option-group/component/option-group.component.ts","../../../../packages/angular/src/lib/components/forms/option-group/component/option-group.component.html","../../../../packages/angular/src/lib/components/forms/form-field/directives/form-prefix.directive.ts","../../../../packages/angular/src/lib/components/forms/form-field/directives/form-suffix.directive.ts","../../../../packages/angular/src/lib/components/forms/form-field/model/form-control.contract.ts","../../../../packages/angular/src/lib/components/forms/form-field/component/form-label.component.ts","../../../../packages/angular/src/lib/components/forms/form-field/component/form-error.component.ts","../../../../packages/angular/src/lib/components/forms/form-field/component/form-hint.component.ts","../../../../packages/angular/src/lib/components/forms/form-field/component/form-field.component.ts","../../../../packages/angular/src/lib/components/forms/form-field/component/form-field.component.html","../../../../packages/angular/src/lib/components/forms/form-field/directives/form-field-trigger.directive.ts","../../../../packages/angular/src/lib/components/interaction/popover/directives/popover.directive.ts","../../../../packages/angular/src/lib/components/interaction/popover/token/popover.tokens.ts","../../../../packages/angular/src/lib/components/interaction/popover/component/popover-panel.component.ts","../../../../packages/angular/src/lib/components/interaction/popover/component/popover-panel.component.html","../../../../packages/angular/src/lib/components/interaction/popover/model/popover-position.ts","../../../../packages/angular/src/lib/components/interaction/popover/directives/popover-trigger.directive.ts","../../../../packages/angular/src/lib/components/forms/select/component/select.component.ts","../../../../packages/angular/src/lib/components/forms/select/component/select.component.html","../../../../packages/angular/src/lib/components/interaction/tooltip/token/tooltip.tokens.ts","../../../../packages/angular/src/lib/components/interaction/tooltip/component/tooltip-panel.component.ts","../../../../packages/angular/src/lib/components/interaction/tooltip/component/tooltip-panel.component.html","../../../../packages/angular/src/lib/components/interaction/tooltip/model/tooltip-position.ts","../../../../packages/angular/src/lib/components/interaction/tooltip/directive/tooltip.directive.ts","../../../../packages/angular/src/lib/components/forms/multi-select/component/multi-select.component.ts","../../../../packages/angular/src/lib/components/forms/multi-select/component/multi-select.component.html","../../../../packages/angular/src/lib/components/forms/input/model/input.defaults.ts","../../../../packages/angular/src/lib/components/forms/input/directives/input.directive.ts","../../../../packages/angular/src/lib/components/forms/checkbox/component/checkbox.component.ts","../../../../packages/angular/src/lib/components/forms/checkbox/component/checkbox.component.html","../../../../packages/angular/src/lib/components/forms/checkbox-group/component/checkbox-group.component.ts","../../../../packages/angular/src/lib/components/forms/checkbox-group/component/checkbox-group.component.html","../../../../packages/angular/src/lib/components/forms/radio-group/model/radio-group.token.ts","../../../../packages/angular/src/lib/components/forms/radio/component/radio.component.ts","../../../../packages/angular/src/lib/components/forms/radio/component/radio.component.html","../../../../packages/angular/src/lib/components/forms/switch/component/switch.component.ts","../../../../packages/angular/src/lib/components/forms/switch/component/switch.component.html","../../../../packages/angular/src/lib/components/forms/switch-group/component/switch-group.component.ts","../../../../packages/angular/src/lib/components/forms/switch-group/component/switch-group.component.html","../../../../packages/angular/src/lib/components/forms/radio-group/component/radio-group.component.ts","../../../../packages/angular/src/lib/components/forms/radio-group/component/radio-group.component.html","../../../../packages/angular/src/lib/components/forms/textarea/directives/textarea.directive.ts","../../../../packages/angular/src/lib/components/forms/password-field/validators/password.validator.ts","../../../../packages/angular/src/lib/components/forms/password-field/model/password-field-constants.ts","../../../../packages/angular/src/lib/components/forms/password-field/model/password-strength.ts","../../../../packages/angular/src/lib/components/forms/password-field/component/password-field.component.ts","../../../../packages/angular/src/lib/components/forms/password-field/component/password-field.component.html","../../../../packages/angular/src/lib/components/forms/email-field/validators/email-field.validators.ts","../../../../packages/angular/src/lib/components/forms/email-field/component/email-field.component.ts","../../../../packages/angular/src/lib/components/forms/email-field/component/email-field.component.html","../../../../packages/angular/src/lib/components/feedback/skeleton/component/skeleton.component.ts","../../../../packages/angular/src/lib/components/feedback/skeleton/component/skeleton.component.html","../../../../packages/angular/src/lib/components/feedback/toast/token/toast.tokens.ts","../../../../packages/angular/src/lib/components/feedback/toast/service/toast.service.ts","../../../../packages/angular/src/lib/components/feedback/toast/component/toast.component.ts","../../../../packages/angular/src/lib/components/feedback/toast/component/toast.component.html","../../../../packages/angular/src/lib/components/feedback/toast/container/toast-container.component.ts","../../../../packages/angular/src/lib/components/feedback/toast/container/toast-container.component.html","../../../../packages/angular/src/lib/components/feedback/toast/provider/provide-solaris-toast.ts","../../../../packages/angular/src/lib/components/overlay/dialog/token/dialog-data.token.ts","../../../../packages/angular/src/lib/components/overlay/dialog/components/dialog-content.component.ts","../../../../packages/angular/src/lib/components/overlay/dialog/components/dialog-content.component.html","../../../../packages/angular/src/lib/components/overlay/dialog/components/dialog-actions.component.ts","../../../../packages/angular/src/lib/components/overlay/dialog/components/dialog-actions.component.html","../../../../packages/angular/src/lib/components/overlay/dialog/components/dialog-header.component.ts","../../../../packages/angular/src/lib/components/overlay/dialog/components/dialog-header.component.html","../../../../packages/angular/src/lib/components/overlay/dialog/component/dialog.component.ts","../../../../packages/angular/src/lib/components/overlay/dialog/component/dialog.component.html","../../../../packages/angular/src/lib/components/overlay/dialog/container/dialog-container.component.ts","../../../../packages/angular/src/lib/components/overlay/dialog/container/dialog-container.component.html","../../../../packages/angular/src/lib/components/overlay/dialog/service/dialog-ref.ts","../../../../packages/angular/src/lib/components/overlay/dialog/token/dialog.tokens.ts","../../../../packages/angular/src/lib/components/overlay/dialog/service/dialog.service.ts","../../../../packages/angular/src/lib/components/overlay/dialog/flow/dialog-step.component.ts","../../../../packages/angular/src/lib/components/overlay/dialog/flow/dialog-flow.component.ts","../../../../packages/angular/src/lib/components/overlay/dialog/flow/dialog-flow.component.html","../../../../packages/angular/src/lib/components/overlay/dialog/provider/provide-solaris-dialog.ts","../../../../packages/angular/src/lib/components/navigation/tabs/token/tabs.tokens.ts","../../../../packages/angular/src/lib/components/navigation/tabs/tab/tab.component.ts","../../../../packages/angular/src/lib/components/navigation/tabs/tab/tab.component.html","../../../../packages/angular/src/lib/components/navigation/tabs/tab-panel/tab-panel.component.ts","../../../../packages/angular/src/lib/components/navigation/tabs/tab-panel/tab-panel.component.html","../../../../packages/angular/src/lib/components/navigation/tabs/component/tabs.component.ts","../../../../packages/angular/src/lib/components/navigation/tabs/component/tabs.component.html","../../../../packages/angular/src/lib/components/navigation/stepper/actions/stepper-actions.component.ts","../../../../packages/angular/src/lib/components/navigation/stepper/actions/stepper-actions.component.html","../../../../packages/angular/src/lib/components/navigation/stepper/token/stepper.tokens.ts","../../../../packages/angular/src/lib/components/navigation/stepper/step/step.component.ts","../../../../packages/angular/src/lib/components/navigation/stepper/step/step.component.html","../../../../packages/angular/src/lib/components/navigation/stepper/component/stepper.component.ts","../../../../packages/angular/src/lib/components/navigation/stepper/component/stepper.component.html","../../../../packages/angular/src/lib/components/navigation/stepper/content/stepper-content.component.ts","../../../../packages/angular/src/lib/components/navigation/stepper/content/stepper-content.component.html","../../../../packages/angular/src/lib/components/navigation/segmented-control/token/segmented-control.tokens.ts","../../../../packages/angular/src/lib/components/navigation/segmented-control/item/segmented-item.component.ts","../../../../packages/angular/src/lib/components/navigation/segmented-control/item/segmented-item.component.html","../../../../packages/angular/src/lib/components/navigation/segmented-control/component/segmented-control.component.ts","../../../../packages/angular/src/lib/components/navigation/segmented-control/component/segmented-control.component.html","../../../../packages/angular/src/lib/components/data-display/divider/component/divider.component.ts","../../../../packages/angular/src/lib/components/data-display/divider/component/divider.component.html","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.ts","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.ts","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.html","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.ts","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.ts","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.html","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.ts","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.ts","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.html","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.ts","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.html","../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.ts","../../../../packages/angular/src/lib/components/navigation/editable-tabs/component/editable-tabs.component.ts","../../../../packages/angular/src/lib/components/navigation/editable-tabs/component/editable-tabs.component.html","../../../../packages/angular/src/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.ts","../../../../packages/angular/src/lib/testing/provide-solaris-testing.ts","../../../../packages/angular/src/lib/testing/solaris-test-utilities.ts","../../../../packages/angular/src/educarehq-solaris-ui.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\r\n\r\nimport type { SolarisTranslateConfig } from '../model/solaris-translate-config.interface';\r\n\r\nexport const SOLARIS_TRANSLATE_CONFIG =\r\n new InjectionToken<SolarisTranslateConfig>('SOLARIS_TRANSLATE_CONFIG');\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type { SolarisTranslateConfig } from '../model/solaris-translate-config.interface';\r\nimport { SOLARIS_TRANSLATE_CONFIG } from '../token/solaris-translate.tokens';\r\n\r\nexport function provideSolarisTranslateTesting(\r\n config?: Partial<SolarisTranslateConfig>,\r\n): Provider[] {\r\n const defaults: SolarisTranslateConfig = {\r\n locale: 'en-US',\r\n fallbackLocale: 'pt-BR',\r\n translations: {\r\n 'en-US': {\r\n greeting: 'Hello, {{name}}',\r\n farewell: 'Goodbye',\r\n },\r\n 'pt-BR': {\r\n greeting: 'Olá, {{name}}',\r\n farewell: 'Adeus',\r\n },\r\n },\r\n useBrowserLocale: false,\r\n };\r\n\r\n return [\r\n {\r\n provide: SOLARIS_TRANSLATE_CONFIG,\r\n useValue: {\r\n ...defaults,\r\n ...config,\r\n translations: {\r\n ...defaults.translations,\r\n ...config?.translations,\r\n },\r\n },\r\n },\r\n ];\r\n}\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type { SolarisTranslateConfig } from '../model/solaris-translate-config.interface';\r\nimport { SOLARIS_TRANSLATE_CONFIG } from '../token/solaris-translate.tokens';\r\n\r\nexport function provideSolarisTranslate(\r\n config: SolarisTranslateConfig,\r\n): Provider[] {\r\n return [\r\n {\r\n provide: SOLARIS_TRANSLATE_CONFIG,\r\n useValue: config,\r\n },\r\n ];\r\n}\r\n","import type { SolarisTranslateConfig } from './solaris-translate-config.interface';\r\n\r\nexport const SOLARIS_TRANSLATE_DEFAULT_CONFIG: SolarisTranslateConfig = {\r\n locale: 'en-US',\r\n fallbackLocale: 'en-US',\r\n translations: {\r\n 'en-US': {\r\n 'solaris.select.search.placeholder': 'Search...',\r\n 'solaris.select.loading': 'Loading...',\r\n 'solaris.select.empty': 'No options available',\r\n 'solaris.select.noResults': 'No results found',\r\n 'solaris.select.clear': 'Clear selection',\r\n\r\n 'solaris.multiSelect.selectedCount.singular': '1 selected',\r\n 'solaris.multiSelect.selectedCount.plural': '{{ count }} selected',\r\n 'solaris.multiSelect.search.placeholder': 'Search...',\r\n 'solaris.multiSelect.loading': 'Loading...',\r\n 'solaris.multiSelect.empty': 'No options available',\r\n 'solaris.multiSelect.noResults': 'No results found',\r\n 'solaris.multiSelect.clear': 'Clear selection',\r\n 'solaris.multiSelect.selectAll': 'Select all',\r\n 'solaris.multiSelect.removeChip': 'Remove',\r\n\r\n 'solaris.toast.close': 'Close',\r\n 'solaris.toast.progress': 'Progress',\r\n 'solaris.toast.remaining': 'Remaining time',\r\n 'solaris.toast.closesIn':\r\n 'This message will close in {{seconds}} seconds.',\r\n 'solaris.toast.paused': 'Paused.',\r\n 'solaris.toast.pause': 'click to pause',\r\n 'solaris.toast.continue': 'click to continue',\r\n 'solaris.toast.expand': 'Expand',\r\n 'solaris.toast.collapse': 'Collapse',\r\n\r\n 'solaris.dialog.close': 'Close',\r\n 'solaris.dialog.confirm': 'Confirm',\r\n 'solaris.dialog.cancel': 'Cancel',\r\n 'solaris.dialog.discard': 'Discard',\r\n 'solaris.dialog.save': 'Save',\r\n 'solaris.dialog.continue': 'Continue',\r\n 'solaris.dialog.back': 'Back',\r\n 'solaris.dialog.next': 'Next',\r\n 'solaris.dialog.finish': 'Finish',\r\n\r\n 'solaris.editableTabs.tabActions': 'Tab actions',\r\n 'solaris.editableTabs.rename': 'Rename',\r\n 'solaris.editableTabs.moveLeft': 'Move left',\r\n 'solaris.editableTabs.moveRight': 'Move right',\r\n 'solaris.editableTabs.moveUp': 'Move up',\r\n 'solaris.editableTabs.moveDown': 'Move down',\r\n 'solaris.editableTabs.setAsDefault': 'Set as default',\r\n 'solaris.editableTabs.remove': 'Remove',\r\n 'solaris.editableTabs.confirmRename': 'Confirm rename',\r\n 'solaris.editableTabs.cancelRename': 'Cancel rename',\r\n },\r\n 'pt-BR': {\r\n 'solaris.select.search.placeholder': 'Buscar...',\r\n 'solaris.select.loading': 'Carregando...',\r\n 'solaris.select.empty': 'Nenhuma opção disponível',\r\n 'solaris.select.noResults': 'Nenhum resultado encontrado',\r\n 'solaris.select.clear': 'Limpar seleção',\r\n\r\n 'solaris.multiSelect.selectedCount.singular': '1 selecionado',\r\n 'solaris.multiSelect.selectedCount.plural': '{{ count }} selecionados',\r\n 'solaris.multiSelect.search.placeholder': 'Buscar...',\r\n 'solaris.multiSelect.loading': 'Carregando...',\r\n 'solaris.multiSelect.empty': 'Nenhuma opção disponível',\r\n 'solaris.multiSelect.noResults': 'Nenhum resultado encontrado',\r\n 'solaris.multiSelect.clear': 'Limpar seleção',\r\n 'solaris.multiSelect.selectAll': 'Selecionar todos',\r\n 'solaris.multiSelect.removeChip': 'Remover',\r\n\r\n 'solaris.toast.close': 'Fechar',\r\n 'solaris.toast.progress': 'Progresso',\r\n 'solaris.toast.remaining': 'Tempo restante',\r\n 'solaris.toast.closesIn':\r\n 'Esta mensagem irá fechar em {{seconds}} segundos.',\r\n 'solaris.toast.paused': 'Pausado.',\r\n 'solaris.toast.pause': 'clique para pausar',\r\n 'solaris.toast.continue': 'clique para continuar',\r\n 'solaris.toast.expand': 'Expandir',\r\n 'solaris.toast.collapse': 'Recolher',\r\n\r\n 'solaris.dialog.close': 'Fechar',\r\n 'solaris.dialog.confirm': 'Confirmar',\r\n 'solaris.dialog.cancel': 'Cancelar',\r\n 'solaris.dialog.discard': 'Descartar',\r\n 'solaris.dialog.save': 'Salvar',\r\n 'solaris.dialog.continue': 'Continuar',\r\n 'solaris.dialog.back': 'Voltar',\r\n 'solaris.dialog.next': 'Próximo',\r\n 'solaris.dialog.finish': 'Finalizar',\r\n\r\n 'solaris.editableTabs.tabActions': 'Ações da aba',\r\n 'solaris.editableTabs.rename': 'Renomear',\r\n 'solaris.editableTabs.moveLeft': 'Mover para esquerda',\r\n 'solaris.editableTabs.moveRight': 'Mover para direita',\r\n 'solaris.editableTabs.moveUp': 'Mover para cima',\r\n 'solaris.editableTabs.moveDown': 'Mover para baixo',\r\n 'solaris.editableTabs.setAsDefault': 'Definir como padrão',\r\n 'solaris.editableTabs.remove': 'Remover',\r\n 'solaris.editableTabs.confirmRename': 'Confirmar renomeação',\r\n 'solaris.editableTabs.cancelRename': 'Cancelar renomeação',\r\n },\r\n },\r\n useBrowserLocale: true,\r\n};\r\n","import { Injectable, inject, PLATFORM_ID } from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\nimport type { SolarisTranslateConfig } from '../model/solaris-translate-config.interface';\r\nimport { SOLARIS_TRANSLATE_DEFAULT_CONFIG } from '../model/solaris-translate-defaults';\r\nimport { SOLARIS_TRANSLATE_CONFIG } from '../token/solaris-translate.tokens';\r\nimport type { SolarisLocale } from '../model/solaris-locale.types';\r\nimport type { SolarisTranslateParams } from '../model/solaris-translation.types';\r\n\r\nfunction mergeConfigs(\r\n injected?: SolarisTranslateConfig,\r\n): SolarisTranslateConfig {\r\n if (!injected) return SOLARIS_TRANSLATE_DEFAULT_CONFIG;\r\n const merged: SolarisTranslateConfig = {\r\n ...SOLARIS_TRANSLATE_DEFAULT_CONFIG,\r\n ...injected,\r\n translations: {},\r\n };\r\n const allLocales = new Set([\r\n ...Object.keys(SOLARIS_TRANSLATE_DEFAULT_CONFIG.translations),\r\n ...Object.keys(injected.translations ?? {}),\r\n ]);\r\n for (const locale of allLocales) {\r\n merged.translations[locale] = {\r\n ...(SOLARIS_TRANSLATE_DEFAULT_CONFIG.translations[locale] ?? {}),\r\n ...(injected.translations?.[locale] ?? {}),\r\n };\r\n }\r\n return merged;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SolarisTranslateService {\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private readonly config: SolarisTranslateConfig = mergeConfigs(\r\n inject(SOLARIS_TRANSLATE_CONFIG, { optional: true }) ?? undefined,\r\n );\r\n\r\n get locale(): SolarisLocale {\r\n return this.resolveLocale();\r\n }\r\n\r\n get fallbackLocale(): SolarisLocale {\r\n return this.config.fallbackLocale;\r\n }\r\n\r\n translate(key: string, params?: SolarisTranslateParams): string {\r\n const translations = this.config.translations;\r\n const locale = this.resolveLocale() as string;\r\n const fallbackLocale = this.config.fallbackLocale as string;\r\n\r\n const localeMap = translations[locale];\r\n if (localeMap && key in localeMap) {\r\n return this.interpolate(localeMap[key], params);\r\n }\r\n\r\n if (fallbackLocale) {\r\n const fallbackMap = translations[fallbackLocale];\r\n if (fallbackMap && key in fallbackMap) {\r\n return this.interpolate(fallbackMap[key], params);\r\n }\r\n }\r\n\r\n const defaultMap = translations['en-US'];\r\n if (defaultMap && key in defaultMap) {\r\n return this.interpolate(defaultMap[key], params);\r\n }\r\n\r\n return key;\r\n }\r\n\r\n private resolveLocale(): SolarisLocale {\r\n if (this.config.useBrowserLocale && isPlatformBrowser(this.platformId)) {\r\n const browserLocale = navigator.language;\r\n if (browserLocale) {\r\n return browserLocale;\r\n }\r\n }\r\n return this.config.locale;\r\n }\r\n\r\n private escapeRegExp(value: string): string {\r\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n }\r\n\r\n private interpolate(value: string, params?: SolarisTranslateParams): string {\r\n if (!params) {\r\n return value;\r\n }\r\n\r\n let result = value;\r\n\r\n for (const [paramKey, paramValue] of Object.entries(params)) {\r\n const escapedParamKey = this.escapeRegExp(paramKey);\r\n\r\n result = result.replace(\r\n new RegExp(String.raw`\\{\\{\\s*${escapedParamKey}\\s*}}`, 'g'),\r\n String(paramValue),\r\n );\r\n }\r\n\r\n return result;\r\n }\r\n}\r\n","import { Pipe, type PipeTransform, inject } from '@angular/core';\r\n\r\nimport { SolarisTranslateService } from '../service/solaris-translate.service';\r\n\r\n@Pipe({\r\n name: 'translate',\r\n standalone: true,\r\n pure: true,\r\n})\r\nexport class SolarisTranslatePipe implements PipeTransform {\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n transform(\r\n key: string,\r\n params?: Record<string, string | number | boolean>,\r\n ): string {\r\n return this.translateService.translate(key, params);\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type { SolarisAccessibilityConfig } from '../model/solaris-accessibility-config.interface';\r\n\r\nexport const SOLARIS_ACCESSIBILITY_CONFIG =\r\n new InjectionToken<SolarisAccessibilityConfig>(\r\n 'SOLARIS_ACCESSIBILITY_CONFIG',\r\n );\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type { SolarisAccessibilityConfig } from '../model/solaris-accessibility-config.interface';\r\nimport { SOLARIS_ACCESSIBILITY_CONFIG } from '../token/solaris-accessibility.tokens';\r\n\r\nexport function provideSolarisAccessibilityTesting(\r\n config?: SolarisAccessibilityConfig,\r\n): Provider[] {\r\n return [\r\n {\r\n provide: SOLARIS_ACCESSIBILITY_CONFIG,\r\n useValue: config ?? {},\r\n },\r\n ];\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-visually-hidden]',\r\n standalone: true,\r\n host: {\r\n '[style.position]': '\"absolute\"',\r\n '[style.width]': '\"1px\"',\r\n '[style.height]': '\"1px\"',\r\n '[style.padding]': '\"0\"',\r\n '[style.margin]': '\"-1px\"',\r\n '[style.overflow]': '\"hidden\"',\r\n '[style.clip-path]': '\"rect(0, 0, 0, 0)\"',\r\n '[style.white-space]': '\"nowrap\"',\r\n '[style.border-width]': '\"0\"',\r\n },\r\n})\r\nexport class SolarisVisuallyHiddenDirective {}\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type { SolarisAccessibilityConfig } from '../model/solaris-accessibility-config.interface';\r\nimport { SOLARIS_ACCESSIBILITY_CONFIG } from '../token/solaris-accessibility.tokens';\r\n\r\nexport function provideSolarisAccessibility(\r\n config?: SolarisAccessibilityConfig,\r\n): Provider[] {\r\n return [\r\n {\r\n provide: SOLARIS_ACCESSIBILITY_CONFIG,\r\n useValue: config ?? {},\r\n },\r\n ];\r\n}\r\n","import {\r\n Injectable,\r\n inject,\r\n signal,\r\n type Signal,\r\n PLATFORM_ID,\r\n type WritableSignal,\r\n DestroyRef,\r\n} from '@angular/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\nimport { SOLARIS_ACCESSIBILITY_CONFIG } from '../token/solaris-accessibility.tokens';\r\nimport type { SolarisAccessibilityConfig } from '../model/solaris-accessibility-config.interface';\r\n\r\nlet nextId = 0;\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SolarisAccessibilityService {\r\n private readonly config: SolarisAccessibilityConfig;\r\n private readonly platformId = inject(PLATFORM_ID);\r\n private readonly reducedMotionSignal: WritableSignal<boolean>;\r\n\r\n constructor() {\r\n this.config =\r\n inject(SOLARIS_ACCESSIBILITY_CONFIG, { optional: true }) ?? {};\r\n\r\n if (this.config.forceReducedMotion) {\r\n this.reducedMotionSignal = signal(true);\r\n } else if (\r\n this.config.respectSystemPreference &&\r\n isPlatformBrowser(this.platformId)\r\n ) {\r\n // SECURITY_EXCEPTION: window.matchMedia is the only browser API for reduced motion detection. Guarded by isPlatformBrowser. Tested.\r\n const mql = window.matchMedia('(prefers-reduced-motion: reduce)');\r\n this.reducedMotionSignal = signal(mql.matches);\r\n\r\n const handler = (event: MediaQueryListEvent): void => {\r\n this.reducedMotionSignal.set(event.matches);\r\n };\r\n mql.addEventListener('change', handler);\r\n\r\n inject(DestroyRef).onDestroy(() => {\r\n mql.removeEventListener('change', handler);\r\n });\r\n } else {\r\n this.reducedMotionSignal = signal(false);\r\n }\r\n }\r\n\r\n get reducedMotion(): Signal<boolean> {\r\n return this.reducedMotionSignal.asReadonly();\r\n }\r\n\r\n get reducedMotionValue(): boolean {\r\n return this.reducedMotionSignal();\r\n }\r\n\r\n generateId(prefix: string): string {\r\n return `${prefix}-${++nextId}-${Date.now()}`;\r\n }\r\n\r\n generateDescriptionId(): string {\r\n return this.generateId('solaris-desc');\r\n }\r\n\r\n labelledBy(...ids: string[]): string | null {\r\n if (ids.length === 0) {\r\n return null;\r\n }\r\n return ids.join(' ');\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type { SolarisThemeConfig } from '../model/solaris-theme-config.interface';\r\n\r\nexport const SOLARIS_THEME_CONFIG = new InjectionToken<SolarisThemeConfig>(\r\n 'SOLARIS_THEME_CONFIG',\r\n);\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type { SolarisThemeConfig } from '../model/solaris-theme-config.interface';\r\nimport { SOLARIS_THEME_CONFIG } from '../token/solaris-theme.tokens';\r\n\r\nexport function provideSolarisThemeTesting(\r\n config?: Partial<SolarisThemeConfig>,\r\n): Provider[] {\r\n return [\r\n {\r\n provide: SOLARIS_THEME_CONFIG,\r\n useValue: config ?? {},\r\n },\r\n ];\r\n}\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type { SolarisThemeConfig } from '../model/solaris-theme-config.interface';\r\nimport { SOLARIS_THEME_CONFIG } from '../token/solaris-theme.tokens';\r\n\r\nexport function provideSolarisTheme(config?: SolarisThemeConfig): Provider[] {\r\n return [\r\n {\r\n provide: SOLARIS_THEME_CONFIG,\r\n useValue: config ?? {},\r\n },\r\n ];\r\n}\r\n","import { Injectable, inject } from '@angular/core';\r\n\r\nimport { SOLARIS_THEME_CONFIG } from '../token/solaris-theme.tokens';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisThemeService {\r\n private readonly config = inject(SOLARIS_THEME_CONFIG, { optional: true });\r\n\r\n get colorScheme(): string {\r\n return this.config?.colorScheme ?? 'system';\r\n }\r\n\r\n get density(): string {\r\n return this.config?.density ?? 'comfortable';\r\n }\r\n\r\n get reducedMotion(): string {\r\n return this.config?.reducedMotion ?? 'auto';\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type { SolarisIconDefinition } from '../model/solaris-icon-definition.interface';\r\n\r\nexport interface SolarisIconsConfig {\r\n extraIcons?: SolarisIconDefinition[];\r\n}\r\n\r\nexport const SOLARIS_ICONS_CONFIG = new InjectionToken<SolarisIconsConfig>(\r\n 'SOLARIS_ICONS_CONFIG',\r\n);\r\n","import type { SolarisIconDefinition } from '../../model/solaris-icon-definition.interface';\r\n\r\nexport const NAVIGATION_ICONS: SolarisIconDefinition[] = [\r\n {\r\n name: 'archives',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M20 9v9a2 2 0 01-2 2H6a2 2 0 01-2-2V9m16-5H4a2 2 0 00-2 2v1a2 2 0 002 2h16a2 2 0 002-2V6a2 2 0 00-2-2zm-10 9h4',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'chevron-down',\r\n viewBox: '0 0 24 24',\r\n elements: [{ type: 'path', d: 'm6 9 6 6 6-6' }],\r\n },\r\n {\r\n name: 'chevron-left',\r\n viewBox: '0 0 24 24',\r\n elements: [{ type: 'path', d: 'm15 18-6-6 6-6' }],\r\n },\r\n {\r\n name: 'chevron-right',\r\n viewBox: '0 0 24 24',\r\n elements: [{ type: 'path', d: 'm9 18 6-6-6-6' }],\r\n },\r\n {\r\n name: 'chevron-up',\r\n viewBox: '0 0 24 24',\r\n elements: [{ type: 'path', d: 'm18 15-6-6-6 6' }],\r\n },\r\n {\r\n name: 'chevron-forward',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'm9 18 6-6-6-6' },\r\n { type: 'path', d: 'm15 18 6-6-6-6' },\r\n ],\r\n },\r\n {\r\n name: 'chevron-backward',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'm15 18-6-6 6-6' },\r\n { type: 'path', d: 'm9 18-6-6 6-6' },\r\n ],\r\n },\r\n {\r\n name: 'chevron-first',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'm15 18-6-6 6-6' },\r\n { type: 'path', d: 'M7 6v12' },\r\n ],\r\n },\r\n {\r\n name: 'chevron-last',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'm9 18 6-6-6-6' },\r\n { type: 'path', d: 'M17 6v12' },\r\n ],\r\n },\r\n {\r\n name: 'code',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'polyline', points: '16 18 22 12 16 6' },\r\n { type: 'polyline', points: '8 6 2 12 8 18' },\r\n ],\r\n },\r\n {\r\n name: 'down-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 12, y1: 5, x2: 12, y2: 19 },\r\n { type: 'polyline', points: '19 12 12 19 5 12' },\r\n ],\r\n },\r\n {\r\n name: 'down-left-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 17, y1: 7, x2: 7, y2: 17 },\r\n { type: 'polyline', points: '17 17 7 17 7 7' },\r\n ],\r\n },\r\n {\r\n name: 'down-right-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 7, y1: 7, x2: 17, y2: 17 },\r\n { type: 'polyline', points: '17 7 17 17 7 17' },\r\n ],\r\n },\r\n {\r\n name: 'ellipses',\r\n viewBox: '0 0 24 24',\r\n fill: 'currentColor',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M12,10a2,2,0,1,0,2,2A2,2,0,0,0,12,10ZM5,10a2,2,0,1,0,2,2A2,2,0,0,0,5,10Zm14,0a2,2,0,1,0,2,2A2,2,0,0,0,19,10Z',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'file',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M14.5 2H6a2 2 0 00-2 2v16a2 2 0 002 2h12a2 2 0 002-2V7.5L14.5 2z',\r\n },\r\n { type: 'polyline', points: '14 2 14 8 20 8' },\r\n ],\r\n },\r\n {\r\n name: 'files',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M15.5 2H8.6c-.4 0-.8.2-1.1.5-.3.3-.5.7-.5 1.1v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8c.4 0 .8-.2 1.1-.5.3-.3.5-.7.5-1.1V6.5L15.5 2z',\r\n },\r\n { type: 'path', d: 'M3 7.6v12.8c0 .4.2.8.5 1.1.3.3.7.5 1.1.5h9.8' },\r\n { type: 'path', d: 'M15 2v5h5' },\r\n ],\r\n },\r\n {\r\n name: 'folder',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M22 19a2 2 0 01-2 2H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h9a2 2 0 012 2z',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'issue',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7',\r\n },\r\n {\r\n type: 'path',\r\n d: 'M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'left-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 19, y1: 12, x2: 5, y2: 12 },\r\n { type: 'polyline', points: '12 19 5 12 12 5' },\r\n ],\r\n },\r\n {\r\n name: 'link',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M10 13a5 5 0 007.54.54l3-3a5 5 0 00-7.07-7.07l-1.72 1.71',\r\n },\r\n {\r\n type: 'path',\r\n d: 'M14 11a5 5 0 00-7.54-.54l-3 3a5 5 0 007.07 7.07l1.71-1.71',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'notification',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M18 8A6 6 0 006 8c0 7-3 9-3 9h18s-3-2-3-9' },\r\n { type: 'path', d: 'M13.73 21a2 2 0 01-3.46 0' },\r\n ],\r\n },\r\n {\r\n name: 'open-folder',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M6 17l2-5h14l-3 8a2 2 0 01-2 1H4a2 2 0 01-2-2V5a2 2 0 012-2h5l2 3h7a2 2 0 012 2v4',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'pull-request',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'circle', cx: 18, cy: 18, r: 3 },\r\n { type: 'circle', cx: 6, cy: 6, r: 3 },\r\n { type: 'path', d: 'M13 6h3a2 2 0 012 2v7' },\r\n { type: 'line', x1: 6, y1: 9, x2: 6, y2: 21 },\r\n ],\r\n },\r\n {\r\n name: 'right-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 5, y1: 12, x2: 19, y2: 12 },\r\n { type: 'polyline', points: '12 5 19 12 12 19' },\r\n ],\r\n },\r\n {\r\n name: 'security',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z' },\r\n ],\r\n },\r\n {\r\n name: 'up-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 12, y1: 19, x2: 12, y2: 5 },\r\n { type: 'polyline', points: '5 12 12 5 19 12' },\r\n ],\r\n },\r\n {\r\n name: 'up-left-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 17, y1: 17, x2: 7, y2: 7 },\r\n { type: 'polyline', points: '7 17 7 7 17 7' },\r\n ],\r\n },\r\n {\r\n name: 'up-right-arrow',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 7, y1: 17, x2: 17, y2: 7 },\r\n { type: 'polyline', points: '7 7 17 7 17 17' },\r\n ],\r\n },\r\n {\r\n name: 'analytics',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M8 16v-5m4 5V8m4 8v-2m2-10H6a2 2 0 00-2 2v12a2 2 0 002 2h12a2 2 0 002-2V6a2 2 0 00-2-2z',\r\n },\r\n ],\r\n },\r\n];\r\n","import type { SolarisIconDefinition } from '../../model/solaris-icon-definition.interface';\r\n\r\nexport const ACTIONS_ICONS: SolarisIconDefinition[] = [\r\n {\r\n name: 'bookmark',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M19 21l-7-4-7 4V5a2 2 0 012-2h10a2 2 0 012 2v16z' },\r\n ],\r\n },\r\n {\r\n name: 'download',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4' },\r\n { type: 'polyline', points: '7 10 12 15 17 10' },\r\n { type: 'line', x1: 12, y1: 15, x2: 12, y2: 3 },\r\n ],\r\n },\r\n {\r\n name: 'export',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M21 15v4a2 2 0 01-2 2H5a2 2 0 01-2-2v-4' },\r\n { type: 'polyline', points: '17 8 12 3 7 8' },\r\n { type: 'line', x1: 12, y1: 3, x2: 12, y2: 15 },\r\n ],\r\n },\r\n {\r\n name: 'loader',\r\n viewBox: '0 0 24 24',\r\n elements: [{ type: 'path', d: 'M12 2a10 10 0 0 1 10 10' }],\r\n },\r\n {\r\n name: 'search',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'circle', cx: 11, cy: 11, r: 8 },\r\n { type: 'line', x1: 21, y1: 21, x2: 16.65, y2: 16.65 },\r\n ],\r\n },\r\n {\r\n name: 'edit',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M11 4H4a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2v-7',\r\n },\r\n {\r\n type: 'path',\r\n d: 'M18.5 2.5a2.121 2.121 0 013 3L12 15l-4 1 1-4 9.5-9.5z',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'copy',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'rect', x: 9, y: 9, width: 13, height: 13, rx: 2, ry: 2 },\r\n { type: 'path', d: 'M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1' },\r\n ],\r\n },\r\n {\r\n name: 'share',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'circle', cx: 18, cy: 5, r: 3 },\r\n { type: 'circle', cx: 6, cy: 12, r: 3 },\r\n { type: 'circle', cx: 18, cy: 19, r: 3 },\r\n { type: 'line', x1: 8.59, y1: 13.51, x2: 15.42, y2: 17.49 },\r\n { type: 'line', x1: 15.41, y1: 6.51, x2: 8.59, y2: 10.49 },\r\n ],\r\n },\r\n {\r\n name: 'x',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'M18 6 6 18' },\r\n { type: 'path', d: 'm6 6 12 12' },\r\n ],\r\n },\r\n {\r\n name: 'trash',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'polyline', points: '3 6 5 6 21 6' },\r\n {\r\n type: 'path',\r\n d: 'M19 6v14a2 2 0 01-2 2H7a2 2 0 01-2-2V6m3 0V4a2 2 0 012-2h4a2 2 0 012 2v2',\r\n },\r\n { type: 'line', x1: 10, y1: 11, x2: 10, y2: 17 },\r\n { type: 'line', x1: 14, y1: 11, x2: 14, y2: 17 },\r\n ],\r\n },\r\n {\r\n name: 'move',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'polyline', points: '5 9 2 12 5 15' },\r\n { type: 'polyline', points: '9 5 12 2 15 5' },\r\n { type: 'polyline', points: '15 19 12 22 9 19' },\r\n { type: 'polyline', points: '19 9 22 12 19 15' },\r\n { type: 'line', x1: 2, y1: 12, x2: 22, y2: 12 },\r\n { type: 'line', x1: 12, y1: 2, x2: 12, y2: 22 },\r\n ],\r\n },\r\n {\r\n name: 'gear',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M12.22 2h-.44a2 2 0 00-2 2v.18a2 2 0 01-1 1.73l-.43.25a2 2 0 01-2 0l-.15-.08a2 2 0 00-2.73.73l-.22.38a2 2 0 00.73 2.73l.15.1a2 2 0 011 1.72v.51a2 2 0 01-1 1.74l-.15.09a2 2 0 00-.73 2.73l.22.38a2 2 0 002.73.73l.15-.08a2 2 0 012 0l.43.25a2 2 0 011 1.73V20a2 2 0 002 2h.44a2 2 0 002-2v-.18a2 2 0 011-1.73l.43-.25a2 2 0 012 0l.15.08a2 2 0 002.73-.73l.22-.39a2 2 0 00-.73-2.73l-.15-.08a2 2 0 01-1-1.74v-.5a2 2 0 011-1.74l.15-.09a2 2 0 00.73-2.73l-.22-.38a2 2 0 00-2.73-.73l-.15.08a2 2 0 01-2 0l-.43-.25a2 2 0 01-1-1.73V4a2 2 0 00-2-2z',\r\n },\r\n { type: 'circle', cx: 12, cy: 12, r: 3 },\r\n ],\r\n },\r\n {\r\n name: 'settings',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M20 7h-9' },\r\n { type: 'path', d: 'M14 17H5' },\r\n { type: 'circle', cx: 17, cy: 17, r: 3 },\r\n { type: 'circle', cx: 7, cy: 7, r: 3 },\r\n ],\r\n },\r\n {\r\n name: 'wrench',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M14.7 6.3a1 1 0 000 1.4l1.6 1.6a1 1 0 001.4 0l3.77-3.77a6 6 0 01-7.94 7.94l-6.91 6.91a2.12 2.12 0 01-3-3l6.91-6.91a6 6 0 017.94-7.94l-3.76 3.76z',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'unlink',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M18.84 12.25l1.72-1.71h-.02a5.004 5.004 0 00-.12-7.07 5.006 5.006 0 00-6.95 0l-1.72 1.71',\r\n },\r\n {\r\n type: 'path',\r\n d: 'M5.17 11.75l-1.71 1.71a5.004 5.004 0 00.12 7.07 5.006 5.006 0 006.95 0l1.71-1.71',\r\n },\r\n { type: 'line', x1: 8, y1: 2, x2: 8, y2: 5 },\r\n { type: 'line', x1: 2, y1: 8, x2: 5, y2: 8 },\r\n { type: 'line', x1: 16, y1: 19, x2: 16, y2: 22 },\r\n { type: 'line', x1: 19, y1: 16, x2: 22, y2: 16 },\r\n ],\r\n },\r\n {\r\n name: 'unlock',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'rect', x: 3, y: 11, width: 18, height: 11, rx: 2, ry: 2 },\r\n { type: 'path', d: 'M7 11V7a5 5 0 019.9-1' },\r\n ],\r\n },\r\n {\r\n name: 'lock',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'rect', x: 3, y: 11, width: 18, height: 11, rx: 2, ry: 2 },\r\n { type: 'path', d: 'M7 11V7a5 5 0 0110 0v4' },\r\n ],\r\n },\r\n];\r\n","import type { SolarisIconDefinition } from '../../model/solaris-icon-definition.interface';\r\n\r\nexport const STATUS_ICONS: SolarisIconDefinition[] = [\r\n {\r\n name: 'check',\r\n viewBox: '0 0 24 24',\r\n strokeWidth: 3,\r\n elements: [{ type: 'path', d: 'M20 6 9 17l-5-5' }],\r\n },\r\n {\r\n name: 'info',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'circle', cx: 12, cy: 12, r: 10 },\r\n { type: 'path', d: 'M12 16v-4' },\r\n { type: 'path', d: 'M12 8h.01' },\r\n ],\r\n },\r\n {\r\n name: 'warning',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M10.29 3.86 1.82 18a2 2 0 0 0 1.71 3h16.94a2 2 0 0 0 1.71-3L13.71 3.86a2 2 0 0 0-3.42 0z',\r\n },\r\n { type: 'path', d: 'M12 9v4' },\r\n { type: 'path', d: 'M12 17h.01' },\r\n ],\r\n },\r\n {\r\n name: 'danger',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n {\r\n type: 'polygon',\r\n points:\r\n '7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86',\r\n },\r\n { type: 'path', d: 'm15 9-6 6' },\r\n { type: 'path', d: 'm9 9 6 6' },\r\n ],\r\n },\r\n {\r\n name: 'caution',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n {\r\n type: 'polygon',\r\n points:\r\n '7.86 2 16.14 2 22 7.86 22 16.14 16.14 22 7.86 22 2 16.14 2 7.86',\r\n },\r\n { type: 'path', d: 'M12 8v4' },\r\n { type: 'path', d: 'M12 16h.01' },\r\n ],\r\n },\r\n {\r\n name: 'success',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'circle', cx: 12, cy: 12, r: 10 },\r\n { type: 'path', d: 'm9 12 2 2 4-4' },\r\n ],\r\n },\r\n {\r\n name: 'shield-check',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10' },\r\n { type: 'path', d: 'm9 12 2 2 4-4' },\r\n ],\r\n },\r\n];\r\n","import type { SolarisIconDefinition } from '../../model/solaris-icon-definition.interface';\r\n\r\nexport const LAYOUT_ICONS: SolarisIconDefinition[] = [\r\n {\r\n name: 'list',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'line', x1: 8, y1: 6, x2: 21, y2: 6 },\r\n { type: 'line', x1: 8, y1: 12, x2: 21, y2: 12 },\r\n { type: 'line', x1: 8, y1: 18, x2: 21, y2: 18 },\r\n { type: 'line', x1: 3, y1: 6, x2: 3.01, y2: 6 },\r\n { type: 'line', x1: 3, y1: 12, x2: 3.01, y2: 12 },\r\n { type: 'line', x1: 3, y1: 18, x2: 3.01, y2: 18 },\r\n ],\r\n },\r\n {\r\n name: 'grid',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M3 3h7v7H3z' },\r\n { type: 'path', d: 'M14 3h7v7h-7z' },\r\n { type: 'path', d: 'M14 14h7v7h-7z' },\r\n { type: 'path', d: 'M3 14h7v7H3z' },\r\n ],\r\n },\r\n {\r\n name: 'columns',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M3 3h7v9H3z' },\r\n { type: 'path', d: 'M14 3h7v5h-7z' },\r\n { type: 'path', d: 'M14 12h7v9h-7z' },\r\n { type: 'path', d: 'M3 16h7v5H3z' },\r\n ],\r\n },\r\n];\r\n","import type { SolarisIconDefinition } from '../../model/solaris-icon-definition.interface';\r\n\r\nexport const THEME_ICONS: SolarisIconDefinition[] = [\r\n {\r\n name: 'sun',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'circle', cx: 12, cy: 12, r: 4 },\r\n { type: 'path', d: 'M12 2v2' },\r\n { type: 'path', d: 'M12 20v2' },\r\n { type: 'path', d: 'M5 5l1.5 1.5' },\r\n { type: 'path', d: 'M17.5 17.5L19 19' },\r\n { type: 'path', d: 'M2 12h2' },\r\n { type: 'path', d: 'M20 12h2' },\r\n { type: 'path', d: 'M5 19l1.5-1.5' },\r\n { type: 'path', d: 'M17.5 6.5L19 5' },\r\n ],\r\n },\r\n {\r\n name: 'moon',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z' },\r\n ],\r\n },\r\n {\r\n name: 'monitor',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M2 3h20v14H2z' },\r\n { type: 'path', d: 'M8 21h8' },\r\n { type: 'path', d: 'M12 17v4' },\r\n ],\r\n },\r\n];\r\n","import type { SolarisIconDefinition } from '../../model/solaris-icon-definition.interface';\r\n\r\nexport const DATA_ICONS: SolarisIconDefinition[] = [\r\n {\r\n name: 'building',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M6 2h12a2 2 0 012 2v16a2 2 0 01-2 2H6a2 2 0 01-2-2V4a2 2 0 012-2z',\r\n },\r\n { type: 'path', d: 'M9 22v-4h6v4' },\r\n { type: 'path', d: 'M8 6h.01' },\r\n { type: 'path', d: 'M16 6h.01' },\r\n { type: 'path', d: 'M12 6h.01' },\r\n { type: 'path', d: 'M12 10h.01' },\r\n { type: 'path', d: 'M12 14h.01' },\r\n { type: 'path', d: 'M16 10h.01' },\r\n { type: 'path', d: 'M16 14h.01' },\r\n { type: 'path', d: 'M8 10h.01' },\r\n { type: 'path', d: 'M8 14h.01' },\r\n ],\r\n },\r\n {\r\n name: 'eye',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z' },\r\n { type: 'circle', cx: 12, cy: 12, r: 3 },\r\n ],\r\n },\r\n {\r\n name: 'eye-off',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M17.94 17.94A10.07 10.07 0 0112 20c-7 0-11-8-11-8a18.45 18.45 0 015.06-5.94M9.9 4.24A9.12 9.12 0 0112 4c7 0 11 8 11 8a18.5 18.5 0 01-2.16 3.19m-6.72-1.07a3 3 0 11-4.24-4.24',\r\n },\r\n { type: 'line', x1: 1, y1: 1, x2: 23, y2: 23 },\r\n ],\r\n },\r\n {\r\n name: 'globe',\r\n viewBox: '0 0 24 24',\r\n elements: [\r\n { type: 'path', d: 'M15 21v-4a2 2 0 012-2h4' },\r\n {\r\n type: 'path',\r\n d: 'M7 4v2a3 3 0 003 2h0a2 2 0 012 2 2 2 0 004 0 2 2 0 012-2h3',\r\n },\r\n { type: 'path', d: 'M3 11h2a2 2 0 012 2v1a2 2 0 002 2 2 2 0 012 2v4' },\r\n { type: 'circle', cx: 12, cy: 12, r: 10 },\r\n ],\r\n },\r\n {\r\n name: 'graduation-cap',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M22 10v6M2 10l10-5 10 5-10 5z' },\r\n { type: 'path', d: 'M6 12v5c3 3 9 3 12 0v-5' },\r\n ],\r\n },\r\n {\r\n name: 'map-pin',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0118 0z' },\r\n { type: 'circle', cx: 12, cy: 10, r: 3 },\r\n ],\r\n },\r\n {\r\n name: 'message-circle',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n {\r\n type: 'path',\r\n d: 'M21 11.5a8.38 8.38 0 01-.9 3.8 8.5 8.5 0 01-7.6 4.7 8.38 8.38 0 01-3.8-.9L3 21l1.9-5.7a8.38 8.38 0 01-.9-3.8 8.5 8.5 0 014.7-7.6 8.38 8.38 0 013.8-.9h.5a8.48 8.48 0 018 8v.5z',\r\n },\r\n ],\r\n },\r\n {\r\n name: 'user',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M20 21v-2a4 4 0 00-4-4H8a4 4 0 00-4 4v2' },\r\n { type: 'circle', cx: 12, cy: 7, r: 4 },\r\n ],\r\n },\r\n {\r\n name: 'users',\r\n viewBox: '0 0 24 24',\r\n fill: 'none',\r\n stroke: 'currentColor',\r\n strokeWidth: 2,\r\n strokeLinecap: 'round',\r\n strokeLinejoin: 'round',\r\n elements: [\r\n { type: 'path', d: 'M17 21v-2a4 4 0 00-4-4H5a4 4 0 00-4 4v2' },\r\n { type: 'circle', cx: 9, cy: 7, r: 4 },\r\n { type: 'path', d: 'M23 21v-2a4 4 0 00-3-3.87' },\r\n { type: 'path', d: 'M16 3.13a4 4 0 010 7.75' },\r\n ],\r\n },\r\n];\r\n","import type { SolarisIconDefinition } from '../model/solaris-icon-definition.interface';\r\nimport { NAVIGATION_ICONS } from './groups/navigation';\r\nimport { ACTIONS_ICONS } from './groups/actions';\r\nimport { STATUS_ICONS } from './groups/status';\r\nimport { LAYOUT_ICONS } from './groups/layout';\r\nimport { THEME_ICONS } from './groups/theme';\r\nimport { DATA_ICONS } from './groups/data';\r\n\r\nexport const SOLARIS_BUILT_IN_ICONS: SolarisIconDefinition[] = [\r\n ...NAVIGATION_ICONS,\r\n ...ACTIONS_ICONS,\r\n ...STATUS_ICONS,\r\n ...THEME_ICONS,\r\n ...DATA_ICONS,\r\n ...LAYOUT_ICONS,\r\n];\r\n","import { Injectable, inject } from '@angular/core';\r\n\r\nimport type { SolarisIconDefinition } from '../model/solaris-icon-definition.interface';\r\nimport { SOLARIS_ICONS_CONFIG } from '../token/solaris-icon.tokens';\r\nimport { SOLARIS_BUILT_IN_ICONS } from '../icons';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class SolarisIconRegistryService {\r\n private readonly registry = new Map<string, SolarisIconDefinition>();\r\n\r\n constructor() {\r\n const config = inject(SOLARIS_ICONS_CONFIG, { optional: true });\r\n\r\n for (const icon of SOLARIS_BUILT_IN_ICONS) {\r\n this.registry.set(icon.name, icon);\r\n }\r\n\r\n if (config?.extraIcons) {\r\n for (const icon of config.extraIcons) {\r\n if (!this.registry.has(icon.name)) {\r\n this.registry.set(icon.name, icon);\r\n }\r\n }\r\n }\r\n }\r\n\r\n getIcon(name: string): SolarisIconDefinition | undefined {\r\n return this.registry.get(name);\r\n }\r\n\r\n hasIcon(name: string): boolean {\r\n return this.registry.has(name);\r\n }\r\n\r\n registerIcon(icon: SolarisIconDefinition): void {\r\n if (!this.registry.has(icon.name)) {\r\n this.registry.set(icon.name, icon);\r\n }\r\n }\r\n\r\n registerIcons(icons: SolarisIconDefinition[]): void {\r\n for (const icon of icons) {\r\n this.registerIcon(icon);\r\n }\r\n }\r\n}\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type { SolarisIconsConfig } from '../token/solaris-icon.tokens';\r\nimport { SOLARIS_ICONS_CONFIG } from '../token/solaris-icon.tokens';\r\n\r\nexport function provideSolarisIcons(config?: SolarisIconsConfig): Provider[] {\r\n return [\r\n {\r\n provide: SOLARIS_ICONS_CONFIG,\r\n useValue: config ?? {},\r\n },\r\n ];\r\n}\r\n","import { Component, inject, input, computed } from '@angular/core';\r\n\r\nimport { SolarisIconRegistryService } from '../../../services/icon';\r\n\r\n@Component({\r\n selector: 'solaris-icon',\r\n standalone: true,\r\n templateUrl: './solaris-icon.component.html',\r\n styleUrls: ['./solaris-icon.component.scss'],\r\n})\r\nexport class SolarisIconComponent {\r\n private readonly registry = inject(SolarisIconRegistryService);\r\n\r\n readonly name = input.required<string>();\r\n readonly ariaLabel = input<string>();\r\n readonly decorative = input(false);\r\n\r\n protected readonly definition = computed(() =>\r\n this.registry.getIcon(this.name()),\r\n );\r\n\r\n protected readonly isHidden = computed(() => this.decorative());\r\n protected readonly accessibleLabel = computed(() => this.ariaLabel() ?? '');\r\n protected readonly hasSemanticLabel = computed(\r\n () => !this.decorative() && !!this.ariaLabel(),\r\n );\r\n}\r\n","@if (definition(); as icon) {\r\n <svg\r\n width=\"100%\"\r\n height=\"100%\"\r\n [attr.viewBox]=\"icon.viewBox\"\r\n [attr.fill]=\"icon.fill ?? 'none'\"\r\n [attr.stroke]=\"icon.stroke ?? 'currentColor'\"\r\n [attr.stroke-width]=\"icon.strokeWidth ?? 2\"\r\n [attr.stroke-linecap]=\"icon.strokeLinecap ?? 'round'\"\r\n [attr.stroke-linejoin]=\"icon.strokeLinejoin ?? 'round'\"\r\n [attr.aria-hidden]=\"isHidden() ? 'true' : null\"\r\n [attr.aria-label]=\"hasSemanticLabel() ? accessibleLabel() : null\"\r\n [attr.role]=\"isHidden() ? 'presentation' : 'img'\"\r\n >\r\n @for (element of icon.elements; track $index) {\r\n @switch (element.type) {\r\n @case ('path') {\r\n <path [attr.d]=\"element.d\" />\r\n }\r\n @case ('line') {\r\n <line\r\n [attr.x1]=\"element.x1\"\r\n [attr.y1]=\"element.y1\"\r\n [attr.x2]=\"element.x2\"\r\n [attr.y2]=\"element.y2\"\r\n />\r\n }\r\n @case ('polyline') {\r\n <polyline [attr.points]=\"element.points\" />\r\n }\r\n @case ('polygon') {\r\n <polygon [attr.points]=\"element.points\" />\r\n }\r\n @case ('circle') {\r\n <circle\r\n [attr.cx]=\"element.cx\"\r\n [attr.cy]=\"element.cy\"\r\n [attr.r]=\"element.r\"\r\n />\r\n }\r\n @case ('rect') {\r\n <rect\r\n [attr.x]=\"element.x\"\r\n [attr.y]=\"element.y\"\r\n [attr.width]=\"element.width\"\r\n [attr.height]=\"element.height\"\r\n [attr.rx]=\"element.rx\"\r\n [attr.ry]=\"element.ry\"\r\n />\r\n }\r\n }\r\n }\r\n </svg>\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\nimport type {\r\n SolarisBadgeAppearance,\r\n SolarisBadgeColor,\r\n SolarisBadgeSize,\r\n SolarisBadgeRadius,\r\n SolarisBadgeVariant,\r\n SolarisBadgeDensity,\r\n} from '../model/badge.types';\r\n\r\n@Component({\r\n selector: 'solaris-badge',\r\n standalone: true,\r\n templateUrl: './badge.component.html',\r\n styleUrls: ['./badge.component.scss'],\r\n host: {\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'color()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-density]': 'density()',\r\n },\r\n})\r\nexport class SolarisBadgeComponent {\r\n readonly appearance = input<SolarisBadgeAppearance>('tonal');\r\n readonly variant = input<SolarisBadgeVariant>('standard');\r\n readonly color = input<SolarisBadgeColor>('neutral');\r\n readonly radius = input<SolarisBadgeRadius>('full');\r\n readonly density = input<SolarisBadgeDensity>();\r\n readonly size = input<SolarisBadgeSize>('md');\r\n}\r\n","<ng-content />\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-badge-icon]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-badge-icon',\r\n },\r\n})\r\nexport class SolarisBadgeIconDirective {}\r\n","import { Component, input } from '@angular/core';\r\n\r\nimport type {\r\n SolarisCardAppearance,\r\n SolarisCardRadius,\r\n SolarisCardDensity,\r\n SolarisCardGlassTexture,\r\n} from '../model/card.types';\r\n\r\n@Component({\r\n selector: 'solaris-card',\r\n standalone: true,\r\n templateUrl: './card.component.html',\r\n styleUrls: ['./card.component.scss'],\r\n host: {\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-glass-texture]':\r\n 'appearance() === \"glass\" && glassTexture() !== \"none\" ? glassTexture() : null',\r\n },\r\n})\r\nexport class SolarisCardComponent {\r\n readonly appearance = input<SolarisCardAppearance>('surface');\r\n readonly radius = input<SolarisCardRadius>('lg');\r\n readonly density = input<SolarisCardDensity>();\r\n readonly glassTexture = input<SolarisCardGlassTexture>('none');\r\n}\r\n","<ng-content />\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-header]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-header',\r\n },\r\n})\r\nexport class SolarisCardHeaderDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-content]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-content',\r\n },\r\n})\r\nexport class SolarisCardContentDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-media]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-media',\r\n },\r\n})\r\nexport class SolarisCardMediaDirective {}\r\n","import { Directive, input } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-footer]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-footer',\r\n '[attr.data-separator]': \"separator() ? '' : null\",\r\n },\r\n})\r\nexport class SolarisCardFooterDirective {\r\n readonly separator = input<boolean>(false);\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-actions]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-actions',\r\n },\r\n})\r\nexport class SolarisCardActionsDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-title]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-title',\r\n },\r\n})\r\nexport class SolarisCardTitleDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-card-description]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-card-description',\r\n },\r\n})\r\nexport class SolarisCardDescriptionDirective {}\r\n","import { Component, inject, input, computed, output } from '@angular/core';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\nimport type {\r\n SolarisAlertVariant,\r\n SolarisAlertAppearance,\r\n SolarisAlertRadius,\r\n SolarisAlertDensity,\r\n SolarisAlertLive,\r\n} from '../model/alert.types';\r\n\r\n@Component({\r\n selector: 'solaris-alert',\r\n standalone: true,\r\n imports: [SolarisIconComponent],\r\n templateUrl: './alert.component.html',\r\n styleUrls: ['./alert.component.scss'],\r\n host: {\r\n '[attr.role]': 'liveRole()',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.aria-live]': 'ariaLive()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-closable]': 'closable() ? \"\" : null',\r\n '[attr.data-has-title]': 'hasTitle() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisAlertComponent {\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n readonly appearance = input<SolarisAlertAppearance>('tonal');\r\n readonly variant = input<SolarisAlertVariant>('info');\r\n readonly radius = input<SolarisAlertRadius>('md');\r\n readonly live = input<SolarisAlertLive>('off');\r\n readonly density = input<SolarisAlertDensity>();\r\n readonly closable = input<boolean>(false);\r\n readonly hasTitle = input<boolean>(false);\r\n readonly showIcon = input<boolean>(true);\r\n readonly closeLabelKey = input<string>();\r\n readonly closeLabel = input<string>();\r\n readonly icon = input<string>();\r\n\r\n readonly dismissed = output<void>();\r\n\r\n protected readonly iconName = computed<string>(() => {\r\n const custom = this.icon();\r\n if (custom) {\r\n return custom;\r\n }\r\n const v = this.variant();\r\n switch (v) {\r\n case 'neutral':\r\n return 'info';\r\n case 'info':\r\n return 'info';\r\n case 'success':\r\n return 'success';\r\n case 'warning':\r\n return 'warning';\r\n case 'danger':\r\n return 'danger';\r\n default:\r\n return 'info';\r\n }\r\n });\r\n\r\n protected readonly liveRole = computed<string | null>(() => {\r\n const l = this.live();\r\n if (l === 'assertive') {\r\n return 'alert';\r\n }\r\n if (l === 'polite') {\r\n return 'status';\r\n }\r\n return null;\r\n });\r\n\r\n protected readonly ariaLive = computed<string | null>(() => {\r\n const l = this.live();\r\n if (l === 'polite') {\r\n return 'polite';\r\n }\r\n if (l === 'assertive') {\r\n return 'assertive';\r\n }\r\n return null;\r\n });\r\n\r\n private readonly defaultCloseKey = 'solaris.alert.close';\r\n private readonly defaultCloseLabel = 'Close alert';\r\n\r\n protected readonly closeButtonLabel = computed<string>(() => {\r\n const explicit = this.closeLabel();\r\n if (explicit) {\r\n return explicit;\r\n }\r\n\r\n const key = this.closeLabelKey() ?? this.defaultCloseKey;\r\n const translated = this.translateService.translate(key);\r\n\r\n return translated !== key ? translated : this.defaultCloseLabel;\r\n });\r\n\r\n protected handleClose(): void {\r\n this.dismissed.emit();\r\n }\r\n}\r\n","@if (showIcon()) {\r\n <div class=\"solaris-alert__icon\">\r\n <solaris-icon [name]=\"iconName()\" [decorative]=\"true\" />\r\n </div>\r\n}\r\n\r\n<div class=\"solaris-alert__content\">\r\n <ng-content />\r\n</div>\r\n\r\n@if (closable()) {\r\n <div class=\"solaris-alert__close-slot\">\r\n <button\r\n type=\"button\"\r\n class=\"solaris-alert__close\"\r\n [attr.aria-label]=\"closeButtonLabel()\"\r\n (click)=\"handleClose()\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n </div>\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-alert-actions',\r\n standalone: true,\r\n template: '<ng-content />',\r\n host: {\r\n class: 'solaris-alert-actions',\r\n },\r\n})\r\nexport class SolarisAlertActionsComponent {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-alert-title]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-alert-title',\r\n },\r\n})\r\nexport class SolarisAlertTitleDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-alert-description]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-alert-description',\r\n },\r\n})\r\nexport class SolarisAlertDescriptionDirective {}\r\n","import {\r\n Directive,\r\n input,\r\n computed,\r\n HostListener,\r\n inject,\r\n ElementRef,\r\n} from '@angular/core';\r\n\r\nimport type {\r\n SolarisButtonAppearance,\r\n SolarisButtonColor,\r\n SolarisButtonSize,\r\n SolarisButtonRadius,\r\n SolarisButtonDensity,\r\n} from '../model/button.types';\r\n\r\n@Directive({\r\n selector: '[solaris-button]',\r\n standalone: true,\r\n host: {\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'color()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-loading]': 'loading() ? \"\" : null',\r\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\r\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n '[attr.aria-disabled]': 'isEffectivelyDisabled() ? \"true\" : null',\r\n '[attr.disabled]': 'isButton && isEffectivelyDisabled() ? \"\" : null',\r\n '[tabindex]': 'isAnchor && isEffectivelyDisabled() ? \"-1\" : null',\r\n },\r\n})\r\nexport class SolarisButtonDirective {\r\n readonly appearance = input<SolarisButtonAppearance>('solid');\r\n readonly color = input<SolarisButtonColor>('neutral');\r\n readonly radius = input<SolarisButtonRadius>('md');\r\n readonly size = input<SolarisButtonSize>('md');\r\n readonly density = input<SolarisButtonDensity>();\r\n readonly loading = input<boolean>(false);\r\n readonly disabled = input<boolean>(false);\r\n readonly fullWidth = input<boolean>(false);\r\n readonly loadingLabelKey = input<string>();\r\n readonly loadingLabel = input<string>();\r\n\r\n protected readonly isEffectivelyDisabled = computed(\r\n () => this.disabled() || this.loading(),\r\n );\r\n\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.tagName is the standard Angular API to differentiate <button> vs <a> for correct disabled/type behavior.\r\n protected readonly isButton =\r\n this.elementRef.nativeElement.tagName === 'BUTTON';\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.tagName is the standard Angular API to differentiate <button> vs <a> for correct disabled/type behavior.\r\n protected readonly isAnchor = this.elementRef.nativeElement.tagName === 'A';\r\n\r\n constructor() {\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.getAttribute/setAttribute is the standard Angular approach to handle default button type.\r\n const initialType = this.elementRef.nativeElement.getAttribute('type');\r\n if (this.isButton && initialType === null) {\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.setAttribute required for default <button> type behavior.\r\n this.elementRef.nativeElement.setAttribute('type', 'button');\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.isEffectivelyDisabled() && this.isAnchor) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-button-icon]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-button-icon',\r\n },\r\n})\r\nexport class SolarisButtonIconDirective {}\r\n","import {\r\n Directive,\r\n HostListener,\r\n ElementRef,\r\n inject,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\n\r\nimport type {\r\n SolarisIconButtonAppearance,\r\n SolarisIconButtonColor,\r\n SolarisIconButtonSize,\r\n SolarisIconButtonRadius,\r\n SolarisIconButtonDensity,\r\n} from '../model/icon-button.types';\r\n\r\n@Directive({\r\n selector: '[solaris-icon-button]',\r\n standalone: true,\r\n host: {\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'color()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-loading]': 'loading() ? \"\" : null',\r\n '[attr.aria-busy]': 'loading() ? \"true\" : null',\r\n '[attr.aria-disabled]': 'isEffectivelyDisabled() ? \"true\" : null',\r\n '[attr.disabled]': 'isButton && isEffectivelyDisabled() ? \"\" : null',\r\n '[tabindex]': 'isAnchor && isEffectivelyDisabled() ? \"-1\" : null',\r\n },\r\n})\r\nexport class SolarisIconButtonDirective {\r\n readonly appearance = input<SolarisIconButtonAppearance>('solid');\r\n readonly color = input<SolarisIconButtonColor>('neutral');\r\n readonly radius = input<SolarisIconButtonRadius>('md');\r\n readonly size = input<SolarisIconButtonSize>('md');\r\n readonly density = input<SolarisIconButtonDensity>();\r\n readonly ariaLabelKey = input<string | undefined>();\r\n readonly ariaLabel = input<string | undefined>();\r\n readonly disabled = input<boolean>(false);\r\n readonly loading = input<boolean>(false);\r\n\r\n protected readonly isEffectivelyDisabled = computed(\r\n () => this.disabled() || this.loading(),\r\n );\r\n\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.tagName is the standard Angular API to differentiate <button> vs <a> for correct disabled/type behavior.\r\n protected readonly isButton =\r\n this.elementRef.nativeElement.tagName === 'BUTTON';\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.tagName is the standard Angular API to differentiate <button> vs <a> for correct disabled/type behavior.\r\n protected readonly isAnchor = this.elementRef.nativeElement.tagName === 'A';\r\n\r\n constructor() {\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.getAttribute/setAttribute is the standard Angular approach to handle default button type.\r\n const initialType = this.elementRef.nativeElement.getAttribute('type');\r\n if (this.isButton && initialType === null) {\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement.setAttribute required for default <button> type behavior.\r\n this.elementRef.nativeElement.setAttribute('type', 'button');\r\n }\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n onClick(event: MouseEvent): void {\r\n if (this.isEffectivelyDisabled() && this.isAnchor) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-icon-button-badge]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-icon-button-badge',\r\n },\r\n})\r\nexport class SolarisIconButtonBadgeDirective {}\r\n","import { Component, input } from '@angular/core';\r\n\r\nimport type {\r\n SolarisButtonGroupOrientation,\r\n SolarisButtonGroupDensity,\r\n} from '../model/button-group.types';\r\n\r\n@Component({\r\n selector: 'solaris-button-group',\r\n standalone: true,\r\n templateUrl: './button-group.component.html',\r\n styleUrls: ['./button-group.component.scss'],\r\n host: {\r\n role: 'group',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-attached]': 'attached() ? \"\" : null',\r\n '[attr.data-density]': 'density() ?? null',\r\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisButtonGroupComponent {\r\n readonly orientation = input<SolarisButtonGroupOrientation>('horizontal');\r\n readonly attached = input<boolean>(true);\r\n readonly density = input<SolarisButtonGroupDensity>();\r\n readonly fullWidth = input<boolean>(false);\r\n}\r\n","<ng-content />\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-option-leading]',\r\n standalone: true,\r\n})\r\nexport class SolarisOptionLeadingDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-option-label]',\r\n standalone: true,\r\n})\r\nexport class SolarisOptionLabelDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-option-description]',\r\n standalone: true,\r\n})\r\nexport class SolarisOptionDescriptionDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-option-meta]',\r\n standalone: true,\r\n})\r\nexport class SolarisOptionMetaDirective {}\r\n\r\n@Directive({\r\n selector: '[solaris-option-trailing]',\r\n standalone: true,\r\n})\r\nexport class SolarisOptionTrailingDirective {}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n inject,\r\n ElementRef,\r\n contentChild,\r\n HostListener,\r\n} from '@angular/core';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\n\r\nimport type {\r\n SolarisOptionSize,\r\n SolarisOptionDensity,\r\n SolarisOptionSelectionMode,\r\n} from '../model/option.types';\r\n\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\nimport {\r\n SolarisOptionLeadingDirective,\r\n SolarisOptionLabelDirective,\r\n SolarisOptionDescriptionDirective,\r\n SolarisOptionMetaDirective,\r\n SolarisOptionTrailingDirective,\r\n} from '../directives/option-slots.directive';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-option-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-option',\r\n standalone: true,\r\n imports: [SolarisIconComponent],\r\n templateUrl: './option.component.html',\r\n styleUrls: ['./option.component.scss'],\r\n host: {\r\n role: 'option',\r\n '[attr.aria-selected]': 'ariaSelected()',\r\n '[attr.aria-disabled]': 'isEffectivelyDisabled() ? \"true\" : null',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-selected]': 'selected() ? \"\" : null',\r\n '[attr.data-active]': 'effectiveActive() ? \"\" : null',\r\n '[attr.data-highlighted]': 'highlighted() ? \"\" : null',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-selection-mode]': 'effectiveSelectionMode()',\r\n '[attr.data-show-indicator]':\r\n 'effectiveShowSelectionIndicator() ? \"\" : null',\r\n '[attr.id]': 'elementId()',\r\n '[style.display]': 'internalHidden() ? \"none\" : \"\"',\r\n },\r\n})\r\nexport class SolarisOptionComponent {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n protected readonly groupDisabled = signal(false);\r\n private readonly internalSelected = signal<boolean | undefined>(undefined);\r\n private readonly internalActive = signal<boolean | undefined>(undefined);\r\n protected readonly internalHidden = signal(false);\r\n private readonly internalSelectionMode = signal<\r\n SolarisOptionSelectionMode | undefined\r\n >(undefined);\r\n private readonly internalShowSelectionIndicator = signal<boolean | undefined>(\r\n undefined,\r\n );\r\n\r\n protected readonly leadingSlot = contentChild(SolarisOptionLeadingDirective);\r\n protected readonly labelSlot = contentChild(SolarisOptionLabelDirective);\r\n protected readonly descriptionSlot = contentChild(\r\n SolarisOptionDescriptionDirective,\r\n );\r\n protected readonly metaSlot = contentChild(SolarisOptionMetaDirective);\r\n protected readonly trailingSlot = contentChild(\r\n SolarisOptionTrailingDirective,\r\n );\r\n\r\n readonly value = input<unknown>();\r\n readonly optionLabel = input<string>(undefined, { alias: 'label' });\r\n readonly labelKey = input<string>();\r\n readonly description = input<string>();\r\n readonly descriptionKey = input<string>();\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly selectedInput = input<boolean, boolean>(false, {\r\n alias: 'selected',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n\r\n protected readonly selected = computed(\r\n () => this.internalSelected() ?? this.selectedInput(),\r\n );\r\n\r\n setSelected(isSelected: boolean): void {\r\n this.internalSelected.set(isSelected);\r\n }\r\n\r\n setActive(v: boolean): void {\r\n this.internalActive.set(v);\r\n }\r\n\r\n setHidden(v: boolean): void {\r\n this.internalHidden.set(v);\r\n }\r\n\r\n setSelectionMode(mode: SolarisOptionSelectionMode): void {\r\n this.internalSelectionMode.set(mode);\r\n }\r\n\r\n setShowSelectionIndicator(show: boolean): void {\r\n this.internalShowSelectionIndicator.set(show);\r\n }\r\n\r\n protected readonly effectiveSelectionMode = computed(() => {\r\n return this.internalSelectionMode() ?? this.selectionMode();\r\n });\r\n\r\n protected readonly effectiveShowSelectionIndicator = computed(() => {\r\n const internal = this.internalShowSelectionIndicator();\r\n return internal !== undefined ? internal : this.showSelectionIndicator();\r\n });\r\n\r\n protected readonly effectiveActive = computed(\r\n () => this.internalActive() ?? this.active(),\r\n );\r\n\r\n readonly active = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly highlighted = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly selectionMode = input<SolarisOptionSelectionMode>('none');\r\n readonly showSelectionIndicator = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly size = input<SolarisOptionSize>('md');\r\n readonly density = input<SolarisOptionDensity>();\r\n readonly optionId = input<string>(undefined, { alias: 'id' });\r\n\r\n readonly optionInteraction = output<{\r\n option: SolarisOptionComponent;\r\n event: MouseEvent;\r\n }>();\r\n\r\n protected readonly elementId = computed(() => {\r\n return (\r\n this.optionId() ||\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK form controls and Solaris Checkbox.\r\n this.elementRef.nativeElement.getAttribute('id') ||\r\n generateId()\r\n );\r\n });\r\n\r\n protected readonly effectiveDensity = computed<SolarisOptionDensity>(() => {\r\n return this.density() ?? 'comfortable';\r\n });\r\n\r\n readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.groupDisabled();\r\n });\r\n\r\n protected readonly ariaSelected = computed(() => {\r\n if (\r\n this.effectiveSelectionMode() === 'none' ||\r\n !this.effectiveShowSelectionIndicator()\r\n ) {\r\n return null;\r\n }\r\n return this.selected() ? 'true' : 'false';\r\n });\r\n\r\n readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n if (translated !== key) return translated;\r\n return this.optionLabel() ?? key;\r\n }\r\n return this.optionLabel();\r\n });\r\n\r\n readonly descriptionText = computed(() => {\r\n const key = this.descriptionKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n if (translated !== key) return translated;\r\n return this.description() ?? key;\r\n }\r\n return this.description();\r\n });\r\n\r\n protected readonly showSelectionVisual = computed(() => {\r\n return (\r\n this.effectiveShowSelectionIndicator() &&\r\n this.effectiveSelectionMode() !== 'none'\r\n );\r\n });\r\n\r\n protected readonly isCheckSelection = computed(() => {\r\n return (\r\n this.effectiveSelectionMode() === 'single' && this.showSelectionVisual()\r\n );\r\n });\r\n\r\n protected readonly isMultiCheckSelection = computed(() => {\r\n return (\r\n this.effectiveSelectionMode() === 'multiple' && this.showSelectionVisual()\r\n );\r\n });\r\n\r\n setGroupDisabledState(isDisabled: boolean): void {\r\n this.groupDisabled.set(isDisabled);\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n protected onClick(event: MouseEvent): void {\r\n if (this.isEffectivelyDisabled()) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n return;\r\n }\r\n this.optionInteraction.emit({ option: this, event });\r\n }\r\n}\r\n","<div class=\"solaris-option\">\r\n @if (leadingSlot()) {\r\n <div class=\"solaris-option__leading\">\r\n <ng-content select=\"[solaris-option-leading]\" />\r\n </div>\r\n }\r\n\r\n @if (showSelectionVisual()) {\r\n <div class=\"solaris-option__selection-indicator\" aria-hidden=\"true\">\r\n @if (isMultiCheckSelection()) {\r\n <span\r\n class=\"solaris-option__checkbox\"\r\n [class.solaris-option__checkbox--checked]=\"selected()\"\r\n >\r\n @if (selected()) {\r\n <span class=\"solaris-option__checkbox-icon\">\r\n <solaris-icon name=\"check\" [decorative]=\"true\" />\r\n </span>\r\n }\r\n </span>\r\n }\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-option__content\">\r\n <div class=\"solaris-option__label\">\r\n @if (labelSlot()) {\r\n <ng-content select=\"[solaris-option-label]\" />\r\n }\r\n <ng-content />\r\n @if (!labelSlot() && labelText(); as text) {\r\n <span class=\"solaris-option__label-text\">{{ text }}</span>\r\n }\r\n </div>\r\n\r\n @if (descriptionSlot()) {\r\n <div class=\"solaris-option__description\">\r\n <ng-content select=\"[solaris-option-description]\" />\r\n </div>\r\n } @else if (descriptionText(); as desc) {\r\n <div class=\"solaris-option__description\">\r\n <span class=\"solaris-option__description-text\">{{ desc }}</span>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (metaSlot()) {\r\n <div class=\"solaris-option__meta\">\r\n <ng-content select=\"[solaris-option-meta]\" />\r\n </div>\r\n }\r\n\r\n @if (trailingSlot() || selected()) {\r\n <div class=\"solaris-option__trailing\">\r\n <ng-content select=\"[solaris-option-trailing]\" />\r\n @if (selected()) {\r\n <span class=\"solaris-option__trailing-check\">\r\n <solaris-icon name=\"check\" [decorative]=\"true\" />\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n effect,\r\n inject,\r\n ElementRef,\r\n ContentChildren,\r\n QueryList,\r\n type AfterContentInit,\r\n type OnDestroy,\r\n} from '@angular/core';\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntype Subscription = any;\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisOptionComponent } from '../../option';\r\n\r\nimport type {\r\n SolarisOptionGroupSize,\r\n SolarisOptionGroupDensity,\r\n} from '../model/option-group.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-option-group-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-option-group',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './option-group.component.html',\r\n styleUrls: ['./option-group.component.scss'],\r\n host: {\r\n role: 'group',\r\n '[attr.id]': 'elementId()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.aria-label]': 'effectiveAriaLabel() ?? null',\r\n '[attr.aria-labelledby]': 'ariaLabelledBy()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[style.display]': 'internalHidden() ? \"none\" : \"\"',\r\n },\r\n})\r\nexport class SolarisOptionGroupComponent\r\n implements AfterContentInit, OnDestroy\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n @ContentChildren(SolarisOptionComponent, { descendants: true })\r\n options!: QueryList<SolarisOptionComponent>;\r\n\r\n readonly label = input<string>();\r\n readonly labelKey = input<string>();\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly size = input<SolarisOptionGroupSize>('md');\r\n readonly density = input<SolarisOptionGroupDensity>();\r\n readonly groupId = input<string>(undefined, { alias: 'id' });\r\n\r\n protected readonly contentInitialized = signal(false);\r\n protected readonly internalHidden = signal(false);\r\n\r\n protected readonly elementId = computed(() => {\r\n return (\r\n this.groupId() ||\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK form controls and Solaris Checkbox.\r\n this.elementRef.nativeElement.getAttribute('id') ||\r\n generateId()\r\n );\r\n });\r\n\r\n protected readonly labelId = computed(() => `${this.elementId()}-label`);\r\n\r\n protected readonly effectiveDensity = computed<SolarisOptionGroupDensity>(\r\n () => {\r\n return this.density() ?? 'comfortable';\r\n },\r\n );\r\n\r\n readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput();\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n if (translated !== key) return translated;\r\n return this.label() ?? key;\r\n }\r\n return this.label();\r\n });\r\n\r\n protected readonly effectiveAriaLabel = computed(() => {\r\n return this.labelText() ?? null;\r\n });\r\n\r\n protected readonly ariaLabelledBy = computed(() => {\r\n if (this.labelText()) {\r\n return this.labelId();\r\n }\r\n return null;\r\n });\r\n\r\n private optionQuerySubscription: Subscription | null = null;\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInitialized.set(true);\r\n this.propagateDisabledToOptions();\r\n\r\n this.optionQuerySubscription = this.options.changes.subscribe(() => {\r\n this.propagateDisabledToOptions();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.optionQuerySubscription) {\r\n this.optionQuerySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n setHidden(v: boolean): void {\r\n this.internalHidden.set(v);\r\n }\r\n\r\n private propagateDisabledToOptions(): void {\r\n if (!this.options) return;\r\n const isDisabled = this.isEffectivelyDisabled();\r\n this.options.forEach((option) => {\r\n option.setGroupDisabledState(isDisabled);\r\n });\r\n }\r\n\r\n private readonly _disabledEffect = effect(() => {\r\n if (!this.contentInitialized()) return;\r\n this.isEffectivelyDisabled();\r\n this.propagateDisabledToOptions();\r\n });\r\n}\r\n","<div class=\"solaris-option-group\">\r\n @if (labelText(); as groupLabel) {\r\n <div class=\"solaris-option-group__label\" [id]=\"labelId()\">\r\n {{ groupLabel }}\r\n </div>\r\n }\r\n <div class=\"solaris-option-group__options\">\r\n <ng-content />\r\n </div>\r\n</div>\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-form-prefix]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-form-prefix',\r\n },\r\n})\r\nexport class SolarisFormPrefixDirective {}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-form-suffix]',\r\n standalone: true,\r\n host: {\r\n class: 'solaris-form-suffix',\r\n },\r\n})\r\nexport class SolarisFormSuffixDirective {}\r\n","export abstract class SolarisFormControl {\r\n abstract id: string;\r\n abstract focused: boolean;\r\n abstract disabled: boolean;\r\n abstract readonly: boolean;\r\n abstract invalid: boolean;\r\n abstract required: boolean;\r\n abstract describedByIds: string[];\r\n abstract setDescribedByIds(ids: string[]): void;\r\n abstract focus(): void;\r\n}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-form-label',\r\n standalone: true,\r\n template: '<ng-content />',\r\n host: {\r\n class: 'solaris-form-label',\r\n },\r\n})\r\nexport class SolarisFormLabelComponent {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-form-error',\r\n standalone: true,\r\n template: '<ng-content />',\r\n host: {\r\n class: 'solaris-form-error',\r\n role: 'alert',\r\n },\r\n})\r\nexport class SolarisFormErrorComponent {}\r\n","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-form-hint',\r\n standalone: true,\r\n template: '<ng-content />',\r\n host: {\r\n class: 'solaris-form-hint',\r\n },\r\n})\r\nexport class SolarisFormHintComponent {}\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n effect,\r\n ContentChild,\r\n AfterContentInit,\r\n OnDestroy,\r\n ElementRef,\r\n inject,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { FormControlDirective, FormControlName, NgModel } from '@angular/forms';\r\n\r\nimport { SolarisFormPrefixDirective } from '../directives/form-prefix.directive';\r\nimport { SolarisFormSuffixDirective } from '../directives/form-suffix.directive';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisFormControl } from '../model/form-control.contract';\r\nimport { SolarisFormLabelComponent } from './form-label.component';\r\nimport { SolarisFormErrorComponent } from './form-error.component';\r\nimport { SolarisFormHintComponent } from './form-hint.component';\r\n\r\nimport type {\r\n SolarisFormFieldAppearance,\r\n SolarisFormFieldSize,\r\n SolarisFormFieldDensity,\r\n SolarisFormFieldRadius,\r\n ControlResize,\r\n} from '../model/form-field.types';\r\n\r\nlet nextId = 0;\r\nfunction generateId(): string {\r\n return `solaris-form-field-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-form-field',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss'],\r\n host: {\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-bwignore]': '\"true\"',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-control-type]': 'controlType()',\r\n '[attr.data-control-resize]': 'controlResize()',\r\n '[attr.data-invalid]': 'isInvalid() ? \"\" : null',\r\n '[attr.data-focused]': 'isFocused() ? \"\" : null',\r\n '[attr.data-has-prefix]': 'hasPrefix() ? \"\" : null',\r\n '[attr.data-has-suffix]': 'hasSuffix() ? \"\" : null',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisFormFieldComponent implements AfterContentInit, OnDestroy {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n constructor() {\r\n // SECURITY_EXCEPTION: Setting disabled/readonly on native control is standard DOM API.\r\n // SECURITY_EXCEPTION: Required for FormField to propagate disabled/readonly state to projected control.\r\n effect(() => {\r\n this.isEffectivelyDisabled();\r\n this.isEffectivelyReadonly();\r\n this.syncControlDisabledReadonly();\r\n });\r\n }\r\n\r\n readonly hintKey = input<string>();\r\n readonly labelKey = input<string>();\r\n readonly hint = input<string>('');\r\n readonly errorKey = input<string>();\r\n readonly label = input<string>('');\r\n readonly error = input<string>('');\r\n readonly optionalLabel = input<string>();\r\n readonly requiredLabel = input<string>();\r\n readonly optionalLabelKey = input<string>();\r\n readonly requiredLabelKey = input<string>();\r\n readonly required = input<boolean>(false);\r\n readonly optional = input<boolean>(false);\r\n readonly invalid = input<boolean | undefined>();\r\n readonly disabled = input<boolean | undefined>();\r\n readonly readonly = input<boolean | undefined>();\r\n readonly density = input<SolarisFormFieldDensity>();\r\n readonly size = input<SolarisFormFieldSize>('md');\r\n readonly radius = input<SolarisFormFieldRadius>('md');\r\n readonly appearance = input<SolarisFormFieldAppearance>('outline');\r\n readonly control = input<SolarisFormControl | undefined>(undefined);\r\n\r\n @ContentChild(SolarisFormLabelComponent)\r\n protected projectedLabel?: SolarisFormLabelComponent;\r\n @ContentChild(SolarisFormHintComponent)\r\n protected projectedHint?: SolarisFormHintComponent;\r\n @ContentChild(SolarisFormErrorComponent)\r\n protected projectedError?: SolarisFormErrorComponent;\r\n @ContentChild(SolarisFormPrefixDirective)\r\n protected prefix?: SolarisFormPrefixDirective;\r\n @ContentChild(SolarisFormSuffixDirective)\r\n protected suffix?: SolarisFormSuffixDirective;\r\n @ContentChild(SolarisFormControl)\r\n protected formControl?: SolarisFormControl;\r\n @ContentChild(FormControlDirective)\r\n protected formControlDirective?: FormControlDirective;\r\n @ContentChild(FormControlName)\r\n protected formControlName?: FormControlName;\r\n @ContentChild(NgModel)\r\n protected ngModelDir?: NgModel;\r\n\r\n protected readonly fieldId = generateId();\r\n protected readonly hintId = `solaris-form-field-hint-${this.fieldId}`;\r\n protected readonly errorId = `solaris-form-field-error-${this.fieldId}`;\r\n protected readonly labelId = `solaris-form-field-label-${this.fieldId}`;\r\n\r\n protected readonly isFocused = signal(false);\r\n protected readonly isTextareaControl = signal(false);\r\n protected readonly autoDetectedDisabled = signal(false);\r\n protected readonly autoDetectedReadonly = signal(false);\r\n protected readonly controlResize = signal<ControlResize | null>(null);\r\n\r\n protected readonly maxLength = signal<number | undefined>(undefined);\r\n protected readonly currentLength = signal<number>(0);\r\n protected readonly showCharacterCounter = computed(() => {\r\n const max = this.maxLength();\r\n return max !== undefined && max > 0;\r\n });\r\n protected readonly characterCounterText = computed(() => {\r\n const max = this.maxLength();\r\n if (max === undefined || max <= 0) return '';\r\n const current = this.currentLength();\r\n return `${current}/${max}`;\r\n });\r\n protected readonly characterCounterSeverity = computed<\r\n 'normal' | 'warning' | 'danger'\r\n >(() => {\r\n const max = this.maxLength();\r\n const current = this.currentLength();\r\n if (max === undefined || max <= 0) return 'normal';\r\n const ratio = current / max;\r\n if (ratio >= 1) return 'danger';\r\n if (ratio >= 0.9) return 'warning';\r\n return 'normal';\r\n });\r\n\r\n protected controlId: string | null = null;\r\n private controlElement: HTMLElement | null = null;\r\n private focusListener: (() => void) | null = null;\r\n private blurListener: (() => void) | null = null;\r\n private inputListener: (() => void) | null = null;\r\n\r\n protected readonly hasProjectedLabel = computed(() => !!this.projectedLabel);\r\n protected readonly hasProjectedHint = computed(() => !!this.projectedHint);\r\n protected readonly hasProjectedError = computed(() => !!this.projectedError);\r\n protected readonly hasPrefix = signal(false);\r\n protected readonly hasSuffix = signal(false);\r\n\r\n protected readonly controlType = computed<\r\n 'input' | 'textarea' | 'select' | 'other'\r\n >(() => {\r\n return this.isTextareaControl() ? 'textarea' : 'other';\r\n });\r\n\r\n protected readonly effectiveDensity = computed<SolarisFormFieldDensity>(\r\n () => {\r\n return this.density() ?? 'comfortable';\r\n },\r\n );\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.label();\r\n });\r\n\r\n protected readonly hintText = computed(() => {\r\n const key = this.hintKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.hint();\r\n });\r\n\r\n protected readonly errorText = computed(() => {\r\n const key = this.errorKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.error();\r\n });\r\n\r\n protected readonly optionalLabelText = computed(() => {\r\n const key = this.optionalLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const explicit = this.optionalLabel();\r\n if (explicit) {\r\n return explicit;\r\n }\r\n return this.translateService.translate('solaris.form-field.optional');\r\n });\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n const manual = this.disabled();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n return explicitControl.disabled;\r\n }\r\n if (this.formControl) {\r\n return this.formControl.disabled;\r\n }\r\n return this.autoDetectedDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n const manual = this.readonly();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n return explicitControl.readonly;\r\n }\r\n if (this.formControl) {\r\n return this.formControl.readonly;\r\n }\r\n return this.autoDetectedReadonly();\r\n });\r\n\r\n protected readonly effectiveNgControl = computed(() => {\r\n return (\r\n this.formControlDirective ??\r\n this.formControlName ??\r\n this.ngModelDir ??\r\n null\r\n );\r\n });\r\n\r\n protected readonly isAutoInvalid = computed(() => {\r\n const control = this.effectiveNgControl();\r\n if (!control?.control) {\r\n return false;\r\n }\r\n const ctrl = control.control;\r\n const invalid = ctrl.invalid;\r\n const touched = ctrl.touched;\r\n const dirty = ctrl.dirty;\r\n const focused = this.isFocused();\r\n if (!invalid) {\r\n return false;\r\n }\r\n if (focused) {\r\n return false;\r\n }\r\n return touched || dirty;\r\n });\r\n\r\n protected readonly isInvalid = computed(() => {\r\n const manual = this.invalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n return explicitControl.invalid;\r\n }\r\n if (this.formControl) {\r\n return this.formControl.invalid && !this.isFocused();\r\n }\r\n return this.isAutoInvalid();\r\n });\r\n\r\n protected readonly showError = computed(() => {\r\n return this.isInvalid() && (!!this.errorText() || this.hasProjectedError());\r\n });\r\n\r\n protected readonly showHint = computed(() => {\r\n if (this.showError()) {\r\n return false;\r\n }\r\n return !!this.hintText() || this.hasProjectedHint();\r\n });\r\n\r\n protected readonly describedBy = computed(() => {\r\n const ids: string[] = [];\r\n if (this.showHint()) {\r\n ids.push(this.hintId);\r\n }\r\n if (this.showError()) {\r\n ids.push(this.errorId);\r\n }\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n ngAfterContentInit(): void {\r\n this.hasPrefix.set(!!this.prefix);\r\n this.hasSuffix.set(!!this.suffix);\r\n this.detectControl();\r\n this.connectControl();\r\n this.syncDescribedBy();\r\n this.syncControlDisabledReadonly();\r\n this.warnNoControl();\r\n this.warnMultipleControls();\r\n }\r\n\r\n private syncControlDisabledReadonly(): void {\r\n if (!this.controlElement) {\r\n return;\r\n }\r\n if (this.control()) {\r\n return;\r\n }\r\n // SECURITY_EXCEPTION: Setting disabled/readonly on native control is required for FormField propagation.\r\n const input = this.controlElement as HTMLInputElement;\r\n const shouldDisable = this.isEffectivelyDisabled();\r\n const shouldReadonly = this.isEffectivelyReadonly();\r\n if (input.disabled !== shouldDisable) {\r\n input.disabled = shouldDisable;\r\n }\r\n if (input.readOnly !== shouldReadonly) {\r\n input.readOnly = shouldReadonly;\r\n }\r\n }\r\n\r\n private syncDescribedBy(): void {\r\n const describedBy = this.describedBy();\r\n const targetControl = this.control() ?? this.formControl;\r\n if (targetControl) {\r\n if (describedBy) {\r\n targetControl.setDescribedByIds(describedBy.split(' '));\r\n } else {\r\n targetControl.setDescribedByIds([]);\r\n }\r\n }\r\n }\r\n\r\n protected readonly describedByEffect = effect(() => {\r\n this.describedBy();\r\n this.syncDescribedBy();\r\n });\r\n\r\n ngOnDestroy(): void {\r\n this.removeListeners();\r\n }\r\n\r\n private detectControl(): void {\r\n const explicitControl = this.control();\r\n if (explicitControl) {\r\n this.controlId = explicitControl.id;\r\n // SECURITY_EXCEPTION: nativeElement.querySelector required to find trigger element. Standard DOM API used after Angular CDK pattern.\r\n const triggerEl = this.elementRef.nativeElement.querySelector(\r\n '[solaris-form-field-trigger]',\r\n );\r\n if (triggerEl) {\r\n this.controlElement = triggerEl as HTMLElement;\r\n if (triggerEl.id) {\r\n this.controlId = triggerEl.id;\r\n }\r\n this.connectControl();\r\n }\r\n return;\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement access required to detect projected form controls.\r\n // SECURITY_EXCEPTION: Angular CDK and Material use the same approach.\r\n // SECURITY_EXCEPTION: Read-only querySelectorAll, no DOM mutation.\r\n const nativeElement = this.elementRef.nativeElement;\r\n const children = nativeElement.querySelectorAll(\r\n 'input, select, textarea, [solaris-input], [solaris-select], [solaris-textarea]',\r\n );\r\n\r\n if (children.length > 0) {\r\n const first = children[0] as HTMLElement;\r\n this.controlElement = first;\r\n // SECURITY_EXCEPTION: nativeElement.tagName is the standard DOM API to check element type.\r\n const isTextarea = first.tagName === 'TEXTAREA';\r\n this.isTextareaControl.set(isTextarea);\r\n\r\n // SECURITY_EXCEPTION: getAttribute is the standard DOM API to read HTML attributes.\r\n const maxlengthAttr = first.getAttribute('maxlength');\r\n if (maxlengthAttr !== null) {\r\n const parsed = parseInt(maxlengthAttr, 10);\r\n this.maxLength.set(!isNaN(parsed) ? parsed : undefined);\r\n } else {\r\n this.maxLength.set(undefined);\r\n }\r\n // SECURITY_EXCEPTION: reading value.length from native input/textarea is required for character counter.\r\n this.currentLength.set(\r\n (first as HTMLInputElement | HTMLTextAreaElement).value?.length ?? 0,\r\n );\r\n\r\n if (isTextarea) {\r\n const resize = first.dataset['resize'] ?? first.getAttribute('resize');\r\n\r\n const validResize: ControlResize =\r\n resize === 'none' ||\r\n resize === 'vertical' ||\r\n resize === 'horizontal' ||\r\n resize === 'both'\r\n ? resize\r\n : 'vertical';\r\n\r\n this.controlResize.set(validResize);\r\n } else {\r\n this.controlResize.set(null);\r\n }\r\n }\r\n\r\n if (this.formControl) {\r\n this.controlId = this.formControl.id;\r\n } else if (this.controlElement) {\r\n if (!this.controlElement.id) {\r\n const generatedId = `solaris-control-${this.fieldId}`;\r\n this.controlElement.id = generatedId;\r\n this.controlId = generatedId;\r\n } else {\r\n this.controlId = this.controlElement.id;\r\n }\r\n }\r\n }\r\n\r\n private connectControl(): void {\r\n if (this.controlElement) {\r\n this.addListeners(this.controlElement);\r\n }\r\n }\r\n\r\n private addListeners(element: HTMLElement): void {\r\n this.removeListeners();\r\n this.ngZone.runOutsideAngular(() => {\r\n const onFocus = (): void => {\r\n this.ngZone.run(() => this.isFocused.set(true));\r\n };\r\n const onBlur = (): void => {\r\n this.ngZone.run(() => this.isFocused.set(false));\r\n };\r\n const onInput = (): void => {\r\n // SECURITY_EXCEPTION: reading value.length from native input/textarea is standard DOM API for character counter.\r\n this.ngZone.run(() => {\r\n this.currentLength.set(\r\n (element as HTMLInputElement | HTMLTextAreaElement).value?.length ??\r\n 0,\r\n );\r\n });\r\n };\r\n element.addEventListener('focusin', onFocus);\r\n element.addEventListener('focusout', onBlur);\r\n element.addEventListener('input', onInput);\r\n this.focusListener = () =>\r\n element.removeEventListener('focusin', onFocus);\r\n this.blurListener = () => element.removeEventListener('focusout', onBlur);\r\n this.inputListener = () => element.removeEventListener('input', onInput);\r\n });\r\n }\r\n\r\n private removeListeners(): void {\r\n this.focusListener?.();\r\n this.blurListener?.();\r\n this.inputListener?.();\r\n this.focusListener = null;\r\n this.blurListener = null;\r\n this.inputListener = null;\r\n }\r\n\r\n private warnNoControl(): void {\r\n const hasAnyControl =\r\n !!this.control() ||\r\n !!this.formControl ||\r\n !!this.controlElement ||\r\n !!this.effectiveNgControl();\r\n if (!hasAnyControl) {\r\n console.warn(\r\n `[SolarisFormField] No form control found inside <solaris-form-field id=\"${this.fieldId}\">. ` +\r\n 'Form Field requires a control (input, select, textarea, or a Solaris form control directive). ' +\r\n 'This warning is shown in development only. The component will render safely without the control.',\r\n );\r\n }\r\n }\r\n\r\n private warnMultipleControls(): void {\r\n // SECURITY_EXCEPTION: nativeElement access required to count projected controls.\r\n // SECURITY_EXCEPTION: Same justification as detectControl: read-only query, no DOM mutation.\r\n const nativeElement = this.elementRef.nativeElement;\r\n const children = nativeElement.querySelectorAll(\r\n 'input, select, textarea, [solaris-input], [solaris-select], [solaris-textarea]',\r\n );\r\n if (children.length > 1) {\r\n console.warn(\r\n `[SolarisFormField] Multiple form controls detected inside <solaris-form-field id=\"${this.fieldId}\">. ` +\r\n 'Form Field v1 supports one main control. Multiple controls may cause unexpected behavior.',\r\n );\r\n }\r\n }\r\n}\r\n","@if (labelText() || hasProjectedLabel()) {\r\n <div class=\"solaris-form-field__label-row\">\r\n @if (hasProjectedLabel()) {\r\n <ng-content select=\"solaris-form-label\" />\r\n } @else if (labelText()) {\r\n <label\r\n class=\"solaris-form-field__label\"\r\n [id]=\"labelId\"\r\n [for]=\"controlId ?? undefined\"\r\n >\r\n {{ labelText() }}\r\n </label>\r\n }\r\n @if (optional()) {\r\n <span\r\n class=\"solaris-form-field__optional-marker\"\r\n [attr.aria-label]=\"optionalLabelText()\"\r\n >\r\n {{ optionalLabelText() }}\r\n </span>\r\n }\r\n @if (showCharacterCounter()) {\r\n <span\r\n class=\"solaris-form-field__character-counter\"\r\n aria-live=\"polite\"\r\n [attr.aria-label]=\"characterCounterText()\"\r\n [attr.data-severity]=\"characterCounterSeverity()\"\r\n >\r\n {{ characterCounterText() }}\r\n </span>\r\n }\r\n </div>\r\n}\r\n\r\n<div class=\"solaris-form-field__control-wrapper\">\r\n <span\r\n class=\"solaris-form-field__affix solaris-form-field__affix--prefix\"\r\n [attr.data-empty]=\"hasPrefix() ? null : ''\"\r\n >\r\n <ng-content select=\"[solaris-form-prefix]\" />\r\n </span>\r\n\r\n <div class=\"solaris-form-field__control\">\r\n <ng-content />\r\n </div>\r\n\r\n <span\r\n class=\"solaris-form-field__affix solaris-form-field__affix--suffix\"\r\n [attr.data-empty]=\"hasSuffix() ? null : ''\"\r\n >\r\n <ng-content select=\"[solaris-form-suffix]\" />\r\n </span>\r\n</div>\r\n\r\n@if (showError() || showHint()) {\r\n <div class=\"solaris-form-field__message-row\">\r\n @if (showError()) {\r\n <div class=\"solaris-form-field__error\" [id]=\"errorId\" role=\"alert\">\r\n @if (hasProjectedError()) {\r\n <ng-content select=\"solaris-form-error\" />\r\n } @else {\r\n {{ errorText() }}\r\n }\r\n </div>\r\n } @else if (showHint()) {\r\n <div class=\"solaris-form-field__hint\" [id]=\"hintId\">\r\n @if (hasProjectedHint()) {\r\n <ng-content select=\"solaris-form-hint\" />\r\n } @else {\r\n {{ hintText() }}\r\n }\r\n </div>\r\n }\r\n </div>\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[solaris-form-field-trigger]',\r\n standalone: true,\r\n})\r\nexport class SolarisFormFieldTriggerDirective {}\r\n","import { Directive, inject, TemplateRef } from '@angular/core';\r\n\r\n@Directive({\r\n selector: 'ng-template[solaris-popover]',\r\n standalone: true,\r\n exportAs: 'solarisPopover',\r\n})\r\nexport class SolarisPopoverDirective {\r\n readonly templateRef = inject(TemplateRef);\r\n}\r\n","import { InjectionToken, TemplateRef } from '@angular/core';\r\n\r\nexport interface SolarisPopoverPanelData {\r\n contentTemplate: TemplateRef<unknown>;\r\n appearance: string;\r\n padding: string;\r\n radius: string;\r\n role: string | undefined | null;\r\n panelId: string;\r\n autoFocus: string | boolean;\r\n connectedSide?: 'top' | 'bottom';\r\n}\r\n\r\nexport const SOLARIS_POPOVER_PANEL_DATA =\r\n new InjectionToken<SolarisPopoverPanelData>('SolarisPopoverPanelData');\r\n","import { Component, inject, AfterViewInit, ElementRef } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport {\r\n SOLARIS_POPOVER_PANEL_DATA,\r\n type SolarisPopoverPanelData,\r\n} from '../token/popover.tokens';\r\n\r\n@Component({\r\n selector: 'solaris-popover-panel',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './popover-panel.component.html',\r\n styleUrls: ['./popover-panel.component.scss'],\r\n host: {\r\n class: 'solaris-popover-panel',\r\n '[attr.tabindex]': 'data.autoFocus === \"panel\" ? \"-1\" : null',\r\n },\r\n})\r\nexport class SolarisPopoverPanelComponent implements AfterViewInit {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n readonly data: SolarisPopoverPanelData = inject(SOLARIS_POPOVER_PANEL_DATA);\r\n\r\n ngAfterViewInit(): void {\r\n if (this.data.autoFocus === 'panel') {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required for autoFocus='panel'. SSR-safe via ElementRef.\r\n (this.elementRef as ElementRef<HTMLElement>).nativeElement.focus();\r\n } else if (this.data.autoFocus === 'first-tabbable') {\r\n const firstTabbable = (\r\n this.elementRef as ElementRef<HTMLElement>\r\n ).nativeElement // SECURITY_EXCEPTION: nativeElement.querySelector needed for autoFocus='first-tabbable'. Standard query only.\r\n .querySelector<HTMLElement>(\r\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\r\n );\r\n firstTabbable?.focus();\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"solaris-popover-panel__container\"\r\n [attr.data-appearance]=\"data.appearance\"\r\n [attr.data-padding]=\"data.padding\"\r\n [attr.data-radius]=\"data.radius\"\r\n [attr.data-connected-side]=\"data.connectedSide ?? null\"\r\n [attr.role]=\"data.role\"\r\n [id]=\"data.panelId\"\r\n tabindex=\"-1\"\r\n>\r\n <ng-container *ngTemplateOutlet=\"data.contentTemplate\" />\r\n</div>\r\n","import type { ConnectedPosition } from '@angular/cdk/overlay';\r\n\r\nimport type {\r\n SolarisPopoverPlacement,\r\n SolarisPopoverAlign,\r\n} from './popover.types';\r\n\r\ninterface PopoverPositionConfig {\r\n originX: 'start' | 'center' | 'end';\r\n originY: 'top' | 'center' | 'bottom';\r\n overlayX: 'start' | 'center' | 'end';\r\n overlayY: 'top' | 'center' | 'bottom';\r\n}\r\n\r\nfunction getBasePosition(\r\n placement: SolarisPopoverPlacement,\r\n align: SolarisPopoverAlign,\r\n): PopoverPositionConfig {\r\n switch (placement) {\r\n case 'bottom': {\r\n if (align === 'start') {\r\n return {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n };\r\n }\r\n if (align === 'center') {\r\n return {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n };\r\n }\r\n return {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n };\r\n }\r\n case 'top': {\r\n if (align === 'start') {\r\n return {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n };\r\n }\r\n if (align === 'center') {\r\n return {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n };\r\n }\r\n return {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n };\r\n }\r\n case 'right': {\r\n if (align === 'start') {\r\n return {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n };\r\n }\r\n if (align === 'center') {\r\n return {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n };\r\n }\r\n return {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n };\r\n }\r\n case 'left': {\r\n if (align === 'start') {\r\n return {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n };\r\n }\r\n if (align === 'center') {\r\n return {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n };\r\n }\r\n return {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n };\r\n }\r\n }\r\n}\r\n\r\nfunction toConnectedPosition(config: PopoverPositionConfig): ConnectedPosition {\r\n return {\r\n originX: config.originX,\r\n originY: config.originY,\r\n overlayX: config.overlayX,\r\n overlayY: config.overlayY,\r\n };\r\n}\r\n\r\nexport function getPrimaryPosition(\r\n placement: SolarisPopoverPlacement,\r\n align: SolarisPopoverAlign,\r\n): ConnectedPosition {\r\n return toConnectedPosition(getBasePosition(placement, align));\r\n}\r\n\r\nfunction oppositePlacement(\r\n placement: SolarisPopoverPlacement,\r\n): SolarisPopoverPlacement {\r\n switch (placement) {\r\n case 'top':\r\n return 'bottom';\r\n case 'bottom':\r\n return 'top';\r\n case 'left':\r\n return 'right';\r\n case 'right':\r\n return 'left';\r\n }\r\n}\r\n\r\nfunction shiftedAlign(align: SolarisPopoverAlign): SolarisPopoverAlign {\r\n switch (align) {\r\n case 'start':\r\n return 'end';\r\n case 'end':\r\n return 'start';\r\n case 'center':\r\n return 'center';\r\n }\r\n}\r\n\r\nexport function getFallbackPositions(\r\n placement: SolarisPopoverPlacement,\r\n align: SolarisPopoverAlign,\r\n): ConnectedPosition[] {\r\n const opposite = oppositePlacement(placement);\r\n const shifted = shiftedAlign(align);\r\n\r\n return [\r\n toConnectedPosition(getBasePosition(opposite, align)),\r\n toConnectedPosition(getBasePosition(placement, shifted)),\r\n toConnectedPosition(getBasePosition(opposite, shifted)),\r\n toConnectedPosition(getBasePosition(placement, 'center')),\r\n toConnectedPosition(getBasePosition(opposite, 'center')),\r\n ];\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Injector,\r\n ViewContainerRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n DestroyRef,\r\n HostListener,\r\n TemplateRef,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Overlay,\r\n OverlayRef,\r\n OverlayConfig,\r\n FlexibleConnectedPositionStrategy,\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { SolarisPopoverDirective } from './popover.directive';\r\nimport { SolarisPopoverPanelComponent } from '../component/popover-panel.component';\r\nimport {\r\n SOLARIS_POPOVER_PANEL_DATA,\r\n type SolarisPopoverPanelData,\r\n} from '../token/popover.tokens';\r\nimport {\r\n getPrimaryPosition,\r\n getFallbackPositions,\r\n} from '../model/popover-position';\r\n\r\nimport type {\r\n SolarisPopoverPlacement,\r\n SolarisPopoverAlign,\r\n SolarisPopoverAppearance,\r\n SolarisPopoverPadding,\r\n SolarisPopoverRadius,\r\n SolarisPopoverScrollStrategy,\r\n SolarisPopoverAutoFocus,\r\n} from '../model/popover.types';\r\n\r\nlet nextPanelId = 0;\r\n\r\n@Directive({\r\n selector: '[solaris-popover-trigger]',\r\n standalone: true,\r\n host: {\r\n '[attr.aria-expanded]': 'isOpen() ? \"true\" : \"false\"',\r\n '[attr.aria-controls]': 'isOpen() ? panelId : null',\r\n '[attr.aria-haspopup]': 'ariaHasPopupComputed()',\r\n },\r\n})\r\nexport class SolarisPopoverTriggerDirective {\r\n private readonly overlay = inject(Overlay);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly injector = inject(Injector);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n protected readonly panelId = `solaris-popover-panel-${++nextPanelId}`;\r\n protected readonly isOpen = signal(false);\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private positionStrategy: FlexibleConnectedPositionStrategy | null = null;\r\n private outsideClickCleanup: (() => void) | null = null;\r\n private previousActiveElement: HTMLElement | null = null;\r\n private panelContainerRef: HTMLElement | null = null;\r\n private connectedSide: 'top' | 'bottom' = 'bottom';\r\n\r\n readonly solarisPopoverTriggerFor = input<\r\n SolarisPopoverDirective | undefined\r\n >(undefined, {\r\n alias: 'solarisPopoverTriggerFor',\r\n });\r\n\r\n readonly solarisPopoverOpen = input<boolean | undefined>(undefined, {\r\n alias: 'solarisPopoverOpen',\r\n });\r\n\r\n readonly solarisPopoverDisabled = input<boolean>(false, {\r\n alias: 'solarisPopoverDisabled',\r\n });\r\n\r\n readonly solarisPopoverPlacement = input<SolarisPopoverPlacement>('bottom', {\r\n alias: 'solarisPopoverPlacement',\r\n });\r\n\r\n readonly solarisPopoverAlign = input<SolarisPopoverAlign>('start', {\r\n alias: 'solarisPopoverAlign',\r\n });\r\n\r\n readonly solarisPopoverOffset = input<number>(8, {\r\n alias: 'solarisPopoverOffset',\r\n });\r\n\r\n readonly solarisPopoverMatchTriggerWidth = input<boolean>(false, {\r\n alias: 'solarisPopoverMatchTriggerWidth',\r\n });\r\n\r\n readonly solarisPopoverMinWidth = input<string | number | undefined>(\r\n undefined,\r\n {\r\n alias: 'solarisPopoverMinWidth',\r\n },\r\n );\r\n\r\n readonly solarisPopoverMaxWidth = input<string | number | undefined>(\r\n undefined,\r\n {\r\n alias: 'solarisPopoverMaxWidth',\r\n },\r\n );\r\n\r\n readonly solarisPopoverCloseOnOutsideClick = input<boolean>(true, {\r\n alias: 'solarisPopoverCloseOnOutsideClick',\r\n });\r\n\r\n readonly solarisPopoverCloseOnEscape = input<boolean>(true, {\r\n alias: 'solarisPopoverCloseOnEscape',\r\n });\r\n\r\n readonly solarisPopoverRestoreFocus = input<boolean>(true, {\r\n alias: 'solarisPopoverRestoreFocus',\r\n });\r\n\r\n readonly solarisPopoverAutoFocus = input<SolarisPopoverAutoFocus>(false, {\r\n alias: 'solarisPopoverAutoFocus',\r\n });\r\n\r\n readonly solarisPopoverScrollStrategy = input<SolarisPopoverScrollStrategy>(\r\n 'reposition',\r\n {\r\n alias: 'solarisPopoverScrollStrategy',\r\n },\r\n );\r\n\r\n readonly solarisPopoverPanelRole = input<string | undefined>(undefined, {\r\n alias: 'solarisPopoverPanelRole',\r\n });\r\n\r\n readonly solarisPopoverAriaHasPopup = input<string | boolean | undefined>(\r\n undefined,\r\n {\r\n alias: 'solarisPopoverAriaHasPopup',\r\n },\r\n );\r\n\r\n readonly solarisPopoverAppearance = input<SolarisPopoverAppearance>(\r\n 'surface',\r\n {\r\n alias: 'solarisPopoverAppearance',\r\n },\r\n );\r\n\r\n readonly solarisPopoverPadding = input<SolarisPopoverPadding>('md', {\r\n alias: 'solarisPopoverPadding',\r\n });\r\n\r\n readonly solarisPopoverRadius = input<SolarisPopoverRadius>('md', {\r\n alias: 'solarisPopoverRadius',\r\n });\r\n\r\n readonly solarisPopoverTopConnected = input<boolean>(false, {\r\n alias: 'solarisPopoverTopConnected',\r\n });\r\n\r\n readonly solarisPopoverOpened = output<void>();\r\n readonly solarisPopoverClosed = output<void>();\r\n readonly solarisPopoverOpenChange = output<boolean>();\r\n\r\n protected readonly ariaHasPopupComputed = computed(() => {\r\n const value = this.solarisPopoverAriaHasPopup();\r\n if (value === undefined) return null;\r\n return String(value);\r\n });\r\n\r\n private readonly popoverTemplateRef = computed<\r\n TemplateRef<unknown> | undefined\r\n >(() => this.solarisPopoverTriggerFor()?.templateRef);\r\n\r\n constructor() {\r\n effect(() => {\r\n const shouldBeOpen = this.solarisPopoverOpen();\r\n if (shouldBeOpen === true && !this.isOpen()) {\r\n this.open();\r\n } else if (shouldBeOpen === false && this.isOpen()) {\r\n this.close();\r\n }\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.disposeOverlay();\r\n });\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n if (!this.solarisPopoverDisabled()) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n @HostListener('keydown.escape')\r\n onEscape(): void {\r\n if (this.solarisPopoverCloseOnEscape() && this.isOpen()) {\r\n this.close();\r\n }\r\n }\r\n\r\n open(): void {\r\n if (this.isOpen() || this.solarisPopoverDisabled()) {\r\n return;\r\n }\r\n\r\n // SECURITY_EXCEPTION: this.document.activeElement required for restoreFocus. SSR-safe via injected DOCUMENT.\r\n this.previousActiveElement = this.document.activeElement as HTMLElement;\r\n this.createOverlay();\r\n this.attachPanel();\r\n this.addOutsideClickHandler();\r\n this.updateOverlaySize();\r\n this.isOpen.set(true);\r\n this.solarisPopoverOpened.emit();\r\n this.solarisPopoverOpenChange.emit(true);\r\n }\r\n\r\n close(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.detachPanel();\r\n this.restoreFocus();\r\n this.isOpen.set(false);\r\n this.solarisPopoverClosed.emit();\r\n this.solarisPopoverOpenChange.emit(false);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n updatePosition(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.updatePosition();\r\n }\r\n }\r\n\r\n private createOverlay(): void {\r\n this.disposeOverlay();\r\n\r\n this.positionStrategy = this.createPositionStrategy();\r\n const scrollStrategy = this.createScrollStrategy();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: this.positionStrategy,\r\n scrollStrategy,\r\n disposeOnNavigation: true,\r\n panelClass: 'solaris-popover-panel-overlay',\r\n });\r\n\r\n this.overlayRef = this.overlay.create(config);\r\n\r\n this.positionStrategy.positionChanges.subscribe((change) => {\r\n this.connectedSide =\r\n change.connectionPair.originY === 'bottom' ? 'bottom' : 'top';\r\n if (this.panelContainerRef) {\r\n this.panelContainerRef.dataset['connectedSide'] = this.connectedSide;\r\n if (this.solarisPopoverTopConnected()) {\r\n this.panelContainerRef.dataset['formField'] = '';\r\n }\r\n }\r\n // SECURITY_EXCEPTION: nativeElement.setAttribute required to sync data-connected-side. Read-only DOM access.\r\n this.elementRef.nativeElement.dataset['connectedSide'] =\r\n this.connectedSide;\r\n // SECURITY_EXCEPTION: querySelector required to find descendant form-field control wrapper. SSR-safe via injected ElementRef.\r\n const formFieldWrapper = this.elementRef.nativeElement.querySelector(\r\n ':scope > .solaris-form-field__control-wrapper',\r\n ) as HTMLElement | null;\r\n if (formFieldWrapper) {\r\n formFieldWrapper.dataset['connectedSide'] = this.connectedSide;\r\n }\r\n });\r\n }\r\n\r\n private createPositionStrategy(): FlexibleConnectedPositionStrategy {\r\n const placement = this.solarisPopoverPlacement();\r\n const align = this.solarisPopoverAlign();\r\n const offset = this.solarisPopoverOffset();\r\n\r\n const primaryPosition = getPrimaryPosition(placement, align);\r\n const fallbackPositions = getFallbackPositions(placement, align);\r\n\r\n const allPositions = [primaryPosition, ...fallbackPositions].map((pos) => ({\r\n ...pos,\r\n offsetY:\r\n pos.originY === 'bottom' && pos.overlayY === 'top'\r\n ? offset\r\n : pos.originY === 'top' && pos.overlayY === 'bottom'\r\n ? -offset\r\n : 0,\r\n offsetX:\r\n pos.originX === 'end' && pos.overlayX === 'start'\r\n ? offset\r\n : pos.originX === 'start' && pos.overlayX === 'end'\r\n ? -offset\r\n : 0,\r\n }));\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions(allPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(true);\r\n }\r\n\r\n private createScrollStrategy() {\r\n const strategy = this.solarisPopoverScrollStrategy();\r\n switch (strategy) {\r\n case 'reposition':\r\n return this.overlay.scrollStrategies.reposition();\r\n case 'close':\r\n return this.overlay.scrollStrategies.close();\r\n case 'block':\r\n return this.overlay.scrollStrategies.block();\r\n }\r\n }\r\n\r\n private attachPanel(): void {\r\n if (!this.overlayRef) {\r\n return;\r\n }\r\n\r\n const templateRef = this.popoverTemplateRef();\r\n if (!templateRef) {\r\n return;\r\n }\r\n\r\n const topConnected = this.solarisPopoverTopConnected();\r\n const initialSide = topConnected ? 'bottom' : undefined;\r\n this.connectedSide = 'bottom';\r\n\r\n const data: SolarisPopoverPanelData = {\r\n contentTemplate: templateRef,\r\n appearance: this.solarisPopoverAppearance(),\r\n padding: this.solarisPopoverPadding(),\r\n radius: this.solarisPopoverRadius(),\r\n role: this.solarisPopoverPanelRole(),\r\n panelId: this.panelId,\r\n autoFocus: this.solarisPopoverAutoFocus(),\r\n connectedSide: initialSide,\r\n };\r\n\r\n const panelInjector = Injector.create({\r\n parent: this.injector,\r\n providers: [{ provide: SOLARIS_POPOVER_PANEL_DATA, useValue: data }],\r\n });\r\n\r\n const portal = new ComponentPortal(\r\n SolarisPopoverPanelComponent,\r\n this.viewContainerRef,\r\n panelInjector,\r\n );\r\n\r\n const componentRef = this.overlayRef.attach(portal);\r\n // SECURITY_EXCEPTION: nativeElement.querySelector required to find panel container in attached overlay. CDK overlay provides no typed API for this.\r\n this.panelContainerRef = componentRef.location.nativeElement.querySelector(\r\n '.solaris-popover-panel__container',\r\n );\r\n\r\n if (this.panelContainerRef && initialSide) {\r\n this.panelContainerRef.dataset['connectedSide'] = initialSide;\r\n if (topConnected) {\r\n this.panelContainerRef.dataset['formField'] = '';\r\n // SECURITY_EXCEPTION: querySelector required to find descendant form-field control wrapper. SSR-safe via injected ElementRef.\r\n const formFieldWrapper = this.elementRef.nativeElement.querySelector(\r\n ':scope > .solaris-form-field__control-wrapper',\r\n ) as HTMLElement | null;\r\n if (formFieldWrapper) {\r\n formFieldWrapper.dataset['connectedSide'] = initialSide;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private detachPanel(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.detach();\r\n this.disposeOverlay();\r\n }\r\n this.removeOutsideClickHandler();\r\n }\r\n\r\n private disposeOverlay(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n this.removeOutsideClickHandler();\r\n }\r\n\r\n private addOutsideClickHandler(): void {\r\n if (!this.solarisPopoverCloseOnOutsideClick()) {\r\n return;\r\n }\r\n\r\n this.removeOutsideClickHandler();\r\n\r\n this.outsideClickCleanup = this.rendererListen(\r\n this.document,\r\n 'click',\r\n this.handleOutsideClick,\r\n );\r\n }\r\n\r\n private removeOutsideClickHandler(): void {\r\n if (this.outsideClickCleanup) {\r\n this.outsideClickCleanup();\r\n this.outsideClickCleanup = null;\r\n }\r\n }\r\n\r\n private readonly handleOutsideClick = (event: Event): void => {\r\n if (!this.solarisPopoverCloseOnOutsideClick() || !this.overlayRef) {\r\n return;\r\n }\r\n\r\n const overlayElement = this.overlayRef.overlayElement;\r\n // SECURITY_EXCEPTION: nativeElement needed for outside-click containment check. ElementRef SSR-safe.\r\n const triggerElement = this.elementRef.nativeElement;\r\n const target = event.target as Node;\r\n\r\n if (\r\n target &&\r\n !overlayElement.contains(target) &&\r\n !triggerElement.contains(target)\r\n ) {\r\n this.close();\r\n }\r\n };\r\n\r\n private rendererListen(\r\n target: EventTarget,\r\n event: string,\r\n callback: (event: Event) => void,\r\n ): () => void {\r\n target.addEventListener(event, callback);\r\n return () => {\r\n target.removeEventListener(event, callback);\r\n };\r\n }\r\n\r\n private updateOverlaySize(): void {\r\n if (!this.overlayRef) {\r\n return;\r\n }\r\n\r\n const size: {\r\n width?: number | string;\r\n minWidth?: number | string;\r\n maxWidth?: number | string;\r\n } = {};\r\n\r\n // SECURITY_EXCEPTION: nativeElement.offsetWidth — required for matchTriggerWidth.\r\n // ElementRef is SSR-safe. offsetWidth is a read-only layout property.\r\n const triggerWidth = this.elementRef.nativeElement.offsetWidth;\r\n const matchWidth = this.solarisPopoverMatchTriggerWidth();\r\n const minWidth = this.solarisPopoverMinWidth();\r\n const maxWidth = this.solarisPopoverMaxWidth();\r\n\r\n if (matchWidth) {\r\n size.width = triggerWidth;\r\n // Also set minWidth so it won't shrink below trigger width on flexible dimensions.\r\n size.minWidth = triggerWidth;\r\n }\r\n\r\n if (minWidth !== undefined) {\r\n size.minWidth = typeof minWidth === 'number' ? `${minWidth}px` : minWidth;\r\n }\r\n\r\n if (maxWidth !== undefined) {\r\n size.maxWidth = typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\r\n }\r\n\r\n this.overlayRef.updateSize(size);\r\n }\r\n\r\n private restoreFocus(): void {\r\n if (\r\n this.solarisPopoverRestoreFocus() &&\r\n this.previousActiveElement &&\r\n // SECURITY_EXCEPTION: this.document.contains() to safely verify trigger still exists before focus.\r\n this.document.contains(this.previousActiveElement)\r\n ) {\r\n this.previousActiveElement.focus();\r\n }\r\n this.previousActiveElement = null;\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n output,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ContentChildren,\r\n QueryList,\r\n ElementRef,\r\n ViewChild,\r\n AfterContentInit,\r\n AfterViewInit,\r\n OnDestroy,\r\n isDevMode,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport {\r\n SolarisFormPrefixDirective,\r\n SolarisFormFieldTriggerDirective,\r\n SolarisFormFieldComponent,\r\n} from '../../form-field';\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisOptionGroupComponent } from '../../option-group';\r\nimport { SolarisOptionComponent } from '../../option';\r\nimport { SolarisIconComponent } from '../../../icon';\r\nimport {\r\n SolarisPopoverDirective,\r\n SolarisPopoverTriggerDirective,\r\n} from '../../../interaction/popover';\r\n\r\nimport type {\r\n SolarisSelectAppearance,\r\n SolarisSelectSize,\r\n SolarisSelectDensity,\r\n SolarisSelectRadius,\r\n} from '../model/select.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-select-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-select',\r\n standalone: true,\r\n imports: [\r\n SolarisFormFieldComponent,\r\n SolarisFormFieldTriggerDirective,\r\n SolarisFormPrefixDirective,\r\n SolarisIconComponent,\r\n SolarisPopoverDirective,\r\n SolarisPopoverTriggerDirective,\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisSelectComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: forwardRef(() => SolarisSelectComponent),\r\n },\r\n ],\r\n templateUrl: './select.component.html',\r\n styleUrls: ['./select.component.scss'],\r\n host: {\r\n 'solaris-select': '',\r\n '[attr.id]': 'elementId()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-open]': 'panelOpen() ? \"\" : null',\r\n '[attr.aria-label]': 'ariaLabelText() ?? null',\r\n '[attr.data-has-value]': 'hasValue() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisSelectComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor, AfterContentInit, AfterViewInit, OnDestroy\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n protected readonly parentFormField = inject(SolarisFormFieldComponent, {\r\n optional: true,\r\n });\r\n\r\n @ViewChild(SolarisPopoverTriggerDirective)\r\n protected popoverTrigger?: SolarisPopoverTriggerDirective;\r\n\r\n @ViewChild('searchInput', { read: ElementRef })\r\n protected searchInputRef?: ElementRef<HTMLInputElement>;\r\n\r\n @ViewChild('triggerEl', { read: ElementRef })\r\n protected triggerElement?: ElementRef<HTMLElement>;\r\n\r\n @ViewChild('formFieldRef', { read: ElementRef })\r\n protected formFieldElement?: ElementRef<HTMLElement>;\r\n\r\n @ContentChildren(SolarisOptionComponent, { descendants: true })\r\n protected options!: QueryList<SolarisOptionComponent>;\r\n\r\n @ContentChildren(SolarisOptionGroupComponent, { descendants: true })\r\n protected optionGroups!: QueryList<SolarisOptionGroupComponent>;\r\n\r\n readonly hint = input<string>();\r\n readonly icon = input<string>();\r\n readonly label = input<string>();\r\n readonly error = input<string>();\r\n readonly hintKey = input<string>();\r\n readonly labelKey = input<string>();\r\n readonly errorKey = input<string>();\r\n readonly emptyText = input<string>();\r\n readonly ariaLabel = input<string>();\r\n readonly placeholder = input<string>();\r\n readonly loadingText = input<string>();\r\n readonly emptyTextKey = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n readonly noResultsText = input<string>();\r\n readonly placeholderKey = input<string>();\r\n readonly loadingTextKey = input<string>();\r\n readonly ariaLabelledby = input<string>();\r\n readonly noResultsTextKey = input<string>();\r\n readonly loading = input<boolean>(false);\r\n readonly searchPlaceholder = input<string>();\r\n readonly clearable = input<boolean>(false);\r\n readonly clearLabel = input<string>();\r\n readonly clearLabelKey = input<string>();\r\n readonly value = input<unknown>(undefined);\r\n readonly searchable = input<boolean>(false);\r\n readonly searchPlaceholderKey = input<string>();\r\n readonly panelMinWidth = input<string | number>();\r\n readonly panelMaxWidth = input<string | number>();\r\n readonly density = input<SolarisSelectDensity>();\r\n readonly size = input<SolarisSelectSize>('md');\r\n readonly panelMatchTriggerWidth = input<boolean>(true);\r\n readonly radius = input<SolarisSelectRadius>('md');\r\n readonly disabledInput = input(false, { alias: 'disabled' });\r\n readonly readonlyInput = input(false, { alias: 'readonly' });\r\n readonly requiredInput = input(false, { alias: 'required' });\r\n readonly panelMaxHeight = input<string | number>('20rem');\r\n readonly displayWith = input<(value: unknown) => string | undefined>();\r\n readonly appearance = input<SolarisSelectAppearance>('outline');\r\n readonly compareWith = input<(a: unknown, b: unknown) => boolean>(Object.is);\r\n readonly manualInvalid = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n\r\n readonly opened = output<void>();\r\n readonly closed = output<void>();\r\n readonly cleared = output<void>();\r\n readonly openChange = output<boolean>();\r\n readonly searchChange = output<string>();\r\n readonly valueChange = output<unknown>();\r\n readonly selectionChange = output<SolarisOptionComponent | undefined>();\r\n\r\n protected readonly panelId = `solaris-select-panel-${generateId()}`;\r\n protected readonly panelOpen = signal(false);\r\n protected readonly internalValue = signal<unknown>(undefined);\r\n protected readonly internalFocused = signal(false);\r\n protected readonly internalDisabled = signal(false);\r\n protected readonly searchQuery = signal('');\r\n protected readonly activeOptionIndex = signal(-1);\r\n protected readonly touched = signal(false);\r\n protected readonly optionsInitialized = signal(false);\r\n\r\n private onChange: (value: unknown) => void = () => undefined;\r\n private onTouched: () => void = () => undefined;\r\n private optionsSubscription: (() => void) | undefined;\r\n private optionInteractionSubscriptions: (() => void)[] = [];\r\n private readonly popoverSubscriptions: (() => void)[] = [];\r\n\r\n protected readonly elementId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is standard DOM API to check existing ID before generating one. Same approach used by Solaris Option and Angular CDK.\r\n const existing = this.elementRef.nativeElement.getAttribute('id');\r\n return existing ?? generateId();\r\n });\r\n\r\n protected readonly effectiveDensity = computed<SolarisSelectDensity>(() => {\r\n return this.density() ?? 'comfortable';\r\n });\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.internalDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n const manual = this.manualInvalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n return this.requiredInput() && this.touched() && !this.hasValue();\r\n });\r\n\r\n protected readonly popoverAppearance = computed(() => {\r\n const a = this.appearance();\r\n return a === 'filled' ? 'surface' : a;\r\n });\r\n\r\n protected readonly canOpen = computed(() => {\r\n return !this.isEffectivelyDisabled() && !this.isEffectivelyReadonly();\r\n });\r\n\r\n protected readonly hasValue = computed(() => {\r\n return this.internalValue() !== undefined && this.internalValue() !== null;\r\n });\r\n\r\n protected readonly canClear = computed(() => {\r\n return (\r\n this.clearable() &&\r\n this.hasValue() &&\r\n !this.isEffectivelyDisabled() &&\r\n !this.isEffectivelyReadonly()\r\n );\r\n });\r\n\r\n protected readonly selectedOption = computed<\r\n SolarisOptionComponent | undefined\r\n >(() => {\r\n const value = this.internalValue();\r\n const comp = this.compareWith();\r\n const opts = this.options;\r\n if (!opts || value === undefined || value === null) {\r\n return undefined;\r\n }\r\n return opts.find((opt) => comp(opt.value(), value));\r\n });\r\n\r\n protected readonly displayText = computed(() => {\r\n const dw = this.displayWith();\r\n const val = this.internalValue();\r\n\r\n if (dw && val !== undefined && val !== null) {\r\n const result = dw(val);\r\n if (result !== undefined) {\r\n return result;\r\n }\r\n }\r\n\r\n const selected = this.selectedOption();\r\n if (selected) {\r\n const label = selected.labelText();\r\n if (label) {\r\n return label;\r\n }\r\n const nativeText = this.getOptionNativeText(selected);\r\n if (nativeText) {\r\n return nativeText;\r\n }\r\n }\r\n\r\n if (val !== undefined && val !== null) {\r\n const str = String(val);\r\n if (str !== '[object Object]') {\r\n return str;\r\n }\r\n if (isDevMode()) {\r\n console.warn(\r\n `[SolarisSelect] No displayWith provided for object value. Use displayWith input to show a readable label.`,\r\n );\r\n }\r\n }\r\n\r\n return '';\r\n });\r\n\r\n protected readonly placeholderText = computed(() => {\r\n const key = this.placeholderKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.placeholder() || '';\r\n }\r\n return this.placeholder() ?? '';\r\n });\r\n\r\n protected readonly searchPlaceholderText = computed(() => {\r\n const key = this.searchPlaceholderKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.searchPlaceholder();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.select.search.placeholder');\r\n });\r\n\r\n protected readonly loadingTextValue = computed(() => {\r\n const key = this.loadingTextKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.loadingText();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.select.loading');\r\n });\r\n\r\n protected readonly emptyTextValue = computed(() => {\r\n const key = this.emptyTextKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.emptyText();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.select.empty');\r\n });\r\n\r\n protected readonly noResultsTextValue = computed(() => {\r\n const key = this.noResultsTextKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.noResultsText();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.select.noResults');\r\n });\r\n\r\n protected readonly clearAriaLabel = computed(() => {\r\n const key = this.clearLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.clearLabel();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.select.clear');\r\n });\r\n\r\n protected readonly ariaLabelText = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledbyText = computed(() => {\r\n return this.ariaLabelledby();\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.label() || '';\r\n }\r\n return this.label() ?? '';\r\n });\r\n\r\n protected readonly hintText = computed(() => {\r\n const key = this.hintKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.hint() || '';\r\n }\r\n return this.hint() ?? '';\r\n });\r\n\r\n protected readonly errorText = computed(() => {\r\n const key = this.errorKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.error() || '';\r\n }\r\n return this.error() ?? '';\r\n });\r\n\r\n protected readonly activeDescendantId = computed(() => {\r\n if (!this.panelOpen()) return null;\r\n const idx = this.activeOptionIndex();\r\n const opts = this.visibleOptions();\r\n if (idx >= 0 && idx < opts.length) {\r\n return (opts[idx] as unknown as { elementId: () => string }).elementId();\r\n }\r\n return null;\r\n });\r\n\r\n protected readonly _describedByIds = signal<string[]>([]);\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const ids = this._describedByIds();\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n protected readonly visibleOptions = computed(() => {\r\n const opts = this.options;\r\n if (!opts) return [];\r\n if (!this.panelOpen()) return [];\r\n const query = this.searchQuery().toLowerCase().trim();\r\n if (!query) return opts.toArray();\r\n return opts.toArray().filter((opt) => {\r\n if (opt.isEffectivelyDisabled()) return false;\r\n return this.optionMatchesSearch(opt, query);\r\n });\r\n });\r\n\r\n protected readonly showNoResults = computed(() => {\r\n return (\r\n this.searchQuery().trim().length > 0 &&\r\n this.visibleOptions().length === 0 &&\r\n !this.loading()\r\n );\r\n });\r\n\r\n protected readonly showEmpty = computed(() => {\r\n const opts = this.options;\r\n return (\r\n (!opts || opts.length === 0) &&\r\n !this.loading() &&\r\n this.searchQuery().trim().length === 0\r\n );\r\n });\r\n\r\n get id(): string {\r\n return this.elementId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this.internalFocused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.requiredInput();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required to programmatically focus the select trigger. Standard DOM method used by Angular CDK.\r\n if (this.triggerElement) {\r\n this.triggerElement.nativeElement.focus();\r\n } else {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required as fallback when no triggerElement ref. Standard DOM method.\r\n this.elementRef.nativeElement.focus();\r\n }\r\n }\r\n\r\n writeValue(safe: unknown): void {\r\n this.internalValue.set(safe);\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.internalDisabled.set(isDisabled);\r\n }\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (!this.optionsInitialized()) return;\r\n this.internalValue();\r\n this.setOptionsSelectedState();\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.optionsInitialized.set(true);\r\n this.setOptionsSelectedState();\r\n this.setOptionGroupDisabledState();\r\n this.syncActiveOptionToSelected();\r\n this.syncActiveStates();\r\n this.syncVisibility();\r\n this.subscribeToOptionInteractions();\r\n\r\n const optionsSub = this.options.changes.subscribe(() => {\r\n this.setOptionsSelectedState();\r\n this.setOptionGroupDisabledState();\r\n this.syncVisibility();\r\n this.subscribeToOptionInteractions();\r\n });\r\n this.optionsSubscription = () => optionsSub.unsubscribe();\r\n\r\n if (isDevMode() && this.parentFormField) {\r\n console.warn(\r\n 'SolarisSelectComponent already includes SolarisFormField internally. ' +\r\n 'Do not wrap it with <solaris-form-field>; pass label, hint, error, prefix and suffix directly to <solaris-select>.',\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.popoverTrigger) {\r\n const openedSub = this.popoverTrigger.solarisPopoverOpened.subscribe(\r\n () => {\r\n this.onPanelOpened();\r\n },\r\n );\r\n const closedSub = this.popoverTrigger.solarisPopoverClosed.subscribe(\r\n () => {\r\n this.onPanelClosed();\r\n },\r\n );\r\n this.popoverSubscriptions.push(\r\n () => openedSub.unsubscribe(),\r\n () => closedSub.unsubscribe(),\r\n );\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.optionsSubscription?.();\r\n this.optionInteractionSubscriptions.forEach((fn) => fn());\r\n this.popoverSubscriptions.forEach((fn) => fn());\r\n }\r\n\r\n protected onPanelOpened(): void {\r\n this.searchQuery.set('');\r\n this.panelOpen.set(true);\r\n this.setOptionsSelectedState();\r\n this.syncActiveOptionToSelected();\r\n this.syncActiveStates();\r\n this.syncVisibility();\r\n this.opened.emit();\r\n this.openChange.emit(true);\r\n this.setConnectedSide('bottom');\r\n\r\n if (this.searchable()) {\r\n requestAnimationFrame(() => {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required to focus search input when panel opens. Standard DOM method.\r\n this.searchInputRef?.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n protected onPanelClosed(): void {\r\n this.panelOpen.set(false);\r\n this.searchQuery.set('');\r\n this.syncVisibility();\r\n this.closed.emit();\r\n this.openChange.emit(false);\r\n this.markAsTouched();\r\n this.clearConnectedSide();\r\n }\r\n\r\n private setConnectedSide(side: 'bottom' | 'top'): void {\r\n // SECURITY_EXCEPTION: nativeElement required to access form-field DOM for connected-side sync. ElementRef SSR-safe.\r\n const el = this.formFieldElement?.nativeElement;\r\n if (el) {\r\n // SECURITY_EXCEPTION: nativeElement.querySelector required to find control-wrapper for connected-side sync.\r\n const wrapper = el.querySelector<HTMLElement>(\r\n '.solaris-form-field__control-wrapper',\r\n );\r\n if (wrapper) {\r\n wrapper.dataset['connectedSide'] = side;\r\n }\r\n }\r\n }\r\n\r\n private clearConnectedSide(): void {\r\n // SECURITY_EXCEPTION: nativeElement required to access form-field DOM for connected-side cleanup. ElementRef SSR-safe.\r\n const el = this.formFieldElement?.nativeElement;\r\n if (el) {\r\n const wrapper = el.querySelector<HTMLElement>(\r\n '.solaris-form-field__control-wrapper',\r\n );\r\n if (wrapper) {\r\n delete wrapper.dataset['connectedSide'];\r\n }\r\n }\r\n }\r\n\r\n protected selectOption(option: SolarisOptionComponent): void {\r\n if (option.isEffectivelyDisabled()) return;\r\n const newValue = option.value();\r\n this.internalValue.set(newValue);\r\n this.onChange(newValue);\r\n this.valueChange.emit(newValue);\r\n this.selectionChange.emit(option);\r\n this.setOptionsSelectedState();\r\n this.popoverTrigger?.close();\r\n }\r\n\r\n protected clearValue(): void {\r\n this.internalValue.set(null);\r\n this.onChange(null);\r\n this.valueChange.emit(null);\r\n this.selectionChange.emit(undefined);\r\n this.cleared.emit();\r\n this.setOptionsSelectedState();\r\n this.markAsTouched();\r\n }\r\n\r\n protected onTriggerKeydown(event: KeyboardEvent): void {\r\n if (!this.canOpen()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (this.maybeClosePanel(event)) return;\r\n if (this.maybeNavigateToBound(event)) return;\r\n\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n this.handleToggleOpen();\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.handleArrow(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.handleArrow(-1);\r\n break;\r\n }\r\n }\r\n\r\n private handleToggleOpen(): void {\r\n if (this.panelOpen()) {\r\n this.selectActiveOption();\r\n } else {\r\n this.popoverTrigger?.open();\r\n }\r\n }\r\n\r\n private handleArrow(direction: 1 | -1): void {\r\n if (this.panelOpen()) {\r\n this.focusNextOption(direction);\r\n } else {\r\n this.popoverTrigger?.open();\r\n requestAnimationFrame(() => this.focusNextOption(direction));\r\n }\r\n }\r\n\r\n private maybeClosePanel(event: KeyboardEvent): boolean {\r\n if (!this.panelOpen()) return false;\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.popoverTrigger?.close();\r\n return true;\r\n }\r\n if (event.key === 'Tab') {\r\n this.popoverTrigger?.close();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private maybeNavigateToBound(event: KeyboardEvent): boolean {\r\n if (!this.panelOpen()) return false;\r\n if (event.key === 'Home') {\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getFirstEnabledOptionIndex());\r\n this.syncActiveStates();\r\n return true;\r\n }\r\n if (event.key === 'End') {\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getLastEnabledOptionIndex());\r\n this.syncActiveStates();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected onSearchInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const value = target.value;\r\n this.searchQuery.set(value);\r\n this.searchChange.emit(value);\r\n this.activeOptionIndex.set(-1);\r\n this.syncActiveStates();\r\n this.syncVisibility();\r\n }\r\n\r\n protected onSearchKeydown(event: KeyboardEvent): void {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.focusNextOption(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.focusNextOption(-1);\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.selectActiveOption();\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.searchQuery()) {\r\n this.searchQuery.set('');\r\n this.searchChange.emit('');\r\n this.syncVisibility();\r\n this.syncActiveStates();\r\n } else {\r\n this.popoverTrigger?.close();\r\n }\r\n break;\r\n case 'Tab':\r\n this.popoverTrigger?.close();\r\n break;\r\n }\r\n }\r\n\r\n protected onPanelClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected onPanelKeydown(event: KeyboardEvent): void {\r\n event.stopPropagation();\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.focusNextOption(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.focusNextOption(-1);\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n this.selectActiveOption();\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n this.popoverTrigger?.close();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getFirstEnabledOptionIndex());\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getLastEnabledOptionIndex());\r\n break;\r\n }\r\n }\r\n\r\n protected onTriggerFocus(): void {\r\n this.internalFocused.set(true);\r\n }\r\n\r\n protected onTriggerBlur(): void {\r\n this.internalFocused.set(false);\r\n }\r\n\r\n private subscribeToOptionInteractions(): void {\r\n this.optionInteractionSubscriptions.forEach((fn) => fn());\r\n this.optionInteractionSubscriptions = [];\r\n this.options.forEach((opt) => {\r\n const sub = opt.optionInteraction.subscribe(({ option }) => {\r\n this.selectOption(option);\r\n });\r\n this.optionInteractionSubscriptions.push(() => sub.unsubscribe());\r\n });\r\n }\r\n\r\n protected setOptionsSelectedState(): void {\r\n const value = this.internalValue();\r\n const comp = this.compareWith();\r\n this.options.forEach((opt) => {\r\n const isSelected = comp(opt.value(), value);\r\n opt.setSelected(isSelected);\r\n });\r\n }\r\n\r\n private setOptionGroupDisabledState(): void {\r\n this.optionGroups.forEach((group) => {\r\n group.options.forEach((opt) => {\r\n opt.setGroupDisabledState(group.isEffectivelyDisabled());\r\n });\r\n });\r\n }\r\n\r\n private syncActiveStates(): void {\r\n const idx = this.activeOptionIndex();\r\n const opts = this.visibleOptions();\r\n this.options.forEach((opt) => opt.setActive(false));\r\n if (idx >= 0 && idx < opts.length) {\r\n opts[idx].setActive(true);\r\n }\r\n }\r\n\r\n private syncVisibility(): void {\r\n const query = this.searchQuery().trim();\r\n if (!query) {\r\n this.options.forEach((o) => o.setHidden(false));\r\n this.optionGroups.forEach((g) => g.setHidden(false));\r\n return;\r\n }\r\n const visible = new Set(this.visibleOptions());\r\n this.options.forEach((o) => o.setHidden(!visible.has(o)));\r\n this.optionGroups.forEach((g) => {\r\n const anyVisible = g.options.some((o) => visible.has(o));\r\n g.setHidden(!anyVisible);\r\n });\r\n }\r\n\r\n private syncActiveOptionToSelected(): void {\r\n const selected = this.selectedOption();\r\n if (selected) {\r\n const opts = this.options.toArray();\r\n const idx = opts.indexOf(selected);\r\n this.activeOptionIndex.set(idx >= 0 ? idx : -1);\r\n } else {\r\n this.activeOptionIndex.set(-1);\r\n }\r\n this.syncActiveStates();\r\n }\r\n\r\n private getOptionNativeText(option: SolarisOptionComponent): string {\r\n const nativeEl = (\r\n option as unknown as { elementRef: ElementRef<HTMLElement> }\r\n ).elementRef;\r\n // SECURITY_EXCEPTION: nativeElement access needed to read option text for search filtering. Read-only, SSR-safe.\r\n if (nativeEl?.nativeElement) {\r\n // SECURITY_EXCEPTION: nativeElement.textContent needed to read option text for search filtering. Read-only, SSR-safe.\r\n return nativeEl.nativeElement.textContent?.trim() || '';\r\n }\r\n return '';\r\n }\r\n\r\n protected optionMatchesSearch(\r\n option: SolarisOptionComponent,\r\n query: string,\r\n ): boolean {\r\n const label = (option.labelText() || '').toLowerCase();\r\n const desc = (option.descriptionText() || '').toLowerCase();\r\n const native = this.getOptionNativeText(option).toLowerCase();\r\n const normalizedQuery = query\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const normalizedLabel = label\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const normalizedDesc = desc\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const normalizedNative = native\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n\r\n return (\r\n normalizedLabel.includes(normalizedQuery) ||\r\n normalizedDesc.includes(normalizedQuery) ||\r\n normalizedNative.includes(normalizedQuery)\r\n );\r\n }\r\n\r\n private markAsTouched(): void {\r\n if (!this.touched()) {\r\n this.touched.set(true);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n private selectActiveOption(): void {\r\n const idx = this.activeOptionIndex();\r\n const opts = this.visibleOptions();\r\n if (idx >= 0 && idx < opts.length) {\r\n this.selectOption(opts[idx]);\r\n }\r\n }\r\n\r\n private focusNextOption(direction: 1 | -1): void {\r\n const opts = this.visibleOptions();\r\n if (opts.length === 0) return;\r\n\r\n let current = this.activeOptionIndex();\r\n\r\n if (current < 0 || current >= opts.length) {\r\n current = direction === 1 ? -1 : opts.length;\r\n }\r\n\r\n let next = current + direction;\r\n\r\n while (next >= 0 && next < opts.length) {\r\n if (!opts[next].isEffectivelyDisabled()) {\r\n this.activeOptionIndex.set(next);\r\n this.syncActiveStates();\r\n return;\r\n }\r\n next += direction;\r\n }\r\n\r\n if (direction === 1 && next >= opts.length) {\r\n this.activeOptionIndex.set(this.getFirstEnabledOptionIndex());\r\n this.syncActiveStates();\r\n } else if (direction === -1 && next < 0) {\r\n this.activeOptionIndex.set(this.getLastEnabledOptionIndex());\r\n this.syncActiveStates();\r\n }\r\n }\r\n\r\n private getFirstEnabledOptionIndex(): number {\r\n const opts = this.visibleOptions();\r\n for (let i = 0; i < opts.length; i++) {\r\n if (!opts[i].isEffectivelyDisabled()) return i;\r\n }\r\n return -1;\r\n }\r\n\r\n private getLastEnabledOptionIndex(): number {\r\n const opts = this.visibleOptions();\r\n for (let i = opts.length - 1; i >= 0; i--) {\r\n if (!opts[i].isEffectivelyDisabled()) return i;\r\n }\r\n return -1;\r\n }\r\n}\r\n","<solaris-form-field\r\n #formFieldRef\r\n [class.solaris-select--panel-open]=\"panelOpen()\"\r\n [control]=\"this\"\r\n [label]=\"labelText()\"\r\n [hint]=\"hintText()\"\r\n [error]=\"errorText()\"\r\n [appearance]=\"appearance()\"\r\n [size]=\"size()\"\r\n [density]=\"effectiveDensity()\"\r\n [radius]=\"radius()\"\r\n [invalid]=\"isEffectivelyInvalid()\"\r\n [required]=\"requiredInput()\"\r\n solaris-popover-trigger\r\n [solarisPopoverDisabled]=\"!canOpen()\"\r\n [solarisPopoverTriggerFor]=\"matchWidthPopover\"\r\n [solarisPopoverMatchTriggerWidth]=\"panelMatchTriggerWidth()\"\r\n [solarisPopoverAppearance]=\"popoverAppearance()\"\r\n [solarisPopoverPlacement]=\"'bottom'\"\r\n [solarisPopoverAlign]=\"'start'\"\r\n [solarisPopoverOffset]=\"0\"\r\n [solarisPopoverPadding]=\"'none'\"\r\n [solarisPopoverRadius]=\"radius()\"\r\n [solarisPopoverTopConnected]=\"true\"\r\n [solarisPopoverMinWidth]=\"panelMinWidth()\"\r\n [solarisPopoverMaxWidth]=\"panelMaxWidth()\"\r\n [solarisPopoverScrollStrategy]=\"'reposition'\"\r\n [solarisPopoverCloseOnEscape]=\"false\"\r\n [solarisPopoverAriaHasPopup]=\"'listbox'\"\r\n>\r\n @if (icon(); as iconName) {\r\n <solaris-icon solaris-form-prefix [name]=\"iconName\" [decorative]=\"true\" />\r\n }\r\n <ng-content select=\"[solaris-form-prefix]\" />\r\n\r\n <div\r\n #triggerEl\r\n class=\"solaris-select__trigger\"\r\n [id]=\"elementId() + '--trigger'\"\r\n solaris-form-field-trigger\r\n role=\"combobox\"\r\n tabindex=\"0\"\r\n [attr.aria-expanded]=\"panelOpen() ? 'true' : 'false'\"\r\n [attr.aria-controls]=\"panelOpen() ? panelId : null\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-activedescendant]=\"activeDescendantId()\"\r\n [attr.aria-labelledby]=\"ariaLabelledbyText() ?? null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\r\n (keydown)=\"onTriggerKeydown($event)\"\r\n (focus)=\"onTriggerFocus()\"\r\n (blur)=\"onTriggerBlur()\"\r\n >\r\n @if (searchable() && panelOpen()) {\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n class=\"solaris-select__search-input\"\r\n [attr.placeholder]=\"searchPlaceholderText()\"\r\n [value]=\"searchQuery()\"\r\n (input)=\"onSearchInput($event)\"\r\n (keydown)=\"onSearchKeydown($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n role=\"searchbox\"\r\n autocomplete=\"off\"\r\n />\r\n } @else {\r\n <span class=\"solaris-select__value\">\r\n @if (displayText()) {\r\n <span class=\"solaris-select__value-text\">{{ displayText() }}</span>\r\n } @else {\r\n <span class=\"solaris-select__placeholder\">{{\r\n placeholderText()\r\n }}</span>\r\n }\r\n </span>\r\n }\r\n\r\n <span class=\"solaris-select__actions\">\r\n @if (canClear()) {\r\n <button\r\n type=\"button\"\r\n class=\"solaris-select__clear\"\r\n [attr.aria-label]=\"clearAriaLabel()\"\r\n (click)=\"clearValue(); $event.stopPropagation()\"\r\n tabindex=\"-1\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n }\r\n\r\n <solaris-icon\r\n class=\"solaris-select__dropdown-icon\"\r\n name=\"chevron-down\"\r\n [decorative]=\"true\"\r\n size=\"sm\"\r\n />\r\n </span>\r\n </div>\r\n\r\n <ng-content select=\"[solaris-form-suffix]\" />\r\n</solaris-form-field>\r\n\r\n<ng-template #matchWidthPopover=\"solarisPopover\" solaris-popover>\r\n <div\r\n class=\"solaris-select__panel\"\r\n role=\"listbox\"\r\n [attr.id]=\"panelId\"\r\n tabindex=\"-1\"\r\n (click)=\"onPanelClick($event)\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n @if (loading()) {\r\n <div class=\"solaris-select__loading\">\r\n <span class=\"solaris-select__loading-text\">{{\r\n loadingTextValue()\r\n }}</span>\r\n </div>\r\n } @else if (showNoResults()) {\r\n <div class=\"solaris-select__no-results\">\r\n <span class=\"solaris-select__no-results-text\">{{\r\n noResultsTextValue()\r\n }}</span>\r\n </div>\r\n } @else if (showEmpty()) {\r\n <div class=\"solaris-select__empty\">\r\n <span class=\"solaris-select__empty-text\">{{ emptyTextValue() }}</span>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"solaris-select__options\"\r\n [style.max-height]=\"panelMaxHeight()\"\r\n >\r\n <ng-content select=\"solaris-option, solaris-option-group\" />\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { InjectionToken, TemplateRef } from '@angular/core';\r\n\r\nexport interface SolarisTooltipPanelData {\r\n title: string | undefined;\r\n body: string | undefined;\r\n icon: string | undefined;\r\n iconDecorative: boolean;\r\n contentTemplate: TemplateRef<unknown> | undefined;\r\n appearance: string;\r\n size: string;\r\n radius: string;\r\n maxWidth: string | number;\r\n arrow: boolean;\r\n arrowClass: string;\r\n closeable: boolean;\r\n closeLabel: string;\r\n panelId: string;\r\n placement: string;\r\n trigger: string;\r\n close: () => void;\r\n}\r\n\r\nexport const SOLARIS_TOOLTIP_PANEL_DATA =\r\n new InjectionToken<SolarisTooltipPanelData>('SolarisTooltipPanelData');\r\n","import { Component, inject, ChangeDetectorRef } from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\nimport {\r\n SOLARIS_TOOLTIP_PANEL_DATA,\r\n type SolarisTooltipPanelData,\r\n} from '../token/tooltip.tokens';\r\n\r\n@Component({\r\n selector: 'solaris-tooltip-panel',\r\n standalone: true,\r\n imports: [NgTemplateOutlet, SolarisIconComponent],\r\n templateUrl: './tooltip-panel.component.html',\r\n styleUrls: ['./tooltip-panel.component.scss'],\r\n host: {\r\n class: 'solaris-tooltip-panel',\r\n },\r\n})\r\nexport class SolarisTooltipPanelComponent {\r\n readonly data: SolarisTooltipPanelData = inject(SOLARIS_TOOLTIP_PANEL_DATA);\r\n private readonly cdr = inject(ChangeDetectorRef);\r\n\r\n updatePlacement(placement: string, arrowClass: string): void {\r\n this.data.placement = placement;\r\n this.data.arrowClass = arrowClass;\r\n this.cdr.markForCheck();\r\n }\r\n}\r\n","<div\r\n class=\"solaris-tooltip-panel__container\"\r\n [attr.data-appearance]=\"data.appearance\"\r\n [attr.data-size]=\"data.size\"\r\n [attr.data-radius]=\"data.radius\"\r\n [attr.data-placement]=\"data.placement\"\r\n [id]=\"data.panelId\"\r\n [style.max-width]=\"data.maxWidth\"\r\n>\r\n @if (data.arrow) {\r\n <div class=\"solaris-tooltip-panel__arrow {{ data.arrowClass }}\"></div>\r\n }\r\n\r\n <div class=\"solaris-tooltip-panel__content\">\r\n @if (data.icon) {\r\n <solaris-icon\r\n [name]=\"data.icon\"\r\n [decorative]=\"data.iconDecorative\"\r\n class=\"solaris-tooltip-panel__icon\"\r\n />\r\n }\r\n\r\n <div class=\"solaris-tooltip-panel__text\">\r\n @if (data.title) {\r\n <div class=\"solaris-tooltip-panel__title\">{{ data.title }}</div>\r\n }\r\n\r\n @if (data.body) {\r\n <div class=\"solaris-tooltip-panel__body\">{{ data.body }}</div>\r\n }\r\n\r\n @if (data.contentTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"data.contentTemplate\" />\r\n }\r\n </div>\r\n </div>\r\n\r\n @if (data.closeable) {\r\n <button\r\n class=\"solaris-tooltip-panel__close\"\r\n type=\"button\"\r\n (click)=\"data.close()\"\r\n attr.aria-label=\"{{ data.closeLabel }}\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n }\r\n</div>\r\n","import type {\r\n ConnectedPosition,\r\n ConnectionPositionPair,\r\n} from '@angular/cdk/overlay';\r\n\r\nimport type { SolarisTooltipPlacement } from './tooltip.types';\r\n\r\nexport function getTooltipPositions(\r\n placement: SolarisTooltipPlacement,\r\n offset: number,\r\n): ConnectedPosition[] {\r\n const primary = getConnectedPosition(placement, offset);\r\n const fallbacks = getFallbackPositions(placement, offset);\r\n return [primary, ...fallbacks];\r\n}\r\n\r\nfunction getConnectedPosition(\r\n placement: SolarisTooltipPlacement,\r\n offset: number,\r\n): ConnectedPosition {\r\n switch (placement) {\r\n case 'top':\r\n return {\r\n originX: 'center',\r\n originY: 'top',\r\n overlayX: 'center',\r\n overlayY: 'bottom',\r\n offsetY: -offset,\r\n };\r\n case 'top-start':\r\n return {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetY: -offset,\r\n };\r\n case 'top-end':\r\n return {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetY: -offset,\r\n };\r\n case 'bottom':\r\n return {\r\n originX: 'center',\r\n originY: 'bottom',\r\n overlayX: 'center',\r\n overlayY: 'top',\r\n offsetY: offset,\r\n };\r\n case 'bottom-start':\r\n return {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetY: offset,\r\n };\r\n case 'bottom-end':\r\n return {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetY: offset,\r\n };\r\n case 'right':\r\n return {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: offset,\r\n };\r\n case 'right-start':\r\n return {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: offset,\r\n };\r\n case 'right-end':\r\n return {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: offset,\r\n };\r\n case 'left':\r\n return {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -offset,\r\n };\r\n case 'left-start':\r\n return {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -offset,\r\n };\r\n case 'left-end':\r\n return {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetX: -offset,\r\n };\r\n }\r\n}\r\n\r\nfunction getFallbackPositions(\r\n placement: SolarisTooltipPlacement,\r\n offset: number,\r\n): ConnectedPosition[] {\r\n const primary = placement;\r\n const opposite = getOppositePlacement(primary);\r\n const fallbacks: ConnectedPosition[] = [];\r\n\r\n fallbacks.push(getConnectedPosition(opposite, offset));\r\n\r\n if (primary.includes('-')) {\r\n const base = primary.split('-')[0] as SolarisTooltipPlacement;\r\n fallbacks.push(\r\n getConnectedPosition(base as SolarisTooltipPlacement, offset),\r\n );\r\n const oppositeBase = getOppositePlacement(base);\r\n fallbacks.push(getConnectedPosition(oppositeBase, offset));\r\n } else {\r\n const base = primary;\r\n fallbacks.push(\r\n getConnectedPosition(`${base}-start` as SolarisTooltipPlacement, offset),\r\n );\r\n fallbacks.push(\r\n getConnectedPosition(`${base}-end` as SolarisTooltipPlacement, offset),\r\n );\r\n const oppositeBase = getOppositePlacement(base);\r\n fallbacks.push(getConnectedPosition(oppositeBase, offset));\r\n }\r\n\r\n return fallbacks;\r\n}\r\n\r\nfunction getOppositePlacement(\r\n placement: SolarisTooltipPlacement,\r\n): SolarisTooltipPlacement {\r\n switch (placement) {\r\n case 'top':\r\n return 'bottom';\r\n case 'bottom':\r\n return 'top';\r\n case 'left':\r\n return 'right';\r\n case 'right':\r\n return 'left';\r\n case 'top-start':\r\n return 'bottom-start';\r\n case 'top-end':\r\n return 'bottom-end';\r\n case 'bottom-start':\r\n return 'top-start';\r\n case 'bottom-end':\r\n return 'top-end';\r\n case 'left-start':\r\n return 'right-start';\r\n case 'left-end':\r\n return 'right-end';\r\n case 'right-start':\r\n return 'left-start';\r\n case 'right-end':\r\n return 'left-end';\r\n }\r\n}\r\n\r\nexport function getTooltipArrowClass(\r\n placement: SolarisTooltipPlacement,\r\n): string {\r\n switch (placement) {\r\n case 'top':\r\n case 'top-start':\r\n case 'top-end':\r\n return 'solaris-tooltip-arrow--bottom';\r\n case 'bottom':\r\n case 'bottom-start':\r\n case 'bottom-end':\r\n return 'solaris-tooltip-arrow--top';\r\n case 'left':\r\n case 'left-start':\r\n case 'left-end':\r\n return 'solaris-tooltip-arrow--right';\r\n case 'right':\r\n case 'right-start':\r\n case 'right-end':\r\n return 'solaris-tooltip-arrow--left';\r\n }\r\n}\r\n\r\nexport function derivePlacementFromConnectionPair(\r\n pair: ConnectionPositionPair,\r\n): SolarisTooltipPlacement {\r\n if (pair.overlayY === 'bottom' && pair.originY === 'top') {\r\n if (pair.overlayX === 'center') return 'top';\r\n if (pair.overlayX === 'start') return 'top-start';\r\n if (pair.overlayX === 'end') return 'top-end';\r\n }\r\n if (pair.overlayY === 'top' && pair.originY === 'bottom') {\r\n if (pair.overlayX === 'center') return 'bottom';\r\n if (pair.overlayX === 'start') return 'bottom-start';\r\n if (pair.overlayX === 'end') return 'bottom-end';\r\n }\r\n if (pair.overlayX === 'start' && pair.originX === 'end') {\r\n if (pair.overlayY === 'center') return 'right';\r\n if (pair.overlayY === 'top') return 'right-start';\r\n if (pair.overlayY === 'bottom') return 'right-end';\r\n }\r\n if (pair.overlayX === 'end' && pair.originX === 'start') {\r\n if (pair.overlayY === 'center') return 'left';\r\n if (pair.overlayY === 'top') return 'left-start';\r\n if (pair.overlayY === 'bottom') return 'left-end';\r\n }\r\n return 'top';\r\n}\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Injector,\r\n ViewContainerRef,\r\n ComponentRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n DestroyRef,\r\n HostListener,\r\n TemplateRef,\r\n AfterViewInit,\r\n booleanAttribute,\r\n numberAttribute,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Overlay,\r\n OverlayRef,\r\n OverlayConfig,\r\n FlexibleConnectedPositionStrategy,\r\n type ConnectedOverlayPositionChange,\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { Subscription } from 'rxjs';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\n\r\nimport { SolarisTooltipPanelComponent } from '../component/tooltip-panel.component';\r\nimport {\r\n SOLARIS_TOOLTIP_PANEL_DATA,\r\n type SolarisTooltipPanelData,\r\n} from '../token/tooltip.tokens';\r\nimport {\r\n getTooltipPositions,\r\n getTooltipArrowClass,\r\n derivePlacementFromConnectionPair,\r\n} from '../model/tooltip-position';\r\n\r\nimport type {\r\n SolarisTooltipPlacement,\r\n SolarisTooltipTrigger,\r\n SolarisTooltipAppearance,\r\n SolarisTooltipSize,\r\n SolarisTooltipRadius,\r\n} from '../model/tooltip.types';\r\n\r\nlet nextPanelId = 0;\r\n\r\nconst TOOLTIP_TRIGGER_GAP = 3;\r\n\r\nconst ARROW_SIZE_PX: Record<string, number> = {\r\n sm: 12,\r\n md: 20,\r\n lg: 24,\r\n};\r\n\r\n@Directive({\r\n selector: '[solaris-tooltip], [solarisTooltip], [solarisTooltipFor]',\r\n standalone: true,\r\n exportAs: 'solarisTooltip',\r\n host: {\r\n '[attr.aria-describedby]': 'isOpen() && !isClickTrigger() ? panelId : null',\r\n },\r\n})\r\nexport class SolarisTooltipDirective implements AfterViewInit {\r\n private readonly overlay = inject(Overlay);\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly injector = inject(Injector);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly translate = inject(SolarisTranslateService);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n protected readonly panelId = `solaris-tooltip-panel-${++nextPanelId}`;\r\n protected readonly isOpen = signal(false);\r\n protected readonly isClickTrigger = computed(\r\n () => this.solarisTooltipTrigger() === 'click',\r\n );\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideClickCleanup: (() => void) | null = null;\r\n private previousActiveElement: HTMLElement | null = null;\r\n private hoverTimeout: ReturnType<typeof setTimeout> | null = null;\r\n private isHovered = false;\r\n private isFocused = false;\r\n private tooltipComponentRef: ComponentRef<SolarisTooltipPanelComponent> | null =\r\n null;\r\n private positionChangesSub: Subscription | null = null;\r\n private currentPlacement: SolarisTooltipPlacement = 'top';\r\n\r\n readonly solarisTooltip = input<string | undefined>(undefined, {\r\n alias: 'solarisTooltip',\r\n });\r\n\r\n readonly solarisTooltipKey = input<string | undefined>(undefined, {\r\n alias: 'solarisTooltipKey',\r\n });\r\n\r\n readonly solarisTooltipFor = input<TemplateRef<unknown> | undefined>(\r\n undefined,\r\n {\r\n alias: 'solarisTooltipFor',\r\n },\r\n );\r\n\r\n readonly solarisTooltipTitle = input<string | undefined>(undefined, {\r\n alias: 'solarisTooltipTitle',\r\n });\r\n\r\n readonly solarisTooltipTitleKey = input<string | undefined>(undefined, {\r\n alias: 'solarisTooltipTitleKey',\r\n });\r\n\r\n readonly solarisTooltipIcon = input<string | undefined>(undefined, {\r\n alias: 'solarisTooltipIcon',\r\n });\r\n\r\n readonly solarisTooltipIconDecorative = input<boolean, boolean>(true, {\r\n alias: 'solarisTooltipIconDecorative',\r\n transform: booleanAttribute,\r\n });\r\n\r\n readonly solarisTooltipTrigger = input<SolarisTooltipTrigger>('hover', {\r\n alias: 'solarisTooltipTrigger',\r\n });\r\n\r\n readonly solarisTooltipPlacement = input<SolarisTooltipPlacement>('top', {\r\n alias: 'solarisTooltipPlacement',\r\n });\r\n\r\n readonly solarisTooltipOffset = input<number, string | number>(0, {\r\n alias: 'solarisTooltipOffset',\r\n transform: numberAttribute,\r\n });\r\n\r\n readonly solarisTooltipDisabled = input<boolean, boolean>(false, {\r\n alias: 'solarisTooltipDisabled',\r\n transform: booleanAttribute,\r\n });\r\n\r\n readonly solarisTooltipCloseable = input<boolean, boolean>(false, {\r\n alias: 'solarisTooltipCloseable',\r\n transform: booleanAttribute,\r\n });\r\n\r\n readonly solarisTooltipCloseLabel = input<string | undefined>(undefined, {\r\n alias: 'solarisTooltipCloseLabel',\r\n });\r\n\r\n readonly solarisTooltipCloseLabelKey = input<string | undefined>(undefined, {\r\n alias: 'solarisTooltipCloseLabelKey',\r\n });\r\n\r\n readonly solarisTooltipShowDelay = input<number, string | number>(300, {\r\n alias: 'solarisTooltipShowDelay',\r\n transform: numberAttribute,\r\n });\r\n\r\n readonly solarisTooltipHideDelay = input<number, string | number>(100, {\r\n alias: 'solarisTooltipHideDelay',\r\n transform: numberAttribute,\r\n });\r\n\r\n readonly solarisTooltipAppearance = input<SolarisTooltipAppearance>(\r\n 'outline',\r\n {\r\n alias: 'solarisTooltipAppearance',\r\n },\r\n );\r\n\r\n readonly solarisTooltipSize = input<SolarisTooltipSize>('sm', {\r\n alias: 'solarisTooltipSize',\r\n });\r\n\r\n readonly solarisTooltipRadius = input<SolarisTooltipRadius>('md', {\r\n alias: 'solarisTooltipRadius',\r\n });\r\n\r\n readonly solarisTooltipMaxWidth = input<string | number>('20rem', {\r\n alias: 'solarisTooltipMaxWidth',\r\n });\r\n\r\n readonly solarisTooltipArrow = input<boolean, boolean>(true, {\r\n alias: 'solarisTooltipArrow',\r\n transform: booleanAttribute,\r\n });\r\n\r\n readonly solarisTooltipOpen = input<boolean | undefined>(undefined, {\r\n alias: 'solarisTooltipOpen',\r\n });\r\n\r\n readonly solarisTooltipOpened = output<void>();\r\n readonly solarisTooltipClosed = output<void>();\r\n readonly solarisTooltipOpenChange = output<boolean>();\r\n\r\n constructor() {\r\n effect(() => {\r\n const shouldBeOpen = this.solarisTooltipOpen();\r\n if (shouldBeOpen === true && !this.isOpen()) {\r\n this.open();\r\n } else if (shouldBeOpen === false && this.isOpen()) {\r\n this.close();\r\n }\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.disposeOverlay();\r\n this.clearHoverTimeout();\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (\r\n !this.solarisTooltip() &&\r\n !this.solarisTooltipKey() &&\r\n !this.solarisTooltipFor()\r\n ) {\r\n console.warn(\r\n '[SolarisTooltip] Tooltip requires solaris-tooltip, solarisTooltip, solarisTooltipKey, or solarisTooltipFor.',\r\n );\r\n }\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n this.isHovered = true;\r\n if (\r\n this.solarisTooltipTrigger() === 'hover' &&\r\n !this.solarisTooltipDisabled()\r\n ) {\r\n this.scheduleOpen(Number(this.solarisTooltipShowDelay()));\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n this.isHovered = false;\r\n if (this.solarisTooltipTrigger() === 'hover') {\r\n this.scheduleClose(Number(this.solarisTooltipHideDelay()));\r\n }\r\n }\r\n\r\n @HostListener('focusin')\r\n onFocusIn(): void {\r\n this.isFocused = true;\r\n if (\r\n this.solarisTooltipTrigger() === 'hover' &&\r\n !this.solarisTooltipDisabled()\r\n ) {\r\n this.scheduleOpen(Number(this.solarisTooltipShowDelay()));\r\n }\r\n }\r\n\r\n @HostListener('focusout')\r\n onFocusOut(): void {\r\n this.isFocused = false;\r\n if (this.solarisTooltipTrigger() === 'hover') {\r\n this.scheduleClose(Number(this.solarisTooltipHideDelay()));\r\n }\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n if (this.solarisTooltipDisabled()) {\r\n return;\r\n }\r\n\r\n if (this.solarisTooltipTrigger() === 'click') {\r\n this.toggle();\r\n }\r\n }\r\n\r\n @HostListener('keydown.escape')\r\n onEscape(): void {\r\n if (this.isOpen() && this.solarisTooltipTrigger() !== 'manual') {\r\n this.close();\r\n }\r\n }\r\n\r\n open(): void {\r\n if (this.isOpen() || this.solarisTooltipDisabled()) {\r\n return;\r\n }\r\n\r\n this.clearHoverTimeout();\r\n\r\n if (this.solarisTooltipTrigger() === 'click') {\r\n // SECURITY_EXCEPTION: this.document.activeElement required for restoreFocus. SSR-safe via injected DOCUMENT.\r\n this.previousActiveElement = this.document.activeElement as HTMLElement;\r\n }\r\n\r\n this.createOverlay();\r\n this.attachPanel();\r\n this.addOutsideClickHandler();\r\n this.isOpen.set(true);\r\n this.solarisTooltipOpened.emit();\r\n this.solarisTooltipOpenChange.emit(true);\r\n }\r\n\r\n close(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.clearHoverTimeout();\r\n this.detachPanel();\r\n this.restoreFocus();\r\n this.isOpen.set(false);\r\n this.solarisTooltipClosed.emit();\r\n this.solarisTooltipOpenChange.emit(false);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n reposition(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.updatePosition();\r\n }\r\n }\r\n\r\n private getResolvedBody(): string | undefined {\r\n const text = this.solarisTooltip();\r\n if (text) {\r\n return text;\r\n }\r\n\r\n const key = this.solarisTooltipKey();\r\n if (key) {\r\n return this.translate.translate(key);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private getResolvedTitle(): string | undefined {\r\n const title = this.solarisTooltipTitle();\r\n if (title) {\r\n return title;\r\n }\r\n\r\n const titleKey = this.solarisTooltipTitleKey();\r\n if (titleKey) {\r\n return this.translate.translate(titleKey);\r\n }\r\n\r\n return undefined;\r\n }\r\n\r\n private getResolvedCloseLabel(): string {\r\n const closeLabel = this.solarisTooltipCloseLabel();\r\n if (closeLabel) {\r\n return closeLabel;\r\n }\r\n\r\n const closeLabelKey = this.solarisTooltipCloseLabelKey();\r\n if (closeLabelKey) {\r\n return this.translate.translate(closeLabelKey);\r\n }\r\n\r\n return this.translate.translate('solaris.tooltip.close');\r\n }\r\n\r\n private scheduleOpen(delay: number): void {\r\n this.clearHoverTimeout();\r\n if (delay > 0) {\r\n this.hoverTimeout = setTimeout(() => {\r\n this.ngZone.run(() => {\r\n if ((this.isHovered || this.isFocused) && !this.isOpen()) {\r\n this.open();\r\n }\r\n });\r\n }, delay);\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n private scheduleClose(delay: number): void {\r\n this.clearHoverTimeout();\r\n\r\n if (this.solarisTooltipTrigger() !== 'hover') {\r\n return;\r\n }\r\n\r\n if (delay > 0) {\r\n this.hoverTimeout = setTimeout(() => {\r\n this.ngZone.run(() => {\r\n if (!this.isHovered && !this.isFocused && this.isOpen()) {\r\n this.close();\r\n }\r\n });\r\n }, delay);\r\n } else if (!this.isHovered && !this.isFocused) {\r\n this.close();\r\n }\r\n }\r\n\r\n private clearHoverTimeout(): void {\r\n if (this.hoverTimeout !== null) {\r\n clearTimeout(this.hoverTimeout);\r\n this.hoverTimeout = null;\r\n }\r\n }\r\n\r\n private createOverlay(): void {\r\n this.disposeOverlay();\r\n\r\n const positionStrategy = this.createPositionStrategy();\r\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy,\r\n scrollStrategy,\r\n disposeOnNavigation: true,\r\n panelClass: 'solaris-tooltip-panel-overlay',\r\n });\r\n\r\n this.overlayRef = this.overlay.create(config);\r\n }\r\n\r\n private createPositionStrategy(): FlexibleConnectedPositionStrategy {\r\n const placement = this.solarisTooltipPlacement();\r\n const userOffset = Number(this.solarisTooltipOffset());\r\n const hasArrow = this.solarisTooltipArrow();\r\n const size = this.solarisTooltipSize();\r\n const arrowPx = hasArrow ? (ARROW_SIZE_PX[size] ?? 20) : 0;\r\n const effectiveOffset = arrowPx + TOOLTIP_TRIGGER_GAP + userOffset;\r\n const positions = getTooltipPositions(placement, effectiveOffset);\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions(positions)\r\n .withFlexibleDimensions(true)\r\n .withPush(true)\r\n .withGrowAfterOpen(true);\r\n }\r\n\r\n private attachPanel(): void {\r\n if (!this.overlayRef) {\r\n return;\r\n }\r\n\r\n this.currentPlacement = this.solarisTooltipPlacement();\r\n const trigger = this.solarisTooltipTrigger();\r\n const effectiveCloseable =\r\n trigger === 'click' ? this.solarisTooltipCloseable() : false;\r\n const closeFn = () => this.close();\r\n\r\n const data: SolarisTooltipPanelData = {\r\n title: this.getResolvedTitle(),\r\n body: this.getResolvedBody(),\r\n icon: this.solarisTooltipIcon(),\r\n iconDecorative: this.solarisTooltipIconDecorative(),\r\n contentTemplate: this.solarisTooltipFor(),\r\n appearance: this.solarisTooltipAppearance(),\r\n size: this.solarisTooltipSize(),\r\n radius: this.solarisTooltipRadius(),\r\n maxWidth: this.solarisTooltipMaxWidth(),\r\n arrow: this.solarisTooltipArrow(),\r\n arrowClass: getTooltipArrowClass(this.currentPlacement),\r\n closeable: effectiveCloseable,\r\n closeLabel: this.getResolvedCloseLabel(),\r\n panelId: this.panelId,\r\n placement: this.currentPlacement,\r\n trigger,\r\n close: closeFn,\r\n };\r\n\r\n const panelInjector = Injector.create({\r\n parent: this.injector,\r\n providers: [{ provide: SOLARIS_TOOLTIP_PANEL_DATA, useValue: data }],\r\n });\r\n\r\n const portal = new ComponentPortal(\r\n SolarisTooltipPanelComponent,\r\n this.viewContainerRef,\r\n panelInjector,\r\n );\r\n\r\n this.tooltipComponentRef = this.overlayRef.attach(portal);\r\n\r\n const strategy = this.overlayRef.getConfig()\r\n .positionStrategy as FlexibleConnectedPositionStrategy;\r\n this.positionChangesSub = strategy.positionChanges.subscribe(\r\n (change: ConnectedOverlayPositionChange) => {\r\n const actualPlacement = derivePlacementFromConnectionPair(\r\n change.connectionPair,\r\n );\r\n if (actualPlacement !== this.currentPlacement) {\r\n this.currentPlacement = actualPlacement;\r\n this.tooltipComponentRef?.instance.updatePlacement(\r\n actualPlacement,\r\n getTooltipArrowClass(actualPlacement),\r\n );\r\n }\r\n },\r\n );\r\n }\r\n\r\n private detachPanel(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.detach();\r\n this.disposeOverlay();\r\n }\r\n this.removeOutsideClickHandler();\r\n }\r\n\r\n private disposeOverlay(): void {\r\n this.positionChangesSub?.unsubscribe();\r\n this.positionChangesSub = null;\r\n this.tooltipComponentRef = null;\r\n if (this.overlayRef) {\r\n this.overlayRef.dispose();\r\n this.overlayRef = null;\r\n }\r\n this.removeOutsideClickHandler();\r\n }\r\n\r\n private addOutsideClickHandler(): void {\r\n if (this.solarisTooltipTrigger() !== 'click') {\r\n return;\r\n }\r\n\r\n this.removeOutsideClickHandler();\r\n\r\n this.outsideClickCleanup = this.rendererListen(\r\n this.document,\r\n 'click',\r\n this.handleOutsideClick,\r\n );\r\n }\r\n\r\n private removeOutsideClickHandler(): void {\r\n if (this.outsideClickCleanup) {\r\n this.outsideClickCleanup();\r\n this.outsideClickCleanup = null;\r\n }\r\n }\r\n\r\n private readonly handleOutsideClick = (event: Event): void => {\r\n if (!this.overlayRef) {\r\n return;\r\n }\r\n\r\n const overlayElement = this.overlayRef.overlayElement;\r\n // SECURITY_EXCEPTION: nativeElement needed for outside-click containment check. ElementRef SSR-safe.\r\n const triggerElement = this.elementRef.nativeElement;\r\n const target = event.target as Node;\r\n\r\n if (\r\n target &&\r\n !overlayElement.contains(target) &&\r\n !triggerElement.contains(target)\r\n ) {\r\n this.close();\r\n }\r\n };\r\n\r\n private rendererListen(\r\n target: EventTarget,\r\n event: string,\r\n callback: (event: Event) => void,\r\n ): () => void {\r\n target.addEventListener(event, callback);\r\n return () => {\r\n target.removeEventListener(event, callback);\r\n };\r\n }\r\n\r\n private restoreFocus(): void {\r\n if (\r\n this.solarisTooltipTrigger() === 'click' &&\r\n this.previousActiveElement &&\r\n // SECURITY_EXCEPTION: this.document.contains() to safely verify trigger still exists before focus.\r\n this.document.contains(this.previousActiveElement)\r\n ) {\r\n this.previousActiveElement.focus();\r\n }\r\n this.previousActiveElement = null;\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n output,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ContentChildren,\r\n QueryList,\r\n ElementRef,\r\n ViewChild,\r\n AfterContentInit,\r\n AfterViewInit,\r\n DestroyRef,\r\n isDevMode,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport {\r\n SolarisFormFieldTriggerDirective,\r\n SolarisFormPrefixDirective,\r\n SolarisFormFieldComponent,\r\n} from '../../form-field';\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisOptionGroupComponent } from '../../option-group';\r\nimport { SolarisOptionComponent } from '../../option';\r\nimport { SolarisIconComponent } from '../../../icon';\r\nimport {\r\n SolarisPopoverDirective,\r\n SolarisPopoverTriggerDirective,\r\n} from '../../../interaction/popover';\r\nimport { SolarisTooltipDirective } from '../../../interaction/tooltip';\r\n\r\nimport type {\r\n SolarisMultiSelectAppearance,\r\n SolarisMultiSelectSize,\r\n SolarisMultiSelectDensity,\r\n SolarisMultiSelectRadius,\r\n SolarisMultiSelectDisplayMode,\r\n} from '../model/multi-select.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-multi-select-${++nextId}`;\r\n}\r\n\r\nfunction normalizeArray(value: unknown): unknown[] {\r\n if (value === null || value === undefined) return [];\r\n if (Array.isArray(value)) return value;\r\n return [];\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-multi-select',\r\n standalone: true,\r\n imports: [\r\n SolarisFormFieldComponent,\r\n SolarisFormFieldTriggerDirective,\r\n SolarisFormPrefixDirective,\r\n SolarisIconComponent,\r\n SolarisPopoverDirective,\r\n SolarisPopoverTriggerDirective,\r\n SolarisTooltipDirective,\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisMultiSelectComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: forwardRef(() => SolarisMultiSelectComponent),\r\n },\r\n ],\r\n templateUrl: './multi-select.component.html',\r\n styleUrls: ['./multi-select.component.scss'],\r\n host: {\r\n 'solaris-multi-select': '',\r\n '[attr.id]': 'elementId()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-open]': 'panelOpen() ? \"\" : null',\r\n '[attr.aria-label]': 'ariaLabelText() ?? null',\r\n '[attr.data-has-value]': 'hasValue() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisMultiSelectComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor, AfterContentInit, AfterViewInit\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n protected readonly parentFormField = inject(SolarisFormFieldComponent, {\r\n optional: true,\r\n });\r\n\r\n @ViewChild(SolarisPopoverTriggerDirective)\r\n protected popoverTrigger?: SolarisPopoverTriggerDirective;\r\n\r\n @ViewChild('searchInput', { read: ElementRef })\r\n protected searchInputRef?: ElementRef<HTMLInputElement>;\r\n\r\n @ViewChild('triggerEl', { read: ElementRef })\r\n protected triggerElement?: ElementRef<HTMLElement>;\r\n\r\n @ViewChild('formFieldRef', { read: ElementRef })\r\n protected formFieldElement?: ElementRef<HTMLElement>;\r\n\r\n @ContentChildren(SolarisOptionComponent, { descendants: true })\r\n protected options!: QueryList<SolarisOptionComponent>;\r\n\r\n @ContentChildren(SolarisOptionGroupComponent, { descendants: true })\r\n protected optionGroups!: QueryList<SolarisOptionGroupComponent>;\r\n\r\n readonly hint = input<string>();\r\n readonly label = input<string>();\r\n readonly error = input<string>();\r\n readonly hintKey = input<string>();\r\n readonly labelKey = input<string>();\r\n readonly errorKey = input<string>();\r\n readonly emptyText = input<string>();\r\n readonly ariaLabel = input<string>();\r\n readonly placeholder = input<string>();\r\n readonly loadingText = input<string>();\r\n readonly emptyTextKey = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n readonly placeholderKey = input<string>();\r\n readonly loadingTextKey = input<string>();\r\n readonly ariaLabelledby = input<string>();\r\n readonly loading = input<boolean>(false);\r\n readonly searchPlaceholder = input<string>();\r\n readonly clearable = input<boolean>(false);\r\n readonly clearLabel = input<string>();\r\n readonly clearLabelKey = input<string>();\r\n readonly removeChipLabel = input<string>();\r\n readonly removeChipLabelKey = input<string>();\r\n readonly noResultsText = input<string>();\r\n readonly noResultsTextKey = input<string>();\r\n readonly value = input<unknown[]>([]);\r\n readonly searchable = input<boolean>(false);\r\n readonly searchPlaceholderKey = input<string>();\r\n readonly panelMinWidth = input<string | number>();\r\n readonly panelMaxWidth = input<string | number>();\r\n readonly density = input<SolarisMultiSelectDensity>();\r\n readonly size = input<SolarisMultiSelectSize>('md');\r\n readonly panelMatchTriggerWidth = input<boolean>(true);\r\n readonly radius = input<SolarisMultiSelectRadius>('md');\r\n readonly disabledInput = input(false, { alias: 'disabled' });\r\n readonly readonlyInput = input(false, { alias: 'readonly' });\r\n readonly requiredInput = input(false, { alias: 'required' });\r\n readonly panelMaxHeight = input<string | number>('20rem');\r\n readonly icon = input<string>();\r\n readonly displayWith = input<(value: unknown) => string | undefined>();\r\n readonly appearance = input<SolarisMultiSelectAppearance>('outline');\r\n readonly compareWith = input<(a: unknown, b: unknown) => boolean>(Object.is);\r\n readonly manualInvalid = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly selectAll = input<boolean>(false);\r\n readonly selectAllLabel = input<string>();\r\n readonly selectAllLabelKey = input<string>();\r\n readonly displayMode = input<SolarisMultiSelectDisplayMode>('auto');\r\n readonly maxVisibleChips = input<number>(3);\r\n readonly selectedCountLabel = input<string>();\r\n readonly selectedCountLabelKey = input<string>();\r\n readonly overflowLabel = input<string>();\r\n readonly overflowLabelKey = input<string>();\r\n readonly minSelected = input<number | undefined>(undefined);\r\n readonly maxSelected = input<number | undefined>(undefined);\r\n readonly showSelectionTooltip = input<boolean>(false);\r\n readonly name = input<string>();\r\n\r\n readonly opened = output<void>();\r\n readonly closed = output<void>();\r\n readonly cleared = output<void>();\r\n readonly openChange = output<boolean>();\r\n readonly searchChange = output<string>();\r\n readonly valueChange = output<unknown[]>();\r\n readonly selectionChange = output<SolarisOptionComponent>();\r\n\r\n protected readonly panelId = `solaris-multi-select-panel-${generateId()}`;\r\n protected readonly panelOpen = signal(false);\r\n protected readonly internalValue = signal<unknown[]>([]);\r\n protected readonly internalFocused = signal(false);\r\n protected readonly internalDisabled = signal(false);\r\n protected readonly searchQuery = signal('');\r\n protected readonly activeOptionIndex = signal(-1);\r\n protected readonly touched = signal(false);\r\n protected readonly optionsInitialized = signal(false);\r\n\r\n @ViewChild('triggerContent', { read: ElementRef })\r\n protected triggerContentRef?: ElementRef<HTMLElement>;\r\n\r\n private onChange: (value: unknown[]) => void = () => undefined;\r\n private onTouched: () => void = () => undefined;\r\n private optionsSubscription: (() => void) | undefined;\r\n private optionInteractionSubscriptions: (() => void)[] = [];\r\n private readonly popoverSubscriptions: (() => void)[] = [];\r\n private readonly triggerWidth = signal(0);\r\n private resizeObserver: ResizeObserver | null = null;\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n protected readonly elementId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is standard DOM API to check existing ID before generating one. Same approach used by Solaris Select and Option.\r\n const existing = this.elementRef.nativeElement.getAttribute('id');\r\n return existing ?? generateId();\r\n });\r\n\r\n protected readonly effectiveDensity = computed<SolarisMultiSelectDensity>(\r\n () => {\r\n return this.density() ?? 'comfortable';\r\n },\r\n );\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.internalDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n const manual = this.manualInvalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n if (this.touched()) {\r\n const min = this.minSelected();\r\n const max = this.maxSelected();\r\n const count = this.internalValue().length;\r\n if (min !== undefined && count < min) return true;\r\n if (max !== undefined && count > max) return true;\r\n if (this.requiredInput() && !this.hasValue()) return true;\r\n }\r\n return false;\r\n });\r\n\r\n protected readonly popoverAppearance = computed(() => {\r\n const a = this.appearance();\r\n return a === 'filled' ? 'surface' : a;\r\n });\r\n\r\n protected readonly canOpen = computed(() => {\r\n return !this.isEffectivelyDisabled() && !this.isEffectivelyReadonly();\r\n });\r\n\r\n protected readonly hasValue = computed(() => {\r\n return this.internalValue().length > 0;\r\n });\r\n\r\n protected readonly canClear = computed(() => {\r\n return (\r\n this.clearable() &&\r\n this.hasValue() &&\r\n !this.isEffectivelyDisabled() &&\r\n !this.isEffectivelyReadonly()\r\n );\r\n });\r\n\r\n protected readonly selectedOptions = computed<SolarisOptionComponent[]>(\r\n () => {\r\n const value = this.internalValue();\r\n const comp = this.compareWith();\r\n const opts = this.options;\r\n if (!opts || value.length === 0) {\r\n return [];\r\n }\r\n return opts.filter((opt) => value.some((v) => comp(opt.value(), v)));\r\n },\r\n );\r\n\r\n protected readonly selectedCount = computed(() => {\r\n return this.internalValue().length;\r\n });\r\n\r\n protected readonly selectedLabels = computed(() => {\r\n const dw = this.displayWith();\r\n const selected = this.selectedOptions();\r\n return selected\r\n .map((opt) => {\r\n if (dw) {\r\n const result = dw(opt.value());\r\n if (result !== undefined) return result;\r\n }\r\n const label = opt.labelText();\r\n if (label) return label;\r\n const native = this.getOptionNativeText(opt);\r\n if (native) return native;\r\n return '';\r\n })\r\n .filter(Boolean);\r\n });\r\n\r\n protected readonly summaryText = computed(() => {\r\n const count = this.selectedCount();\r\n if (count === 0) return '';\r\n\r\n const key = this.selectedCountLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key, { count: String(count) });\r\n }\r\n const text = this.selectedCountLabel();\r\n if (text) return text;\r\n\r\n if (count === 1) {\r\n return this.translateService.translate(\r\n 'solaris.multiSelect.selectedCount.singular',\r\n { count: '1' },\r\n );\r\n }\r\n return this.translateService.translate(\r\n 'solaris.multiSelect.selectedCount.plural',\r\n { count: String(count) },\r\n );\r\n });\r\n\r\n private readonly availableContentWidth = computed(() => {\r\n const tw = this.triggerWidth();\r\n if (tw <= 0) return 0;\r\n const searchWidth = this.searchable() && this.panelOpen() ? 80 : 0;\r\n return Math.max(0, tw - searchWidth);\r\n });\r\n\r\n protected readonly autoChipCount = computed(() => {\r\n if (this.displayMode() !== 'auto') return 0;\r\n const selected = this.selectedOptions();\r\n if (selected.length === 0) return 0;\r\n const avail = this.availableContentWidth();\r\n if (avail <= 0) return 0;\r\n let remaining = avail;\r\n let count = 0;\r\n for (const opt of selected) {\r\n const label = this.getOptionDisplayLabel(opt);\r\n const canRemove =\r\n !this.isEffectivelyDisabled() && !this.isEffectivelyReadonly();\r\n const labelWidth = label.length * 9;\r\n const chipPaddingX = 16;\r\n const removeWidth = canRemove ? 20 : 0;\r\n const chipWidth = labelWidth + chipPaddingX + removeWidth + 4;\r\n if (chipWidth <= remaining) {\r\n remaining -= chipWidth;\r\n count++;\r\n } else {\r\n break;\r\n }\r\n }\r\n return count;\r\n });\r\n\r\n protected readonly autoOverflowCount = computed(() => {\r\n return Math.max(0, this.selectedOptions().length - this.autoChipCount());\r\n });\r\n\r\n protected readonly autoShowOverflow = computed(() => {\r\n return this.autoOverflowCount() > 0;\r\n });\r\n\r\n protected readonly showCountOnly = computed(() => {\r\n return (\r\n this.displayMode() === 'auto' &&\r\n this.autoChipCount() === 0 &&\r\n this.selectedCount() > 0\r\n );\r\n });\r\n\r\n protected readonly autoVisibleChips = computed(() => {\r\n return this.selectedOptions().slice(0, this.autoChipCount());\r\n });\r\n\r\n protected readonly autoOverflowTooltipText = computed(() => {\r\n const selected = this.selectedOptions();\r\n const count = this.autoChipCount();\r\n return selected\r\n .slice(count)\r\n .map((opt) => this.getOptionDisplayLabel(opt))\r\n .join(', ');\r\n });\r\n\r\n protected readonly countTooltipText = computed(() => {\r\n return this.selectedLabels().join(', ');\r\n });\r\n\r\n protected readonly overflowCount = computed(() => {\r\n return Math.max(0, this.selectedOptions().length - this.maxVisibleChips());\r\n });\r\n\r\n protected readonly overflowText = computed(() => {\r\n const count = this.overflowCount();\r\n if (count <= 0) return '';\r\n\r\n const key = this.overflowLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key, { count: String(count) });\r\n }\r\n const text = this.overflowLabel();\r\n if (text) return text;\r\n\r\n return `+${count}`;\r\n });\r\n\r\n protected readonly commaText = computed(() => {\r\n return this.selectedLabels().join(', ');\r\n });\r\n\r\n protected readonly placeholderText = computed(() => {\r\n const key = this.placeholderKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.placeholder() || '';\r\n }\r\n return this.placeholder() ?? '';\r\n });\r\n\r\n protected readonly searchPlaceholderText = computed(() => {\r\n const key = this.searchPlaceholderKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.searchPlaceholder();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate(\r\n 'solaris.multiSelect.search.placeholder',\r\n );\r\n });\r\n\r\n protected readonly loadingTextValue = computed(() => {\r\n const key = this.loadingTextKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.loadingText();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.multiSelect.loading');\r\n });\r\n\r\n protected readonly emptyTextValue = computed(() => {\r\n const key = this.emptyTextKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.emptyText();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.multiSelect.empty');\r\n });\r\n\r\n protected readonly noResultsTextValue = computed(() => {\r\n const key = this.noResultsTextKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.noResultsText();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.multiSelect.noResults');\r\n });\r\n\r\n protected readonly clearAriaLabel = computed(() => {\r\n const key = this.clearLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.clearLabel();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.multiSelect.clear');\r\n });\r\n\r\n protected readonly selectAllLabelText = computed(() => {\r\n const key = this.selectAllLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.selectAllLabel();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.multiSelect.selectAll');\r\n });\r\n\r\n protected readonly removeChipAriaLabel = computed(() => {\r\n const key = this.removeChipLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n const text = this.removeChipLabel();\r\n if (text) {\r\n return text;\r\n }\r\n return this.translateService.translate('solaris.multiSelect.removeChip');\r\n });\r\n\r\n protected readonly ariaLabelText = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledbyText = computed(() => {\r\n return this.ariaLabelledby();\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.label() || '';\r\n }\r\n return this.label() ?? '';\r\n });\r\n\r\n protected readonly hintText = computed(() => {\r\n const key = this.hintKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.hint() || '';\r\n }\r\n return this.hint() ?? '';\r\n });\r\n\r\n protected readonly errorText = computed(() => {\r\n const key = this.errorKey();\r\n if (key) {\r\n return this.translateService.translate(key) || this.error() || '';\r\n }\r\n return this.error() ?? '';\r\n });\r\n\r\n protected readonly activeDescendantId = computed(() => {\r\n if (!this.panelOpen()) return null;\r\n const idx = this.activeOptionIndex();\r\n const opts = this.visibleOptions();\r\n if (idx >= 0 && idx < opts.length) {\r\n return (opts[idx] as unknown as { elementId: () => string }).elementId();\r\n }\r\n return null;\r\n });\r\n\r\n protected readonly _describedByIds = signal<string[]>([]);\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const ids = this._describedByIds();\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n protected readonly visibleOptions = computed(() => {\r\n const opts = this.options;\r\n if (!opts) return [];\r\n if (!this.panelOpen()) return [];\r\n const query = this.searchQuery().toLowerCase().trim();\r\n if (!query) return opts.toArray();\r\n return opts.toArray().filter((opt) => {\r\n if (opt.isEffectivelyDisabled()) return false;\r\n return this.optionMatchesSearch(opt, query);\r\n });\r\n });\r\n\r\n protected readonly showNoResults = computed(() => {\r\n return (\r\n this.searchQuery().trim().length > 0 &&\r\n this.visibleOptions().length === 0 &&\r\n !this.loading()\r\n );\r\n });\r\n\r\n protected readonly showEmpty = computed(() => {\r\n const opts = this.options;\r\n return (\r\n (!opts || opts.length === 0) &&\r\n !this.loading() &&\r\n this.searchQuery().trim().length === 0\r\n );\r\n });\r\n\r\n protected readonly allSelectedCount = computed(() => {\r\n const value = this.internalValue();\r\n const comp = this.compareWith();\r\n const opts = this.selectableOptions();\r\n return opts.filter((opt) => value.some((v) => comp(opt.value(), v))).length;\r\n });\r\n\r\n protected readonly selectableOptions = computed(() => {\r\n const opts = this.options;\r\n if (!opts) return [];\r\n const query = this.searchQuery().trim();\r\n let filtered: SolarisOptionComponent[];\r\n if (query) {\r\n filtered = opts\r\n .toArray()\r\n .filter(\r\n (o) =>\r\n !o.isEffectivelyDisabled() && this.optionMatchesSearch(o, query),\r\n );\r\n } else {\r\n filtered = opts.toArray().filter((o) => !o.isEffectivelyDisabled());\r\n }\r\n return filtered;\r\n });\r\n\r\n protected readonly isAllSelected = computed(() => {\r\n const selectable = this.selectableOptions();\r\n if (selectable.length === 0) return false;\r\n return this.allSelectedCount() === selectable.length;\r\n });\r\n\r\n protected readonly isPartialSelected = computed(() => {\r\n const selectable = this.selectableOptions();\r\n if (selectable.length === 0) return false;\r\n return (\r\n this.allSelectedCount() > 0 && this.allSelectedCount() < selectable.length\r\n );\r\n });\r\n\r\n get id(): string {\r\n return this.elementId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this.internalFocused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.requiredInput();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required to programmatically focus the multi-select trigger. Standard DOM method used by Angular CDK.\r\n if (this.triggerElement) {\r\n this.triggerElement.nativeElement.focus();\r\n } else {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required as fallback when no triggerElement ref. Standard DOM method.\r\n this.elementRef.nativeElement.focus();\r\n }\r\n }\r\n\r\n writeValue(safe: unknown): void {\r\n const arr = normalizeArray(safe);\r\n this.internalValue.set([...arr]);\r\n }\r\n\r\n registerOnChange(fn: (value: unknown[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.internalDisabled.set(isDisabled);\r\n }\r\n\r\n constructor() {\r\n super();\r\n effect(() => {\r\n if (!this.optionsInitialized()) return;\r\n this.internalValue();\r\n this.setOptionsSelectedState();\r\n });\r\n this.destroyRef.onDestroy(() => {\r\n this.optionsSubscription?.();\r\n this.optionInteractionSubscriptions.forEach((fn) => fn());\r\n this.popoverSubscriptions.forEach((fn) => fn());\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = null;\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.optionsInitialized.set(true);\r\n this.setOptionsMultiSelectMode();\r\n this.setOptionsSelectedState();\r\n this.setOptionGroupDisabledState();\r\n this.syncActiveStates();\r\n this.syncVisibility();\r\n this.subscribeToOptionInteractions();\r\n\r\n const optionsSub = this.options.changes.subscribe(() => {\r\n this.setOptionsMultiSelectMode();\r\n this.setOptionsSelectedState();\r\n this.setOptionGroupDisabledState();\r\n this.syncVisibility();\r\n this.subscribeToOptionInteractions();\r\n });\r\n this.optionsSubscription = () => optionsSub.unsubscribe();\r\n\r\n if (isDevMode() && this.parentFormField) {\r\n console.warn(\r\n 'SolarisMultiSelectComponent already includes SolarisFormField internally. ' +\r\n 'Do not wrap it with <solaris-form-field>; pass label, hint, error, prefix and suffix directly to <solaris-multi-select>.',\r\n );\r\n }\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n if (this.popoverTrigger) {\r\n const openedSub = this.popoverTrigger.solarisPopoverOpened.subscribe(\r\n () => {\r\n this.onPanelOpened();\r\n },\r\n );\r\n const closedSub = this.popoverTrigger.solarisPopoverClosed.subscribe(\r\n () => {\r\n this.onPanelClosed();\r\n },\r\n );\r\n this.popoverSubscriptions.push(\r\n () => openedSub.unsubscribe(),\r\n () => closedSub.unsubscribe(),\r\n );\r\n }\r\n this.setupResizeObserver();\r\n }\r\n\r\n private setupResizeObserver(): void {\r\n // SECURITY_EXCEPTION: nativeElement access needed to measure trigger content width for auto display mode. ResizeObserver is SSR-safe (guarded by typeof check). offsetWidth is read-only, no XSS risk.\r\n const el = this.triggerContentRef?.nativeElement;\r\n if (!el) return;\r\n\r\n this.triggerWidth.set(el.offsetWidth);\r\n\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = new ResizeObserver((entries) => {\r\n for (const entry of entries) {\r\n this.triggerWidth.set(entry.contentRect.width);\r\n }\r\n });\r\n this.resizeObserver.observe(el);\r\n }\r\n }\r\n\r\n protected onPanelOpened(): void {\r\n this.searchQuery.set('');\r\n this.panelOpen.set(true);\r\n this.setOptionsSelectedState();\r\n this.syncActiveStates();\r\n this.syncVisibility();\r\n this.opened.emit();\r\n this.openChange.emit(true);\r\n this.setConnectedSide('bottom');\r\n\r\n if (this.searchable()) {\r\n requestAnimationFrame(() => {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required to focus search input when panel opens. Standard DOM method.\r\n this.searchInputRef?.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n protected onPanelClosed(): void {\r\n this.panelOpen.set(false);\r\n this.searchQuery.set('');\r\n this.syncVisibility();\r\n this.closed.emit();\r\n this.openChange.emit(false);\r\n this.markAsTouched();\r\n this.clearConnectedSide();\r\n }\r\n\r\n private setConnectedSide(side: 'bottom' | 'top'): void {\r\n // SECURITY_EXCEPTION: nativeElement required to access form-field DOM for connected-side sync. ElementRef SSR-safe.\r\n const el = this.formFieldElement?.nativeElement;\r\n if (el) {\r\n // SECURITY_EXCEPTION: nativeElement.querySelector required to find control-wrapper for connected-side sync.\r\n const wrapper = el.querySelector<HTMLElement>(\r\n '.solaris-form-field__control-wrapper',\r\n );\r\n if (wrapper) {\r\n wrapper.dataset['connectedSide'] = side;\r\n }\r\n }\r\n }\r\n\r\n private clearConnectedSide(): void {\r\n // SECURITY_EXCEPTION: nativeElement required to access form-field DOM for connected-side cleanup. ElementRef SSR-safe.\r\n const el = this.formFieldElement?.nativeElement;\r\n if (el) {\r\n const wrapper = el.querySelector<HTMLElement>(\r\n '.solaris-form-field__control-wrapper',\r\n );\r\n if (wrapper) {\r\n delete wrapper.dataset['connectedSide'];\r\n }\r\n }\r\n }\r\n\r\n protected toggleOption(option: SolarisOptionComponent): void {\r\n if (option.isEffectivelyDisabled()) return;\r\n\r\n const value = this.internalValue();\r\n const optValue = option.value();\r\n const comp = this.compareWith();\r\n const idx = value.findIndex((v) => comp(v, optValue));\r\n\r\n let newValue: unknown[];\r\n if (idx >= 0) {\r\n newValue = [...value.slice(0, idx), ...value.slice(idx + 1)];\r\n } else {\r\n newValue = [...value, optValue];\r\n }\r\n\r\n this.internalValue.set(newValue);\r\n this.onChange(newValue);\r\n this.valueChange.emit(newValue);\r\n this.selectionChange.emit(option);\r\n this.setOptionsSelectedState();\r\n\r\n if (this.searchable() && this.panelOpen()) {\r\n requestAnimationFrame(() => {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required to restore focus to search input after selection. ElementRef SSR-safe.\r\n this.searchInputRef?.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n protected clearValue(): void {\r\n this.internalValue.set([]);\r\n this.onChange([]);\r\n this.valueChange.emit([]);\r\n this.selectionChange.emit(undefined as unknown as SolarisOptionComponent);\r\n this.cleared.emit();\r\n this.setOptionsSelectedState();\r\n this.markAsTouched();\r\n }\r\n\r\n protected handleSelectAll(): void {\r\n if (this.isEffectivelyReadonly() || this.isEffectivelyDisabled()) return;\r\n const selectable = this.selectableOptions();\r\n if (selectable.length === 0) return;\r\n\r\n const value = this.internalValue();\r\n const comp = this.compareWith();\r\n\r\n if (this.isAllSelected()) {\r\n const selectableValues = new Set(selectable.map((o) => o.value()));\r\n const newValue = value.filter((v) => {\r\n for (const sv of selectableValues) {\r\n if (comp(v, sv)) return false;\r\n }\r\n return true;\r\n });\r\n this.internalValue.set(newValue);\r\n this.onChange(newValue);\r\n this.valueChange.emit(newValue);\r\n } else {\r\n const existingValues = new Set(value);\r\n const newValues: unknown[] = [...value];\r\n selectable.forEach((opt) => {\r\n const ov = opt.value();\r\n let found = false;\r\n for (const ev of existingValues) {\r\n if (comp(ev, ov)) {\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n newValues.push(ov);\r\n }\r\n });\r\n this.internalValue.set(newValues);\r\n this.onChange(newValues);\r\n this.valueChange.emit(newValues);\r\n }\r\n\r\n this.setOptionsSelectedState();\r\n }\r\n\r\n protected removeChip(option: SolarisOptionComponent, event: Event): void {\r\n event.stopPropagation();\r\n this.toggleOption(option);\r\n }\r\n\r\n protected onTriggerKeydown(event: KeyboardEvent): void {\r\n if (!this.canOpen()) {\r\n event.preventDefault();\r\n return;\r\n }\r\n\r\n if (this.maybeClosePanel(event)) return;\r\n if (this.maybeNavigateToBound(event)) return;\r\n\r\n switch (event.key) {\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n this.handleToggleOpen();\r\n break;\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.handleArrow(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.handleArrow(-1);\r\n break;\r\n }\r\n }\r\n\r\n private handleToggleOpen(): void {\r\n if (this.panelOpen()) {\r\n this.selectActiveOption();\r\n } else {\r\n this.popoverTrigger?.open();\r\n }\r\n }\r\n\r\n private handleArrow(direction: 1 | -1): void {\r\n if (this.panelOpen()) {\r\n this.focusNextOption(direction);\r\n } else {\r\n this.popoverTrigger?.open();\r\n requestAnimationFrame(() => this.focusNextOption(direction));\r\n }\r\n }\r\n\r\n private maybeClosePanel(event: KeyboardEvent): boolean {\r\n if (!this.panelOpen()) return false;\r\n if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.popoverTrigger?.close();\r\n return true;\r\n }\r\n if (event.key === 'Tab') {\r\n this.popoverTrigger?.close();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n private maybeNavigateToBound(event: KeyboardEvent): boolean {\r\n if (!this.panelOpen()) return false;\r\n if (event.key === 'Home') {\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getFirstEnabledOptionIndex());\r\n this.syncActiveStates();\r\n return true;\r\n }\r\n if (event.key === 'End') {\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getLastEnabledOptionIndex());\r\n this.syncActiveStates();\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected onSearchInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const value = target.value;\r\n this.searchQuery.set(value);\r\n this.searchChange.emit(value);\r\n this.activeOptionIndex.set(-1);\r\n this.syncActiveStates();\r\n this.syncVisibility();\r\n }\r\n\r\n protected onSearchKeydown(event: KeyboardEvent): void {\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.focusNextOption(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.focusNextOption(-1);\r\n break;\r\n case 'Enter':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.selectActiveOption();\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n event.stopPropagation();\r\n if (this.searchQuery()) {\r\n this.searchQuery.set('');\r\n this.searchChange.emit('');\r\n this.syncVisibility();\r\n this.syncActiveStates();\r\n } else {\r\n this.popoverTrigger?.close();\r\n }\r\n break;\r\n case 'Tab':\r\n this.popoverTrigger?.close();\r\n break;\r\n case 'Backspace':\r\n if (\r\n !this.searchQuery() &&\r\n !this.isEffectivelyDisabled() &&\r\n !this.isEffectivelyReadonly()\r\n ) {\r\n event.preventDefault();\r\n const selected = this.selectedOptions();\r\n if (selected.length > 0) {\r\n this.toggleOption(selected[selected.length - 1]);\r\n }\r\n }\r\n break;\r\n }\r\n }\r\n\r\n protected onPanelClick(event: MouseEvent): void {\r\n event.stopPropagation();\r\n }\r\n\r\n protected onPanelKeydown(event: KeyboardEvent): void {\r\n event.stopPropagation();\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n this.focusNextOption(1);\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n this.focusNextOption(-1);\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n this.selectActiveOption();\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n this.popoverTrigger?.close();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getFirstEnabledOptionIndex());\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n this.activeOptionIndex.set(this.getLastEnabledOptionIndex());\r\n break;\r\n }\r\n }\r\n\r\n protected onTriggerFocus(): void {\r\n this.internalFocused.set(true);\r\n }\r\n\r\n protected onTriggerBlur(): void {\r\n this.internalFocused.set(false);\r\n }\r\n\r\n private subscribeToOptionInteractions(): void {\r\n this.optionInteractionSubscriptions.forEach((fn) => fn());\r\n this.optionInteractionSubscriptions = [];\r\n this.options.forEach((opt) => {\r\n const sub = opt.optionInteraction.subscribe(({ option }) => {\r\n this.toggleOption(option);\r\n });\r\n this.optionInteractionSubscriptions.push(() => sub.unsubscribe());\r\n });\r\n }\r\n\r\n protected setOptionsMultiSelectMode(): void {\r\n this.options.forEach((opt) => {\r\n opt.setSelectionMode('multiple');\r\n opt.setShowSelectionIndicator(true);\r\n });\r\n }\r\n\r\n protected setOptionsSelectedState(): void {\r\n const value = this.internalValue();\r\n const comp = this.compareWith();\r\n this.options.forEach((opt) => {\r\n const isSelected = value.some((v) => comp(opt.value(), v));\r\n opt.setSelected(isSelected);\r\n });\r\n }\r\n\r\n private setOptionGroupDisabledState(): void {\r\n this.optionGroups.forEach((group) => {\r\n group.options.forEach((opt) => {\r\n opt.setGroupDisabledState(group.isEffectivelyDisabled());\r\n });\r\n });\r\n }\r\n\r\n private syncActiveStates(): void {\r\n const idx = this.activeOptionIndex();\r\n const opts = this.visibleOptions();\r\n this.options.forEach((opt) => opt.setActive(false));\r\n if (idx >= 0 && idx < opts.length) {\r\n opts[idx].setActive(true);\r\n }\r\n }\r\n\r\n private syncVisibility(): void {\r\n const query = this.searchQuery().trim();\r\n if (!query) {\r\n this.options.forEach((o) => o.setHidden(false));\r\n this.optionGroups.forEach((g) => g.setHidden(false));\r\n return;\r\n }\r\n const visible = new Set(this.visibleOptions());\r\n this.options.forEach((o) => o.setHidden(!visible.has(o)));\r\n this.optionGroups.forEach((g) => {\r\n const anyVisible = g.options.some((o) => visible.has(o));\r\n g.setHidden(!anyVisible);\r\n });\r\n }\r\n\r\n protected getOptionDisplayLabel(option: SolarisOptionComponent): string {\r\n const dw = this.displayWith();\r\n if (dw) {\r\n const result = dw(option.value());\r\n if (result !== undefined) return result;\r\n }\r\n const label = option.labelText();\r\n if (label) return label;\r\n const native = this.getOptionNativeText(option);\r\n if (native) return native;\r\n return '';\r\n }\r\n\r\n private getOptionNativeText(option: SolarisOptionComponent): string {\r\n const nativeEl = (\r\n option as unknown as { elementRef: ElementRef<HTMLElement> }\r\n ).elementRef;\r\n // SECURITY_EXCEPTION: nativeElement access needed to read option text for search filtering. Read-only, SSR-safe.\r\n if (nativeEl?.nativeElement) {\r\n // SECURITY_EXCEPTION: nativeElement.textContent needed to read option text for search filtering. Read-only, SSR-safe.\r\n return nativeEl.nativeElement.textContent?.trim() || '';\r\n }\r\n return '';\r\n }\r\n\r\n protected optionMatchesSearch(\r\n option: SolarisOptionComponent,\r\n query: string,\r\n ): boolean {\r\n const label = (option.labelText() || '').toLowerCase();\r\n const desc = (option.descriptionText() || '').toLowerCase();\r\n const native = this.getOptionNativeText(option).toLowerCase();\r\n const normalizedQuery = query\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const normalizedLabel = label\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const normalizedDesc = desc\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n const normalizedNative = native\r\n .normalize('NFD')\r\n .replace(/[\\u0300-\\u036f]/g, '');\r\n\r\n return (\r\n normalizedLabel.includes(normalizedQuery) ||\r\n normalizedDesc.includes(normalizedQuery) ||\r\n normalizedNative.includes(normalizedQuery)\r\n );\r\n }\r\n\r\n private markAsTouched(): void {\r\n if (!this.touched()) {\r\n this.touched.set(true);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n private selectActiveOption(): void {\r\n const idx = this.activeOptionIndex();\r\n const opts = this.visibleOptions();\r\n if (idx >= 0 && idx < opts.length) {\r\n this.toggleOption(opts[idx]);\r\n }\r\n }\r\n\r\n private focusNextOption(direction: 1 | -1): void {\r\n const opts = this.visibleOptions();\r\n if (opts.length === 0) return;\r\n\r\n let current = this.activeOptionIndex();\r\n\r\n if (current < 0 || current >= opts.length) {\r\n current = direction === 1 ? -1 : opts.length;\r\n }\r\n\r\n let next = current + direction;\r\n\r\n while (next >= 0 && next < opts.length) {\r\n if (!opts[next].isEffectivelyDisabled()) {\r\n this.activeOptionIndex.set(next);\r\n this.syncActiveStates();\r\n return;\r\n }\r\n next += direction;\r\n }\r\n\r\n if (direction === 1 && next >= opts.length) {\r\n this.activeOptionIndex.set(this.getFirstEnabledOptionIndex());\r\n this.syncActiveStates();\r\n } else if (direction === -1 && next < 0) {\r\n this.activeOptionIndex.set(this.getLastEnabledOptionIndex());\r\n this.syncActiveStates();\r\n }\r\n }\r\n\r\n private getFirstEnabledOptionIndex(): number {\r\n const opts = this.visibleOptions();\r\n for (let i = 0; i < opts.length; i++) {\r\n if (!opts[i].isEffectivelyDisabled()) return i;\r\n }\r\n return -1;\r\n }\r\n\r\n private getLastEnabledOptionIndex(): number {\r\n const opts = this.visibleOptions();\r\n for (let i = opts.length - 1; i >= 0; i--) {\r\n if (!opts[i].isEffectivelyDisabled()) return i;\r\n }\r\n return -1;\r\n }\r\n}\r\n","<solaris-form-field\r\n #formFieldRef\r\n [control]=\"this\"\r\n [label]=\"labelText()\"\r\n [hint]=\"hintText()\"\r\n [error]=\"errorText()\"\r\n [appearance]=\"appearance()\"\r\n [size]=\"size()\"\r\n [density]=\"effectiveDensity()\"\r\n [radius]=\"radius()\"\r\n [invalid]=\"isEffectivelyInvalid()\"\r\n [required]=\"requiredInput()\"\r\n solaris-popover-trigger\r\n [solarisPopoverDisabled]=\"!canOpen()\"\r\n [solarisPopoverTriggerFor]=\"matchWidthPopover\"\r\n [class.solaris-multi-select--panel-open]=\"panelOpen()\"\r\n [solarisPopoverMatchTriggerWidth]=\"panelMatchTriggerWidth()\"\r\n [solarisPopoverAppearance]=\"popoverAppearance()\"\r\n [solarisPopoverPlacement]=\"'bottom'\"\r\n [solarisPopoverAlign]=\"'start'\"\r\n [solarisPopoverOffset]=\"0\"\r\n [solarisPopoverPadding]=\"'none'\"\r\n [solarisPopoverRadius]=\"radius()\"\r\n [solarisPopoverTopConnected]=\"true\"\r\n [solarisPopoverMinWidth]=\"panelMinWidth()\"\r\n [solarisPopoverMaxWidth]=\"panelMaxWidth()\"\r\n [solarisPopoverScrollStrategy]=\"'reposition'\"\r\n [solarisPopoverCloseOnEscape]=\"false\"\r\n [solarisPopoverAriaHasPopup]=\"'listbox'\"\r\n>\r\n @if (icon(); as iconName) {\r\n <solaris-icon solaris-form-prefix [name]=\"iconName\" [decorative]=\"true\" />\r\n }\r\n <ng-content select=\"[solaris-form-prefix]\" />\r\n\r\n <div\r\n #triggerEl\r\n class=\"solaris-multi-select__trigger\"\r\n [id]=\"elementId() + '--trigger'\"\r\n solaris-form-field-trigger\r\n role=\"combobox\"\r\n tabindex=\"0\"\r\n [attr.aria-expanded]=\"panelOpen() ? 'true' : 'false'\"\r\n [attr.aria-controls]=\"panelOpen() ? panelId : null\"\r\n [attr.aria-haspopup]=\"'listbox'\"\r\n [attr.aria-activedescendant]=\"activeDescendantId()\"\r\n [attr.aria-labelledby]=\"ariaLabelledbyText() ?? null\"\r\n [attr.aria-describedby]=\"ariaDescribedBy() ?? null\"\r\n (keydown)=\"onTriggerKeydown($event)\"\r\n (focus)=\"onTriggerFocus()\"\r\n (blur)=\"onTriggerBlur()\"\r\n >\r\n <div class=\"solaris-multi-select__trigger-content\" #triggerContent>\r\n @if (displayMode() === 'auto') {\r\n @if (hasValue()) {\r\n @if (showCountOnly()) {\r\n <span\r\n class=\"solaris-multi-select__chip\"\r\n [solarisTooltip]=\"countTooltipText()\"\r\n [solarisTooltipTrigger]=\"'hover'\"\r\n tabindex=\"0\"\r\n >\r\n <span class=\"solaris-multi-select__chip-label\">{{\r\n summaryText()\r\n }}</span>\r\n </span>\r\n } @else {\r\n <div\r\n class=\"solaris-multi-select__chips solaris-multi-select__chips--auto\"\r\n >\r\n @for (opt of autoVisibleChips(); track opt) {\r\n <span class=\"solaris-multi-select__chip\" role=\"listitem\">\r\n <span class=\"solaris-multi-select__chip-label\">{{\r\n getOptionDisplayLabel(opt)\r\n }}</span>\r\n @if (!isEffectivelyDisabled() && !isEffectivelyReadonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"solaris-multi-select__chip-remove\"\r\n [attr.aria-label]=\"removeChipAriaLabel()\"\r\n (click)=\"removeChip(opt, $event)\"\r\n tabindex=\"-1\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n }\r\n </span>\r\n }\r\n @if (autoShowOverflow()) {\r\n <span\r\n class=\"solaris-multi-select__chip-overflow\"\r\n [solarisTooltip]=\"autoOverflowTooltipText()\"\r\n [solarisTooltipTrigger]=\"'hover'\"\r\n tabindex=\"0\"\r\n [attr.aria-label]=\"\r\n '+ ' +\r\n autoOverflowCount() +\r\n ' ' +\r\n selectedLabels().join(', ')\r\n \"\r\n >+{{ autoOverflowCount() }}</span\r\n >\r\n }\r\n </div>\r\n }\r\n }\r\n @if (searchable() && panelOpen()) {\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n class=\"solaris-multi-select__search-input\"\r\n [attr.placeholder]=\"searchPlaceholderText()\"\r\n [value]=\"searchQuery()\"\r\n (input)=\"onSearchInput($event)\"\r\n (keydown)=\"onSearchKeydown($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n role=\"searchbox\"\r\n autocomplete=\"off\"\r\n />\r\n }\r\n @if (!hasValue() && !(searchable() && panelOpen())) {\r\n <span class=\"solaris-multi-select__value\">\r\n <span class=\"solaris-multi-select__placeholder\">{{\r\n placeholderText()\r\n }}</span>\r\n </span>\r\n }\r\n } @else {\r\n @if (searchable() && panelOpen()) {\r\n <input\r\n #searchInput\r\n type=\"text\"\r\n class=\"solaris-multi-select__search-input\"\r\n [attr.placeholder]=\"searchPlaceholderText()\"\r\n [value]=\"searchQuery()\"\r\n (input)=\"onSearchInput($event)\"\r\n (keydown)=\"onSearchKeydown($event)\"\r\n (click)=\"$event.stopPropagation()\"\r\n role=\"searchbox\"\r\n autocomplete=\"off\"\r\n />\r\n } @else {\r\n @if (hasValue()) {\r\n @if (displayMode() === 'chips') {\r\n <div class=\"solaris-multi-select__chips\">\r\n @for (\r\n opt of selectedOptions().slice(0, maxVisibleChips());\r\n track opt\r\n ) {\r\n <span class=\"solaris-multi-select__chip\" role=\"listitem\">\r\n <span class=\"solaris-multi-select__chip-label\">{{\r\n getOptionDisplayLabel(opt)\r\n }}</span>\r\n @if (!isEffectivelyDisabled() && !isEffectivelyReadonly()) {\r\n <button\r\n type=\"button\"\r\n class=\"solaris-multi-select__chip-remove\"\r\n [attr.aria-label]=\"removeChipAriaLabel()\"\r\n (click)=\"removeChip(opt, $event)\"\r\n tabindex=\"-1\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n }\r\n </span>\r\n }\r\n @if (overflowCount() > 0) {\r\n <span\r\n class=\"solaris-multi-select__chip-overflow\"\r\n [attr.aria-label]=\"\r\n '+ ' + overflowCount() + ' ' + selectedLabels().join(', ')\r\n \"\r\n >\r\n {{ overflowText() }}\r\n </span>\r\n }\r\n </div>\r\n } @else if (displayMode() === 'comma') {\r\n <span class=\"solaris-multi-select__value\">\r\n <span class=\"solaris-multi-select__value-text\">{{\r\n commaText()\r\n }}</span>\r\n </span>\r\n } @else {\r\n <span\r\n class=\"solaris-multi-select__chip\"\r\n [solarisTooltip]=\"countTooltipText()\"\r\n [solarisTooltipTrigger]=\"'hover'\"\r\n tabindex=\"0\"\r\n >\r\n <span class=\"solaris-multi-select__chip-label\">{{\r\n summaryText()\r\n }}</span>\r\n </span>\r\n }\r\n } @else {\r\n <span class=\"solaris-multi-select__value\">\r\n <span class=\"solaris-multi-select__placeholder\">{{\r\n placeholderText()\r\n }}</span>\r\n </span>\r\n }\r\n }\r\n }\r\n </div>\r\n\r\n <span class=\"solaris-multi-select__actions\">\r\n @if (canClear()) {\r\n <button\r\n type=\"button\"\r\n class=\"solaris-multi-select__clear\"\r\n [attr.aria-label]=\"clearAriaLabel()\"\r\n (click)=\"clearValue(); $event.stopPropagation()\"\r\n tabindex=\"-1\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n }\r\n\r\n <solaris-icon\r\n class=\"solaris-multi-select__dropdown-icon\"\r\n name=\"chevron-down\"\r\n [decorative]=\"true\"\r\n size=\"sm\"\r\n />\r\n </span>\r\n </div>\r\n\r\n <ng-content select=\"[solaris-form-suffix]\" />\r\n</solaris-form-field>\r\n\r\n<ng-template #matchWidthPopover=\"solarisPopover\" solaris-popover>\r\n <div\r\n class=\"solaris-multi-select__panel\"\r\n role=\"listbox\"\r\n [attr.aria-multiselectable]=\"'true'\"\r\n [attr.id]=\"panelId\"\r\n tabindex=\"-1\"\r\n (click)=\"onPanelClick($event)\"\r\n (keydown)=\"onPanelKeydown($event)\"\r\n >\r\n @if (selectAll() && !loading()) {\r\n <div\r\n class=\"solaris-multi-select__select-all\"\r\n role=\"option\"\r\n aria-selected=\"false\"\r\n tabindex=\"-1\"\r\n (click)=\"handleSelectAll()\"\r\n (keydown.enter)=\"handleSelectAll()\"\r\n (keydown.space)=\"handleSelectAll(); $event.preventDefault()\"\r\n [class.solaris-multi-select__select-all--readonly]=\"\r\n isEffectivelyReadonly()\r\n \"\r\n >\r\n <span\r\n class=\"solaris-multi-select__select-all-checkbox\"\r\n [class.solaris-multi-select__select-all-checkbox--checked]=\"\r\n isAllSelected()\r\n \"\r\n [class.solaris-multi-select__select-all-checkbox--partial]=\"\r\n isPartialSelected()\r\n \"\r\n >\r\n @if (isAllSelected()) {\r\n <span class=\"solaris-multi-select__select-all-checkbox-icon\">\r\n <solaris-icon name=\"check\" [decorative]=\"true\" />\r\n </span>\r\n } @else if (isPartialSelected()) {\r\n <span class=\"solaris-multi-select__select-all-checkbox-icon\">\r\n <solaris-icon name=\"minus\" [decorative]=\"true\" />\r\n </span>\r\n }\r\n </span>\r\n <span class=\"solaris-multi-select__select-all-label\">{{\r\n selectAllLabelText()\r\n }}</span>\r\n </div>\r\n }\r\n\r\n @if (loading()) {\r\n <div class=\"solaris-multi-select__loading\">\r\n <span class=\"solaris-multi-select__loading-text\">{{\r\n loadingTextValue()\r\n }}</span>\r\n </div>\r\n } @else if (showNoResults()) {\r\n <div class=\"solaris-multi-select__no-results\">\r\n <span class=\"solaris-multi-select__no-results-text\">{{\r\n noResultsTextValue()\r\n }}</span>\r\n </div>\r\n } @else if (showEmpty()) {\r\n <div class=\"solaris-multi-select__empty\">\r\n <span class=\"solaris-multi-select__empty-text\">{{\r\n emptyTextValue()\r\n }}</span>\r\n </div>\r\n } @else {\r\n <div\r\n class=\"solaris-multi-select__options\"\r\n [style.max-height]=\"panelMaxHeight()\"\r\n >\r\n <ng-content select=\"solaris-option, solaris-option-group\" />\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","export const SUPPORTED_TYPES = new Set([\r\n 'text',\r\n 'email',\r\n 'password',\r\n 'search',\r\n 'tel',\r\n 'url',\r\n 'number',\r\n 'date',\r\n 'time',\r\n 'datetime-local',\r\n 'month',\r\n 'week',\r\n]);\r\n\r\nexport const UNSUPPORTED_TYPES = new Set([\r\n 'file',\r\n 'color',\r\n 'range',\r\n 'checkbox',\r\n 'radio',\r\n 'submit',\r\n 'button',\r\n 'reset',\r\n 'image',\r\n 'hidden',\r\n]);\r\n","import {\r\n Directive,\r\n input,\r\n computed,\r\n signal,\r\n HostListener,\r\n inject,\r\n ElementRef,\r\n isDevMode,\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\n\r\nimport type {\r\n SolarisInputAppearance,\r\n SolarisInputSize,\r\n SolarisInputDensity,\r\n SolarisInputRadius,\r\n} from '../model/input.types';\r\n\r\nimport { SUPPORTED_TYPES, UNSUPPORTED_TYPES } from '../model/input.defaults';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-input-${++nextId}`;\r\n}\r\n\r\n@Directive({\r\n selector: '[solaris-input]',\r\n standalone: true,\r\n providers: [\r\n { provide: SolarisFormControl, useExisting: SolarisInputDirective },\r\n ],\r\n host: {\r\n '[id]': 'elementId()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.aria-describedby]': 'ariaDescribedBy()',\r\n '[attr.data-focused]': '_focused() ? \"\" : null',\r\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.aria-invalid]': 'isEffectivelyInvalid() ? \"true\" : null',\r\n },\r\n})\r\nexport class SolarisInputDirective extends SolarisFormControl {\r\n readonly appearance = input<SolarisInputAppearance>('outline');\r\n readonly radius = input<SolarisInputRadius>('md');\r\n readonly size = input<SolarisInputSize>('md');\r\n readonly density = input<SolarisInputDensity>();\r\n\r\n readonly manualInvalid = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly fullWidth = input<boolean>(true);\r\n\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement is the standard Angular directive API to read host element properties and attributes. Same approach used by Angular CDK and all Solaris directives.\r\n private readonly elementRef =\r\n inject<ElementRef<HTMLInputElement>>(ElementRef);\r\n // SECURITY_EXCEPTION: nativeElement access required for host element property reads (tagName, disabled, readonly, required, focus, getAttribute). Same pattern used by Angular CDK form controls.\r\n private readonly inputElement = this.elementRef.nativeElement;\r\n protected readonly ngControl = inject(NgControl, {\r\n optional: true,\r\n self: true,\r\n });\r\n\r\n protected readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK form controls.\r\n protected readonly elementId = computed(() => {\r\n const existingId = this.inputElement.getAttribute('id');\r\n return existingId ?? generateId();\r\n });\r\n\r\n protected readonly effectiveDensity = computed<SolarisInputDensity>(() => {\r\n return this.density() ?? 'comfortable';\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n const manual = this.manualInvalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n if (this.ngControl?.control) {\r\n const control = this.ngControl.control;\r\n return (\r\n control.invalid &&\r\n (control.touched || control.dirty) &&\r\n !this._focused()\r\n );\r\n }\r\n return false;\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const ids = this._describedByIds();\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n get id(): string {\r\n return this.elementId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.disabled is the standard DOM property to read input disabled state. Same approach used by Angular Forms.\r\n get disabled(): boolean {\r\n return this.inputElement.disabled;\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.readOnly is the standard DOM property to read input readonly state.\r\n get readonly(): boolean {\r\n return this.inputElement.readOnly;\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.required is the standard DOM property to read input required state.\r\n get required(): boolean {\r\n return this.inputElement.required;\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.focus() is the standard DOM API to programmatically focus an input. No alternative exists.\r\n focus(): void {\r\n this.inputElement.focus();\r\n }\r\n\r\n @HostListener('focus')\r\n protected onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n @HostListener('blur')\r\n protected onBlur(): void {\r\n this._focused.set(false);\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.validateHost();\r\n this.validateType();\r\n }\r\n\r\n private validateHost(): void {\r\n // SECURITY_EXCEPTION: nativeElement.tagName is the standard Angular API to validate directive host element. Same pattern used by SolarisButtonDirective.\r\n if (this.inputElement.tagName !== 'INPUT') {\r\n if (isDevMode()) {\r\n console.warn(\r\n `[SolarisInput] The [solaris-input] directive is intended for use on <input> elements only. ` +\r\n `Applying it to <${this.inputElement.tagName.toLowerCase()}> is unsupported ` +\r\n `and may cause unexpected behavior.`,\r\n );\r\n }\r\n }\r\n }\r\n\r\n private validateType(): void {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute is the standard DOM API to read HTML attributes. Same pattern used by SolarisButtonDirective.\r\n const type = (\r\n this.inputElement.getAttribute('type') || 'text'\r\n ).toLowerCase();\r\n if (UNSUPPORTED_TYPES.has(type)) {\r\n if (isDevMode()) {\r\n console.warn(\r\n `[SolarisInput] The type \"${type}\" is not supported for [solaris-input]. ` +\r\n `Supported types are: ${Array.from(SUPPORTED_TYPES).join(', ')}. ` +\r\n `The directive will not apply input styling.`,\r\n );\r\n }\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ElementRef,\r\n viewChild,\r\n afterNextRender,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\n\r\nimport type {\r\n SolarisCheckboxAppearance,\r\n SolarisCheckboxColor,\r\n SolarisCheckboxSize,\r\n SolarisCheckboxRadius,\r\n SolarisCheckboxDensity,\r\n} from '../model/checkbox.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-checkbox-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-checkbox',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisCheckboxComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: SolarisCheckboxComponent,\r\n },\r\n ],\r\n templateUrl: './checkbox.component.html',\r\n styleUrls: ['./checkbox.component.scss'],\r\n host: {\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'color()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-checked]': '_checked() ? \"\" : null',\r\n '[attr.data-indeterminate]': 'indeterminate() ? \"\" : null',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.data-focused]': '_focused() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisCheckboxComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n private readonly inputElementRef =\r\n viewChild<ElementRef<HTMLInputElement>>('inputElement');\r\n\r\n protected readonly _checked = signal(false);\r\n protected readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly cvaReadonly = signal(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: boolean) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly hasProjectedContent = signal(false);\r\n private contentChecked = false;\r\n\r\n readonly checked = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly indeterminate = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly readonlyInput = input<boolean, boolean>(false, {\r\n alias: 'readonly',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly requiredInput = input<boolean, boolean>(false, {\r\n alias: 'required',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly invalidInput = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly appearance = input<SolarisCheckboxAppearance>('outline');\r\n readonly color = input<SolarisCheckboxColor>('primary');\r\n readonly size = input<SolarisCheckboxSize>('md');\r\n readonly density = input<SolarisCheckboxDensity>();\r\n readonly radius = input<SolarisCheckboxRadius>('sm');\r\n readonly checkboxLabel = input<string>(undefined, { alias: 'label' });\r\n readonly labelKey = input<string>();\r\n readonly name = input<string>();\r\n readonly value = input<unknown>();\r\n readonly ariaLabel = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n\r\n readonly checkedChange = output<boolean>();\r\n readonly indeterminateChange = output<boolean>();\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n readonly change = output<Event>();\r\n\r\n protected readonly effectiveDensity = computed<SolarisCheckboxDensity>(() => {\r\n return this.density() ?? 'comfortable';\r\n });\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n return this.invalidInput() ?? false;\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput() || this.cvaReadonly();\r\n });\r\n protected readonly elementId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK form controls.\r\n const existingId = this.elementRef.nativeElement.getAttribute('id');\r\n return existingId || generateId();\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const ids = this._describedByIds();\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.checkboxLabel();\r\n });\r\n\r\n protected readonly effectiveAriaLabel = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledBy = computed(() => {\r\n const labelId = this.elementId() + '-label';\r\n if (this.hasProjectedContent() || this.labelText()) {\r\n return labelId;\r\n }\r\n return null;\r\n });\r\n\r\n get id(): string {\r\n return this.elementId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.requiredInput();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n const input = this.inputElementRef();\r\n if (input) {\r\n // SECURITY_EXCEPTION: nativeElement.focus() is the standard DOM API to focus an element. No alternative exists.\r\n input.nativeElement.focus();\r\n }\r\n }\r\n\r\n private readonly syncIndeterminate = effect(() => {\r\n const el = this.inputElementRef();\r\n if (el) {\r\n // SECURITY_EXCEPTION: nativeElement.indeterminate is the standard DOM property to set indeterminate on a native checkbox. No HTML attribute alternative exists.\r\n el.nativeElement.indeterminate = this.indeterminate();\r\n }\r\n });\r\n\r\n private readonly syncCheckedFromInput = effect(() => {\r\n this._checked.set(this.checked());\r\n });\r\n\r\n writeValue(value: boolean | null): void {\r\n this._checked.set(value === true);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n }\r\n\r\n /** Set readonly state from parent group. */\r\n setCvaReadonlyState(isReadonly: boolean): void {\r\n this.cvaReadonly.set(isReadonly);\r\n }\r\n\r\n protected onInputChange(event: Event): void {\r\n if (this.isEffectivelyDisabled() || this.isEffectivelyReadonly()) {\r\n event.preventDefault();\r\n const input = event.target as HTMLInputElement;\r\n input.checked = this._checked();\r\n return;\r\n }\r\n\r\n const input = event.target as HTMLInputElement;\r\n\r\n if (this.indeterminate()) {\r\n this.indeterminateChange.emit(false);\r\n input.checked = true;\r\n }\r\n\r\n this._checked.set(input.checked);\r\n this.onChange(input.checked);\r\n this.checkedChange.emit(input.checked);\r\n this.change.emit(event);\r\n this.onTouched();\r\n }\r\n\r\n protected onBlur(): void {\r\n this._focused.set(false);\r\n this.onTouched();\r\n }\r\n\r\n protected onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n constructor() {\r\n super();\r\n\r\n afterNextRender(() => {\r\n if (this.contentChecked) {\r\n return;\r\n }\r\n this.contentChecked = true;\r\n // SECURITY_EXCEPTION: nativeElement.childNodes is the standard DOM API to check for projected content in the host element. Same pattern used by Angular CDK content projection detection.\r\n const nativeElement = this.elementRef.nativeElement;\r\n const hasContent = Array.from(nativeElement.childNodes).some(\r\n (node) => node.nodeType !== Node.COMMENT_NODE,\r\n );\r\n this.hasProjectedContent.set(hasContent);\r\n });\r\n }\r\n}\r\n","<label class=\"solaris-checkbox__label\" [for]=\"elementId()\">\r\n <input\r\n type=\"checkbox\"\r\n class=\"solaris-checkbox__input\"\r\n [id]=\"elementId()\"\r\n [checked]=\"_checked()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [required]=\"required\"\r\n [attr.aria-label]=\"effectiveAriaLabel() ?? null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-invalid]=\"isEffectivelyInvalid() ? 'true' : null\"\r\n [attr.name]=\"name() ?? null\"\r\n (change)=\"onInputChange($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n #inputElement\r\n />\r\n <span class=\"solaris-checkbox__control\" aria-hidden=\"true\">\r\n @if (indeterminate()) {\r\n <svg\r\n class=\"solaris-checkbox__icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n >\r\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\r\n </svg>\r\n } @else if (_checked()) {\r\n <svg\r\n class=\"solaris-checkbox__icon\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n stroke=\"currentColor\"\r\n stroke-width=\"3\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n >\r\n <polyline points=\"20 6 9 17 4 12\" />\r\n </svg>\r\n }\r\n </span>\r\n @if (hasProjectedContent()) {\r\n <span class=\"solaris-checkbox__label-text\" [id]=\"elementId() + '-label'\">\r\n <ng-content />\r\n </span>\r\n } @else if (labelText(); as text) {\r\n <span class=\"solaris-checkbox__label-text\" [id]=\"elementId() + '-label'\">\r\n {{ text }}\r\n </span>\r\n }\r\n</label>\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ElementRef,\r\n ContentChildren,\r\n QueryList,\r\n type AfterContentInit,\r\n type OnDestroy,\r\n NgZone,\r\n} from '@angular/core';\r\nimport { type Subscription } from 'rxjs';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisCheckboxComponent } from '../../checkbox/component/checkbox.component';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\n\r\nimport type {\r\n SolarisCheckboxGroupOrientation,\r\n SolarisCheckboxGroupLayout,\r\n SolarisCheckboxGroupColumns,\r\n SolarisCheckboxGroupDensity,\r\n SolarisCheckboxGroupSize,\r\n} from '../model/checkbox-group.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-checkbox-group-${++nextId}`;\r\n}\r\n\r\nfunction defaultCompare(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-checkbox-group',\r\n standalone: true,\r\n imports: [SolarisCheckboxComponent],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisCheckboxGroupComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: forwardRef(() => SolarisCheckboxGroupComponent),\r\n },\r\n ],\r\n templateUrl: './checkbox-group.component.html',\r\n styleUrls: ['./checkbox-group.component.scss'],\r\n host: {\r\n role: 'group',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-layout]': 'layout()',\r\n '[attr.data-columns]': 'columnsStr()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.data-select-all]': 'selectAll() ? \"\" : null',\r\n '[attr.aria-label]': 'effectiveAriaLabel() ?? null',\r\n '[attr.aria-labelledby]': 'ariaLabelledBy()',\r\n '[attr.aria-describedby]': 'ariaDescribedBy()',\r\n '[attr.aria-invalid]': 'isEffectivelyInvalid() ? \"true\" : null',\r\n '[attr.aria-required]': 'isEffectivelyRequired() ? \"true\" : null',\r\n },\r\n})\r\nexport class SolarisCheckboxGroupComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n @ContentChildren(SolarisCheckboxComponent)\r\n protected checkboxes!: QueryList<SolarisCheckboxComponent>;\r\n\r\n /** Inputs */\r\n readonly orientation = input<SolarisCheckboxGroupOrientation>('vertical');\r\n readonly layout = input<SolarisCheckboxGroupLayout>('list');\r\n readonly columns = input<SolarisCheckboxGroupColumns>(1);\r\n readonly density = input<SolarisCheckboxGroupDensity>();\r\n readonly size = input<SolarisCheckboxGroupSize>('md');\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly readonlyInput = input<boolean, boolean>(false, {\r\n alias: 'readonly',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly requiredInput = input<boolean, boolean>(false, {\r\n alias: 'required',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly invalidInput = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly labelInput = input<string>(undefined, { alias: 'label' });\r\n readonly labelKey = input<string>();\r\n readonly hintInput = input<string>(undefined, { alias: 'hint' });\r\n readonly hintKey = input<string>();\r\n readonly errorInput = input<string>(undefined, { alias: 'error' });\r\n readonly errorKey = input<string>();\r\n readonly minSelected = input<number>();\r\n readonly maxSelected = input<number>();\r\n readonly selectAll = input<boolean>(false);\r\n readonly selectAllLabel = input<string>();\r\n readonly selectAllLabelKey = input<string>();\r\n readonly compareWith =\r\n input<(a: unknown, b: unknown) => boolean>(defaultCompare);\r\n readonly ariaLabel = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n\r\n /** Outputs */\r\n readonly valueChange = output<unknown[]>();\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n readonly change = output<unknown[]>();\r\n\r\n /** Internal state */\r\n private readonly _value = signal<unknown[]>([]);\r\n private readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly autoInvalid = signal(false);\r\n\r\n /** CVA callbacks */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: unknown[]) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n /** Subscriptions cleanup */\r\n private readonly checkboxCvaSubscriptions = new Map<\r\n SolarisCheckboxComponent,\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n any\r\n >();\r\n private contentInitialized = false;\r\n private checkboxQuerySubscription: Subscription | null = null;\r\n private focusListenersAttached = false;\r\n\r\n /** IDs */\r\n protected readonly groupId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK and Solaris Checkbox.\r\n return this.elementRef.nativeElement.getAttribute('id') || generateId();\r\n });\r\n protected readonly labelId = computed(() => `${this.groupId()}-label`);\r\n protected readonly hintId = computed(() => `${this.groupId()}-hint`);\r\n protected readonly errorId = computed(() => `${this.groupId()}-error`);\r\n\r\n /** Computed */\r\n protected readonly columnsStr = computed(() => String(this.columns()));\r\n\r\n protected readonly effectiveDensity = computed<SolarisCheckboxGroupDensity>(\r\n () => {\r\n return this.density() ?? 'comfortable';\r\n },\r\n );\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n return this.invalidInput() ?? this.autoInvalid();\r\n });\r\n\r\n protected readonly isEffectivelyRequired = computed(() => {\r\n return this.requiredInput();\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.labelInput();\r\n });\r\n\r\n protected readonly hintText = computed(() => {\r\n const key = this.hintKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.hintInput();\r\n });\r\n\r\n protected readonly errorText = computed(() => {\r\n const key = this.errorKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.errorInput();\r\n });\r\n\r\n protected readonly selectAllLabelText = computed(() => {\r\n const customLabel = this.selectAllLabel();\r\n if (customLabel) return customLabel;\r\n const key = this.selectAllLabelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n if (translated !== key) return translated;\r\n }\r\n return this.translateService.translate('solaris.checkboxGroup.selectAll');\r\n });\r\n\r\n protected readonly effectiveAriaLabel = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledBy = computed(() => {\r\n if (this.labelText()) {\r\n return this.labelId();\r\n }\r\n return null;\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const customIds = this._describedByIds();\r\n const ownIds: string[] = [];\r\n if (this.hintText()) ownIds.push(this.hintId());\r\n if (this.showError()) ownIds.push(this.errorId());\r\n const all = [...customIds, ...ownIds];\r\n return all.length > 0 ? all.join(' ') : null;\r\n });\r\n\r\n protected readonly showError = computed(() => {\r\n if (this.isEffectivelyInvalid()) {\r\n return this.errorText() ?? null;\r\n }\r\n return null;\r\n });\r\n\r\n /** Select-all computed */\r\n protected readonly selectAllChecked = computed(() => {\r\n const children = this.getEnabledCheckboxes();\r\n if (children.length === 0) return false;\r\n return children.every((c) => this.isChildValueInValue(c));\r\n });\r\n\r\n protected readonly selectAllIndeterminate = computed(() => {\r\n const children = this.getEnabledCheckboxes();\r\n if (children.length === 0) return false;\r\n const checkedCount = children.filter((c) =>\r\n this.isChildValueInValue(c),\r\n ).length;\r\n return checkedCount > 0 && checkedCount < children.length;\r\n });\r\n\r\n /** SolarisFormControl implementation */\r\n get id(): string {\r\n return this.groupId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.isEffectivelyRequired();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n const first = this.checkboxes?.get(0);\r\n if (first) {\r\n first.focus();\r\n }\r\n }\r\n\r\n /** CVA implementation */\r\n writeValue(value: unknown[] | null): void {\r\n this._value.set(Array.isArray(value) ? [...value] : []);\r\n this.syncChildrenToValue();\r\n }\r\n\r\n registerOnChange(fn: (value: unknown[]) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n this.propagateDisabledToChildren();\r\n }\r\n\r\n /** ContentChildren lifecycle */\r\n ngAfterContentInit(): void {\r\n this.contentInitialized = true;\r\n this.attachFocusListeners();\r\n this.initCheckboxes();\r\n this.syncChildrenToValue();\r\n this.propagateDisabledToChildren();\r\n this.propagateReadonlyToChildren();\r\n\r\n this.checkboxQuerySubscription = this.checkboxes.changes.subscribe(() => {\r\n this.initCheckboxes();\r\n this.syncChildrenToValue();\r\n this.propagateDisabledToChildren();\r\n this.propagateReadonlyToChildren();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribeAllCheckboxes();\r\n if (this.checkboxQuerySubscription) {\r\n this.checkboxQuerySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n /** Focus tracking */\r\n private attachFocusListeners(): void {\r\n if (this.focusListenersAttached) return;\r\n this.focusListenersAttached = true;\r\n\r\n // SECURITY_EXCEPTION: nativeElement.focusin/focusout are standard DOM events for focus tracking. Same pattern used by Solaris FormField.\r\n const native = this.elementRef.nativeElement;\r\n this.ngZone.runOutsideAngular(() => {\r\n native.addEventListener('focusin', () => {\r\n this.ngZone.run(() => this._focused.set(true));\r\n });\r\n native.addEventListener('focusout', (e: FocusEvent) => {\r\n const related = e.relatedTarget as Node | null;\r\n if (related && native.contains(related)) return;\r\n this.ngZone.run(() => {\r\n this._focused.set(false);\r\n this.onTouched();\r\n });\r\n });\r\n });\r\n }\r\n\r\n /** Init checkbox tracking */\r\n private initCheckboxes(): void {\r\n this.unsubscribeAllCheckboxes();\r\n this.checkboxes.forEach((checkbox) => {\r\n const sub = checkbox.checkedChange.subscribe((checked: boolean) => {\r\n this.onChildCheckedChange(checkbox, checked);\r\n });\r\n this.checkboxCvaSubscriptions.set(checkbox, sub);\r\n });\r\n }\r\n\r\n private unsubscribeAllCheckboxes(): void {\r\n this.checkboxCvaSubscriptions.forEach((sub) => sub.unsubscribe());\r\n this.checkboxCvaSubscriptions.clear();\r\n }\r\n\r\n /** Child checkbox interaction */\r\n private onChildCheckedChange(\r\n child: SolarisCheckboxComponent,\r\n checked: boolean,\r\n ): void {\r\n if (this.isEffectivelyDisabled() || this.isEffectivelyReadonly()) {\r\n return;\r\n }\r\n\r\n const childValue = child.value();\r\n const currentValue = [...this._value()];\r\n const cmp = this.compareWith();\r\n\r\n if (checked) {\r\n const exists = currentValue.some((v) => cmp(v, childValue));\r\n if (!exists) {\r\n currentValue.push(childValue);\r\n }\r\n } else {\r\n const index = currentValue.findIndex((v) => cmp(v, childValue));\r\n if (index !== -1) {\r\n currentValue.splice(index, 1);\r\n }\r\n }\r\n\r\n this.updateValue(currentValue);\r\n }\r\n\r\n /** Select all interaction */\r\n protected onSelectAllChange(checked: boolean): void {\r\n if (this.isEffectivelyDisabled() || this.isEffectivelyReadonly()) {\r\n return;\r\n }\r\n\r\n const children = this.getEnabledCheckboxes();\r\n const cmp = this.compareWith();\r\n let currentValue = [...this._value()];\r\n\r\n if (checked) {\r\n for (const child of children) {\r\n const childValue = child.value();\r\n const exists = currentValue.some((v) => cmp(v, childValue));\r\n if (!exists) {\r\n currentValue.push(childValue);\r\n }\r\n }\r\n } else {\r\n const removeValues = children.map((c) => c.value());\r\n currentValue = currentValue.filter(\r\n (v) => !removeValues.some((rv) => cmp(rv, v)),\r\n );\r\n }\r\n\r\n this.updateValue(currentValue);\r\n }\r\n\r\n /** Value update */\r\n private updateValue(newValue: unknown[]): void {\r\n this._value.set(newValue);\r\n this.syncChildrenToValue();\r\n this.onChange(newValue);\r\n this.valueChange.emit(newValue);\r\n this.change.emit(newValue);\r\n }\r\n\r\n /** Sync checkboxes to current value */\r\n private syncChildrenToValue(): void {\r\n if (!this.contentInitialized || !this.checkboxes) return;\r\n const currentValue = this._value();\r\n const cmp = this.compareWith();\r\n\r\n this.checkboxes.forEach((checkbox) => {\r\n const childValue = checkbox.value();\r\n const isChecked = currentValue.some((v) => cmp(v, childValue));\r\n checkbox.writeValue(isChecked);\r\n });\r\n }\r\n\r\n /** Get enabled (non-disabled, non-readonly) checkboxes */\r\n private getEnabledCheckboxes(): SolarisCheckboxComponent[] {\r\n if (!this.checkboxes) return [];\r\n return this.checkboxes.filter((c) => !c.disabled && !c.readonly);\r\n }\r\n\r\n /** Check if a child's value is selected */\r\n private isChildValueInValue(child: SolarisCheckboxComponent): boolean {\r\n const childValue = child.value();\r\n const cmp = this.compareWith();\r\n return this._value().some((v) => cmp(v, childValue));\r\n }\r\n\r\n /** Propagate disabled to children */\r\n private propagateDisabledToChildren(): void {\r\n if (!this.contentInitialized || !this.checkboxes) return;\r\n const isDisabled = this.isEffectivelyDisabled();\r\n this.checkboxes.forEach((checkbox) => {\r\n checkbox.setDisabledState(isDisabled);\r\n });\r\n }\r\n\r\n /** Propagate readonly to children */\r\n private propagateReadonlyToChildren(): void {\r\n if (!this.contentInitialized || !this.checkboxes) return;\r\n const isReadonly = this.isEffectivelyReadonly();\r\n this.checkboxes.forEach((checkbox) => {\r\n checkbox.setCvaReadonlyState(isReadonly);\r\n });\r\n }\r\n\r\n /** Effect: propagate disabled/readonly when inputs change */\r\n private readonly _propagateEffect = effect(() => {\r\n if (!this.contentInitialized) return;\r\n this.isEffectivelyDisabled();\r\n this.isEffectivelyReadonly();\r\n this.propagateDisabledToChildren();\r\n this.propagateReadonlyToChildren();\r\n });\r\n\r\n /** Effect: re-validate on value/min/max changes */\r\n private readonly _validateEffect = effect(() => {\r\n this._value();\r\n this.minSelected();\r\n this.maxSelected();\r\n this.validateBounds();\r\n });\r\n\r\n private validateBounds(): void {\r\n const count = this._value().length;\r\n const min = this.minSelected();\r\n const max = this.maxSelected();\r\n const isOutOfBounds =\r\n (min != null && count < min) || (max != null && count > max);\r\n this.autoInvalid.set(!!isOutOfBounds);\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","@if (labelText(); as text) {\r\n <span class=\"solaris-checkbox-group__label\" [id]=\"labelId()\">\r\n {{ text }}\r\n </span>\r\n}\r\n@if (selectAll()) {\r\n <div class=\"solaris-checkbox-group__select-all\">\r\n <solaris-checkbox\r\n [checked]=\"selectAllChecked()\"\r\n [indeterminate]=\"selectAllIndeterminate()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [readonly]=\"isEffectivelyReadonly()\"\r\n (checkedChange)=\"onSelectAllChange($event)\"\r\n >\r\n {{ selectAllLabelText() }}\r\n </solaris-checkbox>\r\n </div>\r\n}\r\n<div class=\"solaris-checkbox-group__options\" role=\"group\">\r\n <ng-content />\r\n</div>\r\n@if (hintText(); as text) {\r\n <p class=\"solaris-checkbox-group__hint\" [id]=\"hintId()\">\r\n {{ text }}\r\n </p>\r\n}\r\n@if (showError(); as text) {\r\n <p class=\"solaris-checkbox-group__error\" [id]=\"errorId()\" role=\"alert\">\r\n {{ text }}\r\n </p>\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SOLARIS_RADIO_GROUP_NAME = new InjectionToken<string>(\r\n 'SOLARIS_RADIO_GROUP_NAME',\r\n);\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ElementRef,\r\n viewChild,\r\n afterNextRender,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SOLARIS_RADIO_GROUP_NAME } from '../../radio-group/model/radio-group.token';\r\n\r\nimport type {\r\n SolarisRadioAppearance,\r\n SolarisRadioColor,\r\n SolarisRadioSize,\r\n SolarisRadioDensity,\r\n} from '../model/radio.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-radio-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-radio',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisRadioComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: SolarisRadioComponent,\r\n },\r\n ],\r\n templateUrl: './radio.component.html',\r\n styleUrls: ['./radio.component.scss'],\r\n host: {\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'color()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-checked]': '_checked() ? \"\" : null',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.data-focused]': '_focused() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisRadioComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n private readonly groupName =\r\n inject(SOLARIS_RADIO_GROUP_NAME, { optional: true }) ?? null;\r\n\r\n private readonly inputElementRef =\r\n viewChild<ElementRef<HTMLInputElement>>('inputElement');\r\n\r\n protected readonly _checked = signal(false);\r\n protected readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly cvaReadonly = signal(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: boolean) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly hasProjectedContent = signal(false);\r\n private contentChecked = false;\r\n\r\n readonly checked = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly readonlyInput = input<boolean, boolean>(false, {\r\n alias: 'readonly',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly requiredInput = input<boolean, boolean>(false, {\r\n alias: 'required',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly invalidInput = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly appearance = input<SolarisRadioAppearance>('outline');\r\n readonly color = input<SolarisRadioColor>('primary');\r\n readonly size = input<SolarisRadioSize>('md');\r\n readonly density = input<SolarisRadioDensity>();\r\n readonly radioLabel = input<string>(undefined, { alias: 'label' });\r\n readonly labelKey = input<string>();\r\n readonly name = input<string>();\r\n readonly value = input<unknown>();\r\n readonly ariaLabel = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n\r\n readonly checkedChange = output<boolean>();\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n readonly change = output<Event>();\r\n\r\n protected readonly effectiveDensity = computed<SolarisRadioDensity>(() => {\r\n return this.density() ?? 'comfortable';\r\n });\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n return this.invalidInput() ?? false;\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput() || this.cvaReadonly();\r\n });\r\n\r\n protected readonly elementId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK form controls.\r\n const existingId = this.elementRef.nativeElement.getAttribute('id');\r\n return existingId || generateId();\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const ids = this._describedByIds();\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n protected readonly effectiveName = computed(() => {\r\n return this.name() ?? this.groupName;\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.radioLabel();\r\n });\r\n\r\n protected readonly effectiveAriaLabel = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledBy = computed(() => {\r\n const labelId = this.elementId() + '-label';\r\n if (this.hasProjectedContent() || this.labelText()) {\r\n return labelId;\r\n }\r\n return null;\r\n });\r\n\r\n get id(): string {\r\n return this.elementId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.requiredInput();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n const input = this.inputElementRef();\r\n if (input) {\r\n // SECURITY_EXCEPTION: nativeElement.focus() is the standard DOM API to focus an element. No alternative exists.\r\n input.nativeElement.focus();\r\n }\r\n }\r\n\r\n private readonly syncCheckedFromInput = effect(() => {\r\n this._checked.set(this.checked());\r\n });\r\n\r\n writeValue(value: boolean | null): void {\r\n this._checked.set(value === true);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n }\r\n\r\n setCvaReadonlyState(isReadonly: boolean): void {\r\n this.cvaReadonly.set(isReadonly);\r\n }\r\n\r\n setChecked(value: boolean): void {\r\n this._checked.set(value);\r\n this.onChange(value);\r\n }\r\n\r\n protected onInputChange(event: Event): void {\r\n if (this.isEffectivelyDisabled() || this.isEffectivelyReadonly()) {\r\n event.preventDefault();\r\n const input = event.target as HTMLInputElement;\r\n input.checked = this._checked();\r\n return;\r\n }\r\n\r\n const input = event.target as HTMLInputElement;\r\n this._checked.set(input.checked);\r\n this.onChange(input.checked);\r\n this.checkedChange.emit(input.checked);\r\n this.change.emit(event);\r\n this.onTouched();\r\n }\r\n\r\n protected onBlur(): void {\r\n this._focused.set(false);\r\n this.onTouched();\r\n }\r\n\r\n protected onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n constructor() {\r\n super();\r\n\r\n afterNextRender(() => {\r\n if (this.contentChecked) {\r\n return;\r\n }\r\n this.contentChecked = true;\r\n // SECURITY_EXCEPTION: nativeElement.childNodes is the standard DOM API to check for projected content in the host element. Same pattern used by Angular CDK content projection detection.\r\n const nativeElement = this.elementRef.nativeElement;\r\n const hasContent = Array.from(nativeElement.childNodes).some(\r\n (node) => node.nodeType !== Node.COMMENT_NODE,\r\n );\r\n this.hasProjectedContent.set(hasContent);\r\n });\r\n }\r\n}\r\n","<label class=\"solaris-radio__label\" [for]=\"elementId()\">\r\n <input\r\n type=\"radio\"\r\n class=\"solaris-radio__input\"\r\n [id]=\"elementId()\"\r\n [checked]=\"_checked()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [required]=\"required\"\r\n [attr.aria-label]=\"effectiveAriaLabel() ?? null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-invalid]=\"isEffectivelyInvalid() ? 'true' : null\"\r\n [attr.name]=\"effectiveName() ?? null\"\r\n (change)=\"onInputChange($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n #inputElement\r\n />\r\n <span class=\"solaris-radio__control\" aria-hidden=\"true\">\r\n @if (_checked()) {\r\n <span class=\"solaris-radio__dot\"></span>\r\n }\r\n </span>\r\n @if (hasProjectedContent()) {\r\n <span class=\"solaris-radio__label-text\" [id]=\"elementId() + '-label'\">\r\n <ng-content />\r\n </span>\r\n } @else if (labelText(); as text) {\r\n <span class=\"solaris-radio__label-text\" [id]=\"elementId() + '-label'\">\r\n {{ text }}\r\n </span>\r\n }\r\n</label>\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ElementRef,\r\n viewChild,\r\n afterNextRender,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\n\r\nimport type {\r\n SolarisSwitchAppearance,\r\n SolarisSwitchColor,\r\n SolarisSwitchSize,\r\n SolarisSwitchDensity,\r\n} from '../model/switch.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-switch-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-switch',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisSwitchComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: SolarisSwitchComponent,\r\n },\r\n ],\r\n templateUrl: './switch.component.html',\r\n styleUrls: ['./switch.component.scss'],\r\n host: {\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-color]': 'color()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-checked]': '_checked() ? \"\" : null',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.data-focused]': '_focused() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisSwitchComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n private readonly inputElementRef =\r\n viewChild<ElementRef<HTMLInputElement>>('inputElement');\r\n\r\n protected readonly _checked = signal(false);\r\n protected readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly cvaReadonly = signal(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: boolean) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly hasProjectedContent = signal(false);\r\n private contentChecked = false;\r\n\r\n readonly checked = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly readonlyInput = input<boolean, boolean>(false, {\r\n alias: 'readonly',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly requiredInput = input<boolean, boolean>(false, {\r\n alias: 'required',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly invalidInput = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly appearance = input<SolarisSwitchAppearance>('surface');\r\n readonly color = input<SolarisSwitchColor>('primary');\r\n readonly size = input<SolarisSwitchSize>('md');\r\n readonly density = input<SolarisSwitchDensity>();\r\n readonly switchLabel = input<string>(undefined, { alias: 'label' });\r\n readonly labelKey = input<string>();\r\n readonly name = input<string>();\r\n readonly value = input<string>();\r\n readonly ariaLabel = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n\r\n readonly checkedChange = output<boolean>();\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n readonly change = output<Event>();\r\n\r\n protected readonly effectiveDensity = computed<SolarisSwitchDensity>(() => {\r\n return this.density() ?? 'comfortable';\r\n });\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n return this.invalidInput() ?? false;\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput() || this.cvaReadonly();\r\n });\r\n\r\n protected readonly elementId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK form controls.\r\n const existingId = this.elementRef.nativeElement.getAttribute('id');\r\n return existingId || generateId();\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const ids = this._describedByIds();\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.switchLabel();\r\n });\r\n\r\n protected readonly effectiveAriaLabel = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledBy = computed(() => {\r\n const labelId = this.elementId() + '-label';\r\n if (this.hasProjectedContent() || this.labelText()) {\r\n return labelId;\r\n }\r\n return null;\r\n });\r\n\r\n get id(): string {\r\n return this.elementId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.requiredInput();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n const input = this.inputElementRef();\r\n if (input) {\r\n // SECURITY_EXCEPTION: nativeElement.focus() is the standard DOM API to focus an element. No alternative exists.\r\n input.nativeElement.focus();\r\n }\r\n }\r\n\r\n private readonly syncCheckedFromInput = effect(() => {\r\n this._checked.set(this.checked());\r\n });\r\n\r\n writeValue(value: boolean | null): void {\r\n this._checked.set(value === true);\r\n }\r\n\r\n registerOnChange(fn: (value: boolean) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n }\r\n\r\n /** Set readonly state from parent group. */\r\n setCvaReadonlyState(isReadonly: boolean): void {\r\n this.cvaReadonly.set(isReadonly);\r\n }\r\n\r\n protected onInputChange(event: Event): void {\r\n if (this.isEffectivelyDisabled() || this.isEffectivelyReadonly()) {\r\n event.preventDefault();\r\n const input = event.target as HTMLInputElement;\r\n input.checked = this._checked();\r\n return;\r\n }\r\n\r\n const input = event.target as HTMLInputElement;\r\n this._checked.set(input.checked);\r\n this.onChange(input.checked);\r\n this.checkedChange.emit(input.checked);\r\n this.change.emit(event);\r\n this.onTouched();\r\n }\r\n\r\n protected onBlur(): void {\r\n this._focused.set(false);\r\n this.onTouched();\r\n }\r\n\r\n protected onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n constructor() {\r\n super();\r\n\r\n afterNextRender(() => {\r\n if (this.contentChecked) {\r\n return;\r\n }\r\n this.contentChecked = true;\r\n // SECURITY_EXCEPTION: nativeElement.childNodes is the standard DOM API to check for projected content in the host element. Same pattern used by Angular CDK content projection detection.\r\n const nativeElement = this.elementRef.nativeElement;\r\n const hasContent = Array.from(nativeElement.childNodes).some(\r\n (node) => node.nodeType !== Node.COMMENT_NODE,\r\n );\r\n this.hasProjectedContent.set(hasContent);\r\n });\r\n }\r\n}\r\n","<label class=\"solaris-switch__label\" [for]=\"elementId()\">\r\n <input\r\n type=\"checkbox\"\r\n role=\"switch\"\r\n class=\"solaris-switch__input\"\r\n [id]=\"elementId()\"\r\n [checked]=\"_checked()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [required]=\"required\"\r\n [attr.aria-label]=\"effectiveAriaLabel() ?? null\"\r\n [attr.aria-labelledby]=\"ariaLabelledBy()\"\r\n [attr.aria-describedby]=\"ariaDescribedBy()\"\r\n [attr.aria-invalid]=\"isEffectivelyInvalid() ? 'true' : null\"\r\n [attr.name]=\"name() ?? null\"\r\n (change)=\"onInputChange($event)\"\r\n (blur)=\"onBlur()\"\r\n (focus)=\"onFocus()\"\r\n #inputElement\r\n />\r\n <span class=\"solaris-switch__track\" aria-hidden=\"true\">\r\n <span class=\"solaris-switch__thumb\"></span>\r\n </span>\r\n @if (hasProjectedContent()) {\r\n <span class=\"solaris-switch__label-text\" [id]=\"elementId() + '-label'\">\r\n <ng-content />\r\n </span>\r\n } @else if (labelText(); as text) {\r\n <span class=\"solaris-switch__label-text\" [id]=\"elementId() + '-label'\">\r\n {{ text }}\r\n </span>\r\n }\r\n</label>\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ElementRef,\r\n ContentChildren,\r\n QueryList,\r\n type AfterContentInit,\r\n type OnDestroy,\r\n NgZone,\r\n} from '@angular/core';\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntype Subscription = any;\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisSwitchComponent } from '../../switch';\r\n\r\nimport type {\r\n SolarisSwitchGroupOrientation,\r\n SolarisSwitchGroupLayout,\r\n SolarisSwitchGroupColumns,\r\n SolarisSwitchGroupDensity,\r\n SolarisSwitchGroupSize,\r\n} from '../model/switch-group.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-switch-group-${++nextId}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-switch-group',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisSwitchGroupComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: forwardRef(() => SolarisSwitchGroupComponent),\r\n },\r\n ],\r\n templateUrl: './switch-group.component.html',\r\n styleUrls: ['./switch-group.component.scss'],\r\n host: {\r\n role: 'group',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-layout]': 'layout()',\r\n '[attr.data-columns]': 'columnsStr()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.aria-label]': 'effectiveAriaLabel() ?? null',\r\n '[attr.aria-labelledby]': 'ariaLabelledBy()',\r\n '[attr.aria-describedby]': 'ariaDescribedBy()',\r\n '[attr.aria-invalid]': 'isEffectivelyInvalid() ? \"true\" : null',\r\n '[attr.aria-required]': 'isEffectivelyRequired() ? \"true\" : null',\r\n },\r\n})\r\nexport class SolarisSwitchGroupComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n @ContentChildren(SolarisSwitchComponent)\r\n protected switches!: QueryList<SolarisSwitchComponent>;\r\n\r\n readonly orientation = input<SolarisSwitchGroupOrientation>('vertical');\r\n readonly layout = input<SolarisSwitchGroupLayout>('list');\r\n readonly columns = input<SolarisSwitchGroupColumns>(1);\r\n readonly density = input<SolarisSwitchGroupDensity>();\r\n readonly size = input<SolarisSwitchGroupSize>('md');\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly readonlyInput = input<boolean, boolean>(false, {\r\n alias: 'readonly',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly requiredInput = input<boolean, boolean>(false, {\r\n alias: 'required',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly invalidInput = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly labelInput = input<string>(undefined, { alias: 'label' });\r\n readonly labelKey = input<string>();\r\n readonly hintInput = input<string>(undefined, { alias: 'hint' });\r\n readonly hintKey = input<string>();\r\n readonly errorInput = input<string>(undefined, { alias: 'error' });\r\n readonly errorKey = input<string>();\r\n readonly minEnabled = input<number>();\r\n readonly maxEnabled = input<number>();\r\n readonly ariaLabel = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n\r\n readonly valueChange = output<Record<string, boolean>>();\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n readonly change = output<Record<string, boolean>>();\r\n\r\n private readonly _value = signal<Record<string, boolean>>({});\r\n private readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n private readonly cvaDisabled = signal(false);\r\n private readonly autoInvalid = signal(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: Record<string, boolean>) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n private readonly switchSubscriptions = new Map<\r\n SolarisSwitchComponent,\r\n Subscription\r\n >();\r\n private contentInitialized = false;\r\n private switchQuerySubscription: Subscription | null = null;\r\n private focusListenersAttached = false;\r\n\r\n protected readonly groupId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK and Solaris Checkbox/Radio groups.\r\n return this.elementRef.nativeElement.getAttribute('id') || generateId();\r\n });\r\n protected readonly labelId = computed(() => `${this.groupId()}-label`);\r\n protected readonly hintId = computed(() => `${this.groupId()}-hint`);\r\n protected readonly errorId = computed(() => `${this.groupId()}-error`);\r\n\r\n protected readonly columnsStr = computed(() => String(this.columns()));\r\n\r\n protected readonly effectiveDensity = computed<SolarisSwitchGroupDensity>(\r\n () => {\r\n return this.density() ?? 'comfortable';\r\n },\r\n );\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n return this.invalidInput() ?? this.autoInvalid();\r\n });\r\n\r\n protected readonly isEffectivelyRequired = computed(() => {\r\n return this.requiredInput();\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.labelInput();\r\n });\r\n\r\n protected readonly hintText = computed(() => {\r\n const key = this.hintKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.hintInput();\r\n });\r\n\r\n protected readonly errorText = computed(() => {\r\n const key = this.errorKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.errorInput();\r\n });\r\n\r\n protected readonly effectiveAriaLabel = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledBy = computed(() => {\r\n if (this.labelText()) {\r\n return this.labelId();\r\n }\r\n return null;\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const customIds = this._describedByIds();\r\n const ownIds: string[] = [];\r\n if (this.hintText()) ownIds.push(this.hintId());\r\n if (this.showError()) ownIds.push(this.errorId());\r\n const all = [...customIds, ...ownIds];\r\n return all.length > 0 ? all.join(' ') : null;\r\n });\r\n\r\n protected readonly showError = computed(() => {\r\n if (this.isEffectivelyInvalid()) {\r\n return this.errorText() ?? null;\r\n }\r\n return null;\r\n });\r\n\r\n get id(): string {\r\n return this.groupId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.isEffectivelyRequired();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n const first = this.switches?.get(0);\r\n if (first) {\r\n first.focus();\r\n }\r\n }\r\n\r\n writeValue(value: Record<string, boolean> | null): void {\r\n this._value.set(value ? { ...value } : {});\r\n this.syncSwitchesToValue();\r\n }\r\n\r\n registerOnChange(fn: (value: Record<string, boolean>) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n this.propagateDisabledToSwitches();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInitialized = true;\r\n this.validateChildren();\r\n this.attachFocusListeners();\r\n this.initSwitches();\r\n this.syncSwitchesToValue();\r\n this.propagateDisabledToSwitches();\r\n this.propagateReadonlyToSwitches();\r\n\r\n this.switchQuerySubscription = this.switches.changes.subscribe(() => {\r\n this.validateChildren();\r\n this.initSwitches();\r\n this.syncSwitchesToValue();\r\n this.propagateDisabledToSwitches();\r\n this.propagateReadonlyToSwitches();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribeAllSwitches();\r\n if (this.switchQuerySubscription) {\r\n this.switchQuerySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private validateChildren(): void {\r\n if (!this.switches) return;\r\n\r\n const keys = new Map<string, SolarisSwitchComponent>();\r\n\r\n this.switches.forEach((sw) => {\r\n const key = sw.value();\r\n if (key === null || key === undefined) {\r\n console.warn(\r\n `[SolarisSwitchGroup] A <solaris-switch> child is missing a value attribute. ` +\r\n `Each switch inside <solaris-switch-group> must have a unique value.`,\r\n );\r\n return;\r\n }\r\n if (keys.has(key)) {\r\n console.warn(\r\n `[SolarisSwitchGroup] Duplicate value \"${key}\" detected among <solaris-switch> children. ` +\r\n `Each switch value must be unique within the group.`,\r\n );\r\n }\r\n keys.set(key, sw);\r\n });\r\n }\r\n\r\n private attachFocusListeners(): void {\r\n if (this.focusListenersAttached) return;\r\n this.focusListenersAttached = true;\r\n\r\n // SECURITY_EXCEPTION: nativeElement.focusin/focusout are standard DOM events for focus tracking. Same pattern used by Solaris FormField and Checkbox/Radio groups.\r\n const native = this.elementRef.nativeElement;\r\n this.ngZone.runOutsideAngular(() => {\r\n native.addEventListener('focusin', () => {\r\n this.ngZone.run(() => this._focused.set(true));\r\n });\r\n native.addEventListener('focusout', (e: FocusEvent) => {\r\n const related = e.relatedTarget as Node | null;\r\n if (related && native.contains(related)) return;\r\n this.ngZone.run(() => {\r\n this._focused.set(false);\r\n this.onTouched();\r\n });\r\n });\r\n });\r\n }\r\n\r\n private initSwitches(): void {\r\n this.unsubscribeAllSwitches();\r\n this.switches.forEach((sw) => {\r\n const sub = sw.checkedChange.subscribe((checked: boolean) => {\r\n this.onChildCheckedChange(sw, checked);\r\n });\r\n this.switchSubscriptions.set(sw, sub);\r\n });\r\n }\r\n\r\n private unsubscribeAllSwitches(): void {\r\n this.switchSubscriptions.forEach((sub) => sub.unsubscribe());\r\n this.switchSubscriptions.clear();\r\n }\r\n\r\n private onChildCheckedChange(\r\n child: SolarisSwitchComponent,\r\n checked: boolean,\r\n ): void {\r\n if (this.isEffectivelyDisabled() || this.isEffectivelyReadonly()) {\r\n return;\r\n }\r\n\r\n const key = child.value();\r\n if (key === null || key === undefined) {\r\n return;\r\n }\r\n\r\n const currentValue = { ...this._value() };\r\n currentValue[key] = checked;\r\n\r\n this.updateValue(currentValue);\r\n }\r\n\r\n private updateValue(newValue: Record<string, boolean>): void {\r\n this._value.set(newValue);\r\n this.onChange(newValue);\r\n this.valueChange.emit(newValue);\r\n this.change.emit(newValue);\r\n }\r\n\r\n private syncSwitchesToValue(): void {\r\n if (!this.contentInitialized || !this.switches) return;\r\n const currentValue = this._value();\r\n\r\n this.switches.forEach((sw) => {\r\n const key = sw.value();\r\n if (key === null || key === undefined) {\r\n return;\r\n }\r\n sw.writeValue(currentValue[key]);\r\n });\r\n }\r\n\r\n private propagateDisabledToSwitches(): void {\r\n if (!this.contentInitialized || !this.switches) return;\r\n const isDisabled = this.isEffectivelyDisabled();\r\n this.switches.forEach((sw) => {\r\n sw.setDisabledState(isDisabled);\r\n });\r\n }\r\n\r\n private propagateReadonlyToSwitches(): void {\r\n if (!this.contentInitialized || !this.switches) return;\r\n const isReadonly = this.isEffectivelyReadonly();\r\n this.switches.forEach((sw) => {\r\n sw.setCvaReadonlyState(isReadonly);\r\n });\r\n }\r\n\r\n private readonly _propagateEffect = effect(() => {\r\n if (!this.contentInitialized) return;\r\n this.isEffectivelyDisabled();\r\n this.isEffectivelyReadonly();\r\n this.propagateDisabledToSwitches();\r\n this.propagateReadonlyToSwitches();\r\n });\r\n\r\n private readonly _validateEffect = effect(() => {\r\n this._value();\r\n this.minEnabled();\r\n this.maxEnabled();\r\n this.requiredInput();\r\n this.validateBounds();\r\n });\r\n\r\n private validateBounds(): void {\r\n const value = this._value();\r\n const enabledCount = Object.values(value).filter(Boolean).length;\r\n const min = this.minEnabled();\r\n const max = this.maxEnabled();\r\n const isRequired = this.requiredInput();\r\n const minRequired = min ?? (isRequired ? 1 : 0);\r\n\r\n const isOutOfBounds =\r\n (minRequired > 0 && enabledCount < minRequired) ||\r\n (max != null && enabledCount > max);\r\n this.autoInvalid.set(isOutOfBounds);\r\n }\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","@if (labelText(); as text) {\r\n <span class=\"solaris-switch-group__label\" [id]=\"labelId()\">\r\n {{ text }}\r\n </span>\r\n}\r\n<div class=\"solaris-switch-group__options\" role=\"presentation\">\r\n <ng-content />\r\n</div>\r\n@if (hintText(); as text) {\r\n <p class=\"solaris-switch-group__hint\" [id]=\"hintId()\">\r\n {{ text }}\r\n </p>\r\n}\r\n@if (showError(); as text) {\r\n <p class=\"solaris-switch-group__error\" [id]=\"errorId()\" role=\"alert\">\r\n {{ text }}\r\n </p>\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n signal,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ElementRef,\r\n ContentChildren,\r\n QueryList,\r\n type AfterContentInit,\r\n type OnDestroy,\r\n NgZone,\r\n} from '@angular/core';\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\ntype Subscription = any;\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\nimport { SolarisRadioComponent } from '../../radio/component/radio.component';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SOLARIS_RADIO_GROUP_NAME } from '../model/radio-group.token';\r\n\r\nimport type {\r\n SolarisRadioGroupOrientation,\r\n SolarisRadioGroupLayout,\r\n SolarisRadioGroupColumns,\r\n SolarisRadioGroupDensity,\r\n SolarisRadioGroupSize,\r\n} from '../model/radio-group.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-radio-group-${++nextId}`;\r\n}\r\n\r\nfunction defaultCompare(a: unknown, b: unknown): boolean {\r\n return Object.is(a, b);\r\n}\r\n\r\nlet groupNameCounter = 0;\r\n\r\nfunction generateGroupName(): string {\r\n return `solaris-radio-group-name-${++groupNameCounter}`;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-radio-group',\r\n standalone: true,\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisRadioGroupComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SolarisFormControl,\r\n useExisting: forwardRef(() => SolarisRadioGroupComponent),\r\n },\r\n {\r\n provide: SOLARIS_RADIO_GROUP_NAME,\r\n useFactory: () => generateGroupName(),\r\n },\r\n ],\r\n templateUrl: './radio-group.component.html',\r\n styleUrls: ['./radio-group.component.scss'],\r\n host: {\r\n role: 'radiogroup',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-layout]': 'layout()',\r\n '[attr.data-columns]': 'columnsStr()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() ? \"\" : null',\r\n '[attr.data-readonly]': 'isEffectivelyReadonly() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.aria-label]': 'effectiveAriaLabel() ?? null',\r\n '[attr.aria-labelledby]': 'ariaLabelledBy()',\r\n '[attr.aria-describedby]': 'ariaDescribedBy()',\r\n '[attr.aria-invalid]': 'isEffectivelyInvalid() ? \"true\" : null',\r\n '[attr.aria-required]': 'isEffectivelyRequired() ? \"true\" : null',\r\n },\r\n})\r\nexport class SolarisRadioGroupComponent\r\n extends SolarisFormControl\r\n implements ControlValueAccessor, AfterContentInit, OnDestroy\r\n{\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly translateService = inject(SolarisTranslateService);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n @ContentChildren(SolarisRadioComponent)\r\n protected radios!: QueryList<SolarisRadioComponent>;\r\n\r\n readonly orientation = input<SolarisRadioGroupOrientation>('vertical');\r\n readonly layout = input<SolarisRadioGroupLayout>('list');\r\n readonly columns = input<SolarisRadioGroupColumns>(1);\r\n readonly density = input<SolarisRadioGroupDensity>();\r\n readonly size = input<SolarisRadioGroupSize>('md');\r\n readonly disabledInput = input<boolean, boolean>(false, {\r\n alias: 'disabled',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly readonlyInput = input<boolean, boolean>(false, {\r\n alias: 'readonly',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly requiredInput = input<boolean, boolean>(false, {\r\n alias: 'required',\r\n transform: (v: boolean) => v ?? false,\r\n });\r\n readonly invalidInput = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly labelInput = input<string>(undefined, { alias: 'label' });\r\n readonly labelKey = input<string>();\r\n readonly hintInput = input<string>(undefined, { alias: 'hint' });\r\n readonly hintKey = input<string>();\r\n readonly errorInput = input<string>(undefined, { alias: 'error' });\r\n readonly errorKey = input<string>();\r\n readonly compareWith =\r\n input<(a: unknown, b: unknown) => boolean>(defaultCompare);\r\n readonly ariaLabel = input<string>();\r\n readonly ariaLabelKey = input<string>();\r\n\r\n readonly valueChange = output<unknown>();\r\n // eslint-disable-next-line @angular-eslint/no-output-native\r\n readonly change = output<unknown>();\r\n\r\n private readonly _value = signal<unknown>(undefined);\r\n private readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n private readonly cvaDisabled = signal(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: unknown) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n private readonly radioSubscriptions = new Map<\r\n SolarisRadioComponent,\r\n Subscription\r\n >();\r\n private contentInitialized = false;\r\n private radioQuerySubscription: Subscription | null = null;\r\n private focusListenersAttached = false;\r\n\r\n protected readonly groupId = computed(() => {\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK and Solaris Checkbox.\r\n return this.elementRef.nativeElement.getAttribute('id') || generateId();\r\n });\r\n protected readonly labelId = computed(() => `${this.groupId()}-label`);\r\n protected readonly hintId = computed(() => `${this.groupId()}-hint`);\r\n protected readonly errorId = computed(() => `${this.groupId()}-error`);\r\n\r\n protected readonly columnsStr = computed(() => String(this.columns()));\r\n\r\n protected readonly effectiveDensity = computed<SolarisRadioGroupDensity>(\r\n () => {\r\n return this.density() ?? 'comfortable';\r\n },\r\n );\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabledInput() || this.cvaDisabled();\r\n });\r\n\r\n protected readonly isEffectivelyReadonly = computed(() => {\r\n return this.readonlyInput();\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n return this.invalidInput() ?? false;\r\n });\r\n\r\n protected readonly isEffectivelyRequired = computed(() => {\r\n return this.requiredInput();\r\n });\r\n\r\n protected readonly labelText = computed(() => {\r\n const key = this.labelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.labelInput();\r\n });\r\n\r\n protected readonly hintText = computed(() => {\r\n const key = this.hintKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.hintInput();\r\n });\r\n\r\n protected readonly errorText = computed(() => {\r\n const key = this.errorKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.errorInput();\r\n });\r\n\r\n protected readonly effectiveAriaLabel = computed(() => {\r\n const key = this.ariaLabelKey();\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return this.ariaLabel();\r\n });\r\n\r\n protected readonly ariaLabelledBy = computed(() => {\r\n if (this.labelText()) {\r\n return this.labelId();\r\n }\r\n return null;\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const customIds = this._describedByIds();\r\n const ownIds: string[] = [];\r\n if (this.hintText()) ownIds.push(this.hintId());\r\n if (this.showError()) ownIds.push(this.errorId());\r\n const all = [...customIds, ...ownIds];\r\n return all.length > 0 ? all.join(' ') : null;\r\n });\r\n\r\n protected readonly showError = computed(() => {\r\n if (this.isEffectivelyInvalid()) {\r\n return this.errorText() ?? null;\r\n }\r\n return null;\r\n });\r\n\r\n get id(): string {\r\n return this.groupId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n get disabled(): boolean {\r\n return this.isEffectivelyDisabled();\r\n }\r\n\r\n get readonly(): boolean {\r\n return this.isEffectivelyReadonly();\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n get required(): boolean {\r\n return this.isEffectivelyRequired();\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n focus(): void {\r\n const first = this.radios?.get(0);\r\n if (first) {\r\n first.focus();\r\n }\r\n }\r\n\r\n writeValue(value: unknown | null): void {\r\n this._value.set(value ?? undefined);\r\n this.syncRadiosToValue();\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.cvaDisabled.set(isDisabled);\r\n this.propagateDisabledToRadios();\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this.contentInitialized = true;\r\n this.attachFocusListeners();\r\n this.initRadios();\r\n this.syncRadiosToValue();\r\n this.propagateDisabledToRadios();\r\n this.propagateReadonlyToRadios();\r\n\r\n this.radioQuerySubscription = this.radios.changes.subscribe(() => {\r\n this.initRadios();\r\n this.syncRadiosToValue();\r\n this.propagateDisabledToRadios();\r\n this.propagateReadonlyToRadios();\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.unsubscribeAllRadios();\r\n if (this.radioQuerySubscription) {\r\n this.radioQuerySubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private attachFocusListeners(): void {\r\n if (this.focusListenersAttached) return;\r\n this.focusListenersAttached = true;\r\n\r\n // SECURITY_EXCEPTION: nativeElement.focusin/focusout are standard DOM events for focus tracking. Same pattern used by Solaris FormField.\r\n const native = this.elementRef.nativeElement;\r\n this.ngZone.runOutsideAngular(() => {\r\n native.addEventListener('focusin', () => {\r\n this.ngZone.run(() => this._focused.set(true));\r\n });\r\n native.addEventListener('focusout', (e: FocusEvent) => {\r\n const related = e.relatedTarget as Node | null;\r\n if (related && native.contains(related)) return;\r\n this.ngZone.run(() => {\r\n this._focused.set(false);\r\n this.onTouched();\r\n });\r\n });\r\n });\r\n }\r\n\r\n private initRadios(): void {\r\n this.unsubscribeAllRadios();\r\n this.radios.forEach((radio) => {\r\n const sub = radio.checkedChange.subscribe((checked: boolean) => {\r\n this.onRadioCheckedChange(radio, checked);\r\n });\r\n this.radioSubscriptions.set(radio, sub as unknown as Subscription);\r\n });\r\n }\r\n\r\n private unsubscribeAllRadios(): void {\r\n this.radioSubscriptions.forEach((sub) => sub.unsubscribe());\r\n this.radioSubscriptions.clear();\r\n }\r\n\r\n private onRadioCheckedChange(\r\n child: SolarisRadioComponent,\r\n checked: boolean,\r\n ): void {\r\n if (this.isEffectivelyDisabled() || this.isEffectivelyReadonly()) {\r\n return;\r\n }\r\n\r\n if (!checked) {\r\n return;\r\n }\r\n\r\n const childValue = child.value();\r\n const cmp = this.compareWith();\r\n\r\n const currentValue = this._value();\r\n if (currentValue !== undefined && cmp(currentValue, childValue)) {\r\n return;\r\n }\r\n\r\n this.updateValue(childValue);\r\n }\r\n\r\n private updateValue(newValue: unknown): void {\r\n this._value.set(newValue);\r\n this.syncRadiosToValue();\r\n this.onChange(newValue);\r\n this.valueChange.emit(newValue);\r\n this.change.emit(newValue);\r\n }\r\n\r\n private syncRadiosToValue(): void {\r\n if (!this.contentInitialized || !this.radios) return;\r\n const currentValue = this._value();\r\n const cmp = this.compareWith();\r\n\r\n this.radios.forEach((radio) => {\r\n const childValue = radio.value();\r\n const isChecked =\r\n currentValue !== undefined && cmp(currentValue, childValue);\r\n radio.writeValue(isChecked);\r\n });\r\n }\r\n\r\n private propagateDisabledToRadios(): void {\r\n if (!this.contentInitialized || !this.radios) return;\r\n const isDisabled = this.isEffectivelyDisabled();\r\n this.radios.forEach((radio) => {\r\n radio.setDisabledState(isDisabled);\r\n });\r\n }\r\n\r\n private propagateReadonlyToRadios(): void {\r\n if (!this.contentInitialized || !this.radios) return;\r\n const isReadonly = this.isEffectivelyReadonly();\r\n this.radios.forEach((radio) => {\r\n radio.setCvaReadonlyState(isReadonly);\r\n });\r\n }\r\n\r\n private readonly _propagateEffect = effect(() => {\r\n if (!this.contentInitialized) return;\r\n this.isEffectivelyDisabled();\r\n this.isEffectivelyReadonly();\r\n this.propagateDisabledToRadios();\r\n this.propagateReadonlyToRadios();\r\n });\r\n\r\n constructor() {\r\n super();\r\n }\r\n}\r\n","@if (labelText(); as text) {\r\n <span class=\"solaris-radio-group__label\" [id]=\"labelId()\">\r\n {{ text }}\r\n </span>\r\n}\r\n<div class=\"solaris-radio-group__options\" role=\"presentation\">\r\n <ng-content />\r\n</div>\r\n@if (hintText(); as text) {\r\n <p class=\"solaris-radio-group__hint\" [id]=\"hintId()\">\r\n {{ text }}\r\n </p>\r\n}\r\n@if (showError(); as text) {\r\n <p class=\"solaris-radio-group__error\" [id]=\"errorId()\" role=\"alert\">\r\n {{ text }}\r\n </p>\r\n}\r\n","import {\r\n Directive,\r\n input,\r\n computed,\r\n signal,\r\n HostListener,\r\n inject,\r\n ElementRef,\r\n isDevMode,\r\n} from '@angular/core';\r\nimport { NgControl } from '@angular/forms';\r\n\r\nimport { SolarisFormControl } from '../../form-field/model/form-control.contract';\r\n\r\nimport type {\r\n SolarisTextareaAppearance,\r\n SolarisTextareaSize,\r\n SolarisTextareaDensity,\r\n SolarisTextareaRadius,\r\n SolarisTextareaResize,\r\n} from '../model/textarea.types';\r\n\r\nlet nextId = 0;\r\n\r\nfunction generateId(): string {\r\n return `solaris-textarea-${++nextId}`;\r\n}\r\n\r\n@Directive({\r\n selector: '[solaris-textarea]',\r\n standalone: true,\r\n providers: [\r\n { provide: SolarisFormControl, useExisting: SolarisTextareaDirective },\r\n ],\r\n host: {\r\n '[id]': 'elementId()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-density]': 'effectiveDensity()',\r\n '[attr.aria-describedby]': 'ariaDescribedBy()',\r\n '[attr.data-focused]': '_focused() ? \"\" : null',\r\n '[attr.data-full-width]': 'fullWidth() ? \"\" : null',\r\n '[attr.data-invalid]': 'isEffectivelyInvalid() ? \"\" : null',\r\n '[attr.aria-invalid]': 'isEffectivelyInvalid() ? \"true\" : null',\r\n '[attr.data-resize]': 'resize()',\r\n },\r\n})\r\nexport class SolarisTextareaDirective extends SolarisFormControl {\r\n readonly appearance = input<SolarisTextareaAppearance>('outline');\r\n readonly radius = input<SolarisTextareaRadius>('md');\r\n readonly size = input<SolarisTextareaSize>('md');\r\n readonly density = input<SolarisTextareaDensity>();\r\n\r\n readonly manualInvalid = input<boolean | undefined>(undefined, {\r\n alias: 'invalid',\r\n });\r\n readonly fullWidth = input<boolean>(true);\r\n readonly resize = input<SolarisTextareaResize>('vertical');\r\n\r\n // SECURITY_EXCEPTION: ElementRef.nativeElement is the standard Angular directive API to read host element properties and attributes. Same approach used by Angular CDK and all Solaris directives.\r\n private readonly elementRef =\r\n inject<ElementRef<HTMLTextAreaElement>>(ElementRef);\r\n // SECURITY_EXCEPTION: nativeElement access required for host element property reads (tagName, disabled, readonly, required, focus, getAttribute). Same pattern used by Angular CDK form controls.\r\n private readonly textareaElement = this.elementRef.nativeElement;\r\n protected readonly ngControl = inject(NgControl, {\r\n optional: true,\r\n self: true,\r\n });\r\n\r\n protected readonly _focused = signal(false);\r\n private readonly _describedByIds = signal<string[]>([]);\r\n\r\n // SECURITY_EXCEPTION: nativeElement.getAttribute('id') is the standard DOM API to check existing ID before generating one. Same approach used by Angular CDK form controls.\r\n protected readonly elementId = computed(() => {\r\n const existingId = this.textareaElement.getAttribute('id');\r\n return existingId ?? generateId();\r\n });\r\n\r\n protected readonly effectiveDensity = computed<SolarisTextareaDensity>(() => {\r\n return this.density() ?? 'comfortable';\r\n });\r\n\r\n protected readonly isEffectivelyInvalid = computed(() => {\r\n const manual = this.manualInvalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n if (this.ngControl?.control) {\r\n const control = this.ngControl.control;\r\n return (\r\n control.invalid &&\r\n (control.touched || control.dirty) &&\r\n !this._focused()\r\n );\r\n }\r\n return false;\r\n });\r\n\r\n protected readonly ariaDescribedBy = computed(() => {\r\n const ids = this._describedByIds();\r\n return ids.length > 0 ? ids.join(' ') : null;\r\n });\r\n\r\n get id(): string {\r\n return this.elementId();\r\n }\r\n\r\n get focused(): boolean {\r\n return this._focused();\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.disabled is the standard DOM property to read textarea disabled state. Same approach used by Angular Forms.\r\n get disabled(): boolean {\r\n return this.textareaElement.disabled;\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.readOnly is the standard DOM property to read textarea readonly state.\r\n get readonly(): boolean {\r\n return this.textareaElement.readOnly;\r\n }\r\n\r\n get invalid(): boolean {\r\n return this.isEffectivelyInvalid();\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.required is the standard DOM property to read textarea required state.\r\n get required(): boolean {\r\n return this.textareaElement.required;\r\n }\r\n\r\n get describedByIds(): string[] {\r\n return this._describedByIds();\r\n }\r\n\r\n setDescribedByIds(ids: string[]): void {\r\n this._describedByIds.set([...ids]);\r\n }\r\n\r\n // SECURITY_EXCEPTION: nativeElement.focus() is the standard DOM API to programmatically focus a textarea. No alternative exists.\r\n focus(): void {\r\n this.textareaElement.focus();\r\n }\r\n\r\n @HostListener('focus')\r\n protected onFocus(): void {\r\n this._focused.set(true);\r\n }\r\n\r\n @HostListener('blur')\r\n protected onBlur(): void {\r\n this._focused.set(false);\r\n }\r\n\r\n constructor() {\r\n super();\r\n this.validateHost();\r\n }\r\n\r\n private validateHost(): void {\r\n // SECURITY_EXCEPTION: nativeElement.tagName is the standard Angular API to validate directive host element. Same pattern used by SolarisInputDirective.\r\n if (this.textareaElement.tagName !== 'TEXTAREA') {\r\n if (isDevMode()) {\r\n console.warn(\r\n `[SolarisTextarea] The [solaris-textarea] directive is intended for use on <textarea> elements only. ` +\r\n `Applying it to <${this.textareaElement.tagName.toLowerCase()}> is unsupported ` +\r\n `and may cause unexpected behavior.`,\r\n );\r\n }\r\n }\r\n }\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\nimport type { SolarisPasswordPolicy } from '../model/password-policy.types';\r\n\r\nexport function solarisPasswordValidator(\r\n policy: SolarisPasswordPolicy,\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n\r\n if (!value || typeof value !== 'string') {\r\n return null;\r\n }\r\n\r\n const errors: ValidationErrors = {};\r\n\r\n if (policy.minLength !== undefined && value.length < policy.minLength) {\r\n errors['solarisPasswordMinLength'] = {\r\n requiredLength: policy.minLength,\r\n actualLength: value.length,\r\n };\r\n }\r\n\r\n if (policy.maxLength !== undefined && value.length > policy.maxLength) {\r\n errors['solarisPasswordMaxLength'] = {\r\n requiredLength: policy.maxLength,\r\n actualLength: value.length,\r\n };\r\n }\r\n\r\n if (policy.requireLowercase && !/[a-z]/.test(value)) {\r\n errors['solarisPasswordLowercase'] = true;\r\n }\r\n\r\n if (policy.requireUppercase && !/[A-Z]/.test(value)) {\r\n errors['solarisPasswordUppercase'] = true;\r\n }\r\n\r\n if (policy.requireNumber && !/[0-9]/.test(value)) {\r\n errors['solarisPasswordNumber'] = true;\r\n }\r\n\r\n if (policy.requireSymbol && !/[^a-zA-Z0-9]/.test(value)) {\r\n errors['solarisPasswordSymbol'] = true;\r\n }\r\n\r\n if (policy.disallowWhitespace && /\\s/.test(value)) {\r\n errors['solarisPasswordWhitespace'] = true;\r\n }\r\n\r\n if (policy.forbiddenValues && policy.forbiddenValues.length > 0) {\r\n const lowerValue = value.toLowerCase();\r\n const found = policy.forbiddenValues.some((fv) =>\r\n lowerValue.includes(fv.toLowerCase()),\r\n );\r\n if (found) {\r\n errors['solarisPasswordForbiddenValue'] = true;\r\n }\r\n }\r\n\r\n return Object.keys(errors).length > 0 ? errors : null;\r\n };\r\n}\r\n","export const ALPHABET = 'abcdefghijklmnopqrstuvwxyz';\r\nexport const DIGITS = '0123456789';\r\nexport const SEQUENTIAL_MIN_LENGTH = 4;\r\nexport const REPEAT_MIN_COUNT = 3;\r\n","import type { SolarisPasswordStrength } from './password-field.types';\r\nimport {\r\n ALPHABET,\r\n DIGITS,\r\n SEQUENTIAL_MIN_LENGTH,\r\n REPEAT_MIN_COUNT,\r\n} from './password-field-constants';\r\n\r\nexport function calculatePasswordStrength(\r\n value: string,\r\n): SolarisPasswordStrength {\r\n if (!value) {\r\n return 'empty';\r\n }\r\n\r\n const score =\r\n scoreLength(value.length) + scoreDiversity(value) - scorePenalties(value);\r\n\r\n if (score <= 2) {\r\n return 'weak';\r\n }\r\n if (score <= 4) {\r\n return 'medium';\r\n }\r\n return 'strong';\r\n}\r\n\r\nfunction scoreLength(len: number): number {\r\n if (len >= 16) {\r\n return 3;\r\n }\r\n if (len >= 12) {\r\n return 2;\r\n }\r\n if (len >= 8) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n\r\nfunction scoreDiversity(value: string): number {\r\n const types = [\r\n /[a-z]/.test(value),\r\n /[A-Z]/.test(value),\r\n /\\d/.test(value),\r\n /[^a-zA-Z0-9]/.test(value),\r\n ].filter(Boolean).length;\r\n\r\n return Math.max(0, types - 1);\r\n}\r\n\r\nfunction scorePenalties(value: string): number {\r\n let penalty = 0;\r\n\r\n if (hasRepeatedChars(value)) {\r\n penalty += 1;\r\n }\r\n if (hasSequentialChars(value, ALPHABET)) {\r\n penalty += 1;\r\n }\r\n if (hasSequentialChars(value, DIGITS)) {\r\n penalty += 1;\r\n }\r\n\r\n return penalty;\r\n}\r\n\r\nfunction hasRepeatedChars(value: string): boolean {\r\n // SECURITY_EXCEPTION: Dynamic RegExp is used here with the user's own password value\r\n // as both input and match target. The regex pattern uses a controlled constant\r\n // (REPEAT_MIN_COUNT) and only detects repeated characters in the same string.\r\n // This is not a user-supplied regex pattern and cannot be exploited for ReDoS\r\n // because the value is the user's own password being validated (bounded length).\r\n return new RegExp(String.raw`(.)\\1{${REPEAT_MIN_COUNT - 1},}`).test(value);\r\n}\r\n\r\nfunction hasSequentialChars(value: string, charset: string): boolean {\r\n const lower = value.toLowerCase();\r\n const max = charset.length - SEQUENTIAL_MIN_LENGTH;\r\n\r\n for (let i = 0; i <= max; i++) {\r\n if (lower.includes(charset.slice(i, i + SEQUENTIAL_MIN_LENGTH))) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n output,\r\n effect,\r\n forwardRef,\r\n inject,\r\n ViewChild,\r\n ElementRef,\r\n isDevMode,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormsModule,\r\n} from '@angular/forms';\r\n\r\nimport type {\r\n SolarisPasswordFieldAppearance,\r\n SolarisPasswordFieldSize,\r\n SolarisPasswordFieldDensity,\r\n SolarisPasswordFieldRadius,\r\n SolarisPasswordStrength,\r\n} from '../model/password-field.types';\r\nimport {\r\n SolarisFormFieldComponent,\r\n SolarisFormSuffixDirective,\r\n} from '../../form-field';\r\nimport type { SolarisPasswordPolicy } from '../model/password-policy.types';\r\nimport { solarisPasswordValidator } from '../validators/password.validator';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport type { SolarisTranslateParams } from '../../../../services/translation';\r\nimport { SolarisIconComponent } from '../../../../components/icon';\r\nimport { SolarisInputDirective } from '../../input';\r\nimport { calculatePasswordStrength } from '../model/password-strength';\r\n\r\ninterface RequirementItem {\r\n key: string;\r\n label: string;\r\n met: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'solaris-password-field',\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n SolarisFormFieldComponent,\r\n SolarisInputDirective,\r\n SolarisFormSuffixDirective,\r\n SolarisIconComponent,\r\n ],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisPasswordFieldComponent),\r\n multi: true,\r\n },\r\n ],\r\n templateUrl: './password-field.component.html',\r\n styleUrls: ['./password-field.component.scss'],\r\n})\r\nexport class SolarisPasswordFieldComponent implements ControlValueAccessor {\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n @ViewChild('inputElement', { read: ElementRef })\r\n protected inputElementRef?: ElementRef<HTMLInputElement>;\r\n\r\n readonly value = input<string>('');\r\n readonly label = input<string>('');\r\n readonly labelKey = input<string>();\r\n readonly hint = input<string>('');\r\n readonly hintKey = input<string>();\r\n readonly error = input<string>('');\r\n readonly errorKey = input<string>();\r\n readonly placeholder = input<string>();\r\n readonly placeholderKey = input<string>();\r\n readonly autocomplete = input<string>();\r\n readonly name = input<string>();\r\n readonly id = input<string>();\r\n readonly required = input<boolean>(false);\r\n readonly optional = input<boolean>(false);\r\n readonly disabled = input<boolean>(false);\r\n readonly readonly = input<boolean>(false);\r\n readonly invalid = input<boolean | undefined>();\r\n readonly appearance = input<SolarisPasswordFieldAppearance>('outline');\r\n readonly size = input<SolarisPasswordFieldSize>('md');\r\n readonly density = input<SolarisPasswordFieldDensity>();\r\n readonly radius = input<SolarisPasswordFieldRadius>('md');\r\n readonly fullWidth = input<boolean>(true);\r\n\r\n readonly showToggle = input<boolean>(true);\r\n readonly visible = input<boolean>(false);\r\n readonly showRequirements = input<boolean>(false);\r\n readonly showStrength = input<boolean>(false);\r\n readonly policy = input<SolarisPasswordPolicy | undefined>();\r\n readonly validatePolicy = input<boolean>(true);\r\n readonly minLength = input<number>();\r\n readonly maxLength = input<number>();\r\n\r\n readonly toggleShowLabel = input<string>();\r\n readonly toggleShowLabelKey = input<string>();\r\n readonly toggleHideLabel = input<string>();\r\n readonly toggleHideLabelKey = input<string>();\r\n\r\n readonly valueChange = output<string>();\r\n readonly visibleChange = output<boolean>();\r\n\r\n protected readonly internalValue = signal<string>('');\r\n protected readonly internalFocused = signal(false);\r\n protected readonly internalDisabled = signal(false);\r\n protected readonly _visibleState = signal(false);\r\n protected readonly touched = signal(false);\r\n protected readonly dirty = signal(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: string) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly effectivePolicy = computed<\r\n SolarisPasswordPolicy | undefined\r\n >(() => {\r\n const p = this.policy();\r\n const min = this.minLength();\r\n const max = this.maxLength();\r\n if (!p && min === undefined && max === undefined) {\r\n return undefined;\r\n }\r\n return {\r\n ...p,\r\n ...(min !== undefined ? { minLength: min } : {}),\r\n ...(max !== undefined ? { maxLength: max } : {}),\r\n };\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n this._visibleState.set(this.visible());\r\n });\r\n }\r\n\r\n protected readonly inputType = computed(() => {\r\n return this._visibleState() ? 'text' : 'password';\r\n });\r\n\r\n protected readonly placeholderText = computed(() => {\r\n const key = this.placeholderKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.placeholder() ?? '';\r\n });\r\n\r\n protected readonly toggleLabel = computed(() => {\r\n if (this._visibleState()) {\r\n const key = this.toggleHideLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return (\r\n this.toggleHideLabel() ||\r\n this.translateWithDefault(\r\n 'solaris.password-field.toggle.hide',\r\n 'Hide password',\r\n )\r\n );\r\n }\r\n const key = this.toggleShowLabelKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return (\r\n this.toggleShowLabel() ||\r\n this.translateWithDefault(\r\n 'solaris.password-field.toggle.show',\r\n 'Show password',\r\n )\r\n );\r\n });\r\n\r\n private translateWithDefault(\r\n key: string,\r\n defaultText: string,\r\n params?: SolarisTranslateParams,\r\n ): string {\r\n const result = this.translateService.translate(key, params);\r\n return result !== key ? result : defaultText;\r\n }\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabled() || this.internalDisabled();\r\n });\r\n\r\n protected readonly isFieldInvalid = computed(() => {\r\n const manual = this.invalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n\r\n if (this.internalFocused()) {\r\n return false;\r\n }\r\n\r\n const isTouchedOrDirty = this.touched() || this.dirty();\r\n if (!isTouchedOrDirty) {\r\n return false;\r\n }\r\n\r\n const val = this.internalValue();\r\n if (this.required() && (!val || val.length === 0)) {\r\n return true;\r\n }\r\n\r\n const currentPolicy = this.effectivePolicy();\r\n if (this.validatePolicy() && currentPolicy) {\r\n if (typeof val === 'string' && val.length > 0) {\r\n const errors = solarisPasswordValidator(currentPolicy)({\r\n value: val,\r\n } as never);\r\n if (errors && Object.keys(errors).length > 0) {\r\n return true;\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n });\r\n\r\n protected readonly computedError = computed(() => {\r\n if (!this.isFieldInvalid()) {\r\n return '';\r\n }\r\n\r\n const val = this.internalValue();\r\n if (!val || val.length === 0) {\r\n if (this.required()) {\r\n return this.translateWithDefault(\r\n 'solaris.password-field.error.required',\r\n 'Password is required.',\r\n );\r\n }\r\n }\r\n\r\n return '';\r\n });\r\n\r\n protected readonly requirementList = computed<RequirementItem[]>(() => {\r\n const p = this.effectivePolicy();\r\n if (!p) {\r\n return [];\r\n }\r\n const val = this.internalValue();\r\n const items: RequirementItem[] = [];\r\n\r\n if (p.minLength !== undefined) {\r\n items.push({\r\n key: 'minLength',\r\n label: this.translateWithDefault(\r\n 'solaris.password-field.requirement.minLength',\r\n `At least ${p.minLength} characters.`,\r\n { count: p.minLength },\r\n ),\r\n met: val.length >= p.minLength,\r\n });\r\n }\r\n\r\n if (p.maxLength !== undefined) {\r\n items.push({\r\n key: 'maxLength',\r\n label: this.translateWithDefault(\r\n 'solaris.password-field.requirement.maxLength',\r\n `At most ${p.maxLength} characters.`,\r\n { count: p.maxLength },\r\n ),\r\n met: val.length <= p.maxLength,\r\n });\r\n }\r\n\r\n if (p.requireLowercase) {\r\n items.push({\r\n key: 'lowercase',\r\n label: this.translateWithDefault(\r\n 'solaris.password-field.requirement.lowercase',\r\n 'One lowercase letter.',\r\n ),\r\n met: /[a-z]/.test(val),\r\n });\r\n }\r\n\r\n if (p.requireUppercase) {\r\n items.push({\r\n key: 'uppercase',\r\n label: this.translateWithDefault(\r\n 'solaris.password-field.requirement.uppercase',\r\n 'One uppercase letter.',\r\n ),\r\n met: /[A-Z]/.test(val),\r\n });\r\n }\r\n\r\n if (p.requireNumber) {\r\n items.push({\r\n key: 'number',\r\n label: this.translateWithDefault(\r\n 'solaris.password-field.requirement.number',\r\n 'One number.',\r\n ),\r\n met: /\\d/.test(val),\r\n });\r\n }\r\n\r\n if (p.requireSymbol) {\r\n items.push({\r\n key: 'symbol',\r\n label: this.translateWithDefault(\r\n 'solaris.password-field.requirement.symbol',\r\n 'One symbol.',\r\n ),\r\n met: /[^a-zA-Z0-9]/.test(val),\r\n });\r\n }\r\n\r\n if (p.disallowWhitespace) {\r\n items.push({\r\n key: 'noWhitespace',\r\n label: this.translateWithDefault(\r\n 'solaris.password-field.requirement.noWhitespace',\r\n 'No spaces.',\r\n ),\r\n met: !/\\s/.test(val),\r\n });\r\n }\r\n\r\n return items;\r\n });\r\n\r\n protected readonly strengthLevel = computed<SolarisPasswordStrength>(() =>\r\n calculatePasswordStrength(this.internalValue()),\r\n );\r\n\r\n protected readonly strengthLabelText = computed(() => {\r\n const level = this.strengthLevel();\r\n switch (level) {\r\n case 'empty':\r\n return '';\r\n case 'weak':\r\n return this.translateWithDefault(\r\n 'solaris.password-field.strength.weak',\r\n 'Weak',\r\n );\r\n case 'medium':\r\n return this.translateWithDefault(\r\n 'solaris.password-field.strength.medium',\r\n 'Medium',\r\n );\r\n case 'strong':\r\n return this.translateWithDefault(\r\n 'solaris.password-field.strength.strong',\r\n 'Strong',\r\n );\r\n }\r\n });\r\n\r\n writeValue(safe = ''): void {\r\n this.internalValue.set(safe);\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.internalDisabled.set(isDisabled);\r\n }\r\n\r\n protected onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const newValue = target.value;\r\n\r\n if (!this.dirty()) {\r\n this.dirty.set(true);\r\n }\r\n\r\n this.internalValue.set(newValue);\r\n this.onChange(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n protected onInputFocus(): void {\r\n this.internalFocused.set(true);\r\n }\r\n\r\n protected onInputBlur(): void {\r\n this.internalFocused.set(false);\r\n\r\n if (!this.touched()) {\r\n this.touched.set(true);\r\n }\r\n\r\n this.onTouched();\r\n }\r\n\r\n protected toggleVisibility(): void {\r\n const newVisible = !this._visibleState();\r\n this._visibleState.set(newVisible);\r\n this.visibleChange.emit(newVisible);\r\n\r\n if (this.inputElementRef) {\r\n try {\r\n // SECURITY_EXCEPTION: nativeElement.focus() is the standard DOM API to restore focus after toggle. No SSR-safe alternative exists for imperative focus. Same approach used by Angular CDK.\r\n this.inputElementRef.nativeElement.focus();\r\n } catch {\r\n if (isDevMode()) {\r\n console.warn(\r\n '[SolarisPasswordField] Could not restore focus after toggle.',\r\n );\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","<solaris-form-field\r\n [label]=\"label()\"\r\n [labelKey]=\"labelKey()\"\r\n [hint]=\"hint()\"\r\n [hintKey]=\"hintKey()\"\r\n [error]=\"error() || computedError()\"\r\n [errorKey]=\"errorKey()\"\r\n [invalid]=\"isFieldInvalid()\"\r\n [required]=\"required()\"\r\n [optional]=\"optional()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [appearance]=\"appearance()\"\r\n [size]=\"size()\"\r\n [density]=\"density()\"\r\n [radius]=\"radius()\"\r\n>\r\n <input\r\n #inputElement\r\n solaris-input\r\n [type]=\"inputType()\"\r\n [value]=\"internalValue()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [attr.autocomplete]=\"autocomplete() ?? null\"\r\n [attr.name]=\"name() ?? null\"\r\n [attr.id]=\"id() ?? null\"\r\n [attr.placeholder]=\"placeholderText() || null\"\r\n [attr.maxlength]=\"maxLength() ?? null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onInputFocus()\"\r\n (blur)=\"onInputBlur()\"\r\n />\r\n @if (showToggle()) {\r\n <button\r\n class=\"solaris-password-field__toggle\"\r\n solaris-form-suffix\r\n type=\"button\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [attr.aria-label]=\"toggleLabel()\"\r\n (click)=\"toggleVisibility()\"\r\n >\r\n <solaris-icon\r\n [name]=\"_visibleState() ? 'eye-off' : 'eye'\"\r\n [decorative]=\"true\"\r\n />\r\n </button>\r\n }\r\n</solaris-form-field>\r\n\r\n@if (showRequirements() && effectivePolicy(); as p) {\r\n <div class=\"solaris-password-field__requirements\" role=\"list\">\r\n @for (req of requirementList(); track req.key) {\r\n <div\r\n class=\"solaris-password-field__requirement\"\r\n role=\"listitem\"\r\n [attr.data-met]=\"req.met\"\r\n >\r\n <solaris-icon\r\n class=\"solaris-password-field__requirement-icon\"\r\n [name]=\"req.met ? 'check' : 'x'\"\r\n [decorative]=\"true\"\r\n />\r\n <span class=\"solaris-password-field__requirement-label\">\r\n {{ req.label }}\r\n </span>\r\n </div>\r\n }\r\n </div>\r\n}\r\n\r\n@if (showStrength() && internalValue().length > 0) {\r\n <div\r\n class=\"solaris-password-field__strength\"\r\n [attr.data-level]=\"strengthLevel()\"\r\n role=\"status\"\r\n aria-live=\"polite\"\r\n >\r\n <div class=\"solaris-password-field__strength-bar\">\r\n <div\r\n class=\"solaris-password-field__strength-segment\"\r\n [attr.data-active]=\"strengthLevel() !== 'empty'\"\r\n ></div>\r\n <div\r\n class=\"solaris-password-field__strength-segment\"\r\n [attr.data-active]=\"\r\n strengthLevel() === 'medium' || strengthLevel() === 'strong'\r\n \"\r\n ></div>\r\n <div\r\n class=\"solaris-password-field__strength-segment\"\r\n [attr.data-active]=\"strengthLevel() === 'strong'\"\r\n ></div>\r\n </div>\r\n <span class=\"solaris-password-field__strength-label\">\r\n {{ strengthLabelText() }}\r\n </span>\r\n </div>\r\n}\r\n","import { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\nimport { DomainCheckFn } from '../model/email-field.types';\r\n\r\nconst BASIC_EMAIL_REGEX = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\r\n\r\nexport function solarisEmailValidator(): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value || typeof value !== 'string') {\r\n return null;\r\n }\r\n const trimmed = value.trim();\r\n if (trimmed.length === 0) {\r\n return null;\r\n }\r\n if (!BASIC_EMAIL_REGEX.test(trimmed)) {\r\n return { solarisEmail: true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nfunction solarisDomainValidator(\r\n domains: string[],\r\n checkFn: DomainCheckFn,\r\n errorKey: string,\r\n): ValidatorFn {\r\n return (control: AbstractControl): ValidationErrors | null => {\r\n const value = control.value;\r\n if (!value || typeof value !== 'string') {\r\n return null;\r\n }\r\n const trimmed = value.trim();\r\n if (trimmed.length === 0) {\r\n return null;\r\n }\r\n const domain = extractDomain(trimmed)?.toLowerCase();\r\n if (!domain) {\r\n return null;\r\n }\r\n const normalizedDomains = domains.map((d) => d.toLowerCase().trim());\r\n if (checkFn(normalizedDomains, domain)) {\r\n return { [errorKey]: true };\r\n }\r\n return null;\r\n };\r\n}\r\n\r\nexport function solarisAllowedDomainsValidator(\r\n allowedDomains: string[],\r\n): ValidatorFn {\r\n return solarisDomainValidator(\r\n allowedDomains,\r\n (normalized, domain) => !normalized.includes(domain),\r\n 'solarisEmailAllowedDomain',\r\n );\r\n}\r\n\r\nexport function solarisBlockedDomainsValidator(\r\n blockedDomains: string[],\r\n): ValidatorFn {\r\n return solarisDomainValidator(\r\n blockedDomains,\r\n (normalized, domain) => normalized.includes(domain),\r\n 'solarisEmailBlockedDomain',\r\n );\r\n}\r\n\r\nexport function extractDomain(value: string): string | null {\r\n const trimmed = value.trim();\r\n const atIndex = trimmed.lastIndexOf('@');\r\n if (atIndex < 0) {\r\n return null;\r\n }\r\n const domain = trimmed.slice(atIndex + 1);\r\n return domain || null;\r\n}\r\n\r\nexport function isValidEmailFormat(value: string): boolean {\r\n if (!value) return false;\r\n return BASIC_EMAIL_REGEX.test(value.trim());\r\n}\r\n\r\nexport function isDomainAllowed(\r\n domain: string,\r\n allowedDomains: string[],\r\n): boolean {\r\n return allowedDomains\r\n .map((d) => d.toLowerCase().trim())\r\n .includes(domain.toLowerCase().trim());\r\n}\r\n\r\nexport function isDomainBlocked(\r\n domain: string,\r\n blockedDomains: string[],\r\n): boolean {\r\n return blockedDomains\r\n .map((d) => d.toLowerCase().trim())\r\n .includes(domain.toLowerCase().trim());\r\n}\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n forwardRef,\r\n inject,\r\n ViewChild,\r\n ElementRef,\r\n isDevMode,\r\n} from '@angular/core';\r\nimport {\r\n NG_VALUE_ACCESSOR,\r\n ControlValueAccessor,\r\n FormsModule,\r\n} from '@angular/forms';\r\n\r\nimport type {\r\n SolarisEmailFieldAppearance,\r\n SolarisEmailFieldSize,\r\n SolarisEmailFieldDensity,\r\n SolarisEmailFieldRadius,\r\n} from '../model/email-field.types';\r\nimport {\r\n isValidEmailFormat,\r\n extractDomain,\r\n isDomainAllowed,\r\n isDomainBlocked,\r\n} from '../validators/email-field.validators';\r\nimport type { SolarisTranslateParams } from '../../../../services/translation';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisFormFieldComponent } from '../../form-field';\r\nimport { SolarisInputDirective } from '../../input';\r\n\r\n@Component({\r\n selector: 'solaris-email-field',\r\n standalone: true,\r\n imports: [FormsModule, SolarisFormFieldComponent, SolarisInputDirective],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisEmailFieldComponent),\r\n multi: true,\r\n },\r\n ],\r\n templateUrl: './email-field.component.html',\r\n styleUrls: ['./email-field.component.scss'],\r\n})\r\nexport class SolarisEmailFieldComponent implements ControlValueAccessor {\r\n private readonly translateService = inject(SolarisTranslateService);\r\n\r\n @ViewChild('inputElement', { read: ElementRef })\r\n protected inputElementRef?: ElementRef<HTMLInputElement>;\r\n\r\n readonly id = input<string>();\r\n readonly name = input<string>();\r\n readonly hintKey = input<string>();\r\n readonly hint = input<string>('');\r\n readonly labelKey = input<string>();\r\n readonly errorKey = input<string>();\r\n readonly value = input<string>('');\r\n readonly label = input<string>('');\r\n readonly error = input<string>('');\r\n readonly placeholder = input<string>();\r\n readonly invalidError = input<string>();\r\n readonly requiredError = input<string>();\r\n readonly placeholderKey = input<string>();\r\n readonly invalidErrorKey = input<string>();\r\n readonly requiredErrorKey = input<string>();\r\n readonly allowedDomainError = input<string>();\r\n readonly blockedDomainError = input<string>();\r\n readonly required = input<boolean>(false);\r\n readonly optional = input<boolean>(false);\r\n readonly disabled = input<boolean>(false);\r\n readonly readonly = input<boolean>(false);\r\n readonly trimOnBlur = input<boolean>(true);\r\n readonly allowedDomainErrorKey = input<string>();\r\n readonly blockedDomainErrorKey = input<string>();\r\n readonly autocomplete = input<string>('email');\r\n readonly invalid = input<boolean | undefined>();\r\n readonly normalizeLowercase = input<boolean>(false);\r\n readonly allowedDomains = input<string[] | undefined>();\r\n readonly blockedDomains = input<string[] | undefined>();\r\n readonly density = input<SolarisEmailFieldDensity>();\r\n readonly size = input<SolarisEmailFieldSize>('md');\r\n readonly radius = input<SolarisEmailFieldRadius>('md');\r\n readonly appearance = input<SolarisEmailFieldAppearance>('outline');\r\n readonly maxLength = input<number | undefined>();\r\n readonly validateDomain = input<boolean, boolean>(false, {\r\n transform: (v: boolean) => v,\r\n });\r\n\r\n protected readonly internalValue = signal<string>('');\r\n protected readonly internalDisabled = signal(false);\r\n protected readonly internalFocused = signal(false);\r\n protected readonly touched = signal(false);\r\n protected readonly dirty = signal(false);\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onChange: (value: string) => void = () => {};\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n private onTouched: () => void = () => {};\r\n\r\n protected readonly placeholderText = computed(() => {\r\n const key = this.placeholderKey();\r\n if (key) {\r\n return this.translateService.translate(key);\r\n }\r\n return this.placeholder() ?? '';\r\n });\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabled() || this.internalDisabled();\r\n });\r\n\r\n protected readonly effectiveValidateDomain = computed(() => {\r\n const explicit = this.validateDomain();\r\n if (explicit) return true;\r\n const allowed = this.allowedDomains();\r\n const blocked = this.blockedDomains();\r\n if (allowed && allowed.length > 0) return true;\r\n return !!(blocked && blocked.length > 0);\r\n });\r\n\r\n protected readonly computedError = computed(() => {\r\n const manualError = this.error() || this.translateKey(this.errorKey());\r\n if (manualError) return manualError;\r\n\r\n const val = this.internalValue();\r\n const isTouchedOrDirty = this.touched() || this.dirty();\r\n if (!isTouchedOrDirty || this.internalFocused()) return '';\r\n\r\n if (!val || val.trim().length === 0) {\r\n if (this.required()) {\r\n return this.buildError(\r\n this.requiredError(),\r\n this.requiredErrorKey(),\r\n 'solaris.email-field.required',\r\n 'Email is required.',\r\n );\r\n }\r\n return '';\r\n }\r\n\r\n if (!isValidEmailFormat(val)) {\r\n return this.buildError(\r\n this.invalidError(),\r\n this.invalidErrorKey(),\r\n 'solaris.email-field.invalid',\r\n 'Enter a valid email address.',\r\n );\r\n }\r\n\r\n return this.computeDomainError(val) ?? '';\r\n });\r\n\r\n protected readonly isFieldInvalid = computed(() => {\r\n const manual = this.invalid();\r\n if (manual !== undefined) {\r\n return manual;\r\n }\r\n if (this.internalFocused()) {\r\n return false;\r\n }\r\n const isTouchedOrDirty = this.touched() || this.dirty();\r\n if (!isTouchedOrDirty) {\r\n return false;\r\n }\r\n return !!this.computedError();\r\n });\r\n\r\n writeValue(safe = ''): void {\r\n this.internalValue.set(safe);\r\n }\r\n\r\n registerOnChange(fn: (value: string) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.internalDisabled.set(isDisabled);\r\n }\r\n\r\n protected onInput(event: Event): void {\r\n const target = event.target as HTMLInputElement;\r\n const newValue = target.value;\r\n\r\n if (!this.dirty()) {\r\n this.dirty.set(true);\r\n }\r\n\r\n this.internalValue.set(newValue);\r\n this.onChange(newValue);\r\n }\r\n\r\n protected onInputFocus(): void {\r\n this.internalFocused.set(true);\r\n }\r\n\r\n protected onInputBlur(): void {\r\n this.internalFocused.set(false);\r\n\r\n let currentValue = this.internalValue();\r\n\r\n if (this.trimOnBlur()) {\r\n currentValue = currentValue.trim();\r\n }\r\n\r\n if (this.normalizeLowercase()) {\r\n currentValue = currentValue.toLowerCase();\r\n }\r\n\r\n if (currentValue !== this.internalValue()) {\r\n this.internalValue.set(currentValue);\r\n this.onChange(currentValue);\r\n\r\n if (this.inputElementRef) {\r\n try {\r\n // SECURITY_EXCEPTION: nativeElement.value assignment is required to sync the input element with the normalized value after blur. Angular's data binding may not reflect synchronous value changes to the native input. Same approach is standard for CVA blur normalization.\r\n this.inputElementRef.nativeElement.value = currentValue;\r\n } catch {\r\n if (isDevMode()) {\r\n console.warn(\r\n '[SolarisEmailField] Could not update input value after normalization.',\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (!this.touched()) {\r\n this.touched.set(true);\r\n }\r\n\r\n this.onTouched();\r\n }\r\n\r\n private translateWithDefault(\r\n key: string,\r\n defaultText: string,\r\n params?: SolarisTranslateParams,\r\n ): string {\r\n const result = this.translateService.translate(key, params);\r\n return result !== key ? result : defaultText;\r\n }\r\n\r\n private translateKey(key: string | undefined): string | undefined {\r\n if (key) {\r\n const translated = this.translateService.translate(key);\r\n return translated !== key ? translated : undefined;\r\n }\r\n return undefined;\r\n }\r\n\r\n private buildError(\r\n direct: string | undefined,\r\n key: string | undefined,\r\n fallbackKey: string,\r\n fallbackDefault: string,\r\n ): string {\r\n return (\r\n direct ??\r\n this.translateKey(key) ??\r\n this.translateWithDefault(fallbackKey, fallbackDefault)\r\n );\r\n }\r\n\r\n private computeDomainError(val: string): string | undefined {\r\n if (!this.effectiveValidateDomain()) return undefined;\r\n const domain = extractDomain(val);\r\n if (!domain) return undefined;\r\n\r\n const allowed = this.allowedDomains();\r\n if (allowed && allowed.length > 0 && !isDomainAllowed(domain, allowed)) {\r\n return this.buildError(\r\n this.allowedDomainError(),\r\n this.allowedDomainErrorKey(),\r\n 'solaris.email-field.allowedDomain',\r\n 'Email domain is not allowed.',\r\n );\r\n }\r\n\r\n const blocked = this.blockedDomains();\r\n if (blocked && blocked.length > 0 && isDomainBlocked(domain, blocked)) {\r\n return this.buildError(\r\n this.blockedDomainError(),\r\n this.blockedDomainErrorKey(),\r\n 'solaris.email-field.blockedDomain',\r\n 'Email domain is not allowed.',\r\n );\r\n }\r\n\r\n return undefined;\r\n }\r\n}\r\n","<solaris-form-field\r\n [label]=\"label()\"\r\n [labelKey]=\"labelKey()\"\r\n [hint]=\"hint()\"\r\n [hintKey]=\"hintKey()\"\r\n [error]=\"error() || computedError()\"\r\n [errorKey]=\"errorKey()\"\r\n [invalid]=\"isFieldInvalid()\"\r\n [required]=\"required()\"\r\n [optional]=\"optional()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [appearance]=\"appearance()\"\r\n [size]=\"size()\"\r\n [density]=\"density()\"\r\n [radius]=\"radius()\"\r\n>\r\n <input\r\n #inputElement\r\n solaris-input\r\n type=\"email\"\r\n [value]=\"internalValue()\"\r\n [disabled]=\"isEffectivelyDisabled()\"\r\n [readonly]=\"readonly()\"\r\n [attr.autocomplete]=\"autocomplete()\"\r\n [attr.inputmode]=\"'email'\"\r\n [attr.autocapitalize]=\"'none'\"\r\n [attr.spellcheck]=\"'false'\"\r\n [attr.name]=\"name() ?? null\"\r\n [attr.id]=\"id() ?? null\"\r\n [attr.placeholder]=\"placeholderText() || null\"\r\n [attr.maxlength]=\"maxLength() ?? null\"\r\n (input)=\"onInput($event)\"\r\n (focus)=\"onInputFocus()\"\r\n (blur)=\"onInputBlur()\"\r\n />\r\n</solaris-form-field>\r\n","import { Component, input, computed } from '@angular/core';\r\n\r\nimport type {\r\n SolarisSkeletonVariant,\r\n SolarisSkeletonAnimation,\r\n SolarisSkeletonSize,\r\n SolarisSkeletonRadius,\r\n SolarisSkeletonDensity,\r\n} from '../model/skeleton.types';\r\n\r\n@Component({\r\n selector: 'solaris-skeleton',\r\n standalone: true,\r\n templateUrl: './skeleton.component.html',\r\n styleUrls: ['./skeleton.component.scss'],\r\n host: {\r\n 'aria-hidden': 'true',\r\n '[attr.data-variant]': 'variant()',\r\n '[attr.data-animation]': 'animation()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'effectiveRadius()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-multiline]': 'isMultiLine() ? \"\" : null',\r\n '[style.width]': 'width() || null',\r\n '[style.height]': 'height() || null',\r\n },\r\n})\r\nexport class SolarisSkeletonComponent {\r\n readonly variant = input<SolarisSkeletonVariant>('text');\r\n readonly animation = input<SolarisSkeletonAnimation>('pulse');\r\n readonly size = input<SolarisSkeletonSize>('md');\r\n readonly radius = input<SolarisSkeletonRadius>('text');\r\n readonly density = input<SolarisSkeletonDensity>();\r\n readonly width = input<string>();\r\n readonly height = input<string>();\r\n readonly lines = input<number>(1);\r\n\r\n readonly effectiveRadius = computed<SolarisSkeletonRadius>(() => {\r\n const r = this.radius();\r\n if (r !== 'text') {\r\n return r;\r\n }\r\n const v = this.variant();\r\n if (v === 'rectangular') {\r\n return 'sm';\r\n }\r\n if (v === 'circular') {\r\n return 'full';\r\n }\r\n return 'sm';\r\n });\r\n\r\n readonly isMultiLine = computed(\r\n () => this.lines() > 1 && this.variant() === 'text',\r\n );\r\n\r\n readonly lineWidths = computed<string[]>(() => {\r\n const count = this.lines();\r\n if (count <= 1) {\r\n return [];\r\n }\r\n const customWidth = this.width();\r\n const widths = [\r\n '100%',\r\n '92%',\r\n '85%',\r\n '78%',\r\n '70%',\r\n '95%',\r\n '88%',\r\n '82%',\r\n '75%',\r\n '68%',\r\n ];\r\n return Array.from({ length: count }, (_, i) => {\r\n if (i === 0 && customWidth) {\r\n return customWidth;\r\n }\r\n return widths[i % widths.length];\r\n });\r\n });\r\n}\r\n","@if (isMultiLine()) {\r\n @for (width of lineWidths(); track $index) {\r\n <span class=\"solaris-skeleton-line\" [style.width]=\"width\"></span>\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\nimport type { SolarisToastConfig } from '../model/toast.types';\r\n\r\nexport const SOLARIS_TOAST_CONFIG = new InjectionToken<SolarisToastConfig>(\r\n 'SolarisToastConfig',\r\n);\r\n\r\nexport const SOLARIS_TOAST_DEFAULT_CONFIG: SolarisToastConfig = {\r\n position: 'bottom-center',\r\n appearance: 'surface',\r\n duration: 5000,\r\n limit: 5,\r\n pauseOnHover: true,\r\n pauseOnFocus: true,\r\n newestOnTop: true,\r\n};\r\n\r\nexport const SOLARIS_TOAST_CONTAINER = new InjectionToken<boolean>(\r\n 'SolarisToastContainer',\r\n);\r\n","import {\r\n Injectable,\r\n inject,\r\n signal,\r\n ApplicationRef,\r\n EnvironmentInjector,\r\n Injector,\r\n createComponent,\r\n type ComponentRef,\r\n type Signal,\r\n type WritableSignal,\r\n} from '@angular/core';\r\n\r\nimport {\r\n SOLARIS_TOAST_CONFIG,\r\n SOLARIS_TOAST_DEFAULT_CONFIG,\r\n SOLARIS_TOAST_CONTAINER,\r\n} from '../token/toast.tokens';\r\nimport { SolarisToastContainerComponent } from '../container/toast-container.component';\r\n\r\nimport type {\r\n SolarisToastConfig,\r\n SolarisToastOptions,\r\n SolarisToastRef,\r\n SolarisToastVariant,\r\n SolarisToastAppearance,\r\n SolarisToastPosition,\r\n SolarisToastEntry,\r\n} from '../model/toast.types';\r\n\r\nlet nextToastId = 0;\r\n\r\n@Injectable()\r\nexport class SolarisToastService {\r\n private readonly autoContainer =\r\n inject(SOLARIS_TOAST_CONTAINER, { optional: true }) ?? true;\r\n private readonly appRef = inject(ApplicationRef);\r\n private readonly environmentInjector = inject(EnvironmentInjector);\r\n private readonly injector = inject(Injector);\r\n\r\n private readonly containerRefs = new Map<\r\n SolarisToastPosition,\r\n ComponentRef<SolarisToastContainerComponent>\r\n >();\r\n\r\n private readonly entriesSignal = signal<SolarisToastEntry[]>([]);\r\n\r\n readonly entries: Signal<SolarisToastEntry[]> =\r\n this.entriesSignal.asReadonly();\r\n\r\n private readonly _configSignal: WritableSignal<SolarisToastConfig> = signal(\r\n SOLARIS_TOAST_DEFAULT_CONFIG,\r\n );\r\n\r\n readonly configSignal: Signal<SolarisToastConfig> =\r\n this._configSignal.asReadonly();\r\n\r\n constructor() {\r\n const initial =\r\n inject(SOLARIS_TOAST_CONFIG, { optional: true }) ??\r\n SOLARIS_TOAST_DEFAULT_CONFIG;\r\n this.updateConfig(initial);\r\n }\r\n\r\n private getContainer(\r\n position: SolarisToastPosition,\r\n ): SolarisToastContainerComponent | null {\r\n if (!this.autoContainer) return null;\r\n let ref = this.containerRefs.get(position);\r\n if (!ref) {\r\n const componentRef = createComponent(SolarisToastContainerComponent, {\r\n environmentInjector: this.environmentInjector,\r\n elementInjector: this.injector,\r\n });\r\n componentRef.setInput('position', position);\r\n this.appRef.attachView(componentRef.hostView);\r\n // SECURITY_EXCEPTION: nativeElement required for dynamic container. SSR-safe.\r\n const rootEl = componentRef.location.nativeElement as HTMLElement;\r\n // SECURITY_EXCEPTION: document.body.appendChild for root-level attachment. SSR-safe.\r\n document.body.appendChild(rootEl);\r\n this.containerRefs.set(position, componentRef);\r\n ref = componentRef;\r\n }\r\n return ref.instance;\r\n }\r\n\r\n private resolveEntry(\r\n options: SolarisToastOptions,\r\n existingId?: string,\r\n ): SolarisToastEntry {\r\n const id = existingId ?? options.id ?? `solaris-toast-${++nextToastId}`;\r\n const variant =\r\n options.variant ?? SolarisToastService.toastVariant ?? 'neutral';\r\n const appearances = this.resolveAppearances();\r\n const appearance = options.appearance ?? appearances;\r\n const cfg = this._configSignal();\r\n\r\n const position = options.position ?? cfg.position ?? 'bottom-center';\r\n\r\n const duration = options.duration ?? cfg.duration ?? 5000;\r\n const effectiveDuration =\r\n duration <= 0 || options.persistent ? Infinity : duration;\r\n const persistent = options.duration === 0 || options.persistent === true;\r\n\r\n const closeable = options.closeable ?? true;\r\n\r\n const resolvedAriaLive = resolveAriaLive(variant, options.ariaLive);\r\n const resolvedRole = resolveRole(variant, options.role);\r\n\r\n const icon = options.icon ?? resolveDefaultIcon(variant);\r\n const title = resolveText(options.title, options.titleKey, undefined);\r\n const description = resolveText(\r\n options.description,\r\n options.descriptionKey,\r\n undefined,\r\n );\r\n const closeLabel = resolveCloseLabel(\r\n options.closeLabel,\r\n options.closeLabelKey,\r\n );\r\n\r\n const showCountdown = options.showCountdown ?? cfg.showCountdown ?? false;\r\n const countdownMode = options.countdownMode ?? cfg.countdownMode ?? 'bar';\r\n const showCountdownText =\r\n options.showCountdownText ?? cfg.showCountdownText ?? false;\r\n\r\n return {\r\n id,\r\n options,\r\n createdAt: Date.now(),\r\n resolvedVariant: variant,\r\n resolvedAppearance: appearance,\r\n resolvedPosition: position,\r\n resolvedDuration: effectiveDuration,\r\n resolvedPersistent: persistent,\r\n resolvedCloseable: closeable,\r\n resolvedAriaLive,\r\n resolvedRole,\r\n resolvedIcon: icon,\r\n resolvedTitle: title,\r\n resolvedDescription: description,\r\n resolvedCloseLabel: closeLabel,\r\n resolvedProgress: options.progress,\r\n resolvedShowProgress: options.showProgress ?? false,\r\n resolvedActions: options.actions,\r\n resolvedExpandable: options.expandable ?? false,\r\n resolvedDefaultExpanded: options.defaultExpanded ?? false,\r\n resolvedMaxCollapsedLines: options.maxCollapsedLines ?? 2,\r\n resolvedExpandLabel:\r\n resolveText(options.expandLabel, options.expandLabelKey, '') ?? '',\r\n resolvedCollapseLabel:\r\n resolveText(options.collapseLabel, options.collapseLabelKey, '') ?? '',\r\n resolvedShowCountdown: showCountdown,\r\n resolvedShowCountdownText: showCountdownText,\r\n resolvedCountdownMode: countdownMode,\r\n resolvedActionsAlign: options.actionsAlign ?? cfg.actionsAlign ?? 'end',\r\n resolvedIconSize: options.iconSize ?? cfg.iconSize ?? 'md',\r\n resolvedMediaShape: options.mediaShape ?? cfg.mediaShape ?? 'circle',\r\n };\r\n }\r\n\r\n private resolveAppearances(): SolarisToastAppearance {\r\n return this._configSignal().appearance ?? 'surface';\r\n }\r\n\r\n private addEntry(options: SolarisToastOptions): SolarisToastEntry {\r\n const entry = this.resolveEntry(options);\r\n const cfg = this._configSignal();\r\n\r\n this.entriesSignal.update((current) => {\r\n let next = [...current, entry];\r\n const limit = cfg.limit ?? 5;\r\n if (next.length > limit) {\r\n const removeCount = next.length - limit;\r\n next = next.slice(removeCount);\r\n }\r\n if (cfg.newestOnTop !== false) {\r\n next = [...next].sort((a, b) => b.createdAt - a.createdAt);\r\n }\r\n return next;\r\n });\r\n\r\n this.getContainer(entry.resolvedPosition);\r\n\r\n return entry;\r\n }\r\n\r\n private removeEntry(id: string): void {\r\n this.entriesSignal.update((current) => current.filter((e) => e.id !== id));\r\n }\r\n\r\n private updateEntry(id: string, patch: Partial<SolarisToastOptions>): void {\r\n this.entriesSignal.update((current) =>\r\n current.map((e) => {\r\n if (e.id !== id) return e;\r\n const merged: SolarisToastOptions = { ...e.options, ...patch };\r\n return this.resolveEntry(merged, id);\r\n }),\r\n );\r\n }\r\n\r\n private createRef(entry: SolarisToastEntry): SolarisToastRef {\r\n return {\r\n id: entry.id,\r\n dismiss: () => this.dismiss(entry.id),\r\n update: (patch: Partial<SolarisToastOptions>) =>\r\n this.update(entry.id, patch),\r\n };\r\n }\r\n\r\n show(options: SolarisToastOptions): SolarisToastRef {\r\n const entry = this.addEntry(options);\r\n return this.createRef(entry);\r\n }\r\n\r\n neutral(options: SolarisToastOptions): SolarisToastRef {\r\n return this.show({ ...options, variant: 'neutral' });\r\n }\r\n\r\n info(options: SolarisToastOptions): SolarisToastRef {\r\n return this.show({ ...options, variant: 'info' });\r\n }\r\n\r\n success(options: SolarisToastOptions): SolarisToastRef {\r\n return this.show({ ...options, variant: 'success' });\r\n }\r\n\r\n warning(options: SolarisToastOptions): SolarisToastRef {\r\n return this.show({ ...options, variant: 'warning' });\r\n }\r\n\r\n danger(options: SolarisToastOptions): SolarisToastRef {\r\n return this.show({ ...options, variant: 'danger' });\r\n }\r\n\r\n loading(options: SolarisToastOptions): SolarisToastRef {\r\n return this.show({ ...options, variant: 'loading' });\r\n }\r\n\r\n dismiss(id: string): void {\r\n this.removeEntry(id);\r\n }\r\n\r\n dismissAll(): void {\r\n this.entriesSignal.set([]);\r\n }\r\n\r\n updateConfig(patch: Partial<SolarisToastConfig>): void {\r\n this._configSignal.update((current) => ({ ...current, ...patch }));\r\n }\r\n\r\n update(id: string, patch: Partial<SolarisToastOptions>): void {\r\n this.updateEntry(id, patch);\r\n }\r\n\r\n private static readonly toastVariant: SolarisToastVariant | undefined;\r\n}\r\n\r\nfunction resolveAriaLive(\r\n variant: SolarisToastVariant,\r\n override?: 'polite' | 'assertive' | 'off',\r\n): 'polite' | 'assertive' | 'off' {\r\n if (override) return override;\r\n if (variant === 'warning' || variant === 'danger') return 'assertive';\r\n return 'polite';\r\n}\r\n\r\nfunction resolveRole(\r\n variant: SolarisToastVariant,\r\n override?: 'status' | 'alert',\r\n): 'status' | 'alert' {\r\n if (override) return override;\r\n if (variant === 'warning' || variant === 'danger') return 'alert';\r\n return 'status';\r\n}\r\n\r\nfunction resolveDefaultIcon(variant: SolarisToastVariant): string {\r\n switch (variant) {\r\n case 'neutral':\r\n return 'info';\r\n case 'info':\r\n return 'info';\r\n case 'success':\r\n return 'success';\r\n case 'warning':\r\n return 'warning';\r\n case 'danger':\r\n return 'danger';\r\n case 'loading':\r\n return 'loader';\r\n case 'custom':\r\n return 'info';\r\n }\r\n}\r\n\r\nfunction resolveText(\r\n text: string | undefined,\r\n key: string | undefined,\r\n defaultText: string | undefined,\r\n): string | undefined {\r\n if (text) return text;\r\n if (key) return key;\r\n return defaultText;\r\n}\r\n\r\nfunction resolveCloseLabel(\r\n label: string | undefined,\r\n key: string | undefined,\r\n): string {\r\n if (label) return label;\r\n if (key) return key;\r\n return 'Fechar';\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n inject,\r\n computed,\r\n effect,\r\n signal,\r\n ChangeDetectionStrategy,\r\n DestroyRef,\r\n HostListener,\r\n} from '@angular/core';\r\n\r\nimport type {\r\n SolarisToastAction,\r\n SolarisToastEntry,\r\n} from '../model/toast.types';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisButtonDirective } from '../../../actions/button';\r\nimport { SolarisToastService } from '../service/toast.service';\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\n@Component({\r\n selector: 'solaris-toast',\r\n standalone: true,\r\n imports: [SolarisIconComponent, SolarisButtonDirective],\r\n templateUrl: './toast.component.html',\r\n styleUrls: ['./toast.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.role]': 'hostRole()',\r\n '[attr.aria-live]': 'hostAriaLive()',\r\n '[attr.data-variant]': 'hostDataVariant()',\r\n '[attr.data-icon-size]': 'hostDataIconSize()',\r\n '[attr.data-appearance]': 'hostDataAppearance()',\r\n '[attr.data-media-shape]': 'hostDataMediaShape()',\r\n '[attr.data-actions-align]': 'hostDataActionsAlign()',\r\n '[attr.data-center-content]': 'centerContent()',\r\n '[attr.data-actions-no-desc]': 'hasActionsNoDescription()',\r\n },\r\n})\r\nexport class SolarisToastComponent {\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n private readonly toastService = inject(SolarisToastService);\r\n private readonly destroyRef = inject(DestroyRef);\r\n\r\n readonly entry = input.required<SolarisToastEntry>();\r\n readonly dismiss = output<string>();\r\n\r\n protected readonly hostDataVariant = computed(\r\n () => this.entry().resolvedVariant,\r\n );\r\n protected readonly hostDataAppearance = computed(\r\n () => this.entry().resolvedAppearance,\r\n );\r\n protected readonly hostRole = computed(() => this.entry().resolvedRole);\r\n protected readonly hostAriaLive = computed(() => {\r\n const live = this.entry().resolvedAriaLive;\r\n return live === 'off' ? null : live;\r\n });\r\n protected readonly hostDataIconSize = computed(\r\n () => this.entry().resolvedIconSize,\r\n );\r\n protected readonly hostDataMediaShape = computed(\r\n () => this.entry().resolvedMediaShape,\r\n );\r\n protected readonly hostDataActionsAlign = computed(\r\n () => this.entry().resolvedActionsAlign,\r\n );\r\n\r\n protected readonly expanded = signal(false);\r\n protected readonly isExpandable = computed(() => {\r\n const e = this.entry();\r\n return e.resolvedExpandable && !!e.resolvedDescription;\r\n });\r\n\r\n protected toggleExpanded(): void {\r\n this.expanded.update((v) => !v);\r\n }\r\n\r\n protected readonly expandButtonLabel = computed(() => {\r\n const e = this.entry();\r\n if (this.expanded()) {\r\n return (\r\n e.resolvedCollapseLabel || this.translate('solaris.toast.collapse')\r\n );\r\n }\r\n return e.resolvedExpandLabel || this.translate('solaris.toast.expand');\r\n });\r\n\r\n protected readonly isTruncated = computed(\r\n () => this.isExpandable() && !this.expanded(),\r\n );\r\n\r\n protected readonly countdownPercent = signal(100);\r\n protected readonly remainingSeconds = signal(0);\r\n\r\n private countdownTotalMs = 0;\r\n private countdownStartedAt = 0;\r\n private countdownRemainingMs = 0;\r\n private countdownStarted = false;\r\n private countdownIntervalId: ReturnType<typeof setInterval> | null = null;\r\n\r\n protected readonly isPaused = signal(false);\r\n private readonly isUserPaused = signal(false);\r\n\r\n protected readonly showProgressBar = computed(() => {\r\n const e = this.entry();\r\n if (e.resolvedProgress !== undefined && e.resolvedProgress !== null) {\r\n return true;\r\n }\r\n const showCountdown = this.shouldShowCountdown();\r\n return (\r\n showCountdown &&\r\n !e.resolvedPersistent &&\r\n e.resolvedDuration > 0 &&\r\n e.resolvedDuration < Infinity &&\r\n (e.resolvedCountdownMode === 'bar' || e.resolvedCountdownMode === 'both')\r\n );\r\n });\r\n\r\n protected readonly showCountdownText = computed(() => {\r\n const e = this.entry();\r\n const showCountdown = this.shouldShowCountdown();\r\n return (\r\n showCountdown &&\r\n !e.resolvedPersistent &&\r\n e.resolvedDuration > 0 &&\r\n e.resolvedDuration < Infinity &&\r\n (e.resolvedCountdownMode === 'text' || e.resolvedCountdownMode === 'both')\r\n );\r\n });\r\n\r\n private shouldShowCountdown(): boolean {\r\n const e = this.entry();\r\n return e.resolvedShowCountdown || e.resolvedShowProgress;\r\n }\r\n\r\n protected readonly progressValue = computed(() => {\r\n const e = this.entry();\r\n if (e.resolvedProgress !== undefined && e.resolvedProgress !== null) {\r\n return e.resolvedProgress;\r\n }\r\n return this.countdownPercent();\r\n });\r\n\r\n protected readonly isProcessProgress = computed(() => {\r\n const e = this.entry();\r\n return e.resolvedProgress !== undefined && e.resolvedProgress !== null;\r\n });\r\n\r\n protected readonly countdownText = computed(() => {\r\n const secs = this.remainingSeconds();\r\n if (secs <= 0) return '';\r\n return this.translate('solaris.toast.closesIn', { seconds: String(secs) });\r\n });\r\n\r\n protected readonly showTitle = computed(() => !!this.entry().resolvedTitle);\r\n protected readonly showDescription = computed(\r\n () => !!this.entry().resolvedDescription,\r\n );\r\n protected readonly showIcon = computed(() => {\r\n const e = this.entry();\r\n return e.resolvedIcon !== undefined && e.resolvedIcon !== null;\r\n });\r\n protected readonly showActions = computed(() => {\r\n const actions = this.entry().resolvedActions;\r\n return actions && actions.length > 0;\r\n });\r\n protected readonly showClose = computed(() => this.entry().resolvedCloseable);\r\n\r\n protected readonly centerContent = computed(\r\n () => !this.showDescription() && !this.showActions(),\r\n );\r\n\r\n protected readonly hasActionsNoDescription = computed(\r\n () => this.showActions() && !this.showDescription(),\r\n );\r\n\r\n constructor() {\r\n effect(() => {\r\n const e = this.entry();\r\n if (\r\n e.resolvedPersistent ||\r\n e.resolvedDuration <= 0 ||\r\n e.resolvedDuration >= Infinity\r\n ) {\r\n this.stopCountdown();\r\n } else {\r\n this.startCountdown(e.resolvedDuration);\r\n }\r\n });\r\n\r\n effect(() => {\r\n this.expanded.set(this.entry().resolvedDefaultExpanded);\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.stopCountdown();\r\n });\r\n }\r\n\r\n private startCountdown(duration: number): void {\r\n this.stopCountdown();\r\n if (duration <= 0 || duration >= Infinity) return;\r\n\r\n this.countdownStarted = true;\r\n this.countdownTotalMs = duration;\r\n this.countdownStartedAt = Date.now();\r\n this.countdownRemainingMs = duration;\r\n this.countdownPercent.set(100);\r\n this.remainingSeconds.set(Math.ceil(duration / 1000));\r\n\r\n this.countdownIntervalId = setInterval(() => this.tickCountdown(), 50);\r\n }\r\n\r\n private stopCountdown(): void {\r\n this.clearCountdownInterval();\r\n this.countdownStarted = false;\r\n }\r\n\r\n private clearCountdownInterval(): void {\r\n if (this.countdownIntervalId !== null) {\r\n clearInterval(this.countdownIntervalId);\r\n this.countdownIntervalId = null;\r\n }\r\n }\r\n\r\n private tickCountdown(): void {\r\n if (this.isPaused()) return;\r\n\r\n const elapsed = Date.now() - this.countdownStartedAt;\r\n const remaining = Math.max(0, this.countdownRemainingMs - elapsed);\r\n\r\n this.countdownPercent.set((remaining / this.countdownTotalMs) * 100);\r\n this.remainingSeconds.set(Math.ceil(remaining / 1000));\r\n\r\n if (remaining <= 0) {\r\n this.stopCountdown();\r\n this.handleDismiss();\r\n }\r\n }\r\n\r\n private captureCountdownRemaining(): void {\r\n if (!this.countdownStarted) return;\r\n const elapsed = Date.now() - this.countdownStartedAt;\r\n this.countdownRemainingMs = Math.max(\r\n 0,\r\n this.countdownRemainingMs - elapsed,\r\n );\r\n this.clearCountdownInterval();\r\n }\r\n\r\n protected pause(): void {\r\n if (!this.countdownStarted || this.isPaused()) return;\r\n this.isPaused.set(true);\r\n this.captureCountdownRemaining();\r\n }\r\n\r\n protected resume(): void {\r\n if (!this.countdownStarted || !this.isPaused()) return;\r\n if (this.isUserPaused()) return;\r\n this.isPaused.set(false);\r\n this.countdownStartedAt = Date.now();\r\n this.countdownIntervalId = setInterval(() => this.tickCountdown(), 50);\r\n }\r\n\r\n protected togglePause(): void {\r\n if (this.isUserPaused()) {\r\n this.isUserPaused.set(false);\r\n this.resume();\r\n } else {\r\n this.isUserPaused.set(true);\r\n this.pause();\r\n }\r\n }\r\n\r\n protected readonly pauseButtonLabel = computed(() => {\r\n if (this.isUserPaused()) {\r\n return this.translate('solaris.toast.continue');\r\n }\r\n return this.translate('solaris.toast.pause');\r\n });\r\n\r\n @HostListener('mouseenter')\r\n protected onMouseEnter(): void {\r\n if (this.toastService.configSignal().pauseOnHover) {\r\n this.pause();\r\n }\r\n }\r\n\r\n @HostListener('mouseleave')\r\n protected onMouseLeave(): void {\r\n if (this.toastService.configSignal().pauseOnHover) {\r\n this.resume();\r\n }\r\n }\r\n\r\n @HostListener('focusin')\r\n protected onFocusIn(): void {\r\n if (this.toastService.configSignal().pauseOnFocus) {\r\n this.pause();\r\n }\r\n }\r\n\r\n @HostListener('focusout')\r\n protected onFocusOut(): void {\r\n if (this.toastService.configSignal().pauseOnFocus) {\r\n this.resume();\r\n }\r\n }\r\n\r\n protected handleDismiss(): void {\r\n this.stopCountdown();\r\n this.dismiss.emit(this.entry().id);\r\n }\r\n\r\n protected handleActionClick(action: SolarisToastAction): void {\r\n const ref = {\r\n id: this.entry().id,\r\n dismiss: () => this.handleDismiss(),\r\n update: (patch: never) => {\r\n this.toastService.update(this.entry().id, patch);\r\n },\r\n };\r\n action.action(ref);\r\n if (action.closeOnClick) {\r\n this.handleDismiss();\r\n }\r\n }\r\n\r\n protected translate(key: string, params?: Record<string, string>): string {\r\n if (this.translateService) {\r\n return this.translateService.translate(key, params);\r\n }\r\n\r\n return key;\r\n }\r\n}\r\n","<div class=\"solaris-toast__root\">\r\n @if (showIcon()) {\r\n <div class=\"solaris-toast__media\">\r\n <div class=\"solaris-toast__icon\">\r\n <solaris-icon\r\n [name]=\"entry().resolvedIcon\"\r\n [decorative]=\"entry().options.iconDecorative !== false\"\r\n />\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-toast__content\">\r\n @if (showTitle()) {\r\n <div class=\"solaris-toast__title\">{{ entry().resolvedTitle }}</div>\r\n }\r\n\r\n @if (showDescription()) {\r\n <div\r\n class=\"solaris-toast__description\"\r\n [class.solaris-toast__description--truncated]=\"isTruncated()\"\r\n [style.--solaris-toast-max-lines]=\"entry().resolvedMaxCollapsedLines\"\r\n >\r\n {{ entry().resolvedDescription }}\r\n </div>\r\n }\r\n\r\n @if (showActions()) {\r\n <div class=\"solaris-toast__actions\">\r\n @for (action of entry().resolvedActions; track $index) {\r\n <button\r\n solaris-button\r\n [appearance]=\"action.appearance ?? 'ghost'\"\r\n [color]=\"action.color ?? 'neutral'\"\r\n size=\"sm\"\r\n [disabled]=\"action.disabled ?? false\"\r\n (click)=\"handleActionClick(action)\"\r\n >\r\n {{ action.label }}\r\n </button>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-toast__trailing\">\r\n @if (isExpandable()) {\r\n <button\r\n type=\"button\"\r\n class=\"solaris-toast__trailing-btn\"\r\n [attr.aria-label]=\"expandButtonLabel()\"\r\n [attr.aria-expanded]=\"expanded()\"\r\n (click)=\"toggleExpanded()\"\r\n >\r\n <solaris-icon\r\n class=\"solaris-toast__expand-icon\"\r\n [class.solaris-toast__expand-icon--expanded]=\"expanded()\"\r\n name=\"chevron-down\"\r\n [decorative]=\"true\"\r\n />\r\n </button>\r\n }\r\n\r\n @if (showClose()) {\r\n <button\r\n type=\"button\"\r\n class=\"solaris-toast__trailing-btn\"\r\n [attr.aria-label]=\"entry().resolvedCloseLabel\"\r\n (click)=\"handleDismiss()\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (showProgressBar()) {\r\n <div\r\n class=\"solaris-toast__progress\"\r\n role=\"progressbar\"\r\n [attr.aria-valuenow]=\"progressValue()\"\r\n [attr.aria-valuemin]=\"0\"\r\n [attr.aria-valuemax]=\"100\"\r\n [attr.aria-label]=\"\r\n isProcessProgress()\r\n ? translate('solaris.toast.progress')\r\n : translate('solaris.toast.remaining')\r\n \"\r\n >\r\n <div\r\n class=\"solaris-toast__progress-bar\"\r\n [style.width.%]=\"progressValue()\"\r\n ></div>\r\n </div>\r\n}\r\n\r\n@if (showCountdownText()) {\r\n <div class=\"solaris-toast__countdown-text\">\r\n <span class=\"solaris-toast__countdown-message\">{{ countdownText() }}</span>\r\n <button\r\n type=\"button\"\r\n class=\"solaris-toast__countdown-toggle\"\r\n (click)=\"togglePause()\"\r\n >\r\n {{ pauseButtonLabel() }}\r\n </button>\r\n </div>\r\n}\r\n","import {\r\n Component,\r\n inject,\r\n input,\r\n computed,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport { SolarisToastComponent } from '../component/toast.component';\r\nimport type { SolarisToastPosition } from '../model/toast.types';\r\nimport { SolarisToastService } from '../service/toast.service';\r\n\r\n@Component({\r\n selector: 'solaris-toast-container',\r\n standalone: true,\r\n imports: [SolarisToastComponent],\r\n templateUrl: './toast-container.component.html',\r\n styleUrls: ['./toast-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-toast-container',\r\n '[attr.data-position]': 'position()',\r\n },\r\n})\r\nexport class SolarisToastContainerComponent {\r\n private readonly toastService = inject(SolarisToastService);\r\n\r\n readonly position = input<SolarisToastPosition>('bottom-center');\r\n\r\n readonly entries = computed(() =>\r\n this.toastService\r\n .entries()\r\n .filter((e) => e.resolvedPosition === this.position()),\r\n );\r\n\r\n protected dismiss(id: string): void {\r\n this.toastService.dismiss(id);\r\n }\r\n}\r\n","@for (entry of entries(); track entry.id) {\r\n <solaris-toast [entry]=\"entry\" (dismiss)=\"dismiss($event)\" />\r\n}\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport type {\r\n SolarisToastConfig,\r\n SolarisToastSetup,\r\n} from '../model/toast.types';\r\nimport {\r\n SOLARIS_TOAST_CONFIG,\r\n SOLARIS_TOAST_DEFAULT_CONFIG,\r\n SOLARIS_TOAST_CONTAINER,\r\n} from '../token/toast.tokens';\r\nimport { SolarisToastService } from '../service/toast.service';\r\n\r\nexport function provideSolarisToast(\r\n config?: Partial<SolarisToastConfig>,\r\n setup?: SolarisToastSetup,\r\n): Provider[] {\r\n const merged: SolarisToastConfig = {\r\n ...SOLARIS_TOAST_DEFAULT_CONFIG,\r\n ...config,\r\n };\r\n\r\n return [\r\n SolarisToastService,\r\n { provide: SOLARIS_TOAST_CONFIG, useValue: merged },\r\n {\r\n provide: SOLARIS_TOAST_CONTAINER,\r\n useValue: setup?.autoContainer ?? true,\r\n },\r\n ];\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type { SolarisDialogRef } from '../service/dialog-ref';\r\n\r\nexport const SOLARIS_DIALOG_DATA = new InjectionToken<unknown>(\r\n 'SolarisDialogData',\r\n);\r\n\r\nexport const SOLARIS_DIALOG_REF = new InjectionToken<SolarisDialogRef<unknown>>(\r\n 'SolarisDialogRef',\r\n);\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-content',\r\n standalone: true,\r\n templateUrl: './dialog-content.component.html',\r\n styleUrls: ['./dialog-content.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-dialog-content',\r\n },\r\n})\r\nexport class SolarisDialogContentComponent {}\r\n","<div class=\"solaris-dialog-content__inner\">\r\n <ng-content />\r\n</div>\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n inject,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { SolarisButtonDirective } from '../../../actions/button';\r\nimport { SolarisDialogRef } from '../service/dialog-ref';\r\nimport { SOLARIS_DIALOG_REF } from '../token/dialog-data.token';\r\nimport type {\r\n SolarisDialogAction,\r\n SolarisDialogActionsAlign,\r\n SolarisDialogActionsStack,\r\n} from '../model/dialog.types';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-actions',\r\n standalone: true,\r\n imports: [SolarisButtonDirective],\r\n templateUrl: './dialog-actions.component.html',\r\n styleUrls: ['./dialog-actions.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.data-align]': 'align()',\r\n '[attr.data-stack]': 'stack()',\r\n class: 'solaris-dialog-actions',\r\n },\r\n})\r\nexport class SolarisDialogActionsComponent<TResult = unknown> {\r\n private readonly dialogRef = inject(\r\n SOLARIS_DIALOG_REF,\r\n ) as SolarisDialogRef<TResult>;\r\n\r\n readonly actions = input<SolarisDialogAction<TResult>[]>([]);\r\n readonly align = input<SolarisDialogActionsAlign>('end');\r\n readonly stack = input<SolarisDialogActionsStack>('auto');\r\n\r\n readonly actionExecuted = output<SolarisDialogAction<TResult>>();\r\n\r\n protected handleAction(action: SolarisDialogAction<TResult>): void {\r\n const executeAction = (): void => {\r\n if (action.action) {\r\n const result = action.action(this.dialogRef);\r\n if (result instanceof Promise) {\r\n void result.catch(() => undefined);\r\n }\r\n }\r\n\r\n if (action.close) {\r\n this.dialogRef.close(action.result);\r\n }\r\n };\r\n\r\n executeAction();\r\n this.actionExecuted.emit(action);\r\n }\r\n}\r\n","<div class=\"solaris-dialog-actions__inner\">\r\n @for (action of actions(); track $index) {\r\n <button\r\n type=\"button\"\r\n solaris-button\r\n (click)=\"handleAction(action)\"\r\n [color]=\"action.color ?? 'neutral'\"\r\n [disabled]=\"action.disabled ?? false\"\r\n [appearance]=\"action.appearance ?? 'solid'\"\r\n >\r\n {{ action.label }}\r\n </button>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n input,\r\n inject,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport { SOLARIS_DIALOG_REF } from '../token/dialog-data.token';\r\nimport { SolarisDialogRef } from '../service/dialog-ref';\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-header',\r\n standalone: true,\r\n imports: [SolarisIconComponent],\r\n templateUrl: './dialog-header.component.html',\r\n styleUrls: ['./dialog-header.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-dialog-header',\r\n '[attr.data-variant]': 'variant()',\r\n },\r\n})\r\nexport class SolarisDialogHeaderComponent {\r\n private readonly dialogRef = inject(SOLARIS_DIALOG_REF) as SolarisDialogRef;\r\n\r\n readonly icon = input<string>();\r\n readonly title = input<string>();\r\n readonly description = input<string>();\r\n readonly closeable = input<boolean>(true);\r\n readonly closeLabel = input<string>('Close');\r\n readonly iconDecorative = input<boolean>(false);\r\n readonly size = input<string>('md');\r\n readonly variant = input<string>('neutral');\r\n\r\n protected readonly showCloseButton = () => this.closeable();\r\n protected readonly hasTitle = () => !!this.title();\r\n protected readonly hasDescription = () => !!this.description();\r\n protected readonly hasIcon = () => !!this.icon();\r\n\r\n protected close(): void {\r\n this.dialogRef.close();\r\n }\r\n}\r\n","<div class=\"solaris-dialog-header__start\">\r\n @if (hasIcon()) {\r\n <div class=\"solaris-dialog-header__icon\">\r\n <solaris-icon [name]=\"icon()!\" [decorative]=\"iconDecorative()\" />\r\n </div>\r\n }\r\n\r\n <div class=\"solaris-dialog-header__text\">\r\n @if (hasTitle()) {\r\n <h2 class=\"solaris-dialog-header__title\" id=\"solaris-dialog-title\">\r\n {{ title() }}\r\n </h2>\r\n }\r\n\r\n @if (hasDescription()) {\r\n <p\r\n class=\"solaris-dialog-header__description\"\r\n id=\"solaris-dialog-description\"\r\n >\r\n {{ description() }}\r\n </p>\r\n }\r\n </div>\r\n</div>\r\n\r\n@if (showCloseButton()) {\r\n <div class=\"solaris-dialog-header__end\">\r\n <button\r\n type=\"button\"\r\n class=\"solaris-dialog-header__close\"\r\n [attr.data-size]=\"size()\"\r\n [attr.aria-label]=\"closeLabel()\"\r\n (click)=\"close()\"\r\n >\r\n <solaris-icon name=\"x\" [decorative]=\"true\" />\r\n </button>\r\n </div>\r\n}\r\n","import {\r\n Component,\r\n input,\r\n ChangeDetectionStrategy,\r\n computed,\r\n} from '@angular/core';\r\n\r\nimport { SolarisDialogContentComponent } from '../components/dialog-content.component';\r\nimport { SolarisDialogActionsComponent } from '../components/dialog-actions.component';\r\nimport { SolarisDialogHeaderComponent } from '../components/dialog-header.component';\r\nimport type {\r\n SolarisDialogOptions,\r\n SolarisDialogButtonColor,\r\n} from '../model/dialog.types';\r\n\r\n@Component({\r\n selector: 'solaris-dialog',\r\n standalone: true,\r\n imports: [\r\n SolarisDialogHeaderComponent,\r\n SolarisDialogContentComponent,\r\n SolarisDialogActionsComponent,\r\n ],\r\n templateUrl: './dialog.component.html',\r\n styleUrls: ['./dialog.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-dialog',\r\n '[attr.role]': 'null',\r\n },\r\n})\r\nexport class SolarisDialogComponent<TResult = unknown> {\r\n readonly options = input.required<SolarisDialogOptions<TResult>>();\r\n\r\n protected readonly hasActions = computed(() => {\r\n const actions = this.options().actions;\r\n return actions && actions.length > 0;\r\n });\r\n protected readonly actionsAlign = computed(\r\n () => this.options().actionsAlign ?? 'end',\r\n );\r\n protected readonly actionsStack = computed(\r\n () => this.options().actionsStack ?? 'auto',\r\n );\r\n protected readonly iconDecorative = computed(\r\n () => this.options().iconDecorative ?? false,\r\n );\r\n protected readonly closeable = computed(\r\n () => this.options().closeable ?? true,\r\n );\r\n protected readonly closeLabel = computed(\r\n () => this.options().closeLabel ?? 'Close',\r\n );\r\n protected readonly size = computed(() => this.options().size ?? 'md');\r\n protected readonly variant = computed(\r\n () => this.options().variant ?? 'neutral',\r\n );\r\n protected readonly description = computed(() => this.options().description);\r\n protected readonly title = computed(() => this.options().title);\r\n protected readonly icon = computed(() => this.options().icon);\r\n\r\n protected readonly actions = computed(() => {\r\n const variant = this.variant();\r\n return (this.options().actions ?? []).map((action) => {\r\n const appearance = action.appearance ?? 'solid';\r\n const hasExplicitColor = action.color !== undefined;\r\n const color = hasExplicitColor\r\n ? action.color\r\n : appearance === 'solid'\r\n ? variant\r\n : undefined;\r\n return { ...action, color };\r\n });\r\n });\r\n}\r\n","<solaris-dialog-header\r\n [icon]=\"icon()\"\r\n [iconDecorative]=\"iconDecorative()\"\r\n [title]=\"title()\"\r\n [description]=\"description()\"\r\n [closeable]=\"closeable()\"\r\n [closeLabel]=\"closeLabel()\"\r\n [size]=\"size()\"\r\n [variant]=\"variant()\"\r\n/>\r\n\r\n@if (description() && !hasActions()) {\r\n <solaris-dialog-content>\r\n <p class=\"solaris-dialog__description-text\">{{ description() }}</p>\r\n </solaris-dialog-content>\r\n}\r\n\r\n@if (hasActions()) {\r\n <div class=\"solaris-dialog__body\"></div>\r\n <solaris-dialog-actions\r\n [actions]=\"actions()\"\r\n [align]=\"actionsAlign()\"\r\n [stack]=\"actionsStack()\"\r\n />\r\n}\r\n","import {\r\n Component,\r\n input,\r\n effect,\r\n signal,\r\n ViewChild,\r\n ViewContainerRef,\r\n inject,\r\n HostListener,\r\n ChangeDetectionStrategy,\r\n type Type,\r\n type ComponentRef,\r\n Injector,\r\n type Provider,\r\n} from '@angular/core';\r\nimport { CdkTrapFocus } from '@angular/cdk/a11y';\r\n\r\nimport {\r\n SOLARIS_DIALOG_REF,\r\n SOLARIS_DIALOG_DATA,\r\n} from '../token/dialog-data.token';\r\nimport type {\r\n SolarisDialogOptions,\r\n SolarisDialogComponentConfig,\r\n} from '../model/dialog.types';\r\nimport { SolarisDialogComponent } from '../component/dialog.component';\r\nimport { SolarisDialogRef } from '../service/dialog-ref';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-container',\r\n standalone: true,\r\n imports: [CdkTrapFocus, SolarisDialogComponent],\r\n templateUrl: './dialog-container.component.html',\r\n styleUrls: ['./dialog-container.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.data-size]': 'hostSize',\r\n class: 'solaris-dialog-container',\r\n '[attr.data-variant]': 'hostVariant',\r\n '[attr.data-appearance]': 'hostAppearance',\r\n },\r\n})\r\nexport class SolarisDialogContainerComponent {\r\n private readonly dialogRef = inject(SOLARIS_DIALOG_REF) as SolarisDialogRef;\r\n private readonly injector = inject(Injector);\r\n\r\n readonly externalComponent = input<Type<unknown> | null>(null);\r\n readonly simpleOptions = input<SolarisDialogOptions | null>(null);\r\n readonly externalComponentConfig = input<SolarisDialogComponentConfig | null>(\r\n null,\r\n );\r\n\r\n @ViewChild('componentHost', { read: ViewContainerRef })\r\n set componentHostRef(vcr: ViewContainerRef | undefined) {\r\n this._componentHost.set(vcr);\r\n }\r\n\r\n private readonly _componentHost = signal<ViewContainerRef | undefined>(\r\n undefined,\r\n );\r\n\r\n private componentRef: ComponentRef<unknown> | null = null;\r\n\r\n protected get hostAppearance(): string {\r\n if (this.simpleOptions())\r\n return this.simpleOptions()?.appearance ?? 'surface';\r\n return this.externalComponentConfig()?.appearance ?? 'surface';\r\n }\r\n\r\n protected get hostSize(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.size ?? 'md';\r\n return this.externalComponentConfig()?.size ?? 'md';\r\n }\r\n\r\n protected get hostVariant(): string | undefined | null {\r\n if (this.simpleOptions()) return this.simpleOptions()?.variant ?? 'neutral';\r\n return null;\r\n }\r\n\r\n protected get panelWidth(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.width ?? '';\r\n return this.externalComponentConfig()?.width ?? '';\r\n }\r\n\r\n protected get panelHeight(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.height ?? '';\r\n return this.externalComponentConfig()?.height ?? '';\r\n }\r\n\r\n protected get panelMinWidth(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.minWidth ?? '';\r\n return this.externalComponentConfig()?.minWidth ?? '';\r\n }\r\n\r\n protected get panelMaxWidth(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.maxWidth ?? '';\r\n return this.externalComponentConfig()?.maxWidth ?? '';\r\n }\r\n\r\n protected get panelMinHeight(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.minHeight ?? '';\r\n return this.externalComponentConfig()?.minHeight ?? '';\r\n }\r\n\r\n protected get panelMaxHeight(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.maxHeight ?? '';\r\n return this.externalComponentConfig()?.maxHeight ?? '';\r\n }\r\n\r\n protected get isSimpleMode(): boolean {\r\n return this.simpleOptions() !== null;\r\n }\r\n\r\n protected get closeOnBackdrop(): boolean {\r\n if (this.simpleOptions()) {\r\n return this.simpleOptions()?.closeOnBackdropClick ?? true;\r\n }\r\n return this.externalComponentConfig()?.closeOnBackdropClick ?? true;\r\n }\r\n\r\n protected get closeOnEscapeEnabled(): boolean {\r\n if (this.simpleOptions()) {\r\n return this.simpleOptions()?.closeOnEscape ?? true;\r\n }\r\n return this.externalComponentConfig()?.closeOnEscape ?? true;\r\n }\r\n\r\n protected get dialogRole(): string {\r\n if (this.simpleOptions()) return this.simpleOptions()?.role ?? 'dialog';\r\n return this.externalComponentConfig()?.role ?? 'dialog';\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n const comp = this.externalComponent();\r\n const host = this._componentHost();\r\n if (comp && host) {\r\n this.createComponentInHost(comp);\r\n }\r\n });\r\n }\r\n\r\n private createComponentInHost(compType: Type<unknown>): void {\r\n const host = this._componentHost();\r\n if (!host) return;\r\n host.clear();\r\n\r\n const providers: Provider[] = [\r\n { provide: SOLARIS_DIALOG_REF, useValue: this.dialogRef },\r\n ];\r\n const data = this.externalComponentConfig()?.data;\r\n if (data !== undefined) {\r\n providers.push({ provide: SOLARIS_DIALOG_DATA, useValue: data });\r\n }\r\n\r\n const injector = Injector.create({\r\n providers,\r\n parent: this.injector,\r\n });\r\n\r\n this.componentRef = host.createComponent(compType, {\r\n injector,\r\n });\r\n\r\n this.dialogRef.componentInstance = this.componentRef.instance;\r\n }\r\n\r\n @HostListener('document:keydown.escape')\r\n protected onEscapePress(): void {\r\n if (this.closeOnEscapeEnabled) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n\r\n protected onBackdropClick(event: Event): void {\r\n const target = event.target as HTMLElement;\r\n if (\r\n this.closeOnBackdrop &&\r\n target.classList.contains('solaris-dialog-backdrop')\r\n ) {\r\n this.dialogRef.close();\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"solaris-dialog-backdrop\"\r\n tabindex=\"-1\"\r\n (click)=\"onBackdropClick($event)\"\r\n (keydown.escape)=\"onBackdropClick($event)\"\r\n>\r\n <div\r\n cdkTrapFocus\r\n cdkTrapFocusAutoCapture\r\n [attr.aria-modal]=\"true\"\r\n [attr.role]=\"dialogRole\"\r\n [style.width]=\"panelWidth\"\r\n class=\"solaris-dialog-panel\"\r\n [style.height]=\"panelHeight\"\r\n [style.min-width]=\"panelMinWidth\"\r\n [style.max-width]=\"panelMaxWidth\"\r\n [style.min-height]=\"panelMinHeight\"\r\n [style.max-height]=\"panelMaxHeight\"\r\n >\r\n @if (isSimpleMode) {\r\n <solaris-dialog [options]=\"simpleOptions()!\" />\r\n } @else {\r\n <ng-template #componentHost></ng-template>\r\n }\r\n </div>\r\n</div>\r\n","import { Subject, Observable } from 'rxjs';\r\n\r\nexport class SolarisDialogRef<TResult = unknown> {\r\n readonly id: string;\r\n private readonly afterClosedSubject = new Subject<TResult | undefined>();\r\n private _componentInstance: unknown = null;\r\n\r\n constructor(id: string) {\r\n this.id = id;\r\n }\r\n\r\n get componentInstance(): unknown {\r\n return this._componentInstance;\r\n }\r\n\r\n set componentInstance(value: unknown) {\r\n this._componentInstance = value;\r\n }\r\n\r\n close(result?: TResult): void {\r\n this.afterClosedSubject.next(result);\r\n this.afterClosedSubject.complete();\r\n }\r\n\r\n afterClosed(): Observable<TResult | undefined> {\r\n return this.afterClosedSubject.asObservable();\r\n }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type { SolarisDialogConfig } from '../model/dialog.types';\r\n\r\nexport const SOLARIS_DIALOG_CONFIG = new InjectionToken<SolarisDialogConfig>(\r\n 'SolarisDialogConfig',\r\n);\r\n\r\nexport const SOLARIS_DIALOG_DEFAULT_CONFIG: SolarisDialogConfig = {\r\n appearance: 'surface',\r\n size: 'md',\r\n closeable: true,\r\n closeOnEscape: true,\r\n closeOnBackdropClick: true,\r\n autoFocus: 'first-tabbable',\r\n restoreFocus: true,\r\n role: 'dialog',\r\n actionsAlign: 'end',\r\n actionsStack: 'auto',\r\n};\r\n","import {\r\n Injectable,\r\n inject,\r\n Injector,\r\n type Provider,\r\n Type,\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { SolarisDialogContainerComponent } from '../container/dialog-container.component';\r\nimport { SolarisDialogRef } from './dialog-ref';\r\nimport {\r\n SOLARIS_DIALOG_REF,\r\n SOLARIS_DIALOG_DATA,\r\n} from '../token/dialog-data.token';\r\nimport {\r\n SOLARIS_DIALOG_CONFIG,\r\n SOLARIS_DIALOG_DEFAULT_CONFIG,\r\n} from '../token/dialog.tokens';\r\nimport type {\r\n SolarisDialogOptions,\r\n SolarisDialogComponentConfig,\r\n SolarisDialogConfig,\r\n} from '../model/dialog.types';\r\n\r\nlet nextDialogId = 0;\r\n\r\n@Injectable()\r\nexport class SolarisDialogService {\r\n private readonly injector = inject(Injector);\r\n private readonly overlay = inject(Overlay);\r\n\r\n private readonly config: SolarisDialogConfig;\r\n\r\n private readonly openDialogs = new Set<{\r\n ref: SolarisDialogRef;\r\n overlayRef: OverlayRef;\r\n }>();\r\n\r\n constructor() {\r\n const userConfig = inject(SOLARIS_DIALOG_CONFIG, {\r\n optional: true,\r\n }) as SolarisDialogConfig | null;\r\n\r\n this.config = {\r\n ...SOLARIS_DIALOG_DEFAULT_CONFIG,\r\n ...userConfig,\r\n };\r\n }\r\n\r\n open<TResult = unknown>(\r\n options: SolarisDialogOptions<TResult>,\r\n ): SolarisDialogRef<TResult> {\r\n const id = `solaris-dialog-${++nextDialogId}`;\r\n const ref = new SolarisDialogRef<TResult>(id);\r\n const mergedOptions = this.resolveOptions(options);\r\n\r\n const overlayRef = this.createOverlay();\r\n const injector = this.createInjector(ref, undefined);\r\n\r\n const portal = new ComponentPortal(\r\n SolarisDialogContainerComponent,\r\n null,\r\n injector,\r\n );\r\n\r\n const componentRef = overlayRef.attach(portal);\r\n componentRef.setInput('simpleOptions', mergedOptions);\r\n\r\n this.trackDialog(ref as unknown as SolarisDialogRef, overlayRef);\r\n\r\n return ref;\r\n }\r\n\r\n openComponent<TComponent, TResult = unknown, TData = unknown>(\r\n component: Type<TComponent>,\r\n config?: SolarisDialogComponentConfig<TData>,\r\n ): SolarisDialogRef<TResult> {\r\n const id = `solaris-dialog-${++nextDialogId}`;\r\n const ref = new SolarisDialogRef<TResult>(id);\r\n const data = config?.data as TData | undefined;\r\n\r\n const overlayRef = this.createOverlay();\r\n const injector = this.createInjector(ref, data);\r\n\r\n const portal = new ComponentPortal(\r\n SolarisDialogContainerComponent,\r\n null,\r\n injector,\r\n );\r\n\r\n const componentRef = overlayRef.attach(portal);\r\n componentRef.setInput('externalComponent', component);\r\n componentRef.setInput('externalComponentConfig', config ?? {});\r\n\r\n this.trackDialog(ref as unknown as SolarisDialogRef, overlayRef);\r\n\r\n return ref;\r\n }\r\n\r\n private createOverlay(): OverlayRef {\r\n return this.overlay.create({\r\n hasBackdrop: false,\r\n positionStrategy: this.overlay\r\n .position()\r\n .global()\r\n .centerHorizontally()\r\n .centerVertically(),\r\n scrollStrategy: this.overlay.scrollStrategies.block(),\r\n panelClass: 'solaris-dialog-overlay-panel',\r\n });\r\n }\r\n\r\n private createInjector<T>(ref: SolarisDialogRef<T>, data: unknown): Injector {\r\n const providers: Provider[] = [\r\n { provide: SOLARIS_DIALOG_REF, useValue: ref },\r\n ];\r\n\r\n if (data !== undefined) {\r\n providers.push({ provide: SOLARIS_DIALOG_DATA, useValue: data });\r\n }\r\n\r\n return Injector.create({\r\n providers,\r\n parent: this.injector,\r\n });\r\n }\r\n\r\n private trackDialog(ref: SolarisDialogRef, overlayRef: OverlayRef): void {\r\n const entry = { ref, overlayRef };\r\n this.openDialogs.add(entry);\r\n\r\n ref.afterClosed().subscribe(() => {\r\n overlayRef.detach();\r\n overlayRef.dispose();\r\n this.openDialogs.delete(entry);\r\n });\r\n }\r\n\r\n private resolveOptions<T>(\r\n options: SolarisDialogOptions<T>,\r\n ): SolarisDialogOptions<T> {\r\n return {\r\n variant: options.variant ?? 'neutral',\r\n appearance: options.appearance ?? this.config.appearance,\r\n size: options.size ?? this.config.size,\r\n closeable: options.closeable ?? this.config.closeable ?? true,\r\n closeOnEscape: options.closeOnEscape ?? this.config.closeOnEscape ?? true,\r\n closeOnBackdropClick:\r\n options.closeOnBackdropClick ??\r\n this.config.closeOnBackdropClick ??\r\n true,\r\n autoFocus: options.autoFocus ?? this.config.autoFocus,\r\n restoreFocus: options.restoreFocus ?? this.config.restoreFocus ?? true,\r\n role: options.role ?? this.config.role,\r\n actionsAlign: options.actionsAlign ?? this.config.actionsAlign ?? 'end',\r\n actionsStack: options.actionsStack ?? this.config.actionsStack ?? 'auto',\r\n ...options,\r\n };\r\n }\r\n\r\n closeAll(): void {\r\n for (const entry of this.openDialogs) {\r\n entry.ref.close();\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n TemplateRef,\r\n ViewChild,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-step',\r\n standalone: true,\r\n template: '<ng-template><ng-content /></ng-template>',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class SolarisDialogStepComponent {\r\n @ViewChild(TemplateRef, { static: true })\r\n templateRef!: TemplateRef<unknown>;\r\n}\r\n","import {\r\n Component,\r\n input,\r\n model,\r\n ContentChildren,\r\n QueryList,\r\n AfterContentInit,\r\n effect,\r\n signal,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisDialogStepComponent } from './dialog-step.component';\r\n\r\n@Component({\r\n selector: 'solaris-dialog-flow',\r\n standalone: true,\r\n imports: [NgTemplateOutlet],\r\n templateUrl: './dialog-flow.component.html',\r\n styleUrls: ['./dialog-flow.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-dialog-flow',\r\n '[attr.data-transition]': 'transition()',\r\n '[attr.data-direction]': 'animationDirection()',\r\n },\r\n})\r\nexport class SolarisDialogFlowComponent implements AfterContentInit {\r\n readonly activeIndex = model<number>(0);\r\n readonly transition = input<'slide' | 'fade' | 'none'>('slide');\r\n\r\n @ContentChildren(SolarisDialogStepComponent)\r\n steps?: QueryList<SolarisDialogStepComponent>;\r\n\r\n protected readonly stepTemplates = signal<\r\n {\r\n template: import('@angular/core').TemplateRef<unknown>;\r\n index: number;\r\n }[]\r\n >([]);\r\n\r\n protected readonly animationDirection = signal<'forward' | 'backward' | null>(\r\n null,\r\n );\r\n\r\n private previousIndex = 0;\r\n private hasNavigated = false;\r\n\r\n constructor() {\r\n effect(() => {\r\n const current = this.activeIndex();\r\n if (this.hasNavigated) {\r\n if (current > this.previousIndex) {\r\n this.animationDirection.set('forward');\r\n } else if (current < this.previousIndex) {\r\n this.animationDirection.set('backward');\r\n }\r\n }\r\n this.previousIndex = current;\r\n this.hasNavigated = true;\r\n });\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n if (this.steps) {\r\n this.stepTemplates.set(\r\n this.steps.toArray().map((s, i) => ({\r\n template: s.templateRef,\r\n index: i,\r\n })),\r\n );\r\n\r\n this.steps.changes.subscribe(() => {\r\n this.stepTemplates.set(\r\n (this.steps?.toArray() ?? []).map((s, i) => ({\r\n template: s.templateRef,\r\n index: i,\r\n })),\r\n );\r\n });\r\n }\r\n }\r\n}\r\n","<div class=\"solaris-dialog-flow__stage\">\r\n <div class=\"solaris-dialog-flow__steps\">\r\n @for (step of stepTemplates(); track step.index) {\r\n <div\r\n class=\"solaris-dialog-flow__step\"\r\n [class.solaris-dialog-flow__step--active]=\"step.index === activeIndex()\"\r\n [class.solaris-dialog-flow__step--exit]=\"step.index !== activeIndex()\"\r\n >\r\n <ng-container [ngTemplateOutlet]=\"step.template\" />\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"solaris-dialog-flow__footer\">\r\n <ng-content select=\"[solaris-dialog-flow-footer]\" />\r\n </div>\r\n</div>\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport {\r\n SOLARIS_DIALOG_CONFIG,\r\n SOLARIS_DIALOG_DEFAULT_CONFIG,\r\n} from '../token/dialog.tokens';\r\nimport { SolarisDialogService } from '../service/dialog.service';\r\nimport type { SolarisDialogConfig } from '../model/dialog.types';\r\n\r\nexport function provideSolarisDialog(\r\n config?: Partial<SolarisDialogConfig>,\r\n): Provider[] {\r\n const merged: SolarisDialogConfig = {\r\n ...SOLARIS_DIALOG_DEFAULT_CONFIG,\r\n ...config,\r\n };\r\n\r\n return [\r\n SolarisDialogService,\r\n { provide: SOLARIS_DIALOG_CONFIG, useValue: merged },\r\n ];\r\n}\r\n","import { InjectionToken, type Signal } from '@angular/core';\r\n\r\nimport type { SolarisTabComponent } from '../tab/tab.component';\r\nimport type {\r\n SolarisTabsOrientation,\r\n SolarisTabsAppearance,\r\n SolarisTabsSize,\r\n SolarisTabsDensity,\r\n SolarisTabsActivationMode,\r\n SolarisTabsContentTransition,\r\n} from '../model/tabs.types';\r\n\r\nexport interface SolarisTabsControl {\r\n value: Signal<string | number | undefined>;\r\n tabs: Signal<ReadonlyArray<SolarisTabComponent>>;\r\n orientation: Signal<SolarisTabsOrientation>;\r\n appearance: Signal<SolarisTabsAppearance>;\r\n size: Signal<SolarisTabsSize>;\r\n density: Signal<SolarisTabsDensity>;\r\n disabled: Signal<boolean>;\r\n activationMode: Signal<SolarisTabsActivationMode>;\r\n contentTransition: Signal<SolarisTabsContentTransition>;\r\n activateTab: (tab: SolarisTabComponent) => void;\r\n focusTab: (tab: SolarisTabComponent) => void;\r\n generateTabId: (value: string | number) => string;\r\n generatePanelId: (value: string | number) => string;\r\n}\r\n\r\nexport const SOLARIS_TABS = new InjectionToken<SolarisTabsControl>(\r\n 'SolarisTabs',\r\n);\r\n","import {\r\n input,\r\n inject,\r\n computed,\r\n Component,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisBadgeComponent } from '../../../data-display/badge';\r\nimport { SolarisIconComponent } from '../../../icon';\r\nimport { SOLARIS_TABS } from '../token/tabs.tokens';\r\n\r\nlet nextId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-tab',\r\n standalone: true,\r\n imports: [SolarisIconComponent, SolarisBadgeComponent],\r\n templateUrl: './tab.component.html',\r\n styleUrls: ['./tab.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'tab',\r\n '[attr.id]': 'tabId()',\r\n '(click)': 'onClick()',\r\n '[attr.data-size]': 'size()',\r\n '(keydown)': 'onKeydown($event)',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-active]': 'isActive()',\r\n '[attr.aria-controls]': 'panelId()',\r\n '[attr.aria-selected]': 'isActive()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.aria-label]': 'resolvedAriaLabel()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.tabindex]': 'isActive() ? \"0\" : \"-1\"',\r\n '[attr.data-disabled]': 'isComputedDisabled()',\r\n '[attr.aria-disabled]': 'isComputedDisabled() || undefined',\r\n },\r\n})\r\nexport class SolarisTabComponent {\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n private readonly tabsControl = inject(SOLARIS_TABS, { optional: true });\r\n\r\n readonly disabled = input<boolean>(false);\r\n readonly value = input.required<string | number>();\r\n readonly iconDecorative = input<boolean>(true);\r\n readonly icon = input<string | undefined>(undefined);\r\n readonly label = input<string | undefined>(undefined);\r\n readonly labelKey = input<string | undefined>(undefined);\r\n readonly ariaLabel = input<string | undefined>(undefined);\r\n readonly badgeLabel = input<string | undefined>(undefined);\r\n readonly ariaLabelKey = input<string | undefined>(undefined);\r\n readonly badgeLabelKey = input<string | undefined>(undefined);\r\n readonly badge = input<string | number | undefined>(undefined);\r\n\r\n protected readonly instanceId = `solaris-tab-${nextId++}`;\r\n\r\n protected readonly tabId = computed(() => {\r\n if (this.tabsControl) {\r\n return this.tabsControl.generateTabId(this.value());\r\n }\r\n return `${this.instanceId}-tab`;\r\n });\r\n\r\n protected readonly panelId = computed(() => {\r\n if (this.tabsControl) {\r\n return this.tabsControl.generatePanelId(this.value());\r\n }\r\n return `${this.instanceId}-panel`;\r\n });\r\n\r\n protected readonly orientation = computed(() => {\r\n return this.tabsControl?.orientation() ?? 'horizontal';\r\n });\r\n\r\n protected readonly size = computed(() => {\r\n return this.tabsControl?.size() ?? 'md';\r\n });\r\n\r\n protected readonly density = computed(() => {\r\n return this.tabsControl?.density() ?? 'comfortable';\r\n });\r\n\r\n protected readonly appearance = computed(() => {\r\n return this.tabsControl?.appearance() ?? 'underline';\r\n });\r\n\r\n protected readonly isActive = computed(() => {\r\n if (!this.tabsControl) return false;\r\n return this.tabsControl.value() === this.value();\r\n });\r\n\r\n readonly isComputedDisabled = computed(() => {\r\n return this.disabled() || (this.tabsControl?.disabled() ?? false);\r\n });\r\n\r\n protected readonly computedBadge = computed(() => {\r\n const b = this.badge();\r\n if (b === undefined || b === null) return null;\r\n return b;\r\n });\r\n\r\n protected readonly index = computed(() => {\r\n if (!this.tabsControl) return -1;\r\n return this.tabsControl.tabs().indexOf(this);\r\n });\r\n\r\n readonly resolvedLabel = computed(() => {\r\n if (this.label()) return this.label();\r\n const labelKey = this.labelKey();\r\n if (labelKey && this.translateService) {\r\n return this.translateService.translate(labelKey);\r\n }\r\n return labelKey ?? undefined;\r\n });\r\n\r\n protected readonly resolvedBadgeLabel = computed(() => {\r\n if (this.badgeLabel()) return this.badgeLabel();\r\n const badgeLabelKey = this.badgeLabelKey();\r\n if (badgeLabelKey && this.translateService) {\r\n return this.translateService.translate(badgeLabelKey);\r\n }\r\n return badgeLabelKey ?? undefined;\r\n });\r\n\r\n protected readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaLabel()) return this.ariaLabel();\r\n const ariaLabelKey = this.ariaLabelKey();\r\n if (ariaLabelKey && this.translateService) {\r\n return this.translateService.translate(ariaLabelKey);\r\n }\r\n return undefined;\r\n });\r\n\r\n protected onClick(): void {\r\n if (this.isComputedDisabled()) return;\r\n this.tabsControl?.activateTab(this);\r\n this.tabsControl?.focusTab(this);\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent): void {\r\n if (this.isComputedDisabled()) return;\r\n\r\n const tabs = this.tabsControl?.tabs() ?? [];\r\n const currentIndex = this.index();\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n\r\n if (this.tabsControl?.activationMode() === 'manual') {\r\n this.tabsControl.activateTab(this);\r\n }\r\n\r\n return;\r\n }\r\n\r\n const nextIndex = this.getNextIndex(event.key, tabs, currentIndex);\r\n\r\n if (nextIndex === null || nextIndex === currentIndex) return;\r\n\r\n event.preventDefault();\r\n\r\n const nextTab = tabs[nextIndex];\r\n\r\n if (this.tabsControl?.activationMode() === 'automatic') {\r\n this.tabsControl.activateTab(nextTab);\r\n }\r\n\r\n this.tabsControl?.focusTab(nextTab);\r\n }\r\n\r\n private getNextIndex(\r\n key: string,\r\n tabs: ReadonlyArray<SolarisTabComponent>,\r\n currentIndex: number,\r\n ): number | null {\r\n switch (key) {\r\n case 'ArrowRight':\r\n return this.orientation() === 'horizontal'\r\n ? this.findNextEnabled(tabs, currentIndex, 1)\r\n : null;\r\n\r\n case 'ArrowLeft':\r\n return this.orientation() === 'horizontal'\r\n ? this.findNextEnabled(tabs, currentIndex, -1)\r\n : null;\r\n\r\n case 'ArrowDown':\r\n return this.orientation() === 'vertical'\r\n ? this.findNextEnabled(tabs, currentIndex, 1)\r\n : null;\r\n\r\n case 'ArrowUp':\r\n return this.orientation() === 'vertical'\r\n ? this.findNextEnabled(tabs, currentIndex, -1)\r\n : null;\r\n\r\n case 'Home':\r\n return this.findFirstEnabled(tabs);\r\n\r\n case 'End':\r\n return this.findLastEnabled(tabs);\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private findNextEnabled(\r\n tabs: ReadonlyArray<SolarisTabComponent>,\r\n fromIndex: number,\r\n direction: 1 | -1,\r\n ): number | null {\r\n let i = fromIndex + direction;\r\n while (i >= 0 && i < tabs.length) {\r\n if (!tabs[i].isComputedDisabled()) return i;\r\n i += direction;\r\n }\r\n return null;\r\n }\r\n\r\n private findFirstEnabled(\r\n tabs: ReadonlyArray<SolarisTabComponent>,\r\n ): number | null {\r\n for (let i = 0; i < tabs.length; i++) {\r\n if (!tabs[i].isComputedDisabled()) return i;\r\n }\r\n return null;\r\n }\r\n\r\n private findLastEnabled(\r\n tabs: ReadonlyArray<SolarisTabComponent>,\r\n ): number | null {\r\n for (let i = tabs.length - 1; i >= 0; i--) {\r\n if (!tabs[i].isComputedDisabled()) return i;\r\n }\r\n return null;\r\n }\r\n}\r\n","<span class=\"solaris-tab__inner\">\r\n @if (icon(); as iconName) {\r\n <solaris-icon\r\n class=\"solaris-tab__icon\"\r\n [name]=\"iconName\"\r\n [decorative]=\"iconDecorative()\"\r\n />\r\n }\r\n @if (resolvedLabel(); as labelText) {\r\n <span class=\"solaris-tab__label\">{{ labelText }}</span>\r\n }\r\n <ng-content />\r\n @if (computedBadge(); as badgeValue) {\r\n <solaris-badge\r\n class=\"solaris-tab__badge\"\r\n variant=\"count\"\r\n size=\"sm\"\r\n [attr.aria-label]=\"resolvedBadgeLabel()\"\r\n >\r\n {{ badgeValue }}\r\n </solaris-badge>\r\n }\r\n</span>\r\n","import {\r\n Component,\r\n input,\r\n computed,\r\n signal,\r\n inject,\r\n effect,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport { SOLARIS_TABS } from '../token/tabs.tokens';\r\n\r\nlet nextId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-tab-panel',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './tab-panel.component.html',\r\n styleUrls: ['./tab-panel.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'tabpanel',\r\n '[attr.id]': 'panelId()',\r\n '[hidden]': '!isActive()',\r\n '[attr.data-active]': 'isActive()',\r\n '[attr.aria-labelledby]': 'tabId()',\r\n },\r\n})\r\nexport class SolarisTabPanelComponent {\r\n private readonly tabsControl = inject(SOLARIS_TABS, { optional: true });\r\n\r\n readonly value = input.required<string | number>();\r\n readonly lazy = input<boolean>(false);\r\n\r\n protected readonly instanceId = `solaris-tab-panel-${nextId++}`;\r\n\r\n protected readonly panelId = computed(() => {\r\n if (this.tabsControl) {\r\n return this.tabsControl.generatePanelId(this.value());\r\n }\r\n return `${this.instanceId}-panel`;\r\n });\r\n\r\n protected readonly tabId = computed(() => {\r\n if (this.tabsControl) {\r\n return this.tabsControl.generateTabId(this.value());\r\n }\r\n return `${this.instanceId}-tab`;\r\n });\r\n\r\n protected readonly isActive = computed(() => {\r\n if (!this.tabsControl) return false;\r\n return this.tabsControl.value() === this.value();\r\n });\r\n\r\n protected readonly hasBeenActivated = signal(false);\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this.isActive()) {\r\n this.hasBeenActivated.set(true);\r\n }\r\n });\r\n }\r\n\r\n protected readonly showContent = computed(() => {\r\n if (!this.lazy()) return true;\r\n if (this.isActive()) return true;\r\n return this.hasBeenActivated();\r\n });\r\n}\r\n","@if (showContent()) {\r\n <ng-content />\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n model,\r\n contentChildren,\r\n computed,\r\n signal,\r\n inject,\r\n ChangeDetectionStrategy,\r\n effect,\r\n ElementRef,\r\n NgZone,\r\n} from '@angular/core';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisTabComponent } from '../tab/tab.component';\r\nimport { SolarisTabPanelComponent } from '../tab-panel/tab-panel.component';\r\nimport { SOLARIS_TABS, type SolarisTabsControl } from '../token/tabs.tokens';\r\n\r\nimport type {\r\n SolarisTabsOrientation,\r\n SolarisTabsAppearance,\r\n SolarisTabsSize,\r\n SolarisTabsDensity,\r\n SolarisTabsActivationMode,\r\n SolarisTabsContentTransition,\r\n SolarisTabsChangeEvent,\r\n SolarisTabClickEvent,\r\n} from '../model/tabs.types';\r\n\r\nlet nextInstanceId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-tabs',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './tabs.component.html',\r\n styleUrls: ['./tabs.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-tabs',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-full-width]': 'fullWidth()',\r\n '[attr.data-scrollable]': 'scrollable()',\r\n '[attr.data-show-indicator]': 'showIndicator()',\r\n '[attr.data-content-transition]': 'contentTransition()',\r\n },\r\n providers: [\r\n {\r\n provide: SOLARIS_TABS,\r\n useExisting: SolarisTabsComponent,\r\n },\r\n ],\r\n})\r\nexport class SolarisTabsComponent implements SolarisTabsControl {\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n private readonly elementRef = inject(ElementRef);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n readonly tabs = contentChildren(SolarisTabComponent);\r\n readonly panels = contentChildren(SolarisTabPanelComponent);\r\n\r\n readonly value = model<string | number | undefined>(undefined);\r\n readonly defaultValue = input<string | number | undefined>(undefined);\r\n readonly orientation = input<SolarisTabsOrientation>('horizontal');\r\n readonly appearance = input<SolarisTabsAppearance>('underline');\r\n readonly size = input<SolarisTabsSize>('md');\r\n readonly density = input<SolarisTabsDensity>('comfortable');\r\n readonly activationMode = input<SolarisTabsActivationMode>('automatic');\r\n readonly contentTransition = input<SolarisTabsContentTransition>('fade');\r\n readonly fullWidth = input<boolean>(false);\r\n readonly fitContent = input<boolean>(true);\r\n readonly scrollable = input<boolean>(true);\r\n readonly showIndicator = input<boolean>(true);\r\n readonly disabled = input<boolean>(false);\r\n readonly ariaLabel = input<string | undefined>(undefined);\r\n readonly ariaLabelKey = input<string | undefined>(undefined);\r\n\r\n readonly valueChange = output<string | number | undefined>();\r\n readonly tabChange = output<SolarisTabsChangeEvent>();\r\n readonly tabClick = output<SolarisTabClickEvent>();\r\n\r\n protected readonly previousValue = signal<string | number | undefined>(\r\n undefined,\r\n );\r\n protected readonly slideDirection = signal<'left' | 'right'>('right');\r\n\r\n protected readonly instanceId = `solaris-tabs-${nextInstanceId++}`;\r\n\r\n protected readonly indicatorReady = signal(false);\r\n protected readonly indicatorTransformX = signal('translateX(0)');\r\n protected readonly indicatorTransformY = signal('translateY(0)');\r\n protected readonly indicatorSize = signal('0');\r\n\r\n protected readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaLabel()) return this.ariaLabel();\r\n const ariaLabelKey = this.ariaLabelKey();\r\n if (ariaLabelKey && this.translateService) {\r\n return this.translateService.translate(ariaLabelKey);\r\n }\r\n return ariaLabelKey ?? 'Tabs';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const defaultValue = this.defaultValue();\r\n const currentValue = this.value();\r\n if (currentValue === undefined && defaultValue !== undefined) {\r\n this.value.set(defaultValue);\r\n }\r\n });\r\n\r\n effect(() => {\r\n const current = this.value();\r\n const previous = this.previousValue();\r\n if (current !== previous && previous !== undefined) {\r\n this.valueChange.emit(current);\r\n this.tabChange.emit({\r\n value: current,\r\n previousValue: previous,\r\n });\r\n this.updateSlideDirection(current, previous);\r\n }\r\n this.previousValue.set(current);\r\n });\r\n\r\n this.ngZone.runOutsideAngular(() => {\r\n setTimeout(() => this.measureIndicator());\r\n });\r\n\r\n effect(() => {\r\n this.value();\r\n this.appearance();\r\n this.orientation();\r\n this.tabs();\r\n this.ngZone.runOutsideAngular(() => {\r\n setTimeout(() => this.measureIndicator());\r\n });\r\n });\r\n }\r\n\r\n activateTab(tab: SolarisTabComponent): void {\r\n if (tab.isComputedDisabled()) return;\r\n if (this.disabled()) return;\r\n this.value.set(tab.value());\r\n const label = tab.resolvedLabel();\r\n this.tabClick.emit({\r\n value: tab.value(),\r\n label,\r\n });\r\n }\r\n\r\n focusTab(tab: SolarisTabComponent): void {\r\n // SECURITY_EXCEPTION: nativeElement required to query tab elements for programmatic focus. Read-only, SSR-safe.\r\n const nativeElement = this.elementRef.nativeElement as HTMLElement;\r\n const tabElements = nativeElement.querySelectorAll(\r\n 'solaris-tab',\r\n ) as NodeListOf<HTMLElement>;\r\n const tabArray = this.tabs();\r\n const index = tabArray.indexOf(tab);\r\n if (index >= 0 && tabElements[index]) {\r\n tabElements[index].focus();\r\n }\r\n }\r\n\r\n generateTabId(value: string | number): string {\r\n return `${this.instanceId}-tab-${value}`;\r\n }\r\n\r\n generatePanelId(value: string | number): string {\r\n return `${this.instanceId}-panel-${value}`;\r\n }\r\n\r\n private measureIndicator(): void {\r\n // SECURITY_EXCEPTION: nativeElement required to query tablist for indicator measurement. Read-only, SSR-safe.\r\n const nativeEl = this.elementRef.nativeElement as HTMLElement;\r\n const tablist = nativeEl.querySelector(\r\n '.solaris-tabs__tablist',\r\n ) as HTMLElement | null;\r\n if (!tablist) return;\r\n\r\n const activeTab = tablist.querySelector(\r\n 'solaris-tab[data-active=\"true\"]',\r\n ) as HTMLElement | null;\r\n if (!activeTab) return;\r\n\r\n const isVertical = this.orientation() === 'vertical';\r\n\r\n if (isVertical) {\r\n this.indicatorTransformY.set(`translateY(${activeTab.offsetTop}px)`);\r\n this.indicatorSize.set(`${activeTab.offsetHeight}px`);\r\n } else {\r\n this.indicatorTransformX.set(`translateX(${activeTab.offsetLeft}px)`);\r\n this.indicatorSize.set(`${activeTab.offsetWidth}px`);\r\n }\r\n\r\n if (!this.indicatorReady()) {\r\n setTimeout(() => this.indicatorReady.set(true));\r\n }\r\n }\r\n\r\n private updateSlideDirection(\r\n current: string | number | undefined,\r\n previous: string | number | undefined,\r\n ): void {\r\n const tabs = this.tabs();\r\n const currentIndex = tabs.findIndex((t) => t.value() === current);\r\n const previousIndex = tabs.findIndex((t) => t.value() === previous);\r\n if (currentIndex >= 0 && previousIndex >= 0) {\r\n this.slideDirection.set(currentIndex > previousIndex ? 'right' : 'left');\r\n }\r\n }\r\n}\r\n","<div\r\n class=\"solaris-tabs__tablist\"\r\n #tablist\r\n role=\"tablist\"\r\n [attr.aria-orientation]=\"orientation()\"\r\n [attr.aria-label]=\"resolvedAriaLabel()\"\r\n>\r\n <ng-content select=\"solaris-tab\" />\r\n\r\n @if (showIndicator() && appearance() === 'underline') {\r\n <div\r\n class=\"solaris-tabs__indicator\"\r\n [class.solaris-tabs__indicator--animate]=\"indicatorReady()\"\r\n [class.solaris-tabs__indicator--vertical]=\"orientation() === 'vertical'\"\r\n [style.transform]=\"\r\n orientation() === 'vertical'\r\n ? indicatorTransformY()\r\n : indicatorTransformX()\r\n \"\r\n [style.width]=\"orientation() === 'vertical' ? '' : indicatorSize()\"\r\n [style.height]=\"orientation() === 'vertical' ? indicatorSize() : ''\"\r\n ></div>\r\n }\r\n</div>\r\n\r\n@if (panels().length > 0) {\r\n <div\r\n class=\"solaris-tabs__panels\"\r\n [class.solaris-tabs__panels--fade]=\"contentTransition() === 'fade'\"\r\n [class.solaris-tabs__panels--slide]=\"contentTransition() === 'slide'\"\r\n [class.solaris-tabs__panels--slide-from-right]=\"\r\n contentTransition() === 'slide' && slideDirection() === 'right'\r\n \"\r\n [class.solaris-tabs__panels--slide-from-left]=\"\r\n contentTransition() === 'slide' && slideDirection() === 'left'\r\n \"\r\n >\r\n <ng-content select=\"solaris-tab-panel\" />\r\n </div>\r\n}\r\n","import { Component, input, ChangeDetectionStrategy } from '@angular/core';\r\nimport type { SolarisStepperActionsAlign } from '../model/stepper.types';\r\n\r\n@Component({\r\n selector: 'solaris-stepper-actions',\r\n standalone: true,\r\n templateUrl: './stepper-actions.component.html',\r\n styleUrls: ['./stepper-actions.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n '[attr.data-align]': 'align()',\r\n class: 'solaris-stepper-actions',\r\n },\r\n})\r\nexport class SolarisStepperActionsComponent {\r\n readonly align = input<SolarisStepperActionsAlign>('end');\r\n}\r\n","<ng-content />\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nimport type {\r\n SolarisStepperOrientation,\r\n SolarisStepperAppearance,\r\n SolarisStepperSize,\r\n SolarisStepperDensity,\r\n} from '../model/stepper.types';\r\n\r\nexport interface SolarisStepperControl {\r\n activeIndex: () => number;\r\n steps: () => ReadonlyArray<unknown>;\r\n orientation: () => SolarisStepperOrientation;\r\n appearance: () => SolarisStepperAppearance;\r\n linear: () => boolean;\r\n size: () => SolarisStepperSize;\r\n density: () => SolarisStepperDensity;\r\n goToStep: (index: number) => void;\r\n}\r\n\r\nexport const SOLARIS_STEPPER = new InjectionToken<SolarisStepperControl>(\r\n 'SolarisStepper',\r\n);\r\n","import {\r\n Component,\r\n input,\r\n inject,\r\n computed,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport type { SolarisStepperStatus } from '../model/stepper.types';\r\nimport { SOLARIS_STEPPER } from '../token/stepper.tokens';\r\n\r\n@Component({\r\n selector: 'solaris-step',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './step.component.html',\r\n styleUrls: ['./step.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'listitem',\r\n class: 'solaris-step',\r\n '[attr.data-active]': 'isActive()',\r\n '[attr.data-status]': 'computedStatus()',\r\n '[attr.aria-current]': 'isActive() ? \"step\" : undefined',\r\n '[attr.aria-disabled]': 'computedStatus() === \"disabled\"',\r\n },\r\n})\r\nexport class SolarisStepComponent {\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n readonly stepper = inject(SOLARIS_STEPPER, { optional: true });\r\n\r\n readonly error = input<boolean>(false);\r\n readonly optional = input<boolean>(false);\r\n readonly disabled = input<boolean>(false);\r\n readonly completed = input<boolean>(false);\r\n readonly icon = input<string | undefined>(undefined);\r\n readonly label = input<string | undefined>(undefined);\r\n readonly labelKey = input<string | undefined>(undefined);\r\n readonly status = input<SolarisStepperStatus>('pending');\r\n readonly description = input<string | undefined>(undefined);\r\n readonly descriptionKey = input<string | undefined>(undefined);\r\n\r\n readonly index = computed(() => {\r\n if (this.stepper) {\r\n return this.stepper.steps().indexOf(this);\r\n }\r\n return -1;\r\n });\r\n\r\n readonly isActive = computed(() => {\r\n if (this.stepper) {\r\n return this.stepper.activeIndex() === this.index();\r\n }\r\n return false;\r\n });\r\n\r\n readonly computedStatus = computed<SolarisStepperStatus>(() => {\r\n if (this.disabled()) return 'disabled';\r\n if (this.error()) return 'error';\r\n if (this.isActive()) return 'active';\r\n if (this.completed()) return 'completed';\r\n return this.status();\r\n });\r\n\r\n readonly isInteractive = computed(() => {\r\n if (this.computedStatus() === 'disabled') return false;\r\n if (!this.stepper) return false;\r\n return !(\r\n this.stepper.linear() &&\r\n this.computedStatus() !== 'completed' &&\r\n !this.isActive()\r\n );\r\n });\r\n\r\n readonly showContent = computed(() => {\r\n if (!this.stepper) return true;\r\n return this.isActive();\r\n });\r\n\r\n readonly resolvedLabel = computed(() => {\r\n if (this.label()) return this.label();\r\n const labelKey = this.labelKey();\r\n if (labelKey && this.translateService) {\r\n return this.translateService.translate(labelKey);\r\n }\r\n return labelKey ?? '';\r\n });\r\n\r\n readonly resolvedDescription = computed(() => {\r\n if (this.description()) return this.description();\r\n const descriptionKey = this.descriptionKey();\r\n if (descriptionKey && this.translateService) {\r\n return this.translateService.translate(descriptionKey);\r\n }\r\n return descriptionKey ?? '';\r\n });\r\n\r\n readonly showCheckIcon = computed(\r\n () => this.computedStatus() === 'completed' && !this.icon(),\r\n );\r\n readonly showErrorIcon = computed(\r\n () => this.computedStatus() === 'error' && !this.icon(),\r\n );\r\n}\r\n","@if (showContent()) {\r\n <div class=\"solaris-step__content-wrapper\">\r\n <ng-content select=\"solaris-stepper-content\" />\r\n </div>\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n model,\r\n contentChildren,\r\n contentChild,\r\n computed,\r\n signal,\r\n inject,\r\n ChangeDetectionStrategy,\r\n effect,\r\n} from '@angular/core';\r\n\r\nimport { SolarisStepperActionsComponent } from '../actions/stepper-actions.component';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport type { SolarisStepperControl } from '../token/stepper.tokens';\r\nimport { SolarisStepComponent } from '../step/step.component';\r\nimport { SOLARIS_STEPPER } from '../token/stepper.tokens';\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\nimport type {\r\n SolarisStepperOrientation,\r\n SolarisStepperAppearance,\r\n SolarisStepperSize,\r\n SolarisStepperDensity,\r\n SolarisStepperContentTransition,\r\n SolarisStepperChangeEvent,\r\n} from '../model/stepper.types';\r\n\r\n@Component({\r\n selector: 'solaris-stepper',\r\n standalone: true,\r\n imports: [SolarisIconComponent],\r\n templateUrl: './stepper.component.html',\r\n styleUrls: ['./stepper.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-stepper',\r\n '[attr.data-size]': 'size()',\r\n '[attr.role]': '\"navigation\"',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.aria-label]': 'resolvedAriaLabel()',\r\n },\r\n providers: [\r\n {\r\n provide: SOLARIS_STEPPER,\r\n useExisting: SolarisStepperComponent,\r\n },\r\n ],\r\n})\r\nexport class SolarisStepperComponent implements SolarisStepperControl {\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n\r\n readonly steps = contentChildren(SolarisStepComponent);\r\n readonly actions = contentChild(SolarisStepperActionsComponent);\r\n\r\n readonly activeIndex = model<number>(0);\r\n readonly orientation = input<SolarisStepperOrientation>('horizontal');\r\n readonly appearance = input<SolarisStepperAppearance>('default');\r\n readonly linear = input<boolean>(false);\r\n readonly size = input<SolarisStepperSize>('md');\r\n readonly density = input<SolarisStepperDensity>('comfortable');\r\n readonly showConnectors = input<boolean>(true);\r\n readonly showStepStatus = input<boolean>(true);\r\n readonly showStepNumbers = input<boolean>(true);\r\n readonly contentTransition = input<SolarisStepperContentTransition>('fade');\r\n readonly ariaLabel = input<string | undefined>(undefined);\r\n readonly ariaLabelKey = input<string | undefined>(undefined);\r\n\r\n readonly activeIndexChange = output<number>();\r\n readonly stepChange = output<SolarisStepperChangeEvent>();\r\n readonly stepClick = output<{ index: number; label: string | undefined }>();\r\n\r\n protected readonly stepTransitionDirection = signal<'next' | 'previous'>(\r\n 'next',\r\n );\r\n readonly previousIndex = signal<number>(0);\r\n\r\n readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaLabel()) return this.ariaLabel();\r\n const ariaLabelKey = this.ariaLabelKey();\r\n if (ariaLabelKey && this.translateService) {\r\n return this.translateService.translate(ariaLabelKey);\r\n }\r\n return ariaLabelKey ?? 'Progress';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const current = this.activeIndex();\r\n const prev = this.previousIndex();\r\n if (current !== prev) {\r\n this.activeIndexChange.emit(current);\r\n this.stepChange.emit({\r\n activeIndex: current,\r\n previousIndex: prev,\r\n });\r\n this.stepTransitionDirection.set(current > prev ? 'next' : 'previous');\r\n this.previousIndex.set(current);\r\n }\r\n });\r\n }\r\n\r\n goToStep(index: number): void {\r\n const step = this.steps()[index];\r\n if (!step) return;\r\n if (step.computedStatus() === 'disabled') return;\r\n if (\r\n this.linear() &&\r\n step.computedStatus() !== 'completed' &&\r\n index !== this.activeIndex()\r\n )\r\n return;\r\n\r\n this.activeIndex.set(index);\r\n\r\n this.stepClick.emit({\r\n index,\r\n label: step.resolvedLabel(),\r\n });\r\n }\r\n\r\n isStepClickable(step: SolarisStepComponent): boolean {\r\n return step.computedStatus() !== 'disabled';\r\n }\r\n}\r\n","<div class=\"solaris-stepper__indicators\">\r\n @for (step of steps(); track step; let i = $index) {\r\n @if (showConnectors() && i > 0) {\r\n <div\r\n class=\"solaris-stepper__connector\"\r\n [class.solaris-stepper__connector--active]=\"i <= activeIndex()\"\r\n ></div>\r\n }\r\n\r\n <div\r\n class=\"solaris-stepper__step\"\r\n [class.solaris-stepper__step--active]=\"i === activeIndex()\"\r\n [class.solaris-stepper__step--clickable]=\"isStepClickable(step)\"\r\n [attr.data-status]=\"step.computedStatus()\"\r\n >\r\n @if (isStepClickable(step)) {\r\n <button\r\n type=\"button\"\r\n class=\"solaris-stepper__indicator-button\"\r\n (click)=\"goToStep(i)\"\r\n [attr.aria-current]=\"i === activeIndex() ? 'step' : undefined\"\r\n [attr.aria-disabled]=\"step.computedStatus() === 'disabled'\"\r\n >\r\n @if (step.icon(); as iconName) {\r\n <solaris-icon [name]=\"iconName\" [decorative]=\"true\" />\r\n } @else if (step.showCheckIcon()) {\r\n <solaris-icon name=\"check\" [decorative]=\"true\" />\r\n } @else if (step.showErrorIcon()) {\r\n <solaris-icon name=\"danger\" [decorative]=\"true\" />\r\n } @else if (showStepNumbers()) {\r\n <span class=\"solaris-stepper__number\">{{ i + 1 }}</span>\r\n }\r\n </button>\r\n } @else {\r\n <span class=\"solaris-stepper__indicator-static\">\r\n @if (step.icon(); as iconName) {\r\n <solaris-icon [name]=\"iconName\" [decorative]=\"true\" />\r\n } @else if (step.showCheckIcon()) {\r\n <solaris-icon name=\"check\" [decorative]=\"true\" />\r\n } @else if (step.showErrorIcon()) {\r\n <solaris-icon name=\"danger\" [decorative]=\"true\" />\r\n } @else if (showStepNumbers()) {\r\n <span class=\"solaris-stepper__number\">{{ i + 1 }}</span>\r\n }\r\n </span>\r\n }\r\n\r\n <div class=\"solaris-stepper__label-group\">\r\n <span class=\"solaris-stepper__label\">{{ step.resolvedLabel() }}</span>\r\n @if (step.resolvedDescription(); as desc) {\r\n <span class=\"solaris-stepper__description\">{{ desc }}</span>\r\n }\r\n </div>\r\n\r\n @if (showStepStatus()) {\r\n <span class=\"solaris-stepper__status-badge\">\r\n @if (step.optional()) {\r\n <span class=\"solaris-stepper__optional-text\">Optional</span>\r\n <!-- SOLARIS_I18N_EXCEPTION: \"Optional\" is a short static label used as a visual badge. Translation support can be added in a future iteration. -->\r\n }\r\n </span>\r\n }\r\n </div>\r\n }\r\n</div>\r\n\r\n<div\r\n class=\"solaris-stepper__content-panel\"\r\n [class.solaris-stepper__content-panel--fade]=\"contentTransition() === 'fade'\"\r\n [class.solaris-stepper__content-panel--slide-right]=\"\r\n contentTransition() === 'slide' && stepTransitionDirection() === 'next'\r\n \"\r\n [class.solaris-stepper__content-panel--slide-left]=\"\r\n contentTransition() === 'slide' && stepTransitionDirection() === 'previous'\r\n \"\r\n>\r\n <ng-content select=\"solaris-step\" />\r\n</div>\r\n\r\n<ng-content select=\"solaris-stepper-actions\" />\r\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'solaris-stepper-content',\r\n standalone: true,\r\n templateUrl: './stepper-content.component.html',\r\n styleUrls: ['./stepper-content.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-stepper-content',\r\n },\r\n})\r\nexport class SolarisStepperContentComponent {}\r\n","<ng-content />\r\n","import { InjectionToken, type Signal } from '@angular/core';\r\n\r\nimport type {\r\n SolarisSegmentedControlOrientation,\r\n SolarisSegmentedControlAppearance,\r\n SolarisSegmentedControlSize,\r\n SolarisSegmentedControlDensity,\r\n SolarisSegmentedControlRadius,\r\n} from '../model/segmented-control.types';\r\nimport type { SolarisSegmentedItemComponent } from '../item/segmented-item.component';\r\n\r\nexport interface SolarisSegmentedControlInterface {\r\n value: Signal<unknown>;\r\n items: Signal<ReadonlyArray<SolarisSegmentedItemComponent>>;\r\n orientation: Signal<SolarisSegmentedControlOrientation>;\r\n appearance: Signal<SolarisSegmentedControlAppearance>;\r\n size: Signal<SolarisSegmentedControlSize>;\r\n density: Signal<SolarisSegmentedControlDensity>;\r\n radius: Signal<SolarisSegmentedControlRadius>;\r\n disabled: Signal<boolean>;\r\n readonly: Signal<boolean>;\r\n invalid: Signal<boolean>;\r\n fullWidth: Signal<boolean>;\r\n equalWidth: Signal<boolean>;\r\n indicator: Signal<boolean>;\r\n compareFn: Signal<(a: unknown, b: unknown) => boolean>;\r\n selectItem: (item: SolarisSegmentedItemComponent) => void;\r\n focusItem: (item: SolarisSegmentedItemComponent) => void;\r\n}\r\n\r\nexport const SOLARIS_SEGMENTED_CONTROL =\r\n new InjectionToken<SolarisSegmentedControlInterface>(\r\n 'SolarisSegmentedControl',\r\n );\r\n","import {\r\n input,\r\n inject,\r\n signal,\r\n computed,\r\n Component,\r\n ElementRef,\r\n AfterContentInit,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport { SolarisIconComponent } from '../../../icon';\r\nimport { SOLARIS_SEGMENTED_CONTROL } from '../token/segmented-control.tokens';\r\n\r\nlet nextId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-segmented-item',\r\n standalone: true,\r\n imports: [SolarisIconComponent],\r\n templateUrl: './segmented-item.component.html',\r\n styleUrls: ['./segmented-item.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n role: 'radio',\r\n '[attr.id]': 'itemId()',\r\n '(click)': 'onClick()',\r\n '(keydown)': 'onKeydown($event)',\r\n '[attr.data-selected]': 'isSelected()',\r\n '[attr.data-disabled]': 'isComputedDisabled()',\r\n '[attr.aria-checked]': 'isSelected()',\r\n '[attr.aria-disabled]': 'isComputedDisabled() || undefined',\r\n '[attr.aria-label]': 'resolvedAriaLabel() || undefined',\r\n '[attr.tabindex]': 'isTabstop() ? \"0\" : \"-1\"',\r\n '[class.solaris-segmented-item--icon-only]': 'isIconOnly()',\r\n },\r\n})\r\nexport class SolarisSegmentedItemComponent implements AfterContentInit {\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n private readonly control = inject(SOLARIS_SEGMENTED_CONTROL, {\r\n optional: true,\r\n });\r\n private readonly elementRef = inject(ElementRef);\r\n\r\n protected readonly hasContent = signal(false);\r\n\r\n readonly value = input.required<unknown>();\r\n readonly label = input<string | undefined>(undefined);\r\n readonly labelKey = input<string | undefined>(undefined);\r\n readonly icon = input<string | undefined>(undefined);\r\n readonly disabled = input<boolean>(false);\r\n readonly ariaLabel = input<string | undefined>(undefined);\r\n readonly ariaLabelKey = input<string | undefined>(undefined);\r\n\r\n protected readonly instanceId = `solaris-segmented-item-${nextId++}`;\r\n\r\n protected readonly itemId = computed(() => {\r\n const ctrl = this.control;\r\n if (ctrl) {\r\n return `solaris-segmented-item-${String(this.value())}`;\r\n }\r\n return this.instanceId;\r\n });\r\n\r\n readonly isSelected = computed(() => {\r\n if (!this.control) return false;\r\n return this.control.compareFn()(this.value(), this.control.value());\r\n });\r\n\r\n readonly isComputedDisabled = computed(() => {\r\n return this.disabled() || (this.control?.disabled() ?? false);\r\n });\r\n\r\n readonly isComputedReadonly = computed(() => {\r\n return this.control?.readonly() ?? false;\r\n });\r\n\r\n readonly isTabstop = computed(() => {\r\n if (this.isComputedDisabled()) return false;\r\n if (this.isSelected()) return true;\r\n if (!this.control) return false;\r\n const items = this.control.items();\r\n const firstEnabled = items.findIndex((item) => !item.isComputedDisabled());\r\n return items.indexOf(this) === firstEnabled;\r\n });\r\n\r\n protected readonly isIconOnly = computed(() => {\r\n return (\r\n !!this.icon() && !this.label() && !this.labelKey() && !this.hasContent()\r\n );\r\n });\r\n\r\n ngAfterContentInit(): void {\r\n this.updateHasContent();\r\n }\r\n\r\n private updateHasContent(): void {\r\n // SECURITY_EXCEPTION: nativeElement required to check projected content. SSR-safe read-only operation.\r\n const nativeEl = this.elementRef.nativeElement as HTMLElement;\r\n const innerEl = nativeEl.querySelector('.solaris-segmented-item__inner');\r\n if (!innerEl) return;\r\n for (const node of Array.from(innerEl.childNodes)) {\r\n if (node.nodeType === Node.TEXT_NODE && node.textContent?.trim()) {\r\n this.hasContent.set(true);\r\n return;\r\n }\r\n if (node.nodeType === Node.ELEMENT_NODE) {\r\n const el = node as HTMLElement;\r\n if (!el.classList.contains('solaris-segmented-item__icon')) {\r\n this.hasContent.set(true);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n readonly resolvedLabel = computed(() => {\r\n if (this.label()) return this.label();\r\n const labelKey = this.labelKey();\r\n if (labelKey && this.translateService) {\r\n return this.translateService.translate(labelKey);\r\n }\r\n return labelKey ?? undefined;\r\n });\r\n\r\n protected readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaLabel()) return this.ariaLabel();\r\n const ariaLabelKey = this.ariaLabelKey();\r\n if (ariaLabelKey && this.translateService) {\r\n return this.translateService.translate(ariaLabelKey);\r\n }\r\n return undefined;\r\n });\r\n\r\n protected readonly index = computed(() => {\r\n if (!this.control) return -1;\r\n return this.control.items().indexOf(this);\r\n });\r\n\r\n protected onClick(): void {\r\n if (this.isComputedDisabled()) return;\r\n if (this.isComputedReadonly()) return;\r\n this.control?.selectItem(this);\r\n }\r\n\r\n protected onKeydown(event: KeyboardEvent): void {\r\n if (this.isComputedDisabled()) return;\r\n\r\n const items = this.control?.items() ?? [];\r\n const currentIndex = this.index();\r\n\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n if (!this.isComputedReadonly()) {\r\n this.control?.selectItem(this);\r\n }\r\n return;\r\n }\r\n\r\n const nextIndex = this.getNextIndex(event.key, items, currentIndex);\r\n\r\n if (nextIndex === null || nextIndex === currentIndex) return;\r\n\r\n event.preventDefault();\r\n\r\n const nextItem = items[nextIndex];\r\n this.control?.focusItem(nextItem);\r\n }\r\n\r\n private getNextIndex(\r\n key: string,\r\n items: ReadonlyArray<SolarisSegmentedItemComponent>,\r\n currentIndex: number,\r\n ): number | null {\r\n const orientation = this.control?.orientation() ?? 'horizontal';\r\n\r\n switch (key) {\r\n case 'ArrowRight':\r\n return orientation === 'horizontal'\r\n ? this.findNextEnabled(items, currentIndex, 1)\r\n : null;\r\n\r\n case 'ArrowLeft':\r\n return orientation === 'horizontal'\r\n ? this.findNextEnabled(items, currentIndex, -1)\r\n : null;\r\n\r\n case 'ArrowDown':\r\n return orientation === 'vertical'\r\n ? this.findNextEnabled(items, currentIndex, 1)\r\n : null;\r\n\r\n case 'ArrowUp':\r\n return orientation === 'vertical'\r\n ? this.findNextEnabled(items, currentIndex, -1)\r\n : null;\r\n\r\n case 'Home':\r\n return this.findFirstEnabled(items);\r\n\r\n case 'End':\r\n return this.findLastEnabled(items);\r\n\r\n default:\r\n return null;\r\n }\r\n }\r\n\r\n private findNextEnabled(\r\n items: ReadonlyArray<SolarisSegmentedItemComponent>,\r\n fromIndex: number,\r\n direction: 1 | -1,\r\n ): number | null {\r\n let i = fromIndex + direction;\r\n while (i >= 0 && i < items.length) {\r\n if (!items[i].isComputedDisabled()) return i;\r\n i += direction;\r\n }\r\n return null;\r\n }\r\n\r\n private findFirstEnabled(\r\n items: ReadonlyArray<SolarisSegmentedItemComponent>,\r\n ): number | null {\r\n for (let i = 0; i < items.length; i++) {\r\n if (!items[i].isComputedDisabled()) return i;\r\n }\r\n return null;\r\n }\r\n\r\n private findLastEnabled(\r\n items: ReadonlyArray<SolarisSegmentedItemComponent>,\r\n ): number | null {\r\n for (let i = items.length - 1; i >= 0; i--) {\r\n if (!items[i].isComputedDisabled()) return i;\r\n }\r\n return null;\r\n }\r\n}\r\n","<span class=\"solaris-segmented-item__inner\">\r\n @if (icon(); as iconName) {\r\n <solaris-icon\r\n class=\"solaris-segmented-item__icon\"\r\n [name]=\"iconName\"\r\n [decorative]=\"true\"\r\n />\r\n }\r\n @if (resolvedLabel(); as labelText) {\r\n <span class=\"solaris-segmented-item__label\">{{ labelText }}</span>\r\n }\r\n <ng-content />\r\n</span>\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n model,\r\n contentChildren,\r\n computed,\r\n signal,\r\n inject,\r\n ChangeDetectionStrategy,\r\n effect,\r\n ElementRef,\r\n NgZone,\r\n Injector,\r\n forwardRef,\r\n AfterViewInit,\r\n OnDestroy,\r\n} from '@angular/core';\r\nimport { NG_VALUE_ACCESSOR, type ControlValueAccessor } from '@angular/forms';\r\n\r\nimport { SolarisSegmentedItemComponent } from '../item/segmented-item.component';\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\n\r\nimport {\r\n SOLARIS_SEGMENTED_CONTROL,\r\n type SolarisSegmentedControlInterface,\r\n} from '../token/segmented-control.tokens';\r\n\r\nimport type {\r\n SolarisSegmentedControlOrientation,\r\n SolarisSegmentedControlAppearance,\r\n SolarisSegmentedControlSize,\r\n SolarisSegmentedControlDensity,\r\n SolarisSegmentedControlRadius,\r\n SolarisSegmentedControlChangeEvent,\r\n} from '../model/segmented-control.types';\r\n\r\nlet nextInstanceId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-segmented-control',\r\n standalone: true,\r\n imports: [],\r\n templateUrl: './segmented-control.component.html',\r\n styleUrls: ['./segmented-control.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-segmented-control',\r\n role: 'radiogroup',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-radius]': 'radius()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-invalid]': 'invalid() || undefined',\r\n '[attr.data-readonly]': 'readonly() || undefined',\r\n '[attr.aria-required]': 'required() || undefined',\r\n '[attr.data-full-width]': 'fullWidth() || undefined',\r\n '[attr.data-equal-width]': 'equalWidth() || undefined',\r\n '[attr.aria-label]': 'resolvedAriaLabel() || undefined',\r\n '[attr.data-show-indicator]': 'indicator() || undefined',\r\n '[attr.aria-labelledby]': 'ariaLabelledby() || undefined',\r\n '[attr.data-disabled]': 'isEffectivelyDisabled() || undefined',\r\n '[attr.aria-disabled]': 'isEffectivelyDisabled() || undefined',\r\n '[attr.aria-invalid]':\r\n 'invalid() || (required() && touched() && !hasValue()) ? \"true\" : undefined',\r\n },\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SolarisSegmentedControlComponent),\r\n multi: true,\r\n },\r\n {\r\n provide: SOLARIS_SEGMENTED_CONTROL,\r\n useExisting: SolarisSegmentedControlComponent,\r\n },\r\n ],\r\n})\r\nexport class SolarisSegmentedControlComponent\r\n implements\r\n SolarisSegmentedControlInterface,\r\n ControlValueAccessor,\r\n AfterViewInit,\r\n OnDestroy\r\n{\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n private readonly elementRef = inject(ElementRef);\r\n private readonly injector = inject(Injector);\r\n private readonly ngZone = inject(NgZone);\r\n\r\n readonly items = contentChildren(SolarisSegmentedItemComponent);\r\n\r\n readonly invalid = input<boolean>(false);\r\n readonly indicator = input<boolean>(true);\r\n readonly disabled = input<boolean>(false);\r\n readonly readonly = input<boolean>(false);\r\n readonly required = input<boolean>(false);\r\n readonly fullWidth = input<boolean>(false);\r\n readonly equalWidth = input<boolean>(false);\r\n readonly value = model<unknown>(undefined);\r\n readonly defaultValue = input<unknown>(undefined);\r\n readonly compareFn = computed(() => this.compareWith());\r\n readonly ariaLabel = input<string | undefined>(undefined);\r\n readonly ariaLabelKey = input<string | undefined>(undefined);\r\n readonly ariaLabelledby = input<string | undefined>(undefined);\r\n readonly size = input<SolarisSegmentedControlSize>('md');\r\n readonly radius = input<SolarisSegmentedControlRadius>('md');\r\n readonly compareWith = input<(a: unknown, b: unknown) => boolean>(Object.is);\r\n readonly density = input<SolarisSegmentedControlDensity>('comfortable');\r\n readonly appearance = input<SolarisSegmentedControlAppearance>('surface');\r\n readonly orientation =\r\n input<SolarisSegmentedControlOrientation>('horizontal');\r\n\r\n readonly valueChange = output<unknown>();\r\n readonly segmentedChange = output<SolarisSegmentedControlChangeEvent>();\r\n\r\n protected readonly instanceId = `solaris-segmented-control-${nextInstanceId++}`;\r\n protected readonly touched = signal(false);\r\n protected readonly indicatorWidth = signal('0');\r\n protected readonly indicatorHeight = signal('0');\r\n protected readonly indicatorReady = signal(false);\r\n protected readonly internalDisabled = signal(false);\r\n protected readonly indicatorTransformX = signal('translateX(0)');\r\n protected readonly indicatorTransformY = signal('translateY(0)');\r\n\r\n private onChange: (value: unknown) => void = () => undefined;\r\n private onTouched: () => void = () => undefined;\r\n private resizeObserver: ResizeObserver | null = null;\r\n private contentObserver: MutationObserver | null = null;\r\n\r\n protected readonly isEffectivelyDisabled = computed(() => {\r\n return this.disabled() || this.internalDisabled();\r\n });\r\n\r\n protected readonly hasValue = computed(() => {\r\n return this.value() !== undefined && this.value() !== null;\r\n });\r\n\r\n protected readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaLabel()) return this.ariaLabel();\r\n const ariaLabelKey = this.ariaLabelKey();\r\n if (ariaLabelKey && this.translateService) {\r\n return this.translateService.translate(ariaLabelKey);\r\n }\r\n return ariaLabelKey ?? undefined;\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const defaultValue = this.defaultValue();\r\n const currentValue = this.value();\r\n if (currentValue === undefined && defaultValue !== undefined) {\r\n this.value.set(defaultValue);\r\n }\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setupIndicatorMeasurement();\r\n\r\n effect(\r\n () => {\r\n this.value();\r\n this.appearance();\r\n this.orientation();\r\n this.size();\r\n this.density();\r\n this.radius();\r\n this.ngZone.runOutsideAngular(() => {\r\n requestAnimationFrame(() => this.measureIndicator());\r\n });\r\n },\r\n { injector: this.injector },\r\n );\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.disconnectObserver();\r\n }\r\n\r\n selectItem(item: SolarisSegmentedItemComponent): void {\r\n if (this.isEffectivelyDisabled()) return;\r\n if (this.readonly()) return;\r\n const previousValue = this.value();\r\n const newValue = item.value();\r\n if (this.compareFn()(newValue, previousValue)) return;\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n this.segmentedChange.emit({ value: newValue, previousValue });\r\n this.onChange(newValue);\r\n this.markAsTouched();\r\n }\r\n\r\n focusItem(item: SolarisSegmentedItemComponent): void {\r\n // SECURITY_EXCEPTION: nativeElement.querySelector required to find item DOM element for programmatic focus. Standard DOM method, SSR-safe with guard.\r\n const nativeElement = this.elementRef.nativeElement as HTMLElement;\r\n const itemElements = nativeElement.querySelectorAll(\r\n 'solaris-segmented-item',\r\n ) as NodeListOf<HTMLElement>;\r\n const items = this.items();\r\n const index = items.indexOf(item);\r\n if (index >= 0 && itemElements[index]) {\r\n itemElements[index].focus();\r\n }\r\n }\r\n\r\n // ControlValueAccessor\r\n writeValue(safe: unknown): void {\r\n this.value.set(safe);\r\n this.ngZone.runOutsideAngular(() => {\r\n requestAnimationFrame(() => this.measureIndicator());\r\n });\r\n }\r\n\r\n registerOnChange(fn: (value: unknown) => void): void {\r\n this.onChange = fn;\r\n }\r\n\r\n registerOnTouched(fn: () => void): void {\r\n this.onTouched = fn;\r\n }\r\n\r\n setDisabledState(isDisabled: boolean): void {\r\n this.internalDisabled.set(isDisabled);\r\n }\r\n\r\n private markAsTouched(): void {\r\n if (!this.touched()) {\r\n this.touched.set(true);\r\n this.onTouched();\r\n }\r\n }\r\n\r\n private measureIndicator(): void {\r\n if (!this.indicator()) return;\r\n\r\n // SECURITY_EXCEPTION: nativeElement.querySelector required to measure indicator position for animation. Read-only measurement, SSR-safe.\r\n const nativeEl = this.elementRef.nativeElement as HTMLElement;\r\n const container = nativeEl.querySelector(\r\n '.solaris-segmented-control__container',\r\n ) as HTMLElement | null;\r\n if (!container) return;\r\n\r\n const selectedItem = container.querySelector(\r\n 'solaris-segmented-item[data-selected=\"true\"]',\r\n ) as HTMLElement | null;\r\n if (!selectedItem) return;\r\n\r\n const isVertical = this.orientation() === 'vertical';\r\n\r\n if (isVertical) {\r\n this.indicatorTransformY.set(`translateY(${selectedItem.offsetTop}px)`);\r\n this.indicatorHeight.set(`${selectedItem.offsetHeight}px`);\r\n } else {\r\n this.indicatorTransformX.set(`translateX(${selectedItem.offsetLeft}px)`);\r\n this.indicatorWidth.set(`${selectedItem.offsetWidth}px`);\r\n }\r\n\r\n if (!this.indicatorReady()) {\r\n requestAnimationFrame(() => this.indicatorReady.set(true));\r\n }\r\n }\r\n\r\n private setupIndicatorMeasurement(): void {\r\n if (typeof ResizeObserver !== 'undefined') {\r\n this.resizeObserver = new ResizeObserver(() => {\r\n this.ngZone.runOutsideAngular(() => {\r\n requestAnimationFrame(() => this.measureIndicator());\r\n });\r\n });\r\n // SECURITY_EXCEPTION: nativeElement required for ResizeObserver target. Standard DOM API, SSR-safe with typeof guard.\r\n const nativeEl = this.elementRef.nativeElement as HTMLElement;\r\n this.resizeObserver.observe(nativeEl);\r\n }\r\n\r\n if (typeof MutationObserver !== 'undefined') {\r\n // SECURITY_EXCEPTION: nativeElement required for MutationObserver target. Standard DOM API, SSR-safe with typeof guard.\r\n const nativeEl = this.elementRef.nativeElement as HTMLElement;\r\n this.contentObserver = new MutationObserver(() => {\r\n this.ngZone.runOutsideAngular(() => {\r\n requestAnimationFrame(() => this.measureIndicator());\r\n });\r\n });\r\n this.contentObserver.observe(nativeEl, {\r\n childList: true,\r\n subtree: true,\r\n characterData: true,\r\n });\r\n }\r\n\r\n this.ngZone.runOutsideAngular(() => {\r\n requestAnimationFrame(() => this.measureIndicator());\r\n });\r\n }\r\n\r\n private disconnectObserver(): void {\r\n this.resizeObserver?.disconnect();\r\n this.resizeObserver = null;\r\n this.contentObserver?.disconnect();\r\n this.contentObserver = null;\r\n }\r\n}\r\n","<div class=\"solaris-segmented-control__container\">\r\n <ng-content select=\"solaris-segmented-item\" />\r\n\r\n @if (indicator() && hasValue()) {\r\n <div\r\n class=\"solaris-segmented-control__indicator\"\r\n [class.solaris-segmented-control__indicator--animate]=\"indicatorReady()\"\r\n [class.solaris-segmented-control__indicator--vertical]=\"\r\n orientation() === 'vertical'\r\n \"\r\n [style.transform]=\"\r\n orientation() === 'vertical'\r\n ? indicatorTransformY()\r\n : indicatorTransformX()\r\n \"\r\n [style.width]=\"orientation() === 'vertical' ? '' : indicatorWidth()\"\r\n [style.height]=\"orientation() === 'vertical' ? indicatorHeight() : ''\"\r\n ></div>\r\n }\r\n</div>\r\n","import { Component, input, computed } from '@angular/core';\r\n\r\nimport type {\r\n SolarisDividerOrientation,\r\n SolarisDividerAppearance,\r\n SolarisDividerSpacing,\r\n SolarisDividerInset,\r\n SolarisDividerLength,\r\n} from '../model/divider.types';\r\n\r\n@Component({\r\n selector: 'solaris-divider',\r\n standalone: true,\r\n templateUrl: './divider.component.html',\r\n styleUrls: ['./divider.component.scss'],\r\n host: {\r\n '[attr.data-inset]': 'inset()',\r\n '[attr.role]': 'computedRole()',\r\n '[attr.data-spacing]': 'spacing()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.aria-hidden]': 'decorative() ? \"true\" : null',\r\n '[attr.aria-orientation]': 'computedAriaOrientation()',\r\n '[style.--solaris-divider-width]': 'computedWidth()',\r\n '[style.--solaris-divider-height]': 'computedHeight()',\r\n },\r\n})\r\nexport class SolarisDividerComponent {\r\n readonly orientation = input<SolarisDividerOrientation>('horizontal');\r\n readonly appearance = input<SolarisDividerAppearance>('subtle');\r\n readonly spacing = input<SolarisDividerSpacing>('md');\r\n readonly inset = input<SolarisDividerInset>('none');\r\n readonly decorative = input<boolean>(true);\r\n readonly width = input<SolarisDividerLength>('');\r\n readonly height = input<SolarisDividerLength>('');\r\n\r\n protected readonly computedRole = computed<string | null>(() => {\r\n return this.decorative() ? null : 'separator';\r\n });\r\n\r\n protected readonly computedAriaOrientation = computed<string | null>(() => {\r\n if (this.decorative()) return null;\r\n if (this.orientation() === 'vertical') return 'vertical';\r\n return null;\r\n });\r\n\r\n protected readonly computedWidth = computed<string | null>(() => {\r\n const w = this.width();\r\n return w ? w : null;\r\n });\r\n\r\n protected readonly computedHeight = computed<string | null>(() => {\r\n const h = this.height();\r\n return h ? h : null;\r\n });\r\n}\r\n","<ng-content />\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport interface SolarisDropdownNavigableItem {\r\n disabled(): boolean;\r\n focus(): void;\r\n label(): string | undefined;\r\n handleClick(): void;\r\n}\r\n\r\nexport const SOLARIS_DROPDOWN_NAVIGABLE_ITEM =\r\n new InjectionToken<SolarisDropdownNavigableItem>(\r\n 'SolarisDropdownNavigableItem',\r\n );\r\n","import {\r\n Component,\r\n input,\r\n contentChildren,\r\n signal,\r\n computed,\r\n viewChild,\r\n TemplateRef,\r\n} from '@angular/core';\r\n\r\nimport {\r\n SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\r\n type SolarisDropdownNavigableItem,\r\n} from '../model/dropdown-menu-navigation';\r\n\r\nimport type {\r\n SolarisDropdownMenuSize,\r\n SolarisDropdownMenuDensity,\r\n} from '../model/dropdown-menu.types';\r\n\r\nlet nextId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-menu',\r\n standalone: true,\r\n templateUrl: './dropdown-menu.component.html',\r\n styleUrls: ['./dropdown-menu.component.scss'],\r\n host: {\r\n '[id]': 'panelId',\r\n '[attr.role]': '\"menu\"',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-density]': 'density()',\r\n },\r\n})\r\nexport class SolarisDropdownMenuComponent {\r\n readonly size = input<SolarisDropdownMenuSize>('md');\r\n readonly density = input<SolarisDropdownMenuDensity>('comfortable');\r\n\r\n readonly navigableItems = contentChildren<SolarisDropdownNavigableItem>(\r\n SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\r\n );\r\n\r\n readonly contentTemplate = viewChild.required('contentTmpl', {\r\n read: TemplateRef,\r\n });\r\n\r\n readonly panelId = `solaris-dropdown-menu-${++nextId}`;\r\n\r\n readonly focusedIndex = signal(-1);\r\n\r\n readonly enabledNavigableItems = computed(() => {\r\n return this.navigableItems().filter((item) => !item.disabled());\r\n });\r\n\r\n focusFirstItem(): void {\r\n const enabled = this.enabledNavigableItems();\r\n if (enabled.length > 0) {\r\n const idx = this.navigableItems().indexOf(enabled[0]);\r\n this.focusedIndex.set(idx);\r\n enabled[0].focus();\r\n }\r\n }\r\n\r\n focusLastItem(): void {\r\n const enabled = this.enabledNavigableItems();\r\n const last = enabled.at(-1);\r\n if (last) {\r\n const idx = this.navigableItems().indexOf(last);\r\n this.focusedIndex.set(idx);\r\n last.focus();\r\n }\r\n }\r\n\r\n focusNextItem(): void {\r\n const items = this.navigableItems();\r\n const enabled = this.enabledNavigableItems();\r\n if (enabled.length === 0) return;\r\n\r\n const currentFocused = this.focusedIndex();\r\n const currentFocusedItem =\r\n currentFocused >= 0 ? items[currentFocused] : null;\r\n\r\n let currentEnabledIndex = -1;\r\n if (currentFocusedItem) {\r\n currentEnabledIndex = enabled.indexOf(currentFocusedItem);\r\n }\r\n\r\n const nextEnabledIndex = (currentEnabledIndex + 1) % enabled.length;\r\n const nextItem = enabled[nextEnabledIndex];\r\n const nextItemIndex = items.indexOf(nextItem);\r\n this.focusedIndex.set(nextItemIndex);\r\n nextItem.focus();\r\n }\r\n\r\n focusPreviousItem(): void {\r\n const items = this.navigableItems();\r\n const enabled = this.enabledNavigableItems();\r\n if (enabled.length === 0) return;\r\n\r\n const currentFocused = this.focusedIndex();\r\n const currentFocusedItem =\r\n currentFocused >= 0 ? items[currentFocused] : null;\r\n\r\n let currentEnabledIndex = -1;\r\n if (currentFocusedItem) {\r\n currentEnabledIndex = enabled.indexOf(currentFocusedItem);\r\n }\r\n\r\n const prevEnabledIndex =\r\n currentEnabledIndex <= 0 ? enabled.length - 1 : currentEnabledIndex - 1;\r\n const prevItem = enabled[prevEnabledIndex];\r\n const prevItemIndex = items.indexOf(prevItem);\r\n this.focusedIndex.set(prevItemIndex);\r\n prevItem.focus();\r\n }\r\n\r\n focusItemByLabel(label: string): void {\r\n const enabled = this.enabledNavigableItems();\r\n const lowerLabel = label.toLowerCase();\r\n const match = enabled.find((item) => {\r\n const itemLabel = item.label();\r\n return itemLabel?.toLowerCase().startsWith(lowerLabel);\r\n });\r\n if (match) {\r\n const idx = this.navigableItems().indexOf(match);\r\n this.focusedIndex.set(idx);\r\n match.focus();\r\n }\r\n }\r\n\r\n activateFocusedItem(): void {\r\n const items = this.navigableItems();\r\n const idx = this.focusedIndex();\r\n if (idx >= 0 && idx < items.length) {\r\n const item = items[idx];\r\n if (!item.disabled()) {\r\n item.handleClick();\r\n }\r\n }\r\n }\r\n}\r\n","<ng-template #contentTmpl>\r\n <div class=\"solaris-dropdown-menu__wrapper\">\r\n <ng-content />\r\n </div>\r\n</ng-template>\r\n","import {\r\n Directive,\r\n ElementRef,\r\n Injector,\r\n ViewContainerRef,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n output,\r\n signal,\r\n DestroyRef,\r\n HostListener,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Overlay,\r\n OverlayRef,\r\n OverlayConfig,\r\n FlexibleConnectedPositionStrategy,\r\n type ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { SolarisPopoverPanelComponent } from '../../popover';\r\nimport {\r\n SOLARIS_POPOVER_PANEL_DATA,\r\n type SolarisPopoverPanelData,\r\n} from '../../popover/token/popover.tokens';\r\nimport {\r\n getPrimaryPosition,\r\n getFallbackPositions,\r\n} from '../../popover/model/popover-position';\r\n\r\nimport { SolarisDropdownMenuComponent } from '../component/dropdown-menu.component';\r\n\r\nimport type {\r\n SolarisDropdownMenuPlacement,\r\n SolarisDropdownMenuAlign,\r\n SolarisDropdownMenuAppearance,\r\n SolarisDropdownMenuRadius,\r\n SolarisDropdownMenuScrollStrategy,\r\n} from '../model/dropdown-menu.types';\r\n\r\nlet nextTriggerId = 0;\r\n\r\n@Directive({\r\n selector: '[solaris-dropdown-menu-trigger]',\r\n standalone: true,\r\n host: {\r\n '[id]': 'triggerId',\r\n '[attr.aria-haspopup]': '\"menu\"',\r\n '[attr.aria-controls]': 'menuId()',\r\n '[attr.aria-expanded]': 'isOpen() ? \"true\" : \"false\"',\r\n },\r\n})\r\nexport class SolarisDropdownMenuTriggerDirective {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly injector = inject(Injector);\r\n private readonly overlay = inject(Overlay);\r\n\r\n readonly triggerId = `solaris-dropdown-menu-trigger-${++nextTriggerId}`;\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideClickCleanup: (() => void) | null = null;\r\n private keydownCleanup: (() => void) | null = null;\r\n private previousActiveElement: HTMLElement | null = null;\r\n private attachedMenu: SolarisDropdownMenuComponent | null = null;\r\n private positionStrategy: FlexibleConnectedPositionStrategy | null = null;\r\n\r\n protected readonly isOpen = signal(false);\r\n\r\n readonly solarisDropdownMenuTriggerFor = input<\r\n SolarisDropdownMenuComponent | undefined\r\n >(undefined, {\r\n alias: 'solarisDropdownMenuTriggerFor',\r\n });\r\n\r\n readonly solarisDropdownMenuOpen = input<boolean | undefined>(undefined, {\r\n alias: 'solarisDropdownMenuOpen',\r\n });\r\n\r\n readonly solarisDropdownMenuDisabled = input<boolean>(false, {\r\n alias: 'solarisDropdownMenuDisabled',\r\n });\r\n\r\n readonly solarisDropdownMenuPlacement = input<SolarisDropdownMenuPlacement>(\r\n 'bottom',\r\n {\r\n alias: 'solarisDropdownMenuPlacement',\r\n },\r\n );\r\n\r\n readonly solarisDropdownMenuAlign = input<SolarisDropdownMenuAlign>('start', {\r\n alias: 'solarisDropdownMenuAlign',\r\n });\r\n\r\n readonly solarisDropdownMenuOffset = input<number>(8, {\r\n alias: 'solarisDropdownMenuOffset',\r\n });\r\n\r\n readonly solarisDropdownMenuAppearance = input<SolarisDropdownMenuAppearance>(\r\n 'surface',\r\n {\r\n alias: 'solarisDropdownMenuAppearance',\r\n },\r\n );\r\n\r\n readonly solarisDropdownMenuRadius = input<SolarisDropdownMenuRadius>('md', {\r\n alias: 'solarisDropdownMenuRadius',\r\n });\r\n\r\n readonly solarisDropdownMenuCloseOnSelect = input<boolean>(true, {\r\n alias: 'solarisDropdownMenuCloseOnSelect',\r\n });\r\n\r\n readonly solarisDropdownMenuCloseOnEscape = input<boolean>(true, {\r\n alias: 'solarisDropdownMenuCloseOnEscape',\r\n });\r\n\r\n readonly solarisDropdownMenuCloseOnOutsideClick = input<boolean>(true, {\r\n alias: 'solarisDropdownMenuCloseOnOutsideClick',\r\n });\r\n\r\n readonly solarisDropdownMenuMatchTriggerWidth = input<boolean>(false, {\r\n alias: 'solarisDropdownMenuMatchTriggerWidth',\r\n });\r\n\r\n readonly solarisDropdownMenuMinWidth = input<string | number | undefined>(\r\n undefined,\r\n { alias: 'solarisDropdownMenuMinWidth' },\r\n );\r\n\r\n readonly solarisDropdownMenuMaxWidth = input<string | number | undefined>(\r\n undefined,\r\n { alias: 'solarisDropdownMenuMaxWidth' },\r\n );\r\n\r\n readonly solarisDropdownMenuRestoreFocus = input<boolean>(true, {\r\n alias: 'solarisDropdownMenuRestoreFocus',\r\n });\r\n\r\n readonly solarisDropdownMenuScrollStrategy =\r\n input<SolarisDropdownMenuScrollStrategy>('reposition', {\r\n alias: 'solarisDropdownMenuScrollStrategy',\r\n });\r\n\r\n readonly menuOpened = output<void>();\r\n readonly menuClosed = output<void>();\r\n readonly openChange = output<boolean>();\r\n\r\n protected readonly menuId = computed<string | null>(() => {\r\n return this.solarisDropdownMenuTriggerFor()?.panelId ?? null;\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const shouldBeOpen = this.solarisDropdownMenuOpen();\r\n if (shouldBeOpen === true && !this.isOpen()) {\r\n this.open();\r\n } else if (shouldBeOpen === false && this.isOpen()) {\r\n this.close();\r\n }\r\n });\r\n\r\n this.destroyRef.onDestroy(() => {\r\n this.disposeOverlay();\r\n });\r\n }\r\n\r\n @HostListener('click')\r\n onClick(): void {\r\n if (!this.solarisDropdownMenuDisabled()) {\r\n this.toggle();\r\n }\r\n }\r\n\r\n open(): void {\r\n if (this.isOpen() || this.solarisDropdownMenuDisabled()) {\r\n return;\r\n }\r\n\r\n // SECURITY_EXCEPTION: this.document.activeElement required for restoreFocus. SSR-safe via injected DOCUMENT.\r\n this.previousActiveElement = this.document.activeElement as HTMLElement;\r\n this.createOverlay();\r\n this.attachMenu();\r\n this.addOutsideClickHandler();\r\n this.updateOverlaySize();\r\n this.isOpen.set(true);\r\n this.menuOpened.emit();\r\n this.openChange.emit(true);\r\n }\r\n\r\n close(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n\r\n this.detachMenu();\r\n this.restoreFocus();\r\n this.isOpen.set(false);\r\n this.menuClosed.emit();\r\n this.openChange.emit(false);\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n private createOverlay(): void {\r\n this.disposeOverlay();\r\n\r\n this.positionStrategy = this.createPositionStrategy();\r\n const scrollStrategy = this.createScrollStrategy();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy: this.positionStrategy,\r\n scrollStrategy,\r\n disposeOnNavigation: true,\r\n panelClass: 'solaris-dropdown-menu-overlay',\r\n });\r\n\r\n this.overlayRef = this.overlay.create(config);\r\n }\r\n\r\n private createPositionStrategy(): FlexibleConnectedPositionStrategy {\r\n const placement = this.solarisDropdownMenuPlacement();\r\n const align = this.solarisDropdownMenuAlign();\r\n const offset = this.solarisDropdownMenuOffset();\r\n\r\n const primaryPosition = getPrimaryPosition(placement, align);\r\n const fallbackPositions = getFallbackPositions(placement, align);\r\n\r\n const calculateOffsetY = (pos: ConnectedPosition): number => {\r\n if (pos.originY === 'bottom' && pos.overlayY === 'top') {\r\n return offset;\r\n }\r\n if (pos.originY === 'top' && pos.overlayY === 'bottom') {\r\n return -offset;\r\n }\r\n return 0;\r\n };\r\n\r\n const calculateOffsetX = (pos: ConnectedPosition): number => {\r\n if (pos.originX === 'end' && pos.overlayX === 'start') {\r\n return offset;\r\n }\r\n if (pos.originX === 'start' && pos.overlayX === 'end') {\r\n return -offset;\r\n }\r\n return 0;\r\n };\r\n\r\n const allPositions = [primaryPosition, ...fallbackPositions].map((pos) => ({\r\n ...pos,\r\n offsetY: calculateOffsetY(pos),\r\n offsetX: calculateOffsetX(pos),\r\n }));\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions(allPositions)\r\n .withFlexibleDimensions(true)\r\n .withPush(true);\r\n }\r\n\r\n private createScrollStrategy() {\r\n const strategy = this.solarisDropdownMenuScrollStrategy();\r\n switch (strategy) {\r\n case 'reposition':\r\n return this.overlay.scrollStrategies.reposition();\r\n case 'close':\r\n return this.overlay.scrollStrategies.close();\r\n case 'block':\r\n return this.overlay.scrollStrategies.block();\r\n }\r\n }\r\n\r\n private attachMenu(): void {\r\n if (!this.overlayRef) {\r\n return;\r\n }\r\n\r\n const menu = this.solarisDropdownMenuTriggerFor();\r\n if (!menu) {\r\n return;\r\n }\r\n\r\n const data: SolarisPopoverPanelData = {\r\n contentTemplate: menu.contentTemplate(),\r\n appearance: this.solarisDropdownMenuAppearance(),\r\n padding: 'none',\r\n radius: this.solarisDropdownMenuRadius(),\r\n role: undefined,\r\n panelId: menu.panelId,\r\n autoFocus: false,\r\n };\r\n\r\n const panelInjector = Injector.create({\r\n parent: this.injector,\r\n providers: [{ provide: SOLARIS_POPOVER_PANEL_DATA, useValue: data }],\r\n });\r\n\r\n const portal = new ComponentPortal(\r\n SolarisPopoverPanelComponent,\r\n this.viewContainerRef,\r\n panelInjector,\r\n );\r\n\r\n this.overlayRef.attach(portal);\r\n\r\n this.attachedMenu = menu;\r\n\r\n this.addKeydownHandler();\r\n\r\n setTimeout(() => {\r\n menu.focusFirstItem();\r\n });\r\n }\r\n\r\n private detachMenu(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.detach();\r\n this.disposeOverlay();\r\n }\r\n this.removeOutsideClickHandler();\r\n this.removeKeydownHandler();\r\n this.attachedMenu = null;\r\n }\r\n\r\n private disposeOverlay(): void {\r\n if (this.overlayRef) {\r\n try {\r\n this.overlayRef.dispose();\r\n } catch {\r\n // Injector may already be destroyed during test teardown\r\n }\r\n this.overlayRef = null;\r\n }\r\n this.removeOutsideClickHandler();\r\n this.removeKeydownHandler();\r\n }\r\n\r\n private addOutsideClickHandler(): void {\r\n if (!this.solarisDropdownMenuCloseOnOutsideClick()) {\r\n return;\r\n }\r\n\r\n this.removeOutsideClickHandler();\r\n\r\n this.outsideClickCleanup = this.rendererListen(\r\n this.document,\r\n 'click',\r\n this.handleOutsideClick,\r\n );\r\n }\r\n\r\n private removeOutsideClickHandler(): void {\r\n if (this.outsideClickCleanup) {\r\n this.outsideClickCleanup();\r\n this.outsideClickCleanup = null;\r\n }\r\n }\r\n\r\n private readonly handleOutsideClick = (event: Event): void => {\r\n if (!this.solarisDropdownMenuCloseOnOutsideClick() || !this.overlayRef) {\r\n return;\r\n }\r\n\r\n const overlayElement = this.overlayRef.overlayElement;\r\n // SECURITY_EXCEPTION: nativeElement needed for outside-click containment check. ElementRef SSR-safe.\r\n const triggerElement = this.elementRef.nativeElement;\r\n const target = event.target as Node;\r\n\r\n if (!target) return;\r\n if (overlayElement.contains(target) || triggerElement.contains(target))\r\n return;\r\n\r\n // SECURITY_EXCEPTION: document.querySelectorAll required to find other dropdown overlays for outside-click. SSR-safe via injected DOCUMENT.\r\n const allDropdownOverlays = this.document.querySelectorAll<HTMLElement>(\r\n '.cdk-overlay-pane.solaris-dropdown-menu-overlay',\r\n );\r\n for (let i = 0; i < allDropdownOverlays.length; i++) {\r\n if (\r\n allDropdownOverlays[i] !== overlayElement &&\r\n allDropdownOverlays[i].contains(target)\r\n ) {\r\n return;\r\n }\r\n }\r\n\r\n this.close();\r\n };\r\n\r\n private addKeydownHandler(): void {\r\n this.removeKeydownHandler();\r\n if (!this.overlayRef) return;\r\n\r\n this.keydownCleanup = this.rendererListen(\r\n this.overlayRef.overlayElement,\r\n 'keydown',\r\n this.handleOverlayKeydown,\r\n );\r\n }\r\n\r\n private removeKeydownHandler(): void {\r\n if (this.keydownCleanup) {\r\n this.keydownCleanup();\r\n this.keydownCleanup = null;\r\n }\r\n }\r\n\r\n private readonly handleOverlayKeydown = (event: Event): void => {\r\n if (this.isOpen() && this.attachedMenu) {\r\n this.onKeydown(event as KeyboardEvent);\r\n }\r\n };\r\n\r\n private rendererListen(\r\n target: EventTarget,\r\n event: string,\r\n callback: (event: Event) => void,\r\n ): () => void {\r\n target.addEventListener(event, callback);\r\n return () => {\r\n target.removeEventListener(event, callback);\r\n };\r\n }\r\n\r\n private updateOverlaySize(): void {\r\n if (!this.overlayRef) {\r\n return;\r\n }\r\n\r\n const size: {\r\n width?: number | string;\r\n minWidth?: number | string;\r\n maxWidth?: number | string;\r\n } = {};\r\n\r\n // SECURITY_EXCEPTION: nativeElement.offsetWidth required for matchTriggerWidth. Read-only measurement.\r\n const triggerWidth = this.elementRef.nativeElement.offsetWidth;\r\n const matchWidth = this.solarisDropdownMenuMatchTriggerWidth();\r\n const minWidth = this.solarisDropdownMenuMinWidth();\r\n const maxWidth = this.solarisDropdownMenuMaxWidth();\r\n\r\n if (matchWidth) {\r\n size.width = triggerWidth;\r\n size.minWidth = triggerWidth;\r\n }\r\n\r\n if (minWidth !== undefined) {\r\n size.minWidth = typeof minWidth === 'number' ? `${minWidth}px` : minWidth;\r\n }\r\n\r\n if (maxWidth !== undefined) {\r\n size.maxWidth = typeof maxWidth === 'number' ? `${maxWidth}px` : maxWidth;\r\n }\r\n\r\n this.overlayRef.updateSize(size);\r\n }\r\n\r\n private restoreFocus(): void {\r\n if (\r\n this.solarisDropdownMenuRestoreFocus() &&\r\n this.previousActiveElement &&\r\n // SECURITY_EXCEPTION: this.document.contains() to safely verify trigger still exists before focus.\r\n this.document.contains(this.previousActiveElement)\r\n ) {\r\n this.previousActiveElement.focus();\r\n }\r\n this.previousActiveElement = null;\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n if (!this.isOpen() || !this.attachedMenu) {\r\n return;\r\n }\r\n\r\n const menu = this.attachedMenu;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n menu.focusNextItem();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n menu.focusPreviousItem();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n menu.focusFirstItem();\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n menu.focusLastItem();\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n menu.activateFocusedItem();\r\n break;\r\n case 'Escape':\r\n event.preventDefault();\r\n if (this.solarisDropdownMenuCloseOnEscape()) {\r\n this.close();\r\n }\r\n break;\r\n case 'Tab':\r\n this.close();\r\n break;\r\n default:\r\n if (\r\n event.key.length === 1 &&\r\n !event.ctrlKey &&\r\n !event.metaKey &&\r\n !event.altKey\r\n ) {\r\n menu.focusItemByLabel(event.key);\r\n }\r\n break;\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n computed,\r\n ElementRef,\r\n inject,\r\n HostListener,\r\n forwardRef,\r\n} from '@angular/core';\r\n\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\nimport type {\r\n SolarisDropdownMenuItemColor,\r\n SolarisDropdownMenuItemType,\r\n} from '../model/dropdown-menu.types';\r\nimport { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-menu-item',\r\n standalone: true,\r\n imports: [SolarisIconComponent],\r\n providers: [\r\n {\r\n provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\r\n useExisting: forwardRef(() => SolarisDropdownMenuItemComponent),\r\n },\r\n ],\r\n templateUrl: './dropdown-menu-item.component.html',\r\n styleUrls: ['./dropdown-menu-item.component.scss'],\r\n host: {\r\n '[attr.data-type]': 'type()',\r\n '[attr.data-color]': 'color()',\r\n '[attr.role]': 'computedRole()',\r\n class: 'solaris-dropdown-menu-item',\r\n '[attr.tabindex]': 'tabIndexValue()',\r\n '[attr.aria-checked]': 'computedAriaChecked()',\r\n '[attr.data-checked]': 'checked() ? \"\" : null',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.data-has-leading]': 'hasLeadingContent() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisDropdownMenuItemComponent {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n readonly color = input<SolarisDropdownMenuItemColor>('neutral');\r\n readonly type = input<SolarisDropdownMenuItemType>('item');\r\n readonly closeOnSelect = input<boolean | undefined>(undefined);\r\n readonly descriptionKey = input<string | undefined>(undefined);\r\n readonly description = input<string | undefined>(undefined);\r\n readonly checked = input<boolean | undefined>(undefined);\r\n readonly labelKey = input<string | undefined>(undefined);\r\n readonly shortcut = input<string | undefined>(undefined);\r\n readonly label = input<string | undefined>(undefined);\r\n readonly icon = input<string | undefined>(undefined);\r\n readonly iconDecorative = input<boolean>(false);\r\n readonly value = input<unknown>(undefined);\r\n readonly disabled = input<boolean>(false);\r\n\r\n readonly itemSelected = output<void>();\r\n\r\n protected readonly computedRole = computed<string>(() => {\r\n const t = this.type();\r\n if (t === 'checkbox') return 'menuitemcheckbox';\r\n if (t === 'radio') return 'menuitemradio';\r\n return 'menuitem';\r\n });\r\n\r\n protected readonly computedAriaChecked = computed<string | null>(() => {\r\n const t = this.type();\r\n if (t === 'checkbox' || t === 'radio') {\r\n return this.checked() ? 'true' : 'false';\r\n }\r\n return null;\r\n });\r\n\r\n protected readonly tabIndexValue = computed<string>(() => {\r\n return this.disabled() ? '-1' : '0';\r\n });\r\n\r\n protected readonly hasLeadingContent = computed(() => {\r\n return !!(\r\n this.icon() ||\r\n this.type() === 'checkbox' ||\r\n this.type() === 'radio'\r\n );\r\n });\r\n\r\n @HostListener('click')\r\n handleClick(): void {\r\n if (this.disabled()) return;\r\n this.itemSelected.emit();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.disabled()) return;\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.handleClick();\r\n }\r\n }\r\n\r\n focus(): void {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.\r\n this.elementRef.nativeElement.focus();\r\n }\r\n}\r\n","@if (hasLeadingContent()) {\r\n <div class=\"solaris-dropdown-menu-item__leading\">\r\n @if (type() === 'checkbox') {\r\n <span\r\n class=\"solaris-dropdown-menu-item__checkbox\"\r\n [class.solaris-dropdown-menu-item__checkbox--checked]=\"checked()\"\r\n aria-hidden=\"true\"\r\n >\r\n @if (checked()) {\r\n <span class=\"solaris-dropdown-menu-item__checkbox-icon\">\r\n <solaris-icon name=\"check\" [decorative]=\"true\" />\r\n </span>\r\n }\r\n </span>\r\n } @else if (type() === 'radio') {\r\n <span\r\n class=\"solaris-dropdown-menu-item__radio\"\r\n [class.solaris-dropdown-menu-item__radio--checked]=\"checked()\"\r\n aria-hidden=\"true\"\r\n >\r\n @if (checked()) {\r\n <span class=\"solaris-dropdown-menu-item__radio-dot\"></span>\r\n }\r\n </span>\r\n } @else {\r\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\r\n }\r\n </div>\r\n}\r\n<div class=\"solaris-dropdown-menu-item__content\">\r\n @if (label()) {\r\n <span class=\"solaris-dropdown-menu-item__label\">{{ label() }}</span>\r\n }\r\n @if (description()) {\r\n <span class=\"solaris-dropdown-menu-item__description\">{{\r\n description()\r\n }}</span>\r\n }\r\n</div>\r\n@if (shortcut()) {\r\n <span class=\"solaris-dropdown-menu-item__shortcut\" aria-hidden=\"true\">{{\r\n shortcut()\r\n }}</span>\r\n}\r\n","import { Component, input } from '@angular/core';\r\n\r\nlet nextLabelId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-menu-label',\r\n standalone: true,\r\n template:\r\n '<span class=\"solaris-dropdown-menu-label__text\">{{ label() }}</span>',\r\n host: {\r\n '[id]': 'labelId',\r\n class: 'solaris-dropdown-menu-label',\r\n },\r\n})\r\nexport class SolarisDropdownMenuLabelComponent {\r\n readonly label = input.required<string>();\r\n\r\n readonly labelId = `solaris-dropdown-menu-label-${++nextLabelId}`;\r\n}\r\n","import { Component, contentChild, computed } from '@angular/core';\r\n\r\nimport { SolarisDropdownMenuLabelComponent } from './dropdown-menu-label.component';\r\n\r\nlet nextGroupId = 0;\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-menu-group',\r\n standalone: true,\r\n templateUrl: './dropdown-menu-group.component.html',\r\n host: {\r\n '[attr.role]': 'computedRole()',\r\n '[id]': 'groupId',\r\n class: 'solaris-dropdown-menu-group',\r\n '[attr.aria-labelledby]': 'labelId()',\r\n },\r\n})\r\nexport class SolarisDropdownMenuGroupComponent {\r\n readonly labelChild = contentChild(SolarisDropdownMenuLabelComponent);\r\n\r\n readonly groupId = `solaris-dropdown-menu-group-${++nextGroupId}`;\r\n\r\n protected readonly labelId = computed<string | null>(() => {\r\n const label = this.labelChild();\r\n return label ? label.labelId : null;\r\n });\r\n\r\n protected readonly computedRole = computed<string | null>(() => {\r\n return this.labelId() ? 'group' : null;\r\n });\r\n}\r\n","<ng-content />\r\n","import {\r\n Component,\r\n ElementRef,\r\n HostListener,\r\n inject,\r\n input,\r\n computed,\r\n forwardRef,\r\n} from '@angular/core';\r\n\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\nimport type { SolarisDropdownMenuItemColor } from '../model/dropdown-menu.types';\r\nimport { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';\r\nimport { SolarisDropdownSubmenuComponent } from './dropdown-submenu.component';\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-submenu-trigger',\r\n standalone: true,\r\n imports: [SolarisIconComponent],\r\n providers: [\r\n {\r\n provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\r\n useExisting: forwardRef(() => SolarisDropdownSubmenuTriggerComponent),\r\n },\r\n ],\r\n templateUrl: './dropdown-submenu-trigger.component.html',\r\n styleUrls: ['./dropdown-submenu-trigger.component.scss'],\r\n host: {\r\n '[attr.role]': '\"menuitem\"',\r\n '[attr.data-color]': 'color()',\r\n '[attr.aria-haspopup]': '\"menu\"',\r\n class: 'solaris-dropdown-submenu-trigger',\r\n '[attr.aria-controls]': 'submenuPanelId()',\r\n '[attr.tabindex]': 'disabled() ? \"-1\" : \"0\"',\r\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\r\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\r\n '[attr.aria-expanded]': 'isSubmenuOpen() ? \"true\" : \"false\"',\r\n },\r\n})\r\nexport class SolarisDropdownSubmenuTriggerComponent {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly submenu = inject(SolarisDropdownSubmenuComponent, {\r\n optional: true,\r\n });\r\n\r\n readonly icon = input<string | undefined>(undefined);\r\n readonly label = input<string | undefined>(undefined);\r\n readonly labelKey = input<string | undefined>(undefined);\r\n readonly disabled = input<boolean>(false);\r\n readonly color = input<SolarisDropdownMenuItemColor>('neutral');\r\n\r\n protected readonly isSubmenuOpen = computed(() => {\r\n return this.submenu?.isOpen() ?? false;\r\n });\r\n\r\n protected readonly submenuPanelId = computed(() => {\r\n return this.submenu?.nestedMenuPanelId() ?? null;\r\n });\r\n\r\n protected readonly hasLeadingContent = computed(() => !!this.icon());\r\n\r\n @HostListener('click')\r\n handleClick(): void {\r\n if (this.disabled()) return;\r\n this.submenu?.toggle();\r\n }\r\n\r\n @HostListener('mouseenter')\r\n onMouseEnter(): void {\r\n if (this.disabled()) return;\r\n this.submenu?.onTriggerHover();\r\n }\r\n\r\n @HostListener('mouseleave')\r\n onMouseLeave(): void {\r\n if (this.disabled()) return;\r\n this.submenu?.onTriggerLeave();\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeydown(event: KeyboardEvent): void {\r\n if (this.disabled()) return;\r\n if (event.key === 'Enter' || event.key === ' ') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.submenu?.toggle();\r\n } else if (event.key === 'ArrowRight') {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n this.submenu?.open();\r\n }\r\n }\r\n\r\n focus(): void {\r\n // SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.\r\n this.elementRef.nativeElement.focus();\r\n }\r\n}\r\n","<div class=\"solaris-dropdown-submenu-trigger__wrapper\">\r\n @if (hasLeadingContent()) {\r\n <div class=\"solaris-dropdown-submenu-trigger__leading\">\r\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\r\n </div>\r\n }\r\n <div class=\"solaris-dropdown-submenu-trigger__content\">\r\n <ng-content></ng-content>\r\n @if (label()) {\r\n <span class=\"solaris-dropdown-submenu-trigger__label\">{{ label() }}</span>\r\n }\r\n </div>\r\n <div class=\"solaris-dropdown-submenu-trigger__trailing\">\r\n <solaris-icon name=\"chevron-right\" aria-hidden=\"true\" />\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n Injector,\r\n ViewContainerRef,\r\n contentChild,\r\n computed,\r\n input,\r\n signal,\r\n inject,\r\n DestroyRef,\r\n} from '@angular/core';\r\nimport { DOCUMENT } from '@angular/common';\r\nimport {\r\n Overlay,\r\n OverlayRef,\r\n OverlayConfig,\r\n FlexibleConnectedPositionStrategy,\r\n type ConnectedPosition,\r\n} from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\n\r\nimport { SolarisPopoverPanelComponent } from '../../popover';\r\nimport {\r\n SOLARIS_POPOVER_PANEL_DATA,\r\n type SolarisPopoverPanelData,\r\n} from '../../popover/token/popover.tokens';\r\n\r\nimport { SolarisDropdownMenuComponent } from './dropdown-menu.component';\r\nimport { SolarisDropdownSubmenuTriggerComponent } from './dropdown-submenu-trigger.component';\r\n\r\nimport type {\r\n SolarisDropdownSubmenuOpenMode,\r\n SolarisDropdownSubmenuPlacement,\r\n} from '../model/dropdown-submenu.types';\r\n\r\n@Component({\r\n selector: 'solaris-dropdown-submenu',\r\n standalone: true,\r\n template: '<ng-content />',\r\n host: {\r\n class: 'solaris-dropdown-submenu',\r\n },\r\n})\r\nexport class SolarisDropdownSubmenuComponent {\r\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly viewContainerRef = inject(ViewContainerRef);\r\n private readonly destroyRef = inject(DestroyRef);\r\n private readonly document = inject(DOCUMENT);\r\n private readonly injector = inject(Injector);\r\n private readonly overlay = inject(Overlay);\r\n\r\n readonly openMode = input<SolarisDropdownSubmenuOpenMode>('hover-click');\r\n readonly placement = input<SolarisDropdownSubmenuPlacement>('right-start');\r\n readonly matchTriggerWidth = input<boolean>(false);\r\n readonly minWidth = input<string | null>(null);\r\n readonly maxWidth = input<string | null>(null);\r\n readonly openDelay = input<number>(120);\r\n readonly closeDelay = input<number>(160);\r\n readonly disabled = input<boolean>(false);\r\n\r\n readonly nestedMenu = contentChild(SolarisDropdownMenuComponent);\r\n readonly triggerChild = contentChild(SolarisDropdownSubmenuTriggerComponent);\r\n\r\n readonly nestedMenuPanelId = computed<string | null>(() => {\r\n return this.nestedMenu()?.panelId ?? null;\r\n });\r\n\r\n readonly isOpen = signal(false);\r\n\r\n private overlayRef: OverlayRef | null = null;\r\n private outsideClickCleanup: (() => void) | null = null;\r\n private keydownCleanup: (() => void) | null = null;\r\n private itemClickCleanup: (() => void) | null = null;\r\n private panelMouseEnterCleanup: (() => void) | null = null;\r\n private panelMouseLeaveCleanup: (() => void) | null = null;\r\n private openTimer: ReturnType<typeof setTimeout> | null = null;\r\n private closeTimer: ReturnType<typeof setTimeout> | null = null;\r\n\r\n constructor() {\r\n // SECURITY_EXCEPTION: nativeElement required to store submenu reference. SSR-safe via ElementRef.\r\n (this.elementRef.nativeElement as unknown as Record<string, unknown>)[\r\n '__solarisSubmenu'\r\n ] = this;\r\n // SECURITY_EXCEPTION: nativeElement.addEventListener required for custom events. SSR-safe.\r\n this.elementRef.nativeElement.addEventListener(\r\n 'solaris-submenu-child-opened',\r\n () => this.clearCloseTimer(),\r\n );\r\n // SECURITY_EXCEPTION: nativeElement.addEventListener required for custom events. SSR-safe.\r\n this.elementRef.nativeElement.addEventListener(\r\n 'solaris-submenu-child-closed',\r\n () => {\r\n if (\r\n this.isOpen() &&\r\n !this.isPointerInside() &&\r\n !this.hasOpenChildSubmenu()\r\n ) {\r\n this.close();\r\n }\r\n },\r\n );\r\n this.destroyRef.onDestroy(() => {\r\n if (this.overlayRef) {\r\n this.overlayRef = null;\r\n }\r\n this.clearTimers();\r\n });\r\n }\r\n\r\n toggle(): void {\r\n if (this.isOpen()) {\r\n this.close();\r\n } else {\r\n this.open();\r\n }\r\n }\r\n\r\n open(): void {\r\n if (this.isOpen() || this.disabled()) {\r\n return;\r\n }\r\n this.closeSiblingSubmenus();\r\n this.clearTimers();\r\n this.createOverlay();\r\n this.attachMenu();\r\n this.addOutsideClickHandler();\r\n this.addKeydownHandler();\r\n this.addItemClickHandler();\r\n this.addPanelMouseHandlers();\r\n this.isOpen.set(true);\r\n this.notifyParentKeepAlive();\r\n }\r\n\r\n close(): void {\r\n if (!this.isOpen()) {\r\n return;\r\n }\r\n this.detachMenu();\r\n this.isOpen.set(false);\r\n this.triggerChild()?.focus();\r\n this.notifyParentChildClosed();\r\n }\r\n\r\n onTriggerHover(): void {\r\n if (!this.openMode().includes('hover')) {\r\n return;\r\n }\r\n this.clearCloseTimer();\r\n if (!this.isOpen()) {\r\n this.openTimer = setTimeout(() => {\r\n this.open();\r\n }, this.openDelay());\r\n }\r\n }\r\n\r\n onTriggerLeave(): void {\r\n if (!this.openMode().includes('hover')) {\r\n return;\r\n }\r\n if (this.hasOpenChildSubmenu()) {\r\n return;\r\n }\r\n this.clearOpenTimer();\r\n this.closeTimer = setTimeout(() => {\r\n if (!this.isPointerInside()) {\r\n this.close();\r\n }\r\n }, this.closeDelay());\r\n }\r\n\r\n private addPanelMouseHandlers(): void {\r\n this.removePanelMouseHandlers();\r\n if (!this.overlayRef) return;\r\n\r\n this.panelMouseEnterCleanup = this.rendererListen(\r\n this.overlayRef.overlayElement,\r\n 'mouseenter',\r\n () => this.clearCloseTimer(),\r\n );\r\n\r\n this.panelMouseLeaveCleanup = this.rendererListen(\r\n this.overlayRef.overlayElement,\r\n 'mouseleave',\r\n () => {\r\n if (!this.openMode().includes('hover')) return;\r\n if (this.hasOpenChildSubmenu()) return;\r\n this.closeTimer = setTimeout(() => {\r\n this.close();\r\n }, this.closeDelay());\r\n },\r\n );\r\n }\r\n\r\n private removePanelMouseHandlers(): void {\r\n if (this.panelMouseEnterCleanup) {\r\n this.panelMouseEnterCleanup();\r\n this.panelMouseEnterCleanup = null;\r\n }\r\n if (this.panelMouseLeaveCleanup) {\r\n this.panelMouseLeaveCleanup();\r\n this.panelMouseLeaveCleanup = null;\r\n }\r\n }\r\n\r\n private isPointerInside(): boolean {\r\n // SECURITY_EXCEPTION: nativeElement required for hover detection via ElementRef. Read-only, SSR-safe.\r\n const triggerEl = this.elementRef.nativeElement;\r\n const overlayEl = this.overlayRef?.overlayElement;\r\n if (overlayEl) {\r\n return triggerEl.matches(':hover') || overlayEl.matches(':hover');\r\n }\r\n return triggerEl.matches(':hover');\r\n }\r\n\r\n private notifyParentKeepAlive(): void {\r\n // SECURITY_EXCEPTION: nativeElement.dispatchEvent required for custom event. SSR-safe.\r\n this.elementRef.nativeElement.dispatchEvent(\r\n new CustomEvent('solaris-submenu-child-opened', {\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n private notifyParentChildClosed(): void {\r\n // SECURITY_EXCEPTION: nativeElement.dispatchEvent required for custom event. SSR-safe.\r\n this.elementRef.nativeElement.dispatchEvent(\r\n new CustomEvent('solaris-submenu-child-closed', {\r\n bubbles: true,\r\n composed: true,\r\n }),\r\n );\r\n }\r\n\r\n private hasOpenChildSubmenu(): boolean {\r\n if (!this.overlayRef) return false;\r\n const overlayEl = this.overlayRef.overlayElement;\r\n const childSubmenus = overlayEl.querySelectorAll<HTMLElement>(\r\n 'solaris-dropdown-submenu',\r\n );\r\n for (let i = 0; i < childSubmenus.length; i++) {\r\n const child = childSubmenus[i] as unknown as Record<string, unknown>;\r\n const submenu = child['__solarisSubmenu'] as\r\n | SolarisDropdownSubmenuComponent\r\n | undefined;\r\n if (submenu?.isOpen()) return true;\r\n }\r\n return false;\r\n }\r\n\r\n private closeSiblingSubmenus(): void {\r\n // SECURITY_EXCEPTION: nativeElement.parentElement required to traverse DOM. Read-only, SSR-safe.\r\n const parent = this.elementRef.nativeElement.parentElement;\r\n if (!parent) return;\r\n const siblings = parent.querySelectorAll<HTMLElement>(\r\n ':scope > solaris-dropdown-submenu',\r\n );\r\n for (let i = 0; i < siblings.length; i++) {\r\n const sibling = siblings[i];\r\n // SECURITY_EXCEPTION: nativeElement identity comparison. Read-only, SSR-safe.\r\n if (sibling !== this.elementRef.nativeElement) {\r\n const submenu = (sibling as unknown as Record<string, unknown>)[\r\n '__solarisSubmenu'\r\n ] as SolarisDropdownSubmenuComponent | undefined;\r\n submenu?.close();\r\n }\r\n }\r\n }\r\n\r\n private createOverlay(): void {\r\n this.disposeOverlay();\r\n\r\n const positionStrategy = this.createPositionStrategy();\r\n const scrollStrategy = this.overlay.scrollStrategies.reposition();\r\n\r\n const config = new OverlayConfig({\r\n positionStrategy,\r\n scrollStrategy,\r\n disposeOnNavigation: true,\r\n panelClass: 'solaris-dropdown-menu-overlay',\r\n });\r\n\r\n this.overlayRef = this.overlay.create(config);\r\n }\r\n\r\n private createPositionStrategy(): FlexibleConnectedPositionStrategy {\r\n const positions = this.getPositions();\r\n\r\n return this.overlay\r\n .position()\r\n .flexibleConnectedTo(this.elementRef)\r\n .withPositions(positions)\r\n .withFlexibleDimensions(true)\r\n .withPush(true);\r\n }\r\n\r\n private getPositions(): ConnectedPosition[] {\r\n const placement = this.placement();\r\n const offset = 16;\r\n\r\n let primary: ConnectedPosition;\r\n let fallbacks: ConnectedPosition[];\r\n\r\n switch (placement) {\r\n case 'right-start':\r\n primary = {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: offset,\r\n };\r\n fallbacks = [\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -offset,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: offset,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetX: -offset,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: offset,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -offset,\r\n },\r\n ];\r\n break;\r\n case 'right':\r\n primary = {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: offset,\r\n };\r\n fallbacks = [\r\n {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -offset,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: offset,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -offset,\r\n },\r\n ];\r\n break;\r\n case 'right-end':\r\n primary = {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: offset,\r\n };\r\n fallbacks = [\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetX: -offset,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: offset,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -offset,\r\n },\r\n ];\r\n break;\r\n case 'left-start':\r\n primary = {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -offset,\r\n };\r\n fallbacks = [\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: offset,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetX: -offset,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: offset,\r\n },\r\n ];\r\n break;\r\n case 'left':\r\n primary = {\r\n originX: 'start',\r\n originY: 'center',\r\n overlayX: 'end',\r\n overlayY: 'center',\r\n offsetX: -offset,\r\n };\r\n fallbacks = [\r\n {\r\n originX: 'end',\r\n originY: 'center',\r\n overlayX: 'start',\r\n overlayY: 'center',\r\n offsetX: offset,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -offset,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: offset,\r\n },\r\n ];\r\n break;\r\n case 'left-end':\r\n primary = {\r\n originX: 'start',\r\n originY: 'bottom',\r\n overlayX: 'end',\r\n overlayY: 'bottom',\r\n offsetX: -offset,\r\n };\r\n fallbacks = [\r\n {\r\n originX: 'end',\r\n originY: 'bottom',\r\n overlayX: 'start',\r\n overlayY: 'bottom',\r\n offsetX: offset,\r\n },\r\n {\r\n originX: 'start',\r\n originY: 'top',\r\n overlayX: 'end',\r\n overlayY: 'top',\r\n offsetX: -offset,\r\n },\r\n {\r\n originX: 'end',\r\n originY: 'top',\r\n overlayX: 'start',\r\n overlayY: 'top',\r\n offsetX: offset,\r\n },\r\n ];\r\n break;\r\n }\r\n\r\n return [primary, ...fallbacks];\r\n }\r\n\r\n private attachMenu(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const menu = this.nestedMenu();\r\n if (!menu) return;\r\n\r\n const data: SolarisPopoverPanelData = {\r\n contentTemplate: menu.contentTemplate(),\r\n appearance: 'surface',\r\n padding: 'none',\r\n radius: 'md',\r\n role: undefined,\r\n panelId: menu.panelId,\r\n autoFocus: false,\r\n };\r\n\r\n const panelInjector = Injector.create({\r\n parent: this.injector,\r\n providers: [{ provide: SOLARIS_POPOVER_PANEL_DATA, useValue: data }],\r\n });\r\n\r\n const portal = new ComponentPortal(\r\n SolarisPopoverPanelComponent,\r\n this.viewContainerRef,\r\n panelInjector,\r\n );\r\n\r\n this.overlayRef.attach(portal);\r\n\r\n this.updateOverlaySize();\r\n\r\n setTimeout(() => {\r\n menu.focusFirstItem();\r\n });\r\n }\r\n\r\n private detachMenu(): void {\r\n if (this.overlayRef) {\r\n this.overlayRef.detach();\r\n this.disposeOverlay();\r\n }\r\n this.removeOutsideClickHandler();\r\n this.removeKeydownHandler();\r\n }\r\n\r\n private disposeOverlay(): void {\r\n if (this.overlayRef) {\r\n try {\r\n this.overlayRef.dispose();\r\n } catch {\r\n // Injector may already be destroyed during test teardown\r\n }\r\n this.overlayRef = null;\r\n }\r\n this.removeOutsideClickHandler();\r\n this.removeKeydownHandler();\r\n this.removeItemClickHandler();\r\n this.removePanelMouseHandlers();\r\n }\r\n\r\n private addOutsideClickHandler(): void {\r\n this.removeOutsideClickHandler();\r\n this.outsideClickCleanup = this.rendererListen(\r\n this.document,\r\n 'click',\r\n this.handleOutsideClick,\r\n );\r\n }\r\n\r\n private removeOutsideClickHandler(): void {\r\n if (this.outsideClickCleanup) {\r\n this.outsideClickCleanup();\r\n this.outsideClickCleanup = null;\r\n }\r\n }\r\n\r\n private readonly handleOutsideClick = (event: Event): void => {\r\n if (!this.overlayRef) return;\r\n\r\n const overlayElement = this.overlayRef.overlayElement;\r\n // SECURITY_EXCEPTION: nativeElement needed for outside-click containment check. ElementRef SSR-safe.\r\n const triggerElement = this.elementRef.nativeElement;\r\n const target = event.target as Node;\r\n\r\n if (!target) return;\r\n if (overlayElement.contains(target) || triggerElement.contains(target))\r\n return;\r\n if (this.hasOpenChildSubmenu()) return;\r\n\r\n this.close();\r\n };\r\n\r\n private addItemClickHandler(): void {\r\n this.removeItemClickHandler();\r\n if (!this.overlayRef) return;\r\n\r\n this.itemClickCleanup = this.rendererListen(\r\n this.overlayRef.overlayElement,\r\n 'click',\r\n this.handleItemClick,\r\n );\r\n }\r\n\r\n private removeItemClickHandler(): void {\r\n if (this.itemClickCleanup) {\r\n this.itemClickCleanup();\r\n this.itemClickCleanup = null;\r\n }\r\n }\r\n\r\n private readonly handleItemClick = (event: Event): void => {\r\n if (!this.overlayRef) return;\r\n const target = event.target as HTMLElement;\r\n if (target.closest('solaris-dropdown-menu-item')) {\r\n this.close();\r\n }\r\n };\r\n\r\n private addKeydownHandler(): void {\r\n this.removeKeydownHandler();\r\n if (!this.overlayRef) return;\r\n\r\n this.keydownCleanup = this.rendererListen(\r\n this.overlayRef.overlayElement,\r\n 'keydown',\r\n this.handleOverlayKeydown,\r\n );\r\n }\r\n\r\n private removeKeydownHandler(): void {\r\n if (this.keydownCleanup) {\r\n this.keydownCleanup();\r\n this.keydownCleanup = null;\r\n }\r\n }\r\n\r\n private readonly handleOverlayKeydown = (event: Event): void => {\r\n if (this.isOpen() && this.nestedMenu()) {\r\n this.handleKeydown(event as KeyboardEvent);\r\n }\r\n };\r\n\r\n handleKeydown(event: KeyboardEvent): void {\r\n const menu = this.nestedMenu();\r\n if (!menu) return;\r\n\r\n switch (event.key) {\r\n case 'ArrowDown':\r\n event.preventDefault();\r\n menu.focusNextItem();\r\n break;\r\n case 'ArrowUp':\r\n event.preventDefault();\r\n menu.focusPreviousItem();\r\n break;\r\n case 'Home':\r\n event.preventDefault();\r\n menu.focusFirstItem();\r\n break;\r\n case 'End':\r\n event.preventDefault();\r\n menu.focusLastItem();\r\n break;\r\n case 'Enter':\r\n case ' ':\r\n event.preventDefault();\r\n menu.activateFocusedItem();\r\n this.close();\r\n break;\r\n case 'ArrowLeft':\r\n case 'Escape':\r\n event.preventDefault();\r\n this.close();\r\n break;\r\n default:\r\n if (\r\n event.key.length === 1 &&\r\n !event.ctrlKey &&\r\n !event.metaKey &&\r\n !event.altKey\r\n ) {\r\n menu.focusItemByLabel(event.key);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n private rendererListen(\r\n target: EventTarget,\r\n event: string,\r\n callback: (event: Event) => void,\r\n ): () => void {\r\n target.addEventListener(event, callback);\r\n return () => {\r\n target.removeEventListener(event, callback);\r\n };\r\n }\r\n\r\n private updateOverlaySize(): void {\r\n if (!this.overlayRef) return;\r\n\r\n const size: {\r\n width?: number | string;\r\n minWidth?: number | string;\r\n maxWidth?: number | string;\r\n } = {};\r\n\r\n const minW = this.minWidth();\r\n const maxW = this.maxWidth();\r\n\r\n if (minW !== null) {\r\n size.minWidth = minW;\r\n }\r\n\r\n if (maxW !== null) {\r\n size.maxWidth = maxW;\r\n }\r\n\r\n this.overlayRef.updateSize(size);\r\n }\r\n\r\n private clearTimers(): void {\r\n this.clearOpenTimer();\r\n this.clearCloseTimer();\r\n }\r\n\r\n private clearOpenTimer(): void {\r\n if (this.openTimer) {\r\n clearTimeout(this.openTimer);\r\n this.openTimer = null;\r\n }\r\n }\r\n\r\n private clearCloseTimer(): void {\r\n if (this.closeTimer) {\r\n clearTimeout(this.closeTimer);\r\n this.closeTimer = null;\r\n }\r\n }\r\n}\r\n","import {\r\n Component,\r\n input,\r\n output,\r\n model,\r\n computed,\r\n signal,\r\n viewChildren,\r\n inject,\r\n ChangeDetectionStrategy,\r\n TemplateRef,\r\n NgZone,\r\n effect,\r\n} from '@angular/core';\r\nimport { NgTemplateOutlet } from '@angular/common';\r\n\r\nimport { SolarisTranslateService } from '../../../../services/translation';\r\nimport {\r\n SolarisTabPanelComponent,\r\n SolarisTabsComponent,\r\n SolarisTabComponent,\r\n} from '../../tabs';\r\nimport {\r\n SolarisDropdownMenuTriggerDirective,\r\n SolarisDropdownMenuItemComponent,\r\n SolarisDropdownMenuComponent,\r\n} from '../../../interaction/dropdown-menu';\r\nimport { SolarisDividerComponent } from '../../../data-display/divider';\r\nimport { SolarisIconComponent } from '../../../icon';\r\n\r\nimport type {\r\n SolarisEditableTabData,\r\n SolarisEditableTabAction,\r\n SolarisEditableTabRenameEvent,\r\n SolarisEditableTabRemoveEvent,\r\n SolarisEditableTabMoveEvent,\r\n SolarisEditableTabDefaultChangeEvent,\r\n SolarisEditableTabActionEvent,\r\n SolarisEditableTabMoveDirection,\r\n SolarisEditableTabsOrientation,\r\n SolarisEditableTabsAppearance,\r\n SolarisEditableTabsSize,\r\n SolarisEditableTabsDensity,\r\n SolarisEditableTabsActivationMode,\r\n SolarisEditableTabsContentTransition,\r\n SolarisEditableTabsShowActions,\r\n SolarisEditableTabsRenameOnBlur,\r\n} from '../model/editable-tabs.types';\r\n\r\n@Component({\r\n selector: 'solaris-editable-tabs',\r\n standalone: true,\r\n imports: [\r\n SolarisTabsComponent,\r\n SolarisTabComponent,\r\n SolarisTabPanelComponent,\r\n SolarisIconComponent,\r\n SolarisDropdownMenuComponent,\r\n SolarisDropdownMenuItemComponent,\r\n SolarisDropdownMenuTriggerDirective,\r\n SolarisDividerComponent,\r\n NgTemplateOutlet,\r\n ],\r\n templateUrl: './editable-tabs.component.html',\r\n styleUrls: ['./editable-tabs.component.scss'],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-editable-tabs',\r\n '[attr.data-orientation]': 'orientation()',\r\n '[attr.data-appearance]': 'appearance()',\r\n '[attr.data-size]': 'size()',\r\n '[attr.data-density]': 'density()',\r\n '[attr.data-show-actions]': 'showActions()',\r\n },\r\n})\r\nexport class SolarisEditableTabsComponent {\r\n private readonly translateService = inject(SolarisTranslateService, {\r\n optional: true,\r\n });\r\n private readonly ngZone = inject(NgZone);\r\n\r\n readonly value = model<unknown>(undefined);\r\n readonly defaultValue = input<unknown>(undefined);\r\n readonly orientation = input<SolarisEditableTabsOrientation>('horizontal');\r\n readonly appearance = input<SolarisEditableTabsAppearance>('underline');\r\n readonly size = input<SolarisEditableTabsSize>('md');\r\n readonly density = input<SolarisEditableTabsDensity>('comfortable');\r\n readonly activationMode =\r\n input<SolarisEditableTabsActivationMode>('automatic');\r\n readonly contentTransition =\r\n input<SolarisEditableTabsContentTransition>('slide');\r\n\r\n readonly tabs = input.required<SolarisEditableTabData[]>();\r\n\r\n readonly editable = input<boolean>(true);\r\n readonly renamable = input<boolean>(true);\r\n readonly removable = input<boolean>(true);\r\n readonly movable = input<boolean>(true);\r\n readonly defaultable = input<boolean>(true);\r\n readonly showActions = input<SolarisEditableTabsShowActions>('focus-hover');\r\n readonly renameOnBlur = input<SolarisEditableTabsRenameOnBlur>('confirm');\r\n readonly minTabs = input<number>(1);\r\n readonly allowEmpty = input<boolean>(false);\r\n readonly ariaLabel = input<string | undefined>(undefined);\r\n readonly ariaLabelKey = input<string | undefined>(undefined);\r\n\r\n readonly tabContentMap = input<Record<string, TemplateRef<void>> | undefined>(\r\n undefined,\r\n );\r\n\r\n readonly valueChange = output<unknown>();\r\n readonly tabRenameRequested = output<SolarisEditableTabRenameEvent>();\r\n readonly tabRename = output<SolarisEditableTabRenameEvent>();\r\n readonly tabRemoveRequested = output<SolarisEditableTabRemoveEvent>();\r\n readonly tabRemove = output<SolarisEditableTabRemoveEvent>();\r\n readonly tabMoveRequested = output<SolarisEditableTabMoveEvent>();\r\n readonly tabMove = output<SolarisEditableTabMoveEvent>();\r\n readonly defaultTabChange = output<SolarisEditableTabDefaultChangeEvent>();\r\n readonly tabAction = output<SolarisEditableTabActionEvent>();\r\n\r\n readonly menuComponents = viewChildren(SolarisDropdownMenuComponent);\r\n readonly tabMenuRefs = computed(() => {\r\n this.tabs();\r\n return this.menuComponents();\r\n });\r\n\r\n protected readonly activeMenuIndex = signal<number | null>(null);\r\n protected readonly renamingTabId = signal<unknown | null>(null);\r\n protected readonly renameValue = signal<string>('');\r\n protected readonly defaultTabValue = signal<unknown>(undefined);\r\n\r\n protected readonly resolvedAriaLabel = computed(() => {\r\n if (this.ariaLabel()) return this.ariaLabel();\r\n const key = this.ariaLabelKey();\r\n if (key && this.translateService) {\r\n return this.translateService.translate(key);\r\n }\r\n return key ?? 'Editable tabs';\r\n });\r\n\r\n constructor() {\r\n effect(() => {\r\n const defaultValue = this.defaultValue();\r\n const currentValue = this.value();\r\n if (currentValue === undefined && defaultValue !== undefined) {\r\n this.value.set(defaultValue);\r\n }\r\n });\r\n }\r\n\r\n protected onValueChange(newValue: unknown): void {\r\n this.value.set(newValue);\r\n this.valueChange.emit(newValue);\r\n }\r\n\r\n protected hasActions(tab: SolarisEditableTabData): boolean {\r\n if (!this.editable()) return false;\r\n if (tab.disabled) return false;\r\n return (\r\n this.canRename(tab) ||\r\n this.canSetDefault(tab) ||\r\n this.canMoveLeft(tab) ||\r\n this.canMoveRight(tab) ||\r\n this.canRemove(tab) ||\r\n (tab.customActions?.length ?? 0) > 0\r\n );\r\n }\r\n\r\n protected canRename(tab: SolarisEditableTabData): boolean {\r\n if (!this.renamable()) return false;\r\n if (tab.locked && tab.renamable !== true) return false;\r\n return tab.renamable !== false;\r\n }\r\n\r\n protected canRemove(tab: SolarisEditableTabData): boolean {\r\n if (!this.removable()) return false;\r\n if (tab.locked && tab.removable !== true) return false;\r\n if (tab.removable === false) return false;\r\n if (tab.disabled) return false;\r\n return !(!this.allowEmpty() && this.tabs().length <= this.minTabs());\r\n }\r\n\r\n protected canMoveLeft(tab: SolarisEditableTabData): boolean {\r\n if (!this.movable()) return false;\r\n if (tab.locked && tab.movable !== true) return false;\r\n if (tab.movable === false) return false;\r\n if (tab.disabled) return false;\r\n const idx = this.tabs().indexOf(tab);\r\n if (idx <= 0) return false;\r\n for (let i = idx - 1; i >= 0; i--) {\r\n if (!this.tabs()[i].locked) return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected canMoveRight(tab: SolarisEditableTabData): boolean {\r\n if (!this.movable()) return false;\r\n if (tab.locked && tab.movable !== true) return false;\r\n if (tab.movable === false) return false;\r\n if (tab.disabled) return false;\r\n const idx = this.tabs().indexOf(tab);\r\n if (idx < 0 || idx >= this.tabs().length - 1) return false;\r\n for (let i = idx + 1; i < this.tabs().length; i++) {\r\n if (!this.tabs()[i].locked) return true;\r\n }\r\n return false;\r\n }\r\n\r\n protected canSetDefault(tab: SolarisEditableTabData): boolean {\r\n if (!this.defaultable()) return false;\r\n if (tab.locked && tab.defaultable !== true) return false;\r\n if (tab.defaultable === false) return false;\r\n return !tab.disabled;\r\n }\r\n\r\n protected startRename(tab: SolarisEditableTabData): void {\r\n this.activeMenuIndex.set(null);\r\n this.renamingTabId.set(tab.value);\r\n this.renameValue.set(tab.label ?? '');\r\n this.ngZone.runOutsideAngular(() => {\r\n setTimeout(() => {\r\n // SECURITY_EXCEPTION: document.querySelector required to find rename input. SSR-safe via guard.\r\n const input = document.querySelector(\r\n `.solaris-editable-tabs__rename-input`,\r\n ) as HTMLInputElement | null;\r\n if (input) {\r\n input.focus();\r\n input.select();\r\n }\r\n });\r\n });\r\n }\r\n\r\n protected commitRename(tab: SolarisEditableTabData): void {\r\n const previousLabel = tab.label ?? '';\r\n const nextLabel = this.renameValue().trim();\r\n\r\n if (nextLabel === '') {\r\n this.renamingTabId.set(null);\r\n return;\r\n }\r\n\r\n if (nextLabel === previousLabel) {\r\n this.renamingTabId.set(null);\r\n return;\r\n }\r\n\r\n const event: SolarisEditableTabRenameEvent = {\r\n value: tab.value,\r\n previousLabel,\r\n nextLabel,\r\n source: 'inline',\r\n };\r\n\r\n this.tabRenameRequested.emit(event);\r\n this.tabRename.emit(event);\r\n this.renamingTabId.set(null);\r\n }\r\n\r\n protected cancelRename(): void {\r\n this.renamingTabId.set(null);\r\n }\r\n\r\n protected onRenameKeydown(\r\n event: KeyboardEvent,\r\n tab: SolarisEditableTabData,\r\n ): void {\r\n event.stopPropagation();\r\n if (event.key === 'Enter') {\r\n event.preventDefault();\r\n this.commitRename(tab);\r\n } else if (event.key === 'Escape') {\r\n event.preventDefault();\r\n this.cancelRename();\r\n }\r\n }\r\n\r\n protected onRenameBlur(tab: SolarisEditableTabData): void {\r\n if (this.renameOnBlur() === 'confirm') {\r\n this.commitRename(tab);\r\n } else {\r\n this.cancelRename();\r\n }\r\n }\r\n\r\n protected confirmRemove(tab: SolarisEditableTabData, index: number): void {\r\n this.activeMenuIndex.set(null);\r\n if (!this.canRemove(tab)) return;\r\n\r\n const wasActive = this.value() === tab.value;\r\n\r\n const event: SolarisEditableTabRemoveEvent = {\r\n value: tab.value,\r\n index,\r\n wasActive,\r\n };\r\n\r\n this.tabRemoveRequested.emit(event);\r\n this.tabRemove.emit(event);\r\n }\r\n\r\n protected moveLabel(direction: 'left' | 'right'): string {\r\n if (this.orientation() === 'vertical') {\r\n const key =\r\n direction === 'left'\r\n ? 'solaris.editableTabs.moveUp'\r\n : 'solaris.editableTabs.moveDown';\r\n return (\r\n this.resolveText(key) ??\r\n (direction === 'left' ? 'Move up' : 'Move down')\r\n );\r\n }\r\n const key =\r\n direction === 'left'\r\n ? 'solaris.editableTabs.moveLeft'\r\n : 'solaris.editableTabs.moveRight';\r\n return (\r\n this.resolveText(key) ??\r\n (direction === 'left' ? 'Move left' : 'Move right')\r\n );\r\n }\r\n\r\n protected moveIcon(direction: 'left' | 'right'): string {\r\n if (this.orientation() === 'vertical') {\r\n return direction === 'left' ? 'chevron-up' : 'chevron-down';\r\n }\r\n return direction === 'left' ? 'chevron-left' : 'chevron-right';\r\n }\r\n\r\n protected moveTab(\r\n tab: SolarisEditableTabData,\r\n index: number,\r\n direction: SolarisEditableTabMoveDirection,\r\n ): void {\r\n this.activeMenuIndex.set(null);\r\n const isPrev = direction === 'left' || direction === 'up';\r\n const nextIndex = isPrev ? index - 1 : index + 1;\r\n if (nextIndex < 0 || nextIndex >= this.tabs().length) return;\r\n if (!this.canMoveLeft(tab) && isPrev) return;\r\n if (!this.canMoveRight(tab) && !isPrev) return;\r\n\r\n const event: SolarisEditableTabMoveEvent = {\r\n value: tab.value,\r\n previousIndex: index,\r\n nextIndex,\r\n direction,\r\n };\r\n\r\n this.tabMoveRequested.emit(event);\r\n this.tabMove.emit(event);\r\n }\r\n\r\n protected setAsDefault(tab: SolarisEditableTabData): void {\r\n this.activeMenuIndex.set(null);\r\n const previousDefaultValue = this.defaultTabValue();\r\n this.defaultTabValue.set(tab.value);\r\n\r\n const event: SolarisEditableTabDefaultChangeEvent = {\r\n value: tab.value,\r\n previousDefaultValue:\r\n previousDefaultValue !== undefined\r\n ? (previousDefaultValue as unknown)\r\n : undefined,\r\n };\r\n\r\n this.defaultTabChange.emit(event);\r\n }\r\n\r\n protected handleCustomAction(\r\n tab: SolarisEditableTabData,\r\n action: SolarisEditableTabAction,\r\n ): void {\r\n this.activeMenuIndex.set(null);\r\n const event: SolarisEditableTabActionEvent = {\r\n tabValue: tab.value,\r\n actionId: action.id,\r\n action,\r\n };\r\n this.tabAction.emit(event);\r\n }\r\n\r\n protected isRenaming(tab: SolarisEditableTabData): boolean {\r\n return this.renamingTabId() === tab.value;\r\n }\r\n\r\n protected getContentTemplate(\r\n tab: SolarisEditableTabData,\r\n ): TemplateRef<void> | null {\r\n const contentMap = this.tabContentMap();\r\n if (contentMap) {\r\n const key = String(tab.value);\r\n return contentMap[key] ?? null;\r\n }\r\n return tab.content ?? null;\r\n }\r\n\r\n protected resolveText(key: string): string | undefined {\r\n if (this.translateService) {\r\n const result = this.translateService.translate(key);\r\n return result !== key ? result : undefined;\r\n }\r\n return undefined;\r\n }\r\n}\r\n","<div class=\"solaris-editable-tabs__wrapper\">\r\n <solaris-tabs\r\n [value]=\"$any(value())\"\r\n (valueChange)=\"onValueChange($event)\"\r\n [defaultValue]=\"$any(defaultValue())\"\r\n [orientation]=\"orientation()\"\r\n [appearance]=\"appearance()\"\r\n [size]=\"size()\"\r\n [density]=\"density()\"\r\n [activationMode]=\"activationMode()\"\r\n [contentTransition]=\"contentTransition()\"\r\n [ariaLabel]=\"resolvedAriaLabel()\"\r\n class=\"solaris-editable-tabs__inner\"\r\n >\r\n @for (tab of tabs(); track tab.value; let i = $index) {\r\n <solaris-tab\r\n [value]=\"$any(tab.value)\"\r\n [label]=\"isRenaming(tab) ? undefined : tab.label\"\r\n [labelKey]=\"isRenaming(tab) ? undefined : tab.labelKey\"\r\n [icon]=\"tab.icon\"\r\n [badge]=\"tab.badge\"\r\n [disabled]=\"tab.disabled ?? false\"\r\n [attr.data-editable]=\"editable() ? '' : null\"\r\n [attr.data-has-icon]=\"tab.icon ? '' : null\"\r\n [attr.data-menu-open]=\"activeMenuIndex() === i ? '' : null\"\r\n >\r\n @if (isRenaming(tab)) {\r\n <span class=\"solaris-editable-tabs__rename-wrapper\">\r\n <input\r\n #renameInput\r\n class=\"solaris-editable-tabs__rename-input\"\r\n [value]=\"renameValue()\"\r\n (input)=\"renameValue.set($any($event).target.value)\"\r\n (keydown)=\"onRenameKeydown($event, tab)\"\r\n (blur)=\"onRenameBlur(tab)\"\r\n [attr.aria-label]=\"\r\n resolveText('solaris.editableTabs.confirmRename') ??\r\n 'Confirm rename'\r\n \"\r\n />\r\n </span>\r\n } @else if (hasActions(tab)) {\r\n <span\r\n class=\"solaris-editable-tabs__action-area\"\r\n [class.solaris-editable-tabs__action-area--visible]=\"\r\n showActions() === 'always'\r\n \"\r\n [class.solaris-editable-tabs__action-area--replaces-icon]=\"\r\n !!tab.icon\r\n \"\r\n >\r\n <button\r\n class=\"solaris-editable-tabs__action-trigger\"\r\n solaris-dropdown-menu-trigger\r\n [solarisDropdownMenuTriggerFor]=\"tabMenuRefs()[i]\"\r\n [solarisDropdownMenuPlacement]=\"'bottom'\"\r\n [solarisDropdownMenuAlign]=\"'start'\"\r\n [solarisDropdownMenuOffset]=\"4\"\r\n [solarisDropdownMenuRestoreFocus]=\"true\"\r\n [solarisDropdownMenuOpen]=\"activeMenuIndex() === i\"\r\n (menuOpened)=\"activeMenuIndex.set(i)\"\r\n (menuClosed)=\"activeMenuIndex.set(null)\"\r\n [attr.aria-label]=\"\r\n resolveText('solaris.editableTabs.tabActions') ?? 'Tab actions'\r\n \"\r\n tabindex=\"0\"\r\n type=\"button\"\r\n >\r\n <solaris-icon name=\"ellipses\" [decorative]=\"true\" />\r\n </button>\r\n </span>\r\n }\r\n </solaris-tab>\r\n }\r\n\r\n @for (tab of tabs(); track tab.value) {\r\n <solaris-tab-panel [value]=\"$any(tab.value)\" [lazy]=\"true\">\r\n @if (getContentTemplate(tab); as tmpl) {\r\n <ng-container [ngTemplateOutlet]=\"tmpl\" />\r\n }\r\n </solaris-tab-panel>\r\n }\r\n </solaris-tabs>\r\n</div>\r\n\r\n@for (tab of tabs(); track tab.value; let i = $index) {\r\n <solaris-dropdown-menu>\r\n @if (canRename(tab)) {\r\n <solaris-dropdown-menu-item\r\n [label]=\"resolveText('solaris.editableTabs.rename') ?? 'Rename'\"\r\n icon=\"edit\"\r\n (itemSelected)=\"startRename(tab)\"\r\n />\r\n }\r\n @if (canSetDefault(tab)) {\r\n <solaris-dropdown-menu-item\r\n [label]=\"\r\n resolveText('solaris.editableTabs.setAsDefault') ?? 'Set as default'\r\n \"\r\n icon=\"check\"\r\n (itemSelected)=\"setAsDefault(tab)\"\r\n />\r\n }\r\n @if (canMoveLeft(tab)) {\r\n <solaris-dropdown-menu-item\r\n [label]=\"moveLabel('left')\"\r\n [icon]=\"moveIcon('left')\"\r\n (itemSelected)=\"\r\n moveTab(tab, i, orientation() === 'vertical' ? 'up' : 'left')\r\n \"\r\n />\r\n }\r\n @if (canMoveRight(tab)) {\r\n <solaris-dropdown-menu-item\r\n [label]=\"moveLabel('right')\"\r\n [icon]=\"moveIcon('right')\"\r\n (itemSelected)=\"\r\n moveTab(tab, i, orientation() === 'vertical' ? 'down' : 'right')\r\n \"\r\n />\r\n }\r\n @if (tab.customActions?.length) {\r\n @for (action of tab.customActions; track action.id) {\r\n @if (!action.disabled) {\r\n <solaris-dropdown-menu-item\r\n [label]=\"action.label ?? ''\"\r\n [labelKey]=\"action.labelKey\"\r\n [icon]=\"action.icon\"\r\n [color]=\"action.color ?? 'neutral'\"\r\n (itemSelected)=\"handleCustomAction(tab, action)\"\r\n />\r\n }\r\n }\r\n }\r\n @if (canRemove(tab)) {\r\n <solaris-divider />\r\n <solaris-dropdown-menu-item\r\n [label]=\"resolveText('solaris.editableTabs.remove') ?? 'Remove'\"\r\n icon=\"x\"\r\n color=\"danger\"\r\n (itemSelected)=\"confirmRemove(tab, i)\"\r\n />\r\n }\r\n </solaris-dropdown-menu>\r\n}\r\n","import {\r\n Component,\r\n input,\r\n ChangeDetectionStrategy,\r\n TemplateRef,\r\n contentChild,\r\n} from '@angular/core';\r\n\r\nimport type { SolarisEditableTabAction } from '../model/editable-tabs.types';\r\n\r\n@Component({\r\n selector: 'solaris-editable-tab',\r\n standalone: true,\r\n template: '',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n host: {\r\n class: 'solaris-editable-tab',\r\n '[attr.data-value]': 'value()',\r\n '[attr.data-locked]': 'locked() ? \"\" : null',\r\n },\r\n})\r\nexport class SolarisEditableTabComponent {\r\n readonly value = input.required<unknown>();\r\n readonly locked = input<boolean>(false);\r\n readonly disabled = input<boolean>(false);\r\n readonly icon = input<string | undefined>(undefined);\r\n readonly label = input<string | undefined>(undefined);\r\n readonly labelKey = input<string | undefined>(undefined);\r\n readonly movable = input<boolean | undefined>(undefined);\r\n readonly removable = input<boolean | undefined>(undefined);\r\n readonly renamable = input<boolean | undefined>(undefined);\r\n readonly defaultable = input<boolean | undefined>(undefined);\r\n readonly badge = input<string | number | undefined>(undefined);\r\n readonly customActions = input<SolarisEditableTabAction[] | undefined>(\r\n undefined,\r\n );\r\n\r\n readonly content = contentChild(TemplateRef);\r\n}\r\n","import type { Provider } from '@angular/core';\r\n\r\nimport { provideSolarisAccessibilityTesting } from '../services/accessibility/testing/solaris-accessibility-testing.provider';\r\nimport { provideSolarisThemeTesting } from '../services/theme/testing/solaris-theme-testing.provider';\r\nimport { provideSolarisTranslateTesting } from '../services/translation/testing/solaris-translate-testing.provider';\r\nimport type { SolarisAccessibilityConfig } from '../services/accessibility/model/solaris-accessibility-config.interface';\r\nimport type { SolarisThemeConfig } from '../services/theme/model/solaris-theme-config.interface';\r\nimport type { SolarisTranslateConfig } from '../services/translation/model/solaris-translate-config.interface';\r\n\r\nexport interface SolarisTestingOptions {\r\n accessibility?: SolarisAccessibilityConfig;\r\n theme?: Partial<SolarisThemeConfig>;\r\n translate?: Partial<SolarisTranslateConfig>;\r\n}\r\n\r\nexport function provideSolarisTesting(\r\n options?: SolarisTestingOptions,\r\n): Provider[] {\r\n return [\r\n ...provideSolarisAccessibilityTesting(options?.accessibility),\r\n ...provideSolarisThemeTesting(options?.theme),\r\n ...provideSolarisTranslateTesting(options?.translate),\r\n ];\r\n}\r\n","import { type TestModuleMetadata, TestBed } from '@angular/core/testing';\r\n\r\nimport {\r\n provideSolarisTesting,\r\n type SolarisTestingOptions,\r\n} from './provide-solaris-testing';\r\n\r\nexport function configureSolarisTesting(\r\n options?: SolarisTestingOptions,\r\n extraConfig?: Partial<TestModuleMetadata>,\r\n): void {\r\n TestBed.configureTestingModule({\r\n ...extraConfig,\r\n providers: [\r\n ...provideSolarisTesting(options),\r\n ...(extraConfig?.providers ?? []),\r\n ],\r\n });\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["nextId","generateId","getFallbackPositions","nextPanelId","defaultCompare","nextInstanceId"],"mappings":"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"}