@educarehq/solaris-ui 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (575) hide show
  1. package/educarehq-solaris-ui.d.ts +5 -0
  2. package/esm2022/educarehq-solaris-ui.js +5 -0
  3. package/esm2022/educarehq-solaris-ui.js.map +1 -0
  4. package/esm2022/index.js +109 -0
  5. package/esm2022/index.js.map +1 -0
  6. package/esm2022/lib/components/actions/button/directives/button-icon.directive.js +17 -0
  7. package/esm2022/lib/components/actions/button/directives/button-icon.directive.js.map +1 -0
  8. package/esm2022/lib/components/actions/button/directives/button.directive.js +60 -0
  9. package/esm2022/lib/components/actions/button/directives/button.directive.js.map +1 -0
  10. package/esm2022/lib/components/actions/button/index.js +3 -0
  11. package/esm2022/lib/components/actions/button/index.js.map +1 -0
  12. package/esm2022/lib/components/actions/button/model/button.types.js +1 -0
  13. package/esm2022/lib/components/actions/button/model/button.types.js.map +1 -0
  14. package/esm2022/lib/components/actions/button-group/component/button-group.component.js +21 -0
  15. package/esm2022/lib/components/actions/button-group/component/button-group.component.js.map +1 -0
  16. package/esm2022/lib/components/actions/button-group/model/button-group.types.js +1 -0
  17. package/esm2022/lib/components/actions/button-group/model/button-group.types.js.map +1 -0
  18. package/esm2022/lib/components/actions/icon-button/directives/icon-button-badge.directive.js +17 -0
  19. package/esm2022/lib/components/actions/icon-button/directives/icon-button-badge.directive.js.map +1 -0
  20. package/esm2022/lib/components/actions/icon-button/directives/icon-button.directive.js +58 -0
  21. package/esm2022/lib/components/actions/icon-button/directives/icon-button.directive.js.map +1 -0
  22. package/esm2022/lib/components/actions/icon-button/model/icon-button.types.js +1 -0
  23. package/esm2022/lib/components/actions/icon-button/model/icon-button.types.js.map +1 -0
  24. package/esm2022/lib/components/data-display/badge/component/badge.component.js +24 -0
  25. package/esm2022/lib/components/data-display/badge/component/badge.component.js.map +1 -0
  26. package/esm2022/lib/components/data-display/badge/directives/badge-icon.directive.js +17 -0
  27. package/esm2022/lib/components/data-display/badge/directives/badge-icon.directive.js.map +1 -0
  28. package/esm2022/lib/components/data-display/badge/index.js +3 -0
  29. package/esm2022/lib/components/data-display/badge/index.js.map +1 -0
  30. package/esm2022/lib/components/data-display/badge/model/badge.types.js +1 -0
  31. package/esm2022/lib/components/data-display/badge/model/badge.types.js.map +1 -0
  32. package/esm2022/lib/components/data-display/card/component/card.component.js +20 -0
  33. package/esm2022/lib/components/data-display/card/component/card.component.js.map +1 -0
  34. package/esm2022/lib/components/data-display/card/directives/card-actions.directive.js +17 -0
  35. package/esm2022/lib/components/data-display/card/directives/card-actions.directive.js.map +1 -0
  36. package/esm2022/lib/components/data-display/card/directives/card-content.directive.js +17 -0
  37. package/esm2022/lib/components/data-display/card/directives/card-content.directive.js.map +1 -0
  38. package/esm2022/lib/components/data-display/card/directives/card-description.directive.js +17 -0
  39. package/esm2022/lib/components/data-display/card/directives/card-description.directive.js.map +1 -0
  40. package/esm2022/lib/components/data-display/card/directives/card-footer.directive.js +19 -0
  41. package/esm2022/lib/components/data-display/card/directives/card-footer.directive.js.map +1 -0
  42. package/esm2022/lib/components/data-display/card/directives/card-header.directive.js +17 -0
  43. package/esm2022/lib/components/data-display/card/directives/card-header.directive.js.map +1 -0
  44. package/esm2022/lib/components/data-display/card/directives/card-media.directive.js +17 -0
  45. package/esm2022/lib/components/data-display/card/directives/card-media.directive.js.map +1 -0
  46. package/esm2022/lib/components/data-display/card/directives/card-title.directive.js +17 -0
  47. package/esm2022/lib/components/data-display/card/directives/card-title.directive.js.map +1 -0
  48. package/esm2022/lib/components/data-display/card/model/card.types.js +1 -0
  49. package/esm2022/lib/components/data-display/card/model/card.types.js.map +1 -0
  50. package/esm2022/lib/components/data-display/divider/component/divider.component.js +46 -0
  51. package/esm2022/lib/components/data-display/divider/component/divider.component.js.map +1 -0
  52. package/esm2022/lib/components/data-display/divider/index.js +2 -0
  53. package/esm2022/lib/components/data-display/divider/index.js.map +1 -0
  54. package/esm2022/lib/components/data-display/divider/model/divider.types.js +1 -0
  55. package/esm2022/lib/components/data-display/divider/model/divider.types.js.map +1 -0
  56. package/esm2022/lib/components/feedback/alert/component/alert-actions.component.js +18 -0
  57. package/esm2022/lib/components/feedback/alert/component/alert-actions.component.js.map +1 -0
  58. package/esm2022/lib/components/feedback/alert/component/alert.component.js +90 -0
  59. package/esm2022/lib/components/feedback/alert/component/alert.component.js.map +1 -0
  60. package/esm2022/lib/components/feedback/alert/directives/alert-description.directive.js +17 -0
  61. package/esm2022/lib/components/feedback/alert/directives/alert-description.directive.js.map +1 -0
  62. package/esm2022/lib/components/feedback/alert/directives/alert-title.directive.js +17 -0
  63. package/esm2022/lib/components/feedback/alert/directives/alert-title.directive.js.map +1 -0
  64. package/esm2022/lib/components/feedback/alert/model/alert.types.js +1 -0
  65. package/esm2022/lib/components/feedback/alert/model/alert.types.js.map +1 -0
  66. package/esm2022/lib/components/feedback/skeleton/component/skeleton.component.js +69 -0
  67. package/esm2022/lib/components/feedback/skeleton/component/skeleton.component.js.map +1 -0
  68. package/esm2022/lib/components/feedback/skeleton/model/skeleton.types.js +1 -0
  69. package/esm2022/lib/components/feedback/skeleton/model/skeleton.types.js.map +1 -0
  70. package/esm2022/lib/components/feedback/toast/component/toast.component.js +268 -0
  71. package/esm2022/lib/components/feedback/toast/component/toast.component.js.map +1 -0
  72. package/esm2022/lib/components/feedback/toast/container/toast-container.component.js +24 -0
  73. package/esm2022/lib/components/feedback/toast/container/toast-container.component.js.map +1 -0
  74. package/esm2022/lib/components/feedback/toast/model/toast.types.js +1 -0
  75. package/esm2022/lib/components/feedback/toast/model/toast.types.js.map +1 -0
  76. package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js +17 -0
  77. package/esm2022/lib/components/feedback/toast/provider/provide-solaris-toast.js.map +1 -0
  78. package/esm2022/lib/components/feedback/toast/service/toast.service.js +219 -0
  79. package/esm2022/lib/components/feedback/toast/service/toast.service.js.map +1 -0
  80. package/esm2022/lib/components/feedback/toast/token/toast.tokens.js +13 -0
  81. package/esm2022/lib/components/feedback/toast/token/toast.tokens.js.map +1 -0
  82. package/esm2022/lib/components/forms/checkbox/component/checkbox.component.js +227 -0
  83. package/esm2022/lib/components/forms/checkbox/component/checkbox.component.js.map +1 -0
  84. package/esm2022/lib/components/forms/checkbox/model/checkbox.types.js +1 -0
  85. package/esm2022/lib/components/forms/checkbox/model/checkbox.types.js.map +1 -0
  86. package/esm2022/lib/components/forms/checkbox-group/component/checkbox-group.component.js +441 -0
  87. package/esm2022/lib/components/forms/checkbox-group/component/checkbox-group.component.js.map +1 -0
  88. package/esm2022/lib/components/forms/checkbox-group/model/checkbox-group.types.js +1 -0
  89. package/esm2022/lib/components/forms/checkbox-group/model/checkbox-group.types.js.map +1 -0
  90. package/esm2022/lib/components/forms/email-field/component/email-field.component.js +215 -0
  91. package/esm2022/lib/components/forms/email-field/component/email-field.component.js.map +1 -0
  92. package/esm2022/lib/components/forms/email-field/model/email-field.types.js +1 -0
  93. package/esm2022/lib/components/forms/email-field/model/email-field.types.js.map +1 -0
  94. package/esm2022/lib/components/forms/email-field/validators/email-field.validators.js +69 -0
  95. package/esm2022/lib/components/forms/email-field/validators/email-field.validators.js.map +1 -0
  96. package/esm2022/lib/components/forms/form-field/component/form-error.component.js +19 -0
  97. package/esm2022/lib/components/forms/form-field/component/form-error.component.js.map +1 -0
  98. package/esm2022/lib/components/forms/form-field/component/form-field.component.js +442 -0
  99. package/esm2022/lib/components/forms/form-field/component/form-field.component.js.map +1 -0
  100. package/esm2022/lib/components/forms/form-field/component/form-hint.component.js +18 -0
  101. package/esm2022/lib/components/forms/form-field/component/form-hint.component.js.map +1 -0
  102. package/esm2022/lib/components/forms/form-field/component/form-label.component.js +18 -0
  103. package/esm2022/lib/components/forms/form-field/component/form-label.component.js.map +1 -0
  104. package/esm2022/lib/components/forms/form-field/directives/form-field-trigger.directive.js +14 -0
  105. package/esm2022/lib/components/forms/form-field/directives/form-field-trigger.directive.js.map +1 -0
  106. package/esm2022/lib/components/forms/form-field/directives/form-prefix.directive.js +17 -0
  107. package/esm2022/lib/components/forms/form-field/directives/form-prefix.directive.js.map +1 -0
  108. package/esm2022/lib/components/forms/form-field/directives/form-suffix.directive.js +17 -0
  109. package/esm2022/lib/components/forms/form-field/directives/form-suffix.directive.js.map +1 -0
  110. package/esm2022/lib/components/forms/form-field/index.js +8 -0
  111. package/esm2022/lib/components/forms/form-field/index.js.map +1 -0
  112. package/esm2022/lib/components/forms/form-field/model/form-control.contract.js +3 -0
  113. package/esm2022/lib/components/forms/form-field/model/form-control.contract.js.map +1 -0
  114. package/esm2022/lib/components/forms/form-field/model/form-field.types.js +1 -0
  115. package/esm2022/lib/components/forms/form-field/model/form-field.types.js.map +1 -0
  116. package/esm2022/lib/components/forms/input/directives/input.directive.js +148 -0
  117. package/esm2022/lib/components/forms/input/directives/input.directive.js.map +1 -0
  118. package/esm2022/lib/components/forms/input/index.js +2 -0
  119. package/esm2022/lib/components/forms/input/index.js.map +1 -0
  120. package/esm2022/lib/components/forms/input/model/input.defaults.js +27 -0
  121. package/esm2022/lib/components/forms/input/model/input.defaults.js.map +1 -0
  122. package/esm2022/lib/components/forms/input/model/input.types.js +1 -0
  123. package/esm2022/lib/components/forms/input/model/input.types.js.map +1 -0
  124. package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js +1102 -0
  125. package/esm2022/lib/components/forms/multi-select/component/multi-select.component.js.map +1 -0
  126. package/esm2022/lib/components/forms/multi-select/model/multi-select.types.js +1 -0
  127. package/esm2022/lib/components/forms/multi-select/model/multi-select.types.js.map +1 -0
  128. package/esm2022/lib/components/forms/option/component/option.component.js +149 -0
  129. package/esm2022/lib/components/forms/option/component/option.component.js.map +1 -0
  130. package/esm2022/lib/components/forms/option/directives/option-slots.directive.js +58 -0
  131. package/esm2022/lib/components/forms/option/directives/option-slots.directive.js.map +1 -0
  132. package/esm2022/lib/components/forms/option/index.js +3 -0
  133. package/esm2022/lib/components/forms/option/index.js.map +1 -0
  134. package/esm2022/lib/components/forms/option/model/option.types.js +1 -0
  135. package/esm2022/lib/components/forms/option/model/option.types.js.map +1 -0
  136. package/esm2022/lib/components/forms/option-group/component/option-group.component.js +103 -0
  137. package/esm2022/lib/components/forms/option-group/component/option-group.component.js.map +1 -0
  138. package/esm2022/lib/components/forms/option-group/index.js +2 -0
  139. package/esm2022/lib/components/forms/option-group/index.js.map +1 -0
  140. package/esm2022/lib/components/forms/option-group/model/option-group.types.js +1 -0
  141. package/esm2022/lib/components/forms/option-group/model/option-group.types.js.map +1 -0
  142. package/esm2022/lib/components/forms/password-field/component/password-field.component.js +299 -0
  143. package/esm2022/lib/components/forms/password-field/component/password-field.component.js.map +1 -0
  144. package/esm2022/lib/components/forms/password-field/model/password-field-constants.js +5 -0
  145. package/esm2022/lib/components/forms/password-field/model/password-field-constants.js.map +1 -0
  146. package/esm2022/lib/components/forms/password-field/model/password-field.types.js +1 -0
  147. package/esm2022/lib/components/forms/password-field/model/password-field.types.js.map +1 -0
  148. package/esm2022/lib/components/forms/password-field/model/password-policy.types.js +1 -0
  149. package/esm2022/lib/components/forms/password-field/model/password-policy.types.js.map +1 -0
  150. package/esm2022/lib/components/forms/password-field/model/password-strength.js +67 -0
  151. package/esm2022/lib/components/forms/password-field/model/password-strength.js.map +1 -0
  152. package/esm2022/lib/components/forms/password-field/validators/password.validator.js +45 -0
  153. package/esm2022/lib/components/forms/password-field/validators/password.validator.js.map +1 -0
  154. package/esm2022/lib/components/forms/radio/component/radio.component.js +219 -0
  155. package/esm2022/lib/components/forms/radio/component/radio.component.js.map +1 -0
  156. package/esm2022/lib/components/forms/radio/model/radio.types.js +1 -0
  157. package/esm2022/lib/components/forms/radio/model/radio.types.js.map +1 -0
  158. package/esm2022/lib/components/forms/radio-group/component/radio-group.component.js +348 -0
  159. package/esm2022/lib/components/forms/radio-group/component/radio-group.component.js.map +1 -0
  160. package/esm2022/lib/components/forms/radio-group/model/radio-group.token.js +3 -0
  161. package/esm2022/lib/components/forms/radio-group/model/radio-group.token.js.map +1 -0
  162. package/esm2022/lib/components/forms/radio-group/model/radio-group.types.js +1 -0
  163. package/esm2022/lib/components/forms/radio-group/model/radio-group.types.js.map +1 -0
  164. package/esm2022/lib/components/forms/select/component/select.component.js +815 -0
  165. package/esm2022/lib/components/forms/select/component/select.component.js.map +1 -0
  166. package/esm2022/lib/components/forms/select/model/select.types.js +1 -0
  167. package/esm2022/lib/components/forms/select/model/select.types.js.map +1 -0
  168. package/esm2022/lib/components/forms/switch/component/switch.component.js +211 -0
  169. package/esm2022/lib/components/forms/switch/component/switch.component.js.map +1 -0
  170. package/esm2022/lib/components/forms/switch/index.js +2 -0
  171. package/esm2022/lib/components/forms/switch/index.js.map +1 -0
  172. package/esm2022/lib/components/forms/switch/model/switch.types.js +1 -0
  173. package/esm2022/lib/components/forms/switch/model/switch.types.js.map +1 -0
  174. package/esm2022/lib/components/forms/switch-group/component/switch-group.component.js +369 -0
  175. package/esm2022/lib/components/forms/switch-group/component/switch-group.component.js.map +1 -0
  176. package/esm2022/lib/components/forms/switch-group/model/switch-group.types.js +1 -0
  177. package/esm2022/lib/components/forms/switch-group/model/switch-group.types.js.map +1 -0
  178. package/esm2022/lib/components/forms/textarea/directives/textarea.directive.js +137 -0
  179. package/esm2022/lib/components/forms/textarea/directives/textarea.directive.js.map +1 -0
  180. package/esm2022/lib/components/forms/textarea/model/textarea.types.js +1 -0
  181. package/esm2022/lib/components/forms/textarea/model/textarea.types.js.map +1 -0
  182. package/esm2022/lib/components/icon/component/solaris-icon.component.js +20 -0
  183. package/esm2022/lib/components/icon/component/solaris-icon.component.js.map +1 -0
  184. package/esm2022/lib/components/icon/index.js +2 -0
  185. package/esm2022/lib/components/icon/index.js.map +1 -0
  186. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js +27 -0
  187. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.js.map +1 -0
  188. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js +96 -0
  189. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.js.map +1 -0
  190. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js +22 -0
  191. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.js.map +1 -0
  192. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js +105 -0
  193. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.js.map +1 -0
  194. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js +95 -0
  195. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.js.map +1 -0
  196. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js +631 -0
  197. package/esm2022/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.js.map +1 -0
  198. package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js +365 -0
  199. package/esm2022/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.js.map +1 -0
  200. package/esm2022/lib/components/interaction/dropdown-menu/index.js +8 -0
  201. package/esm2022/lib/components/interaction/dropdown-menu/index.js.map +1 -0
  202. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js +3 -0
  203. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.js.map +1 -0
  204. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js +1 -0
  205. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.js.map +1 -0
  206. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js +1 -0
  207. package/esm2022/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.js.map +1 -0
  208. package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js +29 -0
  209. package/esm2022/lib/components/interaction/popover/component/popover-panel.component.js.map +1 -0
  210. package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js +325 -0
  211. package/esm2022/lib/components/interaction/popover/directives/popover-trigger.directive.js.map +1 -0
  212. package/esm2022/lib/components/interaction/popover/directives/popover.directive.js +16 -0
  213. package/esm2022/lib/components/interaction/popover/directives/popover.directive.js.map +1 -0
  214. package/esm2022/lib/components/interaction/popover/index.js +4 -0
  215. package/esm2022/lib/components/interaction/popover/index.js.map +1 -0
  216. package/esm2022/lib/components/interaction/popover/model/popover-position.js +145 -0
  217. package/esm2022/lib/components/interaction/popover/model/popover-position.js.map +1 -0
  218. package/esm2022/lib/components/interaction/popover/model/popover.types.js +1 -0
  219. package/esm2022/lib/components/interaction/popover/model/popover.types.js.map +1 -0
  220. package/esm2022/lib/components/interaction/popover/token/popover.tokens.js +3 -0
  221. package/esm2022/lib/components/interaction/popover/token/popover.tokens.js.map +1 -0
  222. package/esm2022/lib/components/interaction/tooltip/component/tooltip-panel.component.js +23 -0
  223. package/esm2022/lib/components/interaction/tooltip/component/tooltip-panel.component.js.map +1 -0
  224. package/esm2022/lib/components/interaction/tooltip/directive/tooltip.directive.js +405 -0
  225. package/esm2022/lib/components/interaction/tooltip/directive/tooltip.directive.js.map +1 -0
  226. package/esm2022/lib/components/interaction/tooltip/index.js +3 -0
  227. package/esm2022/lib/components/interaction/tooltip/index.js.map +1 -0
  228. package/esm2022/lib/components/interaction/tooltip/model/tooltip-position.js +209 -0
  229. package/esm2022/lib/components/interaction/tooltip/model/tooltip-position.js.map +1 -0
  230. package/esm2022/lib/components/interaction/tooltip/model/tooltip.types.js +1 -0
  231. package/esm2022/lib/components/interaction/tooltip/model/tooltip.types.js.map +1 -0
  232. package/esm2022/lib/components/interaction/tooltip/token/tooltip.tokens.js +3 -0
  233. package/esm2022/lib/components/interaction/tooltip/token/tooltip.tokens.js.map +1 -0
  234. package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js +323 -0
  235. package/esm2022/lib/components/navigation/editable-tabs/component/editable-tabs.component.js.map +1 -0
  236. package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js +34 -0
  237. package/esm2022/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.js.map +1 -0
  238. package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js +1 -0
  239. package/esm2022/lib/components/navigation/editable-tabs/model/editable-tabs.types.js.map +1 -0
  240. package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js +242 -0
  241. package/esm2022/lib/components/navigation/segmented-control/component/segmented-control.component.js.map +1 -0
  242. package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js +197 -0
  243. package/esm2022/lib/components/navigation/segmented-control/item/segmented-item.component.js.map +1 -0
  244. package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js +1 -0
  245. package/esm2022/lib/components/navigation/segmented-control/model/segmented-control.types.js.map +1 -0
  246. package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js +3 -0
  247. package/esm2022/lib/components/navigation/segmented-control/token/segmented-control.tokens.js.map +1 -0
  248. package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js +15 -0
  249. package/esm2022/lib/components/navigation/stepper/actions/stepper-actions.component.js.map +1 -0
  250. package/esm2022/lib/components/navigation/stepper/component/stepper.component.js +99 -0
  251. package/esm2022/lib/components/navigation/stepper/component/stepper.component.js.map +1 -0
  252. package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js +13 -0
  253. package/esm2022/lib/components/navigation/stepper/content/stepper-content.component.js.map +1 -0
  254. package/esm2022/lib/components/navigation/stepper/model/stepper.types.js +1 -0
  255. package/esm2022/lib/components/navigation/stepper/model/stepper.types.js.map +1 -0
  256. package/esm2022/lib/components/navigation/stepper/step/step.component.js +91 -0
  257. package/esm2022/lib/components/navigation/stepper/step/step.component.js.map +1 -0
  258. package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js +3 -0
  259. package/esm2022/lib/components/navigation/stepper/token/stepper.tokens.js.map +1 -0
  260. package/esm2022/lib/components/navigation/tabs/component/tabs.component.js +169 -0
  261. package/esm2022/lib/components/navigation/tabs/component/tabs.component.js.map +1 -0
  262. package/esm2022/lib/components/navigation/tabs/index.js +5 -0
  263. package/esm2022/lib/components/navigation/tabs/index.js.map +1 -0
  264. package/esm2022/lib/components/navigation/tabs/model/tabs.types.js +1 -0
  265. package/esm2022/lib/components/navigation/tabs/model/tabs.types.js.map +1 -0
  266. package/esm2022/lib/components/navigation/tabs/tab/tab.component.js +195 -0
  267. package/esm2022/lib/components/navigation/tabs/tab/tab.component.js.map +1 -0
  268. package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js +55 -0
  269. package/esm2022/lib/components/navigation/tabs/tab-panel/tab-panel.component.js.map +1 -0
  270. package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js +3 -0
  271. package/esm2022/lib/components/navigation/tabs/token/tabs.tokens.js.map +1 -0
  272. package/esm2022/lib/components/overlay/dialog/component/dialog.component.js +49 -0
  273. package/esm2022/lib/components/overlay/dialog/component/dialog.component.js.map +1 -0
  274. package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js +37 -0
  275. package/esm2022/lib/components/overlay/dialog/components/dialog-actions.component.js.map +1 -0
  276. package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js +13 -0
  277. package/esm2022/lib/components/overlay/dialog/components/dialog-content.component.js.map +1 -0
  278. package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js +32 -0
  279. package/esm2022/lib/components/overlay/dialog/components/dialog-header.component.js.map +1 -0
  280. package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js +142 -0
  281. package/esm2022/lib/components/overlay/dialog/container/dialog-container.component.js.map +1 -0
  282. package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js +56 -0
  283. package/esm2022/lib/components/overlay/dialog/flow/dialog-flow.component.js.map +1 -0
  284. package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js +20 -0
  285. package/esm2022/lib/components/overlay/dialog/flow/dialog-step.component.js.map +1 -0
  286. package/esm2022/lib/components/overlay/dialog/model/dialog.types.js +1 -0
  287. package/esm2022/lib/components/overlay/dialog/model/dialog.types.js.map +1 -0
  288. package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js +13 -0
  289. package/esm2022/lib/components/overlay/dialog/provider/provide-solaris-dialog.js.map +1 -0
  290. package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js +23 -0
  291. package/esm2022/lib/components/overlay/dialog/service/dialog-ref.js.map +1 -0
  292. package/esm2022/lib/components/overlay/dialog/service/dialog.service.js +111 -0
  293. package/esm2022/lib/components/overlay/dialog/service/dialog.service.js.map +1 -0
  294. package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js +4 -0
  295. package/esm2022/lib/components/overlay/dialog/token/dialog-data.token.js.map +1 -0
  296. package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js +15 -0
  297. package/esm2022/lib/components/overlay/dialog/token/dialog.tokens.js.map +1 -0
  298. package/esm2022/lib/services/accessibility/directives/visually-hidden.directive.js +25 -0
  299. package/esm2022/lib/services/accessibility/directives/visually-hidden.directive.js.map +1 -0
  300. package/esm2022/lib/services/accessibility/model/solaris-accessibility-config.interface.js +1 -0
  301. package/esm2022/lib/services/accessibility/model/solaris-accessibility-config.interface.js.map +1 -0
  302. package/esm2022/lib/services/accessibility/model/solaris-accessibility.types.js +1 -0
  303. package/esm2022/lib/services/accessibility/model/solaris-accessibility.types.js.map +1 -0
  304. package/esm2022/lib/services/accessibility/provider/provide-solaris-accessibility.js +10 -0
  305. package/esm2022/lib/services/accessibility/provider/provide-solaris-accessibility.js.map +1 -0
  306. package/esm2022/lib/services/accessibility/service/solaris-accessibility.service.js +60 -0
  307. package/esm2022/lib/services/accessibility/service/solaris-accessibility.service.js.map +1 -0
  308. package/esm2022/lib/services/accessibility/testing/solaris-accessibility-testing.provider.js +10 -0
  309. package/esm2022/lib/services/accessibility/testing/solaris-accessibility-testing.provider.js.map +1 -0
  310. package/esm2022/lib/services/accessibility/token/solaris-accessibility.tokens.js +3 -0
  311. package/esm2022/lib/services/accessibility/token/solaris-accessibility.tokens.js.map +1 -0
  312. package/esm2022/lib/services/icon/icons/groups/actions.js +242 -0
  313. package/esm2022/lib/services/icon/icons/groups/actions.js.map +1 -0
  314. package/esm2022/lib/services/icon/icons/groups/data.js +129 -0
  315. package/esm2022/lib/services/icon/icons/groups/data.js.map +1 -0
  316. package/esm2022/lib/services/icon/icons/groups/layout.js +50 -0
  317. package/esm2022/lib/services/icon/icons/groups/layout.js.map +1 -0
  318. package/esm2022/lib/services/icon/icons/groups/navigation.js +354 -0
  319. package/esm2022/lib/services/icon/icons/groups/navigation.js.map +1 -0
  320. package/esm2022/lib/services/icon/icons/groups/status.js +70 -0
  321. package/esm2022/lib/services/icon/icons/groups/status.js.map +1 -0
  322. package/esm2022/lib/services/icon/icons/groups/theme.js +49 -0
  323. package/esm2022/lib/services/icon/icons/groups/theme.js.map +1 -0
  324. package/esm2022/lib/services/icon/icons/index.js +2 -0
  325. package/esm2022/lib/services/icon/icons/index.js.map +1 -0
  326. package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js +15 -0
  327. package/esm2022/lib/services/icon/icons/solaris-built-in-icons.js.map +1 -0
  328. package/esm2022/lib/services/icon/index.js +5 -0
  329. package/esm2022/lib/services/icon/index.js.map +1 -0
  330. package/esm2022/lib/services/icon/model/solaris-icon-definition.interface.js +1 -0
  331. package/esm2022/lib/services/icon/model/solaris-icon-definition.interface.js.map +1 -0
  332. package/esm2022/lib/services/icon/model/solaris-icon.types.js +1 -0
  333. package/esm2022/lib/services/icon/model/solaris-icon.types.js.map +1 -0
  334. package/esm2022/lib/services/icon/provider/provide-solaris-icons.js +10 -0
  335. package/esm2022/lib/services/icon/provider/provide-solaris-icons.js.map +1 -0
  336. package/esm2022/lib/services/icon/service/solaris-icon-registry.service.js +43 -0
  337. package/esm2022/lib/services/icon/service/solaris-icon-registry.service.js.map +1 -0
  338. package/esm2022/lib/services/icon/token/solaris-icon.tokens.js +3 -0
  339. package/esm2022/lib/services/icon/token/solaris-icon.tokens.js.map +1 -0
  340. package/esm2022/lib/services/theme/model/solaris-theme-config.interface.js +1 -0
  341. package/esm2022/lib/services/theme/model/solaris-theme-config.interface.js.map +1 -0
  342. package/esm2022/lib/services/theme/model/solaris-theme.types.js +1 -0
  343. package/esm2022/lib/services/theme/model/solaris-theme.types.js.map +1 -0
  344. package/esm2022/lib/services/theme/provider/provide-solaris-theme.js +10 -0
  345. package/esm2022/lib/services/theme/provider/provide-solaris-theme.js.map +1 -0
  346. package/esm2022/lib/services/theme/service/solaris-theme.service.js +22 -0
  347. package/esm2022/lib/services/theme/service/solaris-theme.service.js.map +1 -0
  348. package/esm2022/lib/services/theme/testing/solaris-theme-testing.provider.js +10 -0
  349. package/esm2022/lib/services/theme/testing/solaris-theme-testing.provider.js.map +1 -0
  350. package/esm2022/lib/services/theme/token/solaris-theme.tokens.js +3 -0
  351. package/esm2022/lib/services/theme/token/solaris-theme.tokens.js.map +1 -0
  352. package/esm2022/lib/services/translation/index.js +6 -0
  353. package/esm2022/lib/services/translation/index.js.map +1 -0
  354. package/esm2022/lib/services/translation/model/solaris-locale.types.js +1 -0
  355. package/esm2022/lib/services/translation/model/solaris-locale.types.js.map +1 -0
  356. package/esm2022/lib/services/translation/model/solaris-translate-config.interface.js +1 -0
  357. package/esm2022/lib/services/translation/model/solaris-translate-config.interface.js.map +1 -0
  358. package/esm2022/lib/services/translation/model/solaris-translate-defaults.js +96 -0
  359. package/esm2022/lib/services/translation/model/solaris-translate-defaults.js.map +1 -0
  360. package/esm2022/lib/services/translation/model/solaris-translation.types.js +1 -0
  361. package/esm2022/lib/services/translation/model/solaris-translation.types.js.map +1 -0
  362. package/esm2022/lib/services/translation/pipe/solaris-translate.pipe.js +20 -0
  363. package/esm2022/lib/services/translation/pipe/solaris-translate.pipe.js.map +1 -0
  364. package/esm2022/lib/services/translation/provider/provide-solaris-translate.js +10 -0
  365. package/esm2022/lib/services/translation/provider/provide-solaris-translate.js.map +1 -0
  366. package/esm2022/lib/services/translation/service/solaris-translate.service.js +87 -0
  367. package/esm2022/lib/services/translation/service/solaris-translate.service.js.map +1 -0
  368. package/esm2022/lib/services/translation/testing/solaris-translate-testing.provider.js +32 -0
  369. package/esm2022/lib/services/translation/testing/solaris-translate-testing.provider.js.map +1 -0
  370. package/esm2022/lib/services/translation/token/solaris-translate.tokens.js +3 -0
  371. package/esm2022/lib/services/translation/token/solaris-translate.tokens.js.map +1 -0
  372. package/esm2022/lib/testing/provide-solaris-testing.js +11 -0
  373. package/esm2022/lib/testing/provide-solaris-testing.js.map +1 -0
  374. package/esm2022/lib/testing/solaris-test-utilities.js +12 -0
  375. package/esm2022/lib/testing/solaris-test-utilities.js.map +1 -0
  376. package/index.d.ts +197 -0
  377. package/lib/components/actions/button/directives/button-icon.directive.d.ts +5 -0
  378. package/lib/components/actions/button/directives/button.directive.d.ts +22 -0
  379. package/lib/components/actions/button/index.d.ts +3 -0
  380. package/lib/components/actions/button/model/button.types.d.ts +5 -0
  381. package/lib/components/actions/button-group/component/button-group.component.d.ts +10 -0
  382. package/lib/components/actions/button-group/model/button-group.types.d.ts +2 -0
  383. package/lib/components/actions/icon-button/directives/icon-button-badge.directive.d.ts +5 -0
  384. package/lib/components/actions/icon-button/directives/icon-button.directive.d.ts +21 -0
  385. package/lib/components/actions/icon-button/model/icon-button.types.d.ts +5 -0
  386. package/lib/components/data-display/badge/component/badge.component.d.ts +12 -0
  387. package/lib/components/data-display/badge/directives/badge-icon.directive.d.ts +5 -0
  388. package/lib/components/data-display/badge/index.d.ts +3 -0
  389. package/lib/components/data-display/badge/model/badge.types.d.ts +6 -0
  390. package/lib/components/data-display/card/component/card.component.d.ts +10 -0
  391. package/lib/components/data-display/card/directives/card-actions.directive.d.ts +5 -0
  392. package/lib/components/data-display/card/directives/card-content.directive.d.ts +5 -0
  393. package/lib/components/data-display/card/directives/card-description.directive.d.ts +5 -0
  394. package/lib/components/data-display/card/directives/card-footer.directive.d.ts +6 -0
  395. package/lib/components/data-display/card/directives/card-header.directive.d.ts +5 -0
  396. package/lib/components/data-display/card/directives/card-media.directive.d.ts +5 -0
  397. package/lib/components/data-display/card/directives/card-title.directive.d.ts +5 -0
  398. package/lib/components/data-display/card/model/card.types.d.ts +4 -0
  399. package/lib/components/data-display/divider/component/divider.component.d.ts +17 -0
  400. package/lib/components/data-display/divider/index.d.ts +2 -0
  401. package/lib/components/data-display/divider/model/divider.types.d.ts +5 -0
  402. package/lib/components/feedback/alert/component/alert-actions.component.d.ts +5 -0
  403. package/lib/components/feedback/alert/component/alert.component.d.ts +26 -0
  404. package/lib/components/feedback/alert/directives/alert-description.directive.d.ts +5 -0
  405. package/lib/components/feedback/alert/directives/alert-title.directive.d.ts +5 -0
  406. package/lib/components/feedback/alert/model/alert.types.d.ts +5 -0
  407. package/lib/components/feedback/skeleton/component/skeleton.component.d.ts +17 -0
  408. package/lib/components/feedback/skeleton/model/skeleton.types.d.ts +5 -0
  409. package/lib/components/feedback/toast/component/toast.component.d.ts +62 -0
  410. package/lib/components/feedback/toast/container/toast-container.component.d.ts +10 -0
  411. package/lib/components/feedback/toast/model/toast.types.d.ts +106 -0
  412. package/lib/components/feedback/toast/provider/provide-solaris-toast.d.ts +3 -0
  413. package/lib/components/feedback/toast/service/toast.service.d.ts +36 -0
  414. package/lib/components/feedback/toast/token/toast.tokens.d.ts +5 -0
  415. package/lib/components/forms/checkbox/component/checkbox.component.d.ts +70 -0
  416. package/lib/components/forms/checkbox/model/checkbox.types.d.ts +5 -0
  417. package/lib/components/forms/checkbox-group/component/checkbox-group.component.d.ts +123 -0
  418. package/lib/components/forms/checkbox-group/model/checkbox-group.types.d.ts +5 -0
  419. package/lib/components/forms/email-field/component/email-field.component.d.ts +67 -0
  420. package/lib/components/forms/email-field/model/email-field.types.d.ts +6 -0
  421. package/lib/components/forms/email-field/validators/email-field.validators.d.ts +8 -0
  422. package/lib/components/forms/form-field/component/form-error.component.d.ts +5 -0
  423. package/lib/components/forms/form-field/component/form-field.component.d.ts +96 -0
  424. package/lib/components/forms/form-field/component/form-hint.component.d.ts +5 -0
  425. package/lib/components/forms/form-field/component/form-label.component.d.ts +5 -0
  426. package/lib/components/forms/form-field/directives/form-field-trigger.directive.d.ts +5 -0
  427. package/lib/components/forms/form-field/directives/form-prefix.directive.d.ts +5 -0
  428. package/lib/components/forms/form-field/directives/form-suffix.directive.d.ts +5 -0
  429. package/lib/components/forms/form-field/index.d.ts +8 -0
  430. package/lib/components/forms/form-field/model/form-control.contract.d.ts +11 -0
  431. package/lib/components/forms/form-field/model/form-field.types.d.ts +5 -0
  432. package/lib/components/forms/input/directives/input.directive.d.ts +37 -0
  433. package/lib/components/forms/input/index.d.ts +2 -0
  434. package/lib/components/forms/input/model/input.defaults.d.ts +2 -0
  435. package/lib/components/forms/input/model/input.types.d.ts +4 -0
  436. package/lib/components/forms/multi-select/component/multi-select.component.d.ts +199 -0
  437. package/lib/components/forms/multi-select/model/multi-select.types.d.ts +5 -0
  438. package/lib/components/forms/option/component/option.component.d.ts +58 -0
  439. package/lib/components/forms/option/directives/option-slots.directive.d.ts +21 -0
  440. package/lib/components/forms/option/index.d.ts +3 -0
  441. package/lib/components/forms/option/model/option.types.d.ts +3 -0
  442. package/lib/components/forms/option-group/component/option-group.component.d.ts +32 -0
  443. package/lib/components/forms/option-group/index.d.ts +2 -0
  444. package/lib/components/forms/option-group/model/option-group.types.d.ts +2 -0
  445. package/lib/components/forms/password-field/component/password-field.component.d.ts +81 -0
  446. package/lib/components/forms/password-field/model/password-field-constants.d.ts +4 -0
  447. package/lib/components/forms/password-field/model/password-field.types.d.ts +6 -0
  448. package/lib/components/forms/password-field/model/password-policy.types.d.ts +10 -0
  449. package/lib/components/forms/password-field/model/password-strength.d.ts +2 -0
  450. package/lib/components/forms/password-field/validators/password.validator.d.ts +3 -0
  451. package/lib/components/forms/radio/component/radio.component.d.ts +68 -0
  452. package/lib/components/forms/radio/model/radio.types.d.ts +4 -0
  453. package/lib/components/forms/radio-group/component/radio-group.component.d.ts +86 -0
  454. package/lib/components/forms/radio-group/model/radio-group.token.d.ts +2 -0
  455. package/lib/components/forms/radio-group/model/radio-group.types.d.ts +5 -0
  456. package/lib/components/forms/select/component/select.component.d.ts +158 -0
  457. package/lib/components/forms/select/model/select.types.d.ts +4 -0
  458. package/lib/components/forms/switch/component/switch.component.d.ts +66 -0
  459. package/lib/components/forms/switch/index.d.ts +2 -0
  460. package/lib/components/forms/switch/model/switch.types.d.ts +4 -0
  461. package/lib/components/forms/switch-group/component/switch-group.component.d.ts +91 -0
  462. package/lib/components/forms/switch-group/model/switch-group.types.d.ts +5 -0
  463. package/lib/components/forms/textarea/directives/textarea.directive.d.ts +37 -0
  464. package/lib/components/forms/textarea/model/textarea.types.d.ts +5 -0
  465. package/lib/components/icon/component/solaris-icon.component.d.ts +13 -0
  466. package/lib/components/icon/index.d.ts +1 -0
  467. package/lib/components/interaction/dropdown-menu/component/dropdown-menu-group.component.d.ts +10 -0
  468. package/lib/components/interaction/dropdown-menu/component/dropdown-menu-item.component.d.ts +28 -0
  469. package/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.d.ts +7 -0
  470. package/lib/components/interaction/dropdown-menu/component/dropdown-menu.component.d.ts +21 -0
  471. package/lib/components/interaction/dropdown-menu/component/dropdown-submenu-trigger.component.d.ts +21 -0
  472. package/lib/components/interaction/dropdown-menu/component/dropdown-submenu.component.d.ts +68 -0
  473. package/lib/components/interaction/dropdown-menu/directives/dropdown-menu-trigger.directive.d.ts +61 -0
  474. package/lib/components/interaction/dropdown-menu/index.d.ts +9 -0
  475. package/lib/components/interaction/dropdown-menu/model/dropdown-menu-navigation.d.ts +8 -0
  476. package/lib/components/interaction/dropdown-menu/model/dropdown-menu.types.d.ts +11 -0
  477. package/lib/components/interaction/dropdown-menu/model/dropdown-submenu.types.d.ts +2 -0
  478. package/lib/components/interaction/popover/component/popover-panel.component.d.ts +10 -0
  479. package/lib/components/interaction/popover/directives/popover-trigger.directive.d.ts +65 -0
  480. package/lib/components/interaction/popover/directives/popover.directive.d.ts +7 -0
  481. package/lib/components/interaction/popover/index.d.ts +4 -0
  482. package/lib/components/interaction/popover/model/popover-position.d.ts +4 -0
  483. package/lib/components/interaction/popover/model/popover.types.d.ts +7 -0
  484. package/lib/components/interaction/popover/token/popover.tokens.d.ts +12 -0
  485. package/lib/components/interaction/tooltip/component/tooltip-panel.component.d.ts +9 -0
  486. package/lib/components/interaction/tooltip/directive/tooltip.directive.d.ts +80 -0
  487. package/lib/components/interaction/tooltip/index.d.ts +3 -0
  488. package/lib/components/interaction/tooltip/model/tooltip-position.d.ts +5 -0
  489. package/lib/components/interaction/tooltip/model/tooltip.types.d.ts +22 -0
  490. package/lib/components/interaction/tooltip/token/tooltip.tokens.d.ts +21 -0
  491. package/lib/components/navigation/editable-tabs/component/editable-tabs.component.d.ts +69 -0
  492. package/lib/components/navigation/editable-tabs/editable-tab/editable-tab.component.d.ts +20 -0
  493. package/lib/components/navigation/editable-tabs/model/editable-tabs.types.d.ts +60 -0
  494. package/lib/components/navigation/segmented-control/component/segmented-control.component.d.ts +64 -0
  495. package/lib/components/navigation/segmented-control/item/segmented-item.component.d.ts +35 -0
  496. package/lib/components/navigation/segmented-control/model/segmented-control.types.d.ts +12 -0
  497. package/lib/components/navigation/segmented-control/token/segmented-control.tokens.d.ts +22 -0
  498. package/lib/components/navigation/stepper/actions/stepper-actions.component.d.ts +7 -0
  499. package/lib/components/navigation/stepper/component/stepper.component.d.ts +36 -0
  500. package/lib/components/navigation/stepper/content/stepper-content.component.d.ts +5 -0
  501. package/lib/components/navigation/stepper/model/stepper.types.d.ts +15 -0
  502. package/lib/components/navigation/stepper/step/step.component.d.ts +27 -0
  503. package/lib/components/navigation/stepper/token/stepper.tokens.d.ts +13 -0
  504. package/lib/components/navigation/tabs/component/tabs.component.d.ts +47 -0
  505. package/lib/components/navigation/tabs/index.d.ts +6 -0
  506. package/lib/components/navigation/tabs/model/tabs.types.d.ts +17 -0
  507. package/lib/components/navigation/tabs/tab/tab.component.d.ts +38 -0
  508. package/lib/components/navigation/tabs/tab-panel/tab-panel.component.d.ts +15 -0
  509. package/lib/components/navigation/tabs/token/tabs.tokens.d.ts +19 -0
  510. package/lib/components/overlay/dialog/component/dialog.component.d.ts +29 -0
  511. package/lib/components/overlay/dialog/components/dialog-actions.component.d.ts +12 -0
  512. package/lib/components/overlay/dialog/components/dialog-content.component.d.ts +5 -0
  513. package/lib/components/overlay/dialog/components/dialog-header.component.d.ts +19 -0
  514. package/lib/components/overlay/dialog/container/dialog-container.component.d.ts +32 -0
  515. package/lib/components/overlay/dialog/flow/dialog-flow.component.d.ts +19 -0
  516. package/lib/components/overlay/dialog/flow/dialog-step.component.d.ts +7 -0
  517. package/lib/components/overlay/dialog/model/dialog.types.d.ts +87 -0
  518. package/lib/components/overlay/dialog/provider/provide-solaris-dialog.d.ts +3 -0
  519. package/lib/components/overlay/dialog/service/dialog-ref.d.ts +11 -0
  520. package/lib/components/overlay/dialog/service/dialog.service.d.ts +20 -0
  521. package/lib/components/overlay/dialog/token/dialog-data.token.d.ts +4 -0
  522. package/lib/components/overlay/dialog/token/dialog.tokens.d.ts +4 -0
  523. package/lib/services/accessibility/directives/visually-hidden.directive.d.ts +5 -0
  524. package/lib/services/accessibility/model/solaris-accessibility-config.interface.d.ts +4 -0
  525. package/lib/services/accessibility/model/solaris-accessibility.types.d.ts +5 -0
  526. package/lib/services/accessibility/provider/provide-solaris-accessibility.d.ts +3 -0
  527. package/lib/services/accessibility/service/solaris-accessibility.service.d.ts +15 -0
  528. package/lib/services/accessibility/testing/solaris-accessibility-testing.provider.d.ts +3 -0
  529. package/lib/services/accessibility/token/solaris-accessibility.tokens.d.ts +3 -0
  530. package/lib/services/icon/icons/groups/actions.d.ts +2 -0
  531. package/lib/services/icon/icons/groups/data.d.ts +2 -0
  532. package/lib/services/icon/icons/groups/layout.d.ts +2 -0
  533. package/lib/services/icon/icons/groups/navigation.d.ts +2 -0
  534. package/lib/services/icon/icons/groups/status.d.ts +2 -0
  535. package/lib/services/icon/icons/groups/theme.d.ts +2 -0
  536. package/lib/services/icon/icons/index.d.ts +1 -0
  537. package/lib/services/icon/icons/solaris-built-in-icons.d.ts +2 -0
  538. package/lib/services/icon/index.d.ts +8 -0
  539. package/lib/services/icon/model/solaris-icon-definition.interface.d.ts +45 -0
  540. package/lib/services/icon/model/solaris-icon.types.d.ts +4 -0
  541. package/lib/services/icon/provider/provide-solaris-icons.d.ts +3 -0
  542. package/lib/services/icon/service/solaris-icon-registry.service.d.ts +12 -0
  543. package/lib/services/icon/token/solaris-icon.tokens.d.ts +6 -0
  544. package/lib/services/theme/model/solaris-theme-config.interface.d.ts +5 -0
  545. package/lib/services/theme/model/solaris-theme.types.d.ts +3 -0
  546. package/lib/services/theme/provider/provide-solaris-theme.d.ts +3 -0
  547. package/lib/services/theme/service/solaris-theme.service.d.ts +9 -0
  548. package/lib/services/theme/testing/solaris-theme-testing.provider.d.ts +3 -0
  549. package/lib/services/theme/token/solaris-theme.tokens.d.ts +3 -0
  550. package/lib/services/translation/index.d.ts +8 -0
  551. package/lib/services/translation/model/solaris-locale.types.d.ts +4 -0
  552. package/lib/services/translation/model/solaris-translate-config.interface.d.ts +8 -0
  553. package/lib/services/translation/model/solaris-translate-defaults.d.ts +2 -0
  554. package/lib/services/translation/model/solaris-translation.types.d.ts +3 -0
  555. package/lib/services/translation/pipe/solaris-translate.pipe.d.ts +8 -0
  556. package/lib/services/translation/provider/provide-solaris-translate.d.ts +3 -0
  557. package/lib/services/translation/service/solaris-translate.service.d.ts +15 -0
  558. package/lib/services/translation/testing/solaris-translate-testing.provider.d.ts +3 -0
  559. package/lib/services/translation/token/solaris-translate.tokens.d.ts +3 -0
  560. package/lib/testing/provide-solaris-testing.d.ts +10 -0
  561. package/lib/testing/solaris-test-utilities.d.ts +3 -0
  562. package/package.json +9 -5
  563. package/styles/_button.scss +50 -220
  564. package/styles/_core.scss +37 -37
  565. package/styles/_dropdown-menu.scss +72 -0
  566. package/styles/_icon-button.scss +43 -219
  567. package/styles/_index.scss +19 -19
  568. package/styles/_input.scss +255 -0
  569. package/styles/_popover.scss +73 -0
  570. package/styles/_theme.scss +36 -36
  571. package/styles/_toast.scss +9 -0
  572. package/styles/_tooltip.scss +3 -0
  573. package/fesm2022/educarehq-solaris-ui.mjs +0 -1047
  574. package/fesm2022/educarehq-solaris-ui.mjs.map +0 -1
  575. package/types/educarehq-solaris-ui.d.ts +0 -408
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textarea.types.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/forms/textarea/model/textarea.types.ts"],"names":[],"mappings":"","sourcesContent":["export type SolarisTextareaAppearance = 'outline' | 'surface' | 'filled';\n\nexport type SolarisTextareaSize = 'sm' | 'md' | 'lg';\n\nexport type SolarisTextareaDensity = 'compact' | 'comfortable';\n\nexport type SolarisTextareaRadius = 'none' | 'sm' | 'md' | 'lg';\n\nexport type SolarisTextareaResize = 'none' | 'vertical' | 'horizontal' | 'both';\n"]}
@@ -0,0 +1,20 @@
1
+ import { Component, inject, input, computed } from '@angular/core';
2
+ import { SolarisIconRegistryService } from '../../../services/icon';
3
+ import * as i0 from "@angular/core";
4
+ export class SolarisIconComponent {
5
+ registry = inject(SolarisIconRegistryService);
6
+ name = input.required(...(ngDevMode ? [{ debugName: "name" }] : /* istanbul ignore next */ []));
7
+ ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
8
+ decorative = input(false, ...(ngDevMode ? [{ debugName: "decorative" }] : /* istanbul ignore next */ []));
9
+ definition = computed(() => this.registry.getIcon(this.name()), ...(ngDevMode ? [{ debugName: "definition" }] : /* istanbul ignore next */ []));
10
+ isHidden = computed(() => this.decorative(), ...(ngDevMode ? [{ debugName: "isHidden" }] : /* istanbul ignore next */ []));
11
+ accessibleLabel = computed(() => this.ariaLabel() ?? '', ...(ngDevMode ? [{ debugName: "accessibleLabel" }] : /* istanbul ignore next */ []));
12
+ hasSemanticLabel = computed(() => !this.decorative() && !!this.ariaLabel(), ...(ngDevMode ? [{ debugName: "hasSemanticLabel" }] : /* istanbul ignore next */ []));
13
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisIconComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
14
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SolarisIconComponent, isStandalone: true, selector: "solaris-icon", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, decorative: { classPropertyName: "decorative", publicName: "decorative", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "@if (definition(); as icon) {\n <svg\n width=\"100%\"\n height=\"100%\"\n [attr.viewBox]=\"icon.viewBox\"\n [attr.fill]=\"icon.fill ?? 'none'\"\n [attr.stroke]=\"icon.stroke ?? 'currentColor'\"\n [attr.stroke-width]=\"icon.strokeWidth ?? 2\"\n [attr.stroke-linecap]=\"icon.strokeLinecap ?? 'round'\"\n [attr.stroke-linejoin]=\"icon.strokeLinejoin ?? 'round'\"\n [attr.aria-hidden]=\"isHidden() ? 'true' : null\"\n [attr.aria-label]=\"hasSemanticLabel() ? accessibleLabel() : null\"\n [attr.role]=\"isHidden() ? 'presentation' : 'img'\"\n >\n @for (element of icon.elements; track $index) {\n @switch (element.type) {\n @case ('path') {\n <path [attr.d]=\"element.d\" />\n }\n @case ('line') {\n <line\n [attr.x1]=\"element.x1\"\n [attr.y1]=\"element.y1\"\n [attr.x2]=\"element.x2\"\n [attr.y2]=\"element.y2\"\n />\n }\n @case ('polyline') {\n <polyline [attr.points]=\"element.points\" />\n }\n @case ('polygon') {\n <polygon [attr.points]=\"element.points\" />\n }\n @case ('circle') {\n <circle\n [attr.cx]=\"element.cx\"\n [attr.cy]=\"element.cy\"\n [attr.r]=\"element.r\"\n />\n }\n @case ('rect') {\n <rect\n [attr.x]=\"element.x\"\n [attr.y]=\"element.y\"\n [attr.width]=\"element.width\"\n [attr.height]=\"element.height\"\n [attr.rx]=\"element.rx\"\n [attr.ry]=\"element.ry\"\n />\n }\n }\n }\n </svg>\n}\n", styles: [":host{width:1em;height:1em;align-items:center;display:inline-flex;justify-content:center}:host svg{width:100%;height:100%}\n"] });
15
+ }
16
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisIconComponent, decorators: [{
17
+ type: Component,
18
+ args: [{ selector: 'solaris-icon', standalone: true, template: "@if (definition(); as icon) {\n <svg\n width=\"100%\"\n height=\"100%\"\n [attr.viewBox]=\"icon.viewBox\"\n [attr.fill]=\"icon.fill ?? 'none'\"\n [attr.stroke]=\"icon.stroke ?? 'currentColor'\"\n [attr.stroke-width]=\"icon.strokeWidth ?? 2\"\n [attr.stroke-linecap]=\"icon.strokeLinecap ?? 'round'\"\n [attr.stroke-linejoin]=\"icon.strokeLinejoin ?? 'round'\"\n [attr.aria-hidden]=\"isHidden() ? 'true' : null\"\n [attr.aria-label]=\"hasSemanticLabel() ? accessibleLabel() : null\"\n [attr.role]=\"isHidden() ? 'presentation' : 'img'\"\n >\n @for (element of icon.elements; track $index) {\n @switch (element.type) {\n @case ('path') {\n <path [attr.d]=\"element.d\" />\n }\n @case ('line') {\n <line\n [attr.x1]=\"element.x1\"\n [attr.y1]=\"element.y1\"\n [attr.x2]=\"element.x2\"\n [attr.y2]=\"element.y2\"\n />\n }\n @case ('polyline') {\n <polyline [attr.points]=\"element.points\" />\n }\n @case ('polygon') {\n <polygon [attr.points]=\"element.points\" />\n }\n @case ('circle') {\n <circle\n [attr.cx]=\"element.cx\"\n [attr.cy]=\"element.cy\"\n [attr.r]=\"element.r\"\n />\n }\n @case ('rect') {\n <rect\n [attr.x]=\"element.x\"\n [attr.y]=\"element.y\"\n [attr.width]=\"element.width\"\n [attr.height]=\"element.height\"\n [attr.rx]=\"element.rx\"\n [attr.ry]=\"element.ry\"\n />\n }\n }\n }\n </svg>\n}\n", styles: [":host{width:1em;height:1em;align-items:center;display:inline-flex;justify-content:center}:host svg{width:100%;height:100%}\n"] }]
19
+ }], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], decorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "decorative", required: false }] }] } });
20
+ //# sourceMappingURL=solaris-icon.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solaris-icon.component.js","sourceRoot":"","sources":["../../../../../../../../packages/angular/src/lib/components/icon/component/solaris-icon.component.ts","../../../../../../../../packages/angular/src/lib/components/icon/component/solaris-icon.component.html"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;;AAQpE,MAAM,OAAO,oBAAoB;IACd,QAAQ,GAAG,MAAM,CAAC,0BAA0B,CAAC,CAAC;IAEtD,IAAI,GAAG,KAAK,CAAC,QAAQ,0EAAU,CAAC;IAChC,SAAS,GAAG,KAAK,0FAAU,CAAC;IAC5B,UAAU,GAAG,KAAK,CAAC,KAAK,iFAAC,CAAC;IAEhB,UAAU,GAAG,QAAQ,CAAC,GAAG,EAAE,CAC5C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,iFACnC,CAAC;IAEiB,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,+EAAC,CAAC;IAC7C,eAAe,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,sFAAC,CAAC;IACzD,gBAAgB,GAAG,QAAQ,CAC5C,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,uFAC/C,CAAC;wGAfS,oBAAoB;4FAApB,oBAAoB,mdCVjC,4oDAsDA;;4FD5Ca,oBAAoB;kBANhC,SAAS;+BACE,cAAc,cACZ,IAAI","sourcesContent":["import { Component, inject, input, computed } from '@angular/core';\n\nimport { SolarisIconRegistryService } from '../../../services/icon';\n\n@Component({\n selector: 'solaris-icon',\n standalone: true,\n templateUrl: './solaris-icon.component.html',\n styleUrls: ['./solaris-icon.component.scss'],\n})\nexport class SolarisIconComponent {\n private readonly registry = inject(SolarisIconRegistryService);\n\n readonly name = input.required<string>();\n readonly ariaLabel = input<string>();\n readonly decorative = input(false);\n\n protected readonly definition = computed(() =>\n this.registry.getIcon(this.name()),\n );\n\n protected readonly isHidden = computed(() => this.decorative());\n protected readonly accessibleLabel = computed(() => this.ariaLabel() ?? '');\n protected readonly hasSemanticLabel = computed(\n () => !this.decorative() && !!this.ariaLabel(),\n );\n}\n","@if (definition(); as icon) {\n <svg\n width=\"100%\"\n height=\"100%\"\n [attr.viewBox]=\"icon.viewBox\"\n [attr.fill]=\"icon.fill ?? 'none'\"\n [attr.stroke]=\"icon.stroke ?? 'currentColor'\"\n [attr.stroke-width]=\"icon.strokeWidth ?? 2\"\n [attr.stroke-linecap]=\"icon.strokeLinecap ?? 'round'\"\n [attr.stroke-linejoin]=\"icon.strokeLinejoin ?? 'round'\"\n [attr.aria-hidden]=\"isHidden() ? 'true' : null\"\n [attr.aria-label]=\"hasSemanticLabel() ? accessibleLabel() : null\"\n [attr.role]=\"isHidden() ? 'presentation' : 'img'\"\n >\n @for (element of icon.elements; track $index) {\n @switch (element.type) {\n @case ('path') {\n <path [attr.d]=\"element.d\" />\n }\n @case ('line') {\n <line\n [attr.x1]=\"element.x1\"\n [attr.y1]=\"element.y1\"\n [attr.x2]=\"element.x2\"\n [attr.y2]=\"element.y2\"\n />\n }\n @case ('polyline') {\n <polyline [attr.points]=\"element.points\" />\n }\n @case ('polygon') {\n <polygon [attr.points]=\"element.points\" />\n }\n @case ('circle') {\n <circle\n [attr.cx]=\"element.cx\"\n [attr.cy]=\"element.cy\"\n [attr.r]=\"element.r\"\n />\n }\n @case ('rect') {\n <rect\n [attr.x]=\"element.x\"\n [attr.y]=\"element.y\"\n [attr.width]=\"element.width\"\n [attr.height]=\"element.height\"\n [attr.rx]=\"element.rx\"\n [attr.ry]=\"element.ry\"\n />\n }\n }\n }\n </svg>\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { SolarisIconComponent } from './component/solaris-icon.component';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../packages/angular/src/lib/components/icon/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC","sourcesContent":["export { SolarisIconComponent } from './component/solaris-icon.component';\r\n"]}
@@ -0,0 +1,27 @@
1
+ import { Component, contentChild, computed } from '@angular/core';
2
+ import { SolarisDropdownMenuLabelComponent } from './dropdown-menu-label.component';
3
+ import * as i0 from "@angular/core";
4
+ let nextGroupId = 0;
5
+ export class SolarisDropdownMenuGroupComponent {
6
+ labelChild = contentChild(SolarisDropdownMenuLabelComponent, ...(ngDevMode ? [{ debugName: "labelChild" }] : /* istanbul ignore next */ []));
7
+ groupId = `solaris-dropdown-menu-group-${++nextGroupId}`;
8
+ labelId = computed(() => {
9
+ const label = this.labelChild();
10
+ return label ? label.labelId : null;
11
+ }, ...(ngDevMode ? [{ debugName: "labelId" }] : /* istanbul ignore next */ []));
12
+ computedRole = computed(() => {
13
+ return this.labelId() ? 'group' : null;
14
+ }, ...(ngDevMode ? [{ debugName: "computedRole" }] : /* istanbul ignore next */ []));
15
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
16
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: SolarisDropdownMenuGroupComponent, isStandalone: true, selector: "solaris-dropdown-menu-group", host: { properties: { "attr.role": "computedRole()", "id": "groupId", "attr.aria-labelledby": "labelId()" }, classAttribute: "solaris-dropdown-menu-group" }, queries: [{ propertyName: "labelChild", first: true, predicate: SolarisDropdownMenuLabelComponent, descendants: true, isSignal: true }], ngImport: i0, template: "<ng-content />\n" });
17
+ }
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuGroupComponent, decorators: [{
19
+ type: Component,
20
+ args: [{ selector: 'solaris-dropdown-menu-group', standalone: true, host: {
21
+ '[attr.role]': 'computedRole()',
22
+ '[id]': 'groupId',
23
+ class: 'solaris-dropdown-menu-group',
24
+ '[attr.aria-labelledby]': 'labelId()',
25
+ }, template: "<ng-content />\n" }]
26
+ }], propDecorators: { labelChild: [{ type: i0.ContentChild, args: [i0.forwardRef(() => SolarisDropdownMenuLabelComponent), { isSignal: true }] }] } });
27
+ //# sourceMappingURL=dropdown-menu-group.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu-group.component.js","sourceRoot":"","sources":["../../../../../../../../../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"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAElE,OAAO,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;;AAEpF,IAAI,WAAW,GAAG,CAAC,CAAC;AAapB,MAAM,OAAO,iCAAiC;IACnC,UAAU,GAAG,YAAY,CAAC,iCAAiC,iFAAC,CAAC;IAE7D,OAAO,GAAG,+BAA+B,EAAE,WAAW,EAAE,CAAC;IAE/C,OAAO,GAAG,QAAQ,CAAgB,GAAG,EAAE;QACxD,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAChC,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC,8EAAC,CAAC;IAEgB,YAAY,GAAG,QAAQ,CAAgB,GAAG,EAAE;QAC7D,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC,mFAAC,CAAC;wGAZQ,iCAAiC;4FAAjC,iCAAiC,6RACT,iCAAiC,gEClBtE,kBACA;;4FDgBa,iCAAiC;kBAX7C,SAAS;+BACE,6BAA6B,cAC3B,IAAI,QAEV;wBACJ,aAAa,EAAE,gBAAgB;wBAC/B,MAAM,EAAE,SAAS;wBACjB,KAAK,EAAE,6BAA6B;wBACpC,wBAAwB,EAAE,WAAW;qBACtC;+FAGkC,iCAAiC","sourcesContent":["import { Component, contentChild, computed } from '@angular/core';\n\nimport { SolarisDropdownMenuLabelComponent } from './dropdown-menu-label.component';\n\nlet nextGroupId = 0;\n\n@Component({\n selector: 'solaris-dropdown-menu-group',\n standalone: true,\n templateUrl: './dropdown-menu-group.component.html',\n host: {\n '[attr.role]': 'computedRole()',\n '[id]': 'groupId',\n class: 'solaris-dropdown-menu-group',\n '[attr.aria-labelledby]': 'labelId()',\n },\n})\nexport class SolarisDropdownMenuGroupComponent {\n readonly labelChild = contentChild(SolarisDropdownMenuLabelComponent);\n\n readonly groupId = `solaris-dropdown-menu-group-${++nextGroupId}`;\n\n protected readonly labelId = computed<string | null>(() => {\n const label = this.labelChild();\n return label ? label.labelId : null;\n });\n\n protected readonly computedRole = computed<string | null>(() => {\n return this.labelId() ? 'group' : null;\n });\n}\n","<ng-content />\n"]}
@@ -0,0 +1,96 @@
1
+ import { Component, input, output, computed, ElementRef, inject, HostListener, forwardRef, } from '@angular/core';
2
+ import { SolarisIconComponent } from '../../../icon';
3
+ import { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';
4
+ import * as i0 from "@angular/core";
5
+ export class SolarisDropdownMenuItemComponent {
6
+ elementRef = inject(ElementRef);
7
+ color = input('neutral', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
8
+ type = input('item', ...(ngDevMode ? [{ debugName: "type" }] : /* istanbul ignore next */ []));
9
+ closeOnSelect = input(undefined, ...(ngDevMode ? [{ debugName: "closeOnSelect" }] : /* istanbul ignore next */ []));
10
+ descriptionKey = input(undefined, ...(ngDevMode ? [{ debugName: "descriptionKey" }] : /* istanbul ignore next */ []));
11
+ description = input(undefined, ...(ngDevMode ? [{ debugName: "description" }] : /* istanbul ignore next */ []));
12
+ checked = input(undefined, ...(ngDevMode ? [{ debugName: "checked" }] : /* istanbul ignore next */ []));
13
+ labelKey = input(undefined, ...(ngDevMode ? [{ debugName: "labelKey" }] : /* istanbul ignore next */ []));
14
+ shortcut = input(undefined, ...(ngDevMode ? [{ debugName: "shortcut" }] : /* istanbul ignore next */ []));
15
+ label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
16
+ icon = input(undefined, ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
17
+ iconDecorative = input(false, ...(ngDevMode ? [{ debugName: "iconDecorative" }] : /* istanbul ignore next */ []));
18
+ value = input(undefined, ...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
19
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
20
+ itemSelected = output();
21
+ computedRole = computed(() => {
22
+ const t = this.type();
23
+ if (t === 'checkbox')
24
+ return 'menuitemcheckbox';
25
+ if (t === 'radio')
26
+ return 'menuitemradio';
27
+ return 'menuitem';
28
+ }, ...(ngDevMode ? [{ debugName: "computedRole" }] : /* istanbul ignore next */ []));
29
+ computedAriaChecked = computed(() => {
30
+ const t = this.type();
31
+ if (t === 'checkbox' || t === 'radio') {
32
+ return this.checked() ? 'true' : 'false';
33
+ }
34
+ return null;
35
+ }, ...(ngDevMode ? [{ debugName: "computedAriaChecked" }] : /* istanbul ignore next */ []));
36
+ tabIndexValue = computed(() => {
37
+ return this.disabled() ? '-1' : '0';
38
+ }, ...(ngDevMode ? [{ debugName: "tabIndexValue" }] : /* istanbul ignore next */ []));
39
+ hasLeadingContent = computed(() => {
40
+ return !!(this.icon() ||
41
+ this.type() === 'checkbox' ||
42
+ this.type() === 'radio');
43
+ }, ...(ngDevMode ? [{ debugName: "hasLeadingContent" }] : /* istanbul ignore next */ []));
44
+ handleClick() {
45
+ if (this.disabled())
46
+ return;
47
+ this.itemSelected.emit();
48
+ }
49
+ onKeydown(event) {
50
+ if (this.disabled())
51
+ return;
52
+ if (event.key === 'Enter' || event.key === ' ') {
53
+ event.preventDefault();
54
+ event.stopPropagation();
55
+ this.handleClick();
56
+ }
57
+ }
58
+ focus() {
59
+ // SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.
60
+ this.elementRef.nativeElement.focus();
61
+ }
62
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
63
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SolarisDropdownMenuItemComponent, isStandalone: true, selector: "solaris-dropdown-menu-item", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, closeOnSelect: { classPropertyName: "closeOnSelect", publicName: "closeOnSelect", isSignal: true, isRequired: false, transformFunction: null }, descriptionKey: { classPropertyName: "descriptionKey", publicName: "descriptionKey", isSignal: true, isRequired: false, transformFunction: null }, description: { classPropertyName: "description", publicName: "description", isSignal: true, isRequired: false, transformFunction: null }, checked: { classPropertyName: "checked", publicName: "checked", isSignal: true, isRequired: false, transformFunction: null }, labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, shortcut: { classPropertyName: "shortcut", publicName: "shortcut", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, iconDecorative: { classPropertyName: "iconDecorative", publicName: "iconDecorative", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { itemSelected: "itemSelected" }, host: { listeners: { "click": "handleClick()", "keydown": "onKeydown($event)" }, properties: { "attr.data-type": "type()", "attr.data-color": "color()", "attr.role": "computedRole()", "attr.tabindex": "tabIndexValue()", "attr.aria-checked": "computedAriaChecked()", "attr.data-checked": "checked() ? \"\" : null", "attr.data-disabled": "disabled() ? \"\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.data-has-leading": "hasLeadingContent() ? \"\" : null" }, classAttribute: "solaris-dropdown-menu-item" }, providers: [
64
+ {
65
+ provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,
66
+ useExisting: forwardRef(() => SolarisDropdownMenuItemComponent),
67
+ },
68
+ ], ngImport: i0, template: "@if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-menu-item__leading\">\n @if (type() === 'checkbox') {\n <span\n class=\"solaris-dropdown-menu-item__checkbox\"\n [class.solaris-dropdown-menu-item__checkbox--checked]=\"checked()\"\n aria-hidden=\"true\"\n >\n @if (checked()) {\n <span class=\"solaris-dropdown-menu-item__checkbox-icon\">\n <solaris-icon name=\"check\" [decorative]=\"true\" />\n </span>\n }\n </span>\n } @else if (type() === 'radio') {\n <span\n class=\"solaris-dropdown-menu-item__radio\"\n [class.solaris-dropdown-menu-item__radio--checked]=\"checked()\"\n aria-hidden=\"true\"\n >\n @if (checked()) {\n <span class=\"solaris-dropdown-menu-item__radio-dot\"></span>\n }\n </span>\n } @else {\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n }\n </div>\n}\n<div class=\"solaris-dropdown-menu-item__content\">\n @if (label()) {\n <span class=\"solaris-dropdown-menu-item__label\">{{ label() }}</span>\n }\n @if (description()) {\n <span class=\"solaris-dropdown-menu-item__description\">{{\n description()\n }}</span>\n }\n</div>\n@if (shortcut()) {\n <span class=\"solaris-dropdown-menu-item__shortcut\" aria-hidden=\"true\">{{\n shortcut()\n }}</span>\n}\n", styles: [":host{--solaris-dropdown-menu-item-gap: var(--solaris-spacing-2);--solaris-dropdown-menu-item-radius: var(--solaris-radius-sm);--solaris-dropdown-menu-item-padding-y: var(--solaris-spacing-2);--solaris-dropdown-menu-item-padding-x: var(--solaris-spacing-4);--solaris-dropdown-menu-item-label-color: var(--solaris-text-default);--solaris-dropdown-menu-item-danger-color: var(--solaris-danger-text);--solaris-dropdown-menu-item-shortcut-color: var(--solaris-text-muted);--solaris-dropdown-menu-item-danger-hover: var(--solaris-danger-surface);--solaris-dropdown-menu-item-description-color: var(--solaris-text-muted);--solaris-dropdown-menu-item-focus-ring-color: var(--solaris-primary-base);--solaris-dropdown-menu-item-hover-background: var(--solaris-surface-muted);--solaris-dropdown-menu-item-focus-background: var(--solaris-surface-subtle);display:flex;outline:none;cursor:pointer;align-items:center;text-decoration:none;box-sizing:border-box;min-height:var(--solaris-spacing-8);font-size:var(--solaris-font-size-sm);line-height:var(--solaris-line-height-sm);gap:var(--solaris-dropdown-menu-item-gap);color:var(--solaris-dropdown-menu-item-label-color);border-radius:var(--solaris-dropdown-menu-item-radius);font-family:var(--solaris-font-family-sans),system-ui;padding:var(--solaris-dropdown-menu-item-padding-y) var(--solaris-dropdown-menu-item-padding-x);transition:background var(--solaris-motion-duration-fast) var(--solaris-motion-easing-standard)}:host(:hover){background:var(--solaris-dropdown-menu-item-hover-background)}:host(:focus){outline-offset:-2px;background:var(--solaris-dropdown-menu-item-hover-background)}:host(:focus-visible){outline:var(--solaris-border-width-md) solid var(--solaris-dropdown-menu-item-focus-ring-color)}:host([data-disabled]){opacity:.5;cursor:not-allowed}:host([data-color=danger]){color:var(--solaris-dropdown-menu-item-danger-color)}:host([data-color=danger]:hover),:host([data-color=danger]:focus){background:var(--solaris-dropdown-menu-item-danger-hover)}.solaris-dropdown-menu-item__leading{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-5);height:var(--solaris-spacing-5);color:var(--solaris-text-muted)}:host([data-color=danger]) .solaris-dropdown-menu-item__leading{color:var(--solaris-dropdown-menu-item-danger-color)}.solaris-dropdown-menu-item__checkbox{width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box;justify-content:center;background:transparent;border-radius:var(--solaris-radius-sm);border:var(--solaris-border-width-sm) solid var(--solaris-primary-border)}.solaris-dropdown-menu-item__checkbox--checked{color:var(--solaris-primary-text);background:var(--solaris-primary-base);border-color:var(--solaris-primary-base)}.solaris-dropdown-menu-item__checkbox-icon{width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box;justify-content:center;padding:calc(var(--solaris-spacing-1) / 2)}.solaris-dropdown-menu-item__radio{width:100%;height:100%;display:flex;border-radius:50%;align-items:center;box-sizing:border-box;background:transparent;justify-content:center;border:calc(var(--solaris-spacing-1) / 2) solid var(--solaris-primary-border)}.solaris-dropdown-menu-item__radio--checked{border-color:var(--solaris-primary-base)}.solaris-dropdown-menu-item__radio-dot{border-radius:50%;width:var(--solaris-spacing-2);height:var(--solaris-spacing-2);background:var(--solaris-primary-base)}.solaris-dropdown-menu-item__content{flex:1;min-width:0;display:flex;gap:.125rem;flex-direction:column}.solaris-dropdown-menu-item__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.solaris-dropdown-menu-item__description{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);color:var(--solaris-dropdown-menu-item-description-color)}.solaris-dropdown-menu-item__shortcut{flex-shrink:0;font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);margin-inline-start:var(--solaris-spacing-4);color:var(--solaris-dropdown-menu-item-shortcut-color)}@media(prefers-reduced-motion:reduce){:host{transition:none}}[data-reduced-motion=true] :host{transition:none}\n"], dependencies: [{ kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative"] }] });
69
+ }
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuItemComponent, decorators: [{
71
+ type: Component,
72
+ args: [{ selector: 'solaris-dropdown-menu-item', standalone: true, imports: [SolarisIconComponent], providers: [
73
+ {
74
+ provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,
75
+ useExisting: forwardRef(() => SolarisDropdownMenuItemComponent),
76
+ },
77
+ ], host: {
78
+ '[attr.data-type]': 'type()',
79
+ '[attr.data-color]': 'color()',
80
+ '[attr.role]': 'computedRole()',
81
+ class: 'solaris-dropdown-menu-item',
82
+ '[attr.tabindex]': 'tabIndexValue()',
83
+ '[attr.aria-checked]': 'computedAriaChecked()',
84
+ '[attr.data-checked]': 'checked() ? "" : null',
85
+ '[attr.data-disabled]': 'disabled() ? "" : null',
86
+ '[attr.aria-disabled]': 'disabled() ? "true" : null',
87
+ '[attr.data-has-leading]': 'hasLeadingContent() ? "" : null',
88
+ }, template: "@if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-menu-item__leading\">\n @if (type() === 'checkbox') {\n <span\n class=\"solaris-dropdown-menu-item__checkbox\"\n [class.solaris-dropdown-menu-item__checkbox--checked]=\"checked()\"\n aria-hidden=\"true\"\n >\n @if (checked()) {\n <span class=\"solaris-dropdown-menu-item__checkbox-icon\">\n <solaris-icon name=\"check\" [decorative]=\"true\" />\n </span>\n }\n </span>\n } @else if (type() === 'radio') {\n <span\n class=\"solaris-dropdown-menu-item__radio\"\n [class.solaris-dropdown-menu-item__radio--checked]=\"checked()\"\n aria-hidden=\"true\"\n >\n @if (checked()) {\n <span class=\"solaris-dropdown-menu-item__radio-dot\"></span>\n }\n </span>\n } @else {\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n }\n </div>\n}\n<div class=\"solaris-dropdown-menu-item__content\">\n @if (label()) {\n <span class=\"solaris-dropdown-menu-item__label\">{{ label() }}</span>\n }\n @if (description()) {\n <span class=\"solaris-dropdown-menu-item__description\">{{\n description()\n }}</span>\n }\n</div>\n@if (shortcut()) {\n <span class=\"solaris-dropdown-menu-item__shortcut\" aria-hidden=\"true\">{{\n shortcut()\n }}</span>\n}\n", styles: [":host{--solaris-dropdown-menu-item-gap: var(--solaris-spacing-2);--solaris-dropdown-menu-item-radius: var(--solaris-radius-sm);--solaris-dropdown-menu-item-padding-y: var(--solaris-spacing-2);--solaris-dropdown-menu-item-padding-x: var(--solaris-spacing-4);--solaris-dropdown-menu-item-label-color: var(--solaris-text-default);--solaris-dropdown-menu-item-danger-color: var(--solaris-danger-text);--solaris-dropdown-menu-item-shortcut-color: var(--solaris-text-muted);--solaris-dropdown-menu-item-danger-hover: var(--solaris-danger-surface);--solaris-dropdown-menu-item-description-color: var(--solaris-text-muted);--solaris-dropdown-menu-item-focus-ring-color: var(--solaris-primary-base);--solaris-dropdown-menu-item-hover-background: var(--solaris-surface-muted);--solaris-dropdown-menu-item-focus-background: var(--solaris-surface-subtle);display:flex;outline:none;cursor:pointer;align-items:center;text-decoration:none;box-sizing:border-box;min-height:var(--solaris-spacing-8);font-size:var(--solaris-font-size-sm);line-height:var(--solaris-line-height-sm);gap:var(--solaris-dropdown-menu-item-gap);color:var(--solaris-dropdown-menu-item-label-color);border-radius:var(--solaris-dropdown-menu-item-radius);font-family:var(--solaris-font-family-sans),system-ui;padding:var(--solaris-dropdown-menu-item-padding-y) var(--solaris-dropdown-menu-item-padding-x);transition:background var(--solaris-motion-duration-fast) var(--solaris-motion-easing-standard)}:host(:hover){background:var(--solaris-dropdown-menu-item-hover-background)}:host(:focus){outline-offset:-2px;background:var(--solaris-dropdown-menu-item-hover-background)}:host(:focus-visible){outline:var(--solaris-border-width-md) solid var(--solaris-dropdown-menu-item-focus-ring-color)}:host([data-disabled]){opacity:.5;cursor:not-allowed}:host([data-color=danger]){color:var(--solaris-dropdown-menu-item-danger-color)}:host([data-color=danger]:hover),:host([data-color=danger]:focus){background:var(--solaris-dropdown-menu-item-danger-hover)}.solaris-dropdown-menu-item__leading{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-5);height:var(--solaris-spacing-5);color:var(--solaris-text-muted)}:host([data-color=danger]) .solaris-dropdown-menu-item__leading{color:var(--solaris-dropdown-menu-item-danger-color)}.solaris-dropdown-menu-item__checkbox{width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box;justify-content:center;background:transparent;border-radius:var(--solaris-radius-sm);border:var(--solaris-border-width-sm) solid var(--solaris-primary-border)}.solaris-dropdown-menu-item__checkbox--checked{color:var(--solaris-primary-text);background:var(--solaris-primary-base);border-color:var(--solaris-primary-base)}.solaris-dropdown-menu-item__checkbox-icon{width:100%;height:100%;display:flex;align-items:center;box-sizing:border-box;justify-content:center;padding:calc(var(--solaris-spacing-1) / 2)}.solaris-dropdown-menu-item__radio{width:100%;height:100%;display:flex;border-radius:50%;align-items:center;box-sizing:border-box;background:transparent;justify-content:center;border:calc(var(--solaris-spacing-1) / 2) solid var(--solaris-primary-border)}.solaris-dropdown-menu-item__radio--checked{border-color:var(--solaris-primary-base)}.solaris-dropdown-menu-item__radio-dot{border-radius:50%;width:var(--solaris-spacing-2);height:var(--solaris-spacing-2);background:var(--solaris-primary-base)}.solaris-dropdown-menu-item__content{flex:1;min-width:0;display:flex;gap:.125rem;flex-direction:column}.solaris-dropdown-menu-item__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.solaris-dropdown-menu-item__description{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);color:var(--solaris-dropdown-menu-item-description-color)}.solaris-dropdown-menu-item__shortcut{flex-shrink:0;font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);margin-inline-start:var(--solaris-spacing-4);color:var(--solaris-dropdown-menu-item-shortcut-color)}@media(prefers-reduced-motion:reduce){:host{transition:none}}[data-reduced-motion=true] :host{transition:none}\n"] }]
89
+ }], propDecorators: { color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], type: [{ type: i0.Input, args: [{ isSignal: true, alias: "type", required: false }] }], closeOnSelect: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeOnSelect", required: false }] }], descriptionKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "descriptionKey", required: false }] }], description: [{ type: i0.Input, args: [{ isSignal: true, alias: "description", required: false }] }], checked: [{ type: i0.Input, args: [{ isSignal: true, alias: "checked", required: false }] }], labelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelKey", required: false }] }], shortcut: [{ type: i0.Input, args: [{ isSignal: true, alias: "shortcut", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], iconDecorative: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconDecorative", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], itemSelected: [{ type: i0.Output, args: ["itemSelected"] }], handleClick: [{
90
+ type: HostListener,
91
+ args: ['click']
92
+ }], onKeydown: [{
93
+ type: HostListener,
94
+ args: ['keydown', ['$event']]
95
+ }] } });
96
+ //# sourceMappingURL=dropdown-menu-item.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu-item.component.js","sourceRoot":"","sources":["../../../../../../../../../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"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n input,\n output,\n computed,\n ElementRef,\n inject,\n HostListener,\n forwardRef,\n} from '@angular/core';\n\nimport { SolarisIconComponent } from '../../../icon';\n\nimport type {\n SolarisDropdownMenuItemColor,\n SolarisDropdownMenuItemType,\n} from '../model/dropdown-menu.types';\nimport { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';\n\n@Component({\n selector: 'solaris-dropdown-menu-item',\n standalone: true,\n imports: [SolarisIconComponent],\n providers: [\n {\n provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\n useExisting: forwardRef(() => SolarisDropdownMenuItemComponent),\n },\n ],\n templateUrl: './dropdown-menu-item.component.html',\n styleUrls: ['./dropdown-menu-item.component.scss'],\n host: {\n '[attr.data-type]': 'type()',\n '[attr.data-color]': 'color()',\n '[attr.role]': 'computedRole()',\n class: 'solaris-dropdown-menu-item',\n '[attr.tabindex]': 'tabIndexValue()',\n '[attr.aria-checked]': 'computedAriaChecked()',\n '[attr.data-checked]': 'checked() ? \"\" : null',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.data-has-leading]': 'hasLeadingContent() ? \"\" : null',\n },\n})\nexport class SolarisDropdownMenuItemComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly color = input<SolarisDropdownMenuItemColor>('neutral');\n readonly type = input<SolarisDropdownMenuItemType>('item');\n readonly closeOnSelect = input<boolean | undefined>(undefined);\n readonly descriptionKey = input<string | undefined>(undefined);\n readonly description = input<string | undefined>(undefined);\n readonly checked = input<boolean | undefined>(undefined);\n readonly labelKey = input<string | undefined>(undefined);\n readonly shortcut = input<string | undefined>(undefined);\n readonly label = input<string | undefined>(undefined);\n readonly icon = input<string | undefined>(undefined);\n readonly iconDecorative = input<boolean>(false);\n readonly value = input<unknown>(undefined);\n readonly disabled = input<boolean>(false);\n\n readonly itemSelected = output<void>();\n\n protected readonly computedRole = computed<string>(() => {\n const t = this.type();\n if (t === 'checkbox') return 'menuitemcheckbox';\n if (t === 'radio') return 'menuitemradio';\n return 'menuitem';\n });\n\n protected readonly computedAriaChecked = computed<string | null>(() => {\n const t = this.type();\n if (t === 'checkbox' || t === 'radio') {\n return this.checked() ? 'true' : 'false';\n }\n return null;\n });\n\n protected readonly tabIndexValue = computed<string>(() => {\n return this.disabled() ? '-1' : '0';\n });\n\n protected readonly hasLeadingContent = computed(() => {\n return !!(\n this.icon() ||\n this.type() === 'checkbox' ||\n this.type() === 'radio'\n );\n });\n\n @HostListener('click')\n handleClick(): void {\n if (this.disabled()) return;\n this.itemSelected.emit();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.handleClick();\n }\n }\n\n focus(): void {\n // SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.\n this.elementRef.nativeElement.focus();\n }\n}\n","@if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-menu-item__leading\">\n @if (type() === 'checkbox') {\n <span\n class=\"solaris-dropdown-menu-item__checkbox\"\n [class.solaris-dropdown-menu-item__checkbox--checked]=\"checked()\"\n aria-hidden=\"true\"\n >\n @if (checked()) {\n <span class=\"solaris-dropdown-menu-item__checkbox-icon\">\n <solaris-icon name=\"check\" [decorative]=\"true\" />\n </span>\n }\n </span>\n } @else if (type() === 'radio') {\n <span\n class=\"solaris-dropdown-menu-item__radio\"\n [class.solaris-dropdown-menu-item__radio--checked]=\"checked()\"\n aria-hidden=\"true\"\n >\n @if (checked()) {\n <span class=\"solaris-dropdown-menu-item__radio-dot\"></span>\n }\n </span>\n } @else {\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n }\n </div>\n}\n<div class=\"solaris-dropdown-menu-item__content\">\n @if (label()) {\n <span class=\"solaris-dropdown-menu-item__label\">{{ label() }}</span>\n }\n @if (description()) {\n <span class=\"solaris-dropdown-menu-item__description\">{{\n description()\n }}</span>\n }\n</div>\n@if (shortcut()) {\n <span class=\"solaris-dropdown-menu-item__shortcut\" aria-hidden=\"true\">{{\n shortcut()\n }}</span>\n}\n"]}
@@ -0,0 +1,22 @@
1
+ import { Component, input } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ let nextLabelId = 0;
4
+ export class SolarisDropdownMenuLabelComponent {
5
+ label = input.required(...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
6
+ labelId = `solaris-dropdown-menu-label-${++nextLabelId}`;
7
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuLabelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.2.17", type: SolarisDropdownMenuLabelComponent, isStandalone: true, selector: "solaris-dropdown-menu-label", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "id": "labelId" }, classAttribute: "solaris-dropdown-menu-label" }, ngImport: i0, template: '<span class="solaris-dropdown-menu-label__text">{{ label() }}</span>', isInline: true });
9
+ }
10
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuLabelComponent, decorators: [{
11
+ type: Component,
12
+ args: [{
13
+ selector: 'solaris-dropdown-menu-label',
14
+ standalone: true,
15
+ template: '<span class="solaris-dropdown-menu-label__text">{{ label() }}</span>',
16
+ host: {
17
+ '[id]': 'labelId',
18
+ class: 'solaris-dropdown-menu-label',
19
+ },
20
+ }]
21
+ }], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: true }] }] } });
22
+ //# sourceMappingURL=dropdown-menu-label.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu-label.component.js","sourceRoot":"","sources":["../../../../../../../../../packages/angular/src/lib/components/interaction/dropdown-menu/component/dropdown-menu-label.component.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;;AAEjD,IAAI,WAAW,GAAG,CAAC,CAAC;AAYpB,MAAM,OAAO,iCAAiC;IACnC,KAAK,GAAG,KAAK,CAAC,QAAQ,2EAAU,CAAC;IAEjC,OAAO,GAAG,+BAA+B,EAAE,WAAW,EAAE,CAAC;wGAHvD,iCAAiC;4FAAjC,iCAAiC,oTAN1C,sEAAsE;;4FAM7D,iCAAiC;kBAV7C,SAAS;mBAAC;oBACT,QAAQ,EAAE,6BAA6B;oBACvC,UAAU,EAAE,IAAI;oBAChB,QAAQ,EACN,sEAAsE;oBACxE,IAAI,EAAE;wBACJ,MAAM,EAAE,SAAS;wBACjB,KAAK,EAAE,6BAA6B;qBACrC;iBACF","sourcesContent":["import { Component, input } from '@angular/core';\n\nlet nextLabelId = 0;\n\n@Component({\n selector: 'solaris-dropdown-menu-label',\n standalone: true,\n template:\n '<span class=\"solaris-dropdown-menu-label__text\">{{ label() }}</span>',\n host: {\n '[id]': 'labelId',\n class: 'solaris-dropdown-menu-label',\n },\n})\nexport class SolarisDropdownMenuLabelComponent {\n readonly label = input.required<string>();\n\n readonly labelId = `solaris-dropdown-menu-label-${++nextLabelId}`;\n}\n"]}
@@ -0,0 +1,105 @@
1
+ import { Component, input, contentChildren, signal, computed, viewChild, TemplateRef, } from '@angular/core';
2
+ import { SOLARIS_DROPDOWN_NAVIGABLE_ITEM, } from '../model/dropdown-menu-navigation';
3
+ import * as i0 from "@angular/core";
4
+ let nextId = 0;
5
+ export class SolarisDropdownMenuComponent {
6
+ size = input('md', ...(ngDevMode ? [{ debugName: "size" }] : /* istanbul ignore next */ []));
7
+ density = input('comfortable', ...(ngDevMode ? [{ debugName: "density" }] : /* istanbul ignore next */ []));
8
+ navigableItems = contentChildren(SOLARIS_DROPDOWN_NAVIGABLE_ITEM, ...(ngDevMode ? [{ debugName: "navigableItems" }] : /* istanbul ignore next */ []));
9
+ contentTemplate = viewChild.required('contentTmpl', {
10
+ read: TemplateRef,
11
+ });
12
+ panelId = `solaris-dropdown-menu-${++nextId}`;
13
+ focusedIndex = signal(-1, ...(ngDevMode ? [{ debugName: "focusedIndex" }] : /* istanbul ignore next */ []));
14
+ enabledNavigableItems = computed(() => {
15
+ return this.navigableItems().filter((item) => !item.disabled());
16
+ }, ...(ngDevMode ? [{ debugName: "enabledNavigableItems" }] : /* istanbul ignore next */ []));
17
+ focusFirstItem() {
18
+ const enabled = this.enabledNavigableItems();
19
+ if (enabled.length > 0) {
20
+ const idx = this.navigableItems().indexOf(enabled[0]);
21
+ this.focusedIndex.set(idx);
22
+ enabled[0].focus();
23
+ }
24
+ }
25
+ focusLastItem() {
26
+ const enabled = this.enabledNavigableItems();
27
+ const last = enabled.at(-1);
28
+ if (last) {
29
+ const idx = this.navigableItems().indexOf(last);
30
+ this.focusedIndex.set(idx);
31
+ last.focus();
32
+ }
33
+ }
34
+ focusNextItem() {
35
+ const items = this.navigableItems();
36
+ const enabled = this.enabledNavigableItems();
37
+ if (enabled.length === 0)
38
+ return;
39
+ const currentFocused = this.focusedIndex();
40
+ const currentFocusedItem = currentFocused >= 0 ? items[currentFocused] : null;
41
+ let currentEnabledIndex = -1;
42
+ if (currentFocusedItem) {
43
+ currentEnabledIndex = enabled.indexOf(currentFocusedItem);
44
+ }
45
+ const nextEnabledIndex = (currentEnabledIndex + 1) % enabled.length;
46
+ const nextItem = enabled[nextEnabledIndex];
47
+ const nextItemIndex = items.indexOf(nextItem);
48
+ this.focusedIndex.set(nextItemIndex);
49
+ nextItem.focus();
50
+ }
51
+ focusPreviousItem() {
52
+ const items = this.navigableItems();
53
+ const enabled = this.enabledNavigableItems();
54
+ if (enabled.length === 0)
55
+ return;
56
+ const currentFocused = this.focusedIndex();
57
+ const currentFocusedItem = currentFocused >= 0 ? items[currentFocused] : null;
58
+ let currentEnabledIndex = -1;
59
+ if (currentFocusedItem) {
60
+ currentEnabledIndex = enabled.indexOf(currentFocusedItem);
61
+ }
62
+ const prevEnabledIndex = currentEnabledIndex <= 0 ? enabled.length - 1 : currentEnabledIndex - 1;
63
+ const prevItem = enabled[prevEnabledIndex];
64
+ const prevItemIndex = items.indexOf(prevItem);
65
+ this.focusedIndex.set(prevItemIndex);
66
+ prevItem.focus();
67
+ }
68
+ focusItemByLabel(label) {
69
+ const enabled = this.enabledNavigableItems();
70
+ const lowerLabel = label.toLowerCase();
71
+ const match = enabled.find((item) => {
72
+ const itemLabel = item.label();
73
+ return itemLabel?.toLowerCase().startsWith(lowerLabel);
74
+ });
75
+ if (match) {
76
+ const idx = this.navigableItems().indexOf(match);
77
+ this.focusedIndex.set(idx);
78
+ match.focus();
79
+ }
80
+ }
81
+ activateFocusedItem() {
82
+ const items = this.navigableItems();
83
+ const idx = this.focusedIndex();
84
+ if (idx >= 0 && idx < items.length) {
85
+ const item = items[idx];
86
+ if (!item.disabled()) {
87
+ item.handleClick();
88
+ }
89
+ }
90
+ }
91
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
92
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.17", type: SolarisDropdownMenuComponent, isStandalone: true, selector: "solaris-dropdown-menu", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, density: { classPropertyName: "density", publicName: "density", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "panelId", "attr.role": "\"menu\"", "attr.data-size": "size()", "attr.data-density": "density()" } }, queries: [{ propertyName: "navigableItems", predicate: SOLARIS_DROPDOWN_NAVIGABLE_ITEM, isSignal: true }], viewQueries: [{ propertyName: "contentTemplate", first: true, predicate: ["contentTmpl"], descendants: true, read: TemplateRef, isSignal: true }], ngImport: i0, template: "<ng-template #contentTmpl>\n <div class=\"solaris-dropdown-menu__wrapper\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{--solaris-dropdown-menu-min-width: calc( var(--solaris-spacing-24) + var(--solaris-spacing-10) + var(--solaris-spacing-1) );--solaris-dropdown-menu-max-width: calc( var(--solaris-spacing-24) * 2 + var(--solaris-spacing-10) + var(--solaris-spacing-2) );display:none}.solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-gap: var(--solaris-spacing-1);--solaris-dropdown-menu-padding: var(--solaris-spacing-2);display:flex;outline:none;-webkit-user-select:none;user-select:none;flex-direction:column;box-sizing:border-box;gap:var(--solaris-dropdown-menu-gap);padding:var(--solaris-dropdown-menu-padding);min-width:var(--solaris-dropdown-menu-min-width);max-width:var(--solaris-dropdown-menu-max-width)}.solaris-dropdown-menu__wrapper ::ng-deep solaris-divider{margin-inline:calc(-1 * var(--solaris-dropdown-menu-padding));width:calc(100% + 2 * var(--solaris-dropdown-menu-padding))}::ng-deep solaris-dropdown-menu-group{display:flex;flex-direction:column;padding-block:var(--solaris-spacing-1)}::ng-deep solaris-dropdown-menu-group:first-child{padding-block-start:0}::ng-deep solaris-dropdown-menu-group:last-child{padding-block-end:0}::ng-deep solaris-dropdown-menu-label{display:flex;cursor:default;-webkit-user-select:none;user-select:none;align-items:center;letter-spacing:.05em;text-transform:uppercase;color:var(--solaris-text-muted);font-weight:var(--solaris-font-weight-semibold);font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);padding:var(--solaris-spacing-2) var(--solaris-spacing-3)}[data-size=sm] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) - var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) - var(--solaris-spacing-5) )}[data-size=lg] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) + var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) + var(--solaris-spacing-5) )}\n"] });
93
+ }
94
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownMenuComponent, decorators: [{
95
+ type: Component,
96
+ args: [{ selector: 'solaris-dropdown-menu', standalone: true, host: {
97
+ '[id]': 'panelId',
98
+ '[attr.role]': '"menu"',
99
+ '[attr.data-size]': 'size()',
100
+ '[attr.data-density]': 'density()',
101
+ }, template: "<ng-template #contentTmpl>\n <div class=\"solaris-dropdown-menu__wrapper\">\n <ng-content />\n </div>\n</ng-template>\n", styles: [":host{--solaris-dropdown-menu-min-width: calc( var(--solaris-spacing-24) + var(--solaris-spacing-10) + var(--solaris-spacing-1) );--solaris-dropdown-menu-max-width: calc( var(--solaris-spacing-24) * 2 + var(--solaris-spacing-10) + var(--solaris-spacing-2) );display:none}.solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-gap: var(--solaris-spacing-1);--solaris-dropdown-menu-padding: var(--solaris-spacing-2);display:flex;outline:none;-webkit-user-select:none;user-select:none;flex-direction:column;box-sizing:border-box;gap:var(--solaris-dropdown-menu-gap);padding:var(--solaris-dropdown-menu-padding);min-width:var(--solaris-dropdown-menu-min-width);max-width:var(--solaris-dropdown-menu-max-width)}.solaris-dropdown-menu__wrapper ::ng-deep solaris-divider{margin-inline:calc(-1 * var(--solaris-dropdown-menu-padding));width:calc(100% + 2 * var(--solaris-dropdown-menu-padding))}::ng-deep solaris-dropdown-menu-group{display:flex;flex-direction:column;padding-block:var(--solaris-spacing-1)}::ng-deep solaris-dropdown-menu-group:first-child{padding-block-start:0}::ng-deep solaris-dropdown-menu-group:last-child{padding-block-end:0}::ng-deep solaris-dropdown-menu-label{display:flex;cursor:default;-webkit-user-select:none;user-select:none;align-items:center;letter-spacing:.05em;text-transform:uppercase;color:var(--solaris-text-muted);font-weight:var(--solaris-font-weight-semibold);font-size:var(--solaris-font-size-xs);line-height:var(--solaris-line-height-xs);padding:var(--solaris-spacing-2) var(--solaris-spacing-3)}[data-size=sm] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) - var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) - var(--solaris-spacing-5) )}[data-size=lg] .solaris-dropdown-menu__wrapper{--solaris-dropdown-menu-min-width: calc( var(--solaris-dropdown-menu-min-width) + var(--solaris-spacing-5) );--solaris-dropdown-menu-max-width: calc( var(--solaris-dropdown-menu-max-width) + var(--solaris-spacing-5) )}\n"] }]
102
+ }], propDecorators: { size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], density: [{ type: i0.Input, args: [{ isSignal: true, alias: "density", required: false }] }], navigableItems: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => SOLARIS_DROPDOWN_NAVIGABLE_ITEM), { isSignal: true }] }], contentTemplate: [{ type: i0.ViewChild, args: ['contentTmpl', { ...{
103
+ read: TemplateRef,
104
+ }, isSignal: true }] }] } });
105
+ //# sourceMappingURL=dropdown-menu.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-menu.component.js","sourceRoot":"","sources":["../../../../../../../../../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"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n input,\n contentChildren,\n signal,\n computed,\n viewChild,\n TemplateRef,\n} from '@angular/core';\n\nimport {\n SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\n type SolarisDropdownNavigableItem,\n} from '../model/dropdown-menu-navigation';\n\nimport type {\n SolarisDropdownMenuSize,\n SolarisDropdownMenuDensity,\n} from '../model/dropdown-menu.types';\n\nlet nextId = 0;\n\n@Component({\n selector: 'solaris-dropdown-menu',\n standalone: true,\n templateUrl: './dropdown-menu.component.html',\n styleUrls: ['./dropdown-menu.component.scss'],\n host: {\n '[id]': 'panelId',\n '[attr.role]': '\"menu\"',\n '[attr.data-size]': 'size()',\n '[attr.data-density]': 'density()',\n },\n})\nexport class SolarisDropdownMenuComponent {\n readonly size = input<SolarisDropdownMenuSize>('md');\n readonly density = input<SolarisDropdownMenuDensity>('comfortable');\n\n readonly navigableItems = contentChildren<SolarisDropdownNavigableItem>(\n SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\n );\n\n readonly contentTemplate = viewChild.required('contentTmpl', {\n read: TemplateRef,\n });\n\n readonly panelId = `solaris-dropdown-menu-${++nextId}`;\n\n readonly focusedIndex = signal(-1);\n\n readonly enabledNavigableItems = computed(() => {\n return this.navigableItems().filter((item) => !item.disabled());\n });\n\n focusFirstItem(): void {\n const enabled = this.enabledNavigableItems();\n if (enabled.length > 0) {\n const idx = this.navigableItems().indexOf(enabled[0]);\n this.focusedIndex.set(idx);\n enabled[0].focus();\n }\n }\n\n focusLastItem(): void {\n const enabled = this.enabledNavigableItems();\n const last = enabled.at(-1);\n if (last) {\n const idx = this.navigableItems().indexOf(last);\n this.focusedIndex.set(idx);\n last.focus();\n }\n }\n\n focusNextItem(): void {\n const items = this.navigableItems();\n const enabled = this.enabledNavigableItems();\n if (enabled.length === 0) return;\n\n const currentFocused = this.focusedIndex();\n const currentFocusedItem =\n currentFocused >= 0 ? items[currentFocused] : null;\n\n let currentEnabledIndex = -1;\n if (currentFocusedItem) {\n currentEnabledIndex = enabled.indexOf(currentFocusedItem);\n }\n\n const nextEnabledIndex = (currentEnabledIndex + 1) % enabled.length;\n const nextItem = enabled[nextEnabledIndex];\n const nextItemIndex = items.indexOf(nextItem);\n this.focusedIndex.set(nextItemIndex);\n nextItem.focus();\n }\n\n focusPreviousItem(): void {\n const items = this.navigableItems();\n const enabled = this.enabledNavigableItems();\n if (enabled.length === 0) return;\n\n const currentFocused = this.focusedIndex();\n const currentFocusedItem =\n currentFocused >= 0 ? items[currentFocused] : null;\n\n let currentEnabledIndex = -1;\n if (currentFocusedItem) {\n currentEnabledIndex = enabled.indexOf(currentFocusedItem);\n }\n\n const prevEnabledIndex =\n currentEnabledIndex <= 0 ? enabled.length - 1 : currentEnabledIndex - 1;\n const prevItem = enabled[prevEnabledIndex];\n const prevItemIndex = items.indexOf(prevItem);\n this.focusedIndex.set(prevItemIndex);\n prevItem.focus();\n }\n\n focusItemByLabel(label: string): void {\n const enabled = this.enabledNavigableItems();\n const lowerLabel = label.toLowerCase();\n const match = enabled.find((item) => {\n const itemLabel = item.label();\n return itemLabel?.toLowerCase().startsWith(lowerLabel);\n });\n if (match) {\n const idx = this.navigableItems().indexOf(match);\n this.focusedIndex.set(idx);\n match.focus();\n }\n }\n\n activateFocusedItem(): void {\n const items = this.navigableItems();\n const idx = this.focusedIndex();\n if (idx >= 0 && idx < items.length) {\n const item = items[idx];\n if (!item.disabled()) {\n item.handleClick();\n }\n }\n }\n}\n","<ng-template #contentTmpl>\n <div class=\"solaris-dropdown-menu__wrapper\">\n <ng-content />\n </div>\n</ng-template>\n"]}
@@ -0,0 +1,95 @@
1
+ import { Component, ElementRef, HostListener, inject, input, computed, forwardRef, } from '@angular/core';
2
+ import { SolarisIconComponent } from '../../../icon';
3
+ import { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';
4
+ import { SolarisDropdownSubmenuComponent } from './dropdown-submenu.component';
5
+ import * as i0 from "@angular/core";
6
+ export class SolarisDropdownSubmenuTriggerComponent {
7
+ elementRef = inject(ElementRef);
8
+ submenu = inject(SolarisDropdownSubmenuComponent, {
9
+ optional: true,
10
+ });
11
+ icon = input(undefined, ...(ngDevMode ? [{ debugName: "icon" }] : /* istanbul ignore next */ []));
12
+ label = input(undefined, ...(ngDevMode ? [{ debugName: "label" }] : /* istanbul ignore next */ []));
13
+ labelKey = input(undefined, ...(ngDevMode ? [{ debugName: "labelKey" }] : /* istanbul ignore next */ []));
14
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
15
+ color = input('neutral', ...(ngDevMode ? [{ debugName: "color" }] : /* istanbul ignore next */ []));
16
+ isSubmenuOpen = computed(() => {
17
+ return this.submenu?.isOpen() ?? false;
18
+ }, ...(ngDevMode ? [{ debugName: "isSubmenuOpen" }] : /* istanbul ignore next */ []));
19
+ submenuPanelId = computed(() => {
20
+ return this.submenu?.nestedMenuPanelId() ?? null;
21
+ }, ...(ngDevMode ? [{ debugName: "submenuPanelId" }] : /* istanbul ignore next */ []));
22
+ hasLeadingContent = computed(() => !!this.icon(), ...(ngDevMode ? [{ debugName: "hasLeadingContent" }] : /* istanbul ignore next */ []));
23
+ handleClick() {
24
+ if (this.disabled())
25
+ return;
26
+ this.submenu?.toggle();
27
+ }
28
+ onMouseEnter() {
29
+ if (this.disabled())
30
+ return;
31
+ this.submenu?.onTriggerHover();
32
+ }
33
+ onMouseLeave() {
34
+ if (this.disabled())
35
+ return;
36
+ this.submenu?.onTriggerLeave();
37
+ }
38
+ onKeydown(event) {
39
+ if (this.disabled())
40
+ return;
41
+ if (event.key === 'Enter' || event.key === ' ') {
42
+ event.preventDefault();
43
+ event.stopPropagation();
44
+ this.submenu?.toggle();
45
+ }
46
+ else if (event.key === 'ArrowRight') {
47
+ event.preventDefault();
48
+ event.stopPropagation();
49
+ this.submenu?.open();
50
+ }
51
+ }
52
+ focus() {
53
+ // SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.
54
+ this.elementRef.nativeElement.focus();
55
+ }
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownSubmenuTriggerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.17", type: SolarisDropdownSubmenuTriggerComponent, isStandalone: true, selector: "solaris-dropdown-submenu-trigger", inputs: { icon: { classPropertyName: "icon", publicName: "icon", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, labelKey: { classPropertyName: "labelKey", publicName: "labelKey", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "handleClick()", "mouseenter": "onMouseEnter()", "mouseleave": "onMouseLeave()", "keydown": "onKeydown($event)" }, properties: { "attr.role": "\"menuitem\"", "attr.data-color": "color()", "attr.aria-haspopup": "\"menu\"", "attr.aria-controls": "submenuPanelId()", "attr.tabindex": "disabled() ? \"-1\" : \"0\"", "attr.data-disabled": "disabled() ? \"\" : null", "attr.aria-disabled": "disabled() ? \"true\" : null", "attr.aria-expanded": "isSubmenuOpen() ? \"true\" : \"false\"" }, classAttribute: "solaris-dropdown-submenu-trigger" }, providers: [
58
+ {
59
+ provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,
60
+ useExisting: forwardRef(() => SolarisDropdownSubmenuTriggerComponent),
61
+ },
62
+ ], ngImport: i0, template: "<div class=\"solaris-dropdown-submenu-trigger__wrapper\">\n @if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-submenu-trigger__leading\">\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n </div>\n }\n <div class=\"solaris-dropdown-submenu-trigger__content\">\n <ng-content></ng-content>\n @if (label()) {\n <span class=\"solaris-dropdown-submenu-trigger__label\">{{ label() }}</span>\n }\n </div>\n <div class=\"solaris-dropdown-submenu-trigger__trailing\">\n <solaris-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </div>\n</div>\n", styles: [":host{--solaris-dropdown-submenu-trigger-gap: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-radius: var(--solaris-radius-sm);--solaris-dropdown-submenu-trigger-padding-y: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-padding-x: var(--solaris-spacing-4);--solaris-dropdown-submenu-trigger-label-color: var(--solaris-text-default);--solaris-dropdown-submenu-trigger-danger-color: var(--solaris-danger-text);--solaris-dropdown-submenu-trigger-danger-hover: var( --solaris-danger-surface );--solaris-dropdown-submenu-trigger-focus-ring-color: var( --solaris-primary-base );--solaris-dropdown-submenu-trigger-hover-background: var( --solaris-surface-muted );--solaris-dropdown-submenu-trigger-trailing-color: var(--solaris-text-muted);display:flex;outline:none;cursor:pointer;align-items:center;text-decoration:none;box-sizing:border-box;min-height:var(--solaris-spacing-8);font-size:var(--solaris-font-size-sm);line-height:var(--solaris-line-height-sm);gap:var(--solaris-dropdown-submenu-trigger-gap);color:var(--solaris-dropdown-submenu-trigger-label-color);border-radius:var(--solaris-dropdown-submenu-trigger-radius);font-family:var(--solaris-font-family-sans),system-ui;padding:var(--solaris-dropdown-submenu-trigger-padding-y) var(--solaris-dropdown-submenu-trigger-padding-x);transition:background var(--solaris-motion-duration-fast) var(--solaris-motion-easing-standard)}:host(:hover){background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus){outline-offset:-2px;background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus-visible){outline:var(--solaris-border-width-md) solid var(--solaris-dropdown-submenu-trigger-focus-ring-color)}:host([data-disabled]){opacity:.5;cursor:not-allowed}:host([data-color=danger]){color:var(--solaris-dropdown-submenu-trigger-danger-color)}:host([data-color=danger]:hover),:host([data-color=danger]:focus){background:var(--solaris-dropdown-submenu-trigger-danger-hover)}.solaris-dropdown-submenu-trigger__wrapper{display:flex;flex:1;min-width:0;align-items:center;gap:var(--solaris-dropdown-submenu-trigger-gap)}.solaris-dropdown-submenu-trigger__leading{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-5);height:var(--solaris-spacing-5);color:var(--solaris-text-muted)}:host([data-color=danger]) .solaris-dropdown-submenu-trigger__leading{color:var(--solaris-dropdown-submenu-trigger-danger-color)}.solaris-dropdown-submenu-trigger__content{flex:1;min-width:0}.solaris-dropdown-submenu-trigger__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.solaris-dropdown-submenu-trigger__trailing{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-4);height:var(--solaris-spacing-4);margin-inline-start:var(--solaris-spacing-4);color:var(--solaris-dropdown-submenu-trigger-trailing-color)}@media(prefers-reduced-motion:reduce){:host{transition:none}}[data-reduced-motion=true] :host{transition:none}\n"], dependencies: [{ kind: "component", type: SolarisIconComponent, selector: "solaris-icon", inputs: ["name", "ariaLabel", "decorative"] }] });
63
+ }
64
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.17", ngImport: i0, type: SolarisDropdownSubmenuTriggerComponent, decorators: [{
65
+ type: Component,
66
+ args: [{ selector: 'solaris-dropdown-submenu-trigger', standalone: true, imports: [SolarisIconComponent], providers: [
67
+ {
68
+ provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,
69
+ useExisting: forwardRef(() => SolarisDropdownSubmenuTriggerComponent),
70
+ },
71
+ ], host: {
72
+ '[attr.role]': '"menuitem"',
73
+ '[attr.data-color]': 'color()',
74
+ '[attr.aria-haspopup]': '"menu"',
75
+ class: 'solaris-dropdown-submenu-trigger',
76
+ '[attr.aria-controls]': 'submenuPanelId()',
77
+ '[attr.tabindex]': 'disabled() ? "-1" : "0"',
78
+ '[attr.data-disabled]': 'disabled() ? "" : null',
79
+ '[attr.aria-disabled]': 'disabled() ? "true" : null',
80
+ '[attr.aria-expanded]': 'isSubmenuOpen() ? "true" : "false"',
81
+ }, template: "<div class=\"solaris-dropdown-submenu-trigger__wrapper\">\n @if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-submenu-trigger__leading\">\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n </div>\n }\n <div class=\"solaris-dropdown-submenu-trigger__content\">\n <ng-content></ng-content>\n @if (label()) {\n <span class=\"solaris-dropdown-submenu-trigger__label\">{{ label() }}</span>\n }\n </div>\n <div class=\"solaris-dropdown-submenu-trigger__trailing\">\n <solaris-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </div>\n</div>\n", styles: [":host{--solaris-dropdown-submenu-trigger-gap: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-radius: var(--solaris-radius-sm);--solaris-dropdown-submenu-trigger-padding-y: var(--solaris-spacing-2);--solaris-dropdown-submenu-trigger-padding-x: var(--solaris-spacing-4);--solaris-dropdown-submenu-trigger-label-color: var(--solaris-text-default);--solaris-dropdown-submenu-trigger-danger-color: var(--solaris-danger-text);--solaris-dropdown-submenu-trigger-danger-hover: var( --solaris-danger-surface );--solaris-dropdown-submenu-trigger-focus-ring-color: var( --solaris-primary-base );--solaris-dropdown-submenu-trigger-hover-background: var( --solaris-surface-muted );--solaris-dropdown-submenu-trigger-trailing-color: var(--solaris-text-muted);display:flex;outline:none;cursor:pointer;align-items:center;text-decoration:none;box-sizing:border-box;min-height:var(--solaris-spacing-8);font-size:var(--solaris-font-size-sm);line-height:var(--solaris-line-height-sm);gap:var(--solaris-dropdown-submenu-trigger-gap);color:var(--solaris-dropdown-submenu-trigger-label-color);border-radius:var(--solaris-dropdown-submenu-trigger-radius);font-family:var(--solaris-font-family-sans),system-ui;padding:var(--solaris-dropdown-submenu-trigger-padding-y) var(--solaris-dropdown-submenu-trigger-padding-x);transition:background var(--solaris-motion-duration-fast) var(--solaris-motion-easing-standard)}:host(:hover){background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus){outline-offset:-2px;background:var(--solaris-dropdown-submenu-trigger-hover-background)}:host(:focus-visible){outline:var(--solaris-border-width-md) solid var(--solaris-dropdown-submenu-trigger-focus-ring-color)}:host([data-disabled]){opacity:.5;cursor:not-allowed}:host([data-color=danger]){color:var(--solaris-dropdown-submenu-trigger-danger-color)}:host([data-color=danger]:hover),:host([data-color=danger]:focus){background:var(--solaris-dropdown-submenu-trigger-danger-hover)}.solaris-dropdown-submenu-trigger__wrapper{display:flex;flex:1;min-width:0;align-items:center;gap:var(--solaris-dropdown-submenu-trigger-gap)}.solaris-dropdown-submenu-trigger__leading{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-5);height:var(--solaris-spacing-5);color:var(--solaris-text-muted)}:host([data-color=danger]) .solaris-dropdown-submenu-trigger__leading{color:var(--solaris-dropdown-submenu-trigger-danger-color)}.solaris-dropdown-submenu-trigger__content{flex:1;min-width:0}.solaris-dropdown-submenu-trigger__label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.solaris-dropdown-submenu-trigger__trailing{display:flex;flex-shrink:0;align-items:center;justify-content:center;width:var(--solaris-spacing-4);height:var(--solaris-spacing-4);margin-inline-start:var(--solaris-spacing-4);color:var(--solaris-dropdown-submenu-trigger-trailing-color)}@media(prefers-reduced-motion:reduce){:host{transition:none}}[data-reduced-motion=true] :host{transition:none}\n"] }]
82
+ }], propDecorators: { icon: [{ type: i0.Input, args: [{ isSignal: true, alias: "icon", required: false }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], labelKey: [{ type: i0.Input, args: [{ isSignal: true, alias: "labelKey", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], handleClick: [{
83
+ type: HostListener,
84
+ args: ['click']
85
+ }], onMouseEnter: [{
86
+ type: HostListener,
87
+ args: ['mouseenter']
88
+ }], onMouseLeave: [{
89
+ type: HostListener,
90
+ args: ['mouseleave']
91
+ }], onKeydown: [{
92
+ type: HostListener,
93
+ args: ['keydown', ['$event']]
94
+ }] } });
95
+ //# sourceMappingURL=dropdown-submenu-trigger.component.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dropdown-submenu-trigger.component.js","sourceRoot":"","sources":["../../../../../../../../../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"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n ElementRef,\n HostListener,\n inject,\n input,\n computed,\n forwardRef,\n} from '@angular/core';\n\nimport { SolarisIconComponent } from '../../../icon';\n\nimport type { SolarisDropdownMenuItemColor } from '../model/dropdown-menu.types';\nimport { SOLARIS_DROPDOWN_NAVIGABLE_ITEM } from '../model/dropdown-menu-navigation';\nimport { SolarisDropdownSubmenuComponent } from './dropdown-submenu.component';\n\n@Component({\n selector: 'solaris-dropdown-submenu-trigger',\n standalone: true,\n imports: [SolarisIconComponent],\n providers: [\n {\n provide: SOLARIS_DROPDOWN_NAVIGABLE_ITEM,\n useExisting: forwardRef(() => SolarisDropdownSubmenuTriggerComponent),\n },\n ],\n templateUrl: './dropdown-submenu-trigger.component.html',\n styleUrls: ['./dropdown-submenu-trigger.component.scss'],\n host: {\n '[attr.role]': '\"menuitem\"',\n '[attr.data-color]': 'color()',\n '[attr.aria-haspopup]': '\"menu\"',\n class: 'solaris-dropdown-submenu-trigger',\n '[attr.aria-controls]': 'submenuPanelId()',\n '[attr.tabindex]': 'disabled() ? \"-1\" : \"0\"',\n '[attr.data-disabled]': 'disabled() ? \"\" : null',\n '[attr.aria-disabled]': 'disabled() ? \"true\" : null',\n '[attr.aria-expanded]': 'isSubmenuOpen() ? \"true\" : \"false\"',\n },\n})\nexport class SolarisDropdownSubmenuTriggerComponent {\n private readonly elementRef = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly submenu = inject(SolarisDropdownSubmenuComponent, {\n optional: true,\n });\n\n readonly icon = input<string | undefined>(undefined);\n readonly label = input<string | undefined>(undefined);\n readonly labelKey = input<string | undefined>(undefined);\n readonly disabled = input<boolean>(false);\n readonly color = input<SolarisDropdownMenuItemColor>('neutral');\n\n protected readonly isSubmenuOpen = computed(() => {\n return this.submenu?.isOpen() ?? false;\n });\n\n protected readonly submenuPanelId = computed(() => {\n return this.submenu?.nestedMenuPanelId() ?? null;\n });\n\n protected readonly hasLeadingContent = computed(() => !!this.icon());\n\n @HostListener('click')\n handleClick(): void {\n if (this.disabled()) return;\n this.submenu?.toggle();\n }\n\n @HostListener('mouseenter')\n onMouseEnter(): void {\n if (this.disabled()) return;\n this.submenu?.onTriggerHover();\n }\n\n @HostListener('mouseleave')\n onMouseLeave(): void {\n if (this.disabled()) return;\n this.submenu?.onTriggerLeave();\n }\n\n @HostListener('keydown', ['$event'])\n onKeydown(event: KeyboardEvent): void {\n if (this.disabled()) return;\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n event.stopPropagation();\n this.submenu?.toggle();\n } else if (event.key === 'ArrowRight') {\n event.preventDefault();\n event.stopPropagation();\n this.submenu?.open();\n }\n }\n\n focus(): void {\n // SECURITY_EXCEPTION: nativeElement.focus() required for programmatic focus. No alternative exists.\n this.elementRef.nativeElement.focus();\n }\n}\n","<div class=\"solaris-dropdown-submenu-trigger__wrapper\">\n @if (hasLeadingContent()) {\n <div class=\"solaris-dropdown-submenu-trigger__leading\">\n <solaris-icon [name]=\"icon()!\" aria-hidden=\"true\" />\n </div>\n }\n <div class=\"solaris-dropdown-submenu-trigger__content\">\n <ng-content></ng-content>\n @if (label()) {\n <span class=\"solaris-dropdown-submenu-trigger__label\">{{ label() }}</span>\n }\n </div>\n <div class=\"solaris-dropdown-submenu-trigger__trailing\">\n <solaris-icon name=\"chevron-right\" aria-hidden=\"true\" />\n </div>\n</div>\n"]}