@haiilo/catalyst 8.1.1 → 8.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (374) hide show
  1. package/dist/catalyst/catalyst.css +3 -9
  2. package/dist/catalyst/catalyst.esm.js +1 -1
  3. package/dist/catalyst/catalyst.esm.js.map +1 -1
  4. package/dist/catalyst/index.esm.js +2 -2
  5. package/dist/catalyst/{p-85d057f0.js → p-6ae13953.js} +1 -1
  6. package/dist/catalyst/p-6cd4fa1e.js +3 -0
  7. package/dist/catalyst/p-6cd4fa1e.js.map +1 -0
  8. package/dist/catalyst/p-a05fbea3.entry.js +10 -0
  9. package/dist/catalyst/p-a05fbea3.entry.js.map +1 -0
  10. package/dist/catalyst/scss/core/_dialog.scss +1 -1
  11. package/dist/catalyst/scss/core/_form.scss +1 -1
  12. package/dist/catalyst/scss/core/_typography.scss +1 -7
  13. package/dist/cjs/cat-alert_26.cjs.entry.js +3899 -3883
  14. package/dist/cjs/cat-alert_26.cjs.entry.js.map +1 -1
  15. package/dist/cjs/catalyst.cjs.js +3 -3
  16. package/dist/cjs/catalyst.cjs.js.map +1 -1
  17. package/dist/cjs/{index-1e7eef7e.js → index-eb056d5e.js} +51 -13
  18. package/dist/cjs/index-eb056d5e.js.map +1 -0
  19. package/dist/cjs/index.cjs.js +73 -73
  20. package/dist/cjs/index.cjs.js.map +1 -1
  21. package/dist/cjs/loader.cjs.js +2 -2
  22. package/dist/cjs/{of-395b2f57.js → of-2b7161d2.js} +155 -155
  23. package/dist/cjs/of-2b7161d2.js.map +1 -0
  24. package/dist/collection/collection-manifest.json +1 -1
  25. package/dist/collection/components/cat-alert/cat-alert.e2e.js +7 -7
  26. package/dist/collection/components/cat-alert/cat-alert.e2e.js.map +1 -1
  27. package/dist/collection/components/cat-alert/cat-alert.js +98 -98
  28. package/dist/collection/components/cat-alert/cat-alert.js.map +1 -1
  29. package/dist/collection/components/cat-alert/cat-alert.spec.js +7 -7
  30. package/dist/collection/components/cat-alert/cat-alert.spec.js.map +1 -1
  31. package/dist/collection/components/cat-avatar/cat-avatar.e2e.js +6 -6
  32. package/dist/collection/components/cat-avatar/cat-avatar.e2e.js.map +1 -1
  33. package/dist/collection/components/cat-avatar/cat-avatar.js +218 -218
  34. package/dist/collection/components/cat-avatar/cat-avatar.js.map +1 -1
  35. package/dist/collection/components/cat-avatar/cat-avatar.spec.js +7 -7
  36. package/dist/collection/components/cat-avatar/cat-avatar.spec.js.map +1 -1
  37. package/dist/collection/components/cat-badge/cat-badge.e2e.js +6 -6
  38. package/dist/collection/components/cat-badge/cat-badge.e2e.js.map +1 -1
  39. package/dist/collection/components/cat-badge/cat-badge.js +117 -117
  40. package/dist/collection/components/cat-badge/cat-badge.js.map +1 -1
  41. package/dist/collection/components/cat-badge/cat-badge.spec.js +7 -7
  42. package/dist/collection/components/cat-badge/cat-badge.spec.js.map +1 -1
  43. package/dist/collection/components/cat-button/cat-button.css +2 -1
  44. package/dist/collection/components/cat-button/cat-button.e2e.js +6 -6
  45. package/dist/collection/components/cat-button/cat-button.e2e.js.map +1 -1
  46. package/dist/collection/components/cat-button/cat-button.js +693 -693
  47. package/dist/collection/components/cat-button/cat-button.js.map +1 -1
  48. package/dist/collection/components/cat-button/cat-button.spec.js +7 -7
  49. package/dist/collection/components/cat-button/cat-button.spec.js.map +1 -1
  50. package/dist/collection/components/cat-button-group/cat-button-group.e2e.js +6 -6
  51. package/dist/collection/components/cat-button-group/cat-button-group.e2e.js.map +1 -1
  52. package/dist/collection/components/cat-button-group/cat-button-group.js +47 -47
  53. package/dist/collection/components/cat-button-group/cat-button-group.js.map +1 -1
  54. package/dist/collection/components/cat-button-group/cat-button-group.spec.js +7 -7
  55. package/dist/collection/components/cat-button-group/cat-button-group.spec.js.map +1 -1
  56. package/dist/collection/components/cat-card/cat-card.e2e.js +6 -6
  57. package/dist/collection/components/cat-card/cat-card.e2e.js.map +1 -1
  58. package/dist/collection/components/cat-card/cat-card.js +15 -15
  59. package/dist/collection/components/cat-card/cat-card.js.map +1 -1
  60. package/dist/collection/components/cat-card/cat-card.spec.js +7 -7
  61. package/dist/collection/components/cat-card/cat-card.spec.js.map +1 -1
  62. package/dist/collection/components/cat-checkbox/cat-checkbox.css +2 -1
  63. package/dist/collection/components/cat-checkbox/cat-checkbox.e2e.js +6 -6
  64. package/dist/collection/components/cat-checkbox/cat-checkbox.e2e.js.map +1 -1
  65. package/dist/collection/components/cat-checkbox/cat-checkbox.js +441 -441
  66. package/dist/collection/components/cat-checkbox/cat-checkbox.js.map +1 -1
  67. package/dist/collection/components/cat-checkbox/cat-checkbox.spec.js +7 -7
  68. package/dist/collection/components/cat-checkbox/cat-checkbox.spec.js.map +1 -1
  69. package/dist/collection/components/cat-datepicker/cat-datepicker.config.js +62 -62
  70. package/dist/collection/components/cat-datepicker/cat-datepicker.config.js.map +1 -1
  71. package/dist/collection/components/cat-datepicker/cat-datepicker.e2e.js +7 -7
  72. package/dist/collection/components/cat-datepicker/cat-datepicker.e2e.js.map +1 -1
  73. package/dist/collection/components/cat-datepicker/cat-datepicker.format.js +20 -20
  74. package/dist/collection/components/cat-datepicker/cat-datepicker.format.js.map +1 -1
  75. package/dist/collection/components/cat-datepicker/cat-datepicker.js +720 -707
  76. package/dist/collection/components/cat-datepicker/cat-datepicker.js.map +1 -1
  77. package/dist/collection/components/cat-datepicker/cat-datepicker.locale.js +39 -39
  78. package/dist/collection/components/cat-datepicker/cat-datepicker.locale.js.map +1 -1
  79. package/dist/collection/components/cat-datepicker/cat-datepicker.spec.js +7 -7
  80. package/dist/collection/components/cat-datepicker/cat-datepicker.spec.js.map +1 -1
  81. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.e2e.js +7 -7
  82. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.e2e.js.map +1 -1
  83. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.js +244 -244
  84. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.js.map +1 -1
  85. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.spec.js +7 -7
  86. package/dist/collection/components/cat-datepicker-inline/cat-datepicker-inline.spec.js.map +1 -1
  87. package/dist/collection/components/cat-dropdown/cat-dropdown.e2e.js +6 -6
  88. package/dist/collection/components/cat-dropdown/cat-dropdown.e2e.js.map +1 -1
  89. package/dist/collection/components/cat-dropdown/cat-dropdown.js +300 -300
  90. package/dist/collection/components/cat-dropdown/cat-dropdown.js.map +1 -1
  91. package/dist/collection/components/cat-dropdown/cat-dropdown.spec.js +7 -7
  92. package/dist/collection/components/cat-dropdown/cat-dropdown.spec.js.map +1 -1
  93. package/dist/collection/components/cat-form-group/cat-form-group.e2e.js +6 -6
  94. package/dist/collection/components/cat-form-group/cat-form-group.e2e.js.map +1 -1
  95. package/dist/collection/components/cat-form-group/cat-form-group.js +107 -107
  96. package/dist/collection/components/cat-form-group/cat-form-group.js.map +1 -1
  97. package/dist/collection/components/cat-form-group/cat-form-group.spec.js +7 -7
  98. package/dist/collection/components/cat-form-group/cat-form-group.spec.js.map +1 -1
  99. package/dist/collection/components/cat-form-hint/cat-form-hint.js +9 -9
  100. package/dist/collection/components/cat-form-hint/cat-form-hint.js.map +1 -1
  101. package/dist/collection/components/cat-form-hint/cat-form-hint.spec.js +7 -7
  102. package/dist/collection/components/cat-form-hint/cat-form-hint.spec.js.map +1 -1
  103. package/dist/collection/components/cat-i18n/cat-i18n-registry.js +71 -71
  104. package/dist/collection/components/cat-i18n/cat-i18n-registry.js.map +1 -1
  105. package/dist/collection/components/cat-i18n/cat-i18n-registry.spec.js +3 -3
  106. package/dist/collection/components/cat-i18n/cat-i18n-registry.spec.js.map +1 -1
  107. package/dist/collection/components/cat-icon/cat-icon-registry.js +77 -77
  108. package/dist/collection/components/cat-icon/cat-icon-registry.js.map +1 -1
  109. package/dist/collection/components/cat-icon/cat-icon-registry.spec.js +3 -3
  110. package/dist/collection/components/cat-icon/cat-icon-registry.spec.js.map +1 -1
  111. package/dist/collection/components/cat-icon/cat-icon.e2e.js +7 -7
  112. package/dist/collection/components/cat-icon/cat-icon.e2e.js.map +1 -1
  113. package/dist/collection/components/cat-icon/cat-icon.js +97 -97
  114. package/dist/collection/components/cat-icon/cat-icon.js.map +1 -1
  115. package/dist/collection/components/cat-icon/cat-icon.spec.js +7 -7
  116. package/dist/collection/components/cat-icon/cat-icon.spec.js.map +1 -1
  117. package/dist/collection/components/cat-input/cat-input.e2e.js +7 -7
  118. package/dist/collection/components/cat-input/cat-input.e2e.js.map +1 -1
  119. package/dist/collection/components/cat-input/cat-input.js +768 -768
  120. package/dist/collection/components/cat-input/cat-input.js.map +1 -1
  121. package/dist/collection/components/cat-input/cat-input.spec.js +7 -7
  122. package/dist/collection/components/cat-input/cat-input.spec.js.map +1 -1
  123. package/dist/collection/components/cat-notification/cat-notification.js +59 -59
  124. package/dist/collection/components/cat-notification/cat-notification.js.map +1 -1
  125. package/dist/collection/components/cat-notification/cat-notification.spec.js +3 -3
  126. package/dist/collection/components/cat-notification/cat-notification.spec.js.map +1 -1
  127. package/dist/collection/components/cat-pagination/cat-pagination.e2e.js +10 -10
  128. package/dist/collection/components/cat-pagination/cat-pagination.e2e.js.map +1 -1
  129. package/dist/collection/components/cat-pagination/cat-pagination.js +274 -274
  130. package/dist/collection/components/cat-pagination/cat-pagination.js.map +1 -1
  131. package/dist/collection/components/cat-pagination/cat-pagination.spec.js +7 -7
  132. package/dist/collection/components/cat-pagination/cat-pagination.spec.js.map +1 -1
  133. package/dist/collection/components/cat-radio/cat-radio.e2e.js +6 -6
  134. package/dist/collection/components/cat-radio/cat-radio.e2e.js.map +1 -1
  135. package/dist/collection/components/cat-radio/cat-radio.js +378 -378
  136. package/dist/collection/components/cat-radio/cat-radio.js.map +1 -1
  137. package/dist/collection/components/cat-radio/cat-radio.spec.js +7 -7
  138. package/dist/collection/components/cat-radio/cat-radio.spec.js.map +1 -1
  139. package/dist/collection/components/cat-radio-group/cat-radio-group.e2e.js +6 -6
  140. package/dist/collection/components/cat-radio-group/cat-radio-group.e2e.js.map +1 -1
  141. package/dist/collection/components/cat-radio-group/cat-radio-group.js +278 -278
  142. package/dist/collection/components/cat-radio-group/cat-radio-group.js.map +1 -1
  143. package/dist/collection/components/cat-radio-group/cat-radio-group.spec.js +7 -7
  144. package/dist/collection/components/cat-radio-group/cat-radio-group.spec.js.map +1 -1
  145. package/dist/collection/components/cat-scrollable/cat-scrollable.e2e.js +6 -6
  146. package/dist/collection/components/cat-scrollable/cat-scrollable.e2e.js.map +1 -1
  147. package/dist/collection/components/cat-scrollable/cat-scrollable.js +287 -287
  148. package/dist/collection/components/cat-scrollable/cat-scrollable.js.map +1 -1
  149. package/dist/collection/components/cat-scrollable/cat-scrollable.spec.js +7 -7
  150. package/dist/collection/components/cat-scrollable/cat-scrollable.spec.js.map +1 -1
  151. package/dist/collection/components/cat-select/cat-select.e2e.js +10 -10
  152. package/dist/collection/components/cat-select/cat-select.e2e.js.map +1 -1
  153. package/dist/collection/components/cat-select/cat-select.js +1143 -1143
  154. package/dist/collection/components/cat-select/cat-select.js.map +1 -1
  155. package/dist/collection/components/cat-select/cat-select.spec.js +7 -7
  156. package/dist/collection/components/cat-select/cat-select.spec.js.map +1 -1
  157. package/dist/collection/components/cat-select/connectors.js +13 -13
  158. package/dist/collection/components/cat-select/connectors.js.map +1 -1
  159. package/dist/collection/components/cat-select-demo/cat-select-demo.js +1379 -1379
  160. package/dist/collection/components/cat-select-demo/cat-select-demo.js.map +1 -1
  161. package/dist/collection/components/cat-skeleton/cat-skeleton.e2e.js +6 -6
  162. package/dist/collection/components/cat-skeleton/cat-skeleton.e2e.js.map +1 -1
  163. package/dist/collection/components/cat-skeleton/cat-skeleton.js +120 -120
  164. package/dist/collection/components/cat-skeleton/cat-skeleton.js.map +1 -1
  165. package/dist/collection/components/cat-skeleton/cat-skeleton.spec.js +7 -7
  166. package/dist/collection/components/cat-skeleton/cat-skeleton.spec.js.map +1 -1
  167. package/dist/collection/components/cat-spinner/cat-spinner.e2e.js +6 -6
  168. package/dist/collection/components/cat-spinner/cat-spinner.e2e.js.map +1 -1
  169. package/dist/collection/components/cat-spinner/cat-spinner.js +60 -60
  170. package/dist/collection/components/cat-spinner/cat-spinner.js.map +1 -1
  171. package/dist/collection/components/cat-spinner/cat-spinner.spec.js +7 -7
  172. package/dist/collection/components/cat-spinner/cat-spinner.spec.js.map +1 -1
  173. package/dist/collection/components/cat-tab/cat-tab.e2e.js +6 -6
  174. package/dist/collection/components/cat-tab/cat-tab.e2e.js.map +1 -1
  175. package/dist/collection/components/cat-tab/cat-tab.js +230 -211
  176. package/dist/collection/components/cat-tab/cat-tab.js.map +1 -1
  177. package/dist/collection/components/cat-tab/cat-tab.spec.js +7 -7
  178. package/dist/collection/components/cat-tab/cat-tab.spec.js.map +1 -1
  179. package/dist/collection/components/cat-tabs/cat-tabs.css +3 -0
  180. package/dist/collection/components/cat-tabs/cat-tabs.e2e.js +6 -6
  181. package/dist/collection/components/cat-tabs/cat-tabs.e2e.js.map +1 -1
  182. package/dist/collection/components/cat-tabs/cat-tabs.js +222 -215
  183. package/dist/collection/components/cat-tabs/cat-tabs.js.map +1 -1
  184. package/dist/collection/components/cat-tabs/cat-tabs.spec.js +7 -7
  185. package/dist/collection/components/cat-tabs/cat-tabs.spec.js.map +1 -1
  186. package/dist/collection/components/cat-textarea/cat-textarea.e2e.js +7 -7
  187. package/dist/collection/components/cat-textarea/cat-textarea.e2e.js.map +1 -1
  188. package/dist/collection/components/cat-textarea/cat-textarea.js +586 -586
  189. package/dist/collection/components/cat-textarea/cat-textarea.js.map +1 -1
  190. package/dist/collection/components/cat-textarea/cat-textarea.spec.js +7 -7
  191. package/dist/collection/components/cat-textarea/cat-textarea.spec.js.map +1 -1
  192. package/dist/collection/components/cat-toggle/cat-toggle.e2e.js +6 -6
  193. package/dist/collection/components/cat-toggle/cat-toggle.e2e.js.map +1 -1
  194. package/dist/collection/components/cat-toggle/cat-toggle.js +421 -421
  195. package/dist/collection/components/cat-toggle/cat-toggle.js.map +1 -1
  196. package/dist/collection/components/cat-toggle/cat-toggle.spec.js +7 -7
  197. package/dist/collection/components/cat-toggle/cat-toggle.spec.js.map +1 -1
  198. package/dist/collection/components/cat-tooltip/cat-tooltip.css +3 -0
  199. package/dist/collection/components/cat-tooltip/cat-tooltip.e2e.js +6 -6
  200. package/dist/collection/components/cat-tooltip/cat-tooltip.e2e.js.map +1 -1
  201. package/dist/collection/components/cat-tooltip/cat-tooltip.js +297 -296
  202. package/dist/collection/components/cat-tooltip/cat-tooltip.js.map +1 -1
  203. package/dist/collection/components/cat-tooltip/cat-tooltip.spec.js +12 -8
  204. package/dist/collection/components/cat-tooltip/cat-tooltip.spec.js.map +1 -1
  205. package/dist/collection/scss/core/_dialog.scss +1 -1
  206. package/dist/collection/scss/core/_form.scss +1 -1
  207. package/dist/collection/scss/core/_typography.scss +1 -7
  208. package/dist/collection/utils/breakpoints.js +6 -6
  209. package/dist/collection/utils/breakpoints.js.map +1 -1
  210. package/dist/collection/utils/coerce.js +3 -3
  211. package/dist/collection/utils/coerce.js.map +1 -1
  212. package/dist/collection/utils/find-closest.js +6 -6
  213. package/dist/collection/utils/find-closest.js.map +1 -1
  214. package/dist/collection/utils/first-tabbable.js +1 -1
  215. package/dist/collection/utils/first-tabbable.js.map +1 -1
  216. package/dist/collection/utils/load-img.js +6 -6
  217. package/dist/collection/utils/load-img.js.map +1 -1
  218. package/dist/collection/utils/media-matcher.js +30 -30
  219. package/dist/collection/utils/media-matcher.js.map +1 -1
  220. package/dist/collection/utils/media-matcher.spec.js +32 -32
  221. package/dist/collection/utils/media-matcher.spec.js.map +1 -1
  222. package/dist/collection/utils/platform.js +34 -34
  223. package/dist/collection/utils/platform.js.map +1 -1
  224. package/dist/collection/utils/setDefault.js +4 -4
  225. package/dist/collection/utils/setDefault.js.map +1 -1
  226. package/dist/components/cat-alert.d.ts +2 -2
  227. package/dist/components/cat-alert.js +56 -56
  228. package/dist/components/cat-alert.js.map +1 -1
  229. package/dist/components/cat-avatar.d.ts +2 -2
  230. package/dist/components/cat-avatar2.js +93 -93
  231. package/dist/components/cat-avatar2.js.map +1 -1
  232. package/dist/components/cat-badge.d.ts +2 -2
  233. package/dist/components/cat-badge.js +32 -32
  234. package/dist/components/cat-badge.js.map +1 -1
  235. package/dist/components/cat-button-group.d.ts +2 -2
  236. package/dist/components/cat-button-group.js +31 -31
  237. package/dist/components/cat-button-group.js.map +1 -1
  238. package/dist/components/cat-button.d.ts +2 -2
  239. package/dist/components/cat-button2.js +277 -277
  240. package/dist/components/cat-button2.js.map +1 -1
  241. package/dist/components/cat-card.d.ts +2 -2
  242. package/dist/components/cat-card.js +20 -20
  243. package/dist/components/cat-card.js.map +1 -1
  244. package/dist/components/cat-checkbox.d.ts +2 -2
  245. package/dist/components/cat-checkbox2.js +108 -108
  246. package/dist/components/cat-checkbox2.js.map +1 -1
  247. package/dist/components/cat-datepicker-inline.d.ts +2 -2
  248. package/dist/components/cat-datepicker-inline.js +89 -89
  249. package/dist/components/cat-datepicker-inline.js.map +1 -1
  250. package/dist/components/cat-datepicker.d.ts +2 -2
  251. package/dist/components/cat-datepicker.js +203 -194
  252. package/dist/components/cat-datepicker.js.map +1 -1
  253. package/dist/components/cat-datepicker.locale.js +121 -121
  254. package/dist/components/cat-datepicker.locale.js.map +1 -1
  255. package/dist/components/cat-dropdown.d.ts +2 -2
  256. package/dist/components/cat-dropdown2.js +177 -177
  257. package/dist/components/cat-dropdown2.js.map +1 -1
  258. package/dist/components/cat-form-group.d.ts +2 -2
  259. package/dist/components/cat-form-group.js +55 -55
  260. package/dist/components/cat-form-group.js.map +1 -1
  261. package/dist/components/cat-form-hint.js +9 -9
  262. package/dist/components/cat-form-hint.js.map +1 -1
  263. package/dist/components/cat-i18n-registry.js +71 -71
  264. package/dist/components/cat-i18n-registry.js.map +1 -1
  265. package/dist/components/cat-icon-registry.js +77 -77
  266. package/dist/components/cat-icon-registry.js.map +1 -1
  267. package/dist/components/cat-icon.d.ts +2 -2
  268. package/dist/components/cat-icon2.js +32 -32
  269. package/dist/components/cat-icon2.js.map +1 -1
  270. package/dist/components/cat-input.d.ts +2 -2
  271. package/dist/components/cat-input2.js +219 -219
  272. package/dist/components/cat-input2.js.map +1 -1
  273. package/dist/components/cat-pagination.d.ts +2 -2
  274. package/dist/components/cat-pagination.js +103 -103
  275. package/dist/components/cat-pagination.js.map +1 -1
  276. package/dist/components/cat-radio-group.d.ts +2 -2
  277. package/dist/components/cat-radio-group.js +113 -113
  278. package/dist/components/cat-radio-group.js.map +1 -1
  279. package/dist/components/cat-radio.d.ts +2 -2
  280. package/dist/components/cat-radio.js +93 -93
  281. package/dist/components/cat-radio.js.map +1 -1
  282. package/dist/components/cat-scrollable.d.ts +2 -2
  283. package/dist/components/cat-scrollable2.js +118 -118
  284. package/dist/components/cat-scrollable2.js.map +1 -1
  285. package/dist/components/cat-select-demo.d.ts +2 -2
  286. package/dist/components/cat-select-demo.js +1438 -1438
  287. package/dist/components/cat-select-demo.js.map +1 -1
  288. package/dist/components/cat-select.d.ts +2 -2
  289. package/dist/components/cat-select2.js +666 -666
  290. package/dist/components/cat-select2.js.map +1 -1
  291. package/dist/components/cat-skeleton.d.ts +2 -2
  292. package/dist/components/cat-skeleton2.js +53 -53
  293. package/dist/components/cat-skeleton2.js.map +1 -1
  294. package/dist/components/cat-spinner.d.ts +2 -2
  295. package/dist/components/cat-spinner2.js +27 -27
  296. package/dist/components/cat-spinner2.js.map +1 -1
  297. package/dist/components/cat-tab.d.ts +2 -2
  298. package/dist/components/cat-tab.js +48 -46
  299. package/dist/components/cat-tab.js.map +1 -1
  300. package/dist/components/cat-tabs.d.ts +2 -2
  301. package/dist/components/cat-tabs.js +120 -113
  302. package/dist/components/cat-tabs.js.map +1 -1
  303. package/dist/components/cat-textarea.d.ts +2 -2
  304. package/dist/components/cat-textarea.js +178 -178
  305. package/dist/components/cat-textarea.js.map +1 -1
  306. package/dist/components/cat-toggle.d.ts +2 -2
  307. package/dist/components/cat-toggle.js +104 -104
  308. package/dist/components/cat-toggle.js.map +1 -1
  309. package/dist/components/cat-tooltip.d.ts +2 -2
  310. package/dist/components/cat-tooltip.js +144 -143
  311. package/dist/components/cat-tooltip.js.map +1 -1
  312. package/dist/components/coerce.js +3 -3
  313. package/dist/components/coerce.js.map +1 -1
  314. package/dist/components/index.js +72 -72
  315. package/dist/components/index.js.map +1 -1
  316. package/dist/esm/cat-alert_26.entry.js +3899 -3883
  317. package/dist/esm/cat-alert_26.entry.js.map +1 -1
  318. package/dist/esm/catalyst.js +4 -4
  319. package/dist/esm/catalyst.js.map +1 -1
  320. package/dist/esm/{index-30a221a3.js → index-acddba36.js} +51 -13
  321. package/dist/esm/index-acddba36.js.map +1 -0
  322. package/dist/esm/index.js +74 -74
  323. package/dist/esm/index.js.map +1 -1
  324. package/dist/esm/loader.js +3 -3
  325. package/dist/esm/{of-04d3d9e1.js → of-4f92b30b.js} +155 -155
  326. package/dist/esm/of-4f92b30b.js.map +1 -0
  327. package/dist/types/components/cat-alert/cat-alert.d.ts +17 -17
  328. package/dist/types/components/cat-avatar/cat-avatar.d.ts +41 -41
  329. package/dist/types/components/cat-badge/cat-badge.d.ts +22 -22
  330. package/dist/types/components/cat-button/cat-button.d.ts +151 -151
  331. package/dist/types/components/cat-button-group/cat-button-group.d.ts +9 -9
  332. package/dist/types/components/cat-card/cat-card.d.ts +1 -1
  333. package/dist/types/components/cat-checkbox/cat-checkbox.d.ts +97 -97
  334. package/dist/types/components/cat-datepicker/cat-datepicker.config.d.ts +12 -12
  335. package/dist/types/components/cat-datepicker/cat-datepicker.d.ts +153 -149
  336. package/dist/types/components/cat-datepicker-inline/cat-datepicker-inline.d.ts +45 -45
  337. package/dist/types/components/cat-dropdown/cat-dropdown.d.ts +49 -49
  338. package/dist/types/components/cat-form-group/cat-form-group.d.ts +23 -23
  339. package/dist/types/components/cat-form-hint/cat-form-hint.d.ts +6 -6
  340. package/dist/types/components/cat-i18n/cat-i18n-registry.d.ts +17 -17
  341. package/dist/types/components/cat-icon/cat-icon-registry.d.ts +12 -12
  342. package/dist/types/components/cat-icon/cat-icon.d.ts +18 -18
  343. package/dist/types/components/cat-input/cat-input.d.ts +167 -167
  344. package/dist/types/components/cat-notification/cat-notification.d.ts +31 -31
  345. package/dist/types/components/cat-pagination/cat-pagination.d.ts +52 -52
  346. package/dist/types/components/cat-radio/cat-radio.d.ts +83 -83
  347. package/dist/types/components/cat-radio-group/cat-radio-group.d.ts +49 -49
  348. package/dist/types/components/cat-scrollable/cat-scrollable.d.ts +49 -49
  349. package/dist/types/components/cat-select/cat-select.d.ts +221 -221
  350. package/dist/types/components/cat-select/connectors.d.ts +5 -5
  351. package/dist/types/components/cat-select-demo/cat-select-demo.d.ts +11 -11
  352. package/dist/types/components/cat-skeleton/cat-skeleton.d.ts +23 -23
  353. package/dist/types/components/cat-spinner/cat-spinner.d.ts +10 -10
  354. package/dist/types/components/cat-tab/cat-tab.d.ts +48 -42
  355. package/dist/types/components/cat-tabs/cat-tabs.d.ts +40 -39
  356. package/dist/types/components/cat-textarea/cat-textarea.d.ts +131 -131
  357. package/dist/types/components/cat-toggle/cat-toggle.d.ts +93 -93
  358. package/dist/types/components/cat-tooltip/cat-tooltip.d.ts +64 -64
  359. package/dist/types/components.d.ts +10 -2
  360. package/dist/types/stencil-public-runtime.d.ts +8 -0
  361. package/dist/types/utils/breakpoints.d.ts +1 -1
  362. package/dist/types/utils/media-matcher.d.ts +10 -10
  363. package/dist/types/utils/platform.d.ts +16 -16
  364. package/dist/types/utils/setDefault.d.ts +2 -2
  365. package/package.json +18 -18
  366. package/dist/catalyst/p-1bd44896.js +0 -3
  367. package/dist/catalyst/p-1bd44896.js.map +0 -1
  368. package/dist/catalyst/p-dc953306.entry.js +0 -10
  369. package/dist/catalyst/p-dc953306.entry.js.map +0 -1
  370. package/dist/cjs/index-1e7eef7e.js.map +0 -1
  371. package/dist/cjs/of-395b2f57.js.map +0 -1
  372. package/dist/esm/index-30a221a3.js.map +0 -1
  373. package/dist/esm/of-04d3d9e1.js.map +0 -1
  374. /package/dist/catalyst/{p-85d057f0.js.map → p-6ae13953.js.map} +0 -0
@@ -3,126 +3,126 @@ import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/i
3
3
  const catRadioGroupCss = ":host{display:block}:host([hidden]){display:none}";
4
4
 
5
5
  const CatRadioGroup$1 = /*@__PURE__*/ proxyCustomElement(class CatRadioGroup extends HTMLElement {
6
- constructor() {
7
- super();
8
- this.__registerHost();
9
- this.__attachShadow();
10
- this.catChange = createEvent(this, "catChange", 7);
11
- this.catFocus = createEvent(this, "catFocus", 7);
12
- this.catBlur = createEvent(this, "catBlur", 7);
13
- this.catRadioGroup = [];
14
- this.name = undefined;
15
- this.value = undefined;
16
- this.disabled = false;
17
- this.a11yLabel = undefined;
18
- this.labelLeft = false;
19
- }
20
- onNameChanged(newName) {
21
- this.catRadioGroup.forEach(catRadio => (catRadio.name = newName));
22
- }
23
- onValueChanged(newValue) {
24
- this.catRadioGroup.forEach(catRadio => (catRadio.checked = catRadio.value === newValue));
25
- this.updateTabIndex();
26
- }
27
- onDisabledChanged(disabled) {
28
- this.catRadioGroup.forEach(catRadio => (catRadio.disabled = catRadio.disabled || disabled));
29
- }
30
- onLabelLeftChanged(labelLeft) {
31
- this.catRadioGroup.forEach(catRadio => (catRadio.labelLeft = catRadio.labelLeft || labelLeft));
32
- }
33
- componentDidLoad() {
34
- this.init();
35
- this.mutationObserver = new MutationObserver(mutations => mutations.some(value => value.target.nodeName === 'CAT-RADIO') && this.init());
36
- this.mutationObserver?.observe(this.hostElement, {
37
- childList: true,
38
- attributes: true,
39
- subtree: true
40
- });
41
- }
42
- disconnectedCallback() {
43
- this.mutationObserver?.disconnect();
44
- }
45
- onKeydown(event) {
46
- if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(event.key) && this.catRadioGroup.length) {
47
- const targetElements = this.catRadioGroup.filter(catRadio => !catRadio.disabled);
48
- const activeElement = document.activeElement;
49
- const activeIdx = this.catRadioGroup.findIndex(catRadio => catRadio === activeElement);
50
- const activeOff = ['ArrowDown', 'ArrowRight'].includes(event.key) ? 1 : -1;
51
- const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;
52
- targetElements[targetIdx].doFocus();
53
- targetElements[targetIdx].shadowRoot?.querySelector('input')?.click();
54
- this.updateTabIndex();
55
- event.preventDefault();
6
+ constructor() {
7
+ super();
8
+ this.__registerHost();
9
+ this.__attachShadow();
10
+ this.catChange = createEvent(this, "catChange", 7);
11
+ this.catFocus = createEvent(this, "catFocus", 7);
12
+ this.catBlur = createEvent(this, "catBlur", 7);
13
+ this.catRadioGroup = [];
14
+ this.name = undefined;
15
+ this.value = undefined;
16
+ this.disabled = false;
17
+ this.a11yLabel = undefined;
18
+ this.labelLeft = false;
56
19
  }
57
- }
58
- onInput(event) {
59
- const radio = this.catRadioGroup.find(radio => radio === event.target);
60
- if (radio?.localName === 'cat-radio') {
61
- this.value = radio?.checked ? radio?.value : undefined;
62
- this.catChange.emit(this.value);
20
+ onNameChanged(newName) {
21
+ this.catRadioGroup.forEach(catRadio => (catRadio.name = newName));
63
22
  }
64
- }
65
- onFocus(event) {
66
- if (!event.relatedTarget) {
67
- this.catBlur.emit(event);
23
+ onValueChanged(newValue) {
24
+ this.catRadioGroup.forEach(catRadio => (catRadio.checked = catRadio.value === newValue));
25
+ this.updateTabIndex();
68
26
  }
69
- }
70
- onBlur(event) {
71
- if (!event.relatedTarget) {
72
- this.catBlur.emit(event);
27
+ onDisabledChanged(disabled) {
28
+ this.catRadioGroup.forEach(catRadio => (catRadio.disabled = catRadio.disabled || disabled));
73
29
  }
74
- }
75
- render() {
76
- return (h("div", { role: "radiogroup", "aria-label": this.a11yLabel }, h("slot", null)));
77
- }
78
- init() {
79
- this.catRadioGroup = Array.from(this.hostElement.querySelectorAll(`cat-radio`));
80
- this.onNameChanged(this.name);
81
- this.onValueChanged(this.value);
82
- this.onDisabledChanged(this.disabled);
83
- this.onLabelLeftChanged(this.labelLeft);
84
- }
85
- updateTabIndex() {
86
- if (this.catRadioGroup.length) {
87
- this.catRadioGroup.forEach(value => value.shadowRoot?.querySelector('input')?.setAttribute('tabindex', '-1'));
88
- const checkedRadioIndex = this.catRadioGroup.findIndex(value => value.checked);
89
- this.catRadioGroup[checkedRadioIndex >= 0 ? checkedRadioIndex : 0].shadowRoot
90
- ?.querySelector('input')
91
- ?.setAttribute('tabindex', '0');
30
+ onLabelLeftChanged(labelLeft) {
31
+ this.catRadioGroup.forEach(catRadio => (catRadio.labelLeft = catRadio.labelLeft || labelLeft));
92
32
  }
93
- }
94
- get hostElement() { return this; }
95
- static get watchers() { return {
96
- "name": ["onNameChanged"],
97
- "value": ["onValueChanged"],
98
- "disabled": ["onDisabledChanged"],
99
- "labelLeft": ["onLabelLeftChanged"]
100
- }; }
101
- static get style() { return catRadioGroupCss; }
33
+ componentDidLoad() {
34
+ this.init();
35
+ this.mutationObserver = new MutationObserver(mutations => mutations.some(value => value.target.nodeName === 'CAT-RADIO') && this.init());
36
+ this.mutationObserver?.observe(this.hostElement, {
37
+ childList: true,
38
+ attributes: true,
39
+ subtree: true
40
+ });
41
+ }
42
+ disconnectedCallback() {
43
+ this.mutationObserver?.disconnect();
44
+ }
45
+ onKeydown(event) {
46
+ if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(event.key) && this.catRadioGroup.length) {
47
+ const targetElements = this.catRadioGroup.filter(catRadio => !catRadio.disabled);
48
+ const activeElement = document.activeElement;
49
+ const activeIdx = this.catRadioGroup.findIndex(catRadio => catRadio === activeElement);
50
+ const activeOff = ['ArrowDown', 'ArrowRight'].includes(event.key) ? 1 : -1;
51
+ const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;
52
+ targetElements[targetIdx].doFocus();
53
+ targetElements[targetIdx].shadowRoot?.querySelector('input')?.click();
54
+ this.updateTabIndex();
55
+ event.preventDefault();
56
+ }
57
+ }
58
+ onInput(event) {
59
+ const radio = this.catRadioGroup.find(radio => radio === event.target);
60
+ if (radio?.localName === 'cat-radio') {
61
+ this.value = radio?.checked ? radio?.value : undefined;
62
+ this.catChange.emit(this.value);
63
+ }
64
+ }
65
+ onFocus(event) {
66
+ if (!event.relatedTarget) {
67
+ this.catBlur.emit(event);
68
+ }
69
+ }
70
+ onBlur(event) {
71
+ if (!event.relatedTarget) {
72
+ this.catBlur.emit(event);
73
+ }
74
+ }
75
+ render() {
76
+ return (h("div", { role: "radiogroup", "aria-label": this.a11yLabel }, h("slot", null)));
77
+ }
78
+ init() {
79
+ this.catRadioGroup = Array.from(this.hostElement.querySelectorAll(`cat-radio`));
80
+ this.onNameChanged(this.name);
81
+ this.onValueChanged(this.value);
82
+ this.onDisabledChanged(this.disabled);
83
+ this.onLabelLeftChanged(this.labelLeft);
84
+ }
85
+ updateTabIndex() {
86
+ if (this.catRadioGroup.length) {
87
+ this.catRadioGroup.forEach(value => value.shadowRoot?.querySelector('input')?.setAttribute('tabindex', '-1'));
88
+ const checkedRadioIndex = this.catRadioGroup.findIndex(value => value.checked);
89
+ this.catRadioGroup[checkedRadioIndex >= 0 ? checkedRadioIndex : 0].shadowRoot
90
+ ?.querySelector('input')
91
+ ?.setAttribute('tabindex', '0');
92
+ }
93
+ }
94
+ get hostElement() { return this; }
95
+ static get watchers() { return {
96
+ "name": ["onNameChanged"],
97
+ "value": ["onValueChanged"],
98
+ "disabled": ["onDisabledChanged"],
99
+ "labelLeft": ["onLabelLeftChanged"]
100
+ }; }
101
+ static get style() { return catRadioGroupCss; }
102
102
  }, [1, "cat-radio-group", {
103
- "name": [1],
104
- "value": [1025],
105
- "disabled": [4],
106
- "a11yLabel": [1, "a11y-label"],
107
- "labelLeft": [4, "label-left"]
108
- }, [[0, "keydown", "onKeydown"], [0, "input", "onInput"], [2, "focus", "onFocus"], [2, "blur", "onBlur"]], {
109
- "name": ["onNameChanged"],
110
- "value": ["onValueChanged"],
111
- "disabled": ["onDisabledChanged"],
112
- "labelLeft": ["onLabelLeftChanged"]
113
- }]);
103
+ "name": [1],
104
+ "value": [1025],
105
+ "disabled": [4],
106
+ "a11yLabel": [1, "a11y-label"],
107
+ "labelLeft": [4, "label-left"]
108
+ }, [[0, "keydown", "onKeydown"], [0, "input", "onInput"], [2, "focus", "onFocus"], [2, "blur", "onBlur"]], {
109
+ "name": ["onNameChanged"],
110
+ "value": ["onValueChanged"],
111
+ "disabled": ["onDisabledChanged"],
112
+ "labelLeft": ["onLabelLeftChanged"]
113
+ }]);
114
114
  function defineCustomElement$1() {
115
- if (typeof customElements === "undefined") {
116
- return;
117
- }
118
- const components = ["cat-radio-group"];
119
- components.forEach(tagName => { switch (tagName) {
120
- case "cat-radio-group":
121
- if (!customElements.get(tagName)) {
122
- customElements.define(tagName, CatRadioGroup$1);
123
- }
124
- break;
125
- } });
115
+ if (typeof customElements === "undefined") {
116
+ return;
117
+ }
118
+ const components = ["cat-radio-group"];
119
+ components.forEach(tagName => { switch (tagName) {
120
+ case "cat-radio-group":
121
+ if (!customElements.get(tagName)) {
122
+ customElements.define(tagName, CatRadioGroup$1);
123
+ }
124
+ break;
125
+ } });
126
126
  }
127
127
 
128
128
  const CatRadioGroup = CatRadioGroup$1;
@@ -1 +1 @@
1
- {"file":"cat-radio-group.js","mappings":"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","names":["CatRadioGroup"],"sources":["src/components/cat-radio-group/cat-radio-group.scss?tag=cat-radio-group&encapsulation=shadow","src/components/cat-radio-group/cat-radio-group.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n display: block;\n}\n\n:host([hidden]) {\n display: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, Watch } from '@stencil/core';\n\n/**\n * A group of radio buttons.\n */\n@Component({\n tag: 'cat-radio-group',\n styleUrl: 'cat-radio-group.scss',\n shadow: true\n})\nexport class CatRadioGroup {\n private catRadioGroup: HTMLCatRadioElement[] = [];\n private mutationObserver?: MutationObserver;\n\n @Element() hostElement!: HTMLElement;\n\n /**\n * The name of the radio group component.\n */\n @Prop() name?: string;\n\n /**\n * The value of the radio group.\n */\n @Prop({ mutable: true }) value?: string;\n\n /**\n * Whether this radio group is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Adds an accessible label for the radio group that\n * it is only shown in assistive technologies, like screen readers.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n /**\n * Whether the label of the radios should appear to the left of them.\n */\n @Prop() labelLeft = false;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter<boolean | string>;\n\n /**\n * Emitted when the radio group received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio group loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n @Watch('name')\n onNameChanged(newName?: string) {\n this.catRadioGroup.forEach(catRadio => (catRadio.name = newName));\n }\n\n @Watch('value')\n onValueChanged(newValue?: string) {\n this.catRadioGroup.forEach(catRadio => (catRadio.checked = catRadio.value === newValue));\n this.updateTabIndex();\n }\n\n @Watch('disabled')\n onDisabledChanged(disabled: boolean) {\n this.catRadioGroup.forEach(catRadio => (catRadio.disabled = catRadio.disabled || disabled));\n }\n\n @Watch('labelLeft')\n onLabelLeftChanged(labelLeft: boolean) {\n this.catRadioGroup.forEach(catRadio => (catRadio.labelLeft = catRadio.labelLeft || labelLeft));\n }\n\n componentDidLoad(): void {\n this.init();\n this.mutationObserver = new MutationObserver(\n mutations => mutations.some(value => value.target.nodeName === 'CAT-RADIO') && this.init()\n );\n this.mutationObserver?.observe(this.hostElement, {\n childList: true,\n attributes: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n }\n\n @Listen('keydown')\n onKeydown(event: KeyboardEvent): void {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(event.key) && this.catRadioGroup.length) {\n const targetElements = this.catRadioGroup.filter(catRadio => !catRadio.disabled);\n const activeElement = document.activeElement as HTMLCatRadioElement;\n const activeIdx = this.catRadioGroup.findIndex(catRadio => catRadio === activeElement);\n const activeOff = ['ArrowDown', 'ArrowRight'].includes(event.key) ? 1 : -1;\n const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;\n targetElements[targetIdx].doFocus();\n targetElements[targetIdx].shadowRoot?.querySelector('input')?.click();\n this.updateTabIndex();\n event.preventDefault();\n }\n }\n\n @Listen('input')\n onInput(event: MouseEvent): void {\n const radio = this.catRadioGroup.find(radio => radio === event.target);\n if (radio?.localName === 'cat-radio') {\n this.value = radio?.checked ? radio?.value : undefined;\n this.catChange.emit(this.value);\n }\n }\n\n @Listen('focus', { capture: true })\n onFocus(event: FocusEvent): void {\n if (!event.relatedTarget) {\n this.catBlur.emit(event);\n }\n }\n\n @Listen('blur', { capture: true })\n onBlur(event: FocusEvent): void {\n if (!event.relatedTarget) {\n this.catBlur.emit(event);\n }\n }\n\n render() {\n return (\n <div role=\"radiogroup\" aria-label={this.a11yLabel}>\n <slot></slot>\n </div>\n );\n }\n\n private init() {\n this.catRadioGroup = Array.from(this.hostElement.querySelectorAll(`cat-radio`));\n this.onNameChanged(this.name);\n this.onValueChanged(this.value);\n this.onDisabledChanged(this.disabled);\n this.onLabelLeftChanged(this.labelLeft);\n }\n\n private updateTabIndex() {\n if (this.catRadioGroup.length) {\n this.catRadioGroup.forEach(value => value.shadowRoot?.querySelector('input')?.setAttribute('tabindex', '-1'));\n const checkedRadioIndex = this.catRadioGroup.findIndex(value => value.checked);\n this.catRadioGroup[checkedRadioIndex >= 0 ? checkedRadioIndex : 0].shadowRoot\n ?.querySelector('input')\n ?.setAttribute('tabindex', '0');\n }\n }\n}\n"],"version":3}
1
+ {"file":"cat-radio-group.js","mappings":"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","names":["CatRadioGroup"],"sources":["src/components/cat-radio-group/cat-radio-group.scss?tag=cat-radio-group&encapsulation=shadow","src/components/cat-radio-group/cat-radio-group.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n\n:host {\n display: block;\n}\n\n:host([hidden]) {\n display: none;\n}\n","import { Component, Element, Event, EventEmitter, h, Listen, Prop, Watch } from '@stencil/core';\n\n/**\n * A group of radio buttons.\n */\n@Component({\n tag: 'cat-radio-group',\n styleUrl: 'cat-radio-group.scss',\n shadow: true\n})\nexport class CatRadioGroup {\n private catRadioGroup: HTMLCatRadioElement[] = [];\n private mutationObserver?: MutationObserver;\n\n @Element() hostElement!: HTMLElement;\n\n /**\n * The name of the radio group component.\n */\n @Prop() name?: string;\n\n /**\n * The value of the radio group.\n */\n @Prop({ mutable: true }) value?: string;\n\n /**\n * Whether this radio group is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * Adds an accessible label for the radio group that\n * it is only shown in assistive technologies, like screen readers.\n */\n @Prop({ attribute: 'a11y-label' }) a11yLabel?: string;\n\n /**\n * Whether the label of the radios should appear to the left of them.\n */\n @Prop() labelLeft = false;\n\n /**\n * Emitted when the value is changed.\n */\n @Event() catChange!: EventEmitter<boolean | string>;\n\n /**\n * Emitted when the radio group received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio group loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n @Watch('name')\n onNameChanged(newName?: string) {\n this.catRadioGroup.forEach(catRadio => (catRadio.name = newName));\n }\n\n @Watch('value')\n onValueChanged(newValue?: string) {\n this.catRadioGroup.forEach(catRadio => (catRadio.checked = catRadio.value === newValue));\n this.updateTabIndex();\n }\n\n @Watch('disabled')\n onDisabledChanged(disabled: boolean) {\n this.catRadioGroup.forEach(catRadio => (catRadio.disabled = catRadio.disabled || disabled));\n }\n\n @Watch('labelLeft')\n onLabelLeftChanged(labelLeft: boolean) {\n this.catRadioGroup.forEach(catRadio => (catRadio.labelLeft = catRadio.labelLeft || labelLeft));\n }\n\n componentDidLoad(): void {\n this.init();\n this.mutationObserver = new MutationObserver(\n mutations => mutations.some(value => value.target.nodeName === 'CAT-RADIO') && this.init()\n );\n this.mutationObserver?.observe(this.hostElement, {\n childList: true,\n attributes: true,\n subtree: true\n });\n }\n\n disconnectedCallback() {\n this.mutationObserver?.disconnect();\n }\n\n @Listen('keydown')\n onKeydown(event: KeyboardEvent): void {\n if (['ArrowDown', 'ArrowUp', 'ArrowRight', 'ArrowLeft'].includes(event.key) && this.catRadioGroup.length) {\n const targetElements = this.catRadioGroup.filter(catRadio => !catRadio.disabled);\n const activeElement = document.activeElement as HTMLCatRadioElement;\n const activeIdx = this.catRadioGroup.findIndex(catRadio => catRadio === activeElement);\n const activeOff = ['ArrowDown', 'ArrowRight'].includes(event.key) ? 1 : -1;\n const targetIdx = activeIdx < 0 ? 0 : (activeIdx + activeOff + targetElements.length) % targetElements.length;\n targetElements[targetIdx].doFocus();\n targetElements[targetIdx].shadowRoot?.querySelector('input')?.click();\n this.updateTabIndex();\n event.preventDefault();\n }\n }\n\n @Listen('input')\n onInput(event: MouseEvent): void {\n const radio = this.catRadioGroup.find(radio => radio === event.target);\n if (radio?.localName === 'cat-radio') {\n this.value = radio?.checked ? radio?.value : undefined;\n this.catChange.emit(this.value);\n }\n }\n\n @Listen('focus', { capture: true })\n onFocus(event: FocusEvent): void {\n if (!event.relatedTarget) {\n this.catBlur.emit(event);\n }\n }\n\n @Listen('blur', { capture: true })\n onBlur(event: FocusEvent): void {\n if (!event.relatedTarget) {\n this.catBlur.emit(event);\n }\n }\n\n render() {\n return (\n <div role=\"radiogroup\" aria-label={this.a11yLabel}>\n <slot></slot>\n </div>\n );\n }\n\n private init() {\n this.catRadioGroup = Array.from(this.hostElement.querySelectorAll(`cat-radio`));\n this.onNameChanged(this.name);\n this.onValueChanged(this.value);\n this.onDisabledChanged(this.disabled);\n this.onLabelLeftChanged(this.labelLeft);\n }\n\n private updateTabIndex() {\n if (this.catRadioGroup.length) {\n this.catRadioGroup.forEach(value => value.shadowRoot?.querySelector('input')?.setAttribute('tabindex', '-1'));\n const checkedRadioIndex = this.catRadioGroup.findIndex(value => value.checked);\n this.catRadioGroup[checkedRadioIndex >= 0 ? checkedRadioIndex : 0].shadowRoot\n ?.querySelector('input')\n ?.setAttribute('tabindex', '0');\n }\n }\n}\n"],"version":3}
@@ -2,8 +2,8 @@ import type { Components, JSX } from "../types/components";
2
2
 
3
3
  interface CatRadio extends Components.CatRadio, HTMLElement {}
4
4
  export const CatRadio: {
5
- prototype: CatRadio;
6
- new (): CatRadio;
5
+ prototype: CatRadio;
6
+ new (): CatRadio;
7
7
  };
8
8
  /**
9
9
  * Used to define this component and all nested components recursively.
@@ -6,102 +6,102 @@ const catRadioCss = ".hint-wrapper{flex:0 1 auto;display:flex;gap:0.5rem}.hint-s
6
6
 
7
7
  let nextUniqueId = 0;
8
8
  const CatRadio$1 = /*@__PURE__*/ proxyCustomElement(class CatRadio extends HTMLElement {
9
- constructor() {
10
- super();
11
- this.__registerHost();
12
- this.__attachShadow();
13
- this.catChange = createEvent(this, "catChange", 7);
14
- this.catFocus = createEvent(this, "catFocus", 7);
15
- this.catBlur = createEvent(this, "catBlur", 7);
16
- this._id = `cat-radio-${++nextUniqueId}`;
17
- this.hasSlottedLabel = false;
18
- this.hasSlottedHint = false;
19
- this.checked = false;
20
- this.disabled = false;
21
- this.identifier = undefined;
22
- this.label = '';
23
- this.labelHidden = false;
24
- this.name = undefined;
25
- this.required = false;
26
- this.value = '';
27
- this.hint = undefined;
28
- this.labelLeft = false;
29
- this.nativeAttributes = undefined;
30
- }
31
- get id() {
32
- return this.identifier || this._id;
33
- }
34
- componentWillRender() {
35
- this.hasSlottedLabel = !!this.hostElement.querySelector('[slot="label"]');
36
- this.hasSlottedHint = !!this.hostElement.querySelector('[slot="hint"]');
37
- if (!this.label && !this.hasSlottedLabel) {
38
- loglevel.warn('[A11y] Missing ARIA label on radio', this);
9
+ constructor() {
10
+ super();
11
+ this.__registerHost();
12
+ this.__attachShadow();
13
+ this.catChange = createEvent(this, "catChange", 7);
14
+ this.catFocus = createEvent(this, "catFocus", 7);
15
+ this.catBlur = createEvent(this, "catBlur", 7);
16
+ this._id = `cat-radio-${++nextUniqueId}`;
17
+ this.hasSlottedLabel = false;
18
+ this.hasSlottedHint = false;
19
+ this.checked = false;
20
+ this.disabled = false;
21
+ this.identifier = undefined;
22
+ this.label = '';
23
+ this.labelHidden = false;
24
+ this.name = undefined;
25
+ this.required = false;
26
+ this.value = '';
27
+ this.hint = undefined;
28
+ this.labelLeft = false;
29
+ this.nativeAttributes = undefined;
39
30
  }
40
- }
41
- /**
42
- * Programmatically move focus to the radio button. Use this method instead of
43
- * `input.focus()`.
44
- *
45
- * @param options An optional object providing options to control aspects of
46
- * the focusing process.
47
- */
48
- async doFocus(options) {
49
- this.input.focus(options);
50
- }
51
- /**
52
- * Programmatically remove focus from the radio button. Use this method
53
- * instead of `input.blur()`.
54
- */
55
- async doBlur() {
56
- this.input.blur();
57
- }
58
- render() {
59
- return (h(Host, null, h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }, role: "radio", "aria-checked": this.checked ? 'true' : 'false' }, h("span", { class: "radio" }, h("input", { ...this.nativeAttributes, part: "input", ref: el => (this.input = el), id: this.identifier || this.id, type: "radio", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this), "aria-describedby": this.hasHint ? this.id + '-hint' : undefined }), h("span", { class: "circle" })), h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && h("slot", { name: "label" })) || this.label)), this.hasHint && (h("div", { class: { 'hint-wrapper': true, 'label-left': this.labelLeft } }, h("div", { class: "circle-placeholder" }), h(CatFormHint, { id: this.id, hint: this.hint, slottedHint: this.hasSlottedHint && h("slot", { name: "hint" }) })))));
60
- }
61
- get hasHint() {
62
- return !!this.hint || !!this.hasSlottedHint;
63
- }
64
- onInput() {
65
- this.checked = true;
66
- this.catChange.emit(this.value);
67
- }
68
- onFocus(event) {
69
- this.catFocus.emit(event);
70
- }
71
- onBlur(event) {
72
- this.catBlur.emit(event);
73
- }
74
- get hostElement() { return this; }
75
- static get style() { return catRadioCss; }
31
+ get id() {
32
+ return this.identifier || this._id;
33
+ }
34
+ componentWillRender() {
35
+ this.hasSlottedLabel = !!this.hostElement.querySelector('[slot="label"]');
36
+ this.hasSlottedHint = !!this.hostElement.querySelector('[slot="hint"]');
37
+ if (!this.label && !this.hasSlottedLabel) {
38
+ loglevel.warn('[A11y] Missing ARIA label on radio', this);
39
+ }
40
+ }
41
+ /**
42
+ * Programmatically move focus to the radio button. Use this method instead of
43
+ * `input.focus()`.
44
+ *
45
+ * @param options An optional object providing options to control aspects of
46
+ * the focusing process.
47
+ */
48
+ async doFocus(options) {
49
+ this.input.focus(options);
50
+ }
51
+ /**
52
+ * Programmatically remove focus from the radio button. Use this method
53
+ * instead of `input.blur()`.
54
+ */
55
+ async doBlur() {
56
+ this.input.blur();
57
+ }
58
+ render() {
59
+ return (h(Host, null, h("label", { htmlFor: this.id, class: { 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }, role: "radio", "aria-checked": this.checked ? 'true' : 'false' }, h("span", { class: "radio" }, h("input", { ...this.nativeAttributes, part: "input", ref: el => (this.input = el), id: this.identifier || this.id, type: "radio", name: this.name, value: this.value, checked: this.checked, required: this.required, disabled: this.disabled, onInput: this.onInput.bind(this), onFocus: this.onFocus.bind(this), onBlur: this.onBlur.bind(this), "aria-describedby": this.hasHint ? this.id + '-hint' : undefined }), h("span", { class: "circle" })), h("span", { class: "label", part: "label" }, (this.hasSlottedLabel && h("slot", { name: "label" })) || this.label)), this.hasHint && (h("div", { class: { 'hint-wrapper': true, 'label-left': this.labelLeft } }, h("div", { class: "circle-placeholder" }), h(CatFormHint, { id: this.id, hint: this.hint, slottedHint: this.hasSlottedHint && h("slot", { name: "hint" }) })))));
60
+ }
61
+ get hasHint() {
62
+ return !!this.hint || !!this.hasSlottedHint;
63
+ }
64
+ onInput() {
65
+ this.checked = true;
66
+ this.catChange.emit(this.value);
67
+ }
68
+ onFocus(event) {
69
+ this.catFocus.emit(event);
70
+ }
71
+ onBlur(event) {
72
+ this.catBlur.emit(event);
73
+ }
74
+ get hostElement() { return this; }
75
+ static get style() { return catRadioCss; }
76
76
  }, [1, "cat-radio", {
77
- "checked": [1028],
78
- "disabled": [4],
79
- "identifier": [1],
80
- "label": [1],
81
- "labelHidden": [4, "label-hidden"],
82
- "name": [1],
83
- "required": [4],
84
- "value": [1],
85
- "hint": [1],
86
- "labelLeft": [4, "label-left"],
87
- "nativeAttributes": [16],
88
- "hasSlottedLabel": [32],
89
- "hasSlottedHint": [32],
90
- "doFocus": [64],
91
- "doBlur": [64]
92
- }]);
77
+ "checked": [1028],
78
+ "disabled": [4],
79
+ "identifier": [1],
80
+ "label": [1],
81
+ "labelHidden": [4, "label-hidden"],
82
+ "name": [1],
83
+ "required": [4],
84
+ "value": [1],
85
+ "hint": [1],
86
+ "labelLeft": [4, "label-left"],
87
+ "nativeAttributes": [16],
88
+ "hasSlottedLabel": [32],
89
+ "hasSlottedHint": [32],
90
+ "doFocus": [64],
91
+ "doBlur": [64]
92
+ }]);
93
93
  function defineCustomElement$1() {
94
- if (typeof customElements === "undefined") {
95
- return;
96
- }
97
- const components = ["cat-radio"];
98
- components.forEach(tagName => { switch (tagName) {
99
- case "cat-radio":
100
- if (!customElements.get(tagName)) {
101
- customElements.define(tagName, CatRadio$1);
102
- }
103
- break;
104
- } });
94
+ if (typeof customElements === "undefined") {
95
+ return;
96
+ }
97
+ const components = ["cat-radio"];
98
+ components.forEach(tagName => { switch (tagName) {
99
+ case "cat-radio":
100
+ if (!customElements.get(tagName)) {
101
+ customElements.define(tagName, CatRadio$1);
102
+ }
103
+ break;
104
+ } });
105
105
  }
106
106
 
107
107
  const CatRadio = CatRadio$1;
@@ -1 +1 @@
1
- {"file":"cat-radio.js","mappings":"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","names":["CatRadio","log"],"sources":["src/components/cat-radio/cat-radio.scss?tag=cat-radio&encapsulation=shadow","src/components/cat-radio/cat-radio.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n$radio-width: 1.25rem;\n$radio-height: 1.25rem;\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n display: flex;\n gap: 0.5rem;\n @include cat-body('m');\n cursor: pointer;\n}\n\n.label-left {\n flex-direction: row-reverse;\n}\n\n.radio {\n display: flex;\n position: relative;\n align-self: flex-start;\n}\n\n.circle-placeholder {\n width: calc($radio-width + 1px);\n}\n\n.circle {\n position: absolute;\n width: 0.75rem;\n height: 0.75rem;\n background-color: cat-token('color.theme.primary.bg');\n border-radius: 10rem;\n top: calc(50% - 0.375rem);\n left: calc(50% - 0.375rem);\n visibility: hidden;\n pointer-events: none;\n}\n\ninput {\n margin: 0;\n width: $radio-width;\n height: $radio-height;\n appearance: none;\n background-color: cat-token('color.ui.background.input');\n border: 1px solid cat-token('color.ui.border.dark');\n border-radius: 10rem;\n cursor: inherit;\n\n &:checked {\n border-color: cat-token('color.theme.primary.bg');\n\n + .circle {\n visibility: visible;\n }\n }\n\n &:focus-visible {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n}\n\n:host(.cat-error) {\n input {\n border-color: cat-token('color.theme.danger.bg');\n }\n\n .circle {\n background-color: cat-token('color.theme.danger.bg');\n }\n}\n\n.label {\n flex: 1 1 auto;\n\n .is-hidden & {\n @include cat-visually-hidden;\n }\n}\n\n.is-disabled {\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n\n input {\n background-color: cat-token('color.ui.background.muted');\n\n &:checked {\n border-color: cat-token('color.ui.border.dark');\n }\n }\n\n .circle {\n background-color: cat-token('color.ui.border.dark');\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\n\nlet nextUniqueId = 0;\n\n/**\n * Radio Buttons are graphical interface elements that allow user to choose\n * only one of a predefined set of mutually exclusive options.\n *\n * @slot hint - Optional hint element to be displayed with the radio.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n * @part input - The native input element.\n */\n@Component({\n tag: 'cat-radio',\n styleUrl: 'cat-radio.scss',\n shadow: true\n})\nexport class CatRadio {\n private readonly _id = `cat-radio-${++nextUniqueId}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n @State() hasSlottedHint = false;\n\n /**\n * Whether this radio is checked.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Whether this radio is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label of the radio that is visible.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * The name of the radio component.\n */\n @Prop() name?: string;\n\n /**\n * Whether the radio is required.\n */\n @Prop() required = false;\n\n /**\n * The value of the radio component.\n */\n @Prop() value = '';\n\n /**\n * Optional hint text(s) to be displayed with the radio.\n */\n @Prop() hint?: string | string[];\n\n /**\n * Whether the label should appear to the left of the radio component.\n */\n @Prop() labelLeft = false;\n\n /**\n * Attributes that will be added to the native HTML input element.\n */\n @Prop() nativeAttributes?: { [key: string]: string };\n\n /**\n * Emitted when the radio is changed.\n */\n @Event() catChange!: EventEmitter<boolean | string>;\n\n /**\n * Emitted when the radio received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on radio', this);\n }\n }\n\n /**\n * Programmatically move focus to the radio button. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the radio button. Use this method\n * instead of `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n render() {\n return (\n <Host>\n <label\n htmlFor={this.id}\n class={{ 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }}\n role=\"radio\"\n aria-checked={this.checked ? 'true' : 'false'}\n >\n <span class=\"radio\">\n <input\n {...this.nativeAttributes}\n part=\"input\"\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.identifier || this.id}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n aria-describedby={this.hasHint ? this.id + '-hint' : undefined}\n />\n <span class=\"circle\"></span>\n </span>\n <span class=\"label\" part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n </span>\n </label>\n {this.hasHint && (\n <div class={{ 'hint-wrapper': true, 'label-left': this.labelLeft }}>\n <div class=\"circle-placeholder\"></div>\n <CatFormHint id={this.id} hint={this.hint} slottedHint={this.hasSlottedHint && <slot name=\"hint\"></slot>} />\n </div>\n )}\n </Host>\n );\n }\n\n private get hasHint() {\n return !!this.hint || !!this.hasSlottedHint;\n }\n\n private onInput() {\n this.checked = true;\n this.catChange.emit(this.value);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n"],"version":3}
1
+ {"file":"cat-radio.js","mappings":"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","names":["CatRadio","log"],"sources":["src/components/cat-radio/cat-radio.scss?tag=cat-radio&encapsulation=shadow","src/components/cat-radio/cat-radio.tsx"],"sourcesContent":["@use 'variables' as *;\n@use 'mixins' as *;\n@use 'src/components/cat-form-hint/cat-form-hint';\n\n$radio-width: 1.25rem;\n$radio-height: 1.25rem;\n\n:host {\n display: flex;\n flex-direction: column;\n gap: 0.5rem;\n}\n\n:host([hidden]) {\n display: none;\n}\n\nlabel {\n display: flex;\n gap: 0.5rem;\n @include cat-body('m');\n cursor: pointer;\n}\n\n.label-left {\n flex-direction: row-reverse;\n}\n\n.radio {\n display: flex;\n position: relative;\n align-self: flex-start;\n}\n\n.circle-placeholder {\n width: calc($radio-width + 1px);\n}\n\n.circle {\n position: absolute;\n width: 0.75rem;\n height: 0.75rem;\n background-color: cat-token('color.theme.primary.bg');\n border-radius: 10rem;\n top: calc(50% - 0.375rem);\n left: calc(50% - 0.375rem);\n visibility: hidden;\n pointer-events: none;\n}\n\ninput {\n margin: 0;\n width: $radio-width;\n height: $radio-height;\n appearance: none;\n background-color: cat-token('color.ui.background.input');\n border: 1px solid cat-token('color.ui.border.dark');\n border-radius: 10rem;\n cursor: inherit;\n\n &:checked {\n border-color: cat-token('color.theme.primary.bg');\n\n + .circle {\n visibility: visible;\n }\n }\n\n &:focus-visible {\n outline: 2px solid cat-token('color.ui.border.focus');\n outline-offset: 1px;\n }\n}\n\n:host(.cat-error) {\n input {\n border-color: cat-token('color.theme.danger.bg');\n }\n\n .circle {\n background-color: cat-token('color.theme.danger.bg');\n }\n}\n\n.label {\n flex: 1 1 auto;\n\n .is-hidden & {\n @include cat-visually-hidden;\n }\n}\n\n.is-disabled {\n cursor: not-allowed;\n color: cat-token('color.ui.font.muted');\n\n input {\n background-color: cat-token('color.ui.background.muted');\n\n &:checked {\n border-color: cat-token('color.ui.border.dark');\n }\n }\n\n .circle {\n background-color: cat-token('color.ui.border.dark');\n }\n}\n","import { Component, Element, Event, EventEmitter, h, Host, Method, Prop, State } from '@stencil/core';\nimport log from 'loglevel';\nimport { CatFormHint } from '../cat-form-hint/cat-form-hint';\n\nlet nextUniqueId = 0;\n\n/**\n * Radio Buttons are graphical interface elements that allow user to choose\n * only one of a predefined set of mutually exclusive options.\n *\n * @slot hint - Optional hint element to be displayed with the radio.\n * @slot label - The slotted label. If both the label property and the label slot are present, only the label slot will be displayed.\n * @part label - The label content.\n * @part input - The native input element.\n */\n@Component({\n tag: 'cat-radio',\n styleUrl: 'cat-radio.scss',\n shadow: true\n})\nexport class CatRadio {\n private readonly _id = `cat-radio-${++nextUniqueId}`;\n private get id() {\n return this.identifier || this._id;\n }\n\n private input!: HTMLInputElement;\n\n @Element() hostElement!: HTMLElement;\n\n @State() hasSlottedLabel = false;\n\n @State() hasSlottedHint = false;\n\n /**\n * Whether this radio is checked.\n */\n @Prop({ mutable: true }) checked = false;\n\n /**\n * Whether this radio is disabled.\n */\n @Prop() disabled = false;\n\n /**\n * A unique identifier for the input.\n */\n @Prop() identifier?: string;\n\n /**\n * The label of the radio that is visible.\n */\n @Prop() label = '';\n\n /**\n * Visually hide the label, but still show it to assistive technologies like screen readers.\n */\n @Prop() labelHidden = false;\n\n /**\n * The name of the radio component.\n */\n @Prop() name?: string;\n\n /**\n * Whether the radio is required.\n */\n @Prop() required = false;\n\n /**\n * The value of the radio component.\n */\n @Prop() value = '';\n\n /**\n * Optional hint text(s) to be displayed with the radio.\n */\n @Prop() hint?: string | string[];\n\n /**\n * Whether the label should appear to the left of the radio component.\n */\n @Prop() labelLeft = false;\n\n /**\n * Attributes that will be added to the native HTML input element.\n */\n @Prop() nativeAttributes?: { [key: string]: string };\n\n /**\n * Emitted when the radio is changed.\n */\n @Event() catChange!: EventEmitter<boolean | string>;\n\n /**\n * Emitted when the radio received focus.\n */\n @Event() catFocus!: EventEmitter<FocusEvent>;\n\n /**\n * Emitted when the radio loses focus.\n */\n @Event() catBlur!: EventEmitter<FocusEvent>;\n\n componentWillRender(): void {\n this.hasSlottedLabel = !!this.hostElement.querySelector('[slot=\"label\"]');\n this.hasSlottedHint = !!this.hostElement.querySelector('[slot=\"hint\"]');\n if (!this.label && !this.hasSlottedLabel) {\n log.warn('[A11y] Missing ARIA label on radio', this);\n }\n }\n\n /**\n * Programmatically move focus to the radio button. Use this method instead of\n * `input.focus()`.\n *\n * @param options An optional object providing options to control aspects of\n * the focusing process.\n */\n @Method()\n async doFocus(options?: FocusOptions): Promise<void> {\n this.input.focus(options);\n }\n\n /**\n * Programmatically remove focus from the radio button. Use this method\n * instead of `input.blur()`.\n */\n @Method()\n async doBlur(): Promise<void> {\n this.input.blur();\n }\n\n render() {\n return (\n <Host>\n <label\n htmlFor={this.id}\n class={{ 'is-hidden': this.labelHidden, 'is-disabled': this.disabled, 'label-left': this.labelLeft }}\n role=\"radio\"\n aria-checked={this.checked ? 'true' : 'false'}\n >\n <span class=\"radio\">\n <input\n {...this.nativeAttributes}\n part=\"input\"\n ref={el => (this.input = el as HTMLInputElement)}\n id={this.identifier || this.id}\n type=\"radio\"\n name={this.name}\n value={this.value}\n checked={this.checked}\n required={this.required}\n disabled={this.disabled}\n onInput={this.onInput.bind(this)}\n onFocus={this.onFocus.bind(this)}\n onBlur={this.onBlur.bind(this)}\n aria-describedby={this.hasHint ? this.id + '-hint' : undefined}\n />\n <span class=\"circle\"></span>\n </span>\n <span class=\"label\" part=\"label\">\n {(this.hasSlottedLabel && <slot name=\"label\"></slot>) || this.label}\n </span>\n </label>\n {this.hasHint && (\n <div class={{ 'hint-wrapper': true, 'label-left': this.labelLeft }}>\n <div class=\"circle-placeholder\"></div>\n <CatFormHint id={this.id} hint={this.hint} slottedHint={this.hasSlottedHint && <slot name=\"hint\"></slot>} />\n </div>\n )}\n </Host>\n );\n }\n\n private get hasHint() {\n return !!this.hint || !!this.hasSlottedHint;\n }\n\n private onInput() {\n this.checked = true;\n this.catChange.emit(this.value);\n }\n\n private onFocus(event: FocusEvent) {\n this.catFocus.emit(event);\n }\n\n private onBlur(event: FocusEvent) {\n this.catBlur.emit(event);\n }\n}\n"],"version":3}
@@ -2,8 +2,8 @@ import type { Components, JSX } from "../types/components";
2
2
 
3
3
  interface CatScrollable extends Components.CatScrollable, HTMLElement {}
4
4
  export const CatScrollable: {
5
- prototype: CatScrollable;
6
- new (): CatScrollable;
5
+ prototype: CatScrollable;
6
+ new (): CatScrollable;
7
7
  };
8
8
  /**
9
9
  * Used to define this component and all nested components recursively.