@ukic/web-components 2.19.0 → 2.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (590) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-88e018cf.js → helpers-466a551d.js} +59 -99
  3. package/dist/cjs/helpers-466a551d.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +3 -1
  5. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-accordion.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 +15 -9
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js +55 -77
  11. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +3 -1
  13. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-button_3.cjs.entry.js +14 -14
  16. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-card.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-checkbox-group.cjs.entry.js +23 -16
  20. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-checkbox.cjs.entry.js +33 -31
  22. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-chip.cjs.entry.js +21 -31
  24. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-dialog.cjs.entry.js +4 -2
  27. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  31. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  34. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-hero.cjs.entry.js +3 -2
  36. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +2 -3
  38. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +5 -5
  40. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  43. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-menu-item.cjs.entry.js +4 -10
  46. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  48. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  50. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-pagination-item.cjs.entry.js +18 -9
  54. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-pagination.cjs.entry.js +21 -9
  56. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-popover-menu.cjs.entry.js +13 -18
  58. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-radio-group.cjs.entry.js +12 -16
  60. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-radio-option.cjs.entry.js +37 -37
  62. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-select.cjs.entry.js +10 -6
  65. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-skeleton.cjs.entry.js +16 -35
  68. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  70. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-switch.cjs.entry.js +2 -2
  74. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  77. package/dist/cjs/ic-tab.cjs.entry.js +2 -2
  78. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-text-field.cjs.entry.js +8 -8
  80. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-theme.cjs.entry.js +13 -15
  82. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  84. package/dist/cjs/ic-toggle-button.cjs.entry.js +2 -2
  85. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  86. package/dist/cjs/ic-top-navigation.cjs.entry.js +15 -24
  87. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-typography.cjs.entry.js +2 -2
  89. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  90. package/dist/cjs/loader.cjs.js +1 -1
  91. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +1 -1
  92. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -1
  93. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js +5 -1
  94. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -1
  95. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js +5 -5
  96. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js.map +1 -1
  97. package/dist/collection/components/ic-back-to-top/ic-back-to-top.css +7 -4
  98. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js +37 -7
  99. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js.map +1 -1
  100. package/dist/collection/components/ic-back-to-top/ic-back-to-top.types.js +2 -0
  101. package/dist/collection/components/ic-back-to-top/ic-back-to-top.types.js.map +1 -0
  102. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js +9 -0
  103. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js.map +1 -1
  104. package/dist/collection/components/ic-badge/ic-badge.js +64 -78
  105. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  106. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js +4 -4
  107. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js.map +1 -1
  108. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +2 -0
  109. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  110. package/dist/collection/components/ic-button/ic-button.css +289 -11
  111. package/dist/collection/components/ic-button/ic-button.js +11 -11
  112. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  113. package/dist/collection/components/ic-button/ic-button.types.js.map +1 -1
  114. package/dist/collection/components/ic-card/ic-card.css +8 -0
  115. package/dist/collection/components/ic-checkbox/ic-checkbox.css +1 -1
  116. package/dist/collection/components/ic-checkbox/ic-checkbox.js +31 -29
  117. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  118. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +27 -15
  119. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  120. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js +12 -0
  121. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js.map +1 -1
  122. package/dist/collection/components/ic-chip/ic-chip.css +5 -1
  123. package/dist/collection/components/ic-chip/ic-chip.js +20 -30
  124. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  125. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js +5 -5
  126. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js.map +1 -1
  127. package/dist/collection/components/ic-dialog/ic-dialog.css +11 -8
  128. package/dist/collection/components/ic-dialog/ic-dialog.js +4 -2
  129. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  130. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js +2 -2
  131. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js.map +1 -1
  132. package/dist/collection/components/ic-footer/ic-footer.js +1 -1
  133. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  134. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +1 -1
  135. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  136. package/dist/collection/components/ic-hero/ic-hero.js +4 -3
  137. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  138. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +1 -1
  139. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  140. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +1 -2
  141. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  142. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +2 -2
  143. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  144. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +9 -9
  145. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
  146. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js +3 -3
  147. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js.map +1 -1
  148. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js +6 -6
  149. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js.map +1 -1
  150. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js +5 -5
  151. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js.map +1 -1
  152. package/dist/collection/components/ic-link/ic-link.css +1 -1
  153. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js +1 -1
  154. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js.map +1 -1
  155. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +0 -1
  156. package/dist/collection/components/ic-menu/ic-menu.js +3 -3
  157. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  158. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +41 -41
  159. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  160. package/dist/collection/components/ic-menu-item/ic-menu-item.js +4 -10
  161. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  162. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js +5 -5
  163. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js.map +1 -1
  164. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +6 -0
  165. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +3 -3
  166. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  167. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js +1 -1
  168. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js.map +1 -1
  169. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js +1 -1
  170. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js.map +1 -1
  171. package/dist/collection/components/ic-pagination/ic-pagination.js +26 -8
  172. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  173. package/dist/collection/components/ic-pagination/ic-pagination.types.js.map +1 -1
  174. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +44 -0
  175. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  176. package/dist/collection/components/ic-pagination-item/ic-pagination-item.css +5 -1
  177. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +27 -44
  178. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  179. package/dist/collection/components/ic-pagination-item/test/basic/ic-pagination-item.spec.js +76 -0
  180. package/dist/collection/components/ic-pagination-item/test/basic/ic-pagination-item.spec.js.map +1 -0
  181. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +12 -17
  182. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  183. package/dist/collection/components/ic-radio-group/ic-radio-group.js +11 -15
  184. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  185. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js +17 -17
  186. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js.map +1 -1
  187. package/dist/collection/components/ic-radio-option/ic-radio-option.js +37 -37
  188. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  189. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +5 -5
  190. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +1 -1
  191. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js +4 -4
  192. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js.map +1 -1
  193. package/dist/collection/components/ic-select/ic-select.js +9 -5
  194. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  195. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js +11 -11
  196. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js.map +1 -1
  197. package/dist/collection/components/ic-skeleton/ic-skeleton.js +16 -43
  198. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  199. package/dist/collection/components/ic-status-tag/ic-status-tag.js +1 -1
  200. package/dist/collection/components/ic-status-tag/ic-status-tag.js.map +1 -1
  201. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js +1 -1
  202. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js.map +1 -1
  203. package/dist/collection/components/ic-switch/ic-switch.css +11 -3
  204. package/dist/collection/components/ic-tab/ic-tab.css +17 -5
  205. package/dist/collection/components/ic-text-field/ic-text-field.css +1 -0
  206. package/dist/collection/components/ic-text-field/ic-text-field.js +6 -6
  207. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  208. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js +0 -1
  209. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js.map +1 -1
  210. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js +15 -15
  211. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js.map +1 -1
  212. package/dist/collection/components/ic-theme/ic-theme.js +21 -17
  213. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  214. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js +1 -1
  215. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js.map +1 -1
  216. package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +21 -0
  217. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js +7 -7
  218. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js.map +1 -1
  219. package/dist/collection/components/ic-tooltip/ic-tooltip.css +7 -0
  220. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +15 -24
  221. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  222. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js +14 -14
  223. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js.map +1 -1
  224. package/dist/collection/components/ic-typography/ic-typography.css +11 -2
  225. package/dist/collection/utils/helpers.js +58 -102
  226. package/dist/collection/utils/helpers.js.map +1 -1
  227. package/dist/components/helpers.js +57 -97
  228. package/dist/components/helpers.js.map +1 -1
  229. package/dist/components/ic-accordion-group.js +2 -1
  230. package/dist/components/ic-accordion-group.js.map +1 -1
  231. package/dist/components/ic-back-to-top.js +22 -9
  232. package/dist/components/ic-back-to-top.js.map +1 -1
  233. package/dist/components/ic-badge.js +59 -77
  234. package/dist/components/ic-badge.js.map +1 -1
  235. package/dist/components/ic-breadcrumb-group.js +2 -0
  236. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  237. package/dist/components/ic-button2.js +11 -11
  238. package/dist/components/ic-button2.js.map +1 -1
  239. package/dist/components/ic-card.js.map +1 -1
  240. package/dist/components/ic-checkbox-group.js +26 -16
  241. package/dist/components/ic-checkbox-group.js.map +1 -1
  242. package/dist/components/ic-checkbox.js +33 -31
  243. package/dist/components/ic-checkbox.js.map +1 -1
  244. package/dist/components/ic-chip.js +21 -31
  245. package/dist/components/ic-chip.js.map +1 -1
  246. package/dist/components/ic-dialog.js +4 -2
  247. package/dist/components/ic-dialog.js.map +1 -1
  248. package/dist/components/ic-divider2.js +1 -1
  249. package/dist/components/ic-footer-link-group.js +2 -2
  250. package/dist/components/ic-footer-link-group.js.map +1 -1
  251. package/dist/components/ic-footer-link.js +1 -1
  252. package/dist/components/ic-footer.js +2 -2
  253. package/dist/components/ic-footer.js.map +1 -1
  254. package/dist/components/ic-hero.js +3 -2
  255. package/dist/components/ic-hero.js.map +1 -1
  256. package/dist/components/ic-horizontal-scroll2.js +2 -3
  257. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  258. package/dist/components/ic-input-component-container2.js +2 -2
  259. package/dist/components/ic-input-component-container2.js.map +1 -1
  260. package/dist/components/ic-link2.js +1 -1
  261. package/dist/components/ic-link2.js.map +1 -1
  262. package/dist/components/ic-loading-indicator2.js +1 -1
  263. package/dist/components/ic-loading-indicator2.js.map +1 -1
  264. package/dist/components/ic-menu-item2.js +4 -10
  265. package/dist/components/ic-menu-item2.js.map +1 -1
  266. package/dist/components/ic-menu2.js +3 -3
  267. package/dist/components/ic-menu2.js.map +1 -1
  268. package/dist/components/ic-navigation-button.js +1 -1
  269. package/dist/components/ic-navigation-group.js +1 -1
  270. package/dist/components/ic-navigation-item.js +2 -2
  271. package/dist/components/ic-navigation-item.js.map +1 -1
  272. package/dist/components/ic-navigation-menu2.js +1 -1
  273. package/dist/components/ic-pagination-item2.js +22 -12
  274. package/dist/components/ic-pagination-item2.js.map +1 -1
  275. package/dist/components/ic-pagination.js +23 -8
  276. package/dist/components/ic-pagination.js.map +1 -1
  277. package/dist/components/ic-popover-menu.js +13 -18
  278. package/dist/components/ic-popover-menu.js.map +1 -1
  279. package/dist/components/ic-radio-group.js +11 -15
  280. package/dist/components/ic-radio-group.js.map +1 -1
  281. package/dist/components/ic-radio-option.js +37 -37
  282. package/dist/components/ic-radio-option.js.map +1 -1
  283. package/dist/components/ic-select.js +9 -5
  284. package/dist/components/ic-select.js.map +1 -1
  285. package/dist/components/ic-side-navigation.js +1 -1
  286. package/dist/components/ic-skeleton.js +17 -40
  287. package/dist/components/ic-skeleton.js.map +1 -1
  288. package/dist/components/ic-status-tag.js.map +1 -1
  289. package/dist/components/ic-switch.js +1 -1
  290. package/dist/components/ic-switch.js.map +1 -1
  291. package/dist/components/ic-tab.js +1 -1
  292. package/dist/components/ic-tab.js.map +1 -1
  293. package/dist/components/ic-text-field2.js +7 -7
  294. package/dist/components/ic-text-field2.js.map +1 -1
  295. package/dist/components/ic-theme.js +13 -15
  296. package/dist/components/ic-theme.js.map +1 -1
  297. package/dist/components/ic-toast.js +1 -1
  298. package/dist/components/ic-toggle-button.js +1 -1
  299. package/dist/components/ic-toggle-button.js.map +1 -1
  300. package/dist/components/ic-tooltip2.js +1 -1
  301. package/dist/components/ic-tooltip2.js.map +1 -1
  302. package/dist/components/ic-top-navigation.js +15 -24
  303. package/dist/components/ic-top-navigation.js.map +1 -1
  304. package/dist/components/ic-typography2.js +1 -1
  305. package/dist/components/ic-typography2.js.map +1 -1
  306. package/dist/core/core.css +2 -2
  307. package/dist/core/core.esm.js +1 -1
  308. package/dist/core/core.esm.js.map +1 -1
  309. package/dist/core/p-063587c6.js +2 -0
  310. package/dist/core/p-063587c6.js.map +1 -0
  311. package/dist/core/{p-346578e4.entry.js → p-099efe2a.entry.js} +2 -2
  312. package/dist/core/p-0a6fbf35.entry.js +2 -0
  313. package/dist/core/p-0a6fbf35.entry.js.map +1 -0
  314. package/dist/core/{p-051583a5.entry.js → p-10dba909.entry.js} +2 -2
  315. package/dist/core/p-10dba909.entry.js.map +1 -0
  316. package/dist/core/p-14dd5b2b.entry.js +2 -0
  317. package/dist/core/p-14dd5b2b.entry.js.map +1 -0
  318. package/dist/core/{p-ba1c3cf7.entry.js → p-1624f4de.entry.js} +2 -2
  319. package/dist/core/{p-1b1270a1.entry.js → p-227a3f22.entry.js} +2 -2
  320. package/dist/core/p-227a3f22.entry.js.map +1 -0
  321. package/dist/core/{p-04cc2b25.entry.js → p-25606a38.entry.js} +2 -2
  322. package/dist/core/{p-328bc6a2.entry.js → p-25edb082.entry.js} +2 -2
  323. package/dist/core/p-25edb082.entry.js.map +1 -0
  324. package/dist/core/{p-4f3fe190.entry.js → p-2965644e.entry.js} +2 -2
  325. package/dist/core/{p-bceaf300.entry.js → p-34d719f8.entry.js} +2 -2
  326. package/dist/core/p-34d719f8.entry.js.map +1 -0
  327. package/dist/core/{p-3f53446c.entry.js → p-35856434.entry.js} +2 -2
  328. package/dist/core/{p-7b720034.entry.js → p-3eda4e14.entry.js} +2 -2
  329. package/dist/core/p-3eda4e14.entry.js.map +1 -0
  330. package/dist/core/{p-6f9dcfb5.entry.js → p-40c508c8.entry.js} +2 -2
  331. package/dist/core/{p-6f9dcfb5.entry.js.map → p-40c508c8.entry.js.map} +1 -1
  332. package/dist/core/p-426a5500.entry.js +2 -0
  333. package/dist/core/p-426a5500.entry.js.map +1 -0
  334. package/dist/core/p-4522e5c0.entry.js +2 -0
  335. package/dist/core/p-4522e5c0.entry.js.map +1 -0
  336. package/dist/core/{p-d7f4779d.entry.js → p-459355ef.entry.js} +2 -2
  337. package/dist/core/p-49cdaddc.entry.js +2 -0
  338. package/dist/core/p-49cdaddc.entry.js.map +1 -0
  339. package/dist/core/{p-f50a57f3.entry.js → p-4a0acd0f.entry.js} +2 -2
  340. package/dist/core/{p-f50a57f3.entry.js.map → p-4a0acd0f.entry.js.map} +1 -1
  341. package/dist/core/{p-32e2ae6f.entry.js → p-4e3a03cb.entry.js} +2 -2
  342. package/dist/core/{p-c919c571.entry.js → p-521cc9c6.entry.js} +2 -2
  343. package/dist/core/{p-c3acbefe.entry.js → p-56b709a1.entry.js} +2 -2
  344. package/dist/core/{p-c3acbefe.entry.js.map → p-56b709a1.entry.js.map} +1 -1
  345. package/dist/core/{p-2f91e86a.entry.js → p-687af4e5.entry.js} +2 -2
  346. package/dist/core/{p-8e37e832.entry.js → p-7dbd0a9f.entry.js} +2 -2
  347. package/dist/core/p-8a0d4ea2.entry.js +2 -0
  348. package/dist/core/p-8a0d4ea2.entry.js.map +1 -0
  349. package/dist/core/p-8bb09d94.entry.js +2 -0
  350. package/dist/core/p-8bb09d94.entry.js.map +1 -0
  351. package/dist/core/{p-e5957ce0.entry.js → p-8e3cc8e9.entry.js} +2 -2
  352. package/dist/core/{p-e68485ee.entry.js → p-8ec2105c.entry.js} +2 -2
  353. package/dist/core/p-8ec2105c.entry.js.map +1 -0
  354. package/dist/core/{p-adf468f4.entry.js → p-94c512d4.entry.js} +2 -2
  355. package/dist/core/p-94c512d4.entry.js.map +1 -0
  356. package/dist/core/p-9e4b8aeb.entry.js +2 -0
  357. package/dist/core/p-9e4b8aeb.entry.js.map +1 -0
  358. package/dist/core/{p-692ccc73.entry.js → p-a049705a.entry.js} +2 -2
  359. package/dist/core/p-a049705a.entry.js.map +1 -0
  360. package/dist/core/{p-731515cf.entry.js → p-a541cf18.entry.js} +2 -2
  361. package/dist/core/{p-52a4c223.entry.js → p-ad6176a2.entry.js} +2 -2
  362. package/dist/core/p-ad932b00.entry.js +2 -0
  363. package/dist/core/p-ad932b00.entry.js.map +1 -0
  364. package/dist/core/{p-5481b048.entry.js → p-adecaedd.entry.js} +2 -2
  365. package/dist/core/{p-2d4e7985.entry.js → p-af5e3bab.entry.js} +2 -2
  366. package/dist/core/p-af5e3bab.entry.js.map +1 -0
  367. package/dist/core/{p-8ed04819.entry.js → p-b6be866c.entry.js} +2 -2
  368. package/dist/core/p-b6be866c.entry.js.map +1 -0
  369. package/dist/core/p-b8d68163.entry.js +2 -0
  370. package/dist/core/p-b8d68163.entry.js.map +1 -0
  371. package/dist/core/{p-8153def1.entry.js → p-c199045d.entry.js} +2 -2
  372. package/dist/core/{p-1197f0d4.entry.js → p-c649689e.entry.js} +2 -2
  373. package/dist/core/{p-1197f0d4.entry.js.map → p-c649689e.entry.js.map} +1 -1
  374. package/dist/core/p-cbba9c7c.entry.js +2 -0
  375. package/dist/core/p-cbba9c7c.entry.js.map +1 -0
  376. package/dist/core/{p-1a6fab3e.entry.js → p-cc9e5b0e.entry.js} +2 -2
  377. package/dist/core/{p-03796d51.entry.js → p-ce4e0e38.entry.js} +2 -2
  378. package/dist/core/p-d3f10067.entry.js +2 -0
  379. package/dist/core/p-d3f10067.entry.js.map +1 -0
  380. package/dist/core/p-dae27567.entry.js +2 -0
  381. package/dist/core/p-dae27567.entry.js.map +1 -0
  382. package/dist/core/{p-a13236ef.entry.js → p-de40b0b1.entry.js} +2 -2
  383. package/dist/core/p-de40b0b1.entry.js.map +1 -0
  384. package/dist/core/{p-af5eacc1.entry.js → p-e5d5b07e.entry.js} +2 -2
  385. package/dist/core/{p-b451f27c.entry.js → p-e70c6b33.entry.js} +2 -2
  386. package/dist/core/{p-8b65be1e.entry.js → p-e776f72a.entry.js} +2 -2
  387. package/dist/core/p-e9ec912f.entry.js +2 -0
  388. package/dist/core/p-e9ec912f.entry.js.map +1 -0
  389. package/dist/core/p-ec77a078.entry.js +2 -0
  390. package/dist/core/p-ec77a078.entry.js.map +1 -0
  391. package/dist/core/{p-2b326b17.entry.js → p-f706798e.entry.js} +2 -2
  392. package/dist/core/{p-2b326b17.entry.js.map → p-f706798e.entry.js.map} +1 -1
  393. package/dist/core/{p-1c3b619f.entry.js → p-fd6f0ef0.entry.js} +2 -2
  394. package/dist/core/p-fd6f0ef0.entry.js.map +1 -0
  395. package/dist/core/{p-ba40f44a.entry.js → p-fe702898.entry.js} +2 -2
  396. package/dist/core/p-fe702898.entry.js.map +1 -0
  397. package/dist/esm/core.js +1 -1
  398. package/dist/esm/{helpers-24ba0b83.js → helpers-c28c228a.js} +58 -98
  399. package/dist/esm/helpers-c28c228a.js.map +1 -0
  400. package/dist/esm/ic-accordion-group.entry.js +3 -1
  401. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  402. package/dist/esm/ic-accordion.entry.js +1 -1
  403. package/dist/esm/ic-alert.entry.js +1 -1
  404. package/dist/esm/ic-back-to-top.entry.js +15 -9
  405. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  406. package/dist/esm/ic-badge.entry.js +55 -77
  407. package/dist/esm/ic-badge.entry.js.map +1 -1
  408. package/dist/esm/ic-breadcrumb-group.entry.js +3 -1
  409. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  410. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  411. package/dist/esm/ic-button_3.entry.js +14 -14
  412. package/dist/esm/ic-button_3.entry.js.map +1 -1
  413. package/dist/esm/ic-card.entry.js +1 -1
  414. package/dist/esm/ic-card.entry.js.map +1 -1
  415. package/dist/esm/ic-checkbox-group.entry.js +23 -16
  416. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  417. package/dist/esm/ic-checkbox.entry.js +33 -31
  418. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  419. package/dist/esm/ic-chip.entry.js +21 -31
  420. package/dist/esm/ic-chip.entry.js.map +1 -1
  421. package/dist/esm/ic-data-row.entry.js +1 -1
  422. package/dist/esm/ic-dialog.entry.js +4 -2
  423. package/dist/esm/ic-dialog.entry.js.map +1 -1
  424. package/dist/esm/ic-divider.entry.js +1 -1
  425. package/dist/esm/ic-empty-state.entry.js +1 -1
  426. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  427. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  428. package/dist/esm/ic-footer-link.entry.js +1 -1
  429. package/dist/esm/ic-footer.entry.js +2 -2
  430. package/dist/esm/ic-footer.entry.js.map +1 -1
  431. package/dist/esm/ic-hero.entry.js +3 -2
  432. package/dist/esm/ic-hero.entry.js.map +1 -1
  433. package/dist/esm/ic-horizontal-scroll.entry.js +2 -3
  434. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  435. package/dist/esm/ic-input-component-container_3.entry.js +5 -5
  436. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  437. package/dist/esm/ic-input-label_2.entry.js +1 -1
  438. package/dist/esm/ic-link.entry.js +2 -2
  439. package/dist/esm/ic-link.entry.js.map +1 -1
  440. package/dist/esm/ic-menu-group.entry.js +1 -1
  441. package/dist/esm/ic-menu-item.entry.js +4 -10
  442. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  443. package/dist/esm/ic-navigation-button.entry.js +1 -1
  444. package/dist/esm/ic-navigation-group.entry.js +1 -1
  445. package/dist/esm/ic-navigation-item.entry.js +2 -2
  446. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  447. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  448. package/dist/esm/ic-page-header.entry.js +1 -1
  449. package/dist/esm/ic-pagination-item.entry.js +18 -9
  450. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  451. package/dist/esm/ic-pagination.entry.js +21 -9
  452. package/dist/esm/ic-pagination.entry.js.map +1 -1
  453. package/dist/esm/ic-popover-menu.entry.js +13 -18
  454. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  455. package/dist/esm/ic-radio-group.entry.js +12 -16
  456. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  457. package/dist/esm/ic-radio-option.entry.js +37 -37
  458. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  459. package/dist/esm/ic-search-bar.entry.js +1 -1
  460. package/dist/esm/ic-select.entry.js +10 -6
  461. package/dist/esm/ic-select.entry.js.map +1 -1
  462. package/dist/esm/ic-side-navigation.entry.js +1 -1
  463. package/dist/esm/ic-skeleton.entry.js +16 -35
  464. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  465. package/dist/esm/ic-status-tag.entry.js +1 -1
  466. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  467. package/dist/esm/ic-step.entry.js +1 -1
  468. package/dist/esm/ic-stepper.entry.js +1 -1
  469. package/dist/esm/ic-switch.entry.js +2 -2
  470. package/dist/esm/ic-switch.entry.js.map +1 -1
  471. package/dist/esm/ic-tab-group.entry.js +1 -1
  472. package/dist/esm/ic-tab-panel.entry.js +1 -1
  473. package/dist/esm/ic-tab.entry.js +2 -2
  474. package/dist/esm/ic-tab.entry.js.map +1 -1
  475. package/dist/esm/ic-text-field.entry.js +8 -8
  476. package/dist/esm/ic-text-field.entry.js.map +1 -1
  477. package/dist/esm/ic-theme.entry.js +13 -15
  478. package/dist/esm/ic-theme.entry.js.map +1 -1
  479. package/dist/esm/ic-toast.entry.js +1 -1
  480. package/dist/esm/ic-toggle-button.entry.js +2 -2
  481. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  482. package/dist/esm/ic-top-navigation.entry.js +15 -24
  483. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  484. package/dist/esm/ic-typography.entry.js +2 -2
  485. package/dist/esm/ic-typography.entry.js.map +1 -1
  486. package/dist/esm/loader.js +1 -1
  487. package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +3 -0
  488. package/dist/types/components/ic-back-to-top/ic-back-to-top.d.ts +6 -0
  489. package/dist/types/components/ic-back-to-top/ic-back-to-top.types.d.ts +1 -0
  490. package/dist/types/components/ic-badge/ic-badge.d.ts +6 -0
  491. package/dist/types/components/ic-button/ic-button.d.ts +1 -1
  492. package/dist/types/components/ic-button/ic-button.types.d.ts +1 -1
  493. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +0 -1
  494. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +2 -1
  495. package/dist/types/components/ic-chip/ic-chip.d.ts +1 -1
  496. package/dist/types/components/ic-pagination/ic-pagination.d.ts +3 -0
  497. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +2 -0
  498. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +2 -8
  499. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +4 -1
  500. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +1 -1
  501. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +1 -0
  502. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +0 -5
  503. package/dist/types/components/ic-status-tag/ic-status-tag.d.ts +1 -0
  504. package/dist/types/components/ic-text-field/ic-text-field.d.ts +0 -1
  505. package/dist/types/components/ic-theme/ic-theme.d.ts +2 -3
  506. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +2 -1
  507. package/dist/types/components.d.ts +16 -22
  508. package/dist/types/utils/helpers.d.ts +7 -13
  509. package/hydrate/index.js +398 -472
  510. package/package.json +2 -2
  511. package/vscode-data.json +25 -9
  512. package/dist/cjs/helpers-88e018cf.js.map +0 -1
  513. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js +0 -32
  514. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js.map +0 -1
  515. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js +0 -19
  516. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js.map +0 -1
  517. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js +0 -354
  518. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js.map +0 -1
  519. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js +0 -33
  520. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js.map +0 -1
  521. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js +0 -110
  522. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js.map +0 -1
  523. package/dist/core/p-00c21dd7.entry.js +0 -2
  524. package/dist/core/p-00c21dd7.entry.js.map +0 -1
  525. package/dist/core/p-02ad4585.entry.js +0 -2
  526. package/dist/core/p-02ad4585.entry.js.map +0 -1
  527. package/dist/core/p-051583a5.entry.js.map +0 -1
  528. package/dist/core/p-078f7f23.entry.js +0 -2
  529. package/dist/core/p-078f7f23.entry.js.map +0 -1
  530. package/dist/core/p-0c097626.entry.js +0 -2
  531. package/dist/core/p-0c097626.entry.js.map +0 -1
  532. package/dist/core/p-1b1270a1.entry.js.map +0 -1
  533. package/dist/core/p-1c3b619f.entry.js.map +0 -1
  534. package/dist/core/p-24bed047.entry.js +0 -2
  535. package/dist/core/p-24bed047.entry.js.map +0 -1
  536. package/dist/core/p-2d4e7985.entry.js.map +0 -1
  537. package/dist/core/p-328bc6a2.entry.js.map +0 -1
  538. package/dist/core/p-44ea7a6d.entry.js +0 -2
  539. package/dist/core/p-44ea7a6d.entry.js.map +0 -1
  540. package/dist/core/p-498273cb.entry.js +0 -2
  541. package/dist/core/p-498273cb.entry.js.map +0 -1
  542. package/dist/core/p-692ccc73.entry.js.map +0 -1
  543. package/dist/core/p-74f9082d.entry.js +0 -2
  544. package/dist/core/p-74f9082d.entry.js.map +0 -1
  545. package/dist/core/p-7b720034.entry.js.map +0 -1
  546. package/dist/core/p-8bc2a670.entry.js +0 -2
  547. package/dist/core/p-8bc2a670.entry.js.map +0 -1
  548. package/dist/core/p-8ed04819.entry.js.map +0 -1
  549. package/dist/core/p-8fe2b073.entry.js +0 -2
  550. package/dist/core/p-8fe2b073.entry.js.map +0 -1
  551. package/dist/core/p-9f29ab99.entry.js +0 -2
  552. package/dist/core/p-9f29ab99.entry.js.map +0 -1
  553. package/dist/core/p-a13236ef.entry.js.map +0 -1
  554. package/dist/core/p-adf468f4.entry.js.map +0 -1
  555. package/dist/core/p-ba40f44a.entry.js.map +0 -1
  556. package/dist/core/p-bceaf300.entry.js.map +0 -1
  557. package/dist/core/p-d19d157d.entry.js +0 -2
  558. package/dist/core/p-d19d157d.entry.js.map +0 -1
  559. package/dist/core/p-e4d0d1fb.js +0 -2
  560. package/dist/core/p-e4d0d1fb.js.map +0 -1
  561. package/dist/core/p-e68485ee.entry.js.map +0 -1
  562. package/dist/core/p-e8e0fa96.entry.js +0 -2
  563. package/dist/core/p-e8e0fa96.entry.js.map +0 -1
  564. package/dist/core/p-f8df0716.entry.js +0 -2
  565. package/dist/core/p-f8df0716.entry.js.map +0 -1
  566. package/dist/core/p-fd737b7e.entry.js +0 -2
  567. package/dist/core/p-fd737b7e.entry.js.map +0 -1
  568. package/dist/esm/helpers-24ba0b83.js.map +0 -1
  569. package/dist/types/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.d.ts +0 -1
  570. package/dist/types/components/ic-text-field/test/a11y/ic-text-field.test.a11y.d.ts +0 -1
  571. /package/dist/core/{p-346578e4.entry.js.map → p-099efe2a.entry.js.map} +0 -0
  572. /package/dist/core/{p-ba1c3cf7.entry.js.map → p-1624f4de.entry.js.map} +0 -0
  573. /package/dist/core/{p-04cc2b25.entry.js.map → p-25606a38.entry.js.map} +0 -0
  574. /package/dist/core/{p-4f3fe190.entry.js.map → p-2965644e.entry.js.map} +0 -0
  575. /package/dist/core/{p-3f53446c.entry.js.map → p-35856434.entry.js.map} +0 -0
  576. /package/dist/core/{p-d7f4779d.entry.js.map → p-459355ef.entry.js.map} +0 -0
  577. /package/dist/core/{p-32e2ae6f.entry.js.map → p-4e3a03cb.entry.js.map} +0 -0
  578. /package/dist/core/{p-c919c571.entry.js.map → p-521cc9c6.entry.js.map} +0 -0
  579. /package/dist/core/{p-2f91e86a.entry.js.map → p-687af4e5.entry.js.map} +0 -0
  580. /package/dist/core/{p-8e37e832.entry.js.map → p-7dbd0a9f.entry.js.map} +0 -0
  581. /package/dist/core/{p-e5957ce0.entry.js.map → p-8e3cc8e9.entry.js.map} +0 -0
  582. /package/dist/core/{p-731515cf.entry.js.map → p-a541cf18.entry.js.map} +0 -0
  583. /package/dist/core/{p-52a4c223.entry.js.map → p-ad6176a2.entry.js.map} +0 -0
  584. /package/dist/core/{p-5481b048.entry.js.map → p-adecaedd.entry.js.map} +0 -0
  585. /package/dist/core/{p-8153def1.entry.js.map → p-c199045d.entry.js.map} +0 -0
  586. /package/dist/core/{p-1a6fab3e.entry.js.map → p-cc9e5b0e.entry.js.map} +0 -0
  587. /package/dist/core/{p-03796d51.entry.js.map → p-ce4e0e38.entry.js.map} +0 -0
  588. /package/dist/core/{p-af5eacc1.entry.js.map → p-e5d5b07e.entry.js.map} +0 -0
  589. /package/dist/core/{p-b451f27c.entry.js.map → p-e70c6b33.entry.js.map} +0 -0
  590. /package/dist/core/{p-8b65be1e.entry.js.map → p-e776f72a.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ic-back-to-top.js","sourceRoot":"","sources":["../../../src/components/ic-back-to-top/ic-back-to-top.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Element, Prop, State, Watch } from \"@stencil/core\";\nimport ArrowUpward from \"./assets/ArrowUpward.svg\";\nimport {\n onComponentPropUndefinedChange,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\n\nconst backToTopLabel = \"Back to top\";\n\n@Component({\n tag: \"ic-back-to-top\",\n styleUrl: \"ic-back-to-top.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BackToTop {\n private isTargetElNull: boolean;\n private targetEl: Element;\n private topObserver: IntersectionObserver = null;\n\n @Element() el: HTMLIcBackToTopElement;\n\n @State() bannerOffset: boolean = false;\n @State() footerVisible: boolean = false;\n @State() targetElVisible: boolean = true;\n\n /**\n * The ID of the element to jump back to when the link is clicked.\n */\n @Prop() target!: string;\n\n @Watch(\"target\")\n watchPropHandler(newValue: string, oldValue: string): void {\n //added for gatsby rehydration issue where prop is initially undefined but then changes to actual value\n onComponentPropUndefinedChange(oldValue, newValue, () => {\n this.createTopObserver(newValue);\n });\n }\n\n componentWillLoad(): void {\n this.createTopObserver(this.target);\n this.checkForClassificationBanner();\n\n //observer for when footer scrolls into view\n let footers = document.querySelectorAll(\n \"ic-footer\"\n ) as NodeListOf<HTMLElement>;\n if (footers.length === 0) {\n footers = document.querySelectorAll(\"footer\");\n }\n\n if (footers.length) {\n const footerEl = footers[footers.length - 1];\n const threshold = this.bannerOffset ? 0.15 : 0;\n const footerObserver = new IntersectionObserver(\n this.footerObserverCallback,\n { threshold: [threshold] }\n );\n footerObserver.observe(footerEl);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.target, propName: \"target\" }],\n \"Back to Top\"\n );\n }\n\n private setTargetElVisible = (visible: boolean) => {\n this.targetElVisible = visible;\n };\n\n private setFooterVisible = (visible: boolean) => {\n this.checkForClassificationBanner();\n this.footerVisible =\n typeof window !== \"undefined\" && window.scrollY === 0 ? false : visible;\n };\n\n private targetElObserverCallback = (entries: IntersectionObserverEntry[]) => {\n this.setTargetElVisible(entries[0].isIntersecting);\n };\n\n private footerObserverCallback = (entries: IntersectionObserverEntry[]) => {\n this.setFooterVisible(entries[0].isIntersecting);\n };\n\n private findTargetEl = (target: string): Element => {\n let targetElement: Element = null;\n if (target === null || target === undefined) {\n console.log(\n \"Error: No target ID specified for back to top component - defaulting to top of page\"\n );\n } else {\n targetElement = document.querySelector(\n `${target.startsWith(\"#\") ? \"\" : \"#\"}${target}`\n );\n if (targetElement === null) {\n console.log(\n `Error: Back to top target element '${target}' not found - defaulting to top of page`\n );\n }\n }\n return targetElement;\n };\n\n private createTopObserver = (target: string) => {\n this.targetEl = this.findTargetEl(target);\n let objParent: HTMLElement;\n\n //remove old element & observer\n if (this.topObserver !== null) {\n const observedEl = document.querySelector(\"#ic-back-to-top-target\");\n if (observedEl !== null) {\n this.topObserver.unobserve(observedEl);\n observedEl.remove();\n }\n }\n\n if (this.targetEl === null) {\n objParent = document.body;\n this.targetEl = objParent.firstElementChild;\n this.isTargetElNull = true;\n } else {\n objParent = this.targetEl.parentNode as HTMLElement;\n this.isTargetElNull = false;\n }\n\n //insert a new 0px height element before specified target that can be used to determine when page is scrolled\n const objBackToTopTargetEl = document.createElement(\"div\");\n objBackToTopTargetEl.setAttribute(\"id\", \"ic-back-to-top-target\");\n objParent.insertBefore(objBackToTopTargetEl, this.targetEl);\n\n // resize observer needs to factor in any top margin on the target el\n const marginTop = getComputedStyle(this.targetEl).marginTop;\n this.topObserver = new IntersectionObserver(this.targetElObserverCallback, {\n threshold: [0],\n rootMargin: `${marginTop} 0px 0px 0px`,\n });\n this.topObserver.observe(objBackToTopTargetEl);\n };\n\n private handleClick = () => {\n if (this.isTargetElNull) {\n window.scrollTo(0, 0);\n } else {\n this.targetEl.scrollIntoView();\n }\n };\n\n private checkForClassificationBanner = () => {\n //adjust position for classification banner at bottom\n const banners = document.querySelectorAll(\n \"ic-classification-banner:not([inline='true'])\"\n );\n this.bannerOffset = banners.length > 0;\n };\n\n render() {\n const { bannerOffset, targetElVisible, footerVisible } = this;\n return (\n <button\n class={{\n [\"ic-back-to-top-link\"]: true,\n [\"offset-banner\"]: bannerOffset,\n [\"show\"]: !targetElVisible,\n [\"by-footer\"]: footerVisible,\n }}\n aria-label={backToTopLabel}\n onClick={this.handleClick}\n >\n <span class=\"ic-back-to-top-icon\" innerHTML={ArrowUpward} />\n\n <ic-typography variant=\"subtitle-small\">\n <span>{backToTopLabel}</span>\n </ic-typography>\n </button>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-back-to-top.js","sourceRoot":"","sources":["../../../src/components/ic-back-to-top/ic-back-to-top.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, h, Element, Prop, State, Watch } from \"@stencil/core\";\nimport ArrowUpward from \"./assets/ArrowUpward.svg\";\nimport {\n onComponentPropUndefinedChange,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcBackToTopVariants } from \"./ic-back-to-top.types\";\n\nconst backToTopLabel = \"Back to top\";\n\n@Component({\n tag: \"ic-back-to-top\",\n styleUrl: \"ic-back-to-top.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class BackToTop {\n private isTargetElNull: boolean;\n private targetEl: Element;\n private topObserver: IntersectionObserver = null;\n\n @Element() el: HTMLIcBackToTopElement;\n\n @State() bannerOffset: boolean = false;\n @State() footerVisible: boolean = false;\n @State() targetElVisible: boolean = true;\n\n /**\n * The ID of the element to jump back to when the link is clicked.\n */\n @Prop() target!: string;\n\n /**\n * The variant of the button to render\n */\n @Prop() variant: IcBackToTopVariants = \"default\";\n\n @Watch(\"target\")\n watchPropHandler(newValue: string, oldValue: string): void {\n //added for gatsby rehydration issue where prop is initially undefined but then changes to actual value\n onComponentPropUndefinedChange(oldValue, newValue, () => {\n this.createTopObserver(newValue);\n });\n }\n\n componentWillLoad(): void {\n this.createTopObserver(this.target);\n this.checkForClassificationBanner();\n\n //observer for when footer scrolls into view\n let footers = document.querySelectorAll(\n \"ic-footer\"\n ) as NodeListOf<HTMLElement>;\n if (footers.length === 0) {\n footers = document.querySelectorAll(\"footer\");\n }\n\n if (footers.length) {\n const footerEl = footers[footers.length - 1];\n const threshold = this.bannerOffset ? 0.15 : 0;\n const footerObserver = new IntersectionObserver(\n this.footerObserverCallback,\n { threshold: [threshold] }\n );\n footerObserver.observe(footerEl);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.target, propName: \"target\" }],\n \"Back to Top\"\n );\n }\n\n private setTargetElVisible = (visible: boolean) => {\n this.targetElVisible = visible;\n };\n\n private setFooterVisible = (visible: boolean) => {\n this.checkForClassificationBanner();\n this.footerVisible =\n typeof window !== \"undefined\" && window.scrollY === 0 ? false : visible;\n };\n\n private targetElObserverCallback = (entries: IntersectionObserverEntry[]) => {\n this.setTargetElVisible(entries[0].isIntersecting);\n };\n\n private footerObserverCallback = (entries: IntersectionObserverEntry[]) => {\n this.setFooterVisible(entries[0].isIntersecting);\n };\n\n private findTargetEl = (target: string): Element => {\n let targetElement: Element = null;\n if (target === null || target === undefined) {\n console.log(\n \"Error: No target ID specified for back to top component - defaulting to top of page\"\n );\n } else {\n targetElement = document.querySelector(\n `${target.startsWith(\"#\") ? \"\" : \"#\"}${target}`\n );\n if (targetElement === null) {\n console.log(\n `Error: Back to top target element '${target}' not found - defaulting to top of page`\n );\n }\n }\n return targetElement;\n };\n\n private createTopObserver = (target: string) => {\n this.targetEl = this.findTargetEl(target);\n let objParent: HTMLElement;\n\n //remove old element & observer\n if (this.topObserver !== null) {\n const observedEl = document.querySelector(\"#ic-back-to-top-target\");\n if (observedEl !== null) {\n this.topObserver.unobserve(observedEl);\n observedEl.remove();\n }\n }\n\n if (this.targetEl === null) {\n objParent = document.body;\n this.targetEl = objParent.firstElementChild;\n this.isTargetElNull = true;\n } else {\n objParent = this.targetEl.parentNode as HTMLElement;\n this.isTargetElNull = false;\n }\n\n //insert a new 0px height element before specified target that can be used to determine when page is scrolled\n const objBackToTopTargetEl = document.createElement(\"div\");\n objBackToTopTargetEl.setAttribute(\"id\", \"ic-back-to-top-target\");\n objParent.insertBefore(objBackToTopTargetEl, this.targetEl);\n\n // resize observer needs to factor in any top margin on the target el\n const marginTop = getComputedStyle(this.targetEl).marginTop;\n this.topObserver = new IntersectionObserver(this.targetElObserverCallback, {\n threshold: [0],\n rootMargin: `${marginTop} 0px 0px 0px`,\n });\n this.topObserver.observe(objBackToTopTargetEl);\n };\n\n private handleClick = () => {\n if (this.isTargetElNull) {\n window.scrollTo(0, 0);\n } else {\n this.targetEl.scrollIntoView();\n }\n };\n\n private checkForClassificationBanner = () => {\n //adjust position for classification banner at bottom\n const banners = document.querySelectorAll(\n \"ic-classification-banner:not([inline='true'])\"\n );\n this.bannerOffset = banners.length > 0;\n };\n\n private buildButton = () => {\n const { bannerOffset, targetElVisible, footerVisible, variant } = this;\n\n return (\n <button\n class={{\n [\"ic-back-to-top-link\"]: true,\n [\"offset-banner\"]: bannerOffset,\n [\"show\"]: !targetElVisible,\n [\"by-footer\"]: footerVisible,\n [\"positioning\"]: variant !== \"icon\",\n }}\n aria-label={backToTopLabel}\n onClick={this.handleClick}\n >\n <span class=\"ic-back-to-top-icon\" innerHTML={ArrowUpward} />\n\n {this.variant !== \"icon\" && (\n <ic-typography variant=\"subtitle-small\">\n <span>{backToTopLabel}</span>\n </ic-typography>\n )}\n </button>\n );\n };\n\n render() {\n const { variant, buildButton } = this;\n\n return variant === \"icon\" ? (\n <ic-tooltip label={backToTopLabel} placement=\"top\" class=\"positioning\">\n {buildButton()}\n </ic-tooltip>\n ) : (\n buildButton()\n );\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ic-back-to-top.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ic-back-to-top.types.js","sourceRoot":"","sources":["../../../src/components/ic-back-to-top/ic-back-to-top.types.ts"],"names":[],"mappings":"","sourcesContent":["export type IcBackToTopVariants = \"default\" | \"icon\";\n"]}
@@ -119,5 +119,14 @@ describe("ic-back-to-top", () => {
119
119
  await page.waitForChanges();
120
120
  expect(page.rootInstance.target).toBe("topEl");
121
121
  });
122
+ it("should render with an icon only", async () => {
123
+ const page = await newSpecPage({
124
+ components: [BackToTop],
125
+ html: `<div id="topEl"><ic-back-to-top target="topEl" variant="icon"></ic-back-to-top></div>`,
126
+ });
127
+ expect(page.root.shadowRoot.querySelector("button > span")).not.toBeNull();
128
+ expect(page.root.shadowRoot.querySelector("button > ic-typography")).toBeNull();
129
+ expect(page.root).toMatchSnapshot("should render with an icon only");
130
+ });
122
131
  });
123
132
  //# sourceMappingURL=ic-back-to-top.spec.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ic-back-to-top.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-back-to-top/test/basic/ic-back-to-top.spec.tsx"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { ClassificationBanner } from \"../../../ic-classification-banner/ic-classification-banner\";\nimport { Footer } from \"../../../ic-footer/ic-footer\";\nimport { BackToTop } from \"../../ic-back-to-top\";\n\nbeforeAll(() => {\n // IntersectionObserver isn't available in test environment\n const mockIntersectionObserver = jest.fn();\n mockIntersectionObserver.mockReturnValue({\n observe: jest.fn().mockReturnValue(null),\n unobserve: jest.fn().mockReturnValue(null),\n disconnect: jest.fn().mockReturnValue(null),\n });\n\n Object.defineProperty(global, \"IntersectionObserver\", {\n value: mockIntersectionObserver,\n });\n});\n\ndescribe(\"ic-back-to-top\", () => {\n it(\"should render\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render\");\n });\n\n it(\"should render with footer\", async () => {\n const page = await newSpecPage({\n components: [BackToTop, Footer],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div><ic-footer></ic-footer>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with footer\");\n });\n\n it(\"should render with no targetId set\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<ic-back-to-top></ic-back-to-top>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with no targetId set\");\n });\n\n it(\"should render when target starts with #\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"#topEl\"></ic-back-to-top></div>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render when target starts with #\"\n );\n });\n\n it(\"should offset due to classification banner\", async () => {\n const page = await newSpecPage({\n components: [BackToTop, ClassificationBanner],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top><ic-classification-banner></ic-classification-banner></div>`,\n });\n\n expect(page.rootInstance.bannerOffset).toBe(true);\n });\n\n it(\"should scroll to 0,0 if target is null\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top></ic-back-to-top></div>`,\n });\n\n expect(page.rootInstance.isTargetElNull).toBe(true);\n\n page.root.shadowRoot.querySelector(\"button\").click();\n expect(page.win.screenX).toBe(0);\n expect(page.win.screenY).toBe(0);\n });\n\n it(\"should scroll targetEl into view\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.root.shadowRoot.querySelector(\"button\").click();\n expect(page.rootInstance.targetElVisible).toBe(true);\n });\n\n it(\"should return null targetElement when there's no target matching that given in back to top\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n const findTarget = page.rootInstance.findTargetEl(\"topEl\");\n\n expect(findTarget).toBeNull();\n });\n\n it(\"should stop observing observedEl when topObserver exists\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.rootInstance.watchPropHandler(undefined, \"topEl\");\n page.rootInstance.createTopObserver(\"topEl\");\n expect(page.rootInstance.topObserver).not.toBeNull();\n });\n\n it(\"should set footerVisible\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.rootInstance.footerObserverCallback([{ isIntersecting: true }]);\n //value is false as scrollY is always 0\n expect(page.rootInstance.footerVisible).toBe(false);\n\n page.rootInstance.footerObserverCallback([{ isIntersecting: false }]);\n expect(page.rootInstance.footerVisible).toBe(false);\n });\n\n it(\"should set targetElVisible\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.rootInstance.targetElObserverCallback([{ isIntersecting: true }]);\n expect(page.rootInstance.targetElVisible).toBe(true);\n\n page.rootInstance.targetElObserverCallback([{ isIntersecting: false }]);\n expect(page.rootInstance.targetElVisible).toBe(false);\n });\n\n it(\"should test update of target from undefined to value\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top></ic-back-to-top></div>`,\n });\n\n page.root.target = \"topEl\";\n await page.waitForChanges();\n\n expect(page.rootInstance.target).toBe(\"topEl\");\n });\n});\n"]}
1
+ {"version":3,"file":"ic-back-to-top.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-back-to-top/test/basic/ic-back-to-top.spec.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,oBAAoB,EAAE,MAAM,4DAA4D,CAAC;AAClG,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,SAAS,CAAC,GAAG,EAAE;IACb,2DAA2D;IAC3D,MAAM,wBAAwB,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;IAC3C,wBAAwB,CAAC,eAAe,CAAC;QACvC,OAAO,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;QAC1C,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC;KAC5C,CAAC,CAAC;IAEH,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,sBAAsB,EAAE;QACpD,KAAK,EAAE,wBAAwB;KAChC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,wEAAwE;SAC/E,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,KAAK,IAAI,EAAE;QACzC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC;YAC/B,IAAI,EAAE,+FAA+F;SACtG,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,2BAA2B,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;QAClD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,mCAAmC;SAC1C,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,oCAAoC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,yEAAyE;SAChF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAC/B,yCAAyC,CAC1C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,EAAE,oBAAoB,CAAC;YAC7C,IAAI,EAAE,6HAA6H;SACpI,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,yDAAyD;SAChE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,wEAAwE;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4FAA4F,EAAE,KAAK,IAAI,EAAE;QAC1G,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,6DAA6D;SACpE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAE3D,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,wEAAwE;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACvD,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACxC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,wEAAwE;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACrE,uCAAuC;QACvC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpD,IAAI,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACtE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,wEAAwE;SAC/E,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,YAAY,CAAC,wBAAwB,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;QACpE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,yDAAyD;SAChE,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QAC3B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;QAC/C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,SAAS,CAAC;YACvB,IAAI,EAAE,uFAAuF;SAC9F,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3E,MAAM,CACJ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAC7D,CAAC,QAAQ,EAAE,CAAC;QAEb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,iCAAiC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { ClassificationBanner } from \"../../../ic-classification-banner/ic-classification-banner\";\nimport { Footer } from \"../../../ic-footer/ic-footer\";\nimport { BackToTop } from \"../../ic-back-to-top\";\n\nbeforeAll(() => {\n // IntersectionObserver isn't available in test environment\n const mockIntersectionObserver = jest.fn();\n mockIntersectionObserver.mockReturnValue({\n observe: jest.fn().mockReturnValue(null),\n unobserve: jest.fn().mockReturnValue(null),\n disconnect: jest.fn().mockReturnValue(null),\n });\n\n Object.defineProperty(global, \"IntersectionObserver\", {\n value: mockIntersectionObserver,\n });\n});\n\ndescribe(\"ic-back-to-top\", () => {\n it(\"should render\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render\");\n });\n\n it(\"should render with footer\", async () => {\n const page = await newSpecPage({\n components: [BackToTop, Footer],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div><ic-footer></ic-footer>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with footer\");\n });\n\n it(\"should render with no targetId set\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<ic-back-to-top></ic-back-to-top>`,\n });\n\n expect(page.root).toMatchSnapshot(\"should render with no targetId set\");\n });\n\n it(\"should render when target starts with #\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"#topEl\"></ic-back-to-top></div>`,\n });\n\n expect(page.root).toMatchSnapshot(\n \"should render when target starts with #\"\n );\n });\n\n it(\"should offset due to classification banner\", async () => {\n const page = await newSpecPage({\n components: [BackToTop, ClassificationBanner],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top><ic-classification-banner></ic-classification-banner></div>`,\n });\n\n expect(page.rootInstance.bannerOffset).toBe(true);\n });\n\n it(\"should scroll to 0,0 if target is null\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top></ic-back-to-top></div>`,\n });\n\n expect(page.rootInstance.isTargetElNull).toBe(true);\n\n page.root.shadowRoot.querySelector(\"button\").click();\n expect(page.win.screenX).toBe(0);\n expect(page.win.screenY).toBe(0);\n });\n\n it(\"should scroll targetEl into view\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.root.shadowRoot.querySelector(\"button\").click();\n expect(page.rootInstance.targetElVisible).toBe(true);\n });\n\n it(\"should return null targetElement when there's no target matching that given in back to top\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n const findTarget = page.rootInstance.findTargetEl(\"topEl\");\n\n expect(findTarget).toBeNull();\n });\n\n it(\"should stop observing observedEl when topObserver exists\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.rootInstance.watchPropHandler(undefined, \"topEl\");\n page.rootInstance.createTopObserver(\"topEl\");\n expect(page.rootInstance.topObserver).not.toBeNull();\n });\n\n it(\"should set footerVisible\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.rootInstance.footerObserverCallback([{ isIntersecting: true }]);\n //value is false as scrollY is always 0\n expect(page.rootInstance.footerVisible).toBe(false);\n\n page.rootInstance.footerObserverCallback([{ isIntersecting: false }]);\n expect(page.rootInstance.footerVisible).toBe(false);\n });\n\n it(\"should set targetElVisible\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\"></ic-back-to-top></div>`,\n });\n\n page.rootInstance.targetElObserverCallback([{ isIntersecting: true }]);\n expect(page.rootInstance.targetElVisible).toBe(true);\n\n page.rootInstance.targetElObserverCallback([{ isIntersecting: false }]);\n expect(page.rootInstance.targetElVisible).toBe(false);\n });\n\n it(\"should test update of target from undefined to value\", async () => {\n jest.spyOn(console, \"error\").mockImplementation(jest.fn());\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top></ic-back-to-top></div>`,\n });\n\n page.root.target = \"topEl\";\n await page.waitForChanges();\n\n expect(page.rootInstance.target).toBe(\"topEl\");\n });\n\n it(\"should render with an icon only\", async () => {\n const page = await newSpecPage({\n components: [BackToTop],\n html: `<div id=\"topEl\"><ic-back-to-top target=\"topEl\" variant=\"icon\"></ic-back-to-top></div>`,\n });\n\n expect(page.root.shadowRoot.querySelector(\"button > span\")).not.toBeNull();\n expect(\n page.root.shadowRoot.querySelector(\"button > ic-typography\")\n ).toBeNull();\n\n expect(page.root).toMatchSnapshot(\"should render with an icon only\");\n });\n});\n"]}
@@ -1,6 +1,5 @@
1
- import { Host, h } from "@stencil/core";
2
- import { IcThemeForegroundEnum, } from "../../utils/types";
3
- import { convertToRGBA, getCssProperty, getParentElement, getParentElementType, hexToRgba, isPropDefined, onComponentRequiredPropUndefined, } from "../../utils/helpers";
1
+ import { Host, h, } from "@stencil/core";
2
+ import { convertToRGBA, getCssProperty, getThemeForegroundColor, hexToRgba, isPropDefined, onComponentRequiredPropUndefined, rgbaStrToObj, } from "../../utils/helpers";
4
3
  /**
5
4
  * @slot badge-icon - Icon will be rendered inside the badge if type is set to icon.
6
5
  */
@@ -8,102 +7,59 @@ export class Badge {
8
7
  constructor() {
9
8
  this.ariaLabel = null;
10
9
  this.setBadgeColour = () => {
11
- if (this.customColor !== null && convertToRGBA(this.customColor) !== null) {
12
- const colorRGBA = convertToRGBA(this.customColor);
10
+ const colorRGBA = convertToRGBA(this.customColor);
11
+ if (colorRGBA) {
13
12
  this.customColorRGBA = colorRGBA;
14
- this.el.style.backgroundColor = `rgba(${colorRGBA.r.toString()}, ${colorRGBA.g.toString()}, ${colorRGBA.b.toString()}, ${colorRGBA.a.toString()})`;
13
+ const { r, g, b, a } = colorRGBA;
14
+ this.el.style.backgroundColor = `rgba(${r}, ${g}, ${b}, ${a})`;
15
15
  }
16
16
  };
17
- this.getBadgeForeground = () => {
18
- let red;
19
- let green;
20
- let blue;
17
+ this.getBadgeRGB = () => {
21
18
  switch (this.variant) {
22
19
  case "custom":
23
- red = this.customColorRGBA.r;
24
- green = this.customColorRGBA.g;
25
- blue = this.customColorRGBA.b;
26
- break;
20
+ return this.customColorRGBA;
27
21
  case "error":
28
- red = parseInt(getCssProperty("--ic-status-error-r"));
29
- green = parseInt(getCssProperty("--ic-status-error-g"));
30
- blue = parseInt(getCssProperty("--ic-status-error-b"));
31
- break;
32
22
  case "success":
33
- red = parseInt(getCssProperty("--ic-status-success-r"));
34
- green = parseInt(getCssProperty("--ic-status-success-g"));
35
- blue = parseInt(getCssProperty("--ic-status-success-b"));
36
- break;
37
23
  case "warning":
38
- red = parseInt(getCssProperty("--ic-status-warning-r"));
39
- green = parseInt(getCssProperty("--ic-status-warning-g"));
40
- blue = parseInt(getCssProperty("--ic-status-warning-b"));
41
- break;
42
24
  case "info": {
43
- const info = hexToRgba(getCssProperty("--ic-status-info"));
44
- red = info.r;
45
- green = info.g;
46
- blue = info.b;
47
- break;
48
- }
49
- case "neutral": {
50
- const neutral = hexToRgba(getCssProperty("--ic-architectural-500"));
51
- red = neutral.r;
52
- green = neutral.g;
53
- blue = neutral.b;
54
- break;
55
- }
56
- case "light": {
57
- const light = hexToRgba(getCssProperty("--ic-architectural-40"));
58
- red = light.r;
59
- green = light.g;
60
- blue = light.b;
61
- break;
25
+ return rgbaStrToObj(getCssProperty(`--ic-status-${this.variant}`));
62
26
  }
27
+ case "neutral":
28
+ case "light":
29
+ return hexToRgba(getCssProperty(`--ic-architectural-${this.variant === "neutral" ? 500 : 40}`));
63
30
  }
64
- const brightness = (red * 299 + green * 587 + blue * 114) / 1000;
65
- this.foregroundColour =
66
- brightness > 133.3505
67
- ? IcThemeForegroundEnum.Dark
68
- : IcThemeForegroundEnum.Light;
69
31
  };
70
- this.getTextLabel = () => {
71
- let label;
72
- if (this.textLabel !== null) {
73
- if (this.maxNumber !== null) {
74
- label =
75
- Number(this.textLabel) > this.maxNumber
76
- ? `${this.maxNumber}+`
77
- : this.textLabel;
78
- }
79
- else {
80
- label = this.textLabel;
81
- }
82
- }
83
- return label;
32
+ this.getBadgeForeground = () => {
33
+ const { r, g, b } = this.getBadgeRGB();
34
+ this.foregroundColour = getThemeForegroundColor((r * 299 + g * 587 + b * 114) / 1000);
84
35
  };
36
+ this.getTextLabel = () => this.maxNumber && Number(this.textLabel) > this.maxNumber
37
+ ? `${this.maxNumber}+`
38
+ : this.textLabel;
85
39
  // Set aria-label on badge and / or parent element
86
40
  // Aria-describedby seems to not work, probably due to shadow DOM
87
41
  this.setAccessibleLabel = () => {
88
- const parentElType = getParentElementType(this.el);
89
- const parentElAriaLabel = getParentElement(this.el).ariaLabel;
42
+ const parentEl = this.el.parentElement;
90
43
  const defaultAriaLabel = this.isAccessibleLabelDefined()
91
44
  ? this.accessibleLabel
92
45
  : this.textLabel || "with badge being displayed";
93
- if (getParentElement(this.el) !== null) {
94
- if (parentElType !== "IC-CARD" &&
95
- (parentElType !== "IC-TAB" ||
96
- (parentElType === "IC-TAB" && parentElAriaLabel))) {
97
- getParentElement(this.el).ariaLabel = `${parentElAriaLabel ? `${parentElAriaLabel} ,` : ""} ${defaultAriaLabel}`;
46
+ if (parentEl) {
47
+ const { tagName } = parentEl;
48
+ if (tagName !== "IC-CARD" &&
49
+ (tagName !== "IC-TAB" || (tagName === "IC-TAB" && this.parentAriaLabel))) {
50
+ const ariaLabelPrefix = this.parentAriaLabel
51
+ ? `${this.parentAriaLabel} ,`
52
+ : "";
53
+ parentEl.ariaLabel = this.visible
54
+ ? `${ariaLabelPrefix} ${defaultAriaLabel}`
55
+ : undefined;
98
56
  }
99
57
  else {
100
58
  this.ariaLabel = `, ${defaultAriaLabel}`;
101
59
  }
102
60
  }
103
61
  };
104
- this.isAccessibleLabelDefined = () => {
105
- return isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;
106
- };
62
+ this.isAccessibleLabelDefined = () => isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;
107
63
  this.accessibleLabel = undefined;
108
64
  this.customColor = null;
109
65
  this.maxNumber = undefined;
@@ -114,9 +70,25 @@ export class Badge {
114
70
  this.variant = "neutral";
115
71
  this.visible = true;
116
72
  }
73
+ accessibleLabelHandler() {
74
+ this.setAccessibleLabel();
75
+ }
76
+ customColorHandler() {
77
+ this.variant === "custom" && this.setBadgeColour();
78
+ }
79
+ variantHandler() {
80
+ this.getBadgeForeground();
81
+ }
82
+ visibleHandler() {
83
+ this.setAccessibleLabel();
84
+ }
117
85
  componentWillLoad() {
86
+ var _a;
118
87
  this.variant === "custom" && this.setBadgeColour();
119
88
  this.getBadgeForeground();
89
+ const ariaLabel = (_a = this.el.parentElement) === null || _a === void 0 ? void 0 : _a.ariaLabel;
90
+ if (ariaLabel)
91
+ this.parentAriaLabel = ariaLabel;
120
92
  this.setAccessibleLabel();
121
93
  }
122
94
  componentDidLoad() {
@@ -136,16 +108,15 @@ export class Badge {
136
108
  this.visible = false;
137
109
  }
138
110
  render() {
139
- const { position, size, type, variant, foregroundColour, visible } = this;
111
+ const { ariaLabel, el, foregroundColour, getTextLabel, position, size, textLabel, type, variant, visible, } = this;
140
112
  return (h(Host, { class: {
141
113
  [`${position}`]: true,
142
114
  [`${size}`]: true,
143
115
  [`${variant}`]: true,
144
116
  [`${type}`]: true,
145
117
  [`foreground-${foregroundColour}`]: foregroundColour !== null,
146
- ["show"]: visible,
147
- ["hide"]: !visible,
148
- }, id: this.el.id || null, "aria-label": this.ariaLabel, role: "status" }, type === "icon" && h("slot", { name: "badge-icon" }), type === "text" && (h("ic-typography", { variant: size === "small" ? "badge-small" : "badge" }, this.getTextLabel()))));
118
+ [`${visible ? "show" : "hide"}`]: true,
119
+ }, id: el.id || null, "aria-label": ariaLabel, role: "status" }, type === "icon" && h("slot", { name: "badge-icon" }), type === "text" && textLabel && (h("ic-typography", { variant: size === "small" ? "badge-small" : "badge" }, getTextLabel()))));
149
120
  }
150
121
  static get is() { return "ic-badge"; }
151
122
  static get encapsulation() { return "shadow"; }
@@ -398,5 +369,20 @@ export class Badge {
398
369
  };
399
370
  }
400
371
  static get elementRef() { return "el"; }
372
+ static get watchers() {
373
+ return [{
374
+ "propName": "accessibleLabel",
375
+ "methodName": "accessibleLabelHandler"
376
+ }, {
377
+ "propName": "customColor",
378
+ "methodName": "customColorHandler"
379
+ }, {
380
+ "propName": "variant",
381
+ "methodName": "variantHandler"
382
+ }, {
383
+ "propName": "visible",
384
+ "methodName": "visibleHandler"
385
+ }];
386
+ }
401
387
  }
402
388
  //# sourceMappingURL=ic-badge.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ic-badge.js","sourceRoot":"","sources":["../../../src/components/ic-badge/ic-badge.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Element, Host, Method, Prop, h } from \"@stencil/core\";\nimport {\n IcBadgePositions,\n IcBadgeTypes,\n IcBadgeVariants,\n} from \"./ic-badge.types\";\nimport {\n IcColorRGBA,\n IcSizes,\n IcThemeForeground,\n IcThemeForegroundEnum,\n IcColor,\n} from \"../../utils/types\";\nimport {\n convertToRGBA,\n getCssProperty,\n getParentElement,\n getParentElementType,\n hexToRgba,\n isPropDefined,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\n\n/**\n * @slot badge-icon - Icon will be rendered inside the badge if type is set to icon.\n */\n@Component({\n tag: \"ic-badge\",\n styleUrl: \"ic-badge.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Badge {\n private ariaLabel: string = null;\n private customColorRGBA: IcColorRGBA;\n private foregroundColour: IcThemeForeground;\n\n @Element() el: HTMLIcBadgeElement;\n\n /**\n * The accessible label of the badge component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string;\n\n /**\n * The custom badge colour. This will only style the badge component if variant=\"custom\".\n * Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() customColor?: IcColor = null;\n\n /**\n * The maximum number shown on the badge appended with a +.\n * This will only be displayed if type=\"text\" and textLabel is not empty.\n */\n @Prop() maxNumber?: number;\n\n /**\n * The positioning of the badge in reference to the parent element.\n */\n @Prop() position?: IcBadgePositions = \"far\";\n\n /**\n * The size of the badge to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The text displayed in the badge. This will only be displayed if type=\"text\".\n */\n @Prop() textLabel?: string;\n\n /**\n * The type of badge to be displayed.\n */\n @Prop() type?: IcBadgeTypes = \"text\";\n\n /**\n * The variant of the badge to be displayed.\n */\n @Prop() variant?: IcBadgeVariants = \"neutral\";\n\n /**\n * If `true`, the badge will be displayed.\n */\n @Prop({ mutable: true }) visible: boolean = true;\n\n componentWillLoad(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n\n this.getBadgeForeground();\n\n this.setAccessibleLabel();\n }\n\n componentDidLoad(): void {\n this.type === \"text\" &&\n onComponentRequiredPropUndefined(\n [{ prop: this.textLabel, propName: \"text-label\" }],\n \"Badge\"\n );\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async showBadge(): Promise<void> {\n this.visible = true;\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async hideBadge(): Promise<void> {\n this.visible = false;\n }\n\n private setBadgeColour = () => {\n if (this.customColor !== null && convertToRGBA(this.customColor) !== null) {\n const colorRGBA = convertToRGBA(this.customColor);\n this.customColorRGBA = colorRGBA;\n this.el.style.backgroundColor = `rgba(${colorRGBA.r.toString()}, ${colorRGBA.g.toString()}, ${colorRGBA.b.toString()}, ${colorRGBA.a.toString()})`;\n }\n };\n\n private getBadgeForeground = () => {\n let red: number;\n let green: number;\n let blue: number;\n\n switch (this.variant) {\n case \"custom\":\n red = this.customColorRGBA.r;\n green = this.customColorRGBA.g;\n blue = this.customColorRGBA.b;\n break;\n case \"error\":\n red = parseInt(getCssProperty(\"--ic-status-error-r\"));\n green = parseInt(getCssProperty(\"--ic-status-error-g\"));\n blue = parseInt(getCssProperty(\"--ic-status-error-b\"));\n break;\n case \"success\":\n red = parseInt(getCssProperty(\"--ic-status-success-r\"));\n green = parseInt(getCssProperty(\"--ic-status-success-g\"));\n blue = parseInt(getCssProperty(\"--ic-status-success-b\"));\n break;\n case \"warning\":\n red = parseInt(getCssProperty(\"--ic-status-warning-r\"));\n green = parseInt(getCssProperty(\"--ic-status-warning-g\"));\n blue = parseInt(getCssProperty(\"--ic-status-warning-b\"));\n break;\n case \"info\": {\n const info = hexToRgba(getCssProperty(\"--ic-status-info\"));\n red = info.r;\n green = info.g;\n blue = info.b;\n break;\n }\n case \"neutral\": {\n const neutral = hexToRgba(getCssProperty(\"--ic-architectural-500\"));\n red = neutral.r;\n green = neutral.g;\n blue = neutral.b;\n break;\n }\n case \"light\": {\n const light = hexToRgba(getCssProperty(\"--ic-architectural-40\"));\n red = light.r;\n green = light.g;\n blue = light.b;\n break;\n }\n }\n\n const brightness = (red * 299 + green * 587 + blue * 114) / 1000;\n this.foregroundColour =\n brightness > 133.3505\n ? IcThemeForegroundEnum.Dark\n : IcThemeForegroundEnum.Light;\n };\n\n private getTextLabel = () => {\n let label;\n if (this.textLabel !== null) {\n if (this.maxNumber !== null) {\n label =\n Number(this.textLabel) > this.maxNumber\n ? `${this.maxNumber}+`\n : this.textLabel;\n } else {\n label = this.textLabel;\n }\n }\n return label;\n };\n\n // Set aria-label on badge and / or parent element\n // Aria-describedby seems to not work, probably due to shadow DOM\n private setAccessibleLabel = () => {\n const parentElType = getParentElementType(this.el);\n const parentElAriaLabel = getParentElement(this.el).ariaLabel;\n const defaultAriaLabel = this.isAccessibleLabelDefined()\n ? this.accessibleLabel\n : this.textLabel || \"with badge being displayed\";\n\n if (getParentElement(this.el) !== null) {\n if (\n parentElType !== \"IC-CARD\" &&\n (parentElType !== \"IC-TAB\" ||\n (parentElType === \"IC-TAB\" && parentElAriaLabel))\n ) {\n getParentElement(this.el).ariaLabel = `${\n parentElAriaLabel ? `${parentElAriaLabel} ,` : \"\"\n } ${defaultAriaLabel}`;\n } else {\n this.ariaLabel = `, ${defaultAriaLabel}`;\n }\n }\n };\n\n private isAccessibleLabelDefined = () => {\n return isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;\n };\n\n render() {\n const { position, size, type, variant, foregroundColour, visible } = this;\n\n return (\n <Host\n class={{\n [`${position}`]: true,\n [`${size}`]: true,\n [`${variant}`]: true,\n [`${type}`]: true,\n [`foreground-${foregroundColour}`]: foregroundColour !== null,\n [\"show\"]: visible,\n [\"hide\"]: !visible,\n }}\n id={this.el.id || null}\n aria-label={this.ariaLabel}\n role=\"status\"\n >\n {type === \"icon\" && <slot name=\"badge-icon\"></slot>}\n {type === \"text\" && (\n <ic-typography variant={size === \"small\" ? \"badge-small\" : \"badge\"}>\n {this.getTextLabel()}\n </ic-typography>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-badge.js","sourceRoot":"","sources":["../../../src/components/ic-badge/ic-badge.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Host,\n Method,\n Prop,\n Watch,\n h,\n} from \"@stencil/core\";\nimport {\n IcBadgePositions,\n IcBadgeTypes,\n IcBadgeVariants,\n} from \"./ic-badge.types\";\nimport {\n IcColorRGBA,\n IcSizes,\n IcThemeForeground,\n IcColor,\n} from \"../../utils/types\";\nimport {\n convertToRGBA,\n getCssProperty,\n getThemeForegroundColor,\n hexToRgba,\n isPropDefined,\n onComponentRequiredPropUndefined,\n rgbaStrToObj,\n} from \"../../utils/helpers\";\n\n/**\n * @slot badge-icon - Icon will be rendered inside the badge if type is set to icon.\n */\n@Component({\n tag: \"ic-badge\",\n styleUrl: \"ic-badge.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Badge {\n private ariaLabel: string = null;\n private customColorRGBA: IcColorRGBA;\n private foregroundColour: IcThemeForeground;\n private parentAriaLabel: string;\n\n @Element() el: HTMLIcBadgeElement;\n\n /**\n * The accessible label of the badge component to provide context for screen reader users.\n */\n @Prop() accessibleLabel?: string;\n\n @Watch(\"accessibleLabel\")\n accessibleLabelHandler(): void {\n this.setAccessibleLabel();\n }\n\n /**\n * The custom badge colour. This will only style the badge component if variant=\"custom\".\n * Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() customColor?: IcColor = null;\n\n @Watch(\"customColor\")\n customColorHandler(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n }\n\n /**\n * The maximum number shown on the badge appended with a +.\n * This will only be displayed if type=\"text\" and textLabel is not empty.\n */\n @Prop() maxNumber?: number;\n\n /**\n * The positioning of the badge in reference to the parent element.\n */\n @Prop() position?: IcBadgePositions = \"far\";\n\n /**\n * The size of the badge to be displayed.\n */\n @Prop() size?: IcSizes = \"default\";\n\n /**\n * The text displayed in the badge. This will only be displayed if type=\"text\".\n */\n @Prop() textLabel?: string;\n\n /**\n * The type of badge to be displayed.\n */\n @Prop() type?: IcBadgeTypes = \"text\";\n\n /**\n * The variant of the badge to be displayed.\n */\n @Prop() variant?: IcBadgeVariants = \"neutral\";\n\n @Watch(\"variant\")\n variantHandler(): void {\n this.getBadgeForeground();\n }\n\n /**\n * If `true`, the badge will be displayed.\n */\n @Prop({ mutable: true }) visible: boolean = true;\n\n @Watch(\"visible\")\n visibleHandler(): void {\n this.setAccessibleLabel();\n }\n\n componentWillLoad(): void {\n this.variant === \"custom\" && this.setBadgeColour();\n\n this.getBadgeForeground();\n\n const ariaLabel = this.el.parentElement?.ariaLabel;\n if (ariaLabel) this.parentAriaLabel = ariaLabel;\n this.setAccessibleLabel();\n }\n\n componentDidLoad(): void {\n this.type === \"text\" &&\n onComponentRequiredPropUndefined(\n [{ prop: this.textLabel, propName: \"text-label\" }],\n \"Badge\"\n );\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async showBadge(): Promise<void> {\n this.visible = true;\n }\n\n /**\n * @deprecated This method should not be used anymore. Use visible prop to set badge visibility.\n */\n @Method()\n async hideBadge(): Promise<void> {\n this.visible = false;\n }\n\n private setBadgeColour = () => {\n const colorRGBA = convertToRGBA(this.customColor);\n\n if (colorRGBA) {\n this.customColorRGBA = colorRGBA;\n const { r, g, b, a } = colorRGBA;\n this.el.style.backgroundColor = `rgba(${r}, ${g}, ${b}, ${a})`;\n }\n };\n\n private getBadgeRGB = () => {\n switch (this.variant) {\n case \"custom\":\n return this.customColorRGBA;\n case \"error\":\n case \"success\":\n case \"warning\":\n case \"info\": {\n return rgbaStrToObj(getCssProperty(`--ic-status-${this.variant}`));\n }\n case \"neutral\":\n case \"light\":\n return hexToRgba(\n getCssProperty(\n `--ic-architectural-${this.variant === \"neutral\" ? 500 : 40}`\n )\n );\n }\n };\n\n private getBadgeForeground = () => {\n const { r, g, b } = this.getBadgeRGB();\n this.foregroundColour = getThemeForegroundColor(\n (r * 299 + g * 587 + b * 114) / 1000\n );\n };\n\n private getTextLabel = () =>\n this.maxNumber && Number(this.textLabel) > this.maxNumber\n ? `${this.maxNumber}+`\n : this.textLabel;\n\n // Set aria-label on badge and / or parent element\n // Aria-describedby seems to not work, probably due to shadow DOM\n private setAccessibleLabel = () => {\n const parentEl = this.el.parentElement;\n const defaultAriaLabel = this.isAccessibleLabelDefined()\n ? this.accessibleLabel\n : this.textLabel || \"with badge being displayed\";\n\n if (parentEl) {\n const { tagName } = parentEl;\n if (\n tagName !== \"IC-CARD\" &&\n (tagName !== \"IC-TAB\" || (tagName === \"IC-TAB\" && this.parentAriaLabel))\n ) {\n const ariaLabelPrefix = this.parentAriaLabel\n ? `${this.parentAriaLabel} ,`\n : \"\";\n parentEl.ariaLabel = this.visible\n ? `${ariaLabelPrefix} ${defaultAriaLabel}`\n : undefined;\n } else {\n this.ariaLabel = `, ${defaultAriaLabel}`;\n }\n }\n };\n\n private isAccessibleLabelDefined = () =>\n isPropDefined(this.accessibleLabel) && this.accessibleLabel !== null;\n\n render() {\n const {\n ariaLabel,\n el,\n foregroundColour,\n getTextLabel,\n position,\n size,\n textLabel,\n type,\n variant,\n visible,\n } = this;\n\n return (\n <Host\n class={{\n [`${position}`]: true,\n [`${size}`]: true,\n [`${variant}`]: true,\n [`${type}`]: true,\n [`foreground-${foregroundColour}`]: foregroundColour !== null,\n [`${visible ? \"show\" : \"hide\"}`]: true,\n }}\n id={el.id || null}\n aria-label={ariaLabel}\n role=\"status\"\n >\n {type === \"icon\" && <slot name=\"badge-icon\"></slot>}\n {type === \"text\" && textLabel && (\n <ic-typography variant={size === \"small\" ? \"badge-small\" : \"badge\"}>\n {getTextLabel()}\n </ic-typography>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
1
  import { Breadcrumb } from "../../ic-breadcrumb";
2
2
  import { newSpecPage } from "@stencil/core/testing";
3
3
  describe("ic-breadcrumb", () => {
4
- it("renders", async () => {
4
+ it("should render", async () => {
5
5
  const page = await newSpecPage({
6
6
  components: [Breadcrumb],
7
7
  html: `<ic-breadcrumb></ic-breadcrumb>`,
@@ -19,7 +19,7 @@ describe("ic-breadcrumb", () => {
19
19
  </ic-breadcrumb>
20
20
  `);
21
21
  });
22
- it("renders with page-title and href", async () => {
22
+ it("should render with page-title and href", async () => {
23
23
  const page = await newSpecPage({
24
24
  components: [Breadcrumb],
25
25
  html: `<ic-breadcrumb page-title="foo" href="/"></ic-breadcrumb>`,
@@ -39,7 +39,7 @@ describe("ic-breadcrumb", () => {
39
39
  </ic-breadcrumb>
40
40
  `);
41
41
  });
42
- it("renders with page-title, href, current", async () => {
42
+ it("should render with page-title, href, current", async () => {
43
43
  const page = await newSpecPage({
44
44
  components: [Breadcrumb],
45
45
  html: `<ic-breadcrumb page-title="foo" href="/" current="true"></ic-breadcrumb>`,
@@ -59,7 +59,7 @@ describe("ic-breadcrumb", () => {
59
59
  </ic-breadcrumb>
60
60
  `);
61
61
  });
62
- it("renders with icon", async () => {
62
+ it("should render with icon", async () => {
63
63
  const page = await newSpecPage({
64
64
  components: [Breadcrumb],
65
65
  html: `
@@ -1 +1 @@
1
- {"version":3,"file":"ic-breadcrumb.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,iCAAiC;SACxC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;KAW7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,2DAA2D;SAClE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;KAa7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,0EAA0E;SACjF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;KAa7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE;;;;;;;;;;;;;;;uBAeW;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;KAiB7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,iGAAiG;SACxG,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC;QAErD,MAAM,CACJ,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC3E,CAAC,UAAU,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,iCAAiC;SACxC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { Breadcrumb } from \"../../ic-breadcrumb\";\nimport { newSpecPage } from \"@stencil/core/testing\";\n\ndescribe(\"ic-breadcrumb\", () => {\n it(\"renders\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb></ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb role=\"listitem\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <slot></slot>\n </div>\n </mock:shadow-root>\n </ic-breadcrumb>\n `);\n });\n\n it(\"renders with page-title and href\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb page-title=\"foo\" href=\"/\"></ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb href=\"/\" page-title=\"foo\" role=\"listitem\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <ic-link appearance=\"default\" class=\"breadcrumb-link\" href=\"/\">\n foo\n </ic-link>\n </div>\n </mock:shadow-root>\n </ic-breadcrumb>\n `);\n });\n\n it(\"renders with page-title, href, current\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb page-title=\"foo\" href=\"/\" current=\"true\"></ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb current=\"true\" href=\"/\" page-title=\"foo\" role=\"listitem\" aria-current=\"page\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <span class=\"current-page-container default\">\n foo\n </span>\n </div>\n </mock:shadow-root>\n </ic-breadcrumb>\n `);\n });\n\n it(\"renders with icon\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `\n <ic-breadcrumb page-title=\"foo\" href=\"/\" current=\"true\">\n <svg\n slot=\"icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 6.19L17 10.69V18.5H15V12.5H9V18.5H7V10.69L12 6.19ZM12 3.5L2 12.5H5V20.5H11V14.5H13V20.5H19V12.5H22L12 3.5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb current=\"true\" href=\"/\" page-title=\"foo\" aria-current=\"page\" role=\"listitem\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <span class=\"current-page-container default\">\n <slot name=\"icon\"></slot>\n foo\n </span>\n </div>\n </mock:shadow-root>\n <svg fill=\"none\" height=\"24\" slot=\"icon\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 6.19L17 10.69V18.5H15V12.5H9V18.5H7V10.69L12 6.19ZM12 3.5L2 12.5H5V20.5H11V14.5H13V20.5H19V12.5H22L12 3.5Z\" fill=\"currentColor\"></path>\n </svg>\n </ic-breadcrumb>\n `);\n });\n\n it(\"should add the 'current-page' class when current prop is true\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: \"<ic-breadcrumb id='ic-breadcrumb' current=true><ic-link href='/'>Link</ic-link></ic-breadcrumb>\",\n });\n\n await page.rootInstance.setSlottedCurrentPageClass();\n\n expect(\n document.querySelector(\"ic-breadcrumb\").classList.contains(\"current-page\")\n ).toBeTruthy;\n });\n\n it(\"should call 'setFocus' when breadcrumb is focused\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb></ic-breadcrumb>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n});\n"]}
1
+ {"version":3,"file":"ic-breadcrumb.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,eAAe,EAAE,KAAK,IAAI,EAAE;QAC7B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,iCAAiC;SACxC,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;KAW7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,2DAA2D;SAClE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;KAa7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,0EAA0E;SACjF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;KAa7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE;;;;;;;;;;;;;;;uBAeW;SAClB,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;KAiB7B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,KAAK,IAAI,EAAE;QAC7E,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,iGAAiG;SACxG,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,YAAY,CAAC,0BAA0B,EAAE,CAAC;QAErD,MAAM,CACJ,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,CAC3E,CAAC,UAAU,CAAC;IACf,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,UAAU,CAAC;YACxB,IAAI,EAAE,iCAAiC;SACxC,CAAC,CAAC;QAEH,6EAA6E;QAC7E,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { Breadcrumb } from \"../../ic-breadcrumb\";\nimport { newSpecPage } from \"@stencil/core/testing\";\n\ndescribe(\"ic-breadcrumb\", () => {\n it(\"should render\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb></ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb role=\"listitem\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <slot></slot>\n </div>\n </mock:shadow-root>\n </ic-breadcrumb>\n `);\n });\n\n it(\"should render with page-title and href\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb page-title=\"foo\" href=\"/\"></ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb href=\"/\" page-title=\"foo\" role=\"listitem\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <ic-link appearance=\"default\" class=\"breadcrumb-link\" href=\"/\">\n foo\n </ic-link>\n </div>\n </mock:shadow-root>\n </ic-breadcrumb>\n `);\n });\n\n it(\"should render with page-title, href, current\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb page-title=\"foo\" href=\"/\" current=\"true\"></ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb current=\"true\" href=\"/\" page-title=\"foo\" role=\"listitem\" aria-current=\"page\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <span class=\"current-page-container default\">\n foo\n </span>\n </div>\n </mock:shadow-root>\n </ic-breadcrumb>\n `);\n });\n\n it(\"should render with icon\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `\n <ic-breadcrumb page-title=\"foo\" href=\"/\" current=\"true\">\n <svg\n slot=\"icon\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M12 6.19L17 10.69V18.5H15V12.5H9V18.5H7V10.69L12 6.19ZM12 3.5L2 12.5H5V20.5H11V14.5H13V20.5H19V12.5H22L12 3.5Z\"\n fill=\"currentColor\"\n ></path>\n </svg>\n </ic-breadcrumb>`,\n });\n\n expect(page.root).toEqualHtml(`\n <ic-breadcrumb current=\"true\" href=\"/\" page-title=\"foo\" aria-current=\"page\" role=\"listitem\">\n <mock:shadow-root>\n <div class=\"breadcrumb\">\n <span aria-hidden=\"true\" class=\"chevron\">\n svg\n </span>\n <span class=\"current-page-container default\">\n <slot name=\"icon\"></slot>\n foo\n </span>\n </div>\n </mock:shadow-root>\n <svg fill=\"none\" height=\"24\" slot=\"icon\" viewBox=\"0 0 24 24\" width=\"24\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M12 6.19L17 10.69V18.5H15V12.5H9V18.5H7V10.69L12 6.19ZM12 3.5L2 12.5H5V20.5H11V14.5H13V20.5H19V12.5H22L12 3.5Z\" fill=\"currentColor\"></path>\n </svg>\n </ic-breadcrumb>\n `);\n });\n\n it(\"should add the 'current-page' class when current prop is true\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: \"<ic-breadcrumb id='ic-breadcrumb' current=true><ic-link href='/'>Link</ic-link></ic-breadcrumb>\",\n });\n\n await page.rootInstance.setSlottedCurrentPageClass();\n\n expect(\n document.querySelector(\"ic-breadcrumb\").classList.contains(\"current-page\")\n ).toBeTruthy;\n });\n\n it(\"should call 'setFocus' when breadcrumb is focused\", async () => {\n const page = await newSpecPage({\n components: [Breadcrumb],\n html: `<ic-breadcrumb></ic-breadcrumb>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n});\n"]}
@@ -84,6 +84,8 @@ export class BreadcrumbGroup {
84
84
  this.removeVisuallyHiddenClass(breadcrumb);
85
85
  });
86
86
  this.expandedBreadcrumbs = true;
87
+ // Set focus to first unhidden breadcrumb
88
+ this.collapsedBreadcrumbs[0].setFocus();
87
89
  };
88
90
  this.transitionendHandler = (event) => {
89
91
  if (event.propertyName === "opacity") {
@@ -1 +1 @@
1
- {"version":3,"file":"ic-breadcrumb-group.js","sourceRoot":"","sources":["../../../src/components/ic-breadcrumb-group/ic-breadcrumb-group.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Component, Host, h, Element, Prop, State } from \"@stencil/core\";\nimport {\n checkResizeObserver,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n} from \"../../utils/helpers\";\nimport { IcThemeForeground } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-breadcrumb-group\",\n styleUrl: \"ic-breadcrumb-group.css\",\n shadow: true,\n})\n\n// Added ResizeObserver to find out width of breadcrumbs and parents. Use side navigation long title for ref.\nexport class BreadcrumbGroup {\n private ADD_CLASS_DELAY = 50;\n private breadcrumb: HTMLIcBreadcrumbElement;\n private breadcrumbs: HTMLIcBreadcrumbElement[];\n private collapsedBreadcrumbEl: HTMLButtonElement;\n private collapsedBreadcrumbs: HTMLIcBreadcrumbElement[];\n private collapsedBreadcrumbWrapper: HTMLIcBreadcrumbElement;\n private IC_BREADCRUMB: string = \"ic-breadcrumb\";\n private resizeObserver: ResizeObserver = null;\n private SHOW_BACK_ICON: string = \"show-back-icon\";\n\n @Element() el: HTMLIcBreadcrumbGroupElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n @State() expandedBreadcrumbs: boolean = false;\n\n /**\n * The appearance of the breadcrumb group.\n */\n @Prop() appearance: IcThemeForeground = \"default\";\n\n /**\n * If `true`, display only a single breadcrumb for the parent page with a back icon.\n */\n @Prop() backBreadcrumbOnly: boolean = false;\n /**\n * If `true`, all breadcrumbs between the first and last breadcrumb will be collapsed.\n */\n @Prop() collapsed: boolean = false;\n\n componentWillLoad(): void {\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n\n if (this.appearance !== \"default\") {\n allBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.setAttribute(\"appearance\", this.appearance);\n });\n }\n\n if (this.backBreadcrumbOnly) {\n this.setBackBreadcrumb();\n } else {\n checkResizeObserver(this.runResizeObserver);\n }\n\n if (this.collapsed) {\n this.collapsedBreadcrumbWrapper = this.renderCollapsedBreadcrumb();\n\n if (allBreadcrumbs.length > 2) {\n if (getCurrentDeviceSize() === DEVICE_SIZES.S) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setCollapsed();\n }\n }\n }\n }\n\n disconnectedCallback(): void {\n this.breadcrumb &&\n this.breadcrumb.removeEventListener(\n \"transitionend\",\n this.transitionendHandler\n );\n\n this.collapsedBreadcrumbEl &&\n this.collapsedBreadcrumbEl.removeEventListener(\n \"click\",\n this.clickHandler\n );\n }\n\n private setBackBreadcrumb = () => {\n if (this.backBreadcrumbOnly) {\n this.setBackBreadcrumbAttr();\n }\n };\n\n private setBackBreadcrumbAttr = () => {\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.classList.add(\"show\");\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"true\");\n }\n };\n\n private getLastParentBreadcrumb = (): HTMLIcBreadcrumbElement | null => {\n const allBreadcrumbs: HTMLIcBreadcrumbElement[] = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n\n if (allBreadcrumbs.length === 1) {\n return null;\n }\n\n this.breadcrumbs = allBreadcrumbs.filter(\n (breadcrumb) => !breadcrumb.getAttribute(\"current\")\n );\n this.breadcrumb = this.breadcrumbs[this.breadcrumbs.length - 1];\n\n return this.breadcrumb;\n };\n\n private lastParentBreadcrumb = this.getLastParentBreadcrumb();\n\n private setDefaultBreadcrumbs = () => {\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n allBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n });\n };\n\n private setCollapsed = () => {\n if (this.collapsed) {\n const allBreadcrumbs: HTMLIcBreadcrumbElement[] = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n this.collapsedBreadcrumbs = allBreadcrumbs\n .splice(1, allBreadcrumbs.length - 2)\n .filter(\n (breadcrumb) =>\n !breadcrumb.classList.contains(\"collapsed-breadcrumb-wrapper\")\n );\n\n this.collapsedBreadcrumbs.forEach((breadcrumb) =>\n breadcrumb.classList.add(\"hide\")\n );\n\n const firstBreadcrumb = allBreadcrumbs[0];\n\n if (firstBreadcrumb) {\n firstBreadcrumb.insertAdjacentElement(\n \"afterend\",\n this.collapsedBreadcrumbWrapper\n );\n }\n }\n };\n\n private clickHandler = () => {\n this.handleHiddenCollapsedBreadcrumbs(this.collapsedBreadcrumbWrapper);\n };\n\n private renderCollapsedBreadcrumb = () => {\n this.collapsedBreadcrumbWrapper = document.createElement(\"ic-breadcrumb\");\n this.collapsedBreadcrumbWrapper.classList.add(\n \"collapsed-breadcrumb-wrapper\"\n );\n this.collapsedBreadcrumbEl = document.createElement(\"button\");\n\n const ariaLabel = document.createElement(\"span\");\n ariaLabel.id = \"collapsed-button-label\";\n ariaLabel.innerText = \"Collapsed breadcrumbs\";\n ariaLabel.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\n \"aria-labelledby\",\n \"collapsed-button-label\"\n );\n\n const ariaDescribed = document.createElement(\"span\");\n ariaDescribed.id = \"collapsed-button-described\";\n ariaDescribed.innerText = \"Select to view collapsed breadcrumbs\";\n ariaDescribed.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\n \"aria-describedby\",\n \"collapsed-button-described\"\n );\n\n this.collapsedBreadcrumbEl.id = \"collapsed-ellipsis\";\n this.collapsedBreadcrumbEl.innerText = \"...\";\n this.collapsedBreadcrumbEl.classList.add(\"collapsed-breadcrumb\");\n this.collapsedBreadcrumbEl.addEventListener(\"click\", this.clickHandler);\n\n this.collapsedBreadcrumbWrapper.append(ariaDescribed);\n this.collapsedBreadcrumbWrapper.append(ariaLabel);\n this.collapsedBreadcrumbWrapper.append(this.collapsedBreadcrumbEl);\n\n return this.collapsedBreadcrumbWrapper;\n };\n\n private handleHiddenCollapsedBreadcrumbs = (\n collapsedBreadcrumbWrapper: HTMLIcBreadcrumbElement\n ) => {\n collapsedBreadcrumbWrapper.remove();\n this.collapsedBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.classList.add(\"visuallyhidden\");\n breadcrumb.classList.remove(\"hide\");\n setTimeout(() => {\n breadcrumb.classList.add(\"fade\");\n }, this.ADD_CLASS_DELAY);\n\n this.removeVisuallyHiddenClass(breadcrumb);\n });\n this.expandedBreadcrumbs = true;\n };\n\n private transitionendHandler = (event: TransitionEvent) => {\n if (event.propertyName === \"opacity\") {\n (event.target as HTMLElement).classList.remove(\"visuallyhidden\");\n }\n };\n\n private removeVisuallyHiddenClass = (breadcrumb: HTMLIcBreadcrumbElement) => {\n breadcrumb.addEventListener(\"transitionend\", this.transitionendHandler);\n };\n\n private setLastParentCollapsedBackBreadcrumb = () => {\n this.setBackBreadcrumbAttr();\n this.lastParentBreadcrumb.classList.remove(\"hide\");\n };\n\n private revertLastParentCollapsedBreadcrumb = () => {\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n };\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n\n if (this.deviceSize <= DEVICE_SIZES.S) {\n this.el.setAttribute(\"back-breadcrumb-only\", \"true\");\n if (this.collapsed) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setBackBreadcrumb();\n }\n } else {\n this.el.setAttribute(\"back-breadcrumb-only\", \"false\");\n if (this.collapsed && this.breadcrumbs && this.breadcrumbs.length > 2) {\n this.revertLastParentCollapsedBreadcrumb();\n if (this.expandedBreadcrumbs) {\n this.setDefaultBreadcrumbs();\n } else {\n this.setCollapsed();\n }\n } else {\n this.setDefaultBreadcrumbs();\n }\n }\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n return (\n <Host\n class={{\n back: this.backBreadcrumbOnly,\n collapsed: this.collapsed,\n }}\n >\n <nav aria-label=\"breadcrumbs\">\n <ol>\n <slot />\n </ol>\n </nav>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-breadcrumb-group.js","sourceRoot":"","sources":["../../../src/components/ic-breadcrumb-group/ic-breadcrumb-group.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACzE,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAS7B,6GAA6G;AAC7G,MAAM,OAAO,eAAe;;QAClB,oBAAe,GAAG,EAAE,CAAC;QAMrB,kBAAa,GAAW,eAAe,CAAC;QACxC,mBAAc,GAAmB,IAAI,CAAC;QACtC,mBAAc,GAAW,gBAAgB,CAAC;QAiE1C,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC/B,CAAC;QACH,CAAC,CAAC;QAEM,0BAAqB,GAAG,GAAG,EAAE;YACnC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9B,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBAChD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;YACtE,CAAC;QACH,CAAC,CAAC;QAEM,4BAAuB,GAAG,GAAmC,EAAE;YACrE,MAAM,cAAc,GAA8B,KAAK,CAAC,IAAI,CAC1D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAC7C,CAAC;YAEF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,IAAI,CAAC,WAAW,GAAG,cAAc,CAAC,MAAM,CACtC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CACpD,CAAC;YACF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAEhE,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC,CAAC;QAEM,yBAAoB,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAEtD,0BAAqB,GAAG,GAAG,EAAE;YACnC,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAC7C,CAAC;YACF,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACpC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAG,EAAE;YAC1B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,cAAc,GAA8B,KAAK,CAAC,IAAI,CAC1D,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAC7C,CAAC;gBACF,IAAI,CAAC,oBAAoB,GAAG,cAAc;qBACvC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;qBACpC,MAAM,CACL,CAAC,UAAU,EAAE,EAAE,CACb,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CACjE,CAAC;gBAEJ,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAC/C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CACjC,CAAC;gBAEF,MAAM,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAE1C,IAAI,eAAe,EAAE,CAAC;oBACpB,eAAe,CAAC,qBAAqB,CACnC,UAAU,EACV,IAAI,CAAC,0BAA0B,CAChC,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,iBAAY,GAAG,GAAG,EAAE;YAC1B,IAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QACzE,CAAC,CAAC;QAEM,8BAAyB,GAAG,GAAG,EAAE;YACvC,IAAI,CAAC,0BAA0B,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YAC1E,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,GAAG,CAC3C,8BAA8B,CAC/B,CAAC;YACF,IAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAE9D,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACjD,SAAS,CAAC,EAAE,GAAG,wBAAwB,CAAC;YACxC,SAAS,CAAC,SAAS,GAAG,uBAAuB,CAAC;YAC9C,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC;YAC7B,IAAI,CAAC,qBAAqB,CAAC,YAAY,CACrC,iBAAiB,EACjB,wBAAwB,CACzB,CAAC;YAEF,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YACrD,aAAa,CAAC,EAAE,GAAG,4BAA4B,CAAC;YAChD,aAAa,CAAC,SAAS,GAAG,sCAAsC,CAAC;YACjE,aAAa,CAAC,SAAS,GAAG,MAAM,CAAC;YACjC,IAAI,CAAC,qBAAqB,CAAC,YAAY,CACrC,kBAAkB,EAClB,4BAA4B,CAC7B,CAAC;YAEF,IAAI,CAAC,qBAAqB,CAAC,EAAE,GAAG,oBAAoB,CAAC;YACrD,IAAI,CAAC,qBAAqB,CAAC,SAAS,GAAG,KAAK,CAAC;YAC7C,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACjE,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAExE,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YACtD,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAClD,IAAI,CAAC,0BAA0B,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YAEnE,OAAO,IAAI,CAAC,0BAA0B,CAAC;QACzC,CAAC,CAAC;QAEM,qCAAgC,GAAG,CACzC,0BAAmD,EACnD,EAAE;YACF,0BAA0B,CAAC,MAAM,EAAE,CAAC;YACpC,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBAC/C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAC3C,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBACpC,UAAU,CAAC,GAAG,EAAE;oBACd,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnC,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;gBAEzB,IAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,CAAC;YAC7C,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,yCAAyC;YACzC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAC1C,CAAC,CAAC;QAEM,yBAAoB,GAAG,CAAC,KAAsB,EAAE,EAAE;YACxD,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;gBACpC,KAAK,CAAC,MAAsB,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;YACnE,CAAC;QACH,CAAC,CAAC;QAEM,8BAAyB,GAAG,CAAC,UAAmC,EAAE,EAAE;YAC1E,UAAU,CAAC,gBAAgB,CAAC,eAAe,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC1E,CAAC,CAAC;QAEM,yCAAoC,GAAG,GAAG,EAAE;YAClD,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC,CAAC;QAEM,wCAAmC,GAAG,GAAG,EAAE;YACjD,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,IAAI,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACvE,CAAC,CAAC;QAEM,2BAAsB,GAAG,CAAC,QAAgB,EAAE,EAAE;YACpD,IAAI,QAAQ,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;gBACjC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAE3B,IAAI,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC;oBACtC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;oBACrD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;wBACnB,IAAI,CAAC,oCAAoC,EAAE,CAAC;oBAC9C,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBAC3B,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC;oBACtD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACtE,IAAI,CAAC,mCAAmC,EAAE,CAAC;wBAC3C,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;wBAC/B,CAAC;6BAAM,CAAC;4BACN,IAAI,CAAC,YAAY,EAAE,CAAC;wBACtB,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,qBAAqB,EAAE,CAAC;oBAC/B,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEM,sBAAiB,GAAG,GAAG,EAAE;YAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE;gBAC5C,MAAM,QAAQ,GAAG,oBAAoB,EAAE,CAAC;gBACxC,IAAI,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC;0BAjP4B,YAAY,CAAC,EAAE;mCACL,KAAK;0BAKL,SAAS;kCAKX,KAAK;yBAId,KAAK;;IAElC,iBAAiB;QACf,MAAM,cAAc,GAAG,KAAK,CAAC,IAAI,CAC/B,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAC7C,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YAClC,cAAc,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE;gBACpC,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,mBAAmB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;YAEnE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,IAAI,oBAAoB,EAAE,KAAK,YAAY,CAAC,CAAC,EAAE,CAAC;oBAC9C,IAAI,CAAC,oCAAoC,EAAE,CAAC;gBAC9C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,YAAY,EAAE,CAAC;gBACtB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,UAAU,CAAC,mBAAmB,CACjC,eAAe,EACf,IAAI,CAAC,oBAAoB,CAC1B,CAAC;QAEJ,IAAI,CAAC,qBAAqB;YACxB,IAAI,CAAC,qBAAqB,CAAC,mBAAmB,CAC5C,OAAO,EACP,IAAI,CAAC,YAAY,CAClB,CAAC;IACN,CAAC;IAwLD,MAAM;QACJ,OAAO,CACL,EAAC,IAAI,IACH,KAAK,EAAE;gBACL,IAAI,EAAE,IAAI,CAAC,kBAAkB;gBAC7B,SAAS,EAAE,IAAI,CAAC,SAAS;aAC1B;YAED,yBAAgB,aAAa;gBAC3B;oBACE,eAAQ,CACL,CACD,CACD,CACR,CAAC;IACJ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import { Component, Host, h, Element, Prop, State } from \"@stencil/core\";\nimport {\n checkResizeObserver,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n} from \"../../utils/helpers\";\nimport { IcThemeForeground } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-breadcrumb-group\",\n styleUrl: \"ic-breadcrumb-group.css\",\n shadow: true,\n})\n\n// Added ResizeObserver to find out width of breadcrumbs and parents. Use side navigation long title for ref.\nexport class BreadcrumbGroup {\n private ADD_CLASS_DELAY = 50;\n private breadcrumb: HTMLIcBreadcrumbElement;\n private breadcrumbs: HTMLIcBreadcrumbElement[];\n private collapsedBreadcrumbEl: HTMLButtonElement;\n private collapsedBreadcrumbs: HTMLIcBreadcrumbElement[];\n private collapsedBreadcrumbWrapper: HTMLIcBreadcrumbElement;\n private IC_BREADCRUMB: string = \"ic-breadcrumb\";\n private resizeObserver: ResizeObserver = null;\n private SHOW_BACK_ICON: string = \"show-back-icon\";\n\n @Element() el: HTMLIcBreadcrumbGroupElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n @State() expandedBreadcrumbs: boolean = false;\n\n /**\n * The appearance of the breadcrumb group.\n */\n @Prop() appearance: IcThemeForeground = \"default\";\n\n /**\n * If `true`, display only a single breadcrumb for the parent page with a back icon.\n */\n @Prop() backBreadcrumbOnly: boolean = false;\n /**\n * If `true`, all breadcrumbs between the first and last breadcrumb will be collapsed.\n */\n @Prop() collapsed: boolean = false;\n\n componentWillLoad(): void {\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n\n if (this.appearance !== \"default\") {\n allBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.setAttribute(\"appearance\", this.appearance);\n });\n }\n\n if (this.backBreadcrumbOnly) {\n this.setBackBreadcrumb();\n } else {\n checkResizeObserver(this.runResizeObserver);\n }\n\n if (this.collapsed) {\n this.collapsedBreadcrumbWrapper = this.renderCollapsedBreadcrumb();\n\n if (allBreadcrumbs.length > 2) {\n if (getCurrentDeviceSize() === DEVICE_SIZES.S) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setCollapsed();\n }\n }\n }\n }\n\n disconnectedCallback(): void {\n this.breadcrumb &&\n this.breadcrumb.removeEventListener(\n \"transitionend\",\n this.transitionendHandler\n );\n\n this.collapsedBreadcrumbEl &&\n this.collapsedBreadcrumbEl.removeEventListener(\n \"click\",\n this.clickHandler\n );\n }\n\n private setBackBreadcrumb = () => {\n if (this.backBreadcrumbOnly) {\n this.setBackBreadcrumbAttr();\n }\n };\n\n private setBackBreadcrumbAttr = () => {\n if (this.lastParentBreadcrumb) {\n this.lastParentBreadcrumb.classList.add(\"show\");\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"true\");\n }\n };\n\n private getLastParentBreadcrumb = (): HTMLIcBreadcrumbElement | null => {\n const allBreadcrumbs: HTMLIcBreadcrumbElement[] = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n\n if (allBreadcrumbs.length === 1) {\n return null;\n }\n\n this.breadcrumbs = allBreadcrumbs.filter(\n (breadcrumb) => !breadcrumb.getAttribute(\"current\")\n );\n this.breadcrumb = this.breadcrumbs[this.breadcrumbs.length - 1];\n\n return this.breadcrumb;\n };\n\n private lastParentBreadcrumb = this.getLastParentBreadcrumb();\n\n private setDefaultBreadcrumbs = () => {\n const allBreadcrumbs = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n allBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n });\n };\n\n private setCollapsed = () => {\n if (this.collapsed) {\n const allBreadcrumbs: HTMLIcBreadcrumbElement[] = Array.from(\n this.el.querySelectorAll(this.IC_BREADCRUMB)\n );\n this.collapsedBreadcrumbs = allBreadcrumbs\n .splice(1, allBreadcrumbs.length - 2)\n .filter(\n (breadcrumb) =>\n !breadcrumb.classList.contains(\"collapsed-breadcrumb-wrapper\")\n );\n\n this.collapsedBreadcrumbs.forEach((breadcrumb) =>\n breadcrumb.classList.add(\"hide\")\n );\n\n const firstBreadcrumb = allBreadcrumbs[0];\n\n if (firstBreadcrumb) {\n firstBreadcrumb.insertAdjacentElement(\n \"afterend\",\n this.collapsedBreadcrumbWrapper\n );\n }\n }\n };\n\n private clickHandler = () => {\n this.handleHiddenCollapsedBreadcrumbs(this.collapsedBreadcrumbWrapper);\n };\n\n private renderCollapsedBreadcrumb = () => {\n this.collapsedBreadcrumbWrapper = document.createElement(\"ic-breadcrumb\");\n this.collapsedBreadcrumbWrapper.classList.add(\n \"collapsed-breadcrumb-wrapper\"\n );\n this.collapsedBreadcrumbEl = document.createElement(\"button\");\n\n const ariaLabel = document.createElement(\"span\");\n ariaLabel.id = \"collapsed-button-label\";\n ariaLabel.innerText = \"Collapsed breadcrumbs\";\n ariaLabel.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\n \"aria-labelledby\",\n \"collapsed-button-label\"\n );\n\n const ariaDescribed = document.createElement(\"span\");\n ariaDescribed.id = \"collapsed-button-described\";\n ariaDescribed.innerText = \"Select to view collapsed breadcrumbs\";\n ariaDescribed.className = \"hide\";\n this.collapsedBreadcrumbEl.setAttribute(\n \"aria-describedby\",\n \"collapsed-button-described\"\n );\n\n this.collapsedBreadcrumbEl.id = \"collapsed-ellipsis\";\n this.collapsedBreadcrumbEl.innerText = \"...\";\n this.collapsedBreadcrumbEl.classList.add(\"collapsed-breadcrumb\");\n this.collapsedBreadcrumbEl.addEventListener(\"click\", this.clickHandler);\n\n this.collapsedBreadcrumbWrapper.append(ariaDescribed);\n this.collapsedBreadcrumbWrapper.append(ariaLabel);\n this.collapsedBreadcrumbWrapper.append(this.collapsedBreadcrumbEl);\n\n return this.collapsedBreadcrumbWrapper;\n };\n\n private handleHiddenCollapsedBreadcrumbs = (\n collapsedBreadcrumbWrapper: HTMLIcBreadcrumbElement\n ) => {\n collapsedBreadcrumbWrapper.remove();\n this.collapsedBreadcrumbs.forEach((breadcrumb) => {\n breadcrumb.classList.add(\"visuallyhidden\");\n breadcrumb.classList.remove(\"hide\");\n setTimeout(() => {\n breadcrumb.classList.add(\"fade\");\n }, this.ADD_CLASS_DELAY);\n\n this.removeVisuallyHiddenClass(breadcrumb);\n });\n this.expandedBreadcrumbs = true;\n // Set focus to first unhidden breadcrumb\n this.collapsedBreadcrumbs[0].setFocus();\n };\n\n private transitionendHandler = (event: TransitionEvent) => {\n if (event.propertyName === \"opacity\") {\n (event.target as HTMLElement).classList.remove(\"visuallyhidden\");\n }\n };\n\n private removeVisuallyHiddenClass = (breadcrumb: HTMLIcBreadcrumbElement) => {\n breadcrumb.addEventListener(\"transitionend\", this.transitionendHandler);\n };\n\n private setLastParentCollapsedBackBreadcrumb = () => {\n this.setBackBreadcrumbAttr();\n this.lastParentBreadcrumb.classList.remove(\"hide\");\n };\n\n private revertLastParentCollapsedBreadcrumb = () => {\n this.lastParentBreadcrumb.setAttribute(this.SHOW_BACK_ICON, \"false\");\n };\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n\n if (this.deviceSize <= DEVICE_SIZES.S) {\n this.el.setAttribute(\"back-breadcrumb-only\", \"true\");\n if (this.collapsed) {\n this.setLastParentCollapsedBackBreadcrumb();\n } else {\n this.setBackBreadcrumb();\n }\n } else {\n this.el.setAttribute(\"back-breadcrumb-only\", \"false\");\n if (this.collapsed && this.breadcrumbs && this.breadcrumbs.length > 2) {\n this.revertLastParentCollapsedBreadcrumb();\n if (this.expandedBreadcrumbs) {\n this.setDefaultBreadcrumbs();\n } else {\n this.setCollapsed();\n }\n } else {\n this.setDefaultBreadcrumbs();\n }\n }\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n return (\n <Host\n class={{\n back: this.backBreadcrumbOnly,\n collapsed: this.collapsed,\n }}\n >\n <nav aria-label=\"breadcrumbs\">\n <ol>\n <slot />\n </ol>\n </nav>\n </Host>\n );\n }\n}\n"]}