@ukic/web-components 3.23.0 → 3.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-81cd6930.js → helpers-51bab4b5.js} +9 -68
  3. package/dist/cjs/helpers-51bab4b5.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-action-chip.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-button_3.cjs.entry.js +17 -9
  13. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-card-horizontal.cjs.entry.js +6 -6
  15. package/dist/cjs/ic-card-vertical.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-checkbox-group.cjs.entry.js +3 -3
  17. package/dist/cjs/ic-checkbox.cjs.entry.js +5 -5
  18. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
  20. package/dist/cjs/ic-data-row.cjs.entry.js +3 -3
  21. package/dist/cjs/ic-dialog.cjs.entry.js +41 -29
  22. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-empty-state.cjs.entry.js +3 -3
  25. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-footer-link.cjs.entry.js +3 -3
  27. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-hero.cjs.entry.js +5 -5
  29. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +6 -6
  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 +35 -34
  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 +6 -6
  34. package/dist/cjs/ic-layout-grid-item.cjs.entry.js +2 -2
  35. package/dist/cjs/ic-layout-grid.cjs.entry.js +2 -2
  36. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  37. package/dist/cjs/ic-menu-group.cjs.entry.js +2 -2
  38. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-navigation-group.cjs.entry.js +2 -2
  41. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-navigation-menu.cjs.entry.js +5 -5
  43. package/dist/cjs/ic-page-header.cjs.entry.js +7 -7
  44. package/dist/cjs/ic-pagination-bar.cjs.entry.js +6 -6
  45. package/dist/cjs/ic-pagination-item.cjs.entry.js +2 -2
  46. package/dist/cjs/ic-pagination_3.cjs.entry.js +28 -26
  47. package/dist/cjs/ic-pagination_3.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-popover-menu.cjs.entry.js +5 -5
  49. package/dist/cjs/ic-radio-group.cjs.entry.js +7 -7
  50. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-radio-option.cjs.entry.js +9 -7
  52. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-search-bar.cjs.entry.js +10 -10
  54. package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
  55. package/dist/cjs/ic-side-navigation.cjs.entry.js +5 -5
  56. package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
  57. package/dist/cjs/ic-skip-link.cjs.entry.js +2 -2
  58. package/dist/cjs/ic-status-tag.cjs.entry.js +3 -3
  59. package/dist/cjs/ic-step.cjs.entry.js +14 -14
  60. package/dist/cjs/ic-stepper.cjs.entry.js +3 -3
  61. package/dist/cjs/ic-switch.cjs.entry.js +7 -9
  62. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -3
  65. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  66. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-theme.cjs.entry.js +2 -2
  68. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  69. package/dist/cjs/ic-toast.cjs.entry.js +6 -6
  70. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +3 -3
  71. package/dist/cjs/ic-toggle-button.cjs.entry.js +3 -3
  72. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-typography.cjs.entry.js +3 -3
  74. package/dist/cjs/loader.cjs.js +1 -1
  75. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js +5 -5
  76. package/dist/collection/components/ic-checkbox/ic-checkbox.js +4 -4
  77. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +2 -2
  78. package/dist/collection/components/ic-data-list/ic-data-list.js +2 -2
  79. package/dist/collection/components/ic-data-row/ic-data-row.js +2 -2
  80. package/dist/collection/components/ic-dialog/ic-dialog.js +41 -29
  81. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  82. package/dist/collection/components/ic-empty-state/ic-empty-state.js +2 -2
  83. package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
  84. package/dist/collection/components/ic-hero/ic-hero.js +4 -4
  85. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +5 -5
  86. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -3
  87. package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
  88. package/dist/collection/components/ic-input-label/ic-input-label.js +2 -2
  89. package/dist/collection/components/ic-input-validation/ic-input-validation.js +3 -3
  90. package/dist/collection/components/ic-layout-grid/ic-layout-grid.js +2 -2
  91. package/dist/collection/components/ic-layout-grid-item/ic-layout-grid-item.js +2 -2
  92. package/dist/collection/components/ic-link/ic-link.js +1 -1
  93. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +5 -5
  94. package/dist/collection/components/ic-menu/ic-menu.js +3 -3
  95. package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
  96. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +1 -1
  97. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -4
  98. package/dist/collection/components/ic-page-header/ic-page-header.js +6 -6
  99. package/dist/collection/components/ic-pagination/ic-pagination.js +4 -4
  100. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +5 -5
  101. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +1 -1
  102. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +4 -4
  103. package/dist/collection/components/ic-radio-group/ic-radio-group.css +15 -0
  104. package/dist/collection/components/ic-radio-group/ic-radio-group.js +9 -9
  105. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  106. package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +48 -4
  107. package/dist/collection/components/ic-radio-option/ic-radio-option.css +29 -444
  108. package/dist/collection/components/ic-radio-option/ic-radio-option.js +7 -5
  109. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  110. package/dist/collection/components/ic-search-bar/ic-search-bar.js +10 -10
  111. package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
  112. package/dist/collection/components/ic-select/ic-select.js +18 -16
  113. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  114. package/dist/collection/components/ic-select/ic-select.types.js.map +1 -1
  115. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +4 -4
  116. package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
  117. package/dist/collection/components/ic-skip-link/ic-skip-link.js +2 -2
  118. package/dist/collection/components/ic-status-tag/ic-status-tag.js +2 -2
  119. package/dist/collection/components/ic-step/ic-step.js +13 -13
  120. package/dist/collection/components/ic-stepper/ic-stepper.js +2 -2
  121. package/dist/collection/components/ic-switch/ic-switch.css +108 -43
  122. package/dist/collection/components/ic-switch/ic-switch.js +9 -11
  123. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  124. package/dist/collection/components/ic-switch/ic-switch.stories.js +8 -4
  125. package/dist/collection/components/ic-tab-context/ic-tab-context.js +1 -1
  126. package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -2
  127. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
  128. package/dist/collection/components/ic-text-field/ic-text-field.js +5 -5
  129. package/dist/collection/components/ic-theme/ic-theme.js +1 -1
  130. package/dist/collection/components/ic-toast/ic-toast.js +5 -5
  131. package/dist/collection/components/ic-toast-region/ic-toast-region.js +1 -1
  132. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +2 -2
  133. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +2 -2
  134. package/dist/collection/components/ic-tooltip/ic-tooltip.css +21 -0
  135. package/dist/collection/components/ic-tooltip/ic-tooltip.js +33 -3
  136. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  137. package/dist/collection/components/ic-tooltip/ic-tooltip.stories.js +128 -6
  138. package/dist/collection/components/ic-typography/ic-typography.js +2 -2
  139. package/dist/collection/utils/helpers.js +8 -66
  140. package/dist/collection/utils/helpers.js.map +1 -1
  141. package/dist/components/helpers.js +9 -67
  142. package/dist/components/helpers.js.map +1 -1
  143. package/dist/components/ic-action-chip.js +1 -1
  144. package/dist/components/ic-alert.js +1 -1
  145. package/dist/components/ic-card-horizontal.js +6 -6
  146. package/dist/components/ic-card-vertical.js +1 -1
  147. package/dist/components/ic-checkbox-group.js +2 -2
  148. package/dist/components/ic-checkbox.js +4 -4
  149. package/dist/components/ic-chip.js +1 -1
  150. package/dist/components/ic-data-list.js +2 -2
  151. package/dist/components/ic-data-row.js +2 -2
  152. package/dist/components/ic-dialog.js +41 -29
  153. package/dist/components/ic-dialog.js.map +1 -1
  154. package/dist/components/ic-divider2.js +1 -1
  155. package/dist/components/ic-empty-state.js +3 -3
  156. package/dist/components/ic-footer-link.js +2 -2
  157. package/dist/components/ic-footer.js +1 -1
  158. package/dist/components/ic-hero.js +5 -5
  159. package/dist/components/ic-horizontal-scroll2.js +6 -6
  160. package/dist/components/ic-input-component-container2.js +4 -4
  161. package/dist/components/ic-input-container2.js +2 -2
  162. package/dist/components/ic-input-label2.js +2 -2
  163. package/dist/components/ic-input-validation2.js +3 -3
  164. package/dist/components/ic-layout-grid-item.js +2 -2
  165. package/dist/components/ic-layout-grid.js +2 -2
  166. package/dist/components/ic-link2.js +1 -1
  167. package/dist/components/ic-loading-indicator2.js +5 -5
  168. package/dist/components/ic-menu-group.js +1 -1
  169. package/dist/components/ic-menu2.js +30 -29
  170. package/dist/components/ic-menu2.js.map +1 -1
  171. package/dist/components/ic-navigation-button.js +1 -1
  172. package/dist/components/ic-navigation-group.js +2 -2
  173. package/dist/components/ic-navigation-item.js +1 -1
  174. package/dist/components/ic-navigation-menu2.js +5 -5
  175. package/dist/components/ic-page-header.js +6 -6
  176. package/dist/components/ic-pagination-bar.js +6 -6
  177. package/dist/components/ic-pagination-item2.js +2 -2
  178. package/dist/components/ic-pagination2.js +4 -4
  179. package/dist/components/ic-popover-menu.js +4 -4
  180. package/dist/components/ic-radio-group.js +6 -6
  181. package/dist/components/ic-radio-group.js.map +1 -1
  182. package/dist/components/ic-radio-option.js +8 -6
  183. package/dist/components/ic-radio-option.js.map +1 -1
  184. package/dist/components/ic-search-bar.js +10 -10
  185. package/dist/components/ic-section-container2.js +2 -2
  186. package/dist/components/ic-select2.js +19 -17
  187. package/dist/components/ic-select2.js.map +1 -1
  188. package/dist/components/ic-side-navigation.js +5 -5
  189. package/dist/components/ic-side-navigation.js.map +1 -1
  190. package/dist/components/ic-skeleton.js +2 -2
  191. package/dist/components/ic-skeleton.js.map +1 -1
  192. package/dist/components/ic-skip-link.js +2 -2
  193. package/dist/components/ic-status-tag.js +2 -2
  194. package/dist/components/ic-step.js +13 -13
  195. package/dist/components/ic-stepper.js +2 -2
  196. package/dist/components/ic-switch.js +6 -8
  197. package/dist/components/ic-switch.js.map +1 -1
  198. package/dist/components/ic-tab-context.js +1 -1
  199. package/dist/components/ic-tab-group.js +2 -2
  200. package/dist/components/ic-tab-panel.js +2 -2
  201. package/dist/components/ic-text-field2.js +6 -6
  202. package/dist/components/ic-theme.js +2 -2
  203. package/dist/components/ic-toast-region.js +1 -1
  204. package/dist/components/ic-toast.js +6 -6
  205. package/dist/components/ic-toggle-button-group.js +2 -2
  206. package/dist/components/ic-toggle-button.js +3 -3
  207. package/dist/components/ic-tooltip2.js +13 -4
  208. package/dist/components/ic-tooltip2.js.map +1 -1
  209. package/dist/components/ic-top-navigation.js +1 -1
  210. package/dist/components/ic-typography2.js +2 -2
  211. package/dist/core/core.esm.js +1 -1
  212. package/dist/core/core.esm.js.map +1 -1
  213. package/dist/core/{p-3aed13ba.entry.js → p-023cf5d9.entry.js} +2 -2
  214. package/dist/core/{p-fb9376f0.entry.js → p-043a5677.entry.js} +2 -2
  215. package/dist/core/p-171a19bf.entry.js +3 -0
  216. package/dist/core/p-171a19bf.entry.js.map +1 -0
  217. package/dist/core/{p-347cc084.entry.js → p-19056c16.entry.js} +2 -2
  218. package/dist/core/{p-b777f0a1.entry.js → p-1cfaa962.entry.js} +2 -2
  219. package/dist/core/{p-659d048d.entry.js → p-23fb87be.entry.js} +2 -2
  220. package/dist/core/{p-f661ba76.entry.js → p-2424f82f.entry.js} +2 -2
  221. package/dist/core/{p-2691cc80.entry.js → p-243ae8fe.entry.js} +2 -2
  222. package/dist/core/{p-aad03a3c.entry.js → p-271ee0bc.entry.js} +2 -2
  223. package/dist/core/{p-67de1290.entry.js → p-2b1ce5b7.entry.js} +2 -2
  224. package/dist/core/p-343670b4.entry.js +2 -0
  225. package/dist/core/p-343670b4.entry.js.map +1 -0
  226. package/dist/core/{p-61d79fc6.entry.js → p-3da9774b.entry.js} +2 -2
  227. package/dist/core/{p-0fb7f915.entry.js → p-3ee66d00.entry.js} +2 -2
  228. package/dist/core/{p-ea7a3d30.entry.js → p-3f001e75.entry.js} +2 -2
  229. package/dist/core/{p-09505807.entry.js → p-406647b8.entry.js} +2 -2
  230. package/dist/core/{p-9cb83a2e.entry.js → p-44d043f7.entry.js} +2 -2
  231. package/dist/core/{p-4f56acff.entry.js → p-46e5a58b.entry.js} +2 -2
  232. package/dist/core/{p-cfbacca1.entry.js → p-4dbc72f4.entry.js} +2 -2
  233. package/dist/core/p-526dd099.entry.js +2 -0
  234. package/dist/core/p-526dd099.entry.js.map +1 -0
  235. package/dist/core/{p-f64996f1.entry.js → p-5fc0dc36.entry.js} +2 -2
  236. package/dist/core/{p-7b538fd1.entry.js → p-61799a8b.entry.js} +2 -2
  237. package/dist/core/{p-90678e67.entry.js → p-6b5edd6b.entry.js} +2 -2
  238. package/dist/core/p-70ca7796.entry.js +2 -0
  239. package/dist/core/p-70ca7796.entry.js.map +1 -0
  240. package/dist/core/{p-daec7e69.entry.js → p-72f52f20.entry.js} +2 -2
  241. package/dist/core/{p-9c2b2cb9.entry.js → p-74a3a450.entry.js} +2 -2
  242. package/dist/core/{p-c156e6e9.entry.js → p-796fc111.entry.js} +2 -2
  243. package/dist/core/{p-b52c44eb.entry.js → p-85232cec.entry.js} +2 -2
  244. package/dist/core/{p-b997ad5e.entry.js → p-85ac0d78.entry.js} +2 -2
  245. package/dist/core/{p-1b81ec88.entry.js → p-8fc5e9f9.entry.js} +2 -2
  246. package/dist/core/p-8fc5e9f9.entry.js.map +1 -0
  247. package/dist/core/{p-48a628f0.entry.js → p-9267c160.entry.js} +2 -2
  248. package/dist/core/{p-393af2bc.entry.js → p-970e190c.entry.js} +2 -2
  249. package/dist/core/p-98dee727.entry.js +2 -0
  250. package/dist/core/p-98dee727.entry.js.map +1 -0
  251. package/dist/core/{p-e938eb31.entry.js → p-99b20121.entry.js} +2 -2
  252. package/dist/core/{p-aaf4e367.entry.js → p-9ae157de.entry.js} +2 -2
  253. package/dist/core/{p-80d85403.entry.js → p-9b48971f.entry.js} +2 -2
  254. package/dist/core/{p-73043f57.entry.js → p-9ced00a7.entry.js} +2 -2
  255. package/dist/core/{p-bb7652cd.entry.js → p-a0c54a50.entry.js} +2 -2
  256. package/dist/core/{p-880f7548.entry.js → p-a5fcb9c1.entry.js} +2 -2
  257. package/dist/core/{p-a780a34b.entry.js → p-a7c263bd.entry.js} +2 -2
  258. package/dist/core/{p-99433296.entry.js → p-ab104baa.entry.js} +2 -2
  259. package/dist/core/{p-ef70ea50.entry.js → p-b27e147d.entry.js} +2 -2
  260. package/dist/core/{p-9502fb86.entry.js → p-b58fb588.entry.js} +2 -2
  261. package/dist/core/p-bb52e752.entry.js +2 -0
  262. package/dist/core/p-bb52e752.entry.js.map +1 -0
  263. package/dist/core/{p-2b87c592.entry.js → p-c0b70c08.entry.js} +2 -2
  264. package/dist/core/{p-46fd555f.entry.js → p-c41fd2cf.entry.js} +2 -2
  265. package/dist/core/{p-5900cb65.entry.js → p-c82c2362.entry.js} +2 -2
  266. package/dist/core/{p-e7767c0d.entry.js → p-ca64b7ba.entry.js} +2 -2
  267. package/dist/core/{p-cad23b7d.entry.js → p-cd963de6.entry.js} +2 -2
  268. package/dist/core/{p-735d3096.entry.js → p-cf669574.entry.js} +2 -2
  269. package/dist/core/{p-83578f1d.entry.js → p-cf87b6db.entry.js} +2 -2
  270. package/dist/core/{p-05fd2707.entry.js → p-d0d324b4.entry.js} +2 -2
  271. package/dist/core/{p-ea890d3d.entry.js → p-d0dd9f2c.entry.js} +2 -2
  272. package/dist/core/{p-5976de6e.entry.js → p-d1220d2a.entry.js} +2 -2
  273. package/dist/core/{p-50dca790.entry.js → p-d5fcd4f9.entry.js} +2 -2
  274. package/dist/core/{p-56de4f4b.entry.js → p-d7c6fc8d.entry.js} +2 -2
  275. package/dist/core/{p-506d428a.entry.js → p-d8de5b88.entry.js} +2 -2
  276. package/dist/core/{p-53ab3c0f.entry.js → p-e35f15ec.entry.js} +2 -2
  277. package/dist/core/p-e5266c19.entry.js +2 -0
  278. package/dist/core/p-e5266c19.entry.js.map +1 -0
  279. package/dist/core/{p-09caf7ed.entry.js → p-ec1ea1a7.entry.js} +2 -2
  280. package/dist/core/{p-b77b1e1f.js → p-eeb8d98a.js} +2 -2
  281. package/dist/core/p-eeb8d98a.js.map +1 -0
  282. package/dist/core/{p-2a124daf.entry.js → p-ef96e1aa.entry.js} +2 -2
  283. package/dist/core/{p-2bd80913.entry.js → p-fc4b7d2b.entry.js} +2 -2
  284. package/dist/core/{p-8a833e82.entry.js → p-fd9ea62a.entry.js} +2 -2
  285. package/dist/esm/core.js +1 -1
  286. package/dist/esm/{helpers-66681c73.js → helpers-33039856.js} +10 -68
  287. package/dist/esm/helpers-33039856.js.map +1 -0
  288. package/dist/esm/ic-accordion-group.entry.js +1 -1
  289. package/dist/esm/ic-accordion.entry.js +1 -1
  290. package/dist/esm/ic-action-chip.entry.js +1 -1
  291. package/dist/esm/ic-alert.entry.js +1 -1
  292. package/dist/esm/ic-back-to-top.entry.js +1 -1
  293. package/dist/esm/ic-badge.entry.js +1 -1
  294. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  295. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  296. package/dist/esm/ic-button_3.entry.js +17 -9
  297. package/dist/esm/ic-button_3.entry.js.map +1 -1
  298. package/dist/esm/ic-card-horizontal.entry.js +6 -6
  299. package/dist/esm/ic-card-vertical.entry.js +1 -1
  300. package/dist/esm/ic-checkbox-group.entry.js +3 -3
  301. package/dist/esm/ic-checkbox.entry.js +5 -5
  302. package/dist/esm/ic-chip.entry.js +1 -1
  303. package/dist/esm/ic-data-list.entry.js +2 -2
  304. package/dist/esm/ic-data-row.entry.js +3 -3
  305. package/dist/esm/ic-dialog.entry.js +41 -29
  306. package/dist/esm/ic-dialog.entry.js.map +1 -1
  307. package/dist/esm/ic-divider.entry.js +1 -1
  308. package/dist/esm/ic-empty-state.entry.js +3 -3
  309. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  310. package/dist/esm/ic-footer-link.entry.js +3 -3
  311. package/dist/esm/ic-footer.entry.js +1 -1
  312. package/dist/esm/ic-hero.entry.js +5 -5
  313. package/dist/esm/ic-horizontal-scroll.entry.js +6 -6
  314. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  315. package/dist/esm/ic-input-component-container_3.entry.js +35 -34
  316. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  317. package/dist/esm/ic-input-label_2.entry.js +6 -6
  318. package/dist/esm/ic-layout-grid-item.entry.js +2 -2
  319. package/dist/esm/ic-layout-grid.entry.js +2 -2
  320. package/dist/esm/ic-link.entry.js +2 -2
  321. package/dist/esm/ic-menu-group.entry.js +2 -2
  322. package/dist/esm/ic-menu-item.entry.js +1 -1
  323. package/dist/esm/ic-navigation-button.entry.js +1 -1
  324. package/dist/esm/ic-navigation-group.entry.js +2 -2
  325. package/dist/esm/ic-navigation-item.entry.js +1 -1
  326. package/dist/esm/ic-navigation-menu.entry.js +5 -5
  327. package/dist/esm/ic-page-header.entry.js +7 -7
  328. package/dist/esm/ic-pagination-bar.entry.js +6 -6
  329. package/dist/esm/ic-pagination-item.entry.js +2 -2
  330. package/dist/esm/ic-pagination_3.entry.js +28 -26
  331. package/dist/esm/ic-pagination_3.entry.js.map +1 -1
  332. package/dist/esm/ic-popover-menu.entry.js +5 -5
  333. package/dist/esm/ic-radio-group.entry.js +7 -7
  334. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  335. package/dist/esm/ic-radio-option.entry.js +9 -7
  336. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  337. package/dist/esm/ic-search-bar.entry.js +10 -10
  338. package/dist/esm/ic-section-container.entry.js +2 -2
  339. package/dist/esm/ic-side-navigation.entry.js +5 -5
  340. package/dist/esm/ic-skeleton.entry.js +2 -2
  341. package/dist/esm/ic-skip-link.entry.js +2 -2
  342. package/dist/esm/ic-status-tag.entry.js +3 -3
  343. package/dist/esm/ic-step.entry.js +14 -14
  344. package/dist/esm/ic-stepper.entry.js +3 -3
  345. package/dist/esm/ic-switch.entry.js +7 -9
  346. package/dist/esm/ic-switch.entry.js.map +1 -1
  347. package/dist/esm/ic-tab-context.entry.js +1 -1
  348. package/dist/esm/ic-tab-group.entry.js +3 -3
  349. package/dist/esm/ic-tab-panel.entry.js +2 -2
  350. package/dist/esm/ic-tab.entry.js +1 -1
  351. package/dist/esm/ic-theme.entry.js +2 -2
  352. package/dist/esm/ic-toast-region.entry.js +1 -1
  353. package/dist/esm/ic-toast.entry.js +6 -6
  354. package/dist/esm/ic-toggle-button-group.entry.js +3 -3
  355. package/dist/esm/ic-toggle-button.entry.js +3 -3
  356. package/dist/esm/ic-top-navigation.entry.js +1 -1
  357. package/dist/esm/ic-typography.entry.js +3 -3
  358. package/dist/esm/loader.js +1 -1
  359. package/dist/types/components/ic-dialog/ic-dialog.d.ts +2 -1
  360. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +2 -2
  361. package/dist/types/components/ic-select/ic-select.types.d.ts +2 -1
  362. package/dist/types/components/ic-switch/ic-switch.d.ts +2 -2
  363. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +8 -0
  364. package/dist/types/components.d.ts +12 -4
  365. package/dist/types/utils/helpers.d.ts +0 -31
  366. package/hydrate/index.js +263 -294
  367. package/hydrate/index.mjs +263 -294
  368. package/package.json +10 -9
  369. package/vscode-data.json +13 -3
  370. package/dist/cjs/helpers-81cd6930.js.map +0 -1
  371. package/dist/core/p-1b81ec88.entry.js.map +0 -1
  372. package/dist/core/p-6b4ec95f.entry.js +0 -3
  373. package/dist/core/p-6b4ec95f.entry.js.map +0 -1
  374. package/dist/core/p-a08d6b46.entry.js +0 -2
  375. package/dist/core/p-a08d6b46.entry.js.map +0 -1
  376. package/dist/core/p-a2953aad.entry.js +0 -2
  377. package/dist/core/p-a2953aad.entry.js.map +0 -1
  378. package/dist/core/p-a321feee.entry.js +0 -2
  379. package/dist/core/p-a321feee.entry.js.map +0 -1
  380. package/dist/core/p-b77b1e1f.js.map +0 -1
  381. package/dist/core/p-cbca04bb.entry.js +0 -2
  382. package/dist/core/p-cbca04bb.entry.js.map +0 -1
  383. package/dist/core/p-cc64e5ef.entry.js +0 -2
  384. package/dist/core/p-cc64e5ef.entry.js.map +0 -1
  385. package/dist/core/p-f84ac9c6.entry.js +0 -2
  386. package/dist/core/p-f84ac9c6.entry.js.map +0 -1
  387. package/dist/esm/helpers-66681c73.js.map +0 -1
  388. /package/dist/core/{p-3aed13ba.entry.js.map → p-023cf5d9.entry.js.map} +0 -0
  389. /package/dist/core/{p-fb9376f0.entry.js.map → p-043a5677.entry.js.map} +0 -0
  390. /package/dist/core/{p-347cc084.entry.js.map → p-19056c16.entry.js.map} +0 -0
  391. /package/dist/core/{p-b777f0a1.entry.js.map → p-1cfaa962.entry.js.map} +0 -0
  392. /package/dist/core/{p-659d048d.entry.js.map → p-23fb87be.entry.js.map} +0 -0
  393. /package/dist/core/{p-f661ba76.entry.js.map → p-2424f82f.entry.js.map} +0 -0
  394. /package/dist/core/{p-2691cc80.entry.js.map → p-243ae8fe.entry.js.map} +0 -0
  395. /package/dist/core/{p-aad03a3c.entry.js.map → p-271ee0bc.entry.js.map} +0 -0
  396. /package/dist/core/{p-67de1290.entry.js.map → p-2b1ce5b7.entry.js.map} +0 -0
  397. /package/dist/core/{p-61d79fc6.entry.js.map → p-3da9774b.entry.js.map} +0 -0
  398. /package/dist/core/{p-0fb7f915.entry.js.map → p-3ee66d00.entry.js.map} +0 -0
  399. /package/dist/core/{p-ea7a3d30.entry.js.map → p-3f001e75.entry.js.map} +0 -0
  400. /package/dist/core/{p-09505807.entry.js.map → p-406647b8.entry.js.map} +0 -0
  401. /package/dist/core/{p-9cb83a2e.entry.js.map → p-44d043f7.entry.js.map} +0 -0
  402. /package/dist/core/{p-4f56acff.entry.js.map → p-46e5a58b.entry.js.map} +0 -0
  403. /package/dist/core/{p-cfbacca1.entry.js.map → p-4dbc72f4.entry.js.map} +0 -0
  404. /package/dist/core/{p-f64996f1.entry.js.map → p-5fc0dc36.entry.js.map} +0 -0
  405. /package/dist/core/{p-7b538fd1.entry.js.map → p-61799a8b.entry.js.map} +0 -0
  406. /package/dist/core/{p-90678e67.entry.js.map → p-6b5edd6b.entry.js.map} +0 -0
  407. /package/dist/core/{p-daec7e69.entry.js.map → p-72f52f20.entry.js.map} +0 -0
  408. /package/dist/core/{p-9c2b2cb9.entry.js.map → p-74a3a450.entry.js.map} +0 -0
  409. /package/dist/core/{p-c156e6e9.entry.js.map → p-796fc111.entry.js.map} +0 -0
  410. /package/dist/core/{p-b52c44eb.entry.js.map → p-85232cec.entry.js.map} +0 -0
  411. /package/dist/core/{p-b997ad5e.entry.js.map → p-85ac0d78.entry.js.map} +0 -0
  412. /package/dist/core/{p-48a628f0.entry.js.map → p-9267c160.entry.js.map} +0 -0
  413. /package/dist/core/{p-393af2bc.entry.js.map → p-970e190c.entry.js.map} +0 -0
  414. /package/dist/core/{p-e938eb31.entry.js.map → p-99b20121.entry.js.map} +0 -0
  415. /package/dist/core/{p-aaf4e367.entry.js.map → p-9ae157de.entry.js.map} +0 -0
  416. /package/dist/core/{p-80d85403.entry.js.map → p-9b48971f.entry.js.map} +0 -0
  417. /package/dist/core/{p-73043f57.entry.js.map → p-9ced00a7.entry.js.map} +0 -0
  418. /package/dist/core/{p-bb7652cd.entry.js.map → p-a0c54a50.entry.js.map} +0 -0
  419. /package/dist/core/{p-880f7548.entry.js.map → p-a5fcb9c1.entry.js.map} +0 -0
  420. /package/dist/core/{p-a780a34b.entry.js.map → p-a7c263bd.entry.js.map} +0 -0
  421. /package/dist/core/{p-99433296.entry.js.map → p-ab104baa.entry.js.map} +0 -0
  422. /package/dist/core/{p-ef70ea50.entry.js.map → p-b27e147d.entry.js.map} +0 -0
  423. /package/dist/core/{p-9502fb86.entry.js.map → p-b58fb588.entry.js.map} +0 -0
  424. /package/dist/core/{p-2b87c592.entry.js.map → p-c0b70c08.entry.js.map} +0 -0
  425. /package/dist/core/{p-46fd555f.entry.js.map → p-c41fd2cf.entry.js.map} +0 -0
  426. /package/dist/core/{p-5900cb65.entry.js.map → p-c82c2362.entry.js.map} +0 -0
  427. /package/dist/core/{p-e7767c0d.entry.js.map → p-ca64b7ba.entry.js.map} +0 -0
  428. /package/dist/core/{p-cad23b7d.entry.js.map → p-cd963de6.entry.js.map} +0 -0
  429. /package/dist/core/{p-735d3096.entry.js.map → p-cf669574.entry.js.map} +0 -0
  430. /package/dist/core/{p-83578f1d.entry.js.map → p-cf87b6db.entry.js.map} +0 -0
  431. /package/dist/core/{p-05fd2707.entry.js.map → p-d0d324b4.entry.js.map} +0 -0
  432. /package/dist/core/{p-ea890d3d.entry.js.map → p-d0dd9f2c.entry.js.map} +0 -0
  433. /package/dist/core/{p-5976de6e.entry.js.map → p-d1220d2a.entry.js.map} +0 -0
  434. /package/dist/core/{p-50dca790.entry.js.map → p-d5fcd4f9.entry.js.map} +0 -0
  435. /package/dist/core/{p-56de4f4b.entry.js.map → p-d7c6fc8d.entry.js.map} +0 -0
  436. /package/dist/core/{p-506d428a.entry.js.map → p-d8de5b88.entry.js.map} +0 -0
  437. /package/dist/core/{p-53ab3c0f.entry.js.map → p-e35f15ec.entry.js.map} +0 -0
  438. /package/dist/core/{p-09caf7ed.entry.js.map → p-ec1ea1a7.entry.js.map} +0 -0
  439. /package/dist/core/{p-2a124daf.entry.js.map → p-ef96e1aa.entry.js.map} +0 -0
  440. /package/dist/core/{p-2bd80913.entry.js.map → p-fc4b7d2b.entry.js.map} +0 -0
  441. /package/dist/core/{p-8a833e82.entry.js.map → p-fd9ea62a.entry.js.map} +0 -0
@@ -40,7 +40,7 @@ export class ToastRegion {
40
40
  }
41
41
  }
42
42
  render() {
43
- return h("slot", { key: 'a8f7702ec7c396139a9fa455dd6900e4d3232f73' });
43
+ return h("slot", { key: '28f5e26c6dbfb2de076cff231b72722f1ff403c7' });
44
44
  }
45
45
  static get is() { return "ic-toast-region"; }
46
46
  static get properties() {
@@ -150,7 +150,7 @@ export class ToggleButton {
150
150
  render() {
151
151
  const { accessibleLabel, checked, disabled, fullWidth, iconPlacement, monochrome, label, loading, outline, size, theme, tooltipPlacement, variant, } = this;
152
152
  const iconVariant = variant === "icon";
153
- return (h(Host, { key: '40cd81ec38848d6b7b68707348ae0a2b7ee5a976', class: {
153
+ return (h(Host, { key: 'a90e2a846a52531dc542d039724dc8516a00ae14', class: {
154
154
  "ic-toggle-button-checked": checked,
155
155
  "ic-toggle-button-disabled": disabled,
156
156
  "ic-toggle-button-icon": iconVariant,
@@ -160,7 +160,7 @@ export class ToggleButton {
160
160
  "ic-toggle-button-hide-outline": !outline,
161
161
  [`ic-toggle-button-${size}`]: true,
162
162
  [`ic-theme-${theme}`]: theme !== "inherit",
163
- }, onFocus: this.handleFocus }, h("ic-button", { key: 'ba600a5f546ef45e668800e9f26226f6f7e4985a', "aria-pressed": `${checked}`, variant: iconVariant ? "icon-tertiary" : "secondary", onClick: this.handleClick, title: accessibleLabel, "aria-label": `${accessibleLabel ? accessibleLabel : label}, ${checked ? "ticked" : "unticked"}`, disabled: disabled, size: size, fullWidth: fullWidth, loading: loading, tooltipPlacement: tooltipPlacement }, !iconVariant && label, h("slot", { key: '881f7a3d2789ee1d5ba98851380c7dd8527a5ae2' }), isSlotUsed(this.el, "icon") && (h("slot", { key: '2ef62044db8f5c13f280b74cfcadcf6dcec7859e', name: "icon", slot: `${iconPlacement}-icon` })), isSlotUsed(this.el, "badge") && (h("slot", { key: '6fcb625790392bc0602cd58a2ce669aa55073e57', name: "badge", slot: "badge" })))));
163
+ }, onFocus: this.handleFocus }, h("ic-button", { key: '6f15f0c63675bd099d370ce02e2b02eeac4e913a', "aria-pressed": `${checked}`, variant: iconVariant ? "icon-tertiary" : "secondary", onClick: this.handleClick, title: accessibleLabel, "aria-label": `${accessibleLabel ? accessibleLabel : label}, ${checked ? "ticked" : "unticked"}`, disabled: disabled, size: size, fullWidth: fullWidth, loading: loading, tooltipPlacement: tooltipPlacement }, !iconVariant && label, h("slot", { key: '2503823bad70fa984db6c71d16cc863daaede0e3' }), isSlotUsed(this.el, "icon") && (h("slot", { key: '53969441b6446ec012b538c2f3d468ea0e793547', name: "icon", slot: `${iconPlacement}-icon` })), isSlotUsed(this.el, "badge") && (h("slot", { key: '2619be7d1528115db996708b102aadd611fd1b4b', name: "badge", slot: "badge" })))));
164
164
  }
165
165
  static get is() { return "ic-toggle-button"; }
166
166
  static get encapsulation() { return "shadow"; }
@@ -245,14 +245,14 @@ export class ToggleButtonGroup {
245
245
  }
246
246
  render() {
247
247
  const { accessibleLabel, disabled, fullWidth, loading, monochrome, outline, theme, } = this;
248
- return (h(Host, { key: '1238ec0b93b309a3945791eff6f847fb10b0abf5', role: "group", "aria-label": accessibleLabel, tabindex: disabled ? -1 : 0, class: {
248
+ return (h(Host, { key: 'b312b6cae074758bad82c66446709925e19cf5ce', role: "group", "aria-label": accessibleLabel, tabindex: disabled ? -1 : 0, class: {
249
249
  "ic-toggle-button-group-disabled": disabled,
250
250
  "ic-toggle-button-group-full-width": fullWidth,
251
251
  "ic-toggle-button-group-loading": loading,
252
252
  "ic-toggle-button-group-monochrome": monochrome,
253
253
  "ic-toggle-button-group-hide-outline": !outline,
254
254
  [`ic-theme-${theme}`]: theme !== "inherit",
255
- }, onFocus: this.handleHostFocus }, h("slot", { key: '6dfd004b9e0c386362d8172334dfca2f1e6274fc' })));
255
+ }, onFocus: this.handleHostFocus }, h("slot", { key: '8b09d946e7a8983b66f8bef384901899f88a54af' })));
256
256
  }
257
257
  static get is() { return "ic-toggle-button-group"; }
258
258
  static get encapsulation() { return "shadow"; }
@@ -577,6 +577,27 @@ video {
577
577
  display: inline-block;
578
578
  }
579
579
 
580
+ :host(.ic-tooltip.ic-tooltip-with-icon) .ic-tooltip-content {
581
+ display: flex;
582
+ align-items: flex-start;
583
+ justify-content: flex-start;
584
+ gap: var(--ic-space-xxs);
585
+ text-align: left;
586
+ }
587
+
588
+ :host(.ic-tooltip.ic-tooltip-with-icon) .ic-icon-container {
589
+ width: var(--ic-space-md);
590
+ height: var(--ic-space-md);
591
+ color: var(--ic-tooltip-text);
592
+ }
593
+
594
+ :host(.ic-tooltip.ic-tooltip-with-icon) ::slotted([slot="icon"]) {
595
+ width: var(--ic-space-md);
596
+ height: var(--ic-space-md);
597
+ display: inline-block;
598
+ margin-top: var(--ic-space-1px);
599
+ }
600
+
580
601
  @media screen and (max-width: 576px) {
581
602
  :host(.ic-tooltip) .ic-tooltip-container {
582
603
  max-width: 18.875rem;
@@ -1,6 +1,9 @@
1
1
  import { Host, h, } from "@stencil/core";
2
2
  import { createPopper } from "@popperjs/core";
3
- import { isSafari, onComponentRequiredPropUndefined, } from "../../utils/helpers";
3
+ import { isSafari, onComponentRequiredPropUndefined, isSlotUsed, renderDynamicChildSlots, } from "../../utils/helpers";
4
+ /**
5
+ * @slot icon - Icon will be rendered to the left of the tooltip text.
6
+ */
4
7
  export class Tooltip {
5
8
  constructor() {
6
9
  this.delayedHideEvents = ["mouseleave"];
@@ -189,6 +192,10 @@ export class Tooltip {
189
192
  }
190
193
  this.containerContentArea =
191
194
  (_b = (_a = container === null || container === void 0 ? void 0 : container.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector(".content-area")) !== null && _b !== void 0 ? _b : null;
195
+ this.hostMutationObserver = new MutationObserver((mutationList) => renderDynamicChildSlots(mutationList, "icon", this));
196
+ this.hostMutationObserver.observe(this.el, {
197
+ childList: true,
198
+ });
192
199
  onComponentRequiredPropUndefined([{ prop: this.label, propName: "label" }], "Tooltip");
193
200
  }
194
201
  componentDidRender() {
@@ -197,6 +204,9 @@ export class Tooltip {
197
204
  this.maxLines &&
198
205
  this.maxLines > 0 &&
199
206
  (typographyEl === null || typographyEl === void 0 ? void 0 : typographyEl.setAttribute("style", `--truncation-max-lines: ${this.maxLines}`));
207
+ if (this.iconAltText && !isSlotUsed(this.el, "icon")) {
208
+ console.warn(`Prop 'iconAltText' is provided without an icon slotted in the 'icon' slot. Please provide an icon or remove the 'iconAltText' prop.`);
209
+ }
200
210
  }
201
211
  /**
202
212
  * Method to programmatically show/hide the tooltip without needing to interact with an anchor element
@@ -215,10 +225,11 @@ export class Tooltip {
215
225
  }
216
226
  render() {
217
227
  const { label, maxLines, silent, theme } = this;
218
- return (h(Host, { key: '61c01b4710b1fb71a42044c7e4b7675497952575', class: {
228
+ return (h(Host, { key: 'f9990c54172e8fda3d24a9f613ff5328018b9c6c', class: {
219
229
  "ic-tooltip": true,
220
230
  [`ic-theme-${theme}`]: theme !== "inherit",
221
- }, "aria-label": isSafari && label }, h("div", { key: '5b7e00e8164b7a95ca17523d11b4bd02bc4eefbb', ref: (el) => (this.toolTip = el), role: "tooltip", class: "ic-tooltip-container", "aria-hidden": `${silent}` }, h("ic-typography", { key: 'a118c99c30c776f39ed25c630a4231cb637fdcd2', maxLines: maxLines, variant: "caption" }, label), h("div", { key: '2ee6065bc691893170591e43aba77973e6387141', ref: (el) => (this.arrow = el), class: "ic-tooltip-arrow" })), h("slot", { key: 'd76275c08c93ee6d4b39b0ab6be9093a8d5e6de1' })));
231
+ "ic-tooltip-with-icon": isSlotUsed(this.el, "icon"),
232
+ }, "aria-label": isSafari && label }, h("div", { key: '1b09f90e4da36ec2470bef240be537dc3642c922', ref: (el) => (this.toolTip = el), role: "tooltip", class: "ic-tooltip-container", "aria-hidden": `${silent}` }, h("div", { key: '1cbfb4ce2ba7fce474330e70aab9f6820845b80d', class: "ic-tooltip-content" }, isSlotUsed(this.el, "icon") && (h("div", { key: '3b82f426322ae769893569dc7c649f0ada256ad2', class: "ic-icon-container", "aria-hidden": `${!this.iconAltText}`, "aria-label": this.iconAltText, role: "img" }, h("slot", { key: '7dd357c6339e36a9d830d74e042f2772b6d1fb4e', name: "icon", "aria-hidden": "true" }))), h("ic-typography", { key: '959297e6c8134160c67aaea1f09b06b30bdc6bbb', maxLines: maxLines, variant: "caption" }, label)), h("div", { key: '8be3a57f5e5c7dcb1b16544ab18aa2fbf9f76ad6', ref: (el) => (this.arrow = el), class: "ic-tooltip-arrow" })), h("slot", { key: 'cb9ede12f1da7cf478cff4ae6914693e0ec3f560' })));
222
233
  }
223
234
  static get is() { return "ic-tooltip"; }
224
235
  static get encapsulation() { return "shadow"; }
@@ -294,6 +305,25 @@ export class Tooltip {
294
305
  "reflect": false,
295
306
  "defaultValue": "false"
296
307
  },
308
+ "iconAltText": {
309
+ "type": "string",
310
+ "mutable": false,
311
+ "complexType": {
312
+ "original": "string",
313
+ "resolved": "string | undefined",
314
+ "references": {}
315
+ },
316
+ "required": false,
317
+ "optional": true,
318
+ "docs": {
319
+ "tags": [],
320
+ "text": "The alt text to be used alongside a slotted icon."
321
+ },
322
+ "getter": false,
323
+ "setter": false,
324
+ "attribute": "icon-alt-text",
325
+ "reflect": false
326
+ },
297
327
  "maxLines": {
298
328
  "type": "number",
299
329
  "mutable": false,
@@ -1 +1 @@
1
- {"version":3,"file":"ic-tooltip.js","sourceRoot":"","sources":["../../../src/components/ic-tooltip/ic-tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n State,\n Watch,\n} from \"@stencil/core\";\nimport { Instance, Options, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport {\n isSafari,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-tooltip\",\n styleUrl: \"ic-tooltip.css\",\n shadow: true,\n})\nexport class Tooltip {\n private arrow: HTMLDivElement;\n private delayedHideEvents = [\"mouseleave\"];\n private containerContentArea: HTMLDivElement | null;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\n private showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n private toolTip: HTMLDivElement;\n\n @Element() el: HTMLIcTooltipElement;\n\n /**\n * If `true`, the tooltip will not be displayed on click, it will require hover or using the display method.\n */\n @Prop() disableClick?: boolean = false;\n\n @Watch(\"disableClick\")\n watchDisableClickHandler(): void {\n if (this.disableClick) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\n\n /**\n * If `true`, the tooltip will not be displayed on hover, it will require a click.\n */\n @Prop() disableHover?: boolean = false;\n\n @Watch(\"disableHover\")\n watchDisableHoverHandler(): void {\n if (this.disableHover) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\n\n /**\n * Setting to `true` can help in situations where tooltip content is clipped by a parent element.\n */\n @Prop() fixedPositioning: boolean = false;\n\n /**\n * The number of lines to display before truncating the text.\n */\n @Prop() maxLines?: number;\n\n /**\n * The position of the tooltip in relation to the parent element.\n */\n @Prop() placement?: IcTooltipPlacements = \"bottom\";\n\n /**\n * @internal Sets the tooltip to aria-hidden, when used as part of components that are already announced.\n */\n @Prop() silent?: boolean = false;\n\n /**\n * The ID of the element the tooltip is describing - for when aria-labelledby or aria-describedby is used.\n */\n @Prop({ reflect: true }) target?: string;\n\n /**\n * Sets the tooltip to the dark or light theme colors. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The text to display on the tooltip.\n */\n @Prop() label!: string;\n @Watch(\"label\")\n watchLabelHandler(): void {\n if (this.toolTip?.hasAttribute(\"data-show\") && this.popperInstance) {\n this.popperInstance.update();\n }\n }\n\n @State() popperProps: Partial<Options> = {};\n\n /**\n * Emitted when the tooltip becomes visible.\n */\n @Event() icTooltipShow: EventEmitter<void>;\n\n /**\n * @internal This method allows props to be added to the PopperJS createPopper instance outside of tooltip\n * @param props object - createPopper props set externally\n */\n @Method()\n async setExternalPopperProps<T extends Partial<Options>>(props: T) {\n this.popperProps = props;\n }\n\n disconnectedCallback(): void {\n this.manageEventListeners(\"remove\");\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\n }\n\n componentDidLoad(): void {\n this.manageEventListeners(\"add\");\n\n // Display tooltips correctly within drawer and dialog components\n let container: HTMLElement | null;\n\n if ((this.el.getRootNode() as ShadowRoot).host) {\n container = (this.el.getRootNode() as ShadowRoot).host.closest(\n \"ic-dialog, ic-drawer\"\n );\n } else {\n container = this.el.closest(\"ic-dialog, ic-drawer\");\n }\n this.containerContentArea =\n container?.shadowRoot?.querySelector(\".content-area\") ?? null;\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Tooltip\"\n );\n }\n\n componentDidRender(): void {\n const typographyEl = this.el.shadowRoot?.querySelector(\n \".ic-tooltip-container > ic-typography\"\n );\n this.maxLines &&\n this.maxLines > 0 &&\n typographyEl?.setAttribute(\n \"style\",\n `--truncation-max-lines: ${this.maxLines}`\n );\n }\n /**\n * Method to programmatically show/hide the tooltip without needing to interact with an anchor element\n * @param show Whether to show or hide the tooltip\n * @param persistTooltip Whether the tooltip should stay on the screen when actions are performed that would previously dismiss the tooltip, such as on hover\n */\n @Method()\n async displayTooltip(show: boolean, persistTooltip?: boolean): Promise<void> {\n this.persistTooltip = !!persistTooltip;\n show ? this.show() : this.hide();\n }\n\n /**\n * @internal Method to return if tooltip is currently visible.\n */\n @Method()\n async isTooltipVisible(): Promise<boolean> {\n return Promise.resolve(this.toolTip.hasAttribute(\"data-show\"));\n }\n\n private show = () => {\n if (this.label) {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.containerContentArea) {\n this.el.classList.add(\"ic-tooltip-in-container\");\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\n strategy: this.fixedPositioning ? \"fixed\" : \"absolute\",\n placement: this.placement,\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 10],\n },\n },\n {\n name: \"arrow\",\n options: {\n element: this.arrow,\n },\n },\n {\n name: \"eventListeners\",\n options: { scroll: false, resize: false },\n },\n ...(this.containerContentArea\n ? [\n {\n name: \"preventOverflow\",\n options: {\n boundary: this.containerContentArea,\n padding: 8,\n },\n },\n {\n name: \"flip\",\n options: {\n boundary: this.containerContentArea,\n },\n },\n ]\n : []),\n ],\n ...this.popperProps,\n });\n this.icTooltipShow.emit();\n } else {\n console.warn(`Tooltip can't display without prop 'label' set`);\n }\n };\n\n private hide = () => {\n if (this.toolTip !== undefined) {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\n }\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\n };\n\n private checkCloseTooltip = () => {\n setTimeout(() => {\n if (!this.mouseOverTool && !this.persistTooltip) {\n this.hide();\n }\n }, 100);\n };\n\n private mouseEnterTooltip = () => {\n this.mouseOverTool = true;\n };\n\n private mouseLeaveTooltip = () => {\n this.mouseOverTool = false;\n this.checkCloseTooltip();\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && !this.persistTooltip) {\n this.hide();\n }\n };\n\n private manageEventListeners = (action: \"add\" | \"remove\") => {\n const method =\n action === \"add\" ? \"addEventListener\" : \"removeEventListener\";\n\n this.showEvents.forEach((event) => {\n if (event) {\n this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\n }\n }\n });\n\n if (!this.persistTooltip) {\n this.instantHideEvents.forEach((event) => {\n this.el[method](event, this.hide);\n });\n }\n\n this.delayedHideEvents.forEach((event) => {\n this.el[method](event, this.checkCloseTooltip);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseLeaveTooltip);\n }\n });\n\n document[method](\"keydown\", this.handleKeyDown as EventListener);\n };\n\n private updateTooltipEvents = () => {\n this.manageEventListeners(\"remove\");\n this.showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n this.manageEventListeners(\"add\");\n };\n\n render() {\n const { label, maxLines, silent, theme } = this;\n return (\n <Host\n class={{\n \"ic-tooltip\": true,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n aria-label={isSafari && label} // accessible name needs to be in light dom to be announced by VoiceOver. Replace in v4 as aria-label on element with no role is not well-supported\n >\n <div\n ref={(el) => (this.toolTip = el as HTMLDivElement)}\n role=\"tooltip\"\n class=\"ic-tooltip-container\"\n aria-hidden={`${silent}`}\n >\n <ic-typography maxLines={maxLines} variant=\"caption\">\n {label}\n </ic-typography>\n <div\n ref={(el) => (this.arrow = el as HTMLDivElement)}\n class=\"ic-tooltip-arrow\"\n ></div>\n </div>\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-tooltip.js","sourceRoot":"","sources":["../../../src/components/ic-tooltip/ic-tooltip.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n State,\n Watch,\n} from \"@stencil/core\";\nimport { Instance, Options, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport {\n isSafari,\n onComponentRequiredPropUndefined,\n isSlotUsed,\n renderDynamicChildSlots,\n} from \"../../utils/helpers\";\nimport { IcThemeMode } from \"../../utils/types\";\n\n/**\n * @slot icon - Icon will be rendered to the left of the tooltip text.\n */\n\n@Component({\n tag: \"ic-tooltip\",\n styleUrl: \"ic-tooltip.css\",\n shadow: true,\n})\nexport class Tooltip {\n private arrow: HTMLDivElement;\n private delayedHideEvents = [\"mouseleave\"];\n private containerContentArea: HTMLDivElement | null;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\n private showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n private toolTip: HTMLDivElement;\n private hostMutationObserver?: MutationObserver;\n\n @Element() el: HTMLIcTooltipElement;\n\n /**\n * If `true`, the tooltip will not be displayed on click, it will require hover or using the display method.\n */\n @Prop() disableClick?: boolean = false;\n\n @Watch(\"disableClick\")\n watchDisableClickHandler(): void {\n if (this.disableClick) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\n\n /**\n * If `true`, the tooltip will not be displayed on hover, it will require a click.\n */\n @Prop() disableHover?: boolean = false;\n\n @Watch(\"disableHover\")\n watchDisableHoverHandler(): void {\n if (this.disableHover) {\n this.hide();\n }\n this.updateTooltipEvents();\n }\n\n /**\n * Setting to `true` can help in situations where tooltip content is clipped by a parent element.\n */\n @Prop() fixedPositioning: boolean = false;\n\n /**\n * The alt text to be used alongside a slotted icon.\n */\n @Prop() iconAltText?: string;\n\n /**\n * The number of lines to display before truncating the text.\n */\n @Prop() maxLines?: number;\n\n /**\n * The position of the tooltip in relation to the parent element.\n */\n @Prop() placement?: IcTooltipPlacements = \"bottom\";\n\n /**\n * @internal Sets the tooltip to aria-hidden, when used as part of components that are already announced.\n */\n @Prop() silent?: boolean = false;\n\n /**\n * The ID of the element the tooltip is describing - for when aria-labelledby or aria-describedby is used.\n */\n @Prop({ reflect: true }) target?: string;\n\n /**\n * Sets the tooltip to the dark or light theme colors. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The text to display on the tooltip.\n */\n @Prop() label!: string;\n @Watch(\"label\")\n watchLabelHandler(): void {\n if (this.toolTip?.hasAttribute(\"data-show\") && this.popperInstance) {\n this.popperInstance.update();\n }\n }\n\n @State() popperProps: Partial<Options> = {};\n\n /**\n * Emitted when the tooltip becomes visible.\n */\n @Event() icTooltipShow: EventEmitter<void>;\n\n /**\n * @internal This method allows props to be added to the PopperJS createPopper instance outside of tooltip\n * @param props object - createPopper props set externally\n */\n @Method()\n async setExternalPopperProps<T extends Partial<Options>>(props: T) {\n this.popperProps = props;\n }\n\n disconnectedCallback(): void {\n this.manageEventListeners(\"remove\");\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\n }\n\n componentDidLoad(): void {\n this.manageEventListeners(\"add\");\n\n // Display tooltips correctly within drawer and dialog components\n let container: HTMLElement | null;\n\n if ((this.el.getRootNode() as ShadowRoot).host) {\n container = (this.el.getRootNode() as ShadowRoot).host.closest(\n \"ic-dialog, ic-drawer\"\n );\n } else {\n container = this.el.closest(\"ic-dialog, ic-drawer\");\n }\n this.containerContentArea =\n container?.shadowRoot?.querySelector(\".content-area\") ?? null;\n this.hostMutationObserver = new MutationObserver((mutationList) =>\n renderDynamicChildSlots(mutationList, \"icon\", this)\n );\n this.hostMutationObserver.observe(this.el, {\n childList: true,\n });\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Tooltip\"\n );\n }\n\n componentDidRender(): void {\n const typographyEl = this.el.shadowRoot?.querySelector(\n \".ic-tooltip-container > ic-typography\"\n );\n this.maxLines &&\n this.maxLines > 0 &&\n typographyEl?.setAttribute(\n \"style\",\n `--truncation-max-lines: ${this.maxLines}`\n );\n\n if (this.iconAltText && !isSlotUsed(this.el, \"icon\")) {\n console.warn(\n `Prop 'iconAltText' is provided without an icon slotted in the 'icon' slot. Please provide an icon or remove the 'iconAltText' prop.`\n );\n }\n }\n\n /**\n * Method to programmatically show/hide the tooltip without needing to interact with an anchor element\n * @param show Whether to show or hide the tooltip\n * @param persistTooltip Whether the tooltip should stay on the screen when actions are performed that would previously dismiss the tooltip, such as on hover\n */\n @Method()\n async displayTooltip(show: boolean, persistTooltip?: boolean): Promise<void> {\n this.persistTooltip = !!persistTooltip;\n show ? this.show() : this.hide();\n }\n\n /**\n * @internal Method to return if tooltip is currently visible.\n */\n @Method()\n async isTooltipVisible(): Promise<boolean> {\n return Promise.resolve(this.toolTip.hasAttribute(\"data-show\"));\n }\n\n private show = () => {\n if (this.label) {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.containerContentArea) {\n this.el.classList.add(\"ic-tooltip-in-container\");\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\n strategy: this.fixedPositioning ? \"fixed\" : \"absolute\",\n placement: this.placement,\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 10],\n },\n },\n {\n name: \"arrow\",\n options: {\n element: this.arrow,\n },\n },\n {\n name: \"eventListeners\",\n options: { scroll: false, resize: false },\n },\n ...(this.containerContentArea\n ? [\n {\n name: \"preventOverflow\",\n options: {\n boundary: this.containerContentArea,\n padding: 8,\n },\n },\n {\n name: \"flip\",\n options: {\n boundary: this.containerContentArea,\n },\n },\n ]\n : []),\n ],\n ...this.popperProps,\n });\n this.icTooltipShow.emit();\n } else {\n console.warn(`Tooltip can't display without prop 'label' set`);\n }\n };\n\n private hide = () => {\n if (this.toolTip !== undefined) {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\n }\n if (this.popperInstance !== undefined) {\n this.popperInstance.destroy();\n }\n };\n\n private checkCloseTooltip = () => {\n setTimeout(() => {\n if (!this.mouseOverTool && !this.persistTooltip) {\n this.hide();\n }\n }, 100);\n };\n\n private mouseEnterTooltip = () => {\n this.mouseOverTool = true;\n };\n\n private mouseLeaveTooltip = () => {\n this.mouseOverTool = false;\n this.checkCloseTooltip();\n };\n\n private handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && !this.persistTooltip) {\n this.hide();\n }\n };\n\n private manageEventListeners = (action: \"add\" | \"remove\") => {\n const method =\n action === \"add\" ? \"addEventListener\" : \"removeEventListener\";\n\n this.showEvents.forEach((event) => {\n if (event) {\n this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\n }\n }\n });\n\n if (!this.persistTooltip) {\n this.instantHideEvents.forEach((event) => {\n this.el[method](event, this.hide);\n });\n }\n\n this.delayedHideEvents.forEach((event) => {\n this.el[method](event, this.checkCloseTooltip);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseLeaveTooltip);\n }\n });\n\n document[method](\"keydown\", this.handleKeyDown as EventListener);\n };\n\n private updateTooltipEvents = () => {\n this.manageEventListeners(\"remove\");\n this.showEvents = [\n !this.disableHover && \"mouseenter\",\n !this.disableHover && \"focusin\",\n !this.disableClick && \"click\",\n ];\n this.manageEventListeners(\"add\");\n };\n\n render() {\n const { label, maxLines, silent, theme } = this;\n return (\n <Host\n class={{\n \"ic-tooltip\": true,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n \"ic-tooltip-with-icon\": isSlotUsed(this.el, \"icon\"),\n }}\n aria-label={isSafari && label} // accessible name needs to be in light dom to be announced by VoiceOver. Replace in v4 as aria-label on element with no role is not well-supported\n >\n <div\n ref={(el) => (this.toolTip = el as HTMLDivElement)}\n role=\"tooltip\"\n class=\"ic-tooltip-container\"\n aria-hidden={`${silent}`}\n >\n <div class=\"ic-tooltip-content\">\n {isSlotUsed(this.el, \"icon\") && (\n <div\n class=\"ic-icon-container\"\n aria-hidden={`${!this.iconAltText}`}\n aria-label={this.iconAltText}\n role=\"img\"\n >\n <slot name=\"icon\" aria-hidden=\"true\"></slot>\n </div>\n )}\n <ic-typography maxLines={maxLines} variant=\"caption\">\n {label}\n </ic-typography>\n </div>\n <div\n ref={(el) => (this.arrow = el as HTMLDivElement)}\n class=\"ic-tooltip-arrow\"\n ></div>\n </div>\n <slot></slot>\n </Host>\n );\n }\n}\n"]}
@@ -9,6 +9,12 @@ const defaultArgs = {
9
9
  fixedPositioning: false,
10
10
  };
11
11
 
12
+ const defaultWithIconArgs = {
13
+ ...defaultArgs,
14
+ iconSlot: "icon",
15
+ tooltipIconAltText: "Check mark icon",
16
+ };
17
+
12
18
  export default {
13
19
  title: "Web Components/Tooltip",
14
20
  component: "ic-tooltip",
@@ -207,6 +213,30 @@ export const LeftPlacements = {
207
213
  name: "Left placements",
208
214
  };
209
215
 
216
+ export const TooltipWithSlottedIcon = {
217
+ render: () => html`
218
+ <ic-tooltip
219
+ label="This is a tooltip with a longer label and an icon to show how the text is aligned when there is an icon present."
220
+ id="ic-tooltip-with-icon"
221
+ icon-alt-text="Check mark icon"
222
+ >
223
+ <svg
224
+ slot="icon"
225
+ xmlns="http://www.w3.org/2000/svg"
226
+ height="24px"
227
+ viewBox="0 0 24 24"
228
+ width="24px"
229
+ fill="currentColor"
230
+ >
231
+ <path d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z" />
232
+ </svg>
233
+ <button aria-describedby="ic-tooltip-with-icon">Icon on Tooltip</button>
234
+ </ic-tooltip>
235
+ `,
236
+
237
+ name: "With Icon",
238
+ };
239
+
210
240
  export const Truncation = {
211
241
  render: () =>
212
242
  html`<ic-tooltip
@@ -359,9 +389,7 @@ export const Playground = {
359
389
  <ic-button aria-describedby="ic-tooltip-2"> ICDS </ic-button>
360
390
  </ic-tooltip>
361
391
  </div> `,
362
-
363
392
  args: defaultArgs,
364
-
365
393
  argTypes: {
366
394
  placement: {
367
395
  options: [
@@ -378,20 +406,114 @@ export const Playground = {
378
406
  "left",
379
407
  "left-start",
380
408
  ],
381
-
382
409
  control: {
383
410
  type: "select",
384
411
  },
385
412
  },
386
-
387
413
  theme: {
388
414
  options: ["inherit", "light", "dark"],
389
-
390
415
  control: {
391
416
  type: "inline-radio",
392
417
  },
393
418
  },
394
419
  },
395
-
396
420
  name: "Playground",
397
421
  };
422
+
423
+ export const PlaygroundWithIcon = {
424
+ render: (args) =>
425
+ html`<div style="margin: 250px">
426
+ <ic-tooltip
427
+ label=${args.label}
428
+ icon-alt-text=${args.tooltipIconAltText}
429
+ icon-slot=${args.iconSlot}
430
+ placement=${args.placement}
431
+ max-lines=${args.maxLines}
432
+ disable-hover=${args.disableHover}
433
+ id="ic-tooltip-1"
434
+ theme=${args.theme}
435
+ fixed-positioning=${args.fixedPositioning}
436
+ >
437
+ <svg
438
+ slot=${args.iconSlot}
439
+ aria-label=${args.tooltipIconAltText}
440
+ width="24"
441
+ height="24"
442
+ viewBox="0 0 24 24"
443
+ fill="currentColor"
444
+ xmlns="http://www.w3.org/2000/svg"
445
+ >
446
+ <path
447
+ d="M8.79502 15.875L4.62502 11.705L3.20502 13.115L8.79502 18.705L20.795 6.70501L19.385 5.29501L8.79502 15.875Z"
448
+ />
449
+ </svg>
450
+ <button aria-describedby="ic-tooltip-1">Native</button>
451
+ </ic-tooltip>
452
+ <ic-tooltip
453
+ label=${args.label}
454
+ icon-alt-text=${args.tooltipIconAltText}
455
+ icon-slot=${args.iconSlot}
456
+ placement=${args.placement}
457
+ max-lines=${args.maxLines}
458
+ disable-hover=${args.disableHover}
459
+ id="ic-tooltip-2"
460
+ theme=${args.theme}
461
+ fixed-positioning=${args.fixedPositioning}
462
+ >
463
+ <svg
464
+ slot=${args.iconSlot}
465
+ aria-label=${args.tooltipIconAltText}
466
+ width="24"
467
+ height="24"
468
+ viewBox="0 0 24 24"
469
+ fill="currentColor"
470
+ xmlns="http://www.w3.org/2000/svg"
471
+ >
472
+ <path
473
+ d="M8.79502 15.875L4.62502 11.705L3.20502 13.115L8.79502 18.705L20.795 6.70501L19.385 5.29501L8.79502 15.875Z"
474
+ />
475
+ </svg>
476
+ <ic-button aria-describedby="ic-tooltip-2"> ICDS </ic-button>
477
+ </ic-tooltip>
478
+ </div> `,
479
+ args: defaultWithIconArgs,
480
+ argTypes: {
481
+ placement: {
482
+ options: [
483
+ "bottom",
484
+ "top-start",
485
+ "top",
486
+ "top-end",
487
+ "right-start",
488
+ "right",
489
+ "right-end",
490
+ "bottom-end",
491
+ "bottom-start",
492
+ "left-end",
493
+ "left",
494
+ "left-start",
495
+ ],
496
+ control: {
497
+ type: "select",
498
+ },
499
+ },
500
+ theme: {
501
+ options: ["inherit", "light", "dark"],
502
+ control: {
503
+ type: "inline-radio",
504
+ },
505
+ },
506
+ iconSlot: {
507
+ options: ["icon", ""],
508
+ control: {
509
+ type: "select",
510
+ },
511
+ },
512
+ tooltipIconAltText: {
513
+ control: {
514
+ type: "text",
515
+ },
516
+ },
517
+ },
518
+ name: "Playground With Icon",
519
+ };
@@ -163,7 +163,7 @@ export class Typography {
163
163
  render() {
164
164
  var _a, _b;
165
165
  const { variant, applyVerticalMargins, maxLines, truncated, expanded, strikethrough, underline, italic, bold, theme, } = this;
166
- return (h(Host, { key: '9628fbe7b5d9c10f640fe189fe454c332e1f6011', class: {
166
+ return (h(Host, { key: 'ebe035263fde8a7f2d24b8c40386caa8920bc506', class: {
167
167
  [`ic-typography-${variant}`]: true,
168
168
  [`ic-typography-vertical-margins-${variant}`]: !!applyVerticalMargins,
169
169
  ["ic-typography-bold"]: !!bold,
@@ -176,7 +176,7 @@ export class Typography {
176
176
  ((_b = (_a = this.el.getRootNode()) === null || _a === void 0 ? void 0 : _a.host) === null || _b === void 0 ? void 0 : _b.tagName) ===
177
177
  "IC-TOOLTIP") &&
178
178
  maxLines &&
179
- maxLines > 0 ? (h("div", { class: "trunc-wrapper", ref: (el) => (this.truncWrapperEl = el) }, h("slot", null))) : (h("slot", null)), variant === "body" && maxLines && maxLines > 0 && truncated && (h("button", { key: 'e66a10144ba334ab8b2530e2cf666634ce335717', class: { "trunc-btn": true, focus: this.truncButtonFocussed }, onFocus: this.truncButtonFocus, onBlur: this.truncButtonBlur, onMouseDown: this.truncButtonFocusFromMouse, onClick: this.toggleExpanded }, expanded ? "See less" : "See more"))));
179
+ maxLines > 0 ? (h("div", { class: "trunc-wrapper", ref: (el) => (this.truncWrapperEl = el) }, h("slot", null))) : (h("slot", null)), variant === "body" && maxLines && maxLines > 0 && truncated && (h("button", { key: '78d2abb16288489fadb3c94a1cf1bbffd78ea67e', class: { "trunc-btn": true, focus: this.truncButtonFocussed }, onFocus: this.truncButtonFocus, onBlur: this.truncButtonBlur, onMouseDown: this.truncButtonFocusFromMouse, onClick: this.toggleExpanded }, expanded ? "See less" : "See more"))));
180
180
  }
181
181
  static get is() { return "ic-typography"; }
182
182
  static get encapsulation() { return "shadow"; }
@@ -475,10 +475,13 @@ export const focusElement = (focusAttemptCount, focusedElementIndex, interactive
475
475
  if (newFocusAttemptCount++ > interactiveElementList.length) {
476
476
  return;
477
477
  }
478
- let newFocusedElementIndex = focusedElementIndex;
479
478
  if (shouldSkipElement(element)) {
480
- newFocusedElementIndex = getFocusIndexBasedOnShiftKey(newFocusedElementIndex, shiftKey);
481
- newFocusedElementIndex = getLoopedNextFocusIndexIfLastElement(newFocusedElementIndex, interactiveElementList);
479
+ const nextIndex = shiftKey
480
+ ? focusedElementIndex - 1
481
+ : focusedElementIndex + 1;
482
+ const newFocusedElementIndex = nextIndex < 0
483
+ ? interactiveElementList.length - 1
484
+ : nextIndex % interactiveElementList.length;
482
485
  return focusElement(newFocusAttemptCount, newFocusedElementIndex, interactiveElementList, shiftKey);
483
486
  }
484
487
  else {
@@ -494,73 +497,12 @@ export const focusElement = (focusAttemptCount, focusedElementIndex, interactive
494
497
  default:
495
498
  element.focus();
496
499
  }
497
- return { newFocusAttemptCount, newFocusedElementIndex };
498
- }
499
- };
500
- /**
501
- * Gets the index of the currently focused element. Used for focus trapping.
502
- * @param el - host element of the component
503
- * @param interactiveElementList - list of interactive elements
504
- */
505
- export const getFocusedElementIndex = (el, interactiveElementList) => {
506
- var _a;
507
- for (let i = 0; i < interactiveElementList.length; i++) {
508
- if (interactiveElementList[i] ===
509
- (((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.activeElement) || document.activeElement)) {
510
- return i;
511
- }
512
- }
513
- return null;
514
- };
515
- /**
516
- * Gets the next focusable element index based on whether the shift key is pressed. Used for focus trapping.
517
- * @param focusedElementIndex - current focused element index
518
- * @param shiftKey - whether the shift key is pressed
519
- */
520
- export const getFocusIndexBasedOnShiftKey = (focusedElementIndex, shiftKey) => (shiftKey ? (focusedElementIndex -= 1) : (focusedElementIndex += 1));
521
- /**
522
- * Gets the next focusable element index, looping back to the start or end if necessary. Used for focus trapping.
523
- * @param focusedElementIndex - current focused element index
524
- * @param interactiveElementList - list of interactive elements
525
- */
526
- export const getLoopedNextFocusIndexIfLastElement = (focusedElementIndex, interactiveElementList) => {
527
- if (focusedElementIndex > interactiveElementList.length - 1) {
528
- return 0;
529
- }
530
- else if (focusedElementIndex < 0) {
531
- return interactiveElementList.length - 1;
532
- }
533
- return focusedElementIndex;
534
- };
535
- /**
536
- * Handles tab key press for focus trapping.
537
- * @param el - host element of the component
538
- * @param focusAttemptCount - number of focus attempts that have been made
539
- * @param focusedElementIndex - current focused element index
540
- * @param interactiveElementList - list of interactive elements
541
- * @param shiftKey - whether the shift key is pressed
542
- */
543
- export function handleFocusTrapTabKeyPress(el, focusAttemptCount, focusedElementIndex, interactiveElementList, shiftKey) {
544
- var _a;
545
- let newFocusAttemptCount = focusAttemptCount;
546
- let newFocusedElementIndex = getFocusedElementIndex(el, interactiveElementList) || focusedElementIndex;
547
- if (((_a = interactiveElementList[focusedElementIndex]) === null || _a === void 0 ? void 0 : _a.tagName) === IC_SEARCH_BAR) {
548
500
  return {
549
501
  newFocusAttemptCount,
550
- newFocusedElementIndex,
551
- preventDefault: false,
502
+ newFocusedElementIndex: focusedElementIndex,
552
503
  };
553
504
  }
554
- newFocusedElementIndex = getFocusIndexBasedOnShiftKey(newFocusedElementIndex, shiftKey);
555
- newFocusedElementIndex = getLoopedNextFocusIndexIfLastElement(newFocusedElementIndex, interactiveElementList);
556
- newFocusAttemptCount = 0;
557
- const focusElementResult = focusElement(newFocusAttemptCount, newFocusedElementIndex, interactiveElementList, shiftKey);
558
- if (focusElementResult) {
559
- newFocusedElementIndex = focusElementResult.newFocusedElementIndex;
560
- newFocusAttemptCount = focusElementResult.newFocusAttemptCount;
561
- }
562
- return { newFocusAttemptCount, newFocusedElementIndex, preventDefault: true };
563
- }
505
+ };
564
506
  /**
565
507
  * Sets up listener and mutation observer to refresh interactive elements on slot changes. Used for focus trapping.
566
508
  * @param contentWrapper - content wrapper element