@ukic/web-components 2.10.0 → 2.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (446) hide show
  1. package/dist/cjs/core.cjs.js +3 -3
  2. package/dist/cjs/core.cjs.js.map +1 -1
  3. package/dist/cjs/{helpers-3f91f63a.js → helpers-56e80cc9.js} +6 -6
  4. package/dist/cjs/{helpers-3f91f63a.js.map → helpers-56e80cc9.js.map} +1 -1
  5. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-accordion.cjs.entry.js +2 -2
  7. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  8. package/dist/cjs/ic-back-to-top.cjs.entry.js +5 -9
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js +2 -2
  11. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +2 -2
  12. package/dist/cjs/ic-breadcrumb.cjs.entry.js +2 -2
  13. package/dist/cjs/ic-button_3.cjs.entry.js +44 -31
  14. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-card.cjs.entry.js +2 -2
  16. package/dist/cjs/ic-checkbox-group.cjs.entry.js +2 -2
  17. package/dist/cjs/ic-checkbox.cjs.entry.js +2 -2
  18. package/dist/cjs/ic-chip.cjs.entry.js +2 -2
  19. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-data-entity.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-data-row.cjs.entry.js +2 -2
  22. package/dist/cjs/ic-dialog.cjs.entry.js +2 -2
  23. package/dist/cjs/ic-divider.cjs.entry.js +2 -2
  24. package/dist/cjs/ic-empty-state.cjs.entry.js +2 -2
  25. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  27. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  28. package/dist/cjs/ic-hero.cjs.entry.js +2 -2
  29. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +2 -2
  30. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +2 -2
  31. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-input-label_2.cjs.entry.js +2 -2
  33. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  34. package/dist/cjs/ic-menu-group.cjs.entry.js +2 -2
  35. package/dist/cjs/ic-menu-item.cjs.entry.js +3 -3
  36. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-navigation-button.cjs.entry.js +2 -2
  38. package/dist/cjs/ic-navigation-group.cjs.entry.js +6 -9
  39. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  40. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  41. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-navigation-menu.cjs.entry.js +2 -2
  43. package/dist/cjs/ic-page-header.cjs.entry.js +3 -3
  44. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-pagination-item.cjs.entry.js +2 -2
  46. package/dist/cjs/ic-pagination.cjs.entry.js +2 -2
  47. package/dist/cjs/ic-popover-menu.cjs.entry.js +2 -2
  48. package/dist/cjs/ic-radio-group.cjs.entry.js +2 -2
  49. package/dist/cjs/ic-radio-option.cjs.entry.js +2 -2
  50. package/dist/cjs/ic-search-bar.cjs.entry.js +2 -2
  51. package/dist/cjs/ic-section-container.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-select.cjs.entry.js +2 -2
  53. package/dist/cjs/ic-side-navigation.cjs.entry.js +33 -62
  54. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-skeleton.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-status-tag.cjs.entry.js +4 -3
  57. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-step.cjs.entry.js +2 -2
  59. package/dist/cjs/ic-stepper.cjs.entry.js +2 -2
  60. package/dist/cjs/ic-switch.cjs.entry.js +2 -2
  61. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-tab-group.cjs.entry.js +2 -2
  63. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  64. package/dist/cjs/ic-tab.cjs.entry.js +2 -2
  65. package/dist/cjs/ic-text-field.cjs.entry.js +2 -2
  66. package/dist/cjs/ic-theme.cjs.entry.js +2 -2
  67. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-toast.cjs.entry.js +13 -16
  69. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-toggle-button.cjs.entry.js +69 -0
  71. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -0
  72. package/dist/cjs/ic-top-navigation.cjs.entry.js +4 -3
  73. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  74. package/dist/cjs/ic-typography.cjs.entry.js +2 -2
  75. package/dist/cjs/{index-152d1fe5.js → index-f982899d.js} +6 -12
  76. package/dist/cjs/index-f982899d.js.map +1 -0
  77. package/dist/cjs/loader.cjs.js +2 -2
  78. package/dist/collection/collection-manifest.json +3 -2
  79. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  80. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -1
  81. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js +3 -7
  82. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js.map +1 -1
  83. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  84. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  85. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  86. package/dist/collection/components/ic-button/ic-button.css +11 -1
  87. package/dist/collection/components/ic-button/ic-button.js +10 -1
  88. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  89. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  90. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  91. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  92. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  93. package/dist/collection/components/ic-data-entity/ic-data-entity.js.map +1 -1
  94. package/dist/collection/components/ic-data-row/ic-data-row.js.map +1 -1
  95. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  96. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  97. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  98. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  99. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  100. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  101. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  102. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  103. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  104. package/dist/collection/components/ic-menu-item/ic-menu-item.css +16 -16
  105. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  106. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  107. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +4 -7
  108. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  109. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +28 -7
  110. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  111. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  112. package/dist/collection/components/ic-page-header/ic-page-header.css +1 -1
  113. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  114. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  115. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  116. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  117. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  118. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  119. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +1 -1
  120. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  121. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +31 -60
  122. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  123. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  124. package/dist/collection/components/ic-status-tag/ic-status-tag.css +9 -0
  125. package/dist/collection/components/ic-status-tag/ic-status-tag.js +1 -0
  126. package/dist/collection/components/ic-status-tag/ic-status-tag.js.map +1 -1
  127. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  128. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  129. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js.map +1 -1
  130. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  131. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  132. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  133. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  134. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  135. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  136. package/dist/collection/components/ic-toast/ic-toast.js +11 -14
  137. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  138. package/dist/collection/components/ic-toast-region/ic-toast-region.js.map +1 -1
  139. package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +555 -0
  140. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +291 -0
  141. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js.map +1 -0
  142. package/dist/collection/components/ic-toggle-button/test/basic/ic-toggle-button.spec.js +116 -0
  143. package/dist/collection/components/ic-toggle-button/test/basic/ic-toggle-button.spec.js.map +1 -0
  144. package/dist/collection/components/ic-tooltip/ic-tooltip.js +32 -27
  145. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  146. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js +11 -0
  147. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js.map +1 -1
  148. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +2 -1
  149. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  150. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  151. package/dist/collection/utils/helpers.js +5 -5
  152. package/dist/collection/utils/helpers.js.map +1 -1
  153. package/dist/components/helpers.js +5 -5
  154. package/dist/components/ic-back-to-top.js +3 -7
  155. package/dist/components/ic-back-to-top.js.map +1 -1
  156. package/dist/components/ic-button2.js +10 -2
  157. package/dist/components/ic-button2.js.map +1 -1
  158. package/dist/components/ic-menu-item2.js +1 -1
  159. package/dist/components/ic-menu-item2.js.map +1 -1
  160. package/dist/components/ic-menu2.js.map +1 -1
  161. package/dist/components/ic-navigation-group.js +4 -7
  162. package/dist/components/ic-navigation-group.js.map +1 -1
  163. package/dist/components/ic-navigation-item.js.map +1 -1
  164. package/dist/components/ic-page-header.js +1 -1
  165. package/dist/components/ic-page-header.js.map +1 -1
  166. package/dist/components/ic-side-navigation.js +31 -60
  167. package/dist/components/ic-side-navigation.js.map +1 -1
  168. package/dist/components/ic-status-tag.js +2 -1
  169. package/dist/components/ic-status-tag.js.map +1 -1
  170. package/dist/components/ic-toast.js +11 -14
  171. package/dist/components/ic-toast.js.map +1 -1
  172. package/dist/components/ic-toggle-button.d.ts +11 -0
  173. package/dist/components/ic-toggle-button.js +117 -0
  174. package/dist/components/ic-toggle-button.js.map +1 -0
  175. package/dist/components/ic-tooltip2.js +32 -27
  176. package/dist/components/ic-tooltip2.js.map +1 -1
  177. package/dist/components/ic-top-navigation.js +2 -1
  178. package/dist/components/ic-top-navigation.js.map +1 -1
  179. package/dist/core/core.esm.js +1 -1
  180. package/dist/core/core.esm.js.map +1 -1
  181. package/dist/core/{p-daebb58a.entry.js → p-003c44bd.entry.js} +2 -2
  182. package/dist/core/{p-b6a575c3.entry.js → p-049bf5e3.entry.js} +2 -2
  183. package/dist/core/p-0713230f.entry.js +2 -0
  184. package/dist/core/p-0713230f.entry.js.map +1 -0
  185. package/dist/core/{p-ea17e371.entry.js → p-0a0b748c.entry.js} +2 -2
  186. package/dist/core/{p-d18450f9.entry.js → p-0d2eb765.entry.js} +2 -2
  187. package/dist/core/{p-6d3f9501.entry.js → p-0ee13da0.entry.js} +2 -2
  188. package/dist/core/{p-15466b42.entry.js → p-1145e33c.entry.js} +2 -2
  189. package/dist/core/{p-056f8a67.entry.js → p-171e25c9.entry.js} +2 -2
  190. package/dist/core/{p-51f9f329.entry.js → p-1e809ecd.entry.js} +2 -2
  191. package/dist/core/p-1e809ecd.entry.js.map +1 -0
  192. package/dist/core/{p-5f9d69ef.entry.js → p-22208df0.entry.js} +2 -2
  193. package/dist/core/p-22208df0.entry.js.map +1 -0
  194. package/dist/core/{p-ad36a704.entry.js → p-26334b3a.entry.js} +2 -2
  195. package/dist/core/{p-dbb5b008.entry.js → p-29b812c0.entry.js} +2 -2
  196. package/dist/core/{p-b9736cf4.entry.js → p-2e7f22af.entry.js} +2 -2
  197. package/dist/core/{p-aa0a9870.entry.js → p-357eaebe.entry.js} +2 -2
  198. package/dist/core/{p-9639e33f.entry.js → p-38bf02aa.entry.js} +2 -2
  199. package/dist/core/{p-b99f9e89.entry.js → p-3c752bca.entry.js} +2 -2
  200. package/dist/core/{p-3a0ef91e.entry.js → p-3cc52cbc.entry.js} +2 -2
  201. package/dist/core/{p-592c783e.entry.js → p-3ebe5fa3.entry.js} +2 -2
  202. package/dist/core/p-3ebe5fa3.entry.js.map +1 -0
  203. package/dist/core/{p-5c7e339f.entry.js → p-3f07c471.entry.js} +2 -2
  204. package/dist/core/p-3f07c471.entry.js.map +1 -0
  205. package/dist/core/{p-c770e7a2.entry.js → p-42c0e318.entry.js} +2 -2
  206. package/dist/core/{p-2b24b4bf.entry.js → p-4421203e.entry.js} +2 -2
  207. package/dist/core/{p-11736fbe.entry.js → p-4f1792a6.entry.js} +2 -2
  208. package/dist/core/{p-b39ecae2.entry.js → p-4f8b7aa3.entry.js} +2 -2
  209. package/dist/core/{p-8a83f391.entry.js → p-525323ab.entry.js} +2 -2
  210. package/dist/core/{p-c2452388.entry.js → p-5894f6aa.entry.js} +2 -2
  211. package/dist/core/{p-e9738c74.entry.js → p-59c4bc0a.entry.js} +2 -2
  212. package/dist/core/{p-60c4604f.entry.js → p-5adaf5c3.entry.js} +2 -2
  213. package/dist/core/{p-95a864bf.js → p-671b7cac.js} +1 -1
  214. package/dist/core/p-6b5e91e2.js +3 -0
  215. package/dist/core/p-6b5e91e2.js.map +1 -0
  216. package/dist/core/p-6bbe0550.entry.js +2 -0
  217. package/dist/core/p-6bbe0550.entry.js.map +1 -0
  218. package/dist/core/{p-fdb4b48f.entry.js → p-783c2ced.entry.js} +2 -2
  219. package/dist/core/{p-f2e6b9ef.entry.js → p-7b720034.entry.js} +2 -2
  220. package/dist/core/{p-22c024ee.entry.js → p-7c724f2c.entry.js} +2 -2
  221. package/dist/core/{p-335fc5e4.entry.js → p-8146336b.entry.js} +2 -2
  222. package/dist/core/{p-cd8de4c5.entry.js → p-8931210a.entry.js} +2 -2
  223. package/dist/core/{p-529d8955.entry.js → p-8a66cab4.entry.js} +2 -2
  224. package/dist/core/{p-ca48e97a.entry.js → p-8be3ec3d.entry.js} +2 -2
  225. package/dist/core/{p-180e36b1.entry.js → p-8c2322a9.entry.js} +2 -2
  226. package/dist/core/{p-31969be6.entry.js → p-8f97463f.entry.js} +2 -2
  227. package/dist/core/p-8f97463f.entry.js.map +1 -0
  228. package/dist/core/{p-edd29edc.entry.js → p-9184e385.entry.js} +2 -2
  229. package/dist/core/p-9808f7c9.entry.js +2 -0
  230. package/dist/core/p-9808f7c9.entry.js.map +1 -0
  231. package/dist/core/{p-85026377.entry.js → p-9b8ab047.entry.js} +2 -2
  232. package/dist/core/{p-366bcb17.entry.js → p-9ee138e7.entry.js} +2 -2
  233. package/dist/core/p-a6143c94.entry.js +2 -0
  234. package/dist/core/p-a6143c94.entry.js.map +1 -0
  235. package/dist/core/{p-15ef0674.entry.js → p-b74f92b6.entry.js} +2 -2
  236. package/dist/core/p-b74f92b6.entry.js.map +1 -0
  237. package/dist/core/{p-e5abfadd.entry.js → p-b7a2e604.entry.js} +2 -2
  238. package/dist/core/{p-b0088956.entry.js → p-bb41b637.entry.js} +2 -2
  239. package/dist/core/{p-a46130c8.entry.js → p-bf93455b.entry.js} +2 -2
  240. package/dist/core/{p-a46130c8.entry.js.map → p-bf93455b.entry.js.map} +1 -1
  241. package/dist/core/p-c1109ec7.entry.js +2 -0
  242. package/dist/core/p-c1109ec7.entry.js.map +1 -0
  243. package/dist/core/{p-cfc930f6.entry.js → p-c75d6022.entry.js} +2 -2
  244. package/dist/core/{p-f0809037.entry.js → p-c786d62f.entry.js} +2 -2
  245. package/dist/core/{p-edec0936.entry.js → p-c7a08024.entry.js} +2 -2
  246. package/dist/core/{p-6eb0421d.entry.js → p-cf798ea7.entry.js} +2 -2
  247. package/dist/core/{p-a908e7a9.entry.js → p-d3e54a29.entry.js} +2 -2
  248. package/dist/core/{p-287ab47c.entry.js → p-de87d585.entry.js} +2 -2
  249. package/dist/core/{p-15624e08.entry.js → p-e4d827d4.entry.js} +2 -2
  250. package/dist/core/{p-765bdd98.entry.js → p-e9723eaa.entry.js} +2 -2
  251. package/dist/core/{p-498eb7ad.entry.js → p-eb2d06c1.entry.js} +2 -2
  252. package/dist/core/{p-1338c9df.entry.js → p-f62982ae.entry.js} +2 -2
  253. package/dist/core/{p-94e88827.entry.js → p-f9452975.entry.js} +2 -2
  254. package/dist/esm/core.js +4 -4
  255. package/dist/esm/core.js.map +1 -1
  256. package/dist/esm/{helpers-c597f246.js → helpers-821dcdf2.js} +6 -6
  257. package/dist/esm/{helpers-c597f246.js.map → helpers-821dcdf2.js.map} +1 -1
  258. package/dist/esm/ic-accordion-group.entry.js +1 -1
  259. package/dist/esm/ic-accordion.entry.js +2 -2
  260. package/dist/esm/ic-alert.entry.js +2 -2
  261. package/dist/esm/ic-back-to-top.entry.js +5 -9
  262. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  263. package/dist/esm/ic-badge.entry.js +2 -2
  264. package/dist/esm/ic-breadcrumb-group.entry.js +2 -2
  265. package/dist/esm/ic-breadcrumb.entry.js +2 -2
  266. package/dist/esm/ic-button_3.entry.js +44 -31
  267. package/dist/esm/ic-button_3.entry.js.map +1 -1
  268. package/dist/esm/ic-card.entry.js +2 -2
  269. package/dist/esm/ic-checkbox-group.entry.js +2 -2
  270. package/dist/esm/ic-checkbox.entry.js +2 -2
  271. package/dist/esm/ic-chip.entry.js +2 -2
  272. package/dist/esm/ic-classification-banner.entry.js +1 -1
  273. package/dist/esm/ic-data-entity.entry.js +1 -1
  274. package/dist/esm/ic-data-row.entry.js +2 -2
  275. package/dist/esm/ic-dialog.entry.js +2 -2
  276. package/dist/esm/ic-divider.entry.js +2 -2
  277. package/dist/esm/ic-empty-state.entry.js +2 -2
  278. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  279. package/dist/esm/ic-footer-link.entry.js +2 -2
  280. package/dist/esm/ic-footer.entry.js +2 -2
  281. package/dist/esm/ic-hero.entry.js +2 -2
  282. package/dist/esm/ic-horizontal-scroll.entry.js +2 -2
  283. package/dist/esm/ic-input-component-container_3.entry.js +2 -2
  284. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  285. package/dist/esm/ic-input-label_2.entry.js +2 -2
  286. package/dist/esm/ic-link.entry.js +2 -2
  287. package/dist/esm/ic-menu-group.entry.js +2 -2
  288. package/dist/esm/ic-menu-item.entry.js +3 -3
  289. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  290. package/dist/esm/ic-navigation-button.entry.js +2 -2
  291. package/dist/esm/ic-navigation-group.entry.js +6 -9
  292. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  293. package/dist/esm/ic-navigation-item.entry.js +2 -2
  294. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  295. package/dist/esm/ic-navigation-menu.entry.js +2 -2
  296. package/dist/esm/ic-page-header.entry.js +3 -3
  297. package/dist/esm/ic-page-header.entry.js.map +1 -1
  298. package/dist/esm/ic-pagination-item.entry.js +2 -2
  299. package/dist/esm/ic-pagination.entry.js +2 -2
  300. package/dist/esm/ic-popover-menu.entry.js +2 -2
  301. package/dist/esm/ic-radio-group.entry.js +2 -2
  302. package/dist/esm/ic-radio-option.entry.js +2 -2
  303. package/dist/esm/ic-search-bar.entry.js +2 -2
  304. package/dist/esm/ic-section-container.entry.js +1 -1
  305. package/dist/esm/ic-select.entry.js +2 -2
  306. package/dist/esm/ic-side-navigation.entry.js +33 -62
  307. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  308. package/dist/esm/ic-skeleton.entry.js +1 -1
  309. package/dist/esm/ic-status-tag.entry.js +4 -3
  310. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  311. package/dist/esm/ic-step.entry.js +2 -2
  312. package/dist/esm/ic-stepper.entry.js +2 -2
  313. package/dist/esm/ic-switch.entry.js +2 -2
  314. package/dist/esm/ic-tab-context.entry.js +1 -1
  315. package/dist/esm/ic-tab-group.entry.js +2 -2
  316. package/dist/esm/ic-tab-panel.entry.js +2 -2
  317. package/dist/esm/ic-tab.entry.js +2 -2
  318. package/dist/esm/ic-text-field.entry.js +2 -2
  319. package/dist/esm/ic-theme.entry.js +2 -2
  320. package/dist/esm/ic-toast-region.entry.js +1 -1
  321. package/dist/esm/ic-toast.entry.js +13 -16
  322. package/dist/esm/ic-toast.entry.js.map +1 -1
  323. package/dist/esm/ic-toggle-button.entry.js +65 -0
  324. package/dist/esm/ic-toggle-button.entry.js.map +1 -0
  325. package/dist/esm/ic-top-navigation.entry.js +4 -3
  326. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  327. package/dist/esm/ic-typography.entry.js +2 -2
  328. package/dist/esm/{index-05003e1c.js → index-d1d2c456.js} +6 -12
  329. package/dist/esm/index-d1d2c456.js.map +1 -0
  330. package/dist/esm/loader.js +3 -3
  331. package/dist/types/components/ic-button/ic-button.d.ts +2 -0
  332. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +1 -1
  333. package/dist/types/components/ic-toggle-button/ic-toggle-button.d.ts +60 -0
  334. package/dist/types/components.d.ts +116 -0
  335. package/hydrate/index.d.ts +1 -1
  336. package/hydrate/index.js +223 -165
  337. package/package.json +23 -16
  338. package/vscode-data.json +90 -0
  339. package/dist/cjs/index-152d1fe5.js.map +0 -1
  340. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js +0 -21
  341. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js.map +0 -1
  342. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group-test-examples.js +0 -35
  343. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group-test-examples.js.map +0 -1
  344. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js +0 -41
  345. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js.map +0 -1
  346. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js +0 -11
  347. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js.map +0 -1
  348. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js +0 -198
  349. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js.map +0 -1
  350. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js +0 -16
  351. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js.map +0 -1
  352. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js +0 -201
  353. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js.map +0 -1
  354. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js +0 -28
  355. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js.map +0 -1
  356. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js +0 -288
  357. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js.map +0 -1
  358. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js +0 -28
  359. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js.map +0 -1
  360. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js +0 -1825
  361. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js.map +0 -1
  362. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js +0 -14
  363. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js.map +0 -1
  364. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation-test-examples.js +0 -582
  365. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation-test-examples.js.map +0 -1
  366. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js +0 -475
  367. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js.map +0 -1
  368. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js +0 -32
  369. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js.map +0 -1
  370. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js +0 -61
  371. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js.map +0 -1
  372. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js +0 -244
  373. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js.map +0 -1
  374. package/dist/core/p-15ef0674.entry.js.map +0 -1
  375. package/dist/core/p-31969be6.entry.js.map +0 -1
  376. package/dist/core/p-4d413a72.entry.js +0 -2
  377. package/dist/core/p-4d413a72.entry.js.map +0 -1
  378. package/dist/core/p-51f9f329.entry.js.map +0 -1
  379. package/dist/core/p-52e063d3.js +0 -3
  380. package/dist/core/p-52e063d3.js.map +0 -1
  381. package/dist/core/p-592c783e.entry.js.map +0 -1
  382. package/dist/core/p-5c7e339f.entry.js.map +0 -1
  383. package/dist/core/p-5f9d69ef.entry.js.map +0 -1
  384. package/dist/core/p-776232f4.entry.js +0 -2
  385. package/dist/core/p-776232f4.entry.js.map +0 -1
  386. package/dist/core/p-96da1e85.entry.js +0 -2
  387. package/dist/core/p-96da1e85.entry.js.map +0 -1
  388. package/dist/core/p-9c30720d.entry.js +0 -2
  389. package/dist/core/p-9c30720d.entry.js.map +0 -1
  390. package/dist/esm/index-05003e1c.js.map +0 -1
  391. package/dist/types/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.d.ts +0 -1
  392. package/dist/types/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group-test-examples.d.ts +0 -2
  393. package/dist/types/components/ic-button/test/a11y/ic-button.test.a11y.d.ts +0 -1
  394. package/dist/types/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.d.ts +0 -1
  395. package/dist/types/components/ic-dialog/test/a11y/ic-dialog.test.a11y.d.ts +0 -1
  396. package/dist/types/components/ic-select/test/a11y/ic-select.test.a11y.d.ts +0 -1
  397. package/dist/types/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.d.ts +0 -1
  398. package/dist/types/components/ic-side-navigation/test/basic/ic-side-navigation-test-examples.d.ts +0 -8
  399. package/dist/types/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.d.ts +0 -1
  400. /package/dist/core/{p-daebb58a.entry.js.map → p-003c44bd.entry.js.map} +0 -0
  401. /package/dist/core/{p-b6a575c3.entry.js.map → p-049bf5e3.entry.js.map} +0 -0
  402. /package/dist/core/{p-ea17e371.entry.js.map → p-0a0b748c.entry.js.map} +0 -0
  403. /package/dist/core/{p-d18450f9.entry.js.map → p-0d2eb765.entry.js.map} +0 -0
  404. /package/dist/core/{p-6d3f9501.entry.js.map → p-0ee13da0.entry.js.map} +0 -0
  405. /package/dist/core/{p-15466b42.entry.js.map → p-1145e33c.entry.js.map} +0 -0
  406. /package/dist/core/{p-056f8a67.entry.js.map → p-171e25c9.entry.js.map} +0 -0
  407. /package/dist/core/{p-ad36a704.entry.js.map → p-26334b3a.entry.js.map} +0 -0
  408. /package/dist/core/{p-dbb5b008.entry.js.map → p-29b812c0.entry.js.map} +0 -0
  409. /package/dist/core/{p-b9736cf4.entry.js.map → p-2e7f22af.entry.js.map} +0 -0
  410. /package/dist/core/{p-aa0a9870.entry.js.map → p-357eaebe.entry.js.map} +0 -0
  411. /package/dist/core/{p-9639e33f.entry.js.map → p-38bf02aa.entry.js.map} +0 -0
  412. /package/dist/core/{p-b99f9e89.entry.js.map → p-3c752bca.entry.js.map} +0 -0
  413. /package/dist/core/{p-3a0ef91e.entry.js.map → p-3cc52cbc.entry.js.map} +0 -0
  414. /package/dist/core/{p-c770e7a2.entry.js.map → p-42c0e318.entry.js.map} +0 -0
  415. /package/dist/core/{p-2b24b4bf.entry.js.map → p-4421203e.entry.js.map} +0 -0
  416. /package/dist/core/{p-11736fbe.entry.js.map → p-4f1792a6.entry.js.map} +0 -0
  417. /package/dist/core/{p-b39ecae2.entry.js.map → p-4f8b7aa3.entry.js.map} +0 -0
  418. /package/dist/core/{p-8a83f391.entry.js.map → p-525323ab.entry.js.map} +0 -0
  419. /package/dist/core/{p-c2452388.entry.js.map → p-5894f6aa.entry.js.map} +0 -0
  420. /package/dist/core/{p-e9738c74.entry.js.map → p-59c4bc0a.entry.js.map} +0 -0
  421. /package/dist/core/{p-60c4604f.entry.js.map → p-5adaf5c3.entry.js.map} +0 -0
  422. /package/dist/core/{p-95a864bf.js.map → p-671b7cac.js.map} +0 -0
  423. /package/dist/core/{p-fdb4b48f.entry.js.map → p-783c2ced.entry.js.map} +0 -0
  424. /package/dist/core/{p-f2e6b9ef.entry.js.map → p-7b720034.entry.js.map} +0 -0
  425. /package/dist/core/{p-22c024ee.entry.js.map → p-7c724f2c.entry.js.map} +0 -0
  426. /package/dist/core/{p-335fc5e4.entry.js.map → p-8146336b.entry.js.map} +0 -0
  427. /package/dist/core/{p-cd8de4c5.entry.js.map → p-8931210a.entry.js.map} +0 -0
  428. /package/dist/core/{p-529d8955.entry.js.map → p-8a66cab4.entry.js.map} +0 -0
  429. /package/dist/core/{p-ca48e97a.entry.js.map → p-8be3ec3d.entry.js.map} +0 -0
  430. /package/dist/core/{p-180e36b1.entry.js.map → p-8c2322a9.entry.js.map} +0 -0
  431. /package/dist/core/{p-edd29edc.entry.js.map → p-9184e385.entry.js.map} +0 -0
  432. /package/dist/core/{p-85026377.entry.js.map → p-9b8ab047.entry.js.map} +0 -0
  433. /package/dist/core/{p-366bcb17.entry.js.map → p-9ee138e7.entry.js.map} +0 -0
  434. /package/dist/core/{p-e5abfadd.entry.js.map → p-b7a2e604.entry.js.map} +0 -0
  435. /package/dist/core/{p-b0088956.entry.js.map → p-bb41b637.entry.js.map} +0 -0
  436. /package/dist/core/{p-cfc930f6.entry.js.map → p-c75d6022.entry.js.map} +0 -0
  437. /package/dist/core/{p-f0809037.entry.js.map → p-c786d62f.entry.js.map} +0 -0
  438. /package/dist/core/{p-edec0936.entry.js.map → p-c7a08024.entry.js.map} +0 -0
  439. /package/dist/core/{p-6eb0421d.entry.js.map → p-cf798ea7.entry.js.map} +0 -0
  440. /package/dist/core/{p-a908e7a9.entry.js.map → p-d3e54a29.entry.js.map} +0 -0
  441. /package/dist/core/{p-287ab47c.entry.js.map → p-de87d585.entry.js.map} +0 -0
  442. /package/dist/core/{p-15624e08.entry.js.map → p-e4d827d4.entry.js.map} +0 -0
  443. /package/dist/core/{p-765bdd98.entry.js.map → p-e9723eaa.entry.js.map} +0 -0
  444. /package/dist/core/{p-498eb7ad.entry.js.map → p-eb2d06c1.entry.js.map} +0 -0
  445. /package/dist/core/{p-1338c9df.entry.js.map → p-f62982ae.entry.js.map} +0 -0
  446. /package/dist/core/{p-94e88827.entry.js.map → p-f9452975.entry.js.map} +0 -0
@@ -1,61 +0,0 @@
1
- import { newE2EPage } from "@stencil/core/testing";
2
- const pageWidth = 1200;
3
- const pageHeight = 600;
4
- describe("ic-top-navigation", () => {
5
- it("renders", async () => {
6
- const page = await newE2EPage();
7
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
8
- version="v0.0.7"></ic-top-navigation>`);
9
- const element = await page.find("ic-top-navigation");
10
- expect(element).toHaveClass("hydrated");
11
- });
12
- it("should hide dropdown menu when nav item clicked", async () => {
13
- const page = await newE2EPage();
14
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
15
- version="v0.0.7">
16
- <ic-navigation-group slot="navigation" label="Navigation group" expandable="true">
17
- <ic-navigation-item
18
- label="Navigation"
19
- slot="navigation"
20
- ></ic-navigation-item>
21
- </ic-navigation-group>
22
- </ic-top-navigation>`);
23
- await page.setViewport({
24
- width: pageWidth,
25
- height: pageHeight,
26
- });
27
- await page.waitForChanges();
28
- const navGroup = await page.find("ic-top-navigation ic-navigation-group");
29
- await navGroup.press("Enter");
30
- await page.waitForChanges();
31
- let dropDownDiv = await page.find("ic-navigation-group >>> .navigation-group-dropdown");
32
- expect(dropDownDiv).not.toBeNull();
33
- await page.evaluate(() => {
34
- const navItemComp = document.querySelector("ic-navigation-item");
35
- navItemComp.click();
36
- });
37
- await page.waitForChanges();
38
- dropDownDiv = await page.find("ic-navigation-group >>> .navigation-group-dropdown");
39
- expect(dropDownDiv).toBeNull();
40
- });
41
- it("should toggle to short title at small screen sizes", async () => {
42
- const page = await newE2EPage();
43
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" short-app-title="AppName">
44
- </ic-top-navigation>`);
45
- await page.setViewport({
46
- width: 576,
47
- height: pageHeight,
48
- });
49
- await page.waitForChanges();
50
- let appTitle = await page.find("ic-top-navigation >>> .title-link ic-typography");
51
- expect(appTitle.textContent).toBe("AppName");
52
- await page.setViewport({
53
- width: 1200,
54
- height: pageHeight,
55
- });
56
- await page.waitForChanges();
57
- appTitle = await page.find("ic-top-navigation >>> .title-link ic-typography");
58
- expect(appTitle.textContent).toBe("ApplicationName");
59
- });
60
- });
61
- //# sourceMappingURL=ic-top-navigation.e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-top-navigation.e2e.js","sourceRoot":"","sources":["../../../../../src/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,SAAS,GAAG,IAAI,CAAC;AACvB,MAAM,UAAU,GAAG,GAAG,CAAC;AAEvB,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC;0CACgB,CAAC,CAAC;QAExC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAErD,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC;;;;;;;;yBAQD,CAAC,CAAC;QAEvB,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QAE1E,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC/B,oDAAoD,CACrD,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACvB,MAAM,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;YACjE,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,WAAW,GAAG,MAAM,IAAI,CAAC,IAAI,CAC3B,oDAAoD,CACrD,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,IAAI,GAAG,MAAM,UAAU,EAAE,CAAC;QAChC,MAAM,IAAI,CAAC,UAAU,CAAC;yBACD,CAAC,CAAC;QAEvB,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CAC5B,iDAAiD,CAClD,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7C,MAAM,IAAI,CAAC,WAAW,CAAC;YACrB,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,QAAQ,GAAG,MAAM,IAAI,CAAC,IAAI,CACxB,iDAAiD,CAClD,CAAC;QAEF,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newE2EPage } from \"@stencil/core/testing\";\n\nconst pageWidth = 1200;\nconst pageHeight = 600;\n\ndescribe(\"ic-top-navigation\", () => {\n it(\"renders\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\"></ic-top-navigation>`);\n\n const element = await page.find(\"ic-top-navigation\");\n\n expect(element).toHaveClass(\"hydrated\");\n });\n\n it(\"should hide dropdown menu when nav item clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\">\n <ic-navigation-group slot=\"navigation\" label=\"Navigation group\" expandable=\"true\">\n <ic-navigation-item\n label=\"Navigation\"\n slot=\"navigation\"\n ></ic-navigation-item>\n </ic-navigation-group>\n </ic-top-navigation>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n await page.waitForChanges();\n\n const navGroup = await page.find(\"ic-top-navigation ic-navigation-group\");\n\n await navGroup.press(\"Enter\");\n\n await page.waitForChanges();\n\n let dropDownDiv = await page.find(\n \"ic-navigation-group >>> .navigation-group-dropdown\"\n );\n expect(dropDownDiv).not.toBeNull();\n\n await page.evaluate(() => {\n const navItemComp = document.querySelector(\"ic-navigation-item\");\n navItemComp.click();\n });\n\n await page.waitForChanges();\n\n dropDownDiv = await page.find(\n \"ic-navigation-group >>> .navigation-group-dropdown\"\n );\n expect(dropDownDiv).toBeNull();\n });\n\n it(\"should toggle to short title at small screen sizes\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" short-app-title=\"AppName\">\n </ic-top-navigation>`);\n\n await page.setViewport({\n width: 576,\n height: pageHeight,\n });\n\n await page.waitForChanges();\n\n let appTitle = await page.find(\n \"ic-top-navigation >>> .title-link ic-typography\"\n );\n\n expect(appTitle.textContent).toBe(\"AppName\");\n\n await page.setViewport({\n width: 1200,\n height: pageHeight,\n });\n\n await page.waitForChanges();\n\n appTitle = await page.find(\n \"ic-top-navigation >>> .title-link ic-typography\"\n );\n\n expect(appTitle.textContent).toBe(\"ApplicationName\");\n });\n});\n"]}
@@ -1,244 +0,0 @@
1
- import { newE2EPage } from "@stencil/core/testing";
2
- const pageWidth = 640;
3
- const pageHeight = 480;
4
- const searchBarVisibleHeight = 40;
5
- const searchBarHiddenHeight = 0;
6
- describe("ic-top-navigation on mobile", () => {
7
- it("renders", async () => {
8
- const page = await newE2EPage();
9
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
10
- version="v0.0.7"></ic-top-navigation>`);
11
- await page.setViewport({
12
- width: pageWidth,
13
- height: pageHeight,
14
- });
15
- const menuBtn = await page.find("ic-top-navigation >>> .menu-button-container ic-button");
16
- expect(menuBtn).not.toBeNull();
17
- });
18
- it("should open and close menu", async () => {
19
- const page = await newE2EPage();
20
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
21
- version="v0.0.7"></ic-top-navigation>`);
22
- await page.setViewport({
23
- width: pageWidth,
24
- height: pageHeight,
25
- });
26
- const menuBtn = await page.find("ic-top-navigation >>> .menu-button-container ic-button");
27
- expect(menuBtn).not.toBeNull();
28
- const icNavigationMenuOpened = await page.spyOnEvent("icNavigationMenuOpened");
29
- await menuBtn.click();
30
- await page.waitForChanges();
31
- let menu = await page.find("ic-top-navigation >>> ic-navigation-menu");
32
- expect(menu).not.toBeNull();
33
- expect(icNavigationMenuOpened).toHaveReceivedEvent();
34
- const activeElId = await page.$eval("ic-top-navigation", (el) => {
35
- const menu = el.shadowRoot.querySelector("ic-navigation-menu");
36
- return menu.shadowRoot.activeElement.id;
37
- });
38
- expect(activeElId).toBe("menu-close-button");
39
- const icNavigationMenuClosed = await page.spyOnEvent("icNavigationMenuClosed");
40
- await page.evaluate(() => {
41
- const navbar = document.querySelector("ic-top-navigation");
42
- const menu = navbar.shadowRoot.querySelector("ic-navigation-menu");
43
- const closeBtn = menu.shadowRoot.querySelector("ic-button");
44
- closeBtn.click();
45
- });
46
- await page.waitForChanges();
47
- menu = await page.find("ic-top-navigation >>> ic-navigation-menu");
48
- expect(menu).toBeNull();
49
- expect(icNavigationMenuClosed).toHaveReceivedEvent();
50
- });
51
- it("should close menu when nav item clicked", async () => {
52
- const page = await newE2EPage();
53
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
54
- version="v0.0.7">
55
- <ic-navigation-item
56
- label="Navigation"
57
- slot="navigation"
58
- href="#"
59
- ></ic-navigation-item>
60
- </ic-top-navigation>`);
61
- await page.setViewport({
62
- width: pageWidth,
63
- height: pageHeight,
64
- });
65
- const menuBtn = await page.find("ic-top-navigation >>> .menu-button-container ic-button");
66
- expect(menuBtn).not.toBeNull();
67
- const icNavigationMenuOpened = await page.spyOnEvent("icNavigationMenuOpened");
68
- await menuBtn.click();
69
- await page.waitForChanges();
70
- let menu = await page.find("ic-top-navigation >>> ic-navigation-menu");
71
- expect(menu).not.toBeNull();
72
- expect(icNavigationMenuOpened).toHaveReceivedEvent();
73
- const icNavigationMenuClosed = await page.spyOnEvent("icNavigationMenuClosed");
74
- const navItem = await page.find("ic-navigation-item");
75
- await page.waitForTimeout(5000);
76
- await navItem.click();
77
- await page.waitForChanges();
78
- menu = await page.find("ic-top-navigation >>> ic-navigation-menu");
79
- expect(menu).toBeNull();
80
- expect(icNavigationMenuClosed).toHaveReceivedEvent();
81
- });
82
- it("should keep tab focus in menu - button as last el", async () => {
83
- const page = await newE2EPage();
84
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
85
- version="v0.0.7">
86
- <ic-navigation-button
87
- label="button1"
88
- slot="buttons"
89
- onclick="alert('test')"
90
- >
91
- <svg
92
- slot="icon"
93
- xmlns="http://www.w3.org/2000/svg"
94
- height="24px"
95
- viewBox="0 0 24 24"
96
- width="24px"
97
- fill="#000000"
98
- >
99
- <path d="M0 0h24v24H0V0z" fill="none" />
100
- <path
101
- d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z"
102
- />
103
- </svg>
104
- </ic-navigation-button>
105
- </ic-top-navigation>`);
106
- await page.setViewport({
107
- width: pageWidth,
108
- height: pageHeight,
109
- });
110
- const menuBtn = await page.find("ic-top-navigation >>> .menu-button-container ic-button");
111
- expect(menuBtn).not.toBeNull();
112
- await menuBtn.click();
113
- await page.waitForChanges();
114
- const menu = await page.find("ic-top-navigation >>> ic-navigation-menu");
115
- expect(menu).not.toBeNull();
116
- let activeElId = await page.$eval("ic-top-navigation", (el) => {
117
- const menu = el.shadowRoot.querySelector("ic-navigation-menu");
118
- return menu.shadowRoot.activeElement.id;
119
- });
120
- expect(activeElId).toBe("menu-close-button");
121
- await page.keyboard.press("Tab");
122
- await page.waitForChanges();
123
- activeElId = await page.$eval("ic-navigation-button", (el) => {
124
- const button = el.shadowRoot.querySelector("ic-button");
125
- return button.shadowRoot.activeElement.getAttribute("aria-label");
126
- });
127
- expect(activeElId).toBe("button1");
128
- await page.keyboard.press("Tab");
129
- await page.waitForChanges();
130
- activeElId = await page.$eval("ic-top-navigation", (el) => {
131
- const menu = el.shadowRoot.querySelector("ic-navigation-menu");
132
- return menu.shadowRoot.activeElement.id;
133
- });
134
- expect(activeElId).toBe("menu-close-button");
135
- page.keyboard.down("Shift");
136
- await page.keyboard.press("Tab");
137
- await page.waitForChanges();
138
- activeElId = await page.$eval("ic-navigation-button", (el) => {
139
- const button = el.shadowRoot.querySelector("ic-button");
140
- return button.shadowRoot.activeElement.getAttribute("aria-label");
141
- });
142
- expect(activeElId).toBe("button1");
143
- });
144
- it("should keep tab focus in menu - nav item as last el", async () => {
145
- const page = await newE2EPage();
146
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
147
- version="v0.0.7">
148
- <ic-navigation-item
149
- label="Navigation"
150
- href="/"
151
- slot="navigation"
152
- ></ic-navigation-item>
153
- </ic-top-navigation>`);
154
- await page.setViewport({
155
- width: pageWidth,
156
- height: pageHeight,
157
- });
158
- const menuBtn = await page.find("ic-top-navigation >>> .menu-button-container ic-button");
159
- expect(menuBtn).not.toBeNull();
160
- await menuBtn.click();
161
- await page.waitForChanges();
162
- const menu = await page.find("ic-top-navigation >>> ic-navigation-menu");
163
- expect(menu).not.toBeNull();
164
- let activeElId = await page.$eval("ic-top-navigation", (el) => {
165
- const menu = el.shadowRoot.querySelector("ic-navigation-menu");
166
- return menu.shadowRoot.activeElement.id;
167
- });
168
- expect(activeElId).toBe("menu-close-button");
169
- await page.keyboard.press("Tab");
170
- await page.waitForChanges();
171
- activeElId = await page.$eval("ic-navigation-item", (el) => {
172
- return el.shadowRoot.activeElement.textContent;
173
- });
174
- expect(activeElId).toBe("Navigation");
175
- await page.keyboard.press("Tab");
176
- await page.waitForChanges();
177
- activeElId = await page.$eval("ic-top-navigation", (el) => {
178
- const menu = el.shadowRoot.querySelector("ic-navigation-menu");
179
- return menu.shadowRoot.activeElement.id;
180
- });
181
- expect(activeElId).toBe("menu-close-button");
182
- page.keyboard.down("Shift");
183
- await page.keyboard.press("Tab");
184
- await page.waitForChanges();
185
- activeElId = await page.$eval("ic-navigation-item", (el) => {
186
- return el.shadowRoot.activeElement.textContent;
187
- });
188
- expect(activeElId).toBe("Navigation");
189
- });
190
- it("should toggle search bar when clicking on button", async () => {
191
- const page = await newE2EPage();
192
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
193
- version="v0.0.7">
194
- <ic-search-bar slot="search" label="Search" placeholder="Search" focusOnLoad="true"></ic-search-bar>
195
- </ic-top-navigation>`);
196
- await page.setViewport({
197
- width: pageWidth,
198
- height: pageHeight,
199
- });
200
- const searchBtn = await page.find("ic-top-navigation >>> .search-actions-container ic-button");
201
- expect(searchBtn).not.toBeNull();
202
- await searchBtn.click();
203
- await page.waitForChanges();
204
- let searchBarHeight = await page.$eval("ic-search-bar", (el) => {
205
- return el.clientHeight;
206
- });
207
- expect(searchBarHeight).toBe(searchBarVisibleHeight);
208
- await searchBtn.click();
209
- await page.waitForChanges();
210
- searchBarHeight = await page.$eval("ic-search-bar", (el) => {
211
- return el.clientHeight;
212
- });
213
- expect(searchBarHeight).toBe(searchBarHiddenHeight);
214
- });
215
- it("should hide search bar when loses focus", async () => {
216
- const page = await newE2EPage();
217
- await page.setContent(`<ic-top-navigation app-title="ApplicationName" status="alpha"
218
- version="v0.0.7">
219
- <ic-search-bar slot="search" label="Search" placeholder="Search" focusOnLoad="true"></ic-search-bar>
220
- </ic-top-navigation>
221
- <span id='othercontent'>some other content</span>`);
222
- await page.setViewport({
223
- width: pageWidth,
224
- height: pageHeight,
225
- });
226
- const searchBtn = await page.find("ic-top-navigation >>> .search-actions-container ic-button");
227
- expect(searchBtn).not.toBeNull();
228
- await searchBtn.click();
229
- await page.waitForChanges();
230
- let searchBarHeight = await page.$eval("ic-search-bar", (el) => {
231
- return el.clientHeight;
232
- });
233
- expect(searchBarHeight).toBe(searchBarVisibleHeight);
234
- // Test hides when another page element clicked
235
- const spanEl = await page.find("#othercontent");
236
- await spanEl.click();
237
- await page.waitForChanges();
238
- searchBarHeight = await page.$eval("ic-search-bar", (el) => {
239
- return el.clientHeight;
240
- });
241
- expect(searchBarHeight).toBe(searchBarHiddenHeight);
242
- });
243
- });
244
- //# sourceMappingURL=ic-top-navigation.mobile.e2e.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ic-top-navigation.mobile.e2e.js","sourceRoot":"","sources":["../../../../../src/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { newE2EPage } from \"@stencil/core/testing\";\n\nconst pageWidth = 640;\nconst pageHeight = 480;\nconst searchBarVisibleHeight = 40;\nconst searchBarHiddenHeight = 0;\n\ndescribe(\"ic-top-navigation on mobile\", () => {\n it(\"renders\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\"></ic-top-navigation>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n const menuBtn = await page.find(\n \"ic-top-navigation >>> .menu-button-container ic-button\"\n );\n expect(menuBtn).not.toBeNull();\n });\n\n it(\"should open and close menu\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\"></ic-top-navigation>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n const menuBtn = await page.find(\n \"ic-top-navigation >>> .menu-button-container ic-button\"\n );\n expect(menuBtn).not.toBeNull();\n\n const icNavigationMenuOpened = await page.spyOnEvent(\n \"icNavigationMenuOpened\"\n );\n await menuBtn.click();\n await page.waitForChanges();\n let menu = await page.find(\"ic-top-navigation >>> ic-navigation-menu\");\n expect(menu).not.toBeNull();\n expect(icNavigationMenuOpened).toHaveReceivedEvent();\n\n const activeElId = await page.$eval(\"ic-top-navigation\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-navigation-menu\");\n return menu.shadowRoot.activeElement.id;\n });\n\n expect(activeElId).toBe(\"menu-close-button\");\n\n const icNavigationMenuClosed = await page.spyOnEvent(\n \"icNavigationMenuClosed\"\n );\n\n await page.evaluate(() => {\n const navbar = document.querySelector(\"ic-top-navigation\");\n const menu = navbar.shadowRoot.querySelector(\"ic-navigation-menu\");\n const closeBtn = menu.shadowRoot.querySelector(\"ic-button\");\n closeBtn.click();\n });\n\n await page.waitForChanges();\n menu = await page.find(\"ic-top-navigation >>> ic-navigation-menu\");\n expect(menu).toBeNull();\n expect(icNavigationMenuClosed).toHaveReceivedEvent();\n });\n\n it(\"should close menu when nav item clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\">\n <ic-navigation-item\n label=\"Navigation\"\n slot=\"navigation\"\n href=\"#\"\n ></ic-navigation-item>\n </ic-top-navigation>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n const menuBtn = await page.find(\n \"ic-top-navigation >>> .menu-button-container ic-button\"\n );\n expect(menuBtn).not.toBeNull();\n\n const icNavigationMenuOpened = await page.spyOnEvent(\n \"icNavigationMenuOpened\"\n );\n await menuBtn.click();\n await page.waitForChanges();\n\n let menu = await page.find(\"ic-top-navigation >>> ic-navigation-menu\");\n expect(menu).not.toBeNull();\n expect(icNavigationMenuOpened).toHaveReceivedEvent();\n\n const icNavigationMenuClosed = await page.spyOnEvent(\n \"icNavigationMenuClosed\"\n );\n\n const navItem = await page.find(\"ic-navigation-item\");\n await page.waitForTimeout(5000);\n await navItem.click();\n await page.waitForChanges();\n\n menu = await page.find(\"ic-top-navigation >>> ic-navigation-menu\");\n expect(menu).toBeNull();\n expect(icNavigationMenuClosed).toHaveReceivedEvent();\n });\n\n it(\"should keep tab focus in menu - button as last el\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\">\n <ic-navigation-button\n label=\"button1\"\n slot=\"buttons\"\n onclick=\"alert('test')\"\n >\n <svg\n slot=\"icon\"\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 0 24 24\"\n width=\"24px\"\n fill=\"#000000\"\n >\n <path d=\"M0 0h24v24H0V0z\" fill=\"none\" />\n <path\n d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8zm-5.5-2.5l7.51-3.49L17.5 6.5 9.99 9.99 6.5 17.5zm5.5-6.6c.61 0 1.1.49 1.1 1.1s-.49 1.1-1.1 1.1-1.1-.49-1.1-1.1.49-1.1 1.1-1.1z\"\n />\n </svg>\n </ic-navigation-button>\n </ic-top-navigation>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n const menuBtn = await page.find(\n \"ic-top-navigation >>> .menu-button-container ic-button\"\n );\n expect(menuBtn).not.toBeNull();\n\n await menuBtn.click();\n await page.waitForChanges();\n const menu = await page.find(\"ic-top-navigation >>> ic-navigation-menu\");\n expect(menu).not.toBeNull();\n\n let activeElId = await page.$eval(\"ic-top-navigation\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-navigation-menu\");\n return menu.shadowRoot.activeElement.id;\n });\n\n expect(activeElId).toBe(\"menu-close-button\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n activeElId = await page.$eval(\"ic-navigation-button\", (el) => {\n const button = el.shadowRoot.querySelector(\"ic-button\");\n return button.shadowRoot.activeElement.getAttribute(\"aria-label\");\n });\n\n expect(activeElId).toBe(\"button1\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n activeElId = await page.$eval(\"ic-top-navigation\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-navigation-menu\");\n return menu.shadowRoot.activeElement.id;\n });\n\n expect(activeElId).toBe(\"menu-close-button\");\n\n page.keyboard.down(\"Shift\");\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n activeElId = await page.$eval(\"ic-navigation-button\", (el) => {\n const button = el.shadowRoot.querySelector(\"ic-button\");\n return button.shadowRoot.activeElement.getAttribute(\"aria-label\");\n });\n\n expect(activeElId).toBe(\"button1\");\n });\n\n it(\"should keep tab focus in menu - nav item as last el\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\">\n <ic-navigation-item\n label=\"Navigation\"\n href=\"/\"\n slot=\"navigation\"\n ></ic-navigation-item> \n </ic-top-navigation>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n const menuBtn = await page.find(\n \"ic-top-navigation >>> .menu-button-container ic-button\"\n );\n expect(menuBtn).not.toBeNull();\n\n await menuBtn.click();\n await page.waitForChanges();\n const menu = await page.find(\"ic-top-navigation >>> ic-navigation-menu\");\n expect(menu).not.toBeNull();\n\n let activeElId = await page.$eval(\"ic-top-navigation\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-navigation-menu\");\n return menu.shadowRoot.activeElement.id;\n });\n\n expect(activeElId).toBe(\"menu-close-button\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n activeElId = await page.$eval(\"ic-navigation-item\", (el) => {\n return el.shadowRoot.activeElement.textContent;\n });\n\n expect(activeElId).toBe(\"Navigation\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n activeElId = await page.$eval(\"ic-top-navigation\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-navigation-menu\");\n return menu.shadowRoot.activeElement.id;\n });\n\n expect(activeElId).toBe(\"menu-close-button\");\n\n page.keyboard.down(\"Shift\");\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n activeElId = await page.$eval(\"ic-navigation-item\", (el) => {\n return el.shadowRoot.activeElement.textContent;\n });\n\n expect(activeElId).toBe(\"Navigation\");\n });\n\n it(\"should toggle search bar when clicking on button\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\">\n <ic-search-bar slot=\"search\" label=\"Search\" placeholder=\"Search\" focusOnLoad=\"true\"></ic-search-bar>\n </ic-top-navigation>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n const searchBtn = await page.find(\n \"ic-top-navigation >>> .search-actions-container ic-button\"\n );\n expect(searchBtn).not.toBeNull();\n\n await searchBtn.click();\n await page.waitForChanges();\n\n let searchBarHeight = await page.$eval(\"ic-search-bar\", (el) => {\n return el.clientHeight;\n });\n\n expect(searchBarHeight).toBe(searchBarVisibleHeight);\n\n await searchBtn.click();\n await page.waitForChanges();\n\n searchBarHeight = await page.$eval(\"ic-search-bar\", (el) => {\n return el.clientHeight;\n });\n\n expect(searchBarHeight).toBe(searchBarHiddenHeight);\n });\n\n it(\"should hide search bar when loses focus\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-top-navigation app-title=\"ApplicationName\" status=\"alpha\"\n version=\"v0.0.7\">\n <ic-search-bar slot=\"search\" label=\"Search\" placeholder=\"Search\" focusOnLoad=\"true\"></ic-search-bar>\n </ic-top-navigation>\n <span id='othercontent'>some other content</span>`);\n\n await page.setViewport({\n width: pageWidth,\n height: pageHeight,\n });\n\n const searchBtn = await page.find(\n \"ic-top-navigation >>> .search-actions-container ic-button\"\n );\n expect(searchBtn).not.toBeNull();\n\n await searchBtn.click();\n await page.waitForChanges();\n\n let searchBarHeight = await page.$eval(\"ic-search-bar\", (el) => {\n return el.clientHeight;\n });\n\n expect(searchBarHeight).toBe(searchBarVisibleHeight);\n\n // Test hides when another page element clicked\n const spanEl = await page.find(\"#othercontent\");\n await spanEl.click();\n await page.waitForChanges();\n\n searchBarHeight = await page.$eval(\"ic-search-bar\", (el) => {\n return el.clientHeight;\n });\n\n expect(searchBarHeight).toBe(searchBarHiddenHeight);\n });\n});\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icToastCss","AUTO_DISMISS_TIMER_REFRESH_RATE_MS","TOAST_HEADING_CHAR_LIMIT","TOAST_MESSAGE_CHAR_LIMIT","Toast","this","interactiveElements","dismissAction","icDismiss","emit","handleProgressChange","timerProgress","autoDismissTimeout","disconnectedCallback","window","clearTimeout","dismissTimeout","clearInterval","timerRefreshInterval","componentWillLoad","handleLongText","heading","length","_a","message","isSlotUsed","el","dismissMode","isManual","variant","neutralVariantLabel","_b","neutralIconAriaLabel","VARIANT_ICONS","ariaLabel","toastMessage","isPropDefined","setAttribute","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","actionContent","getSlot","dismissButton","shadowRoot","querySelector","push","handleDismiss","visible","handleKeyboard","ev","key","preventDefault","findNextInteractiveElement","shiftKey","setFocus","repeat","stopImmediatePropagation","handleTimer","type","setTimeout","setInterval","setVisible","document","activeElement","headingTooLong","messageTooLong","console","error","isBackwards","first","last","source","target","isActive","currentIndex","found","some","index","targetEl","render","dismissButtonAriaLabel","h","Host","class","role","name","innerHTML","icon","appearance","size","progress","id","closeIcon","onClick","IcThemeForegroundEnum","Light"],"sources":["src/components/ic-toast/ic-toast.css?tag=ic-toast&encapsulation=shadow","src/components/ic-toast/ic-toast.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-toast: z-index of toast\n */\n\n:host {\n --bottom-position: var(--ic-space-xl);\n\n position: fixed;\n bottom: var(--bottom-position);\n left: 50%;\n transform: translate(-50%);\n animation: fadein var(--ic-transition-duration-slow) ease-in-out;\n z-index: var(--ic-z-index-toast);\n}\n\n:host(.hidden) {\n display: none;\n animation: fadeout var(--ic-transition-duration-slow) ease-in-out;\n}\n\n.container {\n max-width: 32.5rem;\n min-width: 18rem;\n box-shadow: var(--ic-elevation-overlay);\n min-height: 3.5rem;\n background-color: var(--ic-architectural-800);\n color: var(--ic-color-white-text);\n display: flex;\n align-items: center;\n position: relative;\n border-radius: var(--ic-border-radius);\n}\n\n.toast-icon-container {\n height: 100%;\n display: flex;\n align-items: center;\n}\n\n.divider {\n height: 100%;\n width: var(--ic-space-xs);\n position: absolute;\n border-radius: var(--ic-space-xxxs) 0 0 var(--ic-space-xxxs);\n}\n\n.divider-neutral {\n background-color: var(--ic-status-unknown);\n}\n\n.divider-info {\n background-color: var(--ic-status-info-contrast);\n}\n\n.divider-warning {\n background-color: var(--ic-status-warning-contrast);\n}\n\n.divider-error {\n background-color: var(--ic-status-error-contrast);\n}\n\n.divider-success {\n background-color: var(--ic-status-success-contrast);\n}\n\n.toast-icon,\n::slotted(svg) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n margin-left: var(--ic-space-md);\n}\n\n:host([variant=\"neutral\"]) .toast-icon svg,\n::slotted(svg) {\n fill: var(--ic-status-unknown);\n}\n\n:host([variant=\"info\"]) .toast-icon svg {\n fill: var(--ic-status-info-contrast);\n}\n\n:host([variant=\"warning\"]) .toast-icon svg {\n fill: var(--ic-status-warning-contrast);\n}\n\n:host([variant=\"error\"]) .toast-icon svg {\n fill: var(--ic-status-error-contrast);\n}\n\n:host([variant=\"success\"]) .toast-icon svg {\n fill: var(--ic-status-success-contrast);\n}\n\n.toast-content {\n margin-left: var(--ic-space-xs);\n width: 100%;\n}\n\n.no-icon {\n margin-left: var(--ic-space-md);\n}\n\n.toast-message {\n padding: var(--ic-space-xs) var(--ic-space-xs) var(--ic-space-xs) 0;\n}\n\n.toast-action-container {\n padding-bottom: var(--ic-space-md);\n}\n\nic-button,\n.toast-dismiss-timer {\n padding: var(--ic-space-xs);\n}\n\n@media (max-width: 576px) {\n :host {\n --bottom-position: var(--ic-space-lg);\n\n width: calc(100% - 2 * var(--ic-space-md));\n }\n}\n\n@media (min-width: 993px) {\n :host {\n --bottom-position: calc(var(--ic-space-xl) + var(--ic-space-xs));\n }\n}\n\n@media (forced-colors: active) {\n .container {\n border: var(--ic-hc-border);\n }\n}\n\n@keyframes fadein {\n from {\n bottom: 0;\n opacity: 0;\n }\n\n to {\n bottom: var(--bottom-position);\n opacity: 1;\n }\n}\n\n@keyframes fadeout {\n from {\n bottom: var(--bottom-position);\n opacity: 1;\n }\n\n to {\n bottom: 0;\n opacity: 0;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Method,\n Prop,\n State,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { VARIANT_ICONS } from \"../../utils/constants\";\nimport {\n getSlot,\n isPropDefined,\n isSlotUsed,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcActivationTypes,\n IcStatusVariants,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { ActionAreaElementTypes } from \"./ic-toast.types\";\n\nconst AUTO_DISMISS_TIMER_REFRESH_RATE_MS = 1000;\nconst TOAST_HEADING_CHAR_LIMIT = 70;\nconst TOAST_MESSAGE_CHAR_LIMIT = 140;\n\n/**\n * @slot action - IcButton or IcLink is placed below header and message. If used will default toast to manual `dismiss` type.\n * @slot neutral-icon - A custom neutral icon is placed on the left side of the component. If used will default toast to `neutral` variant.\n */\n@Component({\n tag: \"ic-toast\",\n styleUrl: \"ic-toast.css\",\n shadow: true,\n})\nexport class Toast {\n private dismissTimeout: number;\n private interactiveElements: ActionAreaElementTypes[] = [];\n private isManual: boolean;\n private neutralVariantLabel: string;\n private timerRefreshInterval: number;\n\n @Element() el: HTMLIcToastElement;\n\n @State() timerProgress = 100;\n @State() visible = false;\n\n /**\n * If toast dismissMode is set to `automatic`, use this prop to define the time before the toast dismisses (in MILLISECONDS)\n * (NOTE: Has a minimum value of `5000ms`)\n */\n @Prop({ mutable: true }) autoDismissTimeout? = 5000;\n\n /**\n * If toast can be manually dismissed, this prop sets a custom aria-label for the ic-button component\n */\n @Prop() dismissButtonAriaLabel? = \"dismiss\";\n\n /**\n * How the toast will be dismissed. If manual will display a dismiss button.\n */\n @Prop({ mutable: true }) dismissMode?: IcActivationTypes = \"manual\";\n\n /**\n * The title to display at the start of the toast. (NOTE: Should be no more than `70` characters)\n */\n @Prop() heading!: string;\n\n /**\n * The main body message of the toast. (NOTE: Should be no more than `140` characters)\n */\n @Prop() message?: string;\n\n /**\n * Provides a custom alt-text to be announced to screen readers, if slotting a custom neutral icon\n */\n @Prop() neutralIconAriaLabel?: string;\n\n /**\n * The variant of the toast being rendered\n */\n @Prop({ mutable: true }) variant?: IcStatusVariants;\n\n /**\n * Is emitted when the user dismisses the toast\n */\n @Event() icDismiss: EventEmitter<void>;\n\n disconnectedCallback(): void {\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n }\n\n componentWillLoad(): void {\n this.handleLongText(\n this.heading.length > TOAST_HEADING_CHAR_LIMIT,\n this.message?.length > TOAST_MESSAGE_CHAR_LIMIT\n );\n\n if (this.autoDismissTimeout < 5000) this.autoDismissTimeout = 5000;\n\n if (isSlotUsed(this.el, \"action\")) this.dismissMode = \"manual\";\n this.isManual = this.dismissMode === \"manual\";\n\n if (isSlotUsed(this.el, \"neutral-icon\")) this.variant = \"neutral\";\n if (this.variant === \"neutral\") {\n this.neutralVariantLabel =\n this.neutralIconAriaLabel ?? VARIANT_ICONS[this.variant].ariaLabel;\n }\n\n if (this.isManual) {\n const toastMessage: string = isPropDefined(this.message)\n ? `. ${this.message}`\n : \"\";\n this.el.setAttribute(\n \"aria-label\",\n this.variant\n ? this.neutralVariantLabel || VARIANT_ICONS[this.variant].ariaLabel\n : this.heading\n );\n (this.variant || this.message) &&\n this.el.setAttribute(\n \"aria-description\",\n this.variant ? `${this.heading}${toastMessage}` : this.message\n );\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Toast\"\n );\n const actionContent = getSlot(this.el, \"action\") as ActionAreaElementTypes;\n const dismissButton = this.el.shadowRoot.querySelector(\"ic-button\");\n if (actionContent) this.interactiveElements.push(actionContent);\n if (dismissButton) this.interactiveElements.push(dismissButton);\n }\n\n @Listen(\"icDismiss\", { capture: true })\n handleDismiss(): void {\n this.visible = false;\n clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.isManual && this.visible) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.findNextInteractiveElement(ev.shiftKey).setFocus();\n break;\n case \"Escape\":\n !ev.repeat && this.dismissAction();\n ev.stopImmediatePropagation();\n break;\n }\n }\n }\n\n @Listen(\"mouseenter\")\n @Listen(\"mouseleave\")\n handleTimer(ev: MouseEvent): void {\n if (!this.isManual) {\n switch (ev.type) {\n case \"mouseenter\":\n window.clearTimeout(this.dismissTimeout);\n window.clearInterval(this.timerRefreshInterval);\n this.timerProgress = 100;\n break;\n case \"mouseleave\":\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n break;\n }\n }\n }\n\n /**\n * @internal Used to display the individual toast.\n * @returns The element that previously had focus before the toast appeared\n */\n @Method()\n async setVisible(): Promise<HTMLElement> {\n if (!this.visible) this.visible = true;\n if (!this.isManual) {\n this.dismissTimeout = window.setTimeout(\n this.dismissAction,\n this.autoDismissTimeout\n );\n this.timerRefreshInterval = window.setInterval(\n this.handleProgressChange,\n AUTO_DISMISS_TIMER_REFRESH_RATE_MS\n );\n return null;\n } else {\n window.setTimeout(() => this.interactiveElements[0].setFocus(), 200);\n return document.activeElement as HTMLElement;\n }\n }\n\n private dismissAction = (): void => {\n this.icDismiss.emit();\n };\n\n private handleProgressChange = () => {\n this.timerProgress -=\n (AUTO_DISMISS_TIMER_REFRESH_RATE_MS / this.autoDismissTimeout) * 100;\n };\n\n private handleLongText(\n headingTooLong: boolean,\n messageTooLong?: boolean\n ): void {\n if (messageTooLong || headingTooLong) {\n console.error(\n `Too many characters in toast ${headingTooLong ? \"heading\" : \"\"}${\n headingTooLong && messageTooLong ? \" and \" : \"\"\n }${\n messageTooLong ? \"message\" : \"\"\n }. Refer to character limits specified in the prop description`\n );\n }\n }\n\n private findNextInteractiveElement(\n isBackwards: boolean\n ): ActionAreaElementTypes {\n const first = this.interactiveElements[0];\n const last = this.interactiveElements[this.interactiveElements.length - 1];\n\n const source = isBackwards ? first : last;\n const target = isBackwards ? last : first;\n if (this.isActive(source)) return target;\n\n let currentIndex: number;\n const found = this.interactiveElements.some((el, index) => {\n if (!this.isActive(el)) return false;\n currentIndex = index;\n return true;\n });\n\n if (!found) return first;\n return this.interactiveElements[currentIndex + (isBackwards ? -1 : 1)];\n }\n\n private isActive(targetEl: HTMLElement): boolean {\n if (targetEl === this.el) return !!this.el.shadowRoot.activeElement;\n return document.activeElement === targetEl;\n }\n\n render() {\n const {\n variant,\n heading,\n message,\n visible,\n isManual,\n dismissButtonAriaLabel,\n } = this;\n return (\n <Host\n class={{ [\"hidden\"]: !visible }}\n role={isManual ? \"dialog\" : \"status\"}\n >\n <div class=\"container\">\n {variant && visible && (\n <div class=\"toast-icon-container\">\n <div\n class={{\n [\"divider\"]: true,\n [`divider-${variant}`]: true,\n }}\n ></div>\n {variant === \"neutral\" ? (\n <slot name=\"neutral-icon\" />\n ) : (\n <span\n class=\"toast-icon\"\n innerHTML={VARIANT_ICONS[variant].icon}\n ></span>\n )}\n </div>\n )}\n <div\n class={{\n [\"toast-content\"]: true,\n [\"no-icon\"]:\n variant === \"neutral\" && !isSlotUsed(this.el, \"neutral-icon\"),\n }}\n >\n <div class=\"toast-message\">\n <ic-typography variant=\"subtitle-large\">\n {visible && <h5>{heading}</h5>}\n </ic-typography>\n {message && (\n <ic-typography variant=\"body\">\n {visible && <p>{message}</p>}\n </ic-typography>\n )}\n </div>\n {isSlotUsed(this.el, \"action\") && (\n <div class=\"toast-action-container\">\n <slot name=\"action\" />\n </div>\n )}\n </div>\n {!isManual ? (\n <ic-loading-indicator\n class=\"toast-dismiss-timer\"\n appearance=\"light\"\n size=\"icon\"\n progress={this.timerProgress}\n ></ic-loading-indicator>\n ) : (\n <ic-button\n id=\"dismiss-button\"\n innerHTML={closeIcon}\n onClick={this.dismissAction}\n variant=\"icon\"\n appearance={IcThemeForegroundEnum.Light}\n aria-label={dismissButtonAriaLabel}\n ></ic-button>\n )}\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icNavigationGroupCss","NavigationGroup","this","allGroupedNavigationItems","DYNAMIC_GROUPED_LINKS_HEIGHT_MS","IC_NAVIGATION_ITEM","mouseGate","nodeName","GROUPED_LINKS_WRAPPER_CLASS","sideNavExpandHandler","event","isSideNavExpanded","detail","sideNavExpanded","linkWrapper","el","shadowRoot","querySelector","expanded","expandedNavItemsHeight","setGroupedLinksElementHeight","setTimeout","getNavigationChildItemsHeight","collapsedNavItemsHeight","topNavResizedHandler","ev","newSize","size","deviceSize","inTopNavSideMenu","DEVICE_SIZES","L","setGroupedNavItemTabIndex","tabIndexValue","querySelectorAll","forEach","navigationItem","navItem","setAttribute","toggleGroupedLinkWrapperHeight","wrapper","style","setProperty","toggleExpanded","handleClick","navigationType","toggleDropdown","handleBlur","target","relatedTarget","contains","hideDropdown","handleTopNavKeydown","key","handleKeydown","preventDefault","handleMouseLeave","relTarget","dropdown","document","activeElement","dropdownOpen","handleMouseEnter","addEventListener","showDropdown","renderDropdownGroupedLinks","h","class","onMouseLeave","ref","renderGroupedLinks","navigationChildItemsHeight","offsetHeight","setInitialGroupedLinksWrapperHeight","renderNavigationItems","expandable","XL","getThemeForegroundColor","disconnectedCallback","parentEl","removeEventListener","componentWillLoad","getCurrentDeviceSize","navParentDetails","getNavItemParentDetails","navType","parent","componentDidLoad","Array","from","childBlurHandler","navItemClickHandler","themeChangeHandler","theme","focusStyle","mode","setFocus","groupEl","focus","groupedNavItemWrapper","height","render","label","NavigationGroupElement","Host","collapsed","role","onMouseEnter","tabindex","onBlur","onClick","onKeyDown","variant","innerHTML","chevronIcon"],"sources":["src/components/ic-navigation-group/ic-navigation-group.css?tag=ic-navigation-group&encapsulation=shadow","src/components/ic-navigation-group/ic-navigation-group.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-navigation-item: z-index of navigation group item\n */\n\n:host {\n display: block;\n}\n\n:host(.in-side-menu) {\n border-bottom: var(--ic-border-width) solid var(--ic-architectural-200);\n padding: var(--ic-space-md) 0;\n}\n\n:host .navigation-group {\n height: 100%;\n width: fit-content;\n color: var(--ic-theme-text);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--ic-space-md);\n transition: var(--ic-easing-transition-slow);\n position: relative;\n background: none;\n border: none;\n}\n\n:host(.in-side-menu) .navigation-group {\n height: 2.5rem;\n width: 100%;\n text-align: left;\n}\n\n:host(.in-side-menu) .navigation-group .ic-typography-label {\n width: 11.875rem;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu {\n color: var(--ic-action-default);\n justify-content: flex-start;\n padding: 0 var(--ic-space-md) 0 var(--ic-space-md);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-collapsed,\n:host(.in-side-menu) .navigation-group-side-menu-expanded {\n color: var(--ic-action-default);\n justify-content: flex-start;\n padding-left: var(--ic-space-md);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded {\n margin-bottom: var(--ic-space-xs);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-collapsed::after,\n:host(.in-side-menu) .navigation-group-side-menu-expanded::after {\n border-style: solid;\n border-width: 0.125em 0.125em 0 0;\n content: \"\";\n display: inline-block;\n height: 0.45em;\n left: 0.75em;\n position: relative;\n top: -0.1em;\n transform: rotate(135deg);\n vertical-align: top;\n width: 0.45em;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded::after {\n top: 0.15em;\n transform: rotate(-45deg);\n}\n\n:host .navigation-group:hover,\n:host .navigation-group:active,\n:host .selected {\n background-color: var(--ic-architectural-20);\n color: var(--ic-color-primary-text);\n outline: none;\n cursor: pointer;\n}\n\n:host(:not(.in-side-menu)) .navigation-group:focus {\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n outline: var(--ic-hc-focus-outline);\n z-index: var(--ic-z-index-navigation-item);\n transition: box-shadow var(--ic-easing-transition-fast);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu:hover,\n:host(.in-side-menu) .navigation-group-side-menu:active,\n:host(.in-side-menu) .navigation-group-side-menu:focus {\n background-color: var(--ic-architectural-20);\n color: var(--ic-action-default);\n cursor: auto;\n box-shadow: none;\n outline: none;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu:focus {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:hover:not(:focus),\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:hover:not(:focus) {\n background-color: var(--ic-action-dark-bg-hover);\n color: var(--ic-action-default);\n cursor: pointer;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:active:not(:focus),\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:active:not(:focus) {\n background-color: var(--ic-action-dark-bg-active);\n color: var(--ic-action-default);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:focus,\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:focus {\n color: var(--ic-action-default);\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n outline: var(--ic-hc-focus-outline);\n}\n\n:host .navigation-group-dropdown {\n background-color: var(--ic-architectural-20);\n border-bottom: var(--ic-border-default);\n position: absolute;\n left: 0;\n right: 0;\n padding: var(--ic-space-xs) var(--ic-space-md);\n box-shadow: 0 0.375rem 0.5rem -0.375rem rgba(0 0 0 / 20%);\n z-index: calc(var(--ic-z-index-navigation-item) - 1);\n}\n\n:host .navigation-group-dropdown-items-list {\n list-style: none;\n display: flex;\n flex-flow: column wrap;\n align-content: flex-start;\n padding-left: var(--ic-space-md);\n max-height: 16.5rem;\n}\n\n:host .chevron-toggle-icon-wrapper {\n display: flex;\n align-items: center;\n}\n\n:host .chevron-toggle-icon-wrapper svg {\n transform: rotate(90deg);\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n}\n\n:host .chevron-toggle-icon-closed svg {\n transform: rotate(-90deg);\n}\n\n:host(.expanded) .grouped-links-wrapper {\n height: var(--navigation-child-items-height, auto) !important;\n transition: var(--ic-easing-transition-slow);\n overflow: hidden;\n}\n\n:host(.navigation-group-side-nav) .link,\n:host(.navigation-group-side-nav) ::slotted(a) {\n height: var(--navigation-child-items-height, auto);\n}\n\n:host(.collapsed) .grouped-links-wrapper {\n height: 0;\n transition: var(--ic-easing-transition-slow);\n overflow: hidden;\n}\n\n:host(.navigation-group-side-nav) .navigation-group {\n height: var(--navigation-group-height);\n width: var(--navigation-group-width);\n justify-content: var(--navigation-group-justify-content);\n padding-right: var(--navigation-group-expand-toggle-padding);\n}\n\n:host(.navigation-group-side-nav) .navigation-group:hover,\n:host(.navigation-group-side-nav) .navigation-group:active,\n:host(.navigation-group-side-nav) .selected {\n background-color: var(--navigation-group-hover);\n color: var(--navigation-group-text-hover);\n}\n\n:host(.navigation-group-side-nav) .navigation-group:focus {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n background: none;\n}\n\n:host(.navigation-group-side-nav) .ic-typography-caption {\n position: var(--navigation-group-title-position);\n left: var(--navigation-group-title-position-left);\n white-space: nowrap;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n State,\n Listen,\n h,\n Method,\n} from \"@stencil/core\";\n\nimport {\n DEVICE_SIZES,\n getCurrentDeviceSize,\n getThemeForegroundColor,\n getNavItemParentDetails,\n} from \"../../utils/helpers\";\nimport { IcNavType, IcTheme } from \"../../utils/types\";\n\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\n@Component({\n tag: \"ic-navigation-group\",\n styleUrl: \"ic-navigation-group.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class NavigationGroup {\n private allGroupedNavigationItems: HTMLIcNavigationItemElement[] = [];\n private collapsedNavItemsHeight: string;\n private dropdown: HTMLElement;\n private DYNAMIC_GROUPED_LINKS_HEIGHT_MS = 100;\n private expandedNavItemsHeight: string;\n private groupEl: HTMLElement;\n private IC_NAVIGATION_ITEM = \"ic-navigation-item\";\n private isSideNavExpanded: boolean;\n private mouseGate: boolean = false;\n private nodeName = \"IC-NAVIGATION-GROUP\";\n private GROUPED_LINKS_WRAPPER_CLASS = \".grouped-links-wrapper\";\n\n @Element() el: HTMLIcNavigationGroupElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n @State() dropdownOpen: boolean = false;\n @State() expanded: boolean = true;\n @State() focusStyle = getThemeForegroundColor();\n @State() inTopNavSideMenu: boolean = false;\n @State() navigationType: IcNavType | \"\";\n @State() parentEl: HTMLElement;\n\n /**\n * If `true`, the group will be expandable in the side menu.\n */\n @Prop() expandable: boolean = false;\n\n /**\n * The label to display on the group.\n */\n @Prop() label: string;\n\n disconnectedCallback(): void {\n if (this.navigationType === \"side\") {\n this.parentEl.removeEventListener(\n \"sideNavExpanded\",\n this.sideNavExpandHandler\n );\n } else if (this.navigationType === \"top\") {\n this.parentEl.removeEventListener(\n \"topNavResized\",\n this.topNavResizedHandler\n );\n }\n }\n\n componentWillLoad(): void {\n this.deviceSize = getCurrentDeviceSize();\n const navParentDetails = getNavItemParentDetails(this.el);\n this.navigationType = navParentDetails.navType;\n this.parentEl = navParentDetails.parent;\n if (this.deviceSize <= DEVICE_SIZES.L && this.navigationType === \"top\") {\n this.inTopNavSideMenu = true;\n }\n\n if (this.navigationType === \"side\") {\n this.parentEl.addEventListener(\n \"sideNavExpanded\",\n this.sideNavExpandHandler\n );\n } else if (this.navigationType === \"top\") {\n this.parentEl.addEventListener(\n \"topNavResized\",\n this.topNavResizedHandler\n );\n }\n }\n\n componentDidLoad(): void {\n this.allGroupedNavigationItems = Array.from(\n this.el.querySelectorAll(this.IC_NAVIGATION_ITEM)\n );\n\n /**\n * debounce is required as the incorrect height was retrieved instantly after\n * componentDidLoad is invoked.\n */\n setTimeout(\n () => this.setInitialGroupedLinksWrapperHeight(),\n this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS\n );\n }\n\n @Listen(\"childBlur\")\n childBlurHandler(): void {\n this.hideDropdown();\n }\n\n @Listen(\"navItemClicked\")\n navItemClickHandler(): void {\n this.hideDropdown();\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.focusStyle = theme.mode;\n }\n\n /**\n * Sets focus on the nav item.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.groupEl) {\n this.groupEl.focus();\n }\n }\n\n private sideNavExpandHandler = (event?: CustomEvent): void => {\n this.isSideNavExpanded = event.detail.sideNavExpanded;\n const linkWrapper = this.el.shadowRoot.querySelector(\n this.GROUPED_LINKS_WRAPPER_CLASS\n ) as HTMLElement;\n\n if (!linkWrapper) return;\n\n if (this.isSideNavExpanded) {\n if (this.expanded && this.expandedNavItemsHeight) {\n this.setGroupedLinksElementHeight(\n linkWrapper,\n this.expandedNavItemsHeight\n );\n } else if (this.expanded) {\n setTimeout(() => {\n this.expandedNavItemsHeight = this.getNavigationChildItemsHeight();\n\n this.setGroupedLinksElementHeight(\n linkWrapper,\n this.expandedNavItemsHeight\n );\n }, this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS);\n }\n } else {\n if (this.expanded && this.collapsedNavItemsHeight) {\n this.setGroupedLinksElementHeight(\n linkWrapper,\n this.collapsedNavItemsHeight\n );\n } else if (this.expanded) {\n setTimeout(() => {\n this.collapsedNavItemsHeight = this.getNavigationChildItemsHeight();\n\n this.setGroupedLinksElementHeight(\n linkWrapper,\n this.collapsedNavItemsHeight\n );\n }, this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS);\n }\n }\n };\n\n private topNavResizedHandler = (ev: CustomEvent): void => {\n const newSize = ev.detail.size;\n if (newSize !== this.deviceSize) {\n this.deviceSize = newSize;\n this.inTopNavSideMenu = newSize <= DEVICE_SIZES.L;\n }\n };\n\n private toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n }\n\n private setGroupedNavItemTabIndex = (tabIndexValue: string) => {\n this.el\n .querySelectorAll(this.IC_NAVIGATION_ITEM)\n .forEach((navigationItem) => {\n const navItem =\n navigationItem.shadowRoot.querySelector(\"a\") ||\n navigationItem.querySelector(\"a\");\n if (navItem) {\n navItem.setAttribute(\"tabindex\", tabIndexValue);\n }\n });\n };\n\n private toggleGroupedLinkWrapperHeight = (\n wrapper: HTMLElement,\n expanded: boolean\n ) => {\n if (!wrapper) return;\n\n if (expanded) {\n if (this.isSideNavExpanded) {\n this.setGroupedLinksElementHeight(wrapper, this.expandedNavItemsHeight);\n } else {\n this.setGroupedLinksElementHeight(\n wrapper,\n this.collapsedNavItemsHeight\n );\n }\n this.setGroupedNavItemTabIndex(\"0\");\n } else {\n wrapper.style.setProperty(\"--navigation-child-items-height\", \"0\");\n this.setGroupedNavItemTabIndex(\"-1\");\n }\n };\n\n private toggleExpanded = () => {\n this.expanded = !this.expanded;\n const linkWrapper = this.el.shadowRoot.querySelector(\n this.GROUPED_LINKS_WRAPPER_CLASS\n ) as HTMLElement;\n this.toggleGroupedLinkWrapperHeight(linkWrapper, this.expanded);\n };\n\n private showDropdown() {\n if (!this.dropdownOpen) {\n this.toggleDropdown();\n }\n }\n\n private hideDropdown() {\n document.removeEventListener(\"keydown\", this.handleKeydown);\n if (this.dropdownOpen) {\n this.toggleDropdown();\n }\n }\n\n private handleClick = (ev: MouseEvent) => {\n if (this.navigationType === \"top\" && ev.detail) {\n this.toggleDropdown();\n } else {\n this.toggleExpanded();\n }\n };\n\n private handleBlur = (ev: FocusEvent) => {\n const target = ev.relatedTarget as HTMLElement;\n if (!this.el.contains(target)) {\n this.hideDropdown();\n }\n };\n\n private handleTopNavKeydown = (ev: KeyboardEvent) => {\n if (ev.key === \" \" || ev.key === \"Enter\") {\n this.toggleDropdown();\n } else if (!this.inTopNavSideMenu && ev.key === \"Escape\") {\n this.hideDropdown();\n }\n };\n\n private handleKeydown = (ev: KeyboardEvent) => {\n if (ev.key === \"Enter\" || ev.key === \" \" || ev.key === \"Escape\") {\n switch (this.navigationType) {\n case \"top\":\n this.handleTopNavKeydown(ev as KeyboardEvent);\n break;\n case \"side\":\n this.toggleExpanded();\n ev.preventDefault();\n break;\n default:\n this.toggleExpanded();\n break;\n }\n }\n };\n\n private handleMouseLeave = (ev: MouseEvent) => {\n const relTarget = ev.relatedTarget as HTMLElement;\n\n this.mouseGate = false;\n\n if (\n !this.el.contains(relTarget) &&\n relTarget !== this.dropdown &&\n document.activeElement !== this.el &&\n !this.el.contains(document.activeElement) &&\n relTarget.nodeName === this.nodeName &&\n this.dropdownOpen === true\n ) {\n this.mouseGate = true;\n this.hideDropdown();\n } else if (\n !this.el.contains(relTarget) &&\n relTarget !== this.dropdown &&\n !this.el.contains(document.activeElement)\n ) {\n this.mouseGate = false;\n setTimeout(() => {\n this.dropdownOpen ? this.hideDropdown() : null;\n }, 500);\n }\n };\n\n private handleMouseEnter = (ev: MouseEvent) => {\n const relTarget = ev.relatedTarget as HTMLElement;\n document.addEventListener(\"keydown\", this.handleKeydown);\n\n if (relTarget.nodeName === this.nodeName && this.mouseGate === true) {\n this.showDropdown();\n } else if (\n this.dropdownOpen === false &&\n relTarget !== null &&\n this.mouseGate === false\n ) {\n this.mouseGate = true;\n setTimeout(() => {\n this.mouseGate && this.showDropdown();\n }, 500);\n }\n };\n\n private renderDropdownGroupedLinks = (): HTMLDivElement => (\n <div\n class={{\n [\"navigation-group-dropdown\"]: !this.inTopNavSideMenu,\n [\"navigation-group-dropdown-side-menu\"]: this.inTopNavSideMenu,\n [\"selected\"]: this.dropdownOpen && !this.inTopNavSideMenu,\n }}\n onMouseLeave={!this.inTopNavSideMenu ? this.handleMouseLeave : null}\n ref={(el) => (this.dropdown = el)}\n >\n <nav\n class={{\n [\"navigation-group-dropdown-items\"]: !this.inTopNavSideMenu,\n }}\n >\n <ul>\n <slot></slot>\n </ul>\n </nav>\n </div>\n );\n\n private renderGroupedLinks = (): HTMLDivElement => (\n <ul class=\"grouped-links-wrapper\">\n <slot></slot>\n </ul>\n );\n\n /**\n * Gets the total height of navigation links to improve\n * smoothness of expand/collapse animations\n */\n private getNavigationChildItemsHeight = (): string => {\n let navigationChildItemsHeight = 0;\n this.allGroupedNavigationItems.forEach((navItem) => {\n navigationChildItemsHeight += navItem.offsetHeight;\n });\n\n return `${navigationChildItemsHeight}px`;\n };\n\n private setInitialGroupedLinksWrapperHeight = () => {\n const linkWrapper = this.el.shadowRoot.querySelector(\n this.GROUPED_LINKS_WRAPPER_CLASS\n ) as HTMLElement;\n\n if (!linkWrapper) return;\n\n if (\n !this.isSideNavExpanded &&\n !this.collapsedNavItemsHeight &&\n this.expanded\n ) {\n this.collapsedNavItemsHeight = this.getNavigationChildItemsHeight();\n this.setGroupedLinksElementHeight(\n linkWrapper,\n this.collapsedNavItemsHeight\n );\n }\n\n if (this.isSideNavExpanded && this.expanded) {\n this.expandedNavItemsHeight = this.getNavigationChildItemsHeight();\n this.setGroupedLinksElementHeight(\n linkWrapper,\n this.expandedNavItemsHeight\n );\n }\n };\n\n private renderNavigationItems = (): HTMLDivElement | null => {\n if (this.dropdownOpen || (this.inTopNavSideMenu && !this.expandable)) {\n return this.renderDropdownGroupedLinks();\n }\n\n if (this.navigationType !== \"top\") {\n return this.renderGroupedLinks();\n }\n\n return null;\n };\n\n private setGroupedLinksElementHeight(\n groupedNavItemWrapper: HTMLElement,\n height: string\n ) {\n groupedNavItemWrapper.style.setProperty(\n \"--navigation-child-items-height\",\n height\n );\n }\n\n render() {\n const { label, dropdownOpen, inTopNavSideMenu, expandable } = this;\n const NavigationGroupElement =\n !inTopNavSideMenu || expandable ? \"button\" : \"div\";\n return (\n <Host\n class={{\n [\"in-side-menu\"]: inTopNavSideMenu,\n expanded: this.expanded,\n collapsed: !this.expanded,\n [\"navigation-group-side-nav\"]: this.navigationType === \"side\",\n }}\n role=\"listitem\"\n >\n <NavigationGroupElement\n onMouseEnter={\n !inTopNavSideMenu &&\n this.navigationType === \"top\" &&\n this.handleMouseEnter\n }\n onMouseLeave={this.navigationType === \"top\" && this.handleMouseLeave}\n tabindex={inTopNavSideMenu && !expandable ? \"-1\" : \"0\"}\n onBlur={this.handleBlur}\n onClick={expandable ? this.handleClick : null}\n onKeyDown={this.handleKeydown}\n class={{\n [\"navigation-group\"]: true,\n [this.focusStyle]: !inTopNavSideMenu,\n [\"navigation-group-side-menu\"]: inTopNavSideMenu && !expandable,\n [\"navigation-group-side-menu-collapsed\"]:\n inTopNavSideMenu && expandable && !dropdownOpen,\n [\"navigation-group-side-menu-expanded\"]:\n inTopNavSideMenu && expandable && dropdownOpen,\n [\"selected\"]: dropdownOpen && !inTopNavSideMenu,\n }}\n ref={(el) => (this.groupEl = el)}\n aria-expanded={dropdownOpen || this.expanded ? \"true\" : \"false\"}\n aria-haspopup={\n !inTopNavSideMenu && this.navigationType === \"top\"\n ? \"true\"\n : \"false\"\n }\n >\n <ic-typography\n variant={this.navigationType === \"side\" ? \"caption\" : \"label\"}\n >\n {label}\n </ic-typography>\n {this.navigationType === \"side\" && expandable && (\n <div\n class={{\n \"chevron-toggle-icon-wrapper\": true,\n \"chevron-toggle-icon-closed\": this.expanded,\n }}\n innerHTML={chevronIcon}\n ></div>\n )}\n </NavigationGroupElement>\n {this.renderNavigationItems()}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,h as e,H as i,g as a}from"./p-52e063d3.js";import{i as s,e as n,D as o,f as r}from"./p-95a864bf.js";import"./p-26b7b18f.js";const l='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block;z-index:var(--ic-z-index-page-header)}:host(.sticky){position:sticky;top:0;box-shadow:var(--ic-elevation-overlay);z-index:var(--ic-z-index-sticky-page-header)}header{background-color:var(--ic-architectural-40)}header.border-bottom{border-bottom:var(--ic-border-default)}header.tabs{padding-top:var(--ic-space-md)}.breadcrumb-area{margin-bottom:var(--ic-space-md)}.main-content{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"title-area action-area"\n "input-area action-area";-moz-column-gap:var(--ic-space-md);column-gap:var(--ic-space-md);justify-content:space-between;width:100%}.title-area{display:flex;flex-direction:column;flex:1;min-width:19rem;grid-area:title-area}.header-content{display:flex;align-items:center;width:100%;flex-wrap:wrap;row-gap:var(--ic-space-xs);-moz-column-gap:var(--ic-space-md);column-gap:var(--ic-space-md)}.heading{display:inline-block;overflow-wrap:break-word;-webkit-hyphens:auto;hyphens:auto}.subheading.small{margin-top:var(--ic-space-xs)}.action-area{display:flex;gap:var(--ic-space-md);flex-flow:row wrap;justify-self:end;justify-content:flex-end;height:-moz-fit-content;height:fit-content;grid-area:action-area}.input-area,.navigation-area{margin-top:var(--ic-space-md);width:100%}.tabs-slot{display:flex;overflow-x:auto;padding:0.5rem;margin:-0.5rem}.tabs-slot::-webkit-scrollbar{display:none}.input-area{grid-area:input-area}@media screen and (max-width: 576px){::slotted(ic-text-field){--input-width:100%;max-width:20rem}.main-content{grid-template-areas:"title-area"\n "action-area"\n "input-area";justify-content:flex-start}.title-area{min-width:0}.action-area{min-width:100%;margin-top:var(--ic-space-md);justify-content:start}}@media screen and (min-width: 992px){:host(.sticky-desktop){position:sticky;top:0;box-shadow:var(--ic-elevation-overlay);z-index:var(--ic-z-index-sticky-page-header)}}';const d=class{constructor(e){t(this,e);this.resizeObserver=null;this.resizeObserverCallback=()=>{if(this.reverseOrder&&s(this.el,"actions")){this.applyReverseOrder()}};this.runResizeObserver=()=>{this.resizeObserver=new ResizeObserver((()=>{this.resizeObserverCallback()}));this.resizeObserver.observe(this.el)};this.applyReverseOrder=()=>{const t=n();if(t!==this.deviceSize){this.deviceSize=t}const e=this.el.shadowRoot.querySelector("div.action-area");const i=[];for(let t=0;t<this.actionContent.length;t++){const e=this.actionContent[t];let a=e.offsetHeight;if(a===undefined){a=0}i.push(a)}const a=Math.max(...i);let s=e.offsetHeight;if(s===undefined){s=0}const r=()=>{this.actionContent=this.actionContent.reverse();this.actionContent.forEach((t=>{this.el.append(t)}));this.areButtonsReversed=!this.areButtonsReversed};if(this.deviceSize>o.S&&s<=a&&!this.areButtonsReversed||(this.deviceSize>o.S&&s>a||this.deviceSize<=o.S)&&this.areButtonsReversed){r()}};this.actionContent=undefined;this.areButtonsReversed=false;this.deviceSize=o.XL;this.aligned="left";this.border=true;this.heading=undefined;this.reverseOrder=false;this.size="default";this.small=false;this.sticky=false;this.stickyDesktopOnly=false;this.subheading=undefined}disconnectedCallback(){if(this.resizeObserver!==null){this.resizeObserver.disconnect()}}componentWillLoad(){this.actionContent=Array.from(this.el.querySelectorAll(`[slot="actions"]`))}componentDidLoad(){r(this.runResizeObserver)}render(){const{small:t,size:a,border:n,heading:o,subheading:r,aligned:l,sticky:d,stickyDesktopOnly:c}=this;const p=o?`${o} page sections`:"navigation-landmark-page-header";return e(i,{class:{["sticky"]:d,["sticky-desktop"]:!d&&c}},e("header",{class:{["border-bottom"]:n,["tabs"]:s(this.el,"tabs")}},e("ic-section-container",{aligned:l,fullHeight:s(this.el,"tabs")},s(this.el,"breadcrumbs")&&e("div",{class:"breadcrumb-area"},e("slot",{name:"breadcrumbs"})),e("div",{class:"main-content"},e("div",{class:"title-area"},e("div",{class:"header-content"},e("slot",{name:"heading"},e("ic-typography",{variant:t||a==="small"?"h4":"h2",class:"heading"},e("h2",null,o))),e("slot",{name:"heading-adornment"})),e("div",null,e("slot",{name:"subheading"},r&&e("ic-typography",{variant:"body",class:{["subheading"]:true,["small"]:t||a==="small"}},r)))),s(this.el,"actions")&&e("div",{class:"action-area"},e("slot",{name:"actions"})),s(this.el,"input")&&e("div",{class:"input-area"},e("slot",{name:"input"}))),(s(this.el,"stepper")||s(this.el,"tabs"))&&e("div",{class:"navigation-area"},s(this.el,"stepper")&&!s(this.el,"tabs")&&e("slot",{name:"stepper"}),s(this.el,"tabs")&&e("nav",{"aria-label":p},e("ic-horizontal-scroll",null,e("ul",{class:"tabs-slot"},e("slot",{name:"tabs"}))))))))}get el(){return a(this)}};d.style=l;export{d as ic_page_header};
2
- //# sourceMappingURL=p-4d413a72.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icPageHeaderCss","PageHeader","this","resizeObserver","resizeObserverCallback","reverseOrder","isSlotUsed","el","applyReverseOrder","runResizeObserver","ResizeObserver","observe","currSize","getCurrentDeviceSize","deviceSize","actionArea","shadowRoot","querySelector","actionHeights","i","actionContent","length","action","actionHeight","offsetHeight","undefined","push","max","Math","actionAreaHeight","appendActionContent","reverse","forEach","btn","append","areButtonsReversed","DEVICE_SIZES","S","XL","disconnectedCallback","disconnect","componentWillLoad","Array","from","querySelectorAll","componentDidLoad","checkResizeObserver","render","small","size","border","heading","subheading","aligned","sticky","stickyDesktopOnly","navAriaLabel","h","Host","class","fullHeight","name","variant"],"sources":["src/components/ic-page-header/ic-page-header.css?tag=ic-page-header&encapsulation=shadow","src/components/ic-page-header/ic-page-header.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-page-header: z-index of page-header\n */\n\n:host {\n display: block;\n z-index: var(--ic-z-index-page-header);\n}\n\n:host(.sticky) {\n position: sticky;\n top: 0;\n box-shadow: var(--ic-elevation-overlay);\n z-index: var(--ic-z-index-sticky-page-header);\n}\n\nheader {\n background-color: var(--ic-architectural-40);\n}\n\nheader.border-bottom {\n border-bottom: var(--ic-border-default);\n}\n\nheader.tabs {\n padding-top: var(--ic-space-md);\n}\n\n.breadcrumb-area {\n margin-bottom: var(--ic-space-md);\n}\n\n.main-content {\n display: grid;\n grid-template-columns: auto 1fr;\n grid-template-areas:\n \"title-area action-area\"\n \"input-area action-area\";\n column-gap: var(--ic-space-md);\n justify-content: space-between;\n width: 100%;\n}\n\n.title-area {\n display: flex;\n flex-direction: column;\n flex: 1;\n min-width: 19rem;\n grid-area: title-area;\n}\n\n.header-content {\n display: flex;\n align-items: center;\n width: 100%;\n flex-wrap: wrap;\n row-gap: var(--ic-space-xs);\n column-gap: var(--ic-space-md);\n}\n\n.heading {\n display: inline-block;\n overflow-wrap: break-word;\n hyphens: auto;\n}\n\n.subheading.small {\n margin-top: var(--ic-space-xs);\n}\n\n.action-area {\n display: flex;\n gap: var(--ic-space-md);\n flex-flow: row wrap;\n justify-self: end;\n justify-content: flex-end;\n height: fit-content;\n grid-area: action-area;\n}\n\n.input-area,\n.navigation-area {\n margin-top: var(--ic-space-md);\n width: 100%;\n}\n\n.tabs-slot {\n display: flex;\n overflow-x: auto;\n padding: 0.5rem;\n margin: -0.5rem;\n}\n\n.tabs-slot::-webkit-scrollbar {\n display: none;\n}\n\n.input-area {\n grid-area: input-area;\n}\n\n@media screen and (max-width: 576px) {\n ::slotted(ic-text-field) {\n --input-width: 100%;\n\n max-width: 20rem;\n }\n\n .main-content {\n grid-template-areas:\n \"title-area\"\n \"action-area\"\n \"input-area\";\n justify-content: flex-start;\n }\n\n .title-area {\n min-width: 0;\n }\n\n .action-area {\n min-width: 100%;\n margin-top: var(--ic-space-md);\n justify-content: start;\n }\n}\n\n@media screen and (min-width: 992px) {\n :host(.sticky-desktop) {\n position: sticky;\n top: 0;\n box-shadow: var(--ic-elevation-overlay);\n z-index: var(--ic-z-index-sticky-page-header);\n }\n}\n","import { Component, Host, h, Prop, Element, State } from \"@stencil/core\";\n\nimport { IcAlignment, IcSizesNoLarge } from \"../../utils/types\";\n\nimport {\n isSlotUsed,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n checkResizeObserver,\n} from \"../../utils/helpers\";\n\n/**\n * @slot breadcrumbs - Content will be rendered in the breadcrumb area, above the title and action areas.\n * @slot heading - Content will be rendered in the title area, in place of the heading.\n * @slot subheading - Content will be rendered in the title area, in place of the subheading.\n * @slot heading-adornment - Content will be rendered in the title area, adjacent to the heading.\n * @slot actions - Content will be rendered in the action area, adjacent to the title area.\n * @slot input - Content will be rendered in the input area, below the title area and adjacent to the action area.\n * @slot stepper - Content will be rendered in the navigation area, below the title and action areas. Note: stepper slot cannot be used when the tabs slot is being used.\n * @slot tabs - Content will be rendered in the navigation area, below the title and action areas. Note: the stepper slot cannot be used when the tabs slot is being used.\n */\n\n@Component({\n tag: \"ic-page-header\",\n styleUrl: \"ic-page-header.css\",\n shadow: true,\n})\nexport class PageHeader {\n private resizeObserver: ResizeObserver = null;\n\n @Element() el: HTMLIcPageHeaderElement;\n\n @State() actionContent: Node[];\n @State() areButtonsReversed: boolean = false;\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n /**\n * The alignment of the page header.\n */\n @Prop() aligned?: IcAlignment = \"left\";\n\n /**\n * If `true`, a border will be displayed along the bottom of the page header.\n */\n @Prop() border?: boolean = true;\n\n /**\n * The title to render on the page header.\n */\n @Prop() heading?: string;\n\n /**\n * If `true`, the reading pattern and tab order will change in the action area for viewport widths of above 576px and when actions have not wrapped.\n */\n @Prop() reverseOrder?: boolean = false;\n\n /**\n * The size of the page header component.\n */\n @Prop() size?: IcSizesNoLarge = \"default\";\n\n /**\n * @deprecated This prop should not be used anymore. Set prop `size` to \"small\" instead.\n */\n @Prop() small?: boolean = false;\n\n /**\n * If `true`, the page header will be sticky at all breakpoints.\n */\n @Prop() sticky?: boolean = false;\n\n /**\n * If `true`, the page header will only be sticky for viewport widths of 992px and above.\n */\n @Prop() stickyDesktopOnly?: boolean = false;\n\n /**\n * The subtitle to render on the page header.\n */\n @Prop() subheading?: string;\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad(): void {\n this.actionContent = Array.from(\n this.el.querySelectorAll(`[slot=\"actions\"]`)\n );\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n }\n\n private resizeObserverCallback = () => {\n if (this.reverseOrder && isSlotUsed(this.el, \"actions\")) {\n this.applyReverseOrder();\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback();\n });\n this.resizeObserver.observe(this.el);\n };\n\n private applyReverseOrder = (): void => {\n const currSize = getCurrentDeviceSize();\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n }\n\n const actionArea = this.el.shadowRoot.querySelector(\n \"div.action-area\"\n ) as HTMLElement;\n const actionHeights: number[] = [];\n\n /* For each button in the actions slot, check the height of the button and push this number into the actionHeights array and then find the greatest number in this array (i.e. find the height of the tallest button) */\n for (let i = 0; i < this.actionContent.length; i++) {\n const action = this.actionContent[i] as HTMLElement;\n let actionHeight = action.offsetHeight;\n if (actionHeight === undefined) {\n actionHeight = 0;\n }\n actionHeights.push(actionHeight);\n }\n\n const max = Math.max(...actionHeights);\n\n /* The smallest breakpoint displays buttons in the same order the user has slotted them in. When the device size is larger than the small breakpoiint then the order of the button reverses due to best practice for reading patterns. If the device size is larger than the small breakpoint and the buttons have started to wrap then they follow the order the user has slotted them in. This logic is programmed based on the height of the action-area div that wraps the actions slot. If the height of the action-area div is taller than the height of the tallest button, then it is assumed that the taller height is caused by the buttons wrapping */\n let actionAreaHeight = actionArea.offsetHeight;\n\n if (actionAreaHeight === undefined) {\n actionAreaHeight = 0;\n }\n\n const appendActionContent = () => {\n this.actionContent = this.actionContent.reverse();\n this.actionContent.forEach((btn: string | Node) => {\n this.el.append(btn);\n });\n this.areButtonsReversed = !this.areButtonsReversed;\n };\n\n if (\n (this.deviceSize > DEVICE_SIZES.S &&\n actionAreaHeight <= max &&\n !this.areButtonsReversed) ||\n (((this.deviceSize > DEVICE_SIZES.S && actionAreaHeight > max) ||\n this.deviceSize <= DEVICE_SIZES.S) &&\n this.areButtonsReversed)\n ) {\n appendActionContent();\n }\n };\n\n render() {\n const {\n small,\n size,\n border,\n heading,\n subheading,\n aligned,\n sticky,\n stickyDesktopOnly,\n } = this;\n\n const navAriaLabel = heading\n ? `${heading} page sections`\n : \"navigation-landmark-page-header\";\n\n return (\n <Host\n class={{\n [\"sticky\"]: sticky,\n [\"sticky-desktop\"]: !sticky && stickyDesktopOnly,\n }}\n >\n <header\n class={{\n [\"border-bottom\"]: border,\n [\"tabs\"]: isSlotUsed(this.el, \"tabs\"),\n }}\n >\n <ic-section-container\n aligned={aligned}\n fullHeight={isSlotUsed(this.el, \"tabs\")}\n >\n {isSlotUsed(this.el, \"breadcrumbs\") && (\n <div class=\"breadcrumb-area\">\n <slot name=\"breadcrumbs\" />\n </div>\n )}\n <div class=\"main-content\">\n <div class=\"title-area\">\n <div class=\"header-content\">\n <slot name=\"heading\">\n <ic-typography\n variant={small || size === \"small\" ? \"h4\" : \"h2\"}\n class=\"heading\"\n >\n <h2>{heading}</h2>\n </ic-typography>\n </slot>\n <slot name=\"heading-adornment\" />\n </div>\n <div>\n <slot name=\"subheading\">\n {subheading && (\n <ic-typography\n variant=\"body\"\n class={{\n [\"subheading\"]: true,\n [\"small\"]: small || size === \"small\",\n }}\n >\n {subheading}\n </ic-typography>\n )}\n </slot>\n </div>\n </div>\n {isSlotUsed(this.el, \"actions\") && (\n <div class=\"action-area\">\n <slot name=\"actions\" />\n </div>\n )}\n {isSlotUsed(this.el, \"input\") && (\n <div class=\"input-area\">\n <slot name=\"input\" />\n </div>\n )}\n </div>\n\n {(isSlotUsed(this.el, \"stepper\") ||\n isSlotUsed(this.el, \"tabs\")) && (\n <div class=\"navigation-area\">\n {isSlotUsed(this.el, \"stepper\") &&\n !isSlotUsed(this.el, \"tabs\") && <slot name=\"stepper\" />}\n {isSlotUsed(this.el, \"tabs\") && (\n <nav aria-label={navAriaLabel}>\n <ic-horizontal-scroll>\n <ul class=\"tabs-slot\">\n <slot name=\"tabs\" />\n </ul>\n </ic-horizontal-scroll>\n </nav>\n )}\n </div>\n )}\n </ic-section-container>\n </header>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icBackToTopCss","backToTopLabel","BackToTop","this","topObserver","setTargetElVisible","visible","targetElVisible","setFooterVisible","checkForClassificationBanner","window","scrollY","footerVisible","targetElObserverCallback","entries","isIntersecting","footerObserverCallback","findTargetEl","target","targetElement","undefined","console","log","document","querySelector","indexOf","createTopObserver","targetEl","objParent","observedEl","unobserve","remove","body","firstElementChild","isTargetElNull","parentNode","objBackToTopTargetEl","createElement","setAttribute","insertBefore","marginTop","getComputedStyle","IntersectionObserver","threshold","rootMargin","observe","handleClick","scrollTo","scrollIntoView","banners","querySelectorAll","bannerOffset","length","watchPropHandler","newValue","oldValue","onComponentPropUndefinedChange","componentWillLoad","footers","footerEl","footerObserver","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","render","h","class","onClick","innerHTML","ArrowUpward","variant"],"sources":["src/components/ic-back-to-top/ic-back-to-top.css?tag=ic-back-to-top&encapsulation=shadow","src/components/ic-back-to-top/ic-back-to-top.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-back-to-top: z-index of back to top\n */\n\n:host {\n display: block;\n position: absolute;\n right: 0;\n}\n\nbutton {\n position: fixed;\n right: var(--ic-space-md);\n bottom: var(--ic-space-md);\n height: 2.5rem;\n align-items: center;\n padding: var(--ic-space-xs) var(--ic-space-md) var(--ic-space-xs)\n var(--ic-space-sm);\n margin: 0;\n gap: var(--ic-space-xs);\n display: flex;\n background-color: var(--ic-architectural-white);\n border: var(--ic-border-width) solid var(--ic-action-default);\n outline-width: inherit;\n box-sizing: border-box;\n box-shadow: var(--ic-elevation-overlay);\n border-radius: 5rem;\n text-decoration: none;\n visibility: hidden;\n opacity: 0;\n transition: visibility 0s linear var(--ic-transition-duration-slow),\n opacity var(--ic-transition-duration-slow);\n cursor: pointer;\n z-index: var(--ic-z-index-back-to-top);\n}\n\nbutton:hover {\n text-decoration: none;\n background-color: var(--ic-action-default-bg-hover-no-alpha);\n border: var(--ic-border-width) solid var(--ic-action-default-hover);\n}\n\nbutton:active {\n text-decoration: none;\n background-color: var(--ic-action-default-bg-active-no-alpha);\n border: var(--ic-border-width) solid var(--ic-action-default-active);\n}\n\nbutton:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n.ic-back-to-top-link.show {\n visibility: visible;\n opacity: 1;\n transition: visibility 0s linear 0s,\n opacity var(--ic-transition-duration-slow),\n box-shadow var(--ic-easing-transition-fast);\n}\n\n.ic-back-to-top-link.by-footer {\n position: relative;\n right: var(--ic-space-md);\n bottom: 3.5rem;\n}\n\n.ic-back-to-top-link.offset-banner {\n margin-bottom: var(--ic-space-lg);\n}\n\n.ic-back-to-top-icon {\n fill: var(--ic-action-default);\n padding-left: var(--ic-space-xxs);\n padding-top: var(--ic-space-xxxs);\n}\n\n.ic-back-to-top-icon > svg {\n height: var(--ic-space-md);\n width: var(--ic-space-md);\n display: inline-block;\n}\n\n.ic-back-to-top-link span {\n color: var(--ic-action-default);\n}\n\n.ic-back-to-top-link:hover .ic-back-to-top-icon {\n fill: var(--ic-action-default-hover);\n}\n\n.ic-back-to-top-link:hover span {\n color: var(--ic-action-default-hover);\n}\n\n@media (forced-colors: active) {\n .ic-back-to-top-icon {\n fill: currentcolor;\n }\n}\n","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 if (typeof window !== \"undefined\" && window.scrollY === 0) {\n this.footerVisible = false;\n } else {\n this.footerVisible = visible;\n }\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.indexOf(\"#\") === 0 ? target : \"#\" + 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"],"mappings":"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"}