@ukic/web-components 2.25.0 → 2.26.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (367) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-80016ff7.js → helpers-94b33ab0.js} +6 -2
  3. package/dist/cjs/helpers-94b33ab0.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-alert.cjs.entry.js +17 -1
  7. package/dist/cjs/ic-alert.cjs.entry.js.map +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 +11 -6
  13. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-card.cjs.entry.js +25 -1
  15. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-chip.cjs.entry.js +9 -3
  19. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-classification-banner.cjs.entry.js +12 -3
  21. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-empty-state.cjs.entry.js +20 -1
  26. package/dist/cjs/ic-empty-state.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-hero.cjs.entry.js +17 -1
  31. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-radio-group.cjs.entry.js +41 -22
  47. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  50. package/dist/cjs/ic-select.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-text-field.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-typography.cjs.entry.js +47 -12
  65. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  66. package/dist/cjs/loader.cjs.js +1 -1
  67. package/dist/collection/components/ic-alert/ic-alert.js +18 -2
  68. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  69. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js +15 -0
  70. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js.map +1 -1
  71. package/dist/collection/components/ic-card/ic-card.js +26 -2
  72. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  73. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js +21 -0
  74. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js.map +1 -1
  75. package/dist/collection/components/ic-chip/ic-chip.css +1 -0
  76. package/dist/collection/components/ic-chip/ic-chip.js +8 -2
  77. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  78. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +15 -0
  79. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  80. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js +12 -3
  81. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js.map +1 -1
  82. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js +48 -0
  83. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js.map +1 -1
  84. package/dist/collection/components/ic-empty-state/ic-empty-state.js +21 -2
  85. package/dist/collection/components/ic-empty-state/ic-empty-state.js.map +1 -1
  86. package/dist/collection/components/ic-hero/ic-hero.js +18 -2
  87. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  88. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +15 -0
  89. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  90. package/dist/collection/components/ic-radio-group/ic-radio-group.js +40 -21
  91. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  92. package/dist/collection/components/ic-tooltip/ic-tooltip.js +56 -6
  93. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  94. package/dist/collection/components/ic-typography/ic-typography.css +8 -0
  95. package/dist/collection/components/ic-typography/ic-typography.js +148 -13
  96. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  97. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js +55 -0
  98. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js.map +1 -1
  99. package/dist/collection/utils/helpers.js +4 -1
  100. package/dist/collection/utils/helpers.js.map +1 -1
  101. package/dist/components/helpers.js +5 -2
  102. package/dist/components/helpers.js.map +1 -1
  103. package/dist/components/ic-alert2.js +18 -2
  104. package/dist/components/ic-alert2.js.map +1 -1
  105. package/dist/components/ic-back-to-top.js +1 -1
  106. package/dist/components/ic-badge.js +1 -1
  107. package/dist/components/ic-breadcrumb-group.js +1 -1
  108. package/dist/components/ic-breadcrumb2.js +1 -1
  109. package/dist/components/ic-button2.js +1 -1
  110. package/dist/components/ic-card.js +26 -2
  111. package/dist/components/ic-card.js.map +1 -1
  112. package/dist/components/ic-checkbox-group.js +1 -1
  113. package/dist/components/ic-checkbox.js +1 -1
  114. package/dist/components/ic-chip.js +9 -3
  115. package/dist/components/ic-chip.js.map +1 -1
  116. package/dist/components/ic-classification-banner.js +12 -3
  117. package/dist/components/ic-classification-banner.js.map +1 -1
  118. package/dist/components/ic-data-row.js +1 -1
  119. package/dist/components/ic-dialog.js +1 -1
  120. package/dist/components/ic-divider2.js +1 -1
  121. package/dist/components/ic-empty-state.js +21 -2
  122. package/dist/components/ic-empty-state.js.map +1 -1
  123. package/dist/components/ic-footer-link-group.js +1 -1
  124. package/dist/components/ic-footer-link.js +1 -1
  125. package/dist/components/ic-footer.js +1 -1
  126. package/dist/components/ic-hero.js +18 -2
  127. package/dist/components/ic-hero.js.map +1 -1
  128. package/dist/components/ic-horizontal-scroll2.js +1 -1
  129. package/dist/components/ic-input-component-container2.js +1 -1
  130. package/dist/components/ic-input-label2.js +1 -1
  131. package/dist/components/ic-input-validation2.js +1 -1
  132. package/dist/components/ic-link2.js +1 -1
  133. package/dist/components/ic-loading-indicator2.js +1 -1
  134. package/dist/components/ic-menu-group.js +1 -1
  135. package/dist/components/ic-menu-item2.js +1 -1
  136. package/dist/components/ic-navigation-button.js +1 -1
  137. package/dist/components/ic-navigation-group.js +1 -1
  138. package/dist/components/ic-navigation-item.js +1 -1
  139. package/dist/components/ic-navigation-menu2.js +1 -1
  140. package/dist/components/ic-page-header.js +1 -1
  141. package/dist/components/ic-pagination-item2.js +1 -1
  142. package/dist/components/ic-popover-menu.js +1 -1
  143. package/dist/components/ic-radio-group.js +41 -22
  144. package/dist/components/ic-radio-group.js.map +1 -1
  145. package/dist/components/ic-radio-option.js +1 -1
  146. package/dist/components/ic-search-bar.js +1 -1
  147. package/dist/components/ic-select.js +1 -1
  148. package/dist/components/ic-side-navigation.js +1 -1
  149. package/dist/components/ic-step.js +1 -1
  150. package/dist/components/ic-stepper.js +1 -1
  151. package/dist/components/ic-switch.js +1 -1
  152. package/dist/components/ic-tab-panel.js +1 -1
  153. package/dist/components/ic-text-field2.js +1 -1
  154. package/dist/components/ic-theme.js +1 -1
  155. package/dist/components/ic-toast.js +1 -1
  156. package/dist/components/ic-tooltip2.js +12 -5
  157. package/dist/components/ic-tooltip2.js.map +1 -1
  158. package/dist/components/ic-top-navigation.js +1 -1
  159. package/dist/components/ic-typography2.js +53 -15
  160. package/dist/components/ic-typography2.js.map +1 -1
  161. package/dist/core/core.esm.js +1 -1
  162. package/dist/core/core.esm.js.map +1 -1
  163. package/dist/core/{p-21885256.entry.js → p-02262e76.entry.js} +2 -2
  164. package/dist/core/{p-e720925a.entry.js → p-03f23a55.entry.js} +2 -2
  165. package/dist/core/{p-b85c5581.entry.js → p-093600a2.entry.js} +2 -2
  166. package/dist/core/{p-6fdc8bef.entry.js → p-13a6e7ea.entry.js} +2 -2
  167. package/dist/core/{p-3574b7e4.entry.js → p-13ec2a00.entry.js} +2 -2
  168. package/dist/core/{p-bf70fe93.entry.js → p-1ae6aadb.entry.js} +2 -2
  169. package/dist/core/{p-c9efaee1.entry.js → p-1d6e6ebe.entry.js} +2 -2
  170. package/dist/core/{p-cc3f2353.entry.js → p-223889da.entry.js} +2 -2
  171. package/dist/core/{p-9128a8e0.entry.js → p-227f6a41.entry.js} +2 -2
  172. package/dist/core/{p-2e8aaf89.entry.js → p-230187a8.entry.js} +2 -2
  173. package/dist/core/p-2d930c9c.entry.js +2 -0
  174. package/dist/core/p-2d930c9c.entry.js.map +1 -0
  175. package/dist/core/p-3af60dee.entry.js +2 -0
  176. package/dist/core/{p-ced03499.entry.js.map → p-3af60dee.entry.js.map} +1 -1
  177. package/dist/core/{p-af439ab9.entry.js → p-3b4c9571.entry.js} +2 -2
  178. package/dist/core/{p-c623e1b0.entry.js → p-3f2d4108.entry.js} +2 -2
  179. package/dist/core/{p-9ec428cc.entry.js → p-49e997c7.entry.js} +2 -2
  180. package/dist/core/{p-de8d16f8.entry.js → p-55b11f6f.entry.js} +2 -2
  181. package/dist/core/{p-a10eebcc.entry.js → p-5ccd3703.entry.js} +2 -2
  182. package/dist/core/{p-a0e94ddd.entry.js → p-60746e10.entry.js} +2 -2
  183. package/dist/core/{p-4e6c5e80.entry.js → p-60f7f555.entry.js} +2 -2
  184. package/dist/core/{p-a305dc90.entry.js → p-69576aa0.entry.js} +2 -2
  185. package/dist/core/{p-3cc52cbc.entry.js → p-6fae7e1f.entry.js} +2 -2
  186. package/dist/core/{p-3cc52cbc.entry.js.map → p-6fae7e1f.entry.js.map} +1 -1
  187. package/dist/core/{p-81d3b43b.entry.js → p-7c2b59fe.entry.js} +2 -2
  188. package/dist/core/{p-cbb92eb0.entry.js → p-836e71de.entry.js} +2 -2
  189. package/dist/core/{p-52855153.entry.js → p-843ed766.entry.js} +2 -2
  190. package/dist/core/p-8c325d9b.entry.js +2 -0
  191. package/dist/core/p-8c325d9b.entry.js.map +1 -0
  192. package/dist/core/{p-20f1b05a.entry.js → p-9146a7f9.entry.js} +2 -2
  193. package/dist/core/{p-5443b79a.entry.js → p-936ab032.entry.js} +2 -2
  194. package/dist/core/{p-a399de54.entry.js → p-96505636.entry.js} +2 -2
  195. package/dist/core/{p-deebcbe3.entry.js → p-9c9ba3cd.entry.js} +2 -2
  196. package/dist/core/{p-072a5366.entry.js → p-a6ff78aa.entry.js} +2 -2
  197. package/dist/core/{p-74176f4c.entry.js → p-a75f3c4d.entry.js} +2 -2
  198. package/dist/core/p-ad67c84f.entry.js +2 -0
  199. package/dist/core/p-ad67c84f.entry.js.map +1 -0
  200. package/dist/core/{p-73e5eca2.entry.js → p-aeb001d7.entry.js} +2 -2
  201. package/dist/core/{p-1c654ddd.entry.js → p-b2ceb541.entry.js} +2 -2
  202. package/dist/core/{p-18536c24.entry.js → p-b9be021b.entry.js} +2 -2
  203. package/dist/core/p-b9be021b.entry.js.map +1 -0
  204. package/dist/core/{p-910ab8e5.entry.js → p-bb963aa4.entry.js} +2 -2
  205. package/dist/core/p-be5d5f93.entry.js +2 -0
  206. package/dist/core/p-be5d5f93.entry.js.map +1 -0
  207. package/dist/core/{p-6167880d.entry.js → p-c1d5e7f2.entry.js} +2 -2
  208. package/dist/core/{p-8df60639.entry.js → p-c59474bb.entry.js} +2 -2
  209. package/dist/core/{p-8d98835c.entry.js → p-cb14349b.entry.js} +2 -2
  210. package/dist/core/p-d21f0d15.entry.js +2 -0
  211. package/dist/core/p-d21f0d15.entry.js.map +1 -0
  212. package/dist/core/{p-9419b840.entry.js → p-d3750771.entry.js} +2 -2
  213. package/dist/core/{p-b3178032.entry.js → p-db52d416.entry.js} +2 -2
  214. package/dist/core/p-dbc0f5da.entry.js +2 -0
  215. package/dist/core/p-dbc0f5da.entry.js.map +1 -0
  216. package/dist/core/{p-7ce6fb3b.entry.js → p-dcd475cc.entry.js} +2 -2
  217. package/dist/core/{p-4661ee3b.entry.js → p-dd9d8e68.entry.js} +2 -2
  218. package/dist/core/{p-09a2f6ff.entry.js → p-def5ba6b.entry.js} +2 -2
  219. package/dist/core/{p-e4f0fc68.entry.js → p-e6bad80b.entry.js} +2 -2
  220. package/dist/core/{p-2c9cf064.entry.js → p-e7fa6804.entry.js} +2 -2
  221. package/dist/core/{p-8619c625.entry.js → p-e8fa0095.entry.js} +2 -2
  222. package/dist/core/p-ed2b2bd7.entry.js +2 -0
  223. package/dist/core/p-ed2b2bd7.entry.js.map +1 -0
  224. package/dist/core/{p-92c7f4c5.entry.js → p-ee1c9f20.entry.js} +2 -2
  225. package/dist/core/{p-4c97f1e6.entry.js → p-f735a277.entry.js} +2 -2
  226. package/dist/core/{p-a5dd7065.js → p-fef9e8c9.js} +2 -2
  227. package/dist/core/p-fef9e8c9.js.map +1 -0
  228. package/dist/esm/core.js +1 -1
  229. package/dist/esm/{helpers-988ce06b.js → helpers-3905ccc4.js} +6 -3
  230. package/dist/esm/helpers-3905ccc4.js.map +1 -0
  231. package/dist/esm/ic-accordion-group.entry.js +1 -1
  232. package/dist/esm/ic-accordion.entry.js +1 -1
  233. package/dist/esm/ic-alert.entry.js +18 -2
  234. package/dist/esm/ic-alert.entry.js.map +1 -1
  235. package/dist/esm/ic-back-to-top.entry.js +1 -1
  236. package/dist/esm/ic-badge.entry.js +1 -1
  237. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  238. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  239. package/dist/esm/ic-button_3.entry.js +11 -6
  240. package/dist/esm/ic-button_3.entry.js.map +1 -1
  241. package/dist/esm/ic-card.entry.js +26 -2
  242. package/dist/esm/ic-card.entry.js.map +1 -1
  243. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  244. package/dist/esm/ic-checkbox.entry.js +1 -1
  245. package/dist/esm/ic-chip.entry.js +9 -3
  246. package/dist/esm/ic-chip.entry.js.map +1 -1
  247. package/dist/esm/ic-classification-banner.entry.js +12 -3
  248. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  249. package/dist/esm/ic-data-row.entry.js +1 -1
  250. package/dist/esm/ic-dialog.entry.js +1 -1
  251. package/dist/esm/ic-divider.entry.js +1 -1
  252. package/dist/esm/ic-empty-state.entry.js +21 -2
  253. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  254. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  255. package/dist/esm/ic-footer-link.entry.js +1 -1
  256. package/dist/esm/ic-footer.entry.js +1 -1
  257. package/dist/esm/ic-hero.entry.js +18 -2
  258. package/dist/esm/ic-hero.entry.js.map +1 -1
  259. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  260. package/dist/esm/ic-input-component-container_3.entry.js +1 -1
  261. package/dist/esm/ic-input-label_2.entry.js +1 -1
  262. package/dist/esm/ic-link.entry.js +1 -1
  263. package/dist/esm/ic-menu-group.entry.js +1 -1
  264. package/dist/esm/ic-menu-item.entry.js +1 -1
  265. package/dist/esm/ic-navigation-button.entry.js +1 -1
  266. package/dist/esm/ic-navigation-group.entry.js +1 -1
  267. package/dist/esm/ic-navigation-item.entry.js +1 -1
  268. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  269. package/dist/esm/ic-page-header.entry.js +1 -1
  270. package/dist/esm/ic-pagination-item.entry.js +1 -1
  271. package/dist/esm/ic-pagination.entry.js +1 -1
  272. package/dist/esm/ic-popover-menu.entry.js +1 -1
  273. package/dist/esm/ic-radio-group.entry.js +41 -22
  274. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  275. package/dist/esm/ic-radio-option.entry.js +1 -1
  276. package/dist/esm/ic-search-bar.entry.js +1 -1
  277. package/dist/esm/ic-select.entry.js +1 -1
  278. package/dist/esm/ic-side-navigation.entry.js +1 -1
  279. package/dist/esm/ic-status-tag.entry.js +1 -1
  280. package/dist/esm/ic-step.entry.js +1 -1
  281. package/dist/esm/ic-stepper.entry.js +1 -1
  282. package/dist/esm/ic-switch.entry.js +1 -1
  283. package/dist/esm/ic-tab-group.entry.js +1 -1
  284. package/dist/esm/ic-tab-panel.entry.js +1 -1
  285. package/dist/esm/ic-tab.entry.js +1 -1
  286. package/dist/esm/ic-text-field.entry.js +1 -1
  287. package/dist/esm/ic-theme.entry.js +1 -1
  288. package/dist/esm/ic-toast.entry.js +1 -1
  289. package/dist/esm/ic-toggle-button.entry.js +1 -1
  290. package/dist/esm/ic-top-navigation.entry.js +1 -1
  291. package/dist/esm/ic-typography.entry.js +48 -13
  292. package/dist/esm/ic-typography.entry.js.map +1 -1
  293. package/dist/esm/loader.js +1 -1
  294. package/dist/types/components/ic-alert/ic-alert.d.ts +3 -0
  295. package/dist/types/components/ic-card/ic-card.d.ts +2 -0
  296. package/dist/types/components/ic-chip/ic-chip.d.ts +2 -0
  297. package/dist/types/components/ic-empty-state/ic-empty-state.d.ts +3 -0
  298. package/dist/types/components/ic-hero/ic-hero.d.ts +3 -0
  299. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +3 -0
  300. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +7 -0
  301. package/dist/types/components/ic-typography/ic-typography.d.ts +23 -1
  302. package/dist/types/components.d.ts +30 -0
  303. package/dist/types/utils/helpers.d.ts +2 -1
  304. package/hydrate/index.js +194 -45
  305. package/package.json +2 -2
  306. package/dist/cjs/helpers-80016ff7.js.map +0 -1
  307. package/dist/core/p-18536c24.entry.js.map +0 -1
  308. package/dist/core/p-2eb95212.entry.js +0 -2
  309. package/dist/core/p-2eb95212.entry.js.map +0 -1
  310. package/dist/core/p-4d1490ce.entry.js +0 -2
  311. package/dist/core/p-4d1490ce.entry.js.map +0 -1
  312. package/dist/core/p-74e3ca39.entry.js +0 -2
  313. package/dist/core/p-74e3ca39.entry.js.map +0 -1
  314. package/dist/core/p-88c0dc04.entry.js +0 -2
  315. package/dist/core/p-88c0dc04.entry.js.map +0 -1
  316. package/dist/core/p-a5dd7065.js.map +0 -1
  317. package/dist/core/p-ced03499.entry.js +0 -2
  318. package/dist/core/p-de7c0f2c.entry.js +0 -2
  319. package/dist/core/p-de7c0f2c.entry.js.map +0 -1
  320. package/dist/core/p-e5a6218b.entry.js +0 -2
  321. package/dist/core/p-e5a6218b.entry.js.map +0 -1
  322. package/dist/core/p-f807e600.entry.js +0 -2
  323. package/dist/core/p-f807e600.entry.js.map +0 -1
  324. package/dist/esm/helpers-988ce06b.js.map +0 -1
  325. /package/dist/core/{p-21885256.entry.js.map → p-02262e76.entry.js.map} +0 -0
  326. /package/dist/core/{p-e720925a.entry.js.map → p-03f23a55.entry.js.map} +0 -0
  327. /package/dist/core/{p-b85c5581.entry.js.map → p-093600a2.entry.js.map} +0 -0
  328. /package/dist/core/{p-6fdc8bef.entry.js.map → p-13a6e7ea.entry.js.map} +0 -0
  329. /package/dist/core/{p-3574b7e4.entry.js.map → p-13ec2a00.entry.js.map} +0 -0
  330. /package/dist/core/{p-bf70fe93.entry.js.map → p-1ae6aadb.entry.js.map} +0 -0
  331. /package/dist/core/{p-c9efaee1.entry.js.map → p-1d6e6ebe.entry.js.map} +0 -0
  332. /package/dist/core/{p-cc3f2353.entry.js.map → p-223889da.entry.js.map} +0 -0
  333. /package/dist/core/{p-9128a8e0.entry.js.map → p-227f6a41.entry.js.map} +0 -0
  334. /package/dist/core/{p-2e8aaf89.entry.js.map → p-230187a8.entry.js.map} +0 -0
  335. /package/dist/core/{p-af439ab9.entry.js.map → p-3b4c9571.entry.js.map} +0 -0
  336. /package/dist/core/{p-c623e1b0.entry.js.map → p-3f2d4108.entry.js.map} +0 -0
  337. /package/dist/core/{p-9ec428cc.entry.js.map → p-49e997c7.entry.js.map} +0 -0
  338. /package/dist/core/{p-de8d16f8.entry.js.map → p-55b11f6f.entry.js.map} +0 -0
  339. /package/dist/core/{p-a10eebcc.entry.js.map → p-5ccd3703.entry.js.map} +0 -0
  340. /package/dist/core/{p-a0e94ddd.entry.js.map → p-60746e10.entry.js.map} +0 -0
  341. /package/dist/core/{p-4e6c5e80.entry.js.map → p-60f7f555.entry.js.map} +0 -0
  342. /package/dist/core/{p-a305dc90.entry.js.map → p-69576aa0.entry.js.map} +0 -0
  343. /package/dist/core/{p-81d3b43b.entry.js.map → p-7c2b59fe.entry.js.map} +0 -0
  344. /package/dist/core/{p-cbb92eb0.entry.js.map → p-836e71de.entry.js.map} +0 -0
  345. /package/dist/core/{p-52855153.entry.js.map → p-843ed766.entry.js.map} +0 -0
  346. /package/dist/core/{p-20f1b05a.entry.js.map → p-9146a7f9.entry.js.map} +0 -0
  347. /package/dist/core/{p-5443b79a.entry.js.map → p-936ab032.entry.js.map} +0 -0
  348. /package/dist/core/{p-a399de54.entry.js.map → p-96505636.entry.js.map} +0 -0
  349. /package/dist/core/{p-deebcbe3.entry.js.map → p-9c9ba3cd.entry.js.map} +0 -0
  350. /package/dist/core/{p-072a5366.entry.js.map → p-a6ff78aa.entry.js.map} +0 -0
  351. /package/dist/core/{p-74176f4c.entry.js.map → p-a75f3c4d.entry.js.map} +0 -0
  352. /package/dist/core/{p-73e5eca2.entry.js.map → p-aeb001d7.entry.js.map} +0 -0
  353. /package/dist/core/{p-1c654ddd.entry.js.map → p-b2ceb541.entry.js.map} +0 -0
  354. /package/dist/core/{p-910ab8e5.entry.js.map → p-bb963aa4.entry.js.map} +0 -0
  355. /package/dist/core/{p-6167880d.entry.js.map → p-c1d5e7f2.entry.js.map} +0 -0
  356. /package/dist/core/{p-8df60639.entry.js.map → p-c59474bb.entry.js.map} +0 -0
  357. /package/dist/core/{p-8d98835c.entry.js.map → p-cb14349b.entry.js.map} +0 -0
  358. /package/dist/core/{p-9419b840.entry.js.map → p-d3750771.entry.js.map} +0 -0
  359. /package/dist/core/{p-b3178032.entry.js.map → p-db52d416.entry.js.map} +0 -0
  360. /package/dist/core/{p-7ce6fb3b.entry.js.map → p-dcd475cc.entry.js.map} +0 -0
  361. /package/dist/core/{p-4661ee3b.entry.js.map → p-dd9d8e68.entry.js.map} +0 -0
  362. /package/dist/core/{p-09a2f6ff.entry.js.map → p-def5ba6b.entry.js.map} +0 -0
  363. /package/dist/core/{p-e4f0fc68.entry.js.map → p-e6bad80b.entry.js.map} +0 -0
  364. /package/dist/core/{p-2c9cf064.entry.js.map → p-e7fa6804.entry.js.map} +0 -0
  365. /package/dist/core/{p-8619c625.entry.js.map → p-e8fa0095.entry.js.map} +0 -0
  366. /package/dist/core/{p-92c7f4c5.entry.js.map → p-ee1c9f20.entry.js.map} +0 -0
  367. /package/dist/core/{p-4c97f1e6.entry.js.map → p-f735a277.entry.js.map} +0 -0
@@ -1,4 +1,4 @@
1
- import { Host, h } from "@stencil/core";
1
+ import { Host, h, } from "@stencil/core";
2
2
  import { createPopper } from "@popperjs/core";
3
3
  import { onComponentRequiredPropUndefined } from "../../utils/helpers";
4
4
  export class Tooltip {
@@ -85,9 +85,7 @@ export class Tooltip {
85
85
  .getBoundingClientRect();
86
86
  this.getTooltipTranslate(dialogEl);
87
87
  }
88
- this.popperInstance = createPopper(this.el, this.toolTip, {
89
- placement: this.placement,
90
- modifiers: [
88
+ this.popperInstance = createPopper(this.el, this.toolTip, Object.assign({ placement: this.placement, modifiers: [
91
89
  {
92
90
  name: "offset",
93
91
  options: {
@@ -104,8 +102,7 @@ export class Tooltip {
104
102
  name: "eventListeners",
105
103
  options: { scroll: false, resize: false },
106
104
  },
107
- ],
108
- });
105
+ ] }, this.popperProps));
109
106
  }
110
107
  else {
111
108
  console.warn(`Tooltip can't display without prop 'label' set`);
@@ -165,6 +162,14 @@ export class Tooltip {
165
162
  this.silent = false;
166
163
  this.target = undefined;
167
164
  this.label = undefined;
165
+ this.popperProps = {};
166
+ }
167
+ /**
168
+ * @internal This method allows props to be added to the PopperJS createPopper instance outside of tooltip
169
+ * @param props object - createPopper props set externally
170
+ */
171
+ async setExternalPopperProps(props) {
172
+ this.popperProps = props;
168
173
  }
169
174
  disconnectedCallback() {
170
175
  this.manageEventListeners("remove");
@@ -356,8 +361,53 @@ export class Tooltip {
356
361
  }
357
362
  };
358
363
  }
364
+ static get states() {
365
+ return {
366
+ "popperProps": {}
367
+ };
368
+ }
359
369
  static get methods() {
360
370
  return {
371
+ "setExternalPopperProps": {
372
+ "complexType": {
373
+ "signature": "<T extends Partial<Options>>(props: T) => Promise<void>",
374
+ "parameters": [{
375
+ "name": "props",
376
+ "type": "T",
377
+ "docs": "object - createPopper props set externally"
378
+ }],
379
+ "references": {
380
+ "Promise": {
381
+ "location": "global",
382
+ "id": "global::Promise"
383
+ },
384
+ "Partial": {
385
+ "location": "global",
386
+ "id": "global::Partial"
387
+ },
388
+ "Options": {
389
+ "location": "import",
390
+ "path": "@popperjs/core",
391
+ "id": ""
392
+ },
393
+ "T": {
394
+ "location": "global",
395
+ "id": "global::T"
396
+ }
397
+ },
398
+ "return": "Promise<void>"
399
+ },
400
+ "docs": {
401
+ "text": "",
402
+ "tags": [{
403
+ "name": "internal",
404
+ "text": "This method allows props to be added to the PopperJS createPopper instance outside of tooltip"
405
+ }, {
406
+ "name": "param",
407
+ "text": "props object - createPopper props set externally"
408
+ }]
409
+ }
410
+ },
361
411
  "displayTooltip": {
362
412
  "complexType": {
363
413
  "signature": "(show: boolean, persistTooltip?: boolean) => Promise<void>",
@@ -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 { Component, Element, Host, Prop, h, Method } from \"@stencil/core\";\nimport { Instance, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\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 dialogOverflow = false;\n private icDialogEl: HTMLIcDialogElement;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\n private onDialog: boolean = false;\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 * @internal 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 /**\n * If `true`, the tooltip will not be displayed on hover, it will require a click.\n */\n @Prop() disableHover?: 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({ mutable: true }) 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 * The text to display on the tooltip.\n */\n @Prop() label!: string;\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 this.icDialogEl = this.el.closest(\"ic-dialog\");\n this.dialogOverflow =\n this.icDialogEl?.getAttribute(\"data-overflow\") === \"true\";\n\n this.onDialog = this.icDialogEl !== 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 > 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 getTooltipTranslate = (dialogEl: DOMRect) => {\n const child = this.el.children[0].getBoundingClientRect();\n let tooltipX;\n let tooltipY;\n switch (this.placement) {\n case \"bottom\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"top\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"left\":\n case \"left-start\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"left-end\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n case \"right\":\n case \"right-start\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"right-end\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n }\n if (this.dialogOverflow && tooltipX < 0) {\n if (this.placement.includes(\"top\") || this.placement.includes(\"bottom\")) {\n this.toolTip.style.setProperty(\n \"--tooltip-arrow-translate\",\n `${tooltipX}px`\n );\n tooltipX = child.left - dialogEl.left;\n }\n if (this.placement.includes(\"left\")) {\n this.placement = \"right\";\n tooltipX = child.left - dialogEl.left + child.width;\n }\n }\n\n this.toolTip.style.setProperty(\"--tooltip-translate-x\", `${tooltipX}px`);\n this.toolTip.style.setProperty(\"--tooltip-translate-y\", `${tooltipY}px`);\n };\n\n private show = () => {\n if (this.label) {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.onDialog) {\n this.el.classList.add(\"on-dialog\");\n const dialogEl = this.icDialogEl.shadowRoot\n .querySelector(\"dialog\")\n .getBoundingClientRect();\n\n this.getTooltipTranslate(dialogEl);\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\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 ],\n });\n } else {\n console.warn(`Tooltip can't display without prop 'label' set`);\n }\n };\n\n private hide = () => {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\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 this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\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);\n };\n\n render() {\n const { label, maxLines, silent } = this;\n return (\n <Host class={{ \"ic-tooltip\": true }}>\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 Host,\n Prop,\n h,\n Method,\n State,\n} from \"@stencil/core\";\nimport { Instance, Options, createPopper } from \"@popperjs/core\";\nimport { IcTooltipPlacements } from \"./ic-tooltip.types\";\nimport { onComponentRequiredPropUndefined } from \"../../utils/helpers\";\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 dialogOverflow = false;\n private icDialogEl: HTMLIcDialogElement;\n private instantHideEvents = [\"focusout\"];\n private mouseOverTool: boolean = false;\n private persistTooltip = false;\n private popperInstance: Instance;\n private onDialog: boolean = false;\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 * @internal 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 /**\n * If `true`, the tooltip will not be displayed on hover, it will require a click.\n */\n @Prop() disableHover?: 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({ mutable: true }) 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 * The text to display on the tooltip.\n */\n @Prop() label!: string;\n\n @State() popperProps: Partial<Options> = {};\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 this.icDialogEl = this.el.closest(\"ic-dialog\");\n this.dialogOverflow =\n this.icDialogEl?.getAttribute(\"data-overflow\") === \"true\";\n\n this.onDialog = this.icDialogEl !== 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 > 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 getTooltipTranslate = (dialogEl: DOMRect) => {\n const child = this.el.children[0].getBoundingClientRect();\n let tooltipX;\n let tooltipY;\n switch (this.placement) {\n case \"bottom\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"bottom-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.bottom - dialogEl.top;\n break;\n case \"top\":\n tooltipX = child.left - dialogEl.left - 0.5 * child.width;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-start\":\n tooltipX = child.left - dialogEl.left;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"top-end\":\n tooltipX = child.right - dialogEl.right;\n tooltipY = child.top - dialogEl.bottom;\n break;\n case \"left\":\n case \"left-start\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"left-end\":\n tooltipX = child.right - dialogEl.right - child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n case \"right\":\n case \"right-start\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.bottom - dialogEl.top - child.height;\n break;\n case \"right-end\":\n tooltipX = child.left - dialogEl.left + child.width;\n tooltipY = child.top - dialogEl.bottom + child.height;\n break;\n }\n if (this.dialogOverflow && tooltipX < 0) {\n if (this.placement.includes(\"top\") || this.placement.includes(\"bottom\")) {\n this.toolTip.style.setProperty(\n \"--tooltip-arrow-translate\",\n `${tooltipX}px`\n );\n tooltipX = child.left - dialogEl.left;\n }\n if (this.placement.includes(\"left\")) {\n this.placement = \"right\";\n tooltipX = child.left - dialogEl.left + child.width;\n }\n }\n\n this.toolTip.style.setProperty(\"--tooltip-translate-x\", `${tooltipX}px`);\n this.toolTip.style.setProperty(\"--tooltip-translate-y\", `${tooltipY}px`);\n };\n\n private show = () => {\n if (this.label) {\n this.toolTip.setAttribute(\"data-show\", \"\");\n\n if (this.onDialog) {\n this.el.classList.add(\"on-dialog\");\n const dialogEl = this.icDialogEl.shadowRoot\n .querySelector(\"dialog\")\n .getBoundingClientRect();\n\n this.getTooltipTranslate(dialogEl);\n }\n\n this.popperInstance = createPopper(this.el, this.toolTip, {\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 ],\n ...this.popperProps,\n });\n } else {\n console.warn(`Tooltip can't display without prop 'label' set`);\n }\n };\n\n private hide = () => {\n this.toolTip.removeAttribute(\"data-show\");\n this.persistTooltip = false;\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 this.el[method](event, this.show);\n if (this.toolTip !== undefined) {\n this.toolTip[method](event, this.mouseEnterTooltip);\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);\n };\n\n render() {\n const { label, maxLines, silent } = this;\n return (\n <Host class={{ \"ic-tooltip\": true }}>\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"]}
@@ -584,6 +584,7 @@ video {
584
584
  line-clamp: var(--truncation-max-lines, initial);
585
585
  -webkit-line-clamp: var(--truncation-max-lines, initial);
586
586
  overflow: hidden;
587
+ padding-right: var(--ellipsis-padding-right, 0);
587
588
  }
588
589
 
589
590
  .trunc-btn {
@@ -625,6 +626,13 @@ video {
625
626
  font-weight: var(--ic-font-weight-bold);
626
627
  }
627
628
 
629
+ :host(.in-ag-grid),
630
+ :host(.in-ag-grid) ::slotted(*) {
631
+ overflow: hidden;
632
+ text-overflow: ellipsis;
633
+ white-space: nowrap;
634
+ }
635
+
628
636
  @supports (text-underline-offset: 25%) {
629
637
  .trunc-btn:hover,
630
638
  .trunc-btn.focus {
@@ -1,23 +1,20 @@
1
- import { h, Host } from "@stencil/core";
2
- import { checkResizeObserver } from "../../utils/helpers";
1
+ import { h, Host, } from "@stencil/core";
2
+ import { checkResizeObserver, isElInAGGrid } from "../../utils/helpers";
3
3
  export class Typography {
4
4
  constructor() {
5
5
  this.focusBtnFromKeyboard = true;
6
+ this.inAGGrid = false;
6
7
  this.lastMarkerTop = 0;
7
8
  this.lastWidth = 0;
8
9
  this.resizeObserver = null;
9
10
  this.truncatedHeight = 0;
10
- this.toggleExpanded = () => {
11
+ this.toggleExpanded = (ev) => {
12
+ ev.stopPropagation();
11
13
  this.expanded = !this.expanded;
12
- };
13
- this.checkMaxLines = (height) => {
14
- //24 is the height of a single line
15
- const numLines = Math.floor(height / 24);
16
- if (numLines > this.maxLines) {
17
- this.el.setAttribute("style", `--truncation-max-lines: ${this.maxLines}`);
18
- this.truncatedHeight = this.el.clientHeight;
19
- this.truncated = true;
20
- }
14
+ this.typographyTruncationExpandToggle.emit({
15
+ expanded: this.expanded,
16
+ typographyEl: this.el,
17
+ });
21
18
  };
22
19
  this.checkMarkerPosition = (elTop, markerTop) => {
23
20
  if (markerTop - elTop < this.truncatedHeight) {
@@ -85,6 +82,18 @@ export class Typography {
85
82
  this.resizeObserver.disconnect();
86
83
  }
87
84
  }
85
+ /**
86
+ * @internal This is used by data table to remove all truncation in certain events
87
+ */
88
+ async resetTruncation() {
89
+ if (this.truncated) {
90
+ this.truncated = false;
91
+ this.maxLines = 0;
92
+ this.el.removeAttribute("max-lines");
93
+ this.expanded = false;
94
+ this.el.removeAttribute("style");
95
+ }
96
+ }
88
97
  componentDidLoad() {
89
98
  var _a, _b;
90
99
  if ((this.variant === "body" ||
@@ -100,6 +109,30 @@ export class Typography {
100
109
  checkResizeObserver(this.runResizeObserver);
101
110
  }
102
111
  }
112
+ componentWillRender() {
113
+ if (isElInAGGrid(this.el)) {
114
+ this.inAGGrid = true;
115
+ }
116
+ }
117
+ /**
118
+ * @internal This checks if the number of lines of text exceeds the maxLines prop. If so, set the line clamp CSS to the max lines
119
+ * @param height - text container height
120
+ */
121
+ async checkMaxLines(height) {
122
+ //24 is the height of a single line
123
+ const numLines = Math.floor(height / 24);
124
+ if (numLines > this.maxLines) {
125
+ this.el.setAttribute("style", `--truncation-max-lines: ${this.maxLines}`);
126
+ this.truncatedHeight = this.el.clientHeight;
127
+ this.truncated = true;
128
+ }
129
+ }
130
+ /**
131
+ * @internal This method makes it possible to set the expanded status of truncated text outside of ic-typography component
132
+ */
133
+ async setShowHideExpanded(expanded) {
134
+ this.expanded = expanded;
135
+ }
103
136
  render() {
104
137
  var _a, _b;
105
138
  const { variant, applyVerticalMargins, maxLines, truncated, expanded, strikethrough, underline, italic, bold, } = this;
@@ -110,6 +143,7 @@ export class Typography {
110
143
  ["italic"]: italic,
111
144
  ["strikethrough"]: strikethrough,
112
145
  ["underline"]: underline,
146
+ ["in-ag-grid"]: this.inAGGrid,
113
147
  } }, (variant === "body" ||
114
148
  ((_b = (_a = this.el.getRootNode()) === null || _a === void 0 ? void 0 : _a.host) === null || _b === void 0 ? void 0 : _b.tagName) ===
115
149
  "IC-TOOLTIP") &&
@@ -185,7 +219,7 @@ export class Typography {
185
219
  },
186
220
  "maxLines": {
187
221
  "type": "number",
188
- "mutable": false,
222
+ "mutable": true,
189
223
  "complexType": {
190
224
  "original": "number",
191
225
  "resolved": "number",
@@ -269,6 +303,107 @@ export class Typography {
269
303
  "expanded": {}
270
304
  };
271
305
  }
306
+ static get events() {
307
+ return [{
308
+ "method": "typographyTruncationExpandToggle",
309
+ "name": "typographyTruncationExpandToggle",
310
+ "bubbles": true,
311
+ "cancelable": true,
312
+ "composed": true,
313
+ "docs": {
314
+ "tags": [{
315
+ "name": "internal",
316
+ "text": "Emits and event when the typography truncation button has been clicked."
317
+ }],
318
+ "text": ""
319
+ },
320
+ "complexType": {
321
+ "original": "{\n expanded: boolean;\n typographyEl: HTMLIcTypographyElement;\n }",
322
+ "resolved": "{ expanded: boolean; typographyEl: HTMLIcTypographyElement; }",
323
+ "references": {
324
+ "HTMLIcTypographyElement": {
325
+ "location": "global",
326
+ "id": "global::HTMLIcTypographyElement"
327
+ }
328
+ }
329
+ }
330
+ }];
331
+ }
332
+ static get methods() {
333
+ return {
334
+ "resetTruncation": {
335
+ "complexType": {
336
+ "signature": "() => Promise<void>",
337
+ "parameters": [],
338
+ "references": {
339
+ "Promise": {
340
+ "location": "global",
341
+ "id": "global::Promise"
342
+ }
343
+ },
344
+ "return": "Promise<void>"
345
+ },
346
+ "docs": {
347
+ "text": "",
348
+ "tags": [{
349
+ "name": "internal",
350
+ "text": "This is used by data table to remove all truncation in certain events"
351
+ }]
352
+ }
353
+ },
354
+ "checkMaxLines": {
355
+ "complexType": {
356
+ "signature": "(height: number) => Promise<void>",
357
+ "parameters": [{
358
+ "name": "height",
359
+ "type": "number",
360
+ "docs": "- text container height"
361
+ }],
362
+ "references": {
363
+ "Promise": {
364
+ "location": "global",
365
+ "id": "global::Promise"
366
+ }
367
+ },
368
+ "return": "Promise<void>"
369
+ },
370
+ "docs": {
371
+ "text": "",
372
+ "tags": [{
373
+ "name": "internal",
374
+ "text": "This checks if the number of lines of text exceeds the maxLines prop. If so, set the line clamp CSS to the max lines"
375
+ }, {
376
+ "name": "param",
377
+ "text": "height - text container height"
378
+ }]
379
+ }
380
+ },
381
+ "setShowHideExpanded": {
382
+ "complexType": {
383
+ "signature": "(expanded: boolean) => Promise<void>",
384
+ "parameters": [{
385
+ "name": "expanded",
386
+ "type": "boolean",
387
+ "docs": ""
388
+ }],
389
+ "references": {
390
+ "Promise": {
391
+ "location": "global",
392
+ "id": "global::Promise"
393
+ }
394
+ },
395
+ "return": "Promise<void>"
396
+ },
397
+ "docs": {
398
+ "text": "",
399
+ "tags": [{
400
+ "name": "internal",
401
+ "text": "This method makes it possible to set the expanded status of truncated text outside of ic-typography component"
402
+ }]
403
+ }
404
+ }
405
+ };
406
+ }
272
407
  static get elementRef() { return "el"; }
273
408
  static get watchers() {
274
409
  return [{
@@ -1 +1 @@
1
- {"version":3,"file":"ic-typography.js","sourceRoot":"","sources":["../../../src/components/ic-typography/ic-typography.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Prop, h, Element, Host, State, Watch } from \"@stencil/core\";\n\nimport { IcTypographyVariants } from \"../../utils/types\";\nimport { checkResizeObserver } from \"../../utils/helpers\";\n\n@Component({\n styleUrl: \"ic-typography.css\",\n tag: \"ic-typography\",\n shadow: true,\n})\nexport class Typography {\n private focusBtnFromKeyboard: boolean = true;\n private lastMarkerTop: number = 0;\n private lastWidth: number = 0;\n private marker: HTMLElement;\n private resizeInterval: number;\n private resizeObserver: ResizeObserver = null;\n private truncatedHeight: number = 0;\n private truncWrapperEl: Element;\n\n @Element() el: HTMLIcTypographyElement;\n\n @State() truncated: boolean = false;\n @State() truncButtonFocussed: boolean = false;\n\n /**\n * If `true`, appropriate top and bottom margins will be applied to the typography.\n */\n @Prop() applyVerticalMargins?: boolean = false;\n\n /**\n * If `true`, the typography will have a bold font weight.\n * Note: This will have no impact on variants that already use an equivalent or higher font weight (h1, h2, and subtitle-large).\n */\n @Prop() bold?: boolean = false;\n\n /**\n * If `true`, the typography will have an italic font style.\n */\n @Prop() italic?: boolean = false;\n\n /**\n * The number of lines to display before truncating the text, only used for the 'body' variant.\n */\n @Prop() maxLines?: number;\n\n /**\n * If `true`, the typography will have a line through it.\n */\n @Prop() strikethrough?: boolean = false;\n\n /**\n * If `true`, the typography will have a line under it.\n */\n @Prop() underline?: boolean = false;\n\n /**\n * The ICDS typography style to use.\n */\n @Prop() variant?: IcTypographyVariants = \"body\";\n\n @State() expanded: boolean = false;\n\n @Watch(\"expanded\")\n watchExpandedHandler(): void {\n this.el.setAttribute(\n \"style\",\n `--truncation-max-lines: ${this.expanded ? \"initial\" : this.maxLines}`\n );\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentDidLoad(): void {\n if (\n (this.variant === \"body\" ||\n (this.el.getRootNode() as ShadowRoot)?.host?.tagName ===\n \"IC-TOOLTIP\") &&\n this.maxLines > 0\n ) {\n const marker = document.createElement(\"span\");\n marker.style.visibility = \"hidden\";\n this.el.appendChild(marker);\n this.marker = marker;\n this.lastWidth = this.el.clientWidth;\n this.checkMaxLines(this.el.clientHeight);\n checkResizeObserver(this.runResizeObserver);\n }\n }\n\n private toggleExpanded = () => {\n this.expanded = !this.expanded;\n };\n\n private checkMaxLines = (height: number) => {\n //24 is the height of a single line\n const numLines = Math.floor(height / 24);\n if (numLines > this.maxLines) {\n this.el.setAttribute(\"style\", `--truncation-max-lines: ${this.maxLines}`);\n this.truncatedHeight = this.el.clientHeight;\n this.truncated = true;\n }\n };\n\n private checkMarkerPosition = (elTop: number, markerTop: number) => {\n if (markerTop - elTop < this.truncatedHeight) {\n this.truncated = false;\n this.expanded = false;\n } else {\n this.truncated = true;\n }\n };\n\n private getElementTop = (el: HTMLElement) => {\n return el.getClientRects ? el.getClientRects()[0].top : 0;\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n clearTimeout(this.resizeInterval);\n this.resizeInterval = window.setTimeout(this.resizeObserverCallback, 50);\n });\n this.resizeObserver.observe(this.truncWrapperEl);\n };\n\n private resizeObserverCallback = () => {\n if (this.lastWidth === this.el.clientWidth) {\n return;\n }\n\n if (this.truncatedHeight === 0) {\n this.checkMaxLines(this.el.clientHeight);\n return;\n }\n\n const markerTop = this.getElementTop(this.marker);\n if (markerTop === this.lastMarkerTop) {\n return;\n }\n\n this.checkMarkerPosition(this.getElementTop(this.el), markerTop);\n this.lastMarkerTop = markerTop;\n this.lastWidth = this.el.clientWidth;\n };\n\n private truncButtonFocus = (): void => {\n if (this.focusBtnFromKeyboard) {\n this.truncButtonFocussed = true;\n }\n };\n\n private truncButtonBlur = (): void => {\n this.focusBtnFromKeyboard = true;\n this.truncButtonFocussed = false;\n };\n\n private truncButtonFocusFromMouse = (): void => {\n this.focusBtnFromKeyboard = false;\n };\n\n render() {\n const {\n variant,\n applyVerticalMargins,\n maxLines,\n truncated,\n expanded,\n strikethrough,\n underline,\n italic,\n bold,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-typography-${variant}`]: true,\n [`ic-typography-vertical-margins-${variant}`]: applyVerticalMargins,\n [\"bold\"]: bold,\n [\"italic\"]: italic,\n [\"strikethrough\"]: strikethrough,\n [\"underline\"]: underline,\n }}\n >\n {(variant === \"body\" ||\n (this.el.getRootNode() as ShadowRoot)?.host?.tagName ===\n \"IC-TOOLTIP\") &&\n maxLines > 0 ? (\n <div class=\"trunc-wrapper\" ref={(el) => (this.truncWrapperEl = el)}>\n <slot />\n </div>\n ) : (\n <slot />\n )}\n {variant === \"body\" && maxLines > 0 && truncated && (\n <button\n class={{ \"trunc-btn\": true, focus: this.truncButtonFocussed }}\n onFocus={this.truncButtonFocus}\n onBlur={this.truncButtonBlur}\n onMouseDown={this.truncButtonFocusFromMouse}\n onClick={this.toggleExpanded}\n >\n {expanded ? \"See less\" : \"See more\"}\n </button>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-typography.js","sourceRoot":"","sources":["../../../src/components/ic-typography/ic-typography.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Prop,\n h,\n Element,\n Host,\n State,\n Watch,\n Method,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\n\nimport { IcTypographyVariants } from \"../../utils/types\";\nimport { checkResizeObserver, isElInAGGrid } from \"../../utils/helpers\";\n\n@Component({\n styleUrl: \"ic-typography.css\",\n tag: \"ic-typography\",\n shadow: true,\n})\nexport class Typography {\n private focusBtnFromKeyboard: boolean = true;\n private inAGGrid: boolean = false;\n private lastMarkerTop: number = 0;\n private lastWidth: number = 0;\n private marker: HTMLElement;\n private resizeInterval: number;\n private resizeObserver: ResizeObserver = null;\n private truncatedHeight: number = 0;\n private truncWrapperEl: Element;\n\n @Element() el: HTMLIcTypographyElement;\n\n @State() truncated: boolean = false;\n @State() truncButtonFocussed: boolean = false;\n\n /**\n * If `true`, appropriate top and bottom margins will be applied to the typography.\n */\n @Prop() applyVerticalMargins?: boolean = false;\n\n /**\n * If `true`, the typography will have a bold font weight.\n * Note: This will have no impact on variants that already use an equivalent or higher font weight (h1, h2, and subtitle-large).\n */\n @Prop() bold?: boolean = false;\n\n /**\n * If `true`, the typography will have an italic font style.\n */\n @Prop() italic?: boolean = false;\n\n /**\n * The number of lines to display before truncating the text, only used for the 'body' variant.\n */\n @Prop({ mutable: true }) maxLines?: number;\n\n /**\n * If `true`, the typography will have a line through it.\n */\n @Prop() strikethrough?: boolean = false;\n\n /**\n * If `true`, the typography will have a line under it.\n */\n @Prop() underline?: boolean = false;\n\n /**\n * The ICDS typography style to use.\n */\n @Prop() variant?: IcTypographyVariants = \"body\";\n\n /**\n * @internal Emits and event when the typography truncation button has been clicked.\n */\n @Event() typographyTruncationExpandToggle: EventEmitter<{\n expanded: boolean;\n typographyEl: HTMLIcTypographyElement;\n }>;\n\n @State() expanded: boolean = false;\n\n @Watch(\"expanded\")\n watchExpandedHandler(): void {\n this.el.setAttribute(\n \"style\",\n `--truncation-max-lines: ${this.expanded ? \"initial\" : this.maxLines}`\n );\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n /**\n * @internal This is used by data table to remove all truncation in certain events\n */\n @Method()\n async resetTruncation() {\n if (this.truncated) {\n this.truncated = false;\n this.maxLines = 0;\n this.el.removeAttribute(\"max-lines\");\n this.expanded = false;\n this.el.removeAttribute(\"style\");\n }\n }\n\n componentDidLoad(): void {\n if (\n (this.variant === \"body\" ||\n (this.el.getRootNode() as ShadowRoot)?.host?.tagName ===\n \"IC-TOOLTIP\") &&\n this.maxLines > 0\n ) {\n const marker = document.createElement(\"span\");\n marker.style.visibility = \"hidden\";\n this.el.appendChild(marker);\n this.marker = marker;\n this.lastWidth = this.el.clientWidth;\n this.checkMaxLines(this.el.clientHeight);\n checkResizeObserver(this.runResizeObserver);\n }\n }\n\n componentWillRender(): void {\n if (isElInAGGrid(this.el)) {\n this.inAGGrid = true;\n }\n }\n\n private toggleExpanded = (ev: Event) => {\n ev.stopPropagation();\n\n this.expanded = !this.expanded;\n this.typographyTruncationExpandToggle.emit({\n expanded: this.expanded,\n typographyEl: this.el,\n });\n };\n\n /**\n * @internal This checks if the number of lines of text exceeds the maxLines prop. If so, set the line clamp CSS to the max lines\n * @param height - text container height\n */\n\n @Method()\n async checkMaxLines(height: number) {\n //24 is the height of a single line\n const numLines = Math.floor(height / 24);\n if (numLines > this.maxLines) {\n this.el.setAttribute(\"style\", `--truncation-max-lines: ${this.maxLines}`);\n this.truncatedHeight = this.el.clientHeight;\n this.truncated = true;\n }\n }\n\n /**\n * @internal This method makes it possible to set the expanded status of truncated text outside of ic-typography component\n */\n @Method()\n async setShowHideExpanded(expanded: boolean) {\n this.expanded = expanded;\n }\n\n private checkMarkerPosition = (elTop: number, markerTop: number) => {\n if (markerTop - elTop < this.truncatedHeight) {\n this.truncated = false;\n this.expanded = false;\n } else {\n this.truncated = true;\n }\n };\n\n private getElementTop = (el: HTMLElement) => {\n return el.getClientRects ? el.getClientRects()[0].top : 0;\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n clearTimeout(this.resizeInterval);\n this.resizeInterval = window.setTimeout(this.resizeObserverCallback, 50);\n });\n this.resizeObserver.observe(this.truncWrapperEl);\n };\n\n private resizeObserverCallback = () => {\n if (this.lastWidth === this.el.clientWidth) {\n return;\n }\n\n if (this.truncatedHeight === 0) {\n this.checkMaxLines(this.el.clientHeight);\n return;\n }\n\n const markerTop = this.getElementTop(this.marker);\n if (markerTop === this.lastMarkerTop) {\n return;\n }\n\n this.checkMarkerPosition(this.getElementTop(this.el), markerTop);\n this.lastMarkerTop = markerTop;\n this.lastWidth = this.el.clientWidth;\n };\n\n private truncButtonFocus = (): void => {\n if (this.focusBtnFromKeyboard) {\n this.truncButtonFocussed = true;\n }\n };\n\n private truncButtonBlur = (): void => {\n this.focusBtnFromKeyboard = true;\n this.truncButtonFocussed = false;\n };\n\n private truncButtonFocusFromMouse = (): void => {\n this.focusBtnFromKeyboard = false;\n };\n\n render() {\n const {\n variant,\n applyVerticalMargins,\n maxLines,\n truncated,\n expanded,\n strikethrough,\n underline,\n italic,\n bold,\n } = this;\n\n return (\n <Host\n class={{\n [`ic-typography-${variant}`]: true,\n [`ic-typography-vertical-margins-${variant}`]: applyVerticalMargins,\n [\"bold\"]: bold,\n [\"italic\"]: italic,\n [\"strikethrough\"]: strikethrough,\n [\"underline\"]: underline,\n [\"in-ag-grid\"]: this.inAGGrid,\n }}\n >\n {(variant === \"body\" ||\n (this.el.getRootNode() as ShadowRoot)?.host?.tagName ===\n \"IC-TOOLTIP\") &&\n maxLines > 0 ? (\n <div class=\"trunc-wrapper\" ref={(el) => (this.truncWrapperEl = el)}>\n <slot />\n </div>\n ) : (\n <slot />\n )}\n {variant === \"body\" && maxLines > 0 && truncated && (\n <button\n class={{ \"trunc-btn\": true, focus: this.truncButtonFocussed }}\n onFocus={this.truncButtonFocus}\n onBlur={this.truncButtonBlur}\n onMouseDown={this.truncButtonFocusFromMouse}\n onClick={this.toggleExpanded}\n >\n {expanded ? \"See less\" : \"See more\"}\n </button>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  import { newSpecPage } from "@stencil/core/testing";
2
2
  import { Typography } from "../../ic-typography";
3
+ import * as helpers from "../../../../utils/helpers";
3
4
  describe("ic-typography component", () => {
4
5
  it("should render with default body styles", async () => {
5
6
  const page = await newSpecPage({
@@ -334,5 +335,59 @@ describe("ic-typography component", () => {
334
335
  //test disconnected callback
335
336
  page.setContent("");
336
337
  });
338
+ it("should apply the correct class when in an AG Grid", async () => {
339
+ Object.defineProperty(helpers, "isElInAGGrid", {
340
+ value: jest.fn().mockReturnValue(true),
341
+ });
342
+ const page = await newSpecPage({
343
+ components: [Typography],
344
+ html: `<ic-typography><p>IC Typography Test</p></ic-typography>`,
345
+ });
346
+ await page.waitForChanges();
347
+ expect(page.rootInstance.inAGGrid).toBe(true);
348
+ expect(document.querySelector("ic-typography").classList.contains("in-ag-grid")).toBe(true);
349
+ });
350
+ it("should set the typography expanded state", async () => {
351
+ const page = await newSpecPage({
352
+ components: [Typography],
353
+ html: `<ic-typography max-lines="3">
354
+ Body of text that is truncated to three lines. Click the 'See more' link to
355
+ expand the text, then click 'See less' to truncate the text once more!
356
+ Dripper caramelization java saucer grounds galão, mocha, and robusta
357
+ kopi-luwak, percolator, instant, qui saucer latte in brewed café au
358
+ lait. Con panna, cup, cream, body americano affogato cup espresso, rich
359
+ milk seasonal saucer grinder spoon that cultivar strong redeye
360
+ frappuccino barista extraction redeye mazagran.
361
+ </ic-typography>`,
362
+ });
363
+ expect(page.rootInstance.expanded).toBe(false);
364
+ await page.rootInstance.setShowHideExpanded(true);
365
+ expect(page.rootInstance.expanded).toBe(true);
366
+ });
367
+ it("should reset truncation properties", async () => {
368
+ const page = await newSpecPage({
369
+ components: [Typography],
370
+ html: `<ic-typography max-lines="3" style='--truncation-max-lines: 1;'>
371
+ Body of text that is truncated to three lines. Click the 'See more' link to
372
+ expand the text, then click 'See less' to truncate the text once more!
373
+ Dripper caramelization java saucer grounds galão, mocha, and robusta
374
+ kopi-luwak, percolator, instant, qui saucer latte in brewed café au
375
+ lait. Con panna, cup, cream, body americano affogato cup espresso, rich
376
+ milk seasonal saucer grinder spoon that cultivar strong redeye
377
+ frappuccino barista extraction redeye mazagran.
378
+ </ic-typography>`,
379
+ });
380
+ page.rootInstance.el.clientHeight = 96;
381
+ page.rootInstance.el.clientWidth = 200;
382
+ page.rootInstance.resizeObserverCallback();
383
+ await page.rootInstance.setShowHideExpanded(true);
384
+ expect(page.rootInstance.truncated).toBe(true);
385
+ expect(page.rootInstance.maxLines).toBe(3);
386
+ expect(page.rootInstance.expanded).toBe(true);
387
+ await page.rootInstance.resetTruncation();
388
+ expect(page.rootInstance.truncated).toBe(false);
389
+ expect(page.rootInstance.maxLines).toBe(null);
390
+ expect(page.rootInstance.expanded).toBe(false);
391
+ });
337
392
  });
338
393
  //# sourceMappingURL=ic-typography.spec.js.map