@ukic/web-components 3.0.0-alpha.7 → 3.0.0-alpha.8

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 (264) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-50fa27f6.js → helpers-8ca38600.js} +11 -1
  3. package/dist/cjs/helpers-8ca38600.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-button_3.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-card-vertical.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-select.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  48. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  50. package/dist/cjs/ic-text-field.cjs.entry.js +2 -2
  51. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +27 -11
  55. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-toggle-button.cjs.entry.js +51 -5
  57. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  60. package/dist/cjs/loader.cjs.js +1 -1
  61. package/dist/collection/components/ic-text-field/ic-text-field.js +1 -1
  62. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  63. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +68 -15
  64. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js.map +1 -1
  65. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +33 -9
  66. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
  67. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js +79 -14
  68. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js.map +1 -1
  69. package/dist/collection/utils/helpers.js +9 -0
  70. package/dist/collection/utils/helpers.js.map +1 -1
  71. package/dist/collection/utils/types.js.map +1 -1
  72. package/dist/components/helpers.js +10 -1
  73. package/dist/components/helpers.js.map +1 -1
  74. package/dist/components/ic-text-field.js +1 -1
  75. package/dist/components/ic-text-field.js.map +1 -1
  76. package/dist/components/ic-toggle-button-group.js +31 -11
  77. package/dist/components/ic-toggle-button-group.js.map +1 -1
  78. package/dist/components/ic-toggle-button.js +58 -12
  79. package/dist/components/ic-toggle-button.js.map +1 -1
  80. package/dist/core/core.esm.js +1 -1
  81. package/dist/core/core.esm.js.map +1 -1
  82. package/dist/core/{p-2179e015.entry.js → p-076c3140.entry.js} +2 -2
  83. package/dist/core/p-08ff51ff.entry.js +2 -0
  84. package/dist/core/p-08ff51ff.entry.js.map +1 -0
  85. package/dist/core/{p-27933dfe.entry.js → p-229523bc.entry.js} +2 -2
  86. package/dist/core/{p-eafa4df2.js → p-2392b3ef.js} +2 -2
  87. package/dist/core/p-2392b3ef.js.map +1 -0
  88. package/dist/core/{p-050e3e36.entry.js → p-28af4d8a.entry.js} +2 -2
  89. package/dist/core/{p-7c0ff8cf.entry.js → p-333d1e79.entry.js} +2 -2
  90. package/dist/core/{p-6d0c5a77.entry.js → p-3a1a7524.entry.js} +2 -2
  91. package/dist/core/{p-7e546e88.entry.js → p-434fa633.entry.js} +2 -2
  92. package/dist/core/{p-12bd8ade.entry.js → p-492c7e88.entry.js} +2 -2
  93. package/dist/core/{p-353893b7.entry.js → p-4bdd6aad.entry.js} +2 -2
  94. package/dist/core/{p-51990f23.entry.js → p-4e9a0efe.entry.js} +2 -2
  95. package/dist/core/{p-7c39afb5.entry.js → p-50601f1e.entry.js} +2 -2
  96. package/dist/core/{p-46dd7413.entry.js → p-537af2dd.entry.js} +2 -2
  97. package/dist/core/{p-5479be2b.entry.js → p-54604d29.entry.js} +2 -2
  98. package/dist/core/{p-6f16a69e.entry.js → p-5637b986.entry.js} +2 -2
  99. package/dist/core/{p-a519e9a6.entry.js → p-56b5e33e.entry.js} +2 -2
  100. package/dist/core/{p-3361ac8f.entry.js → p-5aa7dcae.entry.js} +2 -2
  101. package/dist/core/{p-5b118dec.entry.js → p-5c5b0b12.entry.js} +2 -2
  102. package/dist/core/{p-b052e67a.entry.js → p-6594d2df.entry.js} +2 -2
  103. package/dist/core/{p-273f9b03.entry.js → p-67a75b77.entry.js} +2 -2
  104. package/dist/core/{p-cae08ac2.entry.js → p-68046114.entry.js} +2 -2
  105. package/dist/core/{p-5e694b17.entry.js → p-6c7836ff.entry.js} +2 -2
  106. package/dist/core/{p-eb132c44.entry.js → p-74b8206f.entry.js} +2 -2
  107. package/dist/core/{p-8dda6121.entry.js → p-7f05cc17.entry.js} +2 -2
  108. package/dist/core/{p-f8890135.entry.js → p-81e8d7c5.entry.js} +2 -2
  109. package/dist/core/{p-a25d535a.entry.js → p-840113b1.entry.js} +2 -2
  110. package/dist/core/{p-13637d3f.entry.js → p-84c28c4d.entry.js} +2 -2
  111. package/dist/core/{p-d6ce4473.entry.js → p-88fdd912.entry.js} +2 -2
  112. package/dist/core/{p-5801598f.entry.js → p-8a66d8b0.entry.js} +2 -2
  113. package/dist/core/{p-4e57c7ba.entry.js → p-8aceec77.entry.js} +2 -2
  114. package/dist/core/{p-3645c4e6.entry.js → p-91c46a86.entry.js} +2 -2
  115. package/dist/core/p-91c46a86.entry.js.map +1 -0
  116. package/dist/core/{p-f1b7e4f4.entry.js → p-92e3c5a2.entry.js} +2 -2
  117. package/dist/core/{p-5dcafe90.entry.js → p-98429cbe.entry.js} +2 -2
  118. package/dist/core/{p-6331782f.entry.js → p-98963b03.entry.js} +2 -2
  119. package/dist/core/{p-e9c078fa.entry.js → p-a3b00ec1.entry.js} +2 -2
  120. package/dist/core/{p-7a16046a.entry.js → p-a4467032.entry.js} +2 -2
  121. package/dist/core/{p-dcdfe5f9.entry.js → p-a6f25812.entry.js} +2 -2
  122. package/dist/core/p-a81a91a2.entry.js +2 -0
  123. package/dist/core/p-a81a91a2.entry.js.map +1 -0
  124. package/dist/core/{p-2aca1bac.entry.js → p-ab14882b.entry.js} +2 -2
  125. package/dist/core/{p-c68d98f8.entry.js → p-ac61fa48.entry.js} +2 -2
  126. package/dist/core/{p-bafcbecc.entry.js → p-b468aa80.entry.js} +2 -2
  127. package/dist/core/{p-5347f687.entry.js → p-cf5f427b.entry.js} +2 -2
  128. package/dist/core/{p-6a5d58bc.entry.js → p-cfcb0c5b.entry.js} +2 -2
  129. package/dist/core/{p-ebf2b874.entry.js → p-d41e5b62.entry.js} +2 -2
  130. package/dist/core/{p-34e89ebf.entry.js → p-d7043445.entry.js} +2 -2
  131. package/dist/core/{p-1425c78b.entry.js → p-e2de6dd4.entry.js} +2 -2
  132. package/dist/core/{p-eec110a7.entry.js → p-e719ae4e.entry.js} +2 -2
  133. package/dist/core/{p-16df8bcf.entry.js → p-ea71e89f.entry.js} +2 -2
  134. package/dist/core/{p-9505b0f1.entry.js → p-ee0d4bf4.entry.js} +2 -2
  135. package/dist/core/{p-30f91e2e.entry.js → p-f0e45316.entry.js} +2 -2
  136. package/dist/core/{p-5d89525e.entry.js → p-f297c365.entry.js} +2 -2
  137. package/dist/core/{p-08a82b71.entry.js → p-f61170f3.entry.js} +2 -2
  138. package/dist/core/{p-bdbce1a0.entry.js → p-f7b71154.entry.js} +2 -2
  139. package/dist/core/{p-1b1f7523.entry.js → p-fb7a9d6b.entry.js} +2 -2
  140. package/dist/esm/core.js +1 -1
  141. package/dist/esm/{helpers-8565b5c5.js → helpers-1c6e542d.js} +11 -2
  142. package/dist/esm/helpers-1c6e542d.js.map +1 -0
  143. package/dist/esm/ic-accordion-group.entry.js +1 -1
  144. package/dist/esm/ic-accordion.entry.js +1 -1
  145. package/dist/esm/ic-alert.entry.js +1 -1
  146. package/dist/esm/ic-back-to-top.entry.js +1 -1
  147. package/dist/esm/ic-badge.entry.js +1 -1
  148. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  149. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  150. package/dist/esm/ic-button_3.entry.js +1 -1
  151. package/dist/esm/ic-card-vertical.entry.js +1 -1
  152. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  153. package/dist/esm/ic-checkbox.entry.js +1 -1
  154. package/dist/esm/ic-chip.entry.js +1 -1
  155. package/dist/esm/ic-data-row.entry.js +1 -1
  156. package/dist/esm/ic-dialog.entry.js +1 -1
  157. package/dist/esm/ic-divider.entry.js +1 -1
  158. package/dist/esm/ic-empty-state.entry.js +1 -1
  159. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  160. package/dist/esm/ic-footer-link.entry.js +1 -1
  161. package/dist/esm/ic-footer.entry.js +1 -1
  162. package/dist/esm/ic-hero.entry.js +1 -1
  163. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  164. package/dist/esm/ic-input-component-container_3.entry.js +1 -1
  165. package/dist/esm/ic-input-label_2.entry.js +1 -1
  166. package/dist/esm/ic-link.entry.js +1 -1
  167. package/dist/esm/ic-menu-group.entry.js +1 -1
  168. package/dist/esm/ic-menu-item.entry.js +1 -1
  169. package/dist/esm/ic-navigation-button.entry.js +1 -1
  170. package/dist/esm/ic-navigation-group.entry.js +1 -1
  171. package/dist/esm/ic-navigation-item.entry.js +1 -1
  172. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  173. package/dist/esm/ic-page-header.entry.js +1 -1
  174. package/dist/esm/ic-pagination-item.entry.js +1 -1
  175. package/dist/esm/ic-pagination.entry.js +1 -1
  176. package/dist/esm/ic-popover-menu.entry.js +1 -1
  177. package/dist/esm/ic-radio-group.entry.js +1 -1
  178. package/dist/esm/ic-radio-option.entry.js +1 -1
  179. package/dist/esm/ic-search-bar.entry.js +1 -1
  180. package/dist/esm/ic-select.entry.js +1 -1
  181. package/dist/esm/ic-side-navigation.entry.js +1 -1
  182. package/dist/esm/ic-status-tag.entry.js +1 -1
  183. package/dist/esm/ic-step.entry.js +1 -1
  184. package/dist/esm/ic-stepper.entry.js +1 -1
  185. package/dist/esm/ic-switch.entry.js +1 -1
  186. package/dist/esm/ic-tab-group.entry.js +1 -1
  187. package/dist/esm/ic-tab-panel.entry.js +1 -1
  188. package/dist/esm/ic-tab.entry.js +1 -1
  189. package/dist/esm/ic-text-field.entry.js +2 -2
  190. package/dist/esm/ic-text-field.entry.js.map +1 -1
  191. package/dist/esm/ic-theme.entry.js +1 -1
  192. package/dist/esm/ic-toast.entry.js +1 -1
  193. package/dist/esm/ic-toggle-button-group.entry.js +27 -11
  194. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  195. package/dist/esm/ic-toggle-button.entry.js +51 -5
  196. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  197. package/dist/esm/ic-top-navigation.entry.js +1 -1
  198. package/dist/esm/ic-typography.entry.js +1 -1
  199. package/dist/esm/loader.js +1 -1
  200. package/dist/types/components/ic-toggle-button/ic-toggle-button.d.ts +3 -3
  201. package/dist/types/components/ic-toggle-button-group/ic-toggle-button-group.d.ts +4 -0
  202. package/dist/types/components.d.ts +4 -4
  203. package/dist/types/utils/helpers.d.ts +1 -0
  204. package/dist/types/utils/types.d.ts +1 -0
  205. package/hydrate/index.js +93 -22
  206. package/package.json +2 -2
  207. package/dist/cjs/helpers-50fa27f6.js.map +0 -1
  208. package/dist/core/p-3645c4e6.entry.js.map +0 -1
  209. package/dist/core/p-369ff74c.entry.js +0 -2
  210. package/dist/core/p-369ff74c.entry.js.map +0 -1
  211. package/dist/core/p-538f1bb9.entry.js +0 -2
  212. package/dist/core/p-538f1bb9.entry.js.map +0 -1
  213. package/dist/core/p-eafa4df2.js.map +0 -1
  214. package/dist/esm/helpers-8565b5c5.js.map +0 -1
  215. /package/dist/core/{p-2179e015.entry.js.map → p-076c3140.entry.js.map} +0 -0
  216. /package/dist/core/{p-27933dfe.entry.js.map → p-229523bc.entry.js.map} +0 -0
  217. /package/dist/core/{p-050e3e36.entry.js.map → p-28af4d8a.entry.js.map} +0 -0
  218. /package/dist/core/{p-7c0ff8cf.entry.js.map → p-333d1e79.entry.js.map} +0 -0
  219. /package/dist/core/{p-6d0c5a77.entry.js.map → p-3a1a7524.entry.js.map} +0 -0
  220. /package/dist/core/{p-7e546e88.entry.js.map → p-434fa633.entry.js.map} +0 -0
  221. /package/dist/core/{p-12bd8ade.entry.js.map → p-492c7e88.entry.js.map} +0 -0
  222. /package/dist/core/{p-353893b7.entry.js.map → p-4bdd6aad.entry.js.map} +0 -0
  223. /package/dist/core/{p-51990f23.entry.js.map → p-4e9a0efe.entry.js.map} +0 -0
  224. /package/dist/core/{p-7c39afb5.entry.js.map → p-50601f1e.entry.js.map} +0 -0
  225. /package/dist/core/{p-46dd7413.entry.js.map → p-537af2dd.entry.js.map} +0 -0
  226. /package/dist/core/{p-5479be2b.entry.js.map → p-54604d29.entry.js.map} +0 -0
  227. /package/dist/core/{p-6f16a69e.entry.js.map → p-5637b986.entry.js.map} +0 -0
  228. /package/dist/core/{p-a519e9a6.entry.js.map → p-56b5e33e.entry.js.map} +0 -0
  229. /package/dist/core/{p-3361ac8f.entry.js.map → p-5aa7dcae.entry.js.map} +0 -0
  230. /package/dist/core/{p-5b118dec.entry.js.map → p-5c5b0b12.entry.js.map} +0 -0
  231. /package/dist/core/{p-b052e67a.entry.js.map → p-6594d2df.entry.js.map} +0 -0
  232. /package/dist/core/{p-273f9b03.entry.js.map → p-67a75b77.entry.js.map} +0 -0
  233. /package/dist/core/{p-cae08ac2.entry.js.map → p-68046114.entry.js.map} +0 -0
  234. /package/dist/core/{p-5e694b17.entry.js.map → p-6c7836ff.entry.js.map} +0 -0
  235. /package/dist/core/{p-eb132c44.entry.js.map → p-74b8206f.entry.js.map} +0 -0
  236. /package/dist/core/{p-8dda6121.entry.js.map → p-7f05cc17.entry.js.map} +0 -0
  237. /package/dist/core/{p-f8890135.entry.js.map → p-81e8d7c5.entry.js.map} +0 -0
  238. /package/dist/core/{p-a25d535a.entry.js.map → p-840113b1.entry.js.map} +0 -0
  239. /package/dist/core/{p-13637d3f.entry.js.map → p-84c28c4d.entry.js.map} +0 -0
  240. /package/dist/core/{p-d6ce4473.entry.js.map → p-88fdd912.entry.js.map} +0 -0
  241. /package/dist/core/{p-5801598f.entry.js.map → p-8a66d8b0.entry.js.map} +0 -0
  242. /package/dist/core/{p-4e57c7ba.entry.js.map → p-8aceec77.entry.js.map} +0 -0
  243. /package/dist/core/{p-f1b7e4f4.entry.js.map → p-92e3c5a2.entry.js.map} +0 -0
  244. /package/dist/core/{p-5dcafe90.entry.js.map → p-98429cbe.entry.js.map} +0 -0
  245. /package/dist/core/{p-6331782f.entry.js.map → p-98963b03.entry.js.map} +0 -0
  246. /package/dist/core/{p-e9c078fa.entry.js.map → p-a3b00ec1.entry.js.map} +0 -0
  247. /package/dist/core/{p-7a16046a.entry.js.map → p-a4467032.entry.js.map} +0 -0
  248. /package/dist/core/{p-dcdfe5f9.entry.js.map → p-a6f25812.entry.js.map} +0 -0
  249. /package/dist/core/{p-2aca1bac.entry.js.map → p-ab14882b.entry.js.map} +0 -0
  250. /package/dist/core/{p-c68d98f8.entry.js.map → p-ac61fa48.entry.js.map} +0 -0
  251. /package/dist/core/{p-bafcbecc.entry.js.map → p-b468aa80.entry.js.map} +0 -0
  252. /package/dist/core/{p-5347f687.entry.js.map → p-cf5f427b.entry.js.map} +0 -0
  253. /package/dist/core/{p-6a5d58bc.entry.js.map → p-cfcb0c5b.entry.js.map} +0 -0
  254. /package/dist/core/{p-ebf2b874.entry.js.map → p-d41e5b62.entry.js.map} +0 -0
  255. /package/dist/core/{p-34e89ebf.entry.js.map → p-d7043445.entry.js.map} +0 -0
  256. /package/dist/core/{p-1425c78b.entry.js.map → p-e2de6dd4.entry.js.map} +0 -0
  257. /package/dist/core/{p-eec110a7.entry.js.map → p-e719ae4e.entry.js.map} +0 -0
  258. /package/dist/core/{p-16df8bcf.entry.js.map → p-ea71e89f.entry.js.map} +0 -0
  259. /package/dist/core/{p-9505b0f1.entry.js.map → p-ee0d4bf4.entry.js.map} +0 -0
  260. /package/dist/core/{p-30f91e2e.entry.js.map → p-f0e45316.entry.js.map} +0 -0
  261. /package/dist/core/{p-5d89525e.entry.js.map → p-f297c365.entry.js.map} +0 -0
  262. /package/dist/core/{p-08a82b71.entry.js.map → p-f61170f3.entry.js.map} +0 -0
  263. /package/dist/core/{p-bdbce1a0.entry.js.map → p-f7b71154.entry.js.map} +0 -0
  264. /package/dist/core/{p-1b1f7523.entry.js.map → p-fb7a9d6b.entry.js.map} +0 -0
@@ -1,11 +1,56 @@
1
1
  import { Host, h, } from "@stencil/core";
2
- import { isSlotUsed, onComponentRequiredPropUndefined, removeDisabledFalse, } from "../../utils/helpers";
2
+ import { isSlotUsed, onComponentRequiredPropUndefined, removeDisabledFalse, isSlottedInGroup, } from "../../utils/helpers";
3
3
  /**
4
4
  * @slot icon - Content will be displayed alongside the toggle button label.
5
5
  * @slot badge - Badge component overlaying the top right of the toggle button.
6
6
  */
7
7
  export class ToggleButton {
8
8
  constructor() {
9
+ this.loopAttributes = () => {
10
+ const trackedAttributes = [
11
+ "loading",
12
+ "disabled",
13
+ "full-width",
14
+ "icon-placement",
15
+ "variant",
16
+ "size",
17
+ "theme",
18
+ "monochrome",
19
+ ];
20
+ const parentAttributes = this.el.parentElement.attributes;
21
+ for (let i = 0; i < trackedAttributes.length; i++) {
22
+ if (parentAttributes.getNamedItem(trackedAttributes[i]) !== null) {
23
+ const attribute = parentAttributes.getNamedItem(trackedAttributes[i]);
24
+ switch (attribute.name) {
25
+ case trackedAttributes[0]:
26
+ this.loading = attribute.value !== "false";
27
+ break;
28
+ case trackedAttributes[1]:
29
+ console.log(attribute.value);
30
+ this.disabled = attribute.value !== "false";
31
+ break;
32
+ case trackedAttributes[2]:
33
+ this.fullWidth = attribute.value !== "false";
34
+ break;
35
+ case trackedAttributes[3]:
36
+ this.iconPlacement = attribute.value;
37
+ break;
38
+ case trackedAttributes[4]:
39
+ this.variant = attribute.value;
40
+ break;
41
+ case trackedAttributes[5]:
42
+ this.size = attribute.value;
43
+ break;
44
+ case trackedAttributes[6]:
45
+ this.theme = attribute.value;
46
+ break;
47
+ case trackedAttributes[7]:
48
+ this.monochrome = attribute.value !== "false";
49
+ break;
50
+ }
51
+ }
52
+ }
53
+ };
9
54
  this.handleFocus = (ev) => {
10
55
  ev.stopImmediatePropagation();
11
56
  };
@@ -20,7 +65,7 @@ export class ToggleButton {
20
65
  this.checked = false;
21
66
  this.disabled = false;
22
67
  this.fullWidth = false;
23
- this.iconPlacement = undefined;
68
+ this.iconPlacement = "left";
24
69
  this.label = undefined;
25
70
  this.loading = false;
26
71
  this.monochrome = false;
@@ -33,8 +78,9 @@ export class ToggleButton {
33
78
  }
34
79
  componentWillLoad() {
35
80
  removeDisabledFalse(this.disabled, this.el);
36
- const parentIconPlacement = this.el.parentElement.iconPlacement;
37
- this.iconPosition = this.iconPlacement || parentIconPlacement || "left";
81
+ if (isSlottedInGroup(this.el)) {
82
+ this.loopAttributes();
83
+ }
38
84
  }
39
85
  componentDidLoad() {
40
86
  onComponentRequiredPropUndefined([
@@ -62,7 +108,7 @@ export class ToggleButton {
62
108
  ["ic-toggle-button-loading"]: this.loading,
63
109
  ["ic-toggle-button-monochrome"]: this.monochrome,
64
110
  [`ic-theme-${this.theme}`]: this.theme !== "inherit",
65
- }, onFocus: this.handleFocus }, h("ic-button", { "aria-pressed": this.checked.toString(), variant: this.variant === "icon" ? "icon" : "secondary", onClick: this.handleClick, title: this.accessibleLabel, "aria-label": `${this.accessibleLabel ? this.accessibleLabel : this.label}, ${this.checked ? "ticked" : "unticked"}`, disabled: this.disabled, size: this.size, fullWidth: this.fullWidth, loading: this.loading, "aria-disabled": `${this.disabled}` }, this.variant !== "icon" && this.label, h("slot", null), isSlotUsed(this.el, "icon") && (h("slot", { name: "icon", slot: `${this.iconPosition}-icon` })), isSlotUsed(this.el, "badge") && (h("slot", { name: "badge", slot: "badge" })))));
111
+ }, onFocus: this.handleFocus }, h("ic-button", { "aria-pressed": this.checked.toString(), variant: this.variant === "icon" ? "icon" : "secondary", onClick: this.handleClick, title: this.accessibleLabel, "aria-label": `${this.accessibleLabel ? this.accessibleLabel : this.label}, ${this.checked ? "ticked" : "unticked"}`, disabled: this.disabled, size: this.size, fullWidth: this.fullWidth, loading: this.loading }, this.variant !== "icon" && this.label, h("slot", null), isSlotUsed(this.el, "icon") && (h("slot", { name: "icon", slot: `${this.iconPlacement}-icon` })), isSlotUsed(this.el, "badge") && (h("slot", { name: "badge", slot: "badge" })))));
66
112
  }
67
113
  static get is() { return "ic-toggle-button"; }
68
114
  static get encapsulation() { return "shadow"; }
@@ -116,7 +162,7 @@ export class ToggleButton {
116
162
  },
117
163
  "disabled": {
118
164
  "type": "boolean",
119
- "mutable": false,
165
+ "mutable": true,
120
166
  "complexType": {
121
167
  "original": "boolean",
122
168
  "resolved": "boolean",
@@ -134,7 +180,7 @@ export class ToggleButton {
134
180
  },
135
181
  "fullWidth": {
136
182
  "type": "boolean",
137
- "mutable": false,
183
+ "mutable": true,
138
184
  "complexType": {
139
185
  "original": "boolean",
140
186
  "resolved": "boolean",
@@ -154,9 +200,15 @@ export class ToggleButton {
154
200
  "type": "string",
155
201
  "mutable": false,
156
202
  "complexType": {
157
- "original": "\"left\" | \"right\" | \"top\"",
203
+ "original": "IcIconPlacementOptions",
158
204
  "resolved": "\"left\" | \"right\" | \"top\"",
159
- "references": {}
205
+ "references": {
206
+ "IcIconPlacementOptions": {
207
+ "location": "import",
208
+ "path": "../../utils/types",
209
+ "id": "src/utils/types.ts::IcIconPlacementOptions"
210
+ }
211
+ }
160
212
  },
161
213
  "required": false,
162
214
  "optional": true,
@@ -165,7 +217,8 @@ export class ToggleButton {
165
217
  "text": "The placement of the icon in relation to the toggle button label."
166
218
  },
167
219
  "attribute": "icon-placement",
168
- "reflect": false
220
+ "reflect": false,
221
+ "defaultValue": "\"left\""
169
222
  },
170
223
  "label": {
171
224
  "type": "string",
@@ -186,7 +239,7 @@ export class ToggleButton {
186
239
  },
187
240
  "loading": {
188
241
  "type": "boolean",
189
- "mutable": false,
242
+ "mutable": true,
190
243
  "complexType": {
191
244
  "original": "boolean",
192
245
  "resolved": "boolean",
@@ -204,7 +257,7 @@ export class ToggleButton {
204
257
  },
205
258
  "monochrome": {
206
259
  "type": "boolean",
207
- "mutable": false,
260
+ "mutable": true,
208
261
  "complexType": {
209
262
  "original": "boolean",
210
263
  "resolved": "boolean",
@@ -222,7 +275,7 @@ export class ToggleButton {
222
275
  },
223
276
  "size": {
224
277
  "type": "string",
225
- "mutable": false,
278
+ "mutable": true,
226
279
  "complexType": {
227
280
  "original": "IcSizes",
228
281
  "resolved": "\"large\" | \"medium\" | \"small\"",
@@ -246,7 +299,7 @@ export class ToggleButton {
246
299
  },
247
300
  "theme": {
248
301
  "type": "string",
249
- "mutable": false,
302
+ "mutable": true,
250
303
  "complexType": {
251
304
  "original": "IcThemeMode",
252
305
  "resolved": "\"dark\" | \"inherit\" | \"light\"",
@@ -270,7 +323,7 @@ export class ToggleButton {
270
323
  },
271
324
  "variant": {
272
325
  "type": "string",
273
- "mutable": false,
326
+ "mutable": true,
274
327
  "complexType": {
275
328
  "original": "\"default\" | \"icon\"",
276
329
  "resolved": "\"default\" | \"icon\"",
@@ -1 +1 @@
1
- {"version":3,"file":"ic-toggle-button.js","sourceRoot":"","sources":["../../../src/components/ic-toggle-button/ic-toggle-button.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,KAAK,EAEL,MAAM,EACN,CAAC,EACD,KAAK,GACN,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,UAAU,EACV,gCAAgC,EAChC,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B;;;GAGG;AASH,MAAM,OAAO,YAAY;;QAqGf,gBAAW,GAAG,CAAC,EAAc,EAAE,EAAE;YACvC,EAAE,CAAC,wBAAwB,EAAE,CAAC;QAChC,CAAC,CAAC;QAEM,gBAAW,GAAG,GAAS,EAAE;YAC/B,CAAC,IAAI,CAAC,OAAO;gBACX,CAAC,IAAI,CAAC,QAAQ;gBACd,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBACxB,OAAO,EAAE,IAAI,CAAC,OAAO;iBACtB,CAAC,CAAC;QACP,CAAC,CAAC;;uBAlGyD,KAAK;wBAKnC,KAAK;yBASJ,KAAK;;;uBAeP,KAAK;0BAKF,KAAK;oBAKX,QAAQ;qBAKH,SAAS;uBAKgB,SAAS;;IA1ChE,oBAAoB;QAClB,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IAiDD,iBAAiB;QACf,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5C,MAAM,mBAAmB,GACvB,IAAI,CAAC,EAAE,CAAC,aACT,CAAC,aAAa,CAAC;QAChB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,IAAI,mBAAmB,IAAI,MAAM,CAAC;IAC1E,CAAC;IAED,gBAAgB;QACd,gCAAgC,CAC9B;YACE;gBACE,IAAI,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK;gBACjE,QAAQ,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO;aACjE;SACF,EACD,eAAe,CAChB,CAAC;IACJ,CAAC;IAGD,eAAe,CAAC,CAAQ;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,CAAC,CAAC,wBAAwB,EAAE,CAAC;QAC/B,CAAC;aAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/B,CAAC;IACH,CAAC;IAcD,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,IACH,KAAK,EAAE;gBACL,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;gBACpD,CAAC,2BAA2B,CAAC,EAAE,IAAI,CAAC,QAAQ;gBAC5C,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC,OAAO;gBAC1C,CAAC,uBAAuB,CAAC,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM;gBAClD,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI;gBACvC,CAAC,0BAA0B,CAAC,EAAE,IAAI,CAAC,OAAO;gBAC1C,CAAC,6BAA6B,CAAC,EAAE,IAAI,CAAC,UAAU;gBAChD,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,KAAK,SAAS;aACrD,EACD,OAAO,EAAE,IAAI,CAAC,WAAW;YAEzB,iCACgB,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EACrC,OAAO,EAAE,IAAI,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EACvD,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,KAAK,EAAE,IAAI,CAAC,eAAe,gBACf,GACV,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KACrD,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,EAAE,EAC3C,QAAQ,EAAE,IAAI,CAAC,QAAQ,EACvB,IAAI,EAAE,IAAI,CAAC,IAAI,EACf,SAAS,EAAE,IAAI,CAAC,SAAS,EACzB,OAAO,EAAE,IAAI,CAAC,OAAO,mBACN,GAAG,IAAI,CAAC,QAAQ,EAAE;gBAEhC,IAAI,CAAC,OAAO,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK;gBACtC,eAAQ;gBACP,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,IAAI,CAC9B,YAAM,IAAI,EAAC,MAAM,EAAC,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,OAAO,GAAS,CAC7D;gBACA,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,CAC/B,YAAM,IAAI,EAAC,OAAO,EAAC,IAAI,EAAC,OAAO,GAAQ,CACxC,CACS,CACP,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Element,\n Host,\n Prop,\n Event,\n EventEmitter,\n Listen,\n h,\n Watch,\n} from \"@stencil/core\";\nimport {\n isSlotUsed,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport { IcSizes, IcThemeMode } from \"../../utils/types\";\n\n/**\n * @slot icon - Content will be displayed alongside the toggle button label.\n * @slot badge - Badge component overlaying the top right of the toggle button.\n */\n\n@Component({\n tag: \"ic-toggle-button\",\n styleUrl: \"ic-toggle-button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ToggleButton {\n private iconPosition: \"left\" | \"right\" | \"top\";\n\n @Element() el: HTMLIcToggleButtonElement;\n\n /**\n * The accessible label that will be applied to the toggle button. This is required for the icon variant of toggle buttons.\n */\n @Prop() accessibleLabel?: string;\n\n /**\n * If `true`, the toggle button will be in a checked state.\n */\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\n\n /**\n * If `true`, the toggle button will be in disabled state.\n */\n @Prop() disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the toggle button will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The placement of the icon in relation to the toggle button label.\n */\n @Prop() iconPlacement?: \"left\" | \"right\" | \"top\";\n\n /**\n * The label to display in the toggle button. This is required for the default variant of toggle buttons.\n */\n @Prop() label?: string;\n\n /**\n * If `true`, the toggle button will be in loading state.\n */\n @Prop() loading?: boolean = false;\n\n /**\n * If `true`, the toggle button will display as black in the light theme, and white in dark theme.\n */\n @Prop() monochrome?: boolean = false;\n\n /**\n * The size of the toggle button to be displayed.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The variant of the toggle button.\n */\n @Prop({ reflect: true }) variant: \"default\" | \"icon\" = \"default\";\n\n /**\n * Emitted when the user clicks a toggle button.\n */\n @Event() icToggleChecked: EventEmitter<{\n checked: boolean;\n }>;\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n\n const parentIconPlacement = (\n this.el.parentElement as HTMLIcToggleButtonGroupElement\n ).iconPlacement;\n this.iconPosition = this.iconPlacement || parentIconPlacement || \"left\";\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [\n {\n prop: this.variant === \"icon\" ? this.accessibleLabel : this.label,\n propName: this.variant === \"icon\" ? \"accessible-label\" : \"label\",\n },\n ],\n \"Toggle button\"\n );\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(e: Event): void {\n if (this.disabled) {\n e.stopImmediatePropagation();\n } else if (!this.loading) {\n this.checked = !this.checked;\n }\n }\n\n private handleFocus = (ev: FocusEvent) => {\n ev.stopImmediatePropagation();\n };\n\n private handleClick = (): void => {\n !this.loading &&\n !this.disabled &&\n this.icToggleChecked.emit({\n checked: this.checked,\n });\n };\n\n render() {\n return (\n <Host\n class={{\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n [\"ic-toggle-button-disabled\"]: this.disabled,\n [\"ic-toggle-button-checked\"]: this.checked,\n [\"ic-toggle-button-icon\"]: this.variant === \"icon\",\n [`ic-toggle-button-${this.size}`]: true,\n [\"ic-toggle-button-loading\"]: this.loading,\n [\"ic-toggle-button-monochrome\"]: this.monochrome,\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n }}\n onFocus={this.handleFocus}\n >\n <ic-button\n aria-pressed={this.checked.toString()}\n variant={this.variant === \"icon\" ? \"icon\" : \"secondary\"}\n onClick={this.handleClick}\n title={this.accessibleLabel}\n aria-label={`${\n this.accessibleLabel ? this.accessibleLabel : this.label\n }, ${this.checked ? \"ticked\" : \"unticked\"}`}\n disabled={this.disabled}\n size={this.size}\n fullWidth={this.fullWidth}\n loading={this.loading}\n aria-disabled={`${this.disabled}`}\n >\n {this.variant !== \"icon\" && this.label}\n <slot />\n {isSlotUsed(this.el, \"icon\") && (\n <slot name=\"icon\" slot={`${this.iconPosition}-icon`}></slot>\n )}\n {isSlotUsed(this.el, \"badge\") && (\n <slot name=\"badge\" slot=\"badge\"></slot>\n )}\n </ic-button>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-toggle-button.js","sourceRoot":"","sources":["../../../src/components/ic-toggle-button/ic-toggle-button.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n Prop,\n Event,\n EventEmitter,\n Listen,\n h,\n Watch,\n} from \"@stencil/core\";\nimport {\n isSlotUsed,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n isSlottedInGroup,\n} from \"../../utils/helpers\";\nimport {\n IcSizes,\n IcThemeMode,\n IcIconPlacementOptions,\n} from \"../../utils/types\";\n\n/**\n * @slot icon - Content will be displayed alongside the toggle button label.\n * @slot badge - Badge component overlaying the top right of the toggle button.\n */\n\n@Component({\n tag: \"ic-toggle-button\",\n styleUrl: \"ic-toggle-button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class ToggleButton {\n @Element() el: HTMLIcToggleButtonElement;\n\n /**\n * The accessible label that will be applied to the toggle button. This is required for the icon variant of toggle buttons.\n */\n @Prop() accessibleLabel?: string;\n\n /**\n * If `true`, the toggle button will be in a checked state.\n */\n @Prop({ mutable: true, reflect: true }) checked: boolean = false;\n\n /**\n * If `true`, the toggle button will be in disabled state.\n */\n @Prop({ mutable: true }) disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the toggle button will fill the width of the container.\n */\n @Prop({ mutable: true }) fullWidth?: boolean = false;\n\n /**\n * The placement of the icon in relation to the toggle button label.\n */\n @Prop() iconPlacement?: IcIconPlacementOptions = \"left\";\n\n /**\n * The label to display in the toggle button. This is required for the default variant of toggle buttons.\n */\n @Prop() label?: string;\n\n /**\n * If `true`, the toggle button will be in loading state.\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n /**\n * If `true`, the toggle button will display as black in the light theme, and white in dark theme.\n */\n @Prop({ mutable: true }) monochrome?: boolean = false;\n\n /**\n * The size of the toggle button to be displayed.\n */\n @Prop({ mutable: true }) size?: IcSizes = \"medium\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop({ mutable: true }) theme?: IcThemeMode = \"inherit\";\n\n /**\n * The variant of the toggle button.\n */\n @Prop({ reflect: true, mutable: true }) variant: \"default\" | \"icon\" =\n \"default\";\n\n /**\n * Emitted when the user clicks a toggle button.\n */\n @Event() icToggleChecked: EventEmitter<{\n checked: boolean;\n }>;\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n\n if (isSlottedInGroup(this.el)) {\n this.loopAttributes();\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [\n {\n prop: this.variant === \"icon\" ? this.accessibleLabel : this.label,\n propName: this.variant === \"icon\" ? \"accessible-label\" : \"label\",\n },\n ],\n \"Toggle button\"\n );\n }\n\n @Listen(\"click\", { capture: true })\n handleHostClick(e: Event): void {\n if (this.disabled) {\n e.stopImmediatePropagation();\n } else if (!this.loading) {\n this.checked = !this.checked;\n }\n }\n\n private loopAttributes = () => {\n const trackedAttributes: string[] = [\n \"loading\",\n \"disabled\",\n \"full-width\",\n \"icon-placement\",\n \"variant\",\n \"size\",\n \"theme\",\n \"monochrome\",\n ];\n const parentAttributes = this.el.parentElement.attributes;\n for (let i = 0; i < trackedAttributes.length; i++) {\n if (parentAttributes.getNamedItem(trackedAttributes[i]) !== null) {\n const attribute = parentAttributes.getNamedItem(trackedAttributes[i]);\n switch (attribute.name) {\n case trackedAttributes[0]:\n this.loading = attribute.value !== \"false\";\n break;\n case trackedAttributes[1]:\n console.log(attribute.value);\n this.disabled = attribute.value !== \"false\";\n break;\n case trackedAttributes[2]:\n this.fullWidth = attribute.value !== \"false\";\n break;\n case trackedAttributes[3]:\n this.iconPlacement = attribute.value as \"left\" | \"right\" | \"top\";\n break;\n case trackedAttributes[4]:\n this.variant = attribute.value as \"default\" | \"icon\";\n break;\n case trackedAttributes[5]:\n this.size = attribute.value as IcSizes;\n break;\n case trackedAttributes[6]:\n this.theme = attribute.value as IcThemeMode;\n break;\n case trackedAttributes[7]:\n this.monochrome = attribute.value !== \"false\";\n break;\n }\n }\n }\n };\n\n private handleFocus = (ev: FocusEvent) => {\n ev.stopImmediatePropagation();\n };\n\n private handleClick = (): void => {\n !this.loading &&\n !this.disabled &&\n this.icToggleChecked.emit({\n checked: this.checked,\n });\n };\n\n render() {\n return (\n <Host\n class={{\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n [\"ic-toggle-button-disabled\"]: this.disabled,\n [\"ic-toggle-button-checked\"]: this.checked,\n [\"ic-toggle-button-icon\"]: this.variant === \"icon\",\n [`ic-toggle-button-${this.size}`]: true,\n [\"ic-toggle-button-loading\"]: this.loading,\n [\"ic-toggle-button-monochrome\"]: this.monochrome,\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n }}\n onFocus={this.handleFocus}\n >\n <ic-button\n aria-pressed={this.checked.toString()}\n variant={this.variant === \"icon\" ? \"icon\" : \"secondary\"}\n onClick={this.handleClick}\n title={this.accessibleLabel}\n aria-label={`${\n this.accessibleLabel ? this.accessibleLabel : this.label\n }, ${this.checked ? \"ticked\" : \"unticked\"}`}\n disabled={this.disabled}\n size={this.size}\n fullWidth={this.fullWidth}\n loading={this.loading}\n >\n {this.variant !== \"icon\" && this.label}\n <slot />\n {isSlotUsed(this.el, \"icon\") && (\n <slot name=\"icon\" slot={`${this.iconPlacement}-icon`}></slot>\n )}\n {isSlotUsed(this.el, \"badge\") && (\n <slot name=\"badge\" slot=\"badge\"></slot>\n )}\n </ic-button>\n </Host>\n );\n }\n}\n"]}
@@ -100,16 +100,36 @@ export class ToggleButtonGroup {
100
100
  });
101
101
  removeDisabledFalse(this.disabled, this.el);
102
102
  }
103
+ watchFullWidthHandler() {
104
+ this.getAllToggleButtons().forEach((el) => {
105
+ el.fullWidth = this.fullWidth;
106
+ });
107
+ }
108
+ watchLoadingHandler() {
109
+ this.getAllToggleButtons().forEach((el) => {
110
+ el.loading = this.loading;
111
+ });
112
+ }
103
113
  watchMonochromeHandler() {
104
114
  this.getAllToggleButtons().forEach((el) => {
105
115
  el.monochrome = this.monochrome;
106
116
  });
107
117
  }
118
+ watchSizeHandler() {
119
+ this.getAllToggleButtons().forEach((el) => {
120
+ el.size = this.size;
121
+ });
122
+ }
108
123
  watchThemeHandler() {
109
124
  this.getAllToggleButtons().forEach((el) => {
110
125
  el.theme = this.theme;
111
126
  });
112
127
  }
128
+ watchVariantHandler() {
129
+ this.getAllToggleButtons().forEach((el) => {
130
+ el.variant = this.variant;
131
+ });
132
+ }
113
133
  selectHandler(ev, tabTarget) {
114
134
  const allToggles = this.getAllToggleButtons();
115
135
  let clickedToggle = ev.target;
@@ -149,14 +169,6 @@ export class ToggleButtonGroup {
149
169
  componentDidLoad() {
150
170
  this.getAllToggleButtons().forEach((el, i) => {
151
171
  this.setSlottedAria(el);
152
- el.size = this.size;
153
- el.loading = this.loading;
154
- el.iconPlacement = this.iconPlacement;
155
- el.disabled ? null : (el.disabled = this.disabled);
156
- el.theme = this.theme;
157
- el.monochrome = this.monochrome;
158
- el.variant = this.variant;
159
- el.fullWidth = this.fullWidth;
160
172
  el.id = i.toString();
161
173
  el.tabIndex = -1;
162
174
  el.addEventListener("keydown", (ev) => {
@@ -182,7 +194,7 @@ export class ToggleButtonGroup {
182
194
  return Array.from(this.el.querySelectorAll("ic-toggle-button"));
183
195
  }
184
196
  render() {
185
- return (h(Host, { role: "group", "aria-label": this.accessibleLabel, "aria-disabled": this.disabled ? "true" : "false", tabindex: 0, class: {
197
+ return (h(Host, { role: "group", "aria-label": this.accessibleLabel, tabindex: 0, class: {
186
198
  [`ic-theme-${this.theme}`]: this.theme !== "inherit",
187
199
  ["ic-toggle-button-group-full-width"]: this.fullWidth,
188
200
  ["ic-toggle-button-group-loading"]: this.loading,
@@ -462,12 +474,24 @@ export class ToggleButtonGroup {
462
474
  return [{
463
475
  "propName": "disabled",
464
476
  "methodName": "watchDisabledHandler"
477
+ }, {
478
+ "propName": "fullWidth",
479
+ "methodName": "watchFullWidthHandler"
480
+ }, {
481
+ "propName": "loading",
482
+ "methodName": "watchLoadingHandler"
465
483
  }, {
466
484
  "propName": "monochrome",
467
485
  "methodName": "watchMonochromeHandler"
486
+ }, {
487
+ "propName": "size",
488
+ "methodName": "watchSizeHandler"
468
489
  }, {
469
490
  "propName": "theme",
470
491
  "methodName": "watchThemeHandler"
492
+ }, {
493
+ "propName": "variant",
494
+ "methodName": "watchVariantHandler"
471
495
  }];
472
496
  }
473
497
  static get listeners() {
@@ -1 +1 @@
1
- {"version":3,"file":"ic-toggle-button-group.js","sourceRoot":"","sources":["../../../src/components/ic-toggle-button-group/ic-toggle-button-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n Listen,\n Element,\n Event,\n EventEmitter,\n State,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcSizes,\n IcSelectTypes,\n IcSelectMethodTypes,\n IcThemeMode,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-toggle-button-group.types\";\nimport { removeDisabledFalse } from \"../../utils/helpers\";\n\ninterface lastKey {\n key: string | null;\n shift: boolean;\n}\n\nconst TOGGLE_GROUP = \"IC-TOGGLE-BUTTON-GROUP\";\n\n@Component({\n tag: \"ic-toggle-button-group\",\n styleUrl: \"ic-toggle-button-group.css\",\n shadow: true,\n})\nexport class ToggleButtonGroup {\n @Element() el: HTMLIcToggleButtonGroupElement;\n\n @State() lastKeyPressed: lastKey = {\n key: null,\n shift: false,\n };\n\n /**\n * The accessible label of the toggle button group component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string = \"Toggle button group\";\n\n /**\n * If `true`, the toggle button group will be set to the disabled state.\n */\n @Prop() disabled: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.disabled = this.disabled;\n });\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the toggle button group will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The placement of the icons in relation to the toggle button labels.\n */\n @Prop() iconPlacement?: \"left\" | \"right\" | \"top\";\n\n /**\n * If `true`, the toggle button group will be in loading state.\n */\n @Prop() loading?: boolean = false;\n\n /**\n * If `true`, the toggle button group will display as black in the light theme, and white in dark theme.\n */\n @Prop() monochrome?: boolean = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.monochrome = this.monochrome;\n });\n }\n\n /**\n * If `auto`, controls are toggled automatically when navigated to. If `manual`, the controls must be actioned to change their toggled state. The value of this prop is ignored if `selectType` is set to`multi`.\n */\n @Prop({ mutable: true }) selectMethod?: IcSelectMethodTypes = \"manual\";\n\n /**\n * Sets whether single or multiple options can be toggled. If `multi`, then the `selectMethod` is always `manual`.\n */\n @Prop() selectType?: IcSelectTypes = \"single\";\n\n /**\n * The size of the toggle buttons to be displayed. This does not affect the font size of the accessible label.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n @Watch(\"theme\")\n watchThemeHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.theme = this.theme;\n });\n }\n\n /**\n * The variant of the toggle button.\n */\n @Prop({ reflect: true }) variant: \"default\" | \"icon\" = \"default\";\n\n /**\n * Emitted when a toggle button is selected.\n */\n @Event() icChange: EventEmitter<IcChangeEventDetail>;\n\n @Listen(\"icToggleChecked\")\n selectHandler(ev: CustomEvent, tabTarget?: HTMLIcToggleButtonElement): void {\n const allToggles = this.getAllToggleButtons();\n let clickedToggle = ev.target as HTMLIcToggleButtonElement;\n // tabTarget used in proxySelectHandler\n tabTarget && tabTarget.focus();\n if (this.selectType === \"single\") {\n if (!clickedToggle) {\n clickedToggle = tabTarget;\n }\n allToggles.forEach((el) => {\n if (el.id !== clickedToggle.id && el.checked) {\n el.checked = false;\n }\n });\n\n this.icChange.emit({\n checked: ev.detail.checked,\n selectedOption: clickedToggle,\n });\n } else {\n const toggledOptions = this.getAllToggleButtons().filter(\n (el) => el.checked && !el.disabled\n );\n\n this.icChange.emit({\n checked: toggledOptions.map((opt) => opt.checked),\n toggledOptions: toggledOptions.map((opt) => ({\n toggleButton: opt,\n })),\n selectedOption: clickedToggle,\n });\n }\n }\n\n componentWillLoad(): void {\n this.selectType === \"multi\" && (this.selectMethod = \"manual\");\n this.selectMethod === \"auto\" && this.selectType === \"single\";\n document.addEventListener(\"keydown\", this.keyListener);\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n this.getAllToggleButtons().forEach((el, i) => {\n this.setSlottedAria(el);\n el.size = this.size;\n el.loading = this.loading;\n el.iconPlacement = this.iconPlacement;\n el.disabled ? null : (el.disabled = this.disabled);\n el.theme = this.theme;\n el.monochrome = this.monochrome;\n el.variant = this.variant;\n el.fullWidth = this.fullWidth;\n el.id = i.toString();\n el.tabIndex = -1;\n el.addEventListener(\"keydown\", (ev) => {\n this.handleKeyDown(ev);\n });\n el.classList.add(\"expand-toggle-group-child\");\n });\n }\n\n disconnectedCallback(): void {\n document?.removeEventListener(\"keydown\", this.keyListener);\n }\n\n private keyListener = (ev: KeyboardEvent) => {\n this.lastKeyPressed = {\n key: ev.key,\n shift: ev.shiftKey,\n };\n };\n\n private setSlottedAria = (el: HTMLIcToggleButtonElement) => {\n const btn = el.shadowRoot\n .querySelector(\"ic-button\")\n .shadowRoot.querySelector(\"button\") as HTMLButtonElement;\n let aria = btn.getAttribute(\"aria-label\");\n aria += \", \";\n aria += this.accessibleLabel;\n btn.setAttribute(\"aria-label\", aria);\n };\n\n private handleHostFocus = (ev: FocusEvent): void => {\n if (this.loading || this.disabled) {\n return null;\n }\n const el = ev.target as HTMLIcToggleButtonGroupElement;\n const relEl = ev.relatedTarget as HTMLIcToggleButtonElement;\n const toggleButtons = Array.from(el.querySelectorAll(\"ic-toggle-button\"));\n if (\n ((toggleButtons.every((el) => !el.checked) ||\n this.selectType !== \"single\") &&\n this.lastKeyPressed.shift === false) ||\n (toggleButtons.every((el) => !el.checked) &&\n this.lastKeyPressed.shift === true &&\n relEl.tagName == TOGGLE_GROUP)\n ) {\n toggleButtons[0].focus();\n } else if (\n this.lastKeyPressed.shift === false ||\n (this.lastKeyPressed.shift === true && relEl.tagName == TOGGLE_GROUP)\n ) {\n // if checked is true and selectMethod is \"single\", focus that toggle\n const toggledButton = toggleButtons.filter((el) => el.checked);\n toggledButton[0].focus();\n }\n };\n\n // trigger selectHandler when unable to add 'target'\n private proxySelectHandler(toggle: HTMLIcToggleButtonElement): void {\n toggle.checked = true;\n const customEv = new CustomEvent(\"icToggleChecked\", {\n detail: {\n checked: toggle.checked,\n },\n });\n this.selectHandler(customEv, toggle);\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n const toggleButtonOptions = this.getAllToggleButtons();\n const focussedChild = toggleButtonOptions.indexOf(\n toggleButtonOptions.filter((el) => el === document.activeElement)[0]\n );\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.selectMethod === \"auto\"\n ? this.proxySelectHandler(\n toggleButtonOptions[this.getNextItemToSelect(focussedChild, true)]\n )\n : toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, true)\n ].focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.selectMethod === \"auto\"\n ? this.proxySelectHandler(\n toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, false)\n ]\n )\n : toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, false)\n ].focus();\n break;\n case \"Tab\":\n break;\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const toggleButtonOptions = this.getAllToggleButtons();\n const numToggles = toggleButtonOptions.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n if (nextItem < 0) {\n nextItem = numToggles;\n } else if (nextItem > numToggles) {\n nextItem = 0;\n }\n\n if (toggleButtonOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n private getAllToggleButtons(): HTMLIcToggleButtonElement[] {\n return Array.from(this.el.querySelectorAll(\"ic-toggle-button\"));\n }\n\n render() {\n return (\n <Host\n role=\"group\"\n aria-label={this.accessibleLabel}\n aria-disabled={this.disabled ? \"true\" : \"false\"}\n tabindex={0}\n class={{\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n [\"ic-toggle-button-group-full-width\"]: this.fullWidth,\n [\"ic-toggle-button-group-loading\"]: this.loading,\n [\"ic-toggle-button-group-disabled\"]: this.disabled,\n [`ic-toggle-button-group-monochrome`]: this.monochrome,\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n }}\n onFocus={this.handleHostFocus}\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-toggle-button-group.js","sourceRoot":"","sources":["../../../src/components/ic-toggle-button-group/ic-toggle-button-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Host,\n h,\n Prop,\n Listen,\n Element,\n Event,\n EventEmitter,\n State,\n Watch,\n} from \"@stencil/core\";\nimport {\n IcSizes,\n IcSelectTypes,\n IcSelectMethodTypes,\n IcThemeMode,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-toggle-button-group.types\";\nimport { removeDisabledFalse } from \"../../utils/helpers\";\n\ninterface lastKey {\n key: string | null;\n shift: boolean;\n}\n\nconst TOGGLE_GROUP = \"IC-TOGGLE-BUTTON-GROUP\";\n\n@Component({\n tag: \"ic-toggle-button-group\",\n styleUrl: \"ic-toggle-button-group.css\",\n shadow: true,\n})\nexport class ToggleButtonGroup {\n @Element() el: HTMLIcToggleButtonGroupElement;\n\n @State() lastKeyPressed: lastKey = {\n key: null,\n shift: false,\n };\n\n /**\n * The accessible label of the toggle button group component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string = \"Toggle button group\";\n\n /**\n * If `true`, the toggle button group will be set to the disabled state.\n */\n @Prop() disabled: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.disabled = this.disabled;\n });\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the toggle button group will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n @Watch(\"fullWidth\")\n watchFullWidthHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.fullWidth = this.fullWidth;\n });\n }\n\n /**\n * The placement of the icons in relation to the toggle button labels.\n */\n @Prop() iconPlacement?: \"left\" | \"right\" | \"top\";\n\n /**\n * If `true`, the toggle button group will be in loading state.\n */\n @Prop() loading?: boolean = false;\n @Watch(\"loading\")\n watchLoadingHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.loading = this.loading;\n });\n }\n\n /**\n * If `true`, the toggle button group will display as black in the light theme, and white in dark theme.\n */\n @Prop() monochrome?: boolean = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.monochrome = this.monochrome;\n });\n }\n\n /**\n * If `auto`, controls are toggled automatically when navigated to. If `manual`, the controls must be actioned to change their toggled state. The value of this prop is ignored if `selectType` is set to`multi`.\n */\n @Prop({ mutable: true }) selectMethod?: IcSelectMethodTypes = \"manual\";\n\n /**\n * Sets whether single or multiple options can be toggled. If `multi`, then the `selectMethod` is always `manual`.\n */\n @Prop() selectType?: IcSelectTypes = \"single\";\n\n /**\n * The size of the toggle buttons to be displayed. This does not affect the font size of the accessible label.\n */\n @Prop() size?: IcSizes = \"medium\";\n @Watch(\"size\")\n watchSizeHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.size = this.size;\n });\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n @Watch(\"theme\")\n watchThemeHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.theme = this.theme;\n });\n }\n\n /**\n * The variant of the toggle button.\n */\n @Prop({ reflect: true }) variant: \"default\" | \"icon\" = \"default\";\n @Watch(\"variant\")\n watchVariantHandler(): void {\n this.getAllToggleButtons().forEach((el) => {\n el.variant = this.variant;\n });\n }\n\n /**\n * Emitted when a toggle button is selected.\n */\n @Event() icChange: EventEmitter<IcChangeEventDetail>;\n\n @Listen(\"icToggleChecked\")\n selectHandler(ev: CustomEvent, tabTarget?: HTMLIcToggleButtonElement): void {\n const allToggles = this.getAllToggleButtons();\n let clickedToggle = ev.target as HTMLIcToggleButtonElement;\n // tabTarget used in proxySelectHandler\n tabTarget && tabTarget.focus();\n if (this.selectType === \"single\") {\n if (!clickedToggle) {\n clickedToggle = tabTarget;\n }\n allToggles.forEach((el) => {\n if (el.id !== clickedToggle.id && el.checked) {\n el.checked = false;\n }\n });\n\n this.icChange.emit({\n checked: ev.detail.checked,\n selectedOption: clickedToggle,\n });\n } else {\n const toggledOptions = this.getAllToggleButtons().filter(\n (el) => el.checked && !el.disabled\n );\n\n this.icChange.emit({\n checked: toggledOptions.map((opt) => opt.checked),\n toggledOptions: toggledOptions.map((opt) => ({\n toggleButton: opt,\n })),\n selectedOption: clickedToggle,\n });\n }\n }\n\n componentWillLoad(): void {\n this.selectType === \"multi\" && (this.selectMethod = \"manual\");\n this.selectMethod === \"auto\" && this.selectType === \"single\";\n document.addEventListener(\"keydown\", this.keyListener);\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n this.getAllToggleButtons().forEach((el, i) => {\n this.setSlottedAria(el);\n el.id = i.toString();\n el.tabIndex = -1;\n el.addEventListener(\"keydown\", (ev) => {\n this.handleKeyDown(ev);\n });\n el.classList.add(\"expand-toggle-group-child\");\n });\n }\n\n disconnectedCallback(): void {\n document?.removeEventListener(\"keydown\", this.keyListener);\n }\n\n private keyListener = (ev: KeyboardEvent) => {\n this.lastKeyPressed = {\n key: ev.key,\n shift: ev.shiftKey,\n };\n };\n\n private setSlottedAria = (el: HTMLIcToggleButtonElement) => {\n const btn = el.shadowRoot\n .querySelector(\"ic-button\")\n .shadowRoot.querySelector(\"button\") as HTMLButtonElement;\n let aria = btn.getAttribute(\"aria-label\");\n aria += \", \";\n aria += this.accessibleLabel;\n btn.setAttribute(\"aria-label\", aria);\n };\n\n private handleHostFocus = (ev: FocusEvent): void => {\n if (this.loading || this.disabled) {\n return null;\n }\n const el = ev.target as HTMLIcToggleButtonGroupElement;\n const relEl = ev.relatedTarget as HTMLIcToggleButtonElement;\n const toggleButtons = Array.from(el.querySelectorAll(\"ic-toggle-button\"));\n if (\n ((toggleButtons.every((el) => !el.checked) ||\n this.selectType !== \"single\") &&\n this.lastKeyPressed.shift === false) ||\n (toggleButtons.every((el) => !el.checked) &&\n this.lastKeyPressed.shift === true &&\n relEl.tagName == TOGGLE_GROUP)\n ) {\n toggleButtons[0].focus();\n } else if (\n this.lastKeyPressed.shift === false ||\n (this.lastKeyPressed.shift === true && relEl.tagName == TOGGLE_GROUP)\n ) {\n // if checked is true and selectMethod is \"single\", focus that toggle\n const toggledButton = toggleButtons.filter((el) => el.checked);\n toggledButton[0].focus();\n }\n };\n\n // trigger selectHandler when unable to add 'target'\n private proxySelectHandler(toggle: HTMLIcToggleButtonElement): void {\n toggle.checked = true;\n const customEv = new CustomEvent(\"icToggleChecked\", {\n detail: {\n checked: toggle.checked,\n },\n });\n this.selectHandler(customEv, toggle);\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n const toggleButtonOptions = this.getAllToggleButtons();\n const focussedChild = toggleButtonOptions.indexOf(\n toggleButtonOptions.filter((el) => el === document.activeElement)[0]\n );\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.selectMethod === \"auto\"\n ? this.proxySelectHandler(\n toggleButtonOptions[this.getNextItemToSelect(focussedChild, true)]\n )\n : toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, true)\n ].focus();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.selectMethod === \"auto\"\n ? this.proxySelectHandler(\n toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, false)\n ]\n )\n : toggleButtonOptions[\n this.getNextItemToSelect(focussedChild, false)\n ].focus();\n break;\n case \"Tab\":\n break;\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const toggleButtonOptions = this.getAllToggleButtons();\n const numToggles = toggleButtonOptions.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n if (nextItem < 0) {\n nextItem = numToggles;\n } else if (nextItem > numToggles) {\n nextItem = 0;\n }\n\n if (toggleButtonOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n private getAllToggleButtons(): HTMLIcToggleButtonElement[] {\n return Array.from(this.el.querySelectorAll(\"ic-toggle-button\"));\n }\n\n render() {\n return (\n <Host\n role=\"group\"\n aria-label={this.accessibleLabel}\n tabindex={0}\n class={{\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n [\"ic-toggle-button-group-full-width\"]: this.fullWidth,\n [\"ic-toggle-button-group-loading\"]: this.loading,\n [\"ic-toggle-button-group-disabled\"]: this.disabled,\n [`ic-toggle-button-group-monochrome`]: this.monochrome,\n [`ic-theme-${this.theme}`]: this.theme !== \"inherit\",\n }}\n onFocus={this.handleHostFocus}\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
@@ -16,15 +16,15 @@ describe("ic-toggle-button-group component snapshot tests", () => {
16
16
  </ic-toggle-button-group>`,
17
17
  });
18
18
  expect(page.root)
19
- .toEqualHtml(`<ic-toggle-button-group aria-disabled="true" aria-label="Toggle button group" class="ic-toggle-button-group-disabled" disabled="" role="group" select-type="single" tabindex="0" variant="default">
19
+ .toEqualHtml(`<ic-toggle-button-group aria-label="Toggle button group" class="ic-toggle-button-group-disabled" disabled="" role="group" select-type="single" tabindex="0" variant="default">
20
20
  <mock:shadow-root>
21
21
  <slot></slot>
22
22
  </mock:shadow-root>
23
23
  <ic-toggle-button class="expand-toggle-group-child ic-toggle-button-disabled ic-toggle-button-medium" id="0" label="Toggle" tabindex="-1" variant="default">
24
24
  <mock:shadow-root>
25
- <ic-button aria-disabled="true" aria-pressed="false" class="ic-button-disabled ic-button-size-medium ic-button-variant-secondary" exportparts="button">
25
+ <ic-button aria-pressed="false" class="ic-button-disabled ic-button-size-medium ic-button-variant-secondary" exportparts="button">
26
26
  <mock:shadow-root>
27
- <button aria-disabled="false" aria-label="Toggle, unticked, Toggle button group" class="button" disabled="" part="button" type="button">
27
+ <button aria-disabled="true" aria-label="Toggle, unticked, Toggle button group" class="button" disabled="" part="button" type="button">
28
28
  <slot></slot>
29
29
  </button>
30
30
  </mock:shadow-root>
@@ -35,9 +35,9 @@ describe("ic-toggle-button-group component snapshot tests", () => {
35
35
  </ic-toggle-button>
36
36
  <ic-toggle-button class="expand-toggle-group-child ic-toggle-button-disabled ic-toggle-button-medium" id="1" label="Toggle" tabindex="-1" variant="default">
37
37
  <mock:shadow-root>
38
- <ic-button aria-disabled="true" aria-pressed="false" class="ic-button-disabled ic-button-size-medium ic-button-variant-secondary" exportparts="button">
38
+ <ic-button aria-pressed="false" class="ic-button-disabled ic-button-size-medium ic-button-variant-secondary" exportparts="button">
39
39
  <mock:shadow-root>
40
- <button aria-disabled="false" aria-label="Toggle, unticked, Toggle button group" class="button" disabled="" part="button" type="button">
40
+ <button aria-disabled="true" aria-label="Toggle, unticked, Toggle button group" class="button" disabled="" part="button" type="button">
41
41
  <slot></slot>
42
42
  </button>
43
43
  </mock:shadow-root>
@@ -48,9 +48,9 @@ describe("ic-toggle-button-group component snapshot tests", () => {
48
48
  </ic-toggle-button>
49
49
  <ic-toggle-button class="expand-toggle-group-child ic-toggle-button-disabled ic-toggle-button-medium" id="2" label="Toggle" tabindex="-1" variant="default">
50
50
  <mock:shadow-root>
51
- <ic-button aria-disabled="true" aria-pressed="false" class="ic-button-disabled ic-button-size-medium ic-button-variant-secondary" exportparts="button">
51
+ <ic-button aria-pressed="false" class="ic-button-disabled ic-button-size-medium ic-button-variant-secondary" exportparts="button">
52
52
  <mock:shadow-root>
53
- <button aria-disabled="false" aria-label="Toggle, unticked, Toggle button group" class="button" disabled="" part="button" type="button">
53
+ <button aria-disabled="true" aria-label="Toggle, unticked, Toggle button group" class="button" disabled="" part="button" type="button">
54
54
  <slot></slot>
55
55
  </button>
56
56
  </mock:shadow-root>
@@ -63,15 +63,15 @@ describe("ic-toggle-button-group component snapshot tests", () => {
63
63
  page.rootInstance.disabled = false;
64
64
  await page.waitForChanges();
65
65
  expect(page.root)
66
- .toEqualHtml(`<ic-toggle-button-group aria-disabled="false" aria-label="Toggle button group" role="group" select-type="single" tabindex="0" variant="default">
66
+ .toEqualHtml(`<ic-toggle-button-group aria-label="Toggle button group" role="group" select-type="single" tabindex="0" variant="default">
67
67
  <mock:shadow-root>
68
68
  <slot></slot>
69
69
  </mock:shadow-root>
70
70
  <ic-toggle-button class="expand-toggle-group-child ic-toggle-button-medium" id="0" label="Toggle" tabindex="-1" variant="default">
71
71
  <mock:shadow-root>
72
- <ic-button aria-disabled="false" aria-pressed="false" class="ic-button-size-medium ic-button-variant-secondary" exportparts="button">
72
+ <ic-button aria-pressed="false" class="ic-button-size-medium ic-button-variant-secondary" exportparts="button">
73
73
  <mock:shadow-root>
74
- <button aria-disabled="false" aria-label="Toggle, unticked, Toggle button group" class="button" part="button" type="button">
74
+ <button aria-label="Toggle, unticked, Toggle button group" class="button" part="button" type="button">
75
75
  <slot></slot>
76
76
  </button>
77
77
  </mock:shadow-root>
@@ -82,9 +82,9 @@ describe("ic-toggle-button-group component snapshot tests", () => {
82
82
  </ic-toggle-button>
83
83
  <ic-toggle-button class="expand-toggle-group-child ic-toggle-button-medium" id="1" label="Toggle" tabindex="-1" variant="default">
84
84
  <mock:shadow-root>
85
- <ic-button aria-disabled="false" aria-pressed="false" class="ic-button-size-medium ic-button-variant-secondary" exportparts="button">
85
+ <ic-button aria-pressed="false" class="ic-button-size-medium ic-button-variant-secondary" exportparts="button">
86
86
  <mock:shadow-root>
87
- <button aria-disabled="false" aria-label="Toggle, unticked, Toggle button group" class="button" part="button" type="button">
87
+ <button aria-label="Toggle, unticked, Toggle button group" class="button" part="button" type="button">
88
88
  <slot></slot>
89
89
  </button>
90
90
  </mock:shadow-root>
@@ -95,9 +95,9 @@ describe("ic-toggle-button-group component snapshot tests", () => {
95
95
  </ic-toggle-button>
96
96
  <ic-toggle-button class="expand-toggle-group-child ic-toggle-button-medium" id="2" label="Toggle" tabindex="-1" variant="default">
97
97
  <mock:shadow-root>
98
- <ic-button aria-disabled="false" aria-pressed="false" class="ic-button-size-medium ic-button-variant-secondary" exportparts="button">
98
+ <ic-button aria-pressed="false" class="ic-button-size-medium ic-button-variant-secondary" exportparts="button">
99
99
  <mock:shadow-root>
100
- <button aria-disabled="false" aria-label="Toggle, unticked, Toggle button group" class="button" part="button" type="button">
100
+ <button aria-label="Toggle, unticked, Toggle button group" class="button" part="button" type="button">
101
101
  <slot></slot>
102
102
  </button>
103
103
  </mock:shadow-root>
@@ -108,6 +108,71 @@ describe("ic-toggle-button-group component snapshot tests", () => {
108
108
  </ic-toggle-button>
109
109
  </ic-toggle-button-group>`);
110
110
  });
111
+ it("should render and update full-width", async () => {
112
+ const page = await newSpecPage({
113
+ components: [ToggleButtonGroup, ToggleButton, Button],
114
+ html: `<ic-toggle-button-group select-type="single" full-width>
115
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
116
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
117
+ </ic-toggle-button-group>`,
118
+ });
119
+ expect(page.root).toMatchSnapshot();
120
+ page.rootInstance.fullWidth = false;
121
+ await page.waitForChanges();
122
+ expect(page.root).toMatchSnapshot();
123
+ });
124
+ it("should render and update loading", async () => {
125
+ const page = await newSpecPage({
126
+ components: [ToggleButtonGroup, ToggleButton, Button],
127
+ html: `<ic-toggle-button-group select-type="single" loading>
128
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
129
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
130
+ </ic-toggle-button-group>`,
131
+ });
132
+ expect(page.root).toMatchSnapshot();
133
+ page.rootInstance.loading = false;
134
+ await page.waitForChanges();
135
+ expect(page.root).toMatchSnapshot();
136
+ });
137
+ it("should render and update monochrome", async () => {
138
+ const page = await newSpecPage({
139
+ components: [ToggleButtonGroup, ToggleButton, Button],
140
+ html: `<ic-toggle-button-group select-type="single" monochrome>
141
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
142
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
143
+ </ic-toggle-button-group>`,
144
+ });
145
+ expect(page.root).toMatchSnapshot();
146
+ page.rootInstance.monochrome = false;
147
+ await page.waitForChanges();
148
+ expect(page.root).toMatchSnapshot();
149
+ });
150
+ it("should render and update size", async () => {
151
+ const page = await newSpecPage({
152
+ components: [ToggleButtonGroup, ToggleButton, Button],
153
+ html: `<ic-toggle-button-group select-type="single" size="small">
154
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
155
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
156
+ </ic-toggle-button-group>`,
157
+ });
158
+ expect(page.root).toMatchSnapshot();
159
+ page.rootInstance.size = "large";
160
+ await page.waitForChanges();
161
+ expect(page.root).toMatchSnapshot();
162
+ });
163
+ it("should render and update variant", async () => {
164
+ const page = await newSpecPage({
165
+ components: [ToggleButtonGroup, ToggleButton, Button],
166
+ html: `<ic-toggle-button-group select-type="single" variant="icon">
167
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
168
+ <ic-toggle-button label="Toggle"></ic-toggle-button>
169
+ </ic-toggle-button-group>`,
170
+ });
171
+ expect(page.root).toMatchSnapshot();
172
+ page.rootInstance.variant = "default";
173
+ await page.waitForChanges();
174
+ expect(page.root).toMatchSnapshot();
175
+ });
111
176
  });
112
177
  describe("ic-toggle-button-group component unit tests", () => {
113
178
  it("should getAllToggleButtons and return an array of slotted ic-toggle-buttons", async () => {