@ukic/web-components 3.0.0-alpha.3 → 3.0.0-alpha.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (447) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/helpers-69219f14.js.map +1 -1
  3. package/dist/cjs/ic-accordion-group.cjs.entry.js +9 -9
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +4 -4
  6. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-alert.cjs.entry.js +6 -4
  8. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-card-vertical.cjs.entry.js +21 -23
  10. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-checkbox-group.cjs.entry.js +15 -4
  12. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-checkbox.cjs.entry.js +4 -2
  14. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-dialog.cjs.entry.js +3 -1
  18. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-divider.cjs.entry.js +70 -6
  20. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +3 -2
  30. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +5 -4
  32. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-input-label_2.cjs.entry.js +2 -2
  34. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-menu-item.cjs.entry.js +9 -9
  38. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  40. package/dist/cjs/ic-navigation-group.cjs.entry.js +3 -2
  41. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-navigation-item.cjs.entry.js +28 -1
  43. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-pagination-item.cjs.entry.js +7 -10
  45. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-pagination.cjs.entry.js +36 -14
  47. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-popover-menu.cjs.entry.js +3 -3
  49. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-radio-group.cjs.entry.js +13 -4
  51. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-radio-option.cjs.entry.js +7 -3
  53. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ic-search-bar.cjs.entry.js +11 -8
  55. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-side-navigation.cjs.entry.js +3 -2
  58. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-tab-context.cjs.entry.js +2 -1
  60. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-text-field.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-toast.cjs.entry.js +2 -2
  64. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +1 -1
  66. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  67. package/dist/cjs/loader.cjs.js +1 -1
  68. package/dist/collection/ag-theme-icds.css +217 -0
  69. package/dist/collection/collection-manifest.json +1 -1
  70. package/dist/collection/components/ic-accordion/ic-accordion.css +21 -19
  71. package/dist/collection/components/ic-accordion/ic-accordion.js +27 -30
  72. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  73. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +3 -3
  74. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -1
  75. package/dist/collection/components/ic-accordion-group/ic-accordion-group.css +2 -12
  76. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js +18 -18
  77. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -1
  78. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js +3 -3
  79. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js.map +1 -1
  80. package/dist/collection/components/ic-alert/ic-alert.css +22 -17
  81. package/dist/collection/components/ic-alert/ic-alert.js +48 -22
  82. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  83. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js +1 -1
  84. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js.map +1 -1
  85. package/dist/collection/components/ic-card-vertical/ic-card-vertical.css +98 -114
  86. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js +46 -24
  87. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js.map +1 -1
  88. package/dist/collection/components/ic-checkbox/ic-checkbox.css +42 -39
  89. package/dist/collection/components/ic-checkbox/ic-checkbox.js +28 -2
  90. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  91. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.css +15 -2
  92. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +39 -2
  93. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  94. package/dist/collection/components/ic-classification-banner/ic-classification-banner.css +13 -25
  95. package/dist/collection/components/ic-dialog/ic-dialog.css +16 -3
  96. package/dist/collection/components/ic-dialog/ic-dialog.js +26 -0
  97. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  98. package/dist/collection/components/ic-divider/ic-divider.css +341 -4
  99. package/dist/collection/components/ic-divider/ic-divider.js +235 -8
  100. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  101. package/dist/collection/components/ic-divider/ic-divider.types.js +2 -0
  102. package/dist/collection/components/ic-divider/ic-divider.types.js.map +1 -0
  103. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js +89 -4
  104. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js.map +1 -1
  105. package/dist/collection/components/ic-footer/ic-footer.css +20 -19
  106. package/dist/collection/components/ic-footer-link/ic-footer-link.css +2 -2
  107. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.css +9 -21
  108. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  109. package/dist/collection/components/ic-hero/ic-hero.css +17 -2
  110. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +3 -2
  111. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  112. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +4 -2
  113. package/dist/collection/components/ic-input-label/ic-input-label.css +12 -1
  114. package/dist/collection/components/ic-input-validation/ic-input-validation.css +5 -1
  115. package/dist/collection/components/ic-menu/ic-menu.css +9 -5
  116. package/dist/collection/components/ic-menu/ic-menu.js +3 -2
  117. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  118. package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
  119. package/dist/collection/components/ic-menu-group/ic-menu-group.js.map +1 -1
  120. package/dist/collection/components/ic-menu-item/ic-menu-item.js +11 -11
  121. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  122. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js +1 -1
  123. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js.map +1 -1
  124. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  125. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +3 -2
  126. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  127. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +31 -3
  128. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  129. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +12 -0
  130. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  131. package/dist/collection/components/ic-pagination/ic-pagination.css +15 -0
  132. package/dist/collection/components/ic-pagination/ic-pagination.js +77 -37
  133. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  134. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +1 -1
  135. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  136. package/dist/collection/components/ic-pagination-item/ic-pagination-item.css +26 -6
  137. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +48 -33
  138. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  139. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +3 -3
  140. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  141. package/dist/collection/components/ic-radio-group/ic-radio-group.css +17 -1
  142. package/dist/collection/components/ic-radio-group/ic-radio-group.js +37 -2
  143. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  144. package/dist/collection/components/ic-radio-option/ic-radio-option.css +34 -25
  145. package/dist/collection/components/ic-radio-option/ic-radio-option.js +30 -2
  146. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  147. package/dist/collection/components/ic-search-bar/ic-search-bar.css +40 -5
  148. package/dist/collection/components/ic-search-bar/ic-search-bar.js +34 -7
  149. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  150. package/dist/collection/components/ic-select/ic-select.css +1 -0
  151. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +0 -1
  152. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +2 -1
  153. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  154. package/dist/collection/components/ic-tab-context/ic-tab-context.js +2 -1
  155. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  156. package/dist/collection/components/ic-text-field/ic-text-field.css +6 -4
  157. package/dist/collection/components/ic-toast/ic-toast.css +25 -16
  158. package/dist/collection/components/ic-toast/ic-toast.js +1 -2
  159. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  160. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +12 -12
  161. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  162. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +1 -1
  163. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
  164. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js +1 -0
  165. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js.map +1 -1
  166. package/dist/collection/utils/helpers.js.map +1 -1
  167. package/dist/components/helpers.js.map +1 -1
  168. package/dist/components/ic-accordion-group.js +11 -11
  169. package/dist/components/ic-accordion-group.js.map +1 -1
  170. package/dist/components/ic-accordion.js +5 -5
  171. package/dist/components/ic-accordion.js.map +1 -1
  172. package/dist/components/ic-alert.js +8 -5
  173. package/dist/components/ic-alert.js.map +1 -1
  174. package/dist/components/ic-card-vertical.js +23 -24
  175. package/dist/components/ic-card-vertical.js.map +1 -1
  176. package/dist/components/ic-checkbox-group.js +18 -5
  177. package/dist/components/ic-checkbox-group.js.map +1 -1
  178. package/dist/components/ic-checkbox.js +5 -2
  179. package/dist/components/ic-checkbox.js.map +1 -1
  180. package/dist/components/ic-classification-banner.js +1 -1
  181. package/dist/components/ic-classification-banner.js.map +1 -1
  182. package/dist/components/ic-dialog.js +4 -1
  183. package/dist/components/ic-dialog.js.map +1 -1
  184. package/dist/components/ic-divider2.js +86 -9
  185. package/dist/components/ic-divider2.js.map +1 -1
  186. package/dist/components/ic-footer-link-group.js +1 -1
  187. package/dist/components/ic-footer-link-group.js.map +1 -1
  188. package/dist/components/ic-footer-link.js +1 -1
  189. package/dist/components/ic-footer-link.js.map +1 -1
  190. package/dist/components/ic-footer.js +1 -1
  191. package/dist/components/ic-footer.js.map +1 -1
  192. package/dist/components/ic-hero.js +1 -1
  193. package/dist/components/ic-hero.js.map +1 -1
  194. package/dist/components/ic-horizontal-scroll2.js +3 -2
  195. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  196. package/dist/components/ic-input-component-container2.js +1 -1
  197. package/dist/components/ic-input-component-container2.js.map +1 -1
  198. package/dist/components/ic-input-label2.js +1 -1
  199. package/dist/components/ic-input-label2.js.map +1 -1
  200. package/dist/components/ic-input-validation2.js +1 -1
  201. package/dist/components/ic-input-validation2.js.map +1 -1
  202. package/dist/components/ic-menu-group.js +1 -1
  203. package/dist/components/ic-menu-group.js.map +1 -1
  204. package/dist/components/ic-menu-item2.js +10 -10
  205. package/dist/components/ic-menu-item2.js.map +1 -1
  206. package/dist/components/ic-menu2.js +4 -3
  207. package/dist/components/ic-menu2.js.map +1 -1
  208. package/dist/components/ic-navigation-button.js.map +1 -1
  209. package/dist/components/ic-navigation-group.js +3 -2
  210. package/dist/components/ic-navigation-group.js.map +1 -1
  211. package/dist/components/ic-navigation-item.js +30 -2
  212. package/dist/components/ic-navigation-item.js.map +1 -1
  213. package/dist/components/ic-pagination-item2.js +9 -11
  214. package/dist/components/ic-pagination-item2.js.map +1 -1
  215. package/dist/components/ic-pagination.js +38 -15
  216. package/dist/components/ic-pagination.js.map +1 -1
  217. package/dist/components/ic-popover-menu.js +3 -3
  218. package/dist/components/ic-popover-menu.js.map +1 -1
  219. package/dist/components/ic-radio-group.js +16 -5
  220. package/dist/components/ic-radio-group.js.map +1 -1
  221. package/dist/components/ic-radio-option.js +8 -3
  222. package/dist/components/ic-radio-option.js.map +1 -1
  223. package/dist/components/ic-search-bar.js +12 -8
  224. package/dist/components/ic-search-bar.js.map +1 -1
  225. package/dist/components/ic-select.js.map +1 -1
  226. package/dist/components/ic-side-navigation.js +3 -2
  227. package/dist/components/ic-side-navigation.js.map +1 -1
  228. package/dist/components/ic-tab-context.js +2 -1
  229. package/dist/components/ic-tab-context.js.map +1 -1
  230. package/dist/components/ic-text-field2.js +1 -1
  231. package/dist/components/ic-text-field2.js.map +1 -1
  232. package/dist/components/ic-toast.js +3 -3
  233. package/dist/components/ic-toast.js.map +1 -1
  234. package/dist/components/ic-toggle-button-group.js +1 -1
  235. package/dist/components/ic-toggle-button-group.js.map +1 -1
  236. package/dist/core/ag-theme-icds.css +217 -0
  237. package/dist/core/core.css +125 -13
  238. package/dist/core/core.esm.js +1 -1
  239. package/dist/core/core.esm.js.map +1 -1
  240. package/dist/core/{p-43256b7c.entry.js → p-13d5875c.entry.js} +2 -2
  241. package/dist/core/p-13d5875c.entry.js.map +1 -0
  242. package/dist/core/p-19872973.entry.js +2 -0
  243. package/dist/core/p-19872973.entry.js.map +1 -0
  244. package/dist/core/p-2140431c.entry.js +2 -0
  245. package/dist/core/p-2140431c.entry.js.map +1 -0
  246. package/dist/core/p-29767574.entry.js +2 -0
  247. package/dist/core/p-29767574.entry.js.map +1 -0
  248. package/dist/core/p-2e909738.entry.js +2 -0
  249. package/dist/core/p-2e909738.entry.js.map +1 -0
  250. package/dist/core/p-2eae9b27.entry.js.map +1 -1
  251. package/dist/core/p-2ef46ead.entry.js +2 -0
  252. package/dist/core/p-2ef46ead.entry.js.map +1 -0
  253. package/dist/core/{p-14dfd8db.entry.js → p-428f95f8.entry.js} +2 -2
  254. package/dist/core/{p-14dfd8db.entry.js.map → p-428f95f8.entry.js.map} +1 -1
  255. package/dist/core/p-4973c563.entry.js +2 -0
  256. package/dist/core/p-4973c563.entry.js.map +1 -0
  257. package/dist/core/p-5f4a6555.entry.js +2 -0
  258. package/dist/core/p-5f4a6555.entry.js.map +1 -0
  259. package/dist/core/p-605c0c92.entry.js +2 -0
  260. package/dist/core/p-605c0c92.entry.js.map +1 -0
  261. package/dist/core/p-655a9e0f.entry.js +2 -0
  262. package/dist/core/p-655a9e0f.entry.js.map +1 -0
  263. package/dist/core/p-65a16de9.entry.js +2 -0
  264. package/dist/core/p-65a16de9.entry.js.map +1 -0
  265. package/dist/core/p-705eb610.entry.js +2 -0
  266. package/dist/core/p-705eb610.entry.js.map +1 -0
  267. package/dist/core/p-78c1f1cc.entry.js +2 -0
  268. package/dist/core/p-78c1f1cc.entry.js.map +1 -0
  269. package/dist/core/p-7bff1e96.entry.js +2 -0
  270. package/dist/core/p-7bff1e96.entry.js.map +1 -0
  271. package/dist/core/{p-726673ee.entry.js → p-806a0fab.entry.js} +2 -2
  272. package/dist/core/p-806a0fab.entry.js.map +1 -0
  273. package/dist/core/p-85173458.entry.js +2 -0
  274. package/dist/core/p-85173458.entry.js.map +1 -0
  275. package/dist/core/{p-b01ffa55.entry.js → p-96b4ca6e.entry.js} +2 -2
  276. package/dist/core/p-96b4ca6e.entry.js.map +1 -0
  277. package/dist/core/p-979c2792.entry.js +2 -0
  278. package/dist/core/p-979c2792.entry.js.map +1 -0
  279. package/dist/core/p-9ec7f96c.entry.js +2 -0
  280. package/dist/core/p-9ec7f96c.entry.js.map +1 -0
  281. package/dist/core/{p-f60dbd0e.entry.js → p-9fa93dfe.entry.js} +2 -2
  282. package/dist/core/p-9fa93dfe.entry.js.map +1 -0
  283. package/dist/core/p-a9341313.entry.js +2 -0
  284. package/dist/core/p-a9341313.entry.js.map +1 -0
  285. package/dist/core/{p-31fc8756.entry.js → p-ae0775aa.entry.js} +2 -2
  286. package/dist/core/p-ae0775aa.entry.js.map +1 -0
  287. package/dist/core/p-b7eb8ef9.js.map +1 -1
  288. package/dist/core/p-bbeb03ef.entry.js +2 -0
  289. package/dist/core/p-bbeb03ef.entry.js.map +1 -0
  290. package/dist/core/p-cedc375e.entry.js +2 -0
  291. package/dist/core/p-cedc375e.entry.js.map +1 -0
  292. package/dist/core/{p-dd36bf1b.entry.js → p-d4a83e25.entry.js} +2 -2
  293. package/dist/core/p-d4a83e25.entry.js.map +1 -0
  294. package/dist/core/{p-b78f8b8c.entry.js → p-d93bac01.entry.js} +2 -2
  295. package/dist/core/p-d93bac01.entry.js.map +1 -0
  296. package/dist/core/{p-50ead56c.entry.js → p-df957570.entry.js} +2 -2
  297. package/dist/core/p-df957570.entry.js.map +1 -0
  298. package/dist/core/p-ebafab37.entry.js.map +1 -1
  299. package/dist/core/p-ef78bebc.entry.js +2 -0
  300. package/dist/core/p-ef78bebc.entry.js.map +1 -0
  301. package/dist/core/p-f0ae2b99.entry.js +2 -0
  302. package/dist/core/p-f0ae2b99.entry.js.map +1 -0
  303. package/dist/core/p-fdd0b732.entry.js +2 -0
  304. package/dist/core/p-fdd0b732.entry.js.map +1 -0
  305. package/dist/esm/core.js +1 -1
  306. package/dist/esm/helpers-e8797e8d.js.map +1 -1
  307. package/dist/esm/ic-accordion-group.entry.js +9 -9
  308. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  309. package/dist/esm/ic-accordion.entry.js +4 -4
  310. package/dist/esm/ic-accordion.entry.js.map +1 -1
  311. package/dist/esm/ic-alert.entry.js +6 -4
  312. package/dist/esm/ic-alert.entry.js.map +1 -1
  313. package/dist/esm/ic-card-vertical.entry.js +22 -24
  314. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  315. package/dist/esm/ic-checkbox-group.entry.js +15 -4
  316. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  317. package/dist/esm/ic-checkbox.entry.js +4 -2
  318. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  319. package/dist/esm/ic-classification-banner.entry.js +1 -1
  320. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  321. package/dist/esm/ic-dialog.entry.js +3 -1
  322. package/dist/esm/ic-dialog.entry.js.map +1 -1
  323. package/dist/esm/ic-divider.entry.js +72 -8
  324. package/dist/esm/ic-divider.entry.js.map +1 -1
  325. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  326. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  327. package/dist/esm/ic-footer-link.entry.js +1 -1
  328. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  329. package/dist/esm/ic-footer.entry.js +1 -1
  330. package/dist/esm/ic-footer.entry.js.map +1 -1
  331. package/dist/esm/ic-hero.entry.js +1 -1
  332. package/dist/esm/ic-hero.entry.js.map +1 -1
  333. package/dist/esm/ic-horizontal-scroll.entry.js +3 -2
  334. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  335. package/dist/esm/ic-input-component-container_3.entry.js +5 -4
  336. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  337. package/dist/esm/ic-input-label_2.entry.js +2 -2
  338. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  339. package/dist/esm/ic-menu-group.entry.js +1 -1
  340. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  341. package/dist/esm/ic-menu-item.entry.js +9 -9
  342. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  343. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  344. package/dist/esm/ic-navigation-group.entry.js +3 -2
  345. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  346. package/dist/esm/ic-navigation-item.entry.js +29 -2
  347. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  348. package/dist/esm/ic-pagination-item.entry.js +7 -10
  349. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  350. package/dist/esm/ic-pagination.entry.js +36 -14
  351. package/dist/esm/ic-pagination.entry.js.map +1 -1
  352. package/dist/esm/ic-popover-menu.entry.js +3 -3
  353. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  354. package/dist/esm/ic-radio-group.entry.js +13 -4
  355. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  356. package/dist/esm/ic-radio-option.entry.js +7 -3
  357. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  358. package/dist/esm/ic-search-bar.entry.js +11 -8
  359. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  360. package/dist/esm/ic-select.entry.js.map +1 -1
  361. package/dist/esm/ic-side-navigation.entry.js +3 -2
  362. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  363. package/dist/esm/ic-tab-context.entry.js +2 -1
  364. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  365. package/dist/esm/ic-text-field.entry.js +1 -1
  366. package/dist/esm/ic-text-field.entry.js.map +1 -1
  367. package/dist/esm/ic-toast.entry.js +3 -3
  368. package/dist/esm/ic-toast.entry.js.map +1 -1
  369. package/dist/esm/ic-toggle-button-group.entry.js +1 -1
  370. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  371. package/dist/esm/loader.js +1 -1
  372. package/dist/types/components/ic-accordion/ic-accordion.d.ts +5 -5
  373. package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +4 -4
  374. package/dist/types/components/ic-alert/ic-alert.d.ts +9 -5
  375. package/dist/types/components/ic-card-vertical/ic-card-vertical.d.ts +7 -3
  376. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +6 -2
  377. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +7 -1
  378. package/dist/types/components/ic-dialog/ic-dialog.d.ts +5 -0
  379. package/dist/types/components/ic-divider/ic-divider.d.ts +31 -1
  380. package/dist/types/components/ic-divider/ic-divider.types.d.ts +3 -0
  381. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +2 -1
  382. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +1 -1
  383. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +2 -2
  384. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +2 -2
  385. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +7 -2
  386. package/dist/types/components/ic-pagination/ic-pagination.d.ts +13 -5
  387. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +9 -5
  388. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +6 -1
  389. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +5 -1
  390. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +5 -1
  391. package/dist/types/components.d.ts +176 -31
  392. package/dist/types/utils/helpers.d.ts +2 -2
  393. package/hydrate/index.js +294 -135
  394. package/package.json +2 -2
  395. package/vscode-data.json +281 -48
  396. package/dist/core/p-0395442c.entry.js +0 -2
  397. package/dist/core/p-0395442c.entry.js.map +0 -1
  398. package/dist/core/p-0d233b0c.entry.js +0 -2
  399. package/dist/core/p-0d233b0c.entry.js.map +0 -1
  400. package/dist/core/p-134def81.entry.js +0 -2
  401. package/dist/core/p-134def81.entry.js.map +0 -1
  402. package/dist/core/p-1b116dd1.entry.js +0 -2
  403. package/dist/core/p-1b116dd1.entry.js.map +0 -1
  404. package/dist/core/p-21cc87c0.entry.js +0 -2
  405. package/dist/core/p-21cc87c0.entry.js.map +0 -1
  406. package/dist/core/p-31fc8756.entry.js.map +0 -1
  407. package/dist/core/p-3618ac34.entry.js +0 -2
  408. package/dist/core/p-3618ac34.entry.js.map +0 -1
  409. package/dist/core/p-384d454d.entry.js +0 -2
  410. package/dist/core/p-384d454d.entry.js.map +0 -1
  411. package/dist/core/p-3d417eff.entry.js +0 -2
  412. package/dist/core/p-3d417eff.entry.js.map +0 -1
  413. package/dist/core/p-43256b7c.entry.js.map +0 -1
  414. package/dist/core/p-50ead56c.entry.js.map +0 -1
  415. package/dist/core/p-6d3e4bb1.entry.js +0 -2
  416. package/dist/core/p-6d3e4bb1.entry.js.map +0 -1
  417. package/dist/core/p-726673ee.entry.js.map +0 -1
  418. package/dist/core/p-72d30c8a.entry.js +0 -2
  419. package/dist/core/p-72d30c8a.entry.js.map +0 -1
  420. package/dist/core/p-7827b5cb.entry.js +0 -2
  421. package/dist/core/p-7827b5cb.entry.js.map +0 -1
  422. package/dist/core/p-7fbf2d3e.entry.js +0 -2
  423. package/dist/core/p-7fbf2d3e.entry.js.map +0 -1
  424. package/dist/core/p-91cf9b2b.entry.js +0 -2
  425. package/dist/core/p-91cf9b2b.entry.js.map +0 -1
  426. package/dist/core/p-ac4b7329.entry.js +0 -2
  427. package/dist/core/p-ac4b7329.entry.js.map +0 -1
  428. package/dist/core/p-b01ffa55.entry.js.map +0 -1
  429. package/dist/core/p-b17c94b7.entry.js +0 -2
  430. package/dist/core/p-b17c94b7.entry.js.map +0 -1
  431. package/dist/core/p-b78f8b8c.entry.js.map +0 -1
  432. package/dist/core/p-b95a72a3.entry.js +0 -2
  433. package/dist/core/p-b95a72a3.entry.js.map +0 -1
  434. package/dist/core/p-b997064c.entry.js +0 -2
  435. package/dist/core/p-b997064c.entry.js.map +0 -1
  436. package/dist/core/p-cf7db84a.entry.js +0 -2
  437. package/dist/core/p-cf7db84a.entry.js.map +0 -1
  438. package/dist/core/p-dd36bf1b.entry.js.map +0 -1
  439. package/dist/core/p-e488de54.entry.js +0 -2
  440. package/dist/core/p-e488de54.entry.js.map +0 -1
  441. package/dist/core/p-e4d1839e.entry.js +0 -2
  442. package/dist/core/p-e4d1839e.entry.js.map +0 -1
  443. package/dist/core/p-f0fc1bf0.entry.js +0 -2
  444. package/dist/core/p-f0fc1bf0.entry.js.map +0 -1
  445. package/dist/core/p-f60dbd0e.entry.js.map +0 -1
  446. package/dist/core/p-ff4298b1.entry.js +0 -2
  447. package/dist/core/p-ff4298b1.entry.js.map +0 -1
@@ -446,6 +446,7 @@ video {
446
446
  * @prop --input-width: Width of the input field
447
447
  */
448
448
  display: block;
449
+
449
450
  --ic-input-label-helpertext-padding: var(--ic-space-xxs);
450
451
  }
451
452
 
@@ -454,12 +455,12 @@ video {
454
455
  }
455
456
 
456
457
  ::-moz-placeholder {
457
- color: var(--ic-color-text-tertiary);
458
+ color: var(--text-field-placeholder-color, var(--ic-color-text-tertiary));
458
459
  opacity: 1;
459
460
  }
460
461
 
461
462
  ::placeholder {
462
- color: var(--ic-color-text-tertiary);
463
+ color: var(--text-field-placeholder-color, var(--ic-color-text-tertiary));
463
464
  opacity: 1;
464
465
  }
465
466
 
@@ -467,7 +468,8 @@ input,
467
468
  textarea {
468
469
  border: 0;
469
470
  border-radius: var(--ic-border-radius);
470
- background-color: var(--ic-architectural-white);
471
+ color: var(--text-field-text-color, var(--ic-color-text-primary));
472
+ background-color: var(--input-bg-color, var(--ic-architectural-white));
471
473
  line-height: 1.5rem;
472
474
  letter-spacing: 0.005rem;
473
475
  width: 100%;
@@ -489,7 +491,7 @@ textarea:focus {
489
491
 
490
492
  input:disabled,
491
493
  textarea:disabled {
492
- color: var(--ic-architectural-200);
494
+ color: var(--text-field-disabled-text-color, var(--ic-architectural-200));
493
495
  }
494
496
 
495
497
  input.readonly,
@@ -478,10 +478,7 @@ video {
478
478
  min-width: 18rem;
479
479
  box-shadow: var(--ic-elevation-overlay);
480
480
  min-height: 3.5rem;
481
- background-color: var(--ic-architectural-800);
482
-
483
- --ic-typography-color: var(--ic-color-text-primary-dark);
484
-
481
+ background-color: var(--ic-toast-background);
485
482
  display: flex;
486
483
  align-items: center;
487
484
  position: relative;
@@ -502,23 +499,23 @@ video {
502
499
  }
503
500
 
504
501
  .divider-neutral {
505
- background-color: var(--ic-status-unknown-default);
502
+ background-color: var(--ic-toast-status-neutral);
506
503
  }
507
504
 
508
505
  .divider-info {
509
- background-color: var(--ic-status-info-contrast);
506
+ background-color: var(--ic-toast-status-info);
510
507
  }
511
508
 
512
509
  .divider-warning {
513
- background-color: var(--ic-status-warning-contrast);
510
+ background-color: var(--ic-toast-status-warning);
514
511
  }
515
512
 
516
513
  .divider-error {
517
- background-color: var(--ic-status-error-contrast);
514
+ background-color: var(--ic-toast-status-error);
518
515
  }
519
516
 
520
517
  .divider-success {
521
- background-color: var(--ic-status-success-contrast);
518
+ background-color: var(--ic-toast-status-success);
522
519
  }
523
520
 
524
521
  .toast-icon,
@@ -530,23 +527,23 @@ video {
530
527
 
531
528
  :host([variant="neutral"]) .toast-icon svg,
532
529
  ::slotted(svg) {
533
- fill: var(--ic-status-unknown-default);
530
+ fill: var(--ic-toast-icon-neutral);
534
531
  }
535
532
 
536
533
  :host([variant="info"]) .toast-icon svg {
537
- fill: var(--ic-status-info-contrast);
534
+ fill: var(--ic-toast-icon-info);
538
535
  }
539
536
 
540
537
  :host([variant="warning"]) .toast-icon svg {
541
- fill: var(--ic-status-warning-contrast);
538
+ fill: var(--ic-toast-icon-warning);
542
539
  }
543
540
 
544
541
  :host([variant="error"]) .toast-icon svg {
545
- fill: var(--ic-status-error-contrast);
542
+ fill: var(--ic-toast-icon-error);
546
543
  }
547
544
 
548
545
  :host([variant="success"]) .toast-icon svg {
549
- fill: var(--ic-status-success-contrast);
546
+ fill: var(--ic-toast-icon-success);
550
547
  }
551
548
 
552
549
  .toast-content {
@@ -558,18 +555,30 @@ video {
558
555
  margin-left: var(--ic-space-md);
559
556
  }
560
557
 
561
- .toast-message {
558
+ .toast-text {
562
559
  padding: var(--ic-space-xs) var(--ic-space-xs) var(--ic-space-xs) 0;
563
560
  }
564
561
 
562
+ .toast-heading {
563
+ --ic-typography-color: var(--ic-toast-title);
564
+ }
565
+
566
+ .toast-message {
567
+ --ic-typography-color: var(--ic-toast-description);
568
+ }
569
+
565
570
  .toast-action-container {
566
571
  padding-bottom: var(--ic-space-md);
567
572
  }
568
573
 
569
- ic-button {
574
+ #dismiss-button {
570
575
  padding: var(--ic-space-xs);
571
576
  }
572
577
 
578
+ #dismiss-button > svg {
579
+ color: var(--ic-toast-dismiss-button);
580
+ }
581
+
573
582
  ic-loading-indicator {
574
583
  --outer-color: transparent;
575
584
  --inner-color: var(--ic-action-light);
@@ -2,7 +2,6 @@ import { h, Host, } from "@stencil/core";
2
2
  import closeIcon from "../../assets/close-icon.svg";
3
3
  import { VARIANT_ICONS } from "../../utils/constants";
4
4
  import { getSlot, isPropDefined, isSlotUsed, onComponentRequiredPropUndefined, } from "../../utils/helpers";
5
- import { IcThemeForegroundEnum, } from "../../utils/types";
6
5
  const AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;
7
6
  const TOAST_HEADING_CHAR_LIMIT = 70;
8
7
  const TOAST_MESSAGE_CHAR_LIMIT = 140;
@@ -202,7 +201,7 @@ export class Toast {
202
201
  } }), variant === "neutral" ? (h("slot", { name: "neutral-icon" })) : (h("span", { class: "toast-icon", innerHTML: VARIANT_ICONS[variant].icon })))), h("div", { class: {
203
202
  ["toast-content"]: true,
204
203
  ["no-icon"]: variant === "neutral" && !isSlotUsed(this.el, "neutral-icon"),
205
- } }, h("div", { class: "toast-message" }, h("ic-typography", { variant: "subtitle-large" }, visible && h("h5", null, heading)), message && (h("ic-typography", { variant: "body" }, visible && h("p", null, message)))), isSlotUsed(this.el, "action") && (h("div", { class: "toast-action-container" }, h("slot", { name: "action" })))), !isManual ? (h("ic-loading-indicator", { class: "toast-dismiss-timer", theme: "dark", monochrome: true, size: "icon", progress: this.timerProgress, description: "" })) : (h("ic-button", { id: "dismiss-button", innerHTML: closeIcon, onClick: this.dismissAction, variant: "icon", appearance: IcThemeForegroundEnum.Light, "aria-label": dismissButtonAriaLabel })))));
204
+ } }, h("div", { class: "toast-text" }, h("ic-typography", { variant: "subtitle-large", class: "toast-heading" }, visible && h("h5", null, heading)), message && (h("ic-typography", { variant: "body", class: "toast-message" }, visible && h("p", null, message)))), isSlotUsed(this.el, "action") && (h("div", { class: "toast-action-container" }, h("slot", { name: "action" })))), !isManual ? (h("ic-loading-indicator", { class: "toast-dismiss-timer", theme: "dark", monochrome: true, size: "icon", progress: this.timerProgress, description: "" })) : (h("ic-button", { id: "dismiss-button", innerHTML: closeIcon, onClick: this.dismissAction, variant: "icon", "aria-label": dismissButtonAriaLabel })))));
206
205
  }
207
206
  static get is() { return "ic-toast"; }
208
207
  static get encapsulation() { return "shadow"; }
@@ -1 +1 @@
1
- {"version":3,"file":"ic-toast.js","sourceRoot":"","sources":["../../../src/components/ic-toast/ic-toast.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\nimport {\n getSlot,\n isPropDefined,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcActivationTypes,\n IcStatusVariants,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { ActionAreaElementTypes } from \"./ic-toast.types\";\n\nconst AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;\nconst TOAST_HEADING_CHAR_LIMIT = 70;\nconst TOAST_MESSAGE_CHAR_LIMIT = 140;\n\n/**\n * @slot action - IcButton or IcLink is placed below header and message. If used will default toast to manual `dismiss` type.\n * @slot neutral-icon - A custom neutral icon is placed on the left side of the component. If used will default toast to `neutral` variant.\n */\n@Component({\n tag: \"ic-toast\",\n styleUrl: \"ic-toast.css\",\n shadow: true,\n})\nexport class Toast {\n private dismissTimeout: number;\n private interactiveElements: ActionAreaElementTypes[] = [];\n private neutralVariantLabel: string;\n private timerRefreshInterval: number;\n private focusInteractiveElement: boolean;\n private shiftKeyPressed: boolean;\n\n @Element() el: HTMLIcToastElement;\n\n @State() isManual: boolean;\n @State() timerProgress = 100;\n @State() visible = false;\n\n /**\n * If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)\n * (NOTE: Has a minimum value of `5000ms`)\n */\n @Prop({ mutable: true }) autoDismissTimeout? = 5000;\n\n /**\n * If toast can be manually dismissed, this prop sets a custom aria-label for the ic-button component\n */\n @Prop() dismissButtonAriaLabel? = \"dismiss\";\n\n /**\n * How the toast will be dismissed. If manual will display a dismiss button.\n */\n @Prop({ mutable: true }) dismissMode?: IcActivationTypes = \"manual\";\n @Watch(\"dismissMode\")\n dismissModeChangeHandler(newValue: IcActivationTypes): void {\n this.isManual = newValue === \"manual\";\n }\n\n /**\n * The title to display at the start of the toast. (NOTE: Should be no more than `70` characters)\n */\n @Prop() heading!: string;\n\n /**\n * The main body message of the toast. (NOTE: Should be no more than `140` characters)\n */\n @Prop() message?: string;\n\n /**\n * Provides a custom alt-text to be announced to screen readers, if slotting a custom neutral icon\n */\n @Prop() neutralIconAriaLabel?: string;\n\n /**\n * The variant of the toast being rendered\n */\n @Prop({ mutable: true }) variant?: IcStatusVariants;\n\n /**\n * Is emitted when the user dismisses the toast\n */\n @Event() icDismiss: EventEmitter<void>;\n\n disconnectedCallback(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n }\n\n componentWillLoad(): void {\n this.handleLongText(\n this.heading.length > TOAST_HEADING_CHAR_LIMIT,\n this.message?.length > TOAST_MESSAGE_CHAR_LIMIT\n );\n\n if (this.autoDismissTimeout < 5000) this.autoDismissTimeout = 5000;\n\n if (isSlotUsed(this.el, \"action\")) this.dismissMode = \"manual\";\n this.isManual = this.dismissMode === \"manual\";\n\n if (isSlotUsed(this.el, \"neutral-icon\")) this.variant = \"neutral\";\n if (this.variant === \"neutral\") {\n this.neutralVariantLabel =\n this.neutralIconAriaLabel ?? VARIANT_ICONS[this.variant].ariaLabel;\n }\n\n if (this.isManual) {\n const toastMessage: string = isPropDefined(this.message)\n ? `. ${this.message}`\n : \"\";\n this.el.setAttribute(\n \"aria-label\",\n this.variant\n ? this.neutralVariantLabel || VARIANT_ICONS[this.variant].ariaLabel\n : this.heading\n );\n (this.variant || this.message) &&\n this.el.setAttribute(\n \"aria-description\",\n this.variant ? `${this.heading}${toastMessage}` : this.message\n );\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Toast\"\n );\n }\n\n componentDidUpdate(): void {\n if (this.focusInteractiveElement && this.isManual) {\n this.resetAutoDismissTimer();\n\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n\n this.focusInteractiveElement = false;\n this.findNextInteractiveElement(this.shiftKeyPressed).setFocus();\n this.shiftKeyPressed = false;\n }\n }\n\n @Watch(\"visible\")\n watchVisibleHandler(): void {\n if (this.visible) {\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n } else {\n this.interactiveElements = [];\n }\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleDismiss(): void {\n this.visible = false;\n this.resetAutoDismissTimer();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.visible) {\n if (this.isManual) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.findNextInteractiveElement(ev.shiftKey).setFocus();\n break;\n case \"Escape\":\n !ev.repeat && this.dismissAction();\n ev.stopImmediatePropagation();\n break;\n }\n } else {\n if (ev.key === \"Tab\") {\n this.shiftKeyPressed = ev.shiftKey;\n this.focusInteractiveElement = true;\n }\n }\n }\n }\n\n @Listen(\"mouseenter\")\n @Listen(\"mouseleave\")\n handleTimer(ev: MouseEvent): void {\n switch (ev.type) {\n case \"mouseenter\":\n if (!this.isManual) {\n this.resetAutoDismissTimer();\n }\n this.isManual = true;\n break;\n case \"mouseleave\":\n if (this.dismissMode === \"automatic\") {\n this.isManual = false;\n this.interactiveElements = [];\n if (this.visible) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n }\n }\n break;\n }\n }\n\n /**\n * @internal Used to display the individual toast.\n * @returns The element that previously had focus before the toast appeared\n */\n @Method()\n async setVisible(): Promise<HTMLElement> {\n if (!this.visible) this.visible = true;\n if (!this.isManual) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n return null;\n } else {\n window.setTimeout(() => this.interactiveElements[0].setFocus(), 200);\n return document.activeElement as HTMLElement;\n }\n }\n\n private dismissAction = (): void => {\n this.icDismiss.emit();\n };\n\n private handleProgressChange = () => {\n this.timerProgress -=\n (AUTO_DISMISS_TIMER_REFRESH_RATE_MS / this.autoDismissTimeout) * 100;\n };\n\n private handleLongText(\n headingTooLong: boolean,\n messageTooLong?: boolean\n ): void {\n if (messageTooLong || headingTooLong) {\n console.error(\n `Too many characters in toast ${headingTooLong ? \"heading\" : \"\"}${\n headingTooLong && messageTooLong ? \" and \" : \"\"\n }${\n messageTooLong ? \"message\" : \"\"\n }. Refer to character limits specified in the prop description`\n );\n }\n }\n\n private findNextInteractiveElement(\n isBackwards: boolean\n ): ActionAreaElementTypes {\n const firstEl = this.interactiveElements[0];\n const lastEl =\n this.interactiveElements[this.interactiveElements.length - 1];\n\n if (this.isActive(isBackwards ? firstEl : lastEl))\n return isBackwards ? lastEl : firstEl;\n\n let currentIndex: number;\n\n return this.interactiveElements.some((el, index) => {\n if (!this.isActive(el)) return false;\n currentIndex = index;\n return true;\n })\n ? this.interactiveElements[currentIndex + (isBackwards ? -1 : 1)]\n : firstEl;\n }\n\n private resetAutoDismissTimer(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n }\n\n private isActive(targetEl: HTMLElement): boolean {\n return targetEl === this.el\n ? !!this.el.shadowRoot.activeElement\n : document.activeElement === targetEl;\n }\n\n private onFocus = (): void => {\n if (this.focusInteractiveElement) {\n this.isManual = true;\n }\n };\n\n private onBlur = (): void => {\n this.handleTimer({ type: \"mouseleave\" } as MouseEvent);\n };\n\n render() {\n const {\n variant,\n heading,\n message,\n visible,\n isManual,\n dismissButtonAriaLabel,\n } = this;\n return (\n <Host\n class={{ [\"ic-toast-hidden\"]: !visible }}\n role={isManual ? \"dialog\" : \"status\"}\n tabindex=\"0\"\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n >\n <div class=\"container\">\n {variant && visible && (\n <div class=\"toast-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n {variant === \"neutral\" ? (\n <slot name=\"neutral-icon\" />\n ) : (\n <span\n class=\"toast-icon\"\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n )}\n </div>\n )}\n <div\n class={{\n [\"toast-content\"]: true,\n [\"no-icon\"]:\n variant === \"neutral\" && !isSlotUsed(this.el, \"neutral-icon\"),\n }}\n >\n <div class=\"toast-message\">\n <ic-typography variant=\"subtitle-large\">\n {visible && <h5>{heading}</h5>}\n </ic-typography>\n {message && (\n <ic-typography variant=\"body\">\n {visible && <p>{message}</p>}\n </ic-typography>\n )}\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"toast-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n {!isManual ? (\n <ic-loading-indicator\n class=\"toast-dismiss-timer\"\n theme=\"dark\"\n monochrome\n size=\"icon\"\n progress={this.timerProgress}\n description=\"\"\n ></ic-loading-indicator>\n ) : (\n <ic-button\n id=\"dismiss-button\"\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon\"\n appearance={IcThemeForegroundEnum.Light}\n aria-label={dismissButtonAriaLabel}\n ></ic-button>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-toast.js","sourceRoot":"","sources":["../../../src/components/ic-toast/ic-toast.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n Watch,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\nimport {\n getSlot,\n isPropDefined,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcActivationTypes, IcStatusVariants } from \"../../utils/types\";\nimport { ActionAreaElementTypes } from \"./ic-toast.types\";\n\nconst AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;\nconst TOAST_HEADING_CHAR_LIMIT = 70;\nconst TOAST_MESSAGE_CHAR_LIMIT = 140;\n\n/**\n * @slot action - IcButton or IcLink is placed below header and message. If used will default toast to manual `dismiss` type.\n * @slot neutral-icon - A custom neutral icon is placed on the left side of the component. If used will default toast to `neutral` variant.\n */\n@Component({\n tag: \"ic-toast\",\n styleUrl: \"ic-toast.css\",\n shadow: true,\n})\nexport class Toast {\n private dismissTimeout: number;\n private interactiveElements: ActionAreaElementTypes[] = [];\n private neutralVariantLabel: string;\n private timerRefreshInterval: number;\n private focusInteractiveElement: boolean;\n private shiftKeyPressed: boolean;\n\n @Element() el: HTMLIcToastElement;\n\n @State() isManual: boolean;\n @State() timerProgress = 100;\n @State() visible = false;\n\n /**\n * If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)\n * (NOTE: Has a minimum value of `5000ms`)\n */\n @Prop({ mutable: true }) autoDismissTimeout? = 5000;\n\n /**\n * If toast can be manually dismissed, this prop sets a custom aria-label for the ic-button component\n */\n @Prop() dismissButtonAriaLabel? = \"dismiss\";\n\n /**\n * How the toast will be dismissed. If manual will display a dismiss button.\n */\n @Prop({ mutable: true }) dismissMode?: IcActivationTypes = \"manual\";\n @Watch(\"dismissMode\")\n dismissModeChangeHandler(newValue: IcActivationTypes): void {\n this.isManual = newValue === \"manual\";\n }\n\n /**\n * The title to display at the start of the toast. (NOTE: Should be no more than `70` characters)\n */\n @Prop() heading!: string;\n\n /**\n * The main body message of the toast. (NOTE: Should be no more than `140` characters)\n */\n @Prop() message?: string;\n\n /**\n * Provides a custom alt-text to be announced to screen readers, if slotting a custom neutral icon\n */\n @Prop() neutralIconAriaLabel?: string;\n\n /**\n * The variant of the toast being rendered\n */\n @Prop({ mutable: true }) variant?: IcStatusVariants;\n\n /**\n * Is emitted when the user dismisses the toast\n */\n @Event() icDismiss: EventEmitter<void>;\n\n disconnectedCallback(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n }\n\n componentWillLoad(): void {\n this.handleLongText(\n this.heading.length > TOAST_HEADING_CHAR_LIMIT,\n this.message?.length > TOAST_MESSAGE_CHAR_LIMIT\n );\n\n if (this.autoDismissTimeout < 5000) this.autoDismissTimeout = 5000;\n\n if (isSlotUsed(this.el, \"action\")) this.dismissMode = \"manual\";\n this.isManual = this.dismissMode === \"manual\";\n\n if (isSlotUsed(this.el, \"neutral-icon\")) this.variant = \"neutral\";\n if (this.variant === \"neutral\") {\n this.neutralVariantLabel =\n this.neutralIconAriaLabel ?? VARIANT_ICONS[this.variant].ariaLabel;\n }\n\n if (this.isManual) {\n const toastMessage: string = isPropDefined(this.message)\n ? `. ${this.message}`\n : \"\";\n this.el.setAttribute(\n \"aria-label\",\n this.variant\n ? this.neutralVariantLabel || VARIANT_ICONS[this.variant].ariaLabel\n : this.heading\n );\n (this.variant || this.message) &&\n this.el.setAttribute(\n \"aria-description\",\n this.variant ? `${this.heading}${toastMessage}` : this.message\n );\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Toast\"\n );\n }\n\n componentDidUpdate(): void {\n if (this.focusInteractiveElement && this.isManual) {\n this.resetAutoDismissTimer();\n\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n\n this.focusInteractiveElement = false;\n this.findNextInteractiveElement(this.shiftKeyPressed).setFocus();\n this.shiftKeyPressed = false;\n }\n }\n\n @Watch(\"visible\")\n watchVisibleHandler(): void {\n if (this.visible) {\n const actionContent = getSlot(\n this.el,\n \"action\"\n ) as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n } else {\n this.interactiveElements = [];\n }\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleDismiss(): void {\n this.visible = false;\n this.resetAutoDismissTimer();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.visible) {\n if (this.isManual) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.findNextInteractiveElement(ev.shiftKey).setFocus();\n break;\n case \"Escape\":\n !ev.repeat && this.dismissAction();\n ev.stopImmediatePropagation();\n break;\n }\n } else {\n if (ev.key === \"Tab\") {\n this.shiftKeyPressed = ev.shiftKey;\n this.focusInteractiveElement = true;\n }\n }\n }\n }\n\n @Listen(\"mouseenter\")\n @Listen(\"mouseleave\")\n handleTimer(ev: MouseEvent): void {\n switch (ev.type) {\n case \"mouseenter\":\n if (!this.isManual) {\n this.resetAutoDismissTimer();\n }\n this.isManual = true;\n break;\n case \"mouseleave\":\n if (this.dismissMode === \"automatic\") {\n this.isManual = false;\n this.interactiveElements = [];\n if (this.visible) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n }\n }\n break;\n }\n }\n\n /**\n * @internal Used to display the individual toast.\n * @returns The element that previously had focus before the toast appeared\n */\n @Method()\n async setVisible(): Promise<HTMLElement> {\n if (!this.visible) this.visible = true;\n if (!this.isManual) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n return null;\n } else {\n window.setTimeout(() => this.interactiveElements[0].setFocus(), 200);\n return document.activeElement as HTMLElement;\n }\n }\n\n private dismissAction = (): void => {\n this.icDismiss.emit();\n };\n\n private handleProgressChange = () => {\n this.timerProgress -=\n (AUTO_DISMISS_TIMER_REFRESH_RATE_MS / this.autoDismissTimeout) * 100;\n };\n\n private handleLongText(\n headingTooLong: boolean,\n messageTooLong?: boolean\n ): void {\n if (messageTooLong || headingTooLong) {\n console.error(\n `Too many characters in toast ${headingTooLong ? \"heading\" : \"\"}${\n headingTooLong && messageTooLong ? \" and \" : \"\"\n }${\n messageTooLong ? \"message\" : \"\"\n }. Refer to character limits specified in the prop description`\n );\n }\n }\n\n private findNextInteractiveElement(\n isBackwards: boolean\n ): ActionAreaElementTypes {\n const firstEl = this.interactiveElements[0];\n const lastEl =\n this.interactiveElements[this.interactiveElements.length - 1];\n\n if (this.isActive(isBackwards ? firstEl : lastEl))\n return isBackwards ? lastEl : firstEl;\n\n let currentIndex: number;\n\n return this.interactiveElements.some((el, index) => {\n if (!this.isActive(el)) return false;\n currentIndex = index;\n return true;\n })\n ? this.interactiveElements[currentIndex + (isBackwards ? -1 : 1)]\n : firstEl;\n }\n\n private resetAutoDismissTimer(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n }\n\n private isActive(targetEl: HTMLElement): boolean {\n return targetEl === this.el\n ? !!this.el.shadowRoot.activeElement\n : document.activeElement === targetEl;\n }\n\n private onFocus = (): void => {\n if (this.focusInteractiveElement) {\n this.isManual = true;\n }\n };\n\n private onBlur = (): void => {\n this.handleTimer({ type: \"mouseleave\" } as MouseEvent);\n };\n\n render() {\n const {\n variant,\n heading,\n message,\n visible,\n isManual,\n dismissButtonAriaLabel,\n } = this;\n return (\n <Host\n class={{ [\"ic-toast-hidden\"]: !visible }}\n role={isManual ? \"dialog\" : \"status\"}\n tabindex=\"0\"\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n >\n <div class=\"container\">\n {variant && visible && (\n <div class=\"toast-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n {variant === \"neutral\" ? (\n <slot name=\"neutral-icon\" />\n ) : (\n <span\n class=\"toast-icon\"\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n )}\n </div>\n )}\n <div\n class={{\n [\"toast-content\"]: true,\n [\"no-icon\"]:\n variant === \"neutral\" && !isSlotUsed(this.el, \"neutral-icon\"),\n }}\n >\n <div class=\"toast-text\">\n <ic-typography variant=\"subtitle-large\" class=\"toast-heading\">\n {visible && <h5>{heading}</h5>}\n </ic-typography>\n {message && (\n <ic-typography variant=\"body\" class=\"toast-message\">\n {visible && <p>{message}</p>}\n </ic-typography>\n )}\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"toast-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n {!isManual ? (\n <ic-loading-indicator\n class=\"toast-dismiss-timer\"\n theme=\"dark\"\n monochrome\n size=\"icon\"\n progress={this.timerProgress}\n description=\"\"\n ></ic-loading-indicator>\n ) : (\n <ic-button\n id=\"dismiss-button\"\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon\"\n aria-label={dismissButtonAriaLabel}\n ></ic-button>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -16,15 +16,15 @@ describe("ic-toast component", () => {
16
16
  <mock:shadow-root>
17
17
  <div class="container">
18
18
  <div class="toast-content">
19
- <div class="toast-message">
20
- <ic-typography variant="subtitle-large">
19
+ <div class="toast-text">
20
+ <ic-typography class="toast-heading" variant="subtitle-large">
21
21
  <h5>
22
22
  Heading
23
23
  </h5>
24
24
  </ic-typography>
25
25
  </div>
26
26
  </div>
27
- <ic-button appearance="light" id="dismiss-button" aria-label="dismiss" variant="icon">
27
+ <ic-button id="dismiss-button" aria-label="dismiss" variant="icon">
28
28
  svg
29
29
  </ic-button>
30
30
  </div>
@@ -43,20 +43,20 @@ describe("ic-toast component", () => {
43
43
  <mock:shadow-root>
44
44
  <div class="container">
45
45
  <div class="toast-content">
46
- <div class="toast-message">
47
- <ic-typography variant="subtitle-large">
46
+ <div class="toast-text">
47
+ <ic-typography class="toast-heading" variant="subtitle-large">
48
48
  <h5>
49
49
  Heading
50
50
  </h5>
51
51
  </ic-typography>
52
- <ic-typography variant="body">
52
+ <ic-typography class="toast-message" variant="body">
53
53
  <p>
54
54
  toast message
55
55
  </p>
56
56
  </ic-typography>
57
57
  </div>
58
58
  </div>
59
- <ic-button appearance="light" id="dismiss-button" aria-label="dismiss" variant="icon">
59
+ <ic-button id="dismiss-button" aria-label="dismiss" variant="icon">
60
60
  svg
61
61
  </ic-button>
62
62
  </div>
@@ -81,15 +81,15 @@ describe("ic-toast component", () => {
81
81
  </span>
82
82
  </div>
83
83
  <div class="toast-content">
84
- <div class="toast-message">
85
- <ic-typography variant="subtitle-large">
84
+ <div class="toast-text">
85
+ <ic-typography class="toast-heading" variant="subtitle-large">
86
86
  <h5>
87
87
  Heading
88
88
  </h5>
89
89
  </ic-typography>
90
90
  </div>
91
91
  </div>
92
- <ic-button appearance="light" id="dismiss-button" aria-label="dismiss" variant="icon">
92
+ <ic-button id="dismiss-button" aria-label="dismiss" variant="icon">
93
93
  svg
94
94
  </ic-button>
95
95
  </div>
@@ -108,8 +108,8 @@ describe("ic-toast component", () => {
108
108
  <mock:shadow-root>
109
109
  <div class="container">
110
110
  <div class="toast-content">
111
- <div class="toast-message">
112
- <ic-typography variant="subtitle-large">
111
+ <div class="toast-text">
112
+ <ic-typography class="toast-heading" variant="subtitle-large">
113
113
  <h5>
114
114
  Heading
115
115
  </h5>
@@ -1 +1 @@
1
- {"version":3,"file":"ic-toast.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-toast/test/basic/ic-toast.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { waitForTimeout } from \"../../../../testspec.setup\";\nimport { Button } from \"../../../ic-button/ic-button\";\nimport { Link } from \"../../../ic-link/ic-link\";\nimport { Toast } from \"../../ic-toast\";\n\ndescribe(\"ic-toast component\", () => {\n it(\"should render when heading is supplied\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast aria-label=\"Heading\" heading=\"Heading\" role=\"dialog\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-content\">\n <div class=\"toast-message\">\n <ic-typography variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n </div>\n </div>\n <ic-button appearance=\"light\" id=\"dismiss-button\" aria-label=\"dismiss\" variant=\"icon\">\n svg\n </ic-button>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should render when a heading and message is supplied\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" message=\"toast message\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast aria-label=\"Heading\" aria-description=\"toast message\" message=\"toast message\" heading=\"Heading\" role=\"dialog\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-content\">\n <div class=\"toast-message\">\n <ic-typography variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n <ic-typography variant=\"body\">\n <p>\n toast message\n </p>\n </ic-typography>\n </div>\n </div>\n <ic-button appearance=\"light\" id=\"dismiss-button\" aria-label=\"dismiss\" variant=\"icon\">\n svg\n </ic-button>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should render a variant icon and banner when a variant is supplied\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" variant=\"success\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast aria-label=\"Success\" aria-description=\"Heading\" heading=\"Heading\" role=\"dialog\" variant=\"success\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-icon-container\">\n <div class=\"divider divider-success\"></div>\n <span class=\"toast-icon\">\n svg\n </span>\n </div>\n <div class=\"toast-content\">\n <div class=\"toast-message\">\n <ic-typography variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n </div>\n </div>\n <ic-button appearance=\"light\" id=\"dismiss-button\" aria-label=\"dismiss\" variant=\"icon\">\n svg\n </ic-button>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should render a loading indicator instead of a dismiss button when dismissMode is automatic\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast heading=\"Heading\" role=\"status\" dismiss-mode=\"automatic\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-content\">\n <div class=\"toast-message\">\n <ic-typography variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n </div>\n </div>\n <ic-loading-indicator class=\"toast-dismiss-timer\" description=\"\" monochrome=\"\" progress=\"100\" size=\"icon\" theme=\"dark\"></ic-loading-indicator>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should display the toast when setVisible is ran\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n expect(page.root.classList.contains(\"ic-toast-hidden\")).toBeTruthy();\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n expect(page.root.classList.contains(\"ic-toast-hidden\")).toBeFalsy();\n });\n\n it(\"should emit the icDismiss event when dismissed with by clicking the button\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icDismiss\", callbackFn);\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n const dismissButton = page.root.shadowRoot.querySelector(\"ic-button\");\n dismissButton.click();\n await page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should emit the icDismiss event when dismissed with by pressing Escape\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icDismiss\", callbackFn);\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n const event = new KeyboardEvent(\"keydown\", { key: \"Escape\" });\n page.rootInstance.handleKeyboard(event);\n await page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should emit icDismiss after the timer expires when an auto dismiss toast is made visible\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\"></ic-toast>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icDismiss\", callbackFn);\n page.rootInstance.setVisible();\n await page.waitForChanges();\n expect(callbackFn).not.toHaveBeenCalled();\n\n await waitForTimeout(6000);\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should pause timer when mouse is hovered over, and resume when mouse leaves\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\" auto-dismiss-timeout=\"10000\"></ic-toast>`,\n });\n\n const intervalCb = jest.spyOn(window, \"setInterval\");\n const clearCb = jest.spyOn(window, \"clearInterval\");\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n await waitForTimeout(3000);\n expect(intervalCb).toHaveBeenCalledTimes(1);\n\n page.rootInstance.handleTimer({ type: \"mouseenter\" });\n await page.waitForChanges();\n expect(clearCb).toHaveBeenCalled();\n\n page.rootInstance.handleTimer({ type: \"mouseleave\" });\n await page.waitForChanges();\n await waitForTimeout(1000);\n expect(intervalCb).toHaveBeenCalledTimes(2);\n page.setContent(\"\");\n });\n\n it(\"should set isManual to true when toast is hovered over, and back to false when mouse leaves\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\" auto-dismiss-timeout=\"10000\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n page.rootInstance.handleTimer({ type: \"mouseenter\" });\n await page.waitForChanges();\n expect(page.rootInstance.isManual).toBeTruthy();\n\n page.rootInstance.handleTimer({ type: \"mouseleave\" });\n await page.waitForChanges();\n await waitForTimeout(1000);\n expect(page.rootInstance.isManual).toBeFalsy();\n page.setContent(\"\");\n });\n\n it(\"should post a console error message if the message or header is too long\", async () => {\n const longText =\n \"lorem donec massa sapien faucibus et molestie ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor eu augue ut lectus arcu bibendum at varius vel pharetra vel turpis nunc eget lorem dolor\";\n const consoleCb = jest\n .spyOn(console, \"error\")\n .mockImplementation(jest.fn());\n await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"${longText}\" message=\"${longText}\"></ic-toast>`,\n });\n expect(consoleCb).toHaveBeenCalledTimes(1);\n });\n\n it(\"should only focus the two interactive elements in the manual toast when using tab\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"><ic-button id=\"slottedButton\" slot=\"action\">Click me</ic-button></ic-toast>`,\n });\n const focusCallback = jest.spyOn(Button.prototype, \"setFocus\");\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n await waitForTimeout(300);\n expect(focusCallback).toHaveBeenCalledTimes(1);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(2);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(3);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(4);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: true,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(5);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: true,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(6);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: true,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(7);\n });\n\n it(\"should focus a link element that has been slotted into the action slot\", async () => {\n const page = await newSpecPage({\n components: [Toast, Link],\n html: `<ic-toast heading=\"Heading\"><ic-link href=\"/\" slot=\"action\">Text</ic-link></ic-toast>`,\n });\n const focusCallback = jest.spyOn(Link.prototype, \"setFocus\");\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n await waitForTimeout(300);\n expect(focusCallback).toHaveBeenCalledTimes(1);\n });\n\n it(\"should update the dialog's label if the prop neutralIconAriaLabel prop is provided\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast variant=\"neutral\" neutral-icon-aria-label=\"Hello World\" heading=\"Heading\"></ic-toast>`,\n });\n\n expect(page.root.getAttribute(\"aria-label\")).toBe(\"Hello World\");\n });\n\n it(\"should focus the new dismiss button when an auto dismiss toast is tabbed to\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\" auto-dismiss-timeout=\"10000\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n const dismissFocus = jest.spyOn(Button.prototype, \"setFocus\");\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(page.rootInstance.focusInteractiveElement).toBeTruthy();\n\n page.root.focus();\n await page.waitForChanges();\n expect(page.rootInstance.isManual).toBeTruthy();\n expect(dismissFocus).toHaveBeenCalled();\n });\n});\n"]}
1
+ {"version":3,"file":"ic-toast.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-toast/test/basic/ic-toast.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { waitForTimeout } from \"../../../../testspec.setup\";\nimport { Button } from \"../../../ic-button/ic-button\";\nimport { Link } from \"../../../ic-link/ic-link\";\nimport { Toast } from \"../../ic-toast\";\n\ndescribe(\"ic-toast component\", () => {\n it(\"should render when heading is supplied\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast aria-label=\"Heading\" heading=\"Heading\" role=\"dialog\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-content\">\n <div class=\"toast-text\">\n <ic-typography class=\"toast-heading\" variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n </div>\n </div>\n <ic-button id=\"dismiss-button\" aria-label=\"dismiss\" variant=\"icon\">\n svg\n </ic-button>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should render when a heading and message is supplied\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" message=\"toast message\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast aria-label=\"Heading\" aria-description=\"toast message\" message=\"toast message\" heading=\"Heading\" role=\"dialog\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-content\">\n <div class=\"toast-text\">\n <ic-typography class=\"toast-heading\" variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n <ic-typography class=\"toast-message\" variant=\"body\">\n <p>\n toast message\n </p>\n </ic-typography>\n </div>\n </div>\n <ic-button id=\"dismiss-button\" aria-label=\"dismiss\" variant=\"icon\">\n svg\n </ic-button>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should render a variant icon and banner when a variant is supplied\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" variant=\"success\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast aria-label=\"Success\" aria-description=\"Heading\" heading=\"Heading\" role=\"dialog\" variant=\"success\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-icon-container\">\n <div class=\"divider divider-success\"></div>\n <span class=\"toast-icon\">\n svg\n </span>\n </div>\n <div class=\"toast-content\">\n <div class=\"toast-text\">\n <ic-typography class=\"toast-heading\" variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n </div>\n </div>\n <ic-button id=\"dismiss-button\" aria-label=\"dismiss\" variant=\"icon\">\n svg\n </ic-button>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should render a loading indicator instead of a dismiss button when dismissMode is automatic\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n expect(page.root)\n .toEqualHtml(`<ic-toast heading=\"Heading\" role=\"status\" dismiss-mode=\"automatic\" tabindex=\"0\">\n <mock:shadow-root>\n <div class=\"container\">\n <div class=\"toast-content\">\n <div class=\"toast-text\">\n <ic-typography class=\"toast-heading\" variant=\"subtitle-large\">\n <h5>\n Heading\n </h5>\n </ic-typography>\n </div>\n </div>\n <ic-loading-indicator class=\"toast-dismiss-timer\" description=\"\" monochrome=\"\" progress=\"100\" size=\"icon\" theme=\"dark\"></ic-loading-indicator>\n </div>\n </mock:shadow-root>\n </ic-toast>`);\n });\n\n it(\"should display the toast when setVisible is ran\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n expect(page.root.classList.contains(\"ic-toast-hidden\")).toBeTruthy();\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n expect(page.root.classList.contains(\"ic-toast-hidden\")).toBeFalsy();\n });\n\n it(\"should emit the icDismiss event when dismissed with by clicking the button\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icDismiss\", callbackFn);\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n const dismissButton = page.root.shadowRoot.querySelector(\"ic-button\");\n dismissButton.click();\n await page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should emit the icDismiss event when dismissed with by pressing Escape\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"></ic-toast>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icDismiss\", callbackFn);\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n const event = new KeyboardEvent(\"keydown\", { key: \"Escape\" });\n page.rootInstance.handleKeyboard(event);\n await page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should emit icDismiss after the timer expires when an auto dismiss toast is made visible\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\"></ic-toast>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icDismiss\", callbackFn);\n page.rootInstance.setVisible();\n await page.waitForChanges();\n expect(callbackFn).not.toHaveBeenCalled();\n\n await waitForTimeout(6000);\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should pause timer when mouse is hovered over, and resume when mouse leaves\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\" auto-dismiss-timeout=\"10000\"></ic-toast>`,\n });\n\n const intervalCb = jest.spyOn(window, \"setInterval\");\n const clearCb = jest.spyOn(window, \"clearInterval\");\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n await waitForTimeout(3000);\n expect(intervalCb).toHaveBeenCalledTimes(1);\n\n page.rootInstance.handleTimer({ type: \"mouseenter\" });\n await page.waitForChanges();\n expect(clearCb).toHaveBeenCalled();\n\n page.rootInstance.handleTimer({ type: \"mouseleave\" });\n await page.waitForChanges();\n await waitForTimeout(1000);\n expect(intervalCb).toHaveBeenCalledTimes(2);\n page.setContent(\"\");\n });\n\n it(\"should set isManual to true when toast is hovered over, and back to false when mouse leaves\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\" auto-dismiss-timeout=\"10000\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n page.rootInstance.handleTimer({ type: \"mouseenter\" });\n await page.waitForChanges();\n expect(page.rootInstance.isManual).toBeTruthy();\n\n page.rootInstance.handleTimer({ type: \"mouseleave\" });\n await page.waitForChanges();\n await waitForTimeout(1000);\n expect(page.rootInstance.isManual).toBeFalsy();\n page.setContent(\"\");\n });\n\n it(\"should post a console error message if the message or header is too long\", async () => {\n const longText =\n \"lorem donec massa sapien faucibus et molestie ac feugiat sed lectus vestibulum mattis ullamcorper velit sed ullamcorper morbi tincidunt ornare massa eget egestas purus viverra accumsan in nisl nisi scelerisque eu ultrices vitae auctor eu augue ut lectus arcu bibendum at varius vel pharetra vel turpis nunc eget lorem dolor\";\n const consoleCb = jest\n .spyOn(console, \"error\")\n .mockImplementation(jest.fn());\n await newSpecPage({\n components: [Toast],\n html: `<ic-toast heading=\"${longText}\" message=\"${longText}\"></ic-toast>`,\n });\n expect(consoleCb).toHaveBeenCalledTimes(1);\n });\n\n it(\"should only focus the two interactive elements in the manual toast when using tab\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\"><ic-button id=\"slottedButton\" slot=\"action\">Click me</ic-button></ic-toast>`,\n });\n const focusCallback = jest.spyOn(Button.prototype, \"setFocus\");\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n await waitForTimeout(300);\n expect(focusCallback).toHaveBeenCalledTimes(1);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(2);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(3);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(4);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: true,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(5);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: true,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(6);\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: true,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(focusCallback).toHaveBeenCalledTimes(7);\n });\n\n it(\"should focus a link element that has been slotted into the action slot\", async () => {\n const page = await newSpecPage({\n components: [Toast, Link],\n html: `<ic-toast heading=\"Heading\"><ic-link href=\"/\" slot=\"action\">Text</ic-link></ic-toast>`,\n });\n const focusCallback = jest.spyOn(Link.prototype, \"setFocus\");\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n await waitForTimeout(300);\n expect(focusCallback).toHaveBeenCalledTimes(1);\n });\n\n it(\"should update the dialog's label if the prop neutralIconAriaLabel prop is provided\", async () => {\n const page = await newSpecPage({\n components: [Toast],\n html: `<ic-toast variant=\"neutral\" neutral-icon-aria-label=\"Hello World\" heading=\"Heading\"></ic-toast>`,\n });\n\n expect(page.root.getAttribute(\"aria-label\")).toBe(\"Hello World\");\n });\n\n it(\"should focus the new dismiss button when an auto dismiss toast is tabbed to\", async () => {\n const page = await newSpecPage({\n components: [Toast, Button],\n html: `<ic-toast heading=\"Heading\" dismiss-mode=\"automatic\" auto-dismiss-timeout=\"10000\"></ic-toast>`,\n });\n\n page.rootInstance.setVisible();\n await page.waitForChanges();\n\n const dismissFocus = jest.spyOn(Button.prototype, \"setFocus\");\n\n page.rootInstance.handleKeyboard({\n key: \"Tab\",\n shiftKey: false,\n preventDefault: (): void => null,\n });\n await page.waitForChanges();\n expect(page.rootInstance.focusInteractiveElement).toBeTruthy();\n\n page.root.focus();\n await page.waitForChanges();\n expect(page.rootInstance.isManual).toBeTruthy();\n expect(dismissFocus).toHaveBeenCalled();\n });\n});\n"]}
@@ -146,7 +146,7 @@ export class ToggleButtonGroup {
146
146
  });
147
147
  }
148
148
  disconnectedCallback() {
149
- document.removeEventListener("keydown", this.keyListener);
149
+ document === null || document === void 0 ? void 0 : document.removeEventListener("keydown", this.keyListener);
150
150
  }
151
151
  // trigger selectHandler when unable to add 'target'
152
152
  proxySelectHandler(toggle) {
@@ -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} from \"@stencil/core\";\nimport {\n IcSizes,\n IcThemeForeground,\n IcSelectTypes,\n IcSelectMethodTypes,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-toggle-button-group.types\";\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 * The appearance of the toggle button group, e.g dark, or light.\n */\n @Prop() appearance: IcThemeForeground = \"default\";\n\n /**\n * If `true`, the toggle button group will be set to the disabled state.\n */\n @Prop() disabled: boolean = false;\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 `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 * 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 }\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.appearance = this.appearance;\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-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-${this.appearance}`]: true,\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} from \"@stencil/core\";\nimport {\n IcSizes,\n IcThemeForeground,\n IcSelectTypes,\n IcSelectMethodTypes,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-toggle-button-group.types\";\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 * The appearance of the toggle button group, e.g dark, or light.\n */\n @Prop() appearance: IcThemeForeground = \"default\";\n\n /**\n * If `true`, the toggle button group will be set to the disabled state.\n */\n @Prop() disabled: boolean = false;\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 `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 * 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 }\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.appearance = this.appearance;\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-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-${this.appearance}`]: true,\n }}\n onFocus={this.handleHostFocus}\n >\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
@@ -145,6 +145,7 @@ describe("ic-toggle-button-group component unit tests", () => {
145
145
  });
146
146
  const mockEvent = new FocusEvent("focus");
147
147
  expect(page.rootInstance.handleHostFocus(mockEvent)).toBeNull();
148
+ await page.rootInstance.disconnectedCallback();
148
149
  });
149
150
  });
150
151
  //# sourceMappingURL=ic-toggle-button-group.spec.js.map