@ukic/web-components 2.4.0 → 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (494) 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/ic-accordion-group.cjs.entry.js +94 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -0
  5. package/dist/cjs/ic-accordion.cjs.entry.js +117 -0
  6. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -0
  7. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js +156 -0
  11. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -0
  12. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-button_3.cjs.entry.js +28 -7
  15. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-card.cjs.entry.js +2 -2
  17. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-chip.cjs.entry.js +2 -2
  21. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-data-entity.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-dialog.cjs.entry.js +37 -15
  26. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +2 -2
  34. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-navigation-button.cjs.entry.js +5 -1
  41. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-navigation-group.cjs.entry.js +53 -29
  43. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-navigation-item.cjs.entry.js +27 -6
  45. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  48. package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
  50. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-radio-group.cjs.entry.js +51 -5
  52. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-section-container.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-select.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-side-navigation.cjs.entry.js +29 -7
  58. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-skeleton.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-stepper.cjs.entry.js +4 -1
  63. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  66. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-tab.cjs.entry.js +2 -2
  69. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-text-field.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  74. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  75. package/dist/cjs/ic-typography.cjs.entry.js +2 -2
  76. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  77. package/dist/cjs/{index-54d2bed9.js → index-afe53465.js} +57 -15
  78. package/dist/cjs/index-afe53465.js.map +1 -0
  79. package/dist/cjs/loader.cjs.js +2 -2
  80. package/dist/cjs/types-7d67439f.js.map +1 -1
  81. package/dist/collection/collection-manifest.json +7 -4
  82. package/dist/collection/components/ic-accordion/ic-accordion.css +551 -0
  83. package/dist/collection/components/ic-accordion/ic-accordion.js +291 -0
  84. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -0
  85. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.e2e.js +57 -0
  86. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.e2e.js.map +1 -0
  87. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +346 -0
  88. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -0
  89. package/dist/collection/components/ic-accordion-group/ic-accordion-group.css +465 -0
  90. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js +216 -0
  91. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -0
  92. package/dist/collection/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.js +31 -0
  93. package/dist/collection/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.js.map +1 -0
  94. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js +114 -0
  95. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js.map +1 -0
  96. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js +126 -0
  97. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js.map +1 -0
  98. package/dist/collection/components/ic-badge/ic-badge.css +179 -0
  99. package/dist/collection/components/ic-badge/ic-badge.js +374 -0
  100. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -0
  101. package/dist/collection/components/ic-badge/ic-badge.types.js +2 -0
  102. package/dist/collection/components/ic-badge/ic-badge.types.js.map +1 -0
  103. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js +16 -0
  104. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js.map +1 -0
  105. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js +167 -0
  106. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js.map +1 -0
  107. package/dist/collection/components/ic-button/ic-button.css +9 -9
  108. package/dist/collection/components/ic-button/ic-button.js +27 -5
  109. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  110. package/dist/collection/components/ic-card/ic-card.css +22 -0
  111. package/dist/collection/components/ic-chip/ic-chip.js +2 -1
  112. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  113. package/dist/collection/components/ic-dialog/ic-dialog.js +36 -14
  114. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  115. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.css +1 -1
  116. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +4 -0
  117. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  118. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +52 -28
  119. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  120. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +18 -4
  121. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +25 -4
  122. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  123. package/dist/collection/components/ic-radio-group/ic-radio-group.css +3 -3
  124. package/dist/collection/components/ic-radio-group/ic-radio-group.js +57 -6
  125. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  126. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +33 -2
  127. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  128. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +4 -0
  129. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +1 -1
  130. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js +3 -1
  131. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js.map +1 -1
  132. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +46 -5
  133. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +27 -5
  134. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  135. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation-test-examples.js +171 -0
  136. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation-test-examples.js.map +1 -1
  137. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js +45 -1
  138. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js.map +1 -1
  139. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js +33 -0
  140. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js.map +1 -1
  141. package/dist/collection/components/ic-stepper/ic-stepper.js +3 -0
  142. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  143. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js +3 -1
  144. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js.map +1 -1
  145. package/dist/collection/components/ic-tab/ic-tab.js +3 -2
  146. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  147. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js +2 -0
  148. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js.map +1 -1
  149. package/dist/collection/components/ic-typography/ic-typography.css +10 -0
  150. package/dist/collection/components/ic-typography/ic-typography.js +1 -1
  151. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js +1 -1
  152. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js.map +1 -1
  153. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js +14 -0
  154. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js.map +1 -1
  155. package/dist/collection/utils/types.js.map +1 -1
  156. package/dist/components/helpers.js +1 -1
  157. package/dist/components/ic-accordion-group.d.ts +11 -0
  158. package/dist/components/ic-accordion-group.js +140 -0
  159. package/dist/components/ic-accordion-group.js.map +1 -0
  160. package/dist/components/ic-accordion.d.ts +11 -0
  161. package/dist/components/ic-accordion.js +146 -0
  162. package/dist/components/ic-accordion.js.map +1 -0
  163. package/dist/components/ic-back-to-top.js +2 -0
  164. package/dist/components/ic-back-to-top.js.map +1 -1
  165. package/dist/components/ic-badge.d.ts +11 -0
  166. package/dist/components/ic-badge.js +188 -0
  167. package/dist/components/ic-badge.js.map +1 -0
  168. package/dist/components/ic-breadcrumb-group.js +1 -1
  169. package/dist/components/ic-button2.js +27 -6
  170. package/dist/components/ic-button2.js.map +1 -1
  171. package/dist/components/ic-card.js +1 -1
  172. package/dist/components/ic-card.js.map +1 -1
  173. package/dist/components/ic-checkbox-group.js +1 -1
  174. package/dist/components/ic-checkbox.js +1 -1
  175. package/dist/components/ic-chip.js +1 -1
  176. package/dist/components/ic-chip.js.map +1 -1
  177. package/dist/components/ic-data-row.js +1 -1
  178. package/dist/components/ic-dialog.js +39 -15
  179. package/dist/components/ic-dialog.js.map +1 -1
  180. package/dist/components/ic-divider2.js +1 -1
  181. package/dist/components/ic-footer-link-group.js +1 -1
  182. package/dist/components/ic-footer-link.js +1 -1
  183. package/dist/components/ic-footer.js +1 -1
  184. package/dist/components/ic-hero.js +1 -1
  185. package/dist/components/ic-hero.js.map +1 -1
  186. package/dist/components/ic-horizontal-scroll2.js +2 -2
  187. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  188. package/dist/components/ic-input-component-container2.js +1 -1
  189. package/dist/components/ic-input-component-container2.js.map +1 -1
  190. package/dist/components/ic-input-label2.js +1 -1
  191. package/dist/components/ic-input-validation2.js +1 -1
  192. package/dist/components/ic-loading-indicator2.js +3 -0
  193. package/dist/components/ic-loading-indicator2.js.map +1 -1
  194. package/dist/components/ic-menu-item2.js +1 -1
  195. package/dist/components/ic-menu2.js +3 -0
  196. package/dist/components/ic-menu2.js.map +1 -1
  197. package/dist/components/ic-navigation-button.js +5 -1
  198. package/dist/components/ic-navigation-button.js.map +1 -1
  199. package/dist/components/ic-navigation-group.js +53 -29
  200. package/dist/components/ic-navigation-group.js.map +1 -1
  201. package/dist/components/ic-navigation-item.js +27 -6
  202. package/dist/components/ic-navigation-item.js.map +1 -1
  203. package/dist/components/ic-navigation-menu2.js +1 -1
  204. package/dist/components/ic-page-header.js +1 -1
  205. package/dist/components/ic-pagination.js +4 -1
  206. package/dist/components/ic-pagination.js.map +1 -1
  207. package/dist/components/ic-popover-menu.js +4 -2
  208. package/dist/components/ic-popover-menu.js.map +1 -1
  209. package/dist/components/ic-radio-group.js +57 -7
  210. package/dist/components/ic-radio-group.js.map +1 -1
  211. package/dist/components/ic-radio-option.js +4 -2
  212. package/dist/components/ic-radio-option.js.map +1 -1
  213. package/dist/components/ic-search-bar.js +7 -2
  214. package/dist/components/ic-search-bar.js.map +1 -1
  215. package/dist/components/ic-select.js +6 -1
  216. package/dist/components/ic-select.js.map +1 -1
  217. package/dist/components/ic-side-navigation.js +29 -7
  218. package/dist/components/ic-side-navigation.js.map +1 -1
  219. package/dist/components/ic-step.js +2 -0
  220. package/dist/components/ic-step.js.map +1 -1
  221. package/dist/components/ic-stepper.js +4 -1
  222. package/dist/components/ic-stepper.js.map +1 -1
  223. package/dist/components/ic-switch.js +1 -1
  224. package/dist/components/ic-switch.js.map +1 -1
  225. package/dist/components/ic-tab-context.js +3 -1
  226. package/dist/components/ic-tab-context.js.map +1 -1
  227. package/dist/components/ic-tab.js +4 -2
  228. package/dist/components/ic-tab.js.map +1 -1
  229. package/dist/components/ic-text-field2.js +5 -2
  230. package/dist/components/ic-text-field2.js.map +1 -1
  231. package/dist/components/ic-theme.js +3 -1
  232. package/dist/components/ic-theme.js.map +1 -1
  233. package/dist/components/ic-toast.js +1 -1
  234. package/dist/components/ic-toast.js.map +1 -1
  235. package/dist/components/ic-tooltip2.js +2 -0
  236. package/dist/components/ic-tooltip2.js.map +1 -1
  237. package/dist/components/ic-top-navigation.js +4 -2
  238. package/dist/components/ic-top-navigation.js.map +1 -1
  239. package/dist/components/ic-typography2.js +3 -1
  240. package/dist/components/ic-typography2.js.map +1 -1
  241. package/dist/components/types.js.map +1 -1
  242. package/dist/core/core.css +15 -9
  243. package/dist/core/core.esm.js +1 -1
  244. package/dist/core/core.esm.js.map +1 -1
  245. package/dist/core/{p-937ecd5b.entry.js → p-0353a1d8.entry.js} +2 -2
  246. package/dist/core/p-038601a3.entry.js +2 -0
  247. package/dist/core/p-038601a3.entry.js.map +1 -0
  248. package/dist/core/{p-a421d3a1.entry.js → p-05249867.entry.js} +2 -2
  249. package/dist/core/p-08c6119a.entry.js +2 -0
  250. package/dist/core/p-08c6119a.entry.js.map +1 -0
  251. package/dist/core/{p-a0a02a13.entry.js → p-09004694.entry.js} +2 -2
  252. package/dist/core/{p-d16100e8.entry.js → p-0d71a937.entry.js} +2 -2
  253. package/dist/core/{p-1c54269e.entry.js → p-0e1a4f8d.entry.js} +2 -2
  254. package/dist/core/{p-607e7bf2.entry.js → p-0fdb1e52.entry.js} +2 -2
  255. package/dist/core/{p-d20917ae.entry.js → p-10bfc292.entry.js} +2 -2
  256. package/dist/core/{p-27bf4783.entry.js → p-1650c1c2.entry.js} +2 -2
  257. package/dist/core/{p-e2d0039d.entry.js → p-1db57a3f.entry.js} +2 -2
  258. package/dist/core/p-1ed0a71d.entry.js +2 -0
  259. package/dist/core/{p-0dcc76b1.entry.js.map → p-1ed0a71d.entry.js.map} +1 -1
  260. package/dist/core/{p-4c4261e7.entry.js → p-2184a72f.entry.js} +2 -2
  261. package/dist/core/p-293f4c5f.entry.js +2 -0
  262. package/dist/core/p-293f4c5f.entry.js.map +1 -0
  263. package/dist/core/{p-62499150.entry.js → p-2afa6d29.entry.js} +2 -2
  264. package/dist/core/{p-cb2c18de.entry.js → p-2c09f9e0.entry.js} +2 -2
  265. package/dist/core/{p-3297713b.entry.js → p-2d21de19.entry.js} +2 -2
  266. package/dist/core/{p-5b8be53f.entry.js → p-32510505.entry.js} +2 -2
  267. package/dist/core/{p-99741b0f.entry.js → p-482397ae.entry.js} +2 -2
  268. package/dist/core/p-482397ae.entry.js.map +1 -0
  269. package/dist/core/{p-831b0f3f.entry.js → p-4ef8342f.entry.js} +2 -2
  270. package/dist/core/{p-c390fbad.entry.js → p-4f070381.entry.js} +2 -2
  271. package/dist/core/{p-9650e00e.entry.js → p-4fbe1dc3.entry.js} +2 -2
  272. package/dist/core/{p-68fda79a.entry.js → p-5401863e.entry.js} +2 -2
  273. package/dist/core/{p-83e535de.entry.js → p-59b24198.entry.js} +2 -2
  274. package/dist/core/p-5cc070c4.entry.js +2 -0
  275. package/dist/core/p-5cc070c4.entry.js.map +1 -0
  276. package/dist/core/p-5f881644.entry.js +2 -0
  277. package/dist/core/p-5f881644.entry.js.map +1 -0
  278. package/dist/core/p-60fef702.entry.js +2 -0
  279. package/dist/core/p-60fef702.entry.js.map +1 -0
  280. package/dist/core/p-613aa265.js.map +1 -1
  281. package/dist/core/{p-94903a21.entry.js → p-64999983.entry.js} +2 -2
  282. package/dist/core/p-64999983.entry.js.map +1 -0
  283. package/dist/core/{p-521c8f40.entry.js → p-675fe4db.entry.js} +2 -2
  284. package/dist/core/p-675fe4db.entry.js.map +1 -0
  285. package/dist/core/{p-67c18f72.entry.js → p-6aec6bce.entry.js} +2 -2
  286. package/dist/core/{p-27897d29.entry.js → p-6ec3cd12.entry.js} +2 -2
  287. package/dist/core/p-76daa5b0.entry.js +2 -0
  288. package/dist/core/{p-8e6169e0.entry.js → p-777e5556.entry.js} +2 -2
  289. package/dist/core/p-7a61d94a.entry.js +2 -0
  290. package/dist/core/p-7a61d94a.entry.js.map +1 -0
  291. package/dist/core/{p-18068237.js → p-85903a81.js} +3 -3
  292. package/dist/core/p-85903a81.js.map +1 -0
  293. package/dist/core/{p-ebd60291.entry.js → p-913da6d0.entry.js} +2 -2
  294. package/dist/core/{p-77266738.entry.js → p-932fe2a0.entry.js} +2 -2
  295. package/dist/core/p-9bd160bb.entry.js +2 -0
  296. package/dist/core/p-9bd160bb.entry.js.map +1 -0
  297. package/dist/core/{p-5fcbcc3f.entry.js → p-9ee852d9.entry.js} +2 -2
  298. package/dist/core/{p-d65ace31.entry.js → p-a388750d.entry.js} +2 -2
  299. package/dist/core/{p-b0b1de0e.entry.js → p-a46c1690.entry.js} +2 -2
  300. package/dist/core/{p-3fc638fc.entry.js → p-abf60097.entry.js} +2 -2
  301. package/dist/core/{p-630ae754.entry.js → p-ac82781b.entry.js} +2 -2
  302. package/dist/core/{p-6781620e.entry.js → p-ad520f36.entry.js} +2 -2
  303. package/dist/core/p-b42b8ffa.entry.js +2 -0
  304. package/dist/core/p-b42b8ffa.entry.js.map +1 -0
  305. package/dist/core/p-b96bd8be.entry.js +2 -0
  306. package/dist/core/p-b96bd8be.entry.js.map +1 -0
  307. package/dist/core/{p-85dd5e5b.entry.js → p-c1e8d13e.entry.js} +2 -2
  308. package/dist/core/{p-ebe76390.js → p-c30d9b20.js} +2 -2
  309. package/dist/core/p-ca6e5474.entry.js +2 -0
  310. package/dist/core/p-ca6e5474.entry.js.map +1 -0
  311. package/dist/core/p-ceed0fee.entry.js +2 -0
  312. package/dist/core/p-ceed0fee.entry.js.map +1 -0
  313. package/dist/core/{p-c1859843.entry.js → p-cf95dd66.entry.js} +2 -2
  314. package/dist/core/{p-87149cbd.entry.js → p-d005a71a.entry.js} +2 -2
  315. package/dist/core/{p-65df7222.entry.js → p-d5282ede.entry.js} +2 -2
  316. package/dist/core/{p-4f7c20b3.entry.js → p-d9fc7243.entry.js} +2 -2
  317. package/dist/core/{p-16e8bb5a.entry.js → p-db4a15bd.entry.js} +2 -2
  318. package/dist/core/{p-c31e6dbb.entry.js → p-e59d2d50.entry.js} +2 -2
  319. package/dist/core/p-e75b04af.entry.js +2 -0
  320. package/dist/core/p-e75b04af.entry.js.map +1 -0
  321. package/dist/core/{p-e3923b67.entry.js → p-e904d985.entry.js} +2 -2
  322. package/dist/core/{p-7194c255.entry.js → p-ea55f25c.entry.js} +2 -2
  323. package/dist/core/p-ea55f25c.entry.js.map +1 -0
  324. package/dist/esm/core.js +4 -4
  325. package/dist/esm/core.js.map +1 -1
  326. package/dist/esm/{helpers-b0e80358.js → helpers-81a88a11.js} +2 -2
  327. package/dist/esm/{helpers-b0e80358.js.map → helpers-81a88a11.js.map} +1 -1
  328. package/dist/esm/ic-accordion-group.entry.js +90 -0
  329. package/dist/esm/ic-accordion-group.entry.js.map +1 -0
  330. package/dist/esm/ic-accordion.entry.js +113 -0
  331. package/dist/esm/ic-accordion.entry.js.map +1 -0
  332. package/dist/esm/ic-alert.entry.js +2 -2
  333. package/dist/esm/ic-back-to-top.entry.js +2 -2
  334. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  335. package/dist/esm/ic-badge.entry.js +152 -0
  336. package/dist/esm/ic-badge.entry.js.map +1 -0
  337. package/dist/esm/ic-breadcrumb-group.entry.js +2 -2
  338. package/dist/esm/ic-breadcrumb.entry.js +2 -2
  339. package/dist/esm/ic-button_3.entry.js +29 -8
  340. package/dist/esm/ic-button_3.entry.js.map +1 -1
  341. package/dist/esm/ic-card.entry.js +3 -3
  342. package/dist/esm/ic-card.entry.js.map +1 -1
  343. package/dist/esm/ic-checkbox-group.entry.js +2 -2
  344. package/dist/esm/ic-checkbox.entry.js +2 -2
  345. package/dist/esm/ic-chip.entry.js +3 -3
  346. package/dist/esm/ic-chip.entry.js.map +1 -1
  347. package/dist/esm/ic-classification-banner.entry.js +1 -1
  348. package/dist/esm/ic-data-entity.entry.js +1 -1
  349. package/dist/esm/ic-data-row.entry.js +2 -2
  350. package/dist/esm/ic-dialog.entry.js +38 -16
  351. package/dist/esm/ic-dialog.entry.js.map +1 -1
  352. package/dist/esm/ic-divider.entry.js +2 -2
  353. package/dist/esm/ic-empty-state.entry.js +2 -2
  354. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  355. package/dist/esm/ic-footer-link.entry.js +2 -2
  356. package/dist/esm/ic-footer.entry.js +2 -2
  357. package/dist/esm/ic-hero.entry.js +2 -2
  358. package/dist/esm/ic-horizontal-scroll.entry.js +3 -3
  359. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  360. package/dist/esm/ic-input-component-container_3.entry.js +2 -2
  361. package/dist/esm/ic-input-label_2.entry.js +2 -2
  362. package/dist/esm/ic-link.entry.js +2 -2
  363. package/dist/esm/ic-menu-group.entry.js +1 -1
  364. package/dist/esm/ic-menu-item.entry.js +2 -2
  365. package/dist/esm/ic-navigation-button.entry.js +6 -2
  366. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  367. package/dist/esm/ic-navigation-group.entry.js +54 -30
  368. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  369. package/dist/esm/ic-navigation-item.entry.js +28 -7
  370. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  371. package/dist/esm/ic-navigation-menu.entry.js +2 -2
  372. package/dist/esm/ic-page-header.entry.js +2 -2
  373. package/dist/esm/ic-pagination-item.entry.js +2 -2
  374. package/dist/esm/ic-pagination.entry.js +2 -2
  375. package/dist/esm/ic-popover-menu.entry.js +2 -2
  376. package/dist/esm/ic-radio-group.entry.js +52 -6
  377. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  378. package/dist/esm/ic-radio-option.entry.js +2 -2
  379. package/dist/esm/ic-search-bar.entry.js +2 -2
  380. package/dist/esm/ic-section-container.entry.js +1 -1
  381. package/dist/esm/ic-select.entry.js +2 -2
  382. package/dist/esm/ic-side-navigation.entry.js +30 -8
  383. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  384. package/dist/esm/ic-skeleton.entry.js +1 -1
  385. package/dist/esm/ic-status-tag.entry.js +2 -2
  386. package/dist/esm/ic-step.entry.js +1 -1
  387. package/dist/esm/ic-stepper.entry.js +5 -2
  388. package/dist/esm/ic-stepper.entry.js.map +1 -1
  389. package/dist/esm/ic-switch.entry.js +2 -2
  390. package/dist/esm/ic-tab-context.entry.js +1 -1
  391. package/dist/esm/ic-tab-group.entry.js +2 -2
  392. package/dist/esm/ic-tab-panel.entry.js +1 -1
  393. package/dist/esm/ic-tab.entry.js +3 -3
  394. package/dist/esm/ic-tab.entry.js.map +1 -1
  395. package/dist/esm/ic-text-field.entry.js +2 -2
  396. package/dist/esm/ic-theme.entry.js +2 -2
  397. package/dist/esm/ic-toast-region.entry.js +1 -1
  398. package/dist/esm/ic-toast.entry.js +2 -2
  399. package/dist/esm/ic-top-navigation.entry.js +2 -2
  400. package/dist/esm/ic-typography.entry.js +3 -3
  401. package/dist/esm/ic-typography.entry.js.map +1 -1
  402. package/dist/esm/{index-14c9f375.js → index-b006ae9d.js} +57 -15
  403. package/dist/esm/index-b006ae9d.js.map +1 -0
  404. package/dist/esm/loader.js +3 -3
  405. package/dist/esm/types-b2398b37.js.map +1 -1
  406. package/dist/types/components/ic-accordion/ic-accordion.d.ts +55 -0
  407. package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +33 -0
  408. package/dist/types/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.d.ts +1 -0
  409. package/dist/types/components/ic-badge/ic-badge.d.ts +57 -0
  410. package/dist/types/components/ic-badge/ic-badge.types.d.ts +9 -0
  411. package/dist/types/components/ic-badge/test/a11y/ic-badge.test.a11y.d.ts +1 -0
  412. package/dist/types/components/ic-button/ic-button.d.ts +6 -1
  413. package/dist/types/components/ic-chip/ic-chip.d.ts +1 -0
  414. package/dist/types/components/ic-dialog/ic-dialog.d.ts +4 -0
  415. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +1 -0
  416. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +4 -2
  417. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +2 -0
  418. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +8 -0
  419. package/dist/types/components/ic-side-navigation/test/basic/ic-side-navigation-test-examples.d.ts +2 -0
  420. package/dist/types/components/ic-stepper/ic-stepper.d.ts +1 -0
  421. package/dist/types/components/ic-tab/ic-tab.d.ts +1 -0
  422. package/dist/types/components.d.ts +202 -0
  423. package/dist/types/utils/types.d.ts +2 -2
  424. package/hydrate/index.js +667 -92
  425. package/package.json +12 -3
  426. package/dist/cjs/index-54d2bed9.js.map +0 -1
  427. package/dist/core/p-0dcc76b1.entry.js +0 -2
  428. package/dist/core/p-101bce17.entry.js +0 -2
  429. package/dist/core/p-101bce17.entry.js.map +0 -1
  430. package/dist/core/p-18068237.js.map +0 -1
  431. package/dist/core/p-414ff132.entry.js +0 -2
  432. package/dist/core/p-414ff132.entry.js.map +0 -1
  433. package/dist/core/p-433cfd47.entry.js +0 -2
  434. package/dist/core/p-433cfd47.entry.js.map +0 -1
  435. package/dist/core/p-455bfed1.entry.js +0 -2
  436. package/dist/core/p-455bfed1.entry.js.map +0 -1
  437. package/dist/core/p-521c8f40.entry.js.map +0 -1
  438. package/dist/core/p-7194c255.entry.js.map +0 -1
  439. package/dist/core/p-7be2b1fd.entry.js +0 -2
  440. package/dist/core/p-7be2b1fd.entry.js.map +0 -1
  441. package/dist/core/p-9248228e.entry.js +0 -2
  442. package/dist/core/p-9248228e.entry.js.map +0 -1
  443. package/dist/core/p-932a67ca.entry.js +0 -2
  444. package/dist/core/p-94903a21.entry.js.map +0 -1
  445. package/dist/core/p-96022913.entry.js +0 -2
  446. package/dist/core/p-96022913.entry.js.map +0 -1
  447. package/dist/core/p-99741b0f.entry.js.map +0 -1
  448. package/dist/core/p-b82776d0.entry.js +0 -2
  449. package/dist/core/p-b82776d0.entry.js.map +0 -1
  450. package/dist/core/p-d78c90fe.entry.js +0 -2
  451. package/dist/core/p-d78c90fe.entry.js.map +0 -1
  452. package/dist/core/p-fedcfea3.entry.js +0 -2
  453. package/dist/core/p-fedcfea3.entry.js.map +0 -1
  454. package/dist/esm/index-14c9f375.js.map +0 -1
  455. /package/dist/core/{p-937ecd5b.entry.js.map → p-0353a1d8.entry.js.map} +0 -0
  456. /package/dist/core/{p-a421d3a1.entry.js.map → p-05249867.entry.js.map} +0 -0
  457. /package/dist/core/{p-a0a02a13.entry.js.map → p-09004694.entry.js.map} +0 -0
  458. /package/dist/core/{p-d16100e8.entry.js.map → p-0d71a937.entry.js.map} +0 -0
  459. /package/dist/core/{p-1c54269e.entry.js.map → p-0e1a4f8d.entry.js.map} +0 -0
  460. /package/dist/core/{p-607e7bf2.entry.js.map → p-0fdb1e52.entry.js.map} +0 -0
  461. /package/dist/core/{p-d20917ae.entry.js.map → p-10bfc292.entry.js.map} +0 -0
  462. /package/dist/core/{p-27bf4783.entry.js.map → p-1650c1c2.entry.js.map} +0 -0
  463. /package/dist/core/{p-e2d0039d.entry.js.map → p-1db57a3f.entry.js.map} +0 -0
  464. /package/dist/core/{p-4c4261e7.entry.js.map → p-2184a72f.entry.js.map} +0 -0
  465. /package/dist/core/{p-62499150.entry.js.map → p-2afa6d29.entry.js.map} +0 -0
  466. /package/dist/core/{p-cb2c18de.entry.js.map → p-2c09f9e0.entry.js.map} +0 -0
  467. /package/dist/core/{p-3297713b.entry.js.map → p-2d21de19.entry.js.map} +0 -0
  468. /package/dist/core/{p-5b8be53f.entry.js.map → p-32510505.entry.js.map} +0 -0
  469. /package/dist/core/{p-831b0f3f.entry.js.map → p-4ef8342f.entry.js.map} +0 -0
  470. /package/dist/core/{p-c390fbad.entry.js.map → p-4f070381.entry.js.map} +0 -0
  471. /package/dist/core/{p-9650e00e.entry.js.map → p-4fbe1dc3.entry.js.map} +0 -0
  472. /package/dist/core/{p-68fda79a.entry.js.map → p-5401863e.entry.js.map} +0 -0
  473. /package/dist/core/{p-83e535de.entry.js.map → p-59b24198.entry.js.map} +0 -0
  474. /package/dist/core/{p-67c18f72.entry.js.map → p-6aec6bce.entry.js.map} +0 -0
  475. /package/dist/core/{p-27897d29.entry.js.map → p-6ec3cd12.entry.js.map} +0 -0
  476. /package/dist/core/{p-932a67ca.entry.js.map → p-76daa5b0.entry.js.map} +0 -0
  477. /package/dist/core/{p-8e6169e0.entry.js.map → p-777e5556.entry.js.map} +0 -0
  478. /package/dist/core/{p-ebd60291.entry.js.map → p-913da6d0.entry.js.map} +0 -0
  479. /package/dist/core/{p-77266738.entry.js.map → p-932fe2a0.entry.js.map} +0 -0
  480. /package/dist/core/{p-5fcbcc3f.entry.js.map → p-9ee852d9.entry.js.map} +0 -0
  481. /package/dist/core/{p-d65ace31.entry.js.map → p-a388750d.entry.js.map} +0 -0
  482. /package/dist/core/{p-b0b1de0e.entry.js.map → p-a46c1690.entry.js.map} +0 -0
  483. /package/dist/core/{p-3fc638fc.entry.js.map → p-abf60097.entry.js.map} +0 -0
  484. /package/dist/core/{p-630ae754.entry.js.map → p-ac82781b.entry.js.map} +0 -0
  485. /package/dist/core/{p-6781620e.entry.js.map → p-ad520f36.entry.js.map} +0 -0
  486. /package/dist/core/{p-85dd5e5b.entry.js.map → p-c1e8d13e.entry.js.map} +0 -0
  487. /package/dist/core/{p-ebe76390.js.map → p-c30d9b20.js.map} +0 -0
  488. /package/dist/core/{p-c1859843.entry.js.map → p-cf95dd66.entry.js.map} +0 -0
  489. /package/dist/core/{p-87149cbd.entry.js.map → p-d005a71a.entry.js.map} +0 -0
  490. /package/dist/core/{p-65df7222.entry.js.map → p-d5282ede.entry.js.map} +0 -0
  491. /package/dist/core/{p-4f7c20b3.entry.js.map → p-d9fc7243.entry.js.map} +0 -0
  492. /package/dist/core/{p-16e8bb5a.entry.js.map → p-db4a15bd.entry.js.map} +0 -0
  493. /package/dist/core/{p-c31e6dbb.entry.js.map → p-e59d2d50.entry.js.map} +0 -0
  494. /package/dist/core/{p-e3923b67.entry.js.map → p-e904d985.entry.js.map} +0 -0
@@ -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-space-1px) 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-space-1px) 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-space-1px) 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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"}
@@ -1,2 +0,0 @@
1
- import{r as i,h as t,H as e,g as o}from"./p-18068237.js";import{D as n,l as s,g as a,q as r}from"./p-ebe76390.js";import{C as d}from"./p-3b185c32.js";import"./p-613aa265.js";const h='/*! 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}:host(.in-side-menu){border-bottom:var(--ic-space-1px) solid var(--ic-architectural-200);padding:var(--ic-space-md) 0}:host .navigation-group{height:100%;width:-moz-fit-content;width:fit-content;color:var(--ic-theme-text);display:flex;align-items:center;justify-content:center;padding:0 var(--ic-space-md);transition:var(--ic-easing-transition-slow);position:relative;background:none;border:none}:host(.in-side-menu) .navigation-group{height:2.5rem;width:100%;text-align:left}:host(.in-side-menu) .navigation-group .ic-typography-label{width:11.875rem}:host(.in-side-menu) .navigation-group-side-menu{color:var(--ic-action-default);justify-content:flex-start;padding:0 var(--ic-space-md) 0 var(--ic-space-md)}:host(.in-side-menu) .navigation-group-side-menu-collapsed,:host(.in-side-menu) .navigation-group-side-menu-expanded{color:var(--ic-action-default);justify-content:flex-start;padding-left:var(--ic-space-md)}:host(.in-side-menu) .navigation-group-side-menu-expanded{margin-bottom:var(--ic-space-xs)}:host(.in-side-menu) .navigation-group-side-menu-collapsed::after,:host(.in-side-menu) .navigation-group-side-menu-expanded::after{border-style:solid;border-width:0.125em 0.125em 0 0;content:"";display:inline-block;height:0.45em;left:0.75em;position:relative;top:-0.1em;transform:rotate(135deg);vertical-align:top;width:0.45em}:host(.in-side-menu) .navigation-group-side-menu-expanded::after{top:0.15em;transform:rotate(-45deg)}:host .navigation-group:hover,:host .navigation-group:active,:host .selected{background-color:var(--ic-architectural-20);color:var(--ic-color-primary-text);outline:none;cursor:pointer}:host(:not(.in-side-menu)) .navigation-group:focus{box-shadow:var(--ic-border-focus);border-radius:var(--ic-border-radius);outline:var(--ic-hc-focus-outline);z-index:var(--ic-z-index-navigation-item);transition:box-shadow var(--ic-easing-transition-fast)}:host(.in-side-menu) .navigation-group-side-menu:hover,:host(.in-side-menu) .navigation-group-side-menu:active,:host(.in-side-menu) .navigation-group-side-menu:focus{background-color:var(--ic-architectural-20);color:var(--ic-action-default);cursor:auto;box-shadow:none;outline:none}:host(.in-side-menu) .navigation-group-side-menu:focus{outline:var(--ic-hc-focus-outline)}:host(.in-side-menu) .navigation-group-side-menu-expanded:hover:not(:focus),:host(.in-side-menu) .navigation-group-side-menu-collapsed:hover:not(:focus){background-color:var(--ic-action-dark-bg-hover);color:var(--ic-action-default);cursor:pointer}:host(.in-side-menu) .navigation-group-side-menu-expanded:active:not(:focus),:host(.in-side-menu) .navigation-group-side-menu-collapsed:active:not(:focus){background-color:var(--ic-action-dark-bg-active);color:var(--ic-action-default)}:host(.in-side-menu) .navigation-group-side-menu-expanded:focus,:host(.in-side-menu) .navigation-group-side-menu-collapsed:focus{color:var(--ic-action-default);box-shadow:var(--ic-border-focus-inset);border-radius:var(--ic-border-radius-inset);outline:var(--ic-hc-focus-outline)}:host .navigation-group-dropdown{background-color:var(--ic-architectural-20);border-bottom:var(--ic-border-default);position:absolute;left:0;right:0;padding:var(--ic-space-xs) var(--ic-space-md);box-shadow:0 0.375rem 0.5rem -0.375rem rgba(0 0 0 / 20%);z-index:calc(var(--ic-z-index-navigation-item) - 1)}:host .navigation-group-dropdown-items-list{list-style:none;display:flex;flex-flow:column wrap;align-content:flex-start;padding-left:var(--ic-space-md);max-height:16.5rem}:host .chevron-toggle-icon-wrapper{display:flex;align-items:center}:host .chevron-toggle-icon-wrapper svg{transform:rotate(90deg);height:var(--ic-space-lg);width:var(--ic-space-lg)}:host .chevron-toggle-icon-closed svg{transform:rotate(-90deg)}:host(.expanded) .grouped-links-wrapper{height:var(--navigation-child-items-height, auto) !important;transition:var(--ic-easing-transition-slow);overflow:hidden}:host(.navigation-group-side-nav) .link,:host(.navigation-group-side-nav) ::slotted(a){height:var(--navigation-child-items-height, auto)}:host(.collapsed) .grouped-links-wrapper{height:0;transition:var(--ic-easing-transition-slow);overflow:hidden}:host(.navigation-group-side-nav) .navigation-group{height:var(--navigation-group-height);width:var(--navigation-group-width);justify-content:var(--navigation-group-justify-content);padding-right:var(--navigation-group-expand-toggle-padding)}:host(.navigation-group-side-nav) .navigation-group:hover,:host(.navigation-group-side-nav) .navigation-group:active,:host(.navigation-group-side-nav) .selected{background-color:var(--navigation-group-hover);color:var(--navigation-group-text-hover)}:host(.navigation-group-side-nav) .navigation-group:focus{box-shadow:var(--ic-border-focus-inset);border-radius:var(--ic-border-radius-inset);background:none}:host(.navigation-group-side-nav) .ic-typography-caption{position:var(--navigation-group-title-position);left:var(--navigation-group-title-position-left);white-space:nowrap}';const l=class{constructor(e){i(this,e);this.allGroupedNavigationItems=[];this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS=50;this.IC_NAVIGATION_ITEM="ic-navigation-item";this.mouseGate=false;this.nodeName="IC-NAVIGATION-GROUP";this.sideNavExpandHandler=i=>{this.isSideNavExpanded=i.detail.sideNavExpanded;if(this.isCollapsedLabelVariant===undefined){this.isCollapsedLabelVariant=!!i.target.getAttribute("collapsed-icon-labels")}if(this.isCollapsedLabelVariant&&!this.isSideNavExpanded){this.collapsedIconLabelsNavigationItemsHeight=this.getNavigationChildItemsHeight()}setTimeout((()=>this.setInitialGroupedLinksWrapperHeight()),this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS)};this.topNavResizedHandler=i=>{const t=i.detail.size;if(t!==this.deviceSize){this.deviceSize=t;this.inTopNavSideMenu=t<=n.L}};this.setGroupedNavItemTabIndex=i=>{this.el.querySelectorAll(this.IC_NAVIGATION_ITEM).forEach((t=>{const e=t.shadowRoot.querySelector("a")||t.querySelector("a");if(e){e.setAttribute("tabindex",i)}}))};this.toggleGroupedLinkWrapperHeight=(i,t)=>{if(i){if(t){i.setAttribute("style",`--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`);this.setGroupedNavItemTabIndex("0")}else{i.setAttribute("style",`--navigation-child-items-height: 0`);this.setGroupedNavItemTabIndex("-1")}}};this.toggleExpanded=()=>{this.expanded=!this.expanded;const i=this.el.shadowRoot.querySelector(".grouped-links-wrapper");this.toggleGroupedLinkWrapperHeight(i,this.expanded)};this.handleClick=i=>{if(this.navigationType==="top"&&i.detail){this.toggleDropdown()}else{this.toggleExpanded()}};this.handleBlur=i=>{const t=i.relatedTarget;if(!this.el.contains(t)){this.hideDropdown()}};this.handleTopNavKeydown=i=>{if(i.key===" "||i.key==="Enter"){this.toggleDropdown()}else if(!this.inTopNavSideMenu&&i.key==="Escape"){this.hideDropdown()}};this.handleKeydown=i=>{if(i.key==="Enter"||i.key===" "||i.key==="Escape"){switch(this.navigationType){case"top":this.handleTopNavKeydown(i);break;case"side":this.toggleExpanded();i.preventDefault();break;default:this.toggleExpanded();break}}};this.handleMouseLeave=i=>{const t=i.relatedTarget;this.mouseGate=false;if(!this.el.contains(t)&&t!==this.dropdown&&document.activeElement!==this.el&&!this.el.contains(document.activeElement)&&t.nodeName===this.nodeName&&this.dropdownOpen===true){this.mouseGate=true;this.hideDropdown()}else if(!this.el.contains(t)&&t!==this.dropdown&&!this.el.contains(document.activeElement)){this.mouseGate=false;setTimeout((()=>{this.dropdownOpen?this.hideDropdown():null}),500)}};this.handleMouseEnter=i=>{const t=i.relatedTarget;document.addEventListener("keydown",this.handleKeydown);if(t.nodeName===this.nodeName&&this.mouseGate===true){this.showDropdown()}else if(this.dropdownOpen===false&&t!==null&&this.mouseGate===false){this.mouseGate=true;setTimeout((()=>{this.mouseGate&&this.showDropdown()}),500)}};this.renderDropdownGroupedLinks=()=>t("div",{class:{["navigation-group-dropdown"]:!this.inTopNavSideMenu,["navigation-group-dropdown-side-menu"]:this.inTopNavSideMenu,["selected"]:this.dropdownOpen&&!this.inTopNavSideMenu},onMouseLeave:!this.inTopNavSideMenu?this.handleMouseLeave:null,ref:i=>this.dropdown=i},t("nav",{class:{["navigation-group-dropdown-items"]:!this.inTopNavSideMenu}},t("ul",null,t("slot",null))));this.renderGroupedLinks=()=>t("ul",{class:"grouped-links-wrapper"},t("slot",null));this.getNavigationChildItemsHeight=()=>{let i=0;this.allGroupedNavigationItems.forEach((t=>{i+=t.clientHeight}));return`${i}px`};this.setInitialGroupedLinksWrapperHeight=()=>{const i=this.el.shadowRoot.querySelector(".grouped-links-wrapper");if(i&&this.expanded&&!this.isSideNavExpanded&&this.isCollapsedLabelVariant){i.setAttribute("style",`--navigation-child-items-height: ${this.collapsedIconLabelsNavigationItemsHeight}px`)}else if(i&&this.expanded){i.setAttribute("style",`--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`)}};this.renderNavigationItems=()=>{if(this.dropdownOpen||this.inTopNavSideMenu&&!this.expandable){return this.renderDropdownGroupedLinks()}if(this.navigationType!=="top"){return this.renderGroupedLinks()}return null};this.deviceSize=n.XL;this.dropdownOpen=false;this.expanded=true;this.focusStyle=s();this.inTopNavSideMenu=false;this.navigationType=undefined;this.parentEl=undefined;this.expandable=false;this.label=undefined}disconnectedCallback(){if(this.navigationType==="side"){this.parentEl.removeEventListener("sideNavExpanded",this.sideNavExpandHandler)}else if(this.navigationType==="top"){this.parentEl.removeEventListener("topNavResized",this.topNavResizedHandler)}}componentWillLoad(){this.deviceSize=a();const i=r(this.el);this.navigationType=i.navType;this.parentEl=i.parent;if(this.deviceSize<=n.L&&this.navigationType==="top"){this.inTopNavSideMenu=true}if(this.navigationType==="side"){this.parentEl.addEventListener("sideNavExpanded",this.sideNavExpandHandler)}else if(this.navigationType==="top"){this.parentEl.addEventListener("topNavResized",this.topNavResizedHandler)}}componentDidLoad(){this.allGroupedNavigationItems=Array.from(this.el.querySelectorAll(this.IC_NAVIGATION_ITEM));setTimeout((()=>this.setInitialGroupedLinksWrapperHeight()),this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS)}childBlurHandler(){this.hideDropdown()}navItemClickHandler(){this.hideDropdown()}themeChangeHandler(i){const t=i.detail;this.focusStyle=t.mode}async setFocus(){if(this.groupEl){this.groupEl.focus()}}toggleDropdown(){this.dropdownOpen=!this.dropdownOpen}showDropdown(){if(!this.dropdownOpen){this.toggleDropdown()}}hideDropdown(){document.removeEventListener("keydown",this.handleKeydown);if(this.dropdownOpen){this.toggleDropdown()}}render(){const{label:i,dropdownOpen:o,inTopNavSideMenu:n,expandable:s}=this;const a=!n||s?"button":"div";return t(e,{class:{["in-side-menu"]:n,expanded:this.expanded,collapsed:!this.expanded,["navigation-group-side-nav"]:this.navigationType==="side"},role:"listitem"},t(a,{onMouseEnter:!n&&this.navigationType==="top"&&this.handleMouseEnter,onMouseLeave:this.navigationType==="top"&&this.handleMouseLeave,tabindex:n&&!s?"-1":"0",onBlur:this.handleBlur,onClick:s?this.handleClick:null,onKeyDown:this.handleKeydown,class:{["navigation-group"]:true,[this.focusStyle]:!n,["navigation-group-side-menu"]:n&&!s,["navigation-group-side-menu-collapsed"]:n&&s&&!o,["navigation-group-side-menu-expanded"]:n&&s&&o,["selected"]:o&&!n},ref:i=>this.groupEl=i,"aria-expanded":o||this.expanded?"true":"false","aria-haspopup":!n&&this.navigationType==="top"?"true":"false"},t("ic-typography",{variant:this.navigationType==="side"?"caption":"label"},i),this.navigationType==="side"&&s&&t("div",{class:{"chevron-toggle-icon-wrapper":true,"chevron-toggle-icon-closed":this.expanded},innerHTML:d})),this.renderNavigationItems())}static get delegatesFocus(){return true}get el(){return o(this)}};l.style=h;export{l as ic_navigation_group};
2
- //# sourceMappingURL=p-96022913.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icNavigationGroupCss","NavigationGroup","this","allGroupedNavigationItems","DYNAMIC_GROUPED_LINKS_HEIGHT_MS","IC_NAVIGATION_ITEM","mouseGate","nodeName","sideNavExpandHandler","event","isSideNavExpanded","detail","sideNavExpanded","isCollapsedLabelVariant","undefined","target","getAttribute","collapsedIconLabelsNavigationItemsHeight","getNavigationChildItemsHeight","setTimeout","setInitialGroupedLinksWrapperHeight","topNavResizedHandler","ev","newSize","size","deviceSize","inTopNavSideMenu","DEVICE_SIZES","L","setGroupedNavItemTabIndex","tabIndexValue","el","querySelectorAll","forEach","navigationItem","navItem","shadowRoot","querySelector","setAttribute","toggleGroupedLinkWrapperHeight","wrapper","expanded","toggleExpanded","linkWrapper","handleClick","navigationType","toggleDropdown","handleBlur","relatedTarget","contains","hideDropdown","handleTopNavKeydown","key","handleKeydown","preventDefault","handleMouseLeave","relTarget","dropdown","document","activeElement","dropdownOpen","handleMouseEnter","addEventListener","showDropdown","renderDropdownGroupedLinks","h","class","onMouseLeave","ref","renderGroupedLinks","navigationChildItemsHeight","clientHeight","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","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-space-1px) 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: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\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 collapsedIconLabelsNavigationItemsHeight: string;\n private dropdown: HTMLElement;\n private DYNAMIC_GROUPED_LINKS_HEIGHT_MS = 50;\n private groupEl: HTMLElement;\n private IC_NAVIGATION_ITEM = \"ic-navigation-item\";\n private isCollapsedLabelVariant: boolean;\n private isSideNavExpanded: boolean;\n private mouseGate: boolean = false;\n private nodeName = \"IC-NAVIGATION-GROUP\";\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\n if (this.isCollapsedLabelVariant === undefined) {\n this.isCollapsedLabelVariant = !!(\n event.target as HTMLIcSideNavigationElement\n ).getAttribute(\"collapsed-icon-labels\");\n }\n\n // Store sum of heights on all collapsed icon label items\n if (this.isCollapsedLabelVariant && !this.isSideNavExpanded) {\n this.collapsedIconLabelsNavigationItemsHeight =\n this.getNavigationChildItemsHeight();\n }\n\n setTimeout(\n () => this.setInitialGroupedLinksWrapperHeight(),\n this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS\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) {\n if (expanded) {\n wrapper.setAttribute(\n \"style\",\n `--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`\n );\n this.setGroupedNavItemTabIndex(\"0\");\n } else {\n wrapper.setAttribute(\"style\", `--navigation-child-items-height: 0`);\n this.setGroupedNavItemTabIndex(\"-1\");\n }\n }\n };\n\n private toggleExpanded = () => {\n this.expanded = !this.expanded;\n const linkWrapper = this.el.shadowRoot.querySelector(\n \".grouped-links-wrapper\"\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.clientHeight;\n });\n\n return `${navigationChildItemsHeight}px`;\n };\n\n private setInitialGroupedLinksWrapperHeight = () => {\n const linkWrapper = this.el.shadowRoot.querySelector(\n \".grouped-links-wrapper\"\n ) as HTMLElement;\n\n if (\n linkWrapper &&\n this.expanded &&\n !this.isSideNavExpanded &&\n this.isCollapsedLabelVariant\n ) {\n /**\n * Collapsed icon labels height is different depending on if ic-side-navigation is collapsed or expanded.\n * If collapsed, use collapsedIconLabelsNavigationItemsHeight which is set on initial load.\n */\n linkWrapper.setAttribute(\n \"style\",\n `--navigation-child-items-height: ${this.collapsedIconLabelsNavigationItemsHeight}px`\n );\n } else if (linkWrapper && this.expanded) {\n linkWrapper.setAttribute(\n \"style\",\n `--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`\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 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 +0,0 @@
1
- {"version":3,"names":["icStepperCss","Stepper","this","resizeObserver","getChildren","steps","Array","from","el","querySelectorAll","stepsWithStepTitles","checkStepTitles","length","variantOverride","variant","noOfResizes","console","error","setStepTypes","stepTypes","i","push","setStepperWidth","alignedFullWidth","aligned","lastStep","style","maxWidth","stepperWidth","offsetWidth","pxToRem","lastStepWidth","initialiseStepStates","forEach","step","index","stepNum","lastStepNum","stepType","current","stepTitleArea","shadowRoot","querySelector","autoSetStepTitles","stepTitle","setAttribute","undefined","removeAttribute","classList","remove","add","contains","nextStepTitle","progress","hideStepInfo","compactStepStyling","width","minWidth","connectorWidth","stepConnect","overrideVariant","minDefaultStepperWidth","clientWidth","resizeObserverCallback","runResizeObserver","ResizeObserver","observe","document","getBoundingClientRect","disconnectedCallback","disconnect","componentWillLoad","componentDidLoad","checkResizeObserver","render","h","Host","class"],"sources":["src/components/ic-stepper/ic-stepper.css?tag=ic-stepper&encapsulation=shadow","src/components/ic-stepper/ic-stepper.tsx"],"sourcesContent":[":host {\n display: flex;\n width: 100%;\n}\n\n.step-item-list {\n display: flex;\n margin: 0;\n padding: 0;\n}\n\n:host(.default:not(.aligned-left)) .step-item-list {\n flex: auto;\n}\n\n:host(.compact) ul ::slotted(ic-step) {\n display: none;\n}\n\n:host(.compact) ul ::slotted(ic-step.show) {\n display: flex;\n}\n\n:host(.compact) ul ::slotted(ic-step.hide) {\n display: none;\n opacity: 0;\n visibility: hidden;\n}\n","import { Component, Element, Host, Prop, h, State } from \"@stencil/core\";\nimport { checkResizeObserver, pxToRem } from \"../../utils/helpers\";\nimport { IcStepperAlignment } from \"./ic-stepper.types\";\nimport { IcStepTypes, IcStepVariants } from \"../ic-step/ic-step.types\";\n\n@Component({\n tag: \"ic-stepper\",\n styleUrl: \"ic-stepper.css\",\n shadow: true,\n})\nexport class Stepper {\n private resizeObserver: ResizeObserver = null;\n private steps: HTMLIcStepElement[];\n private stepsWithStepTitles: HTMLIcStepElement[];\n\n @Element() el: HTMLIcStepperElement;\n\n @State() alignedFullWidth: boolean = true;\n @State() autoSetStepTitles: boolean = true;\n @State() lastStepWidth: number = 0;\n @State() noOfResizes?: number = 0;\n @State() stepperWidth: number = document\n .querySelector(\"ic-stepper\")\n .getBoundingClientRect().width;\n @State() stepTypes: IcStepTypes[] = [];\n @State() variantOverride?: boolean = this.variant !== \"compact\";\n\n /**\n * The alignment of the default stepper within its container.\n */\n @Prop() aligned?: IcStepperAlignment = \"full-width\";\n\n /**\n * The length of the connnector between each step in pixels. Minimum length is 100px.\n */\n @Prop() connectorWidth?: number = 100;\n\n /**\n * If `true`, the information about each step, i.e. step title, step subtitle and step status, will be hidden on all default steps. The information about each step will still be visible in the compact variant of the stepper.\n */\n @Prop() hideStepInfo?: boolean = false;\n\n /**\n * The variant of the stepper.\n */\n @Prop({ mutable: true }) variant?: IcStepVariants = \"default\";\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad(): void {\n this.setStepTypes();\n if (this.variant === \"compact\") {\n this.variantOverride = false;\n }\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n }\n\n // Get all steps currently within this stepper\n private getChildren = (): void => {\n this.steps = Array.from(this.el.querySelectorAll(\"ic-step\"));\n\n this.stepsWithStepTitles = Array.from(\n this.el.querySelectorAll(\"ic-step[step-title]\")\n );\n };\n\n // Inform the user that stepTitles are required on all steps in a compact stepper\n private checkStepTitles = (): void => {\n if (\n this.stepsWithStepTitles.length < this.steps.length &&\n this.variantOverride &&\n this.variant === \"compact\"\n ) {\n this.noOfResizes = this.noOfResizes + 1;\n if (this.noOfResizes === 1) {\n console.error(\n `The prop 'step-title' (web components) / 'stepTitle' (react) is required for all steps of the Stepper component (compact variant)`\n );\n }\n }\n };\n\n private setStepTypes = (): void => {\n this.getChildren();\n this.stepTypes = [];\n for (let i = 0; i < this.steps.length; i++) {\n this.stepTypes.push(\"active\");\n }\n };\n\n private setStepperWidth = (): void => {\n this.alignedFullWidth =\n this.variant === \"default\" && this.aligned === \"full-width\";\n\n const lastStep = this.steps[this.steps.length - 1];\n lastStep.style.maxWidth = \"none\";\n\n if (this.alignedFullWidth) {\n this.stepperWidth = this.el.offsetWidth;\n lastStep.style.maxWidth = pxToRem(\n `${this.stepperWidth / this.steps.length}px`\n );\n this.lastStepWidth = lastStep.offsetWidth;\n }\n };\n\n private initialiseStepStates = (): void => {\n this.steps.forEach((step, index) => {\n // Set variant\n step.variant = this.variant;\n // Assign stepNum to each step\n step.stepNum = index + 1;\n // Assign lastStep to final step\n step.lastStep = index === this.steps.length - 1;\n step.lastStepNum = this.steps.length;\n\n if (step.stepType !== \"current\") {\n step.current = false;\n this.stepTypes[index] = step.stepType;\n } else {\n step.current = true;\n }\n\n const stepTitleArea =\n step.shadowRoot &&\n step.shadowRoot.querySelector(\".step > .step-title-area\");\n\n if (this.stepsWithStepTitles.length == 0 && this.variantOverride) {\n if (this.variant === \"compact\") {\n this.autoSetStepTitles = true;\n if (this.autoSetStepTitles) {\n step.stepTitle = \"Step \" + step.stepNum;\n stepTitleArea &&\n stepTitleArea\n .querySelector(\".step-title\")\n .setAttribute(\"aria-hidden\", \"true\");\n }\n }\n if (this.variant === \"default\") {\n this.autoSetStepTitles = false;\n if (!this.autoSetStepTitles) {\n step.stepTitle = undefined;\n stepTitleArea &&\n stepTitleArea\n .querySelector(\".step-title\")\n .removeAttribute(\"aria-hidden\");\n }\n }\n }\n\n if (this.variant === \"compact\") {\n if (step.current === true || step.stepType === \"current\") {\n step.classList.remove(\"hide\");\n step.classList.add(\"show\");\n } else if (step.classList.contains(\"show\")) {\n step.classList.remove(\"show\");\n step.classList.add(\"hide\");\n }\n\n if (!step.lastStep) {\n step.nextStepTitle = this.steps[index + 1].stepTitle;\n step.progress = (step.stepNum / this.steps.length) * 100;\n } else if (step.lastStep && this.stepTypes[index] !== \"completed\") {\n step.progress = 95;\n } else {\n step.progress = 100;\n }\n\n if (this.hideStepInfo && stepTitleArea !== null) {\n stepTitleArea.classList.remove(\"visually-hidden\");\n }\n\n step.compactStepStyling = this.stepTypes[index];\n }\n\n if (this.variant === \"default\") {\n if (!step.lastStep) {\n if (this.alignedFullWidth) {\n step.style.width = pxToRem(\n `${\n (this.stepperWidth - this.lastStepWidth) /\n (this.steps.length - 1)\n }px`\n );\n step.style.minWidth = pxToRem(\"148px\");\n }\n } else if (step.lastStep) {\n step.classList.add(\"last-step\");\n if (this.alignedFullWidth) {\n step.style.maxWidth = `${this.lastStepWidth}px`;\n } else {\n step.style.maxWidth =\n this.connectorWidth > 100\n ? pxToRem(`${this.connectorWidth + 48}px`)\n : pxToRem(\"148px\");\n }\n }\n\n if (this.aligned === \"left\") {\n step.style.width =\n this.connectorWidth > 100\n ? pxToRem(`${this.connectorWidth + 48}px`)\n : pxToRem(\"148px\");\n const stepConnect = step.shadowRoot.querySelector(\n \".step > .step-top > .step-connect\"\n ) as HTMLElement;\n\n if (stepConnect) {\n stepConnect.style.width =\n this.connectorWidth > 100\n ? pxToRem(`${this.connectorWidth}px`)\n : pxToRem(\"100px\");\n }\n }\n\n if (this.hideStepInfo && stepTitleArea !== null) {\n stepTitleArea.classList.add(\"visually-hidden\");\n }\n }\n });\n };\n\n private overrideVariant = () => {\n let minDefaultStepperWidth = 148 * this.steps.length;\n\n if (this.aligned === \"left\" && this.connectorWidth > 100) {\n minDefaultStepperWidth = (this.connectorWidth + 48) * this.steps.length;\n }\n\n if (this.variantOverride) {\n if (this.el.clientWidth < minDefaultStepperWidth) {\n this.variant = \"compact\";\n this.getChildren();\n } else {\n this.variant = \"default\";\n this.getChildren();\n }\n }\n };\n\n private resizeObserverCallback = () => {\n this.getChildren();\n this.checkStepTitles();\n this.overrideVariant();\n this.setStepperWidth();\n this.initialiseStepStates();\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback();\n });\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n return (\n <Host\n class={{\n [`${this.variant}`]: true,\n [\"aligned-left\"]:\n this.variant === \"default\" && this.aligned === \"left\",\n }}\n >\n <ul class=\"step-item-list\">\n <slot></slot>\n </ul>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as e,h as t,H as i,g as n}from"./p-18068237.js";import{l as o,n as a,a as s,p as r}from"./p-ebe76390.js";import{I as l}from"./p-613aa265.js";const d='/*! 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;margin-right:var(--ic-space-xs);list-style:none}:host(.in-side-menu){margin-right:0}:host::part(button){height:100%;min-height:2.5rem}';const p=class{constructor(t){e(this,t);this.inheritedAttributes={};this.initialAppearance=o();this.mode="navbar";this.download=false;this.href=undefined;this.hreflang=undefined;this.label=undefined;this.referrerpolicy=undefined;this.rel=undefined;this.target=undefined}componentWillLoad(){this.inheritedAttributes=a(this.el,[...r,"title"])}componentDidLoad(){s([{prop:this.label,propName:"label"}],"Navigation Button")}navBarMenuOpenHandler(){this.mode="menu"}navBarMenuCloseHandler(){this.mode="navbar"}themeChangeHandler(e){const t=e.detail;this.initialAppearance=t.mode}async setFocus(){if(this.buttonEl){this.buttonEl.focus()}}render(){const{href:e,target:n,rel:o,download:a,referrerpolicy:s}=this;let r="";let d="";let p="icon";let u=this.initialAppearance;let b="large";let m=false;if(this.mode==="menu"){r=this.label;p="tertiary";u=l.Default;b="default";m=true;d="popout-menu-button"}const c={variant:p,appearance:u,size:b,href:e,target:n,rel:o,download:a,referrerpolicy:s,fullWidth:m};return t(i,{class:{["in-side-menu"]:this.mode==="menu"}},t("ic-button",Object.assign({class:d,"aria-label":p=="icon"?this.label:null,ref:e=>this.buttonEl=e},c,this.inheritedAttributes),r,t("slot",{slot:"left-icon",name:"icon"})))}static get delegatesFocus(){return true}get el(){return n(this)}};p.style=d;export{p as ic_navigation_button};
2
- //# sourceMappingURL=p-b82776d0.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icNavigationButtonCss","NavigationButton","this","inheritedAttributes","getThemeForegroundColor","componentWillLoad","inheritAttributes","el","IC_INHERITED_ARIA","componentDidLoad","onComponentRequiredPropUndefined","prop","label","propName","navBarMenuOpenHandler","mode","navBarMenuCloseHandler","themeChangeHandler","ev","theme","detail","initialAppearance","setFocus","buttonEl","focus","render","href","target","rel","download","referrerpolicy","className","variant","appearance","size","fullWidth","IcThemeForegroundEnum","Default","buttonProps","h","Host","class","Object","assign","ref","slot","name"],"sources":["src/components/ic-navigation-button/ic-navigation-button.css?tag=ic-navigation-button&encapsulation=shadow","src/components/ic-navigation-button/ic-navigation-button.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n margin-right: var(--ic-space-xs);\n list-style: none;\n}\n\n:host(.in-side-menu) {\n margin-right: 0;\n}\n\n:host::part(button) {\n height: 100%;\n min-height: 2.5rem;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n State,\n h,\n Listen,\n Method,\n} from \"@stencil/core\";\n\nimport {\n getThemeForegroundColor,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcNavButtonModes } from \"./ic-navigation-button.types\";\n\n/**\n * @slot icon - Content will be placed to the left of the button label.\n */\n\n@Component({\n tag: \"ic-navigation-button\",\n styleUrl: \"ic-navigation-button.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class NavigationButton {\n private buttonEl: HTMLIcButtonElement;\n private inheritedAttributes: { [k: string]: unknown } = {};\n\n @Element() el: HTMLIcNavigationButtonElement;\n\n @State() initialAppearance = getThemeForegroundColor();\n /**\n * The display mode.\n */\n @State() mode: IcNavButtonModes = \"navbar\";\n\n /**\n * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n\n /**\n * The URL that the link points to. This will render the button as an \"a\" tag.\n */\n @Prop() href?: string;\n\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n\n /**\n * The label info to display.\n */\n @Prop() label!: string;\n\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"title\",\n ]);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Navigation Button\"\n );\n }\n\n @Listen(\"icNavigationMenuOpened\", { target: \"document\" })\n navBarMenuOpenHandler(): void {\n this.mode = \"menu\";\n }\n\n @Listen(\"icNavigationMenuClosed\", { target: \"document\" })\n navBarMenuCloseHandler(): void {\n this.mode = \"navbar\";\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.initialAppearance = theme.mode;\n }\n\n /**\n * Sets focus on the native `button`.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.buttonEl) {\n this.buttonEl.focus();\n }\n }\n\n render() {\n const { href, target, rel, download, referrerpolicy } = this;\n\n let label = \"\";\n let className = \"\";\n let variant: \"icon\" | \"tertiary\" = \"icon\";\n let appearance: IcThemeForeground | IcThemeForegroundEnum.Default =\n this.initialAppearance;\n let size: \"default\" | \"large\" = \"large\";\n let fullWidth = false;\n\n if (this.mode === \"menu\") {\n label = this.label;\n variant = \"tertiary\";\n appearance = IcThemeForegroundEnum.Default;\n size = \"default\";\n fullWidth = true;\n className = \"popout-menu-button\";\n }\n\n const buttonProps = {\n variant,\n appearance,\n size,\n href,\n target,\n rel,\n download,\n referrerpolicy,\n fullWidth,\n };\n\n return (\n <Host class={{ [\"in-side-menu\"]: this.mode === \"menu\" }}>\n <ic-button\n class={className}\n aria-label={variant == \"icon\" ? this.label : null}\n ref={(el) => (this.buttonEl = el)}\n {...buttonProps}\n {...this.inheritedAttributes}\n >\n {label}\n <slot slot=\"left-icon\" name=\"icon\"></slot>\n </ic-button>\n </Host>\n );\n }\n}\n"],"mappings":"sJAAA,MAAMA,EAAwB,8/E,MCmCjBC,EAAgB,M,yBAEnBC,KAAAC,oBAAgD,G,uBAI3BC,I,UAIK,S,cAKI,M,wIAgCtC,iBAAAC,GACEH,KAAKC,oBAAsBG,EAAkBJ,KAAKK,GAAI,IACjDC,EACH,S,CAIJ,gBAAAC,GACEC,EACE,CAAC,CAAEC,KAAMT,KAAKU,MAAOC,SAAU,UAC/B,oB,CAKJ,qBAAAC,GACEZ,KAAKa,KAAO,M,CAId,sBAAAC,GACEd,KAAKa,KAAO,Q,CAId,kBAAAE,CAAmBC,GACjB,MAAMC,EAAiBD,EAAGE,OAC1BlB,KAAKmB,kBAAoBF,EAAMJ,I,CAOjC,cAAMO,GACJ,GAAIpB,KAAKqB,SAAU,CACjBrB,KAAKqB,SAASC,O,EAIlB,MAAAC,GACE,MAAMC,KAAEA,EAAIC,OAAEA,EAAMC,IAAEA,EAAGC,SAAEA,EAAQC,eAAEA,GAAmB5B,KAExD,IAAIU,EAAQ,GACZ,IAAImB,EAAY,GAChB,IAAIC,EAA+B,OACnC,IAAIC,EACF/B,KAAKmB,kBACP,IAAIa,EAA4B,QAChC,IAAIC,EAAY,MAEhB,GAAIjC,KAAKa,OAAS,OAAQ,CACxBH,EAAQV,KAAKU,MACboB,EAAU,WACVC,EAAaG,EAAsBC,QACnCH,EAAO,UACPC,EAAY,KACZJ,EAAY,oB,CAGd,MAAMO,EAAc,CAClBN,UACAC,aACAC,OACAR,OACAC,SACAC,MACAC,WACAC,iBACAK,aAGF,OACEI,EAACC,EAAI,CAACC,MAAO,CAAE,CAAC,gBAAiBvC,KAAKa,OAAS,SAC7CwB,EAAA,YAAAG,OAAAC,OAAA,CACEF,MAAOV,EAAS,aACJC,GAAW,OAAS9B,KAAKU,MAAQ,KAC7CgC,IAAMrC,GAAQL,KAAKqB,SAAWhB,GAC1B+B,EACApC,KAAKC,qBAERS,EACD2B,EAAA,QAAMM,KAAK,YAAYC,KAAK,U"}
@@ -1,2 +0,0 @@
1
- import{r as i,h as t,H as a,g as e}from"./p-18068237.js";import{c as s}from"./p-f074ef5b.js";import{C as o}from"./p-3b185c32.js";import{A as n,i as r,D as l,B as d,g as p,l as c,c as h,a as v,m as g}from"./p-ebe76390.js";import{I as m}from"./p-613aa265.js";const b=`<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">\n <path d="M0 0h24v24H0V0z" fill="none" />\n <path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z" />\n <title>menu icon</title>\n</svg>\n`;const u=':host{display:block;--side-navigation-position:fixed;--side-navigation-position-left:0;--side-navigation-position-top:var(--ic-space-xxl);--side-navigation-height:var(--ic-space-xxl);--sm-side-navigation-top-bar-height:3.5rem;--sm-side-navigation-collapsed-labels-width:6rem;--sm-side-navigation-expand-transition-duration:var(\n --ic-transition-duration-slow\n );--side-navigation-width:20rem;--sm-side-navigation-bottom-bar-height:3.5rem;z-index:var(--ic-z-index-side-navigation)}:host>*{box-sizing:border-box}.side-navigation{display:flex;flex-direction:column;width:var(--side-navigation-width);color:var(--ic-theme-text);position:var(--side-navigation-position);top:var(--side-navigation-position-top);left:calc(var(--side-navigation-width) * -1);bottom:0;background-color:var(--ic-theme-primary);z-index:var(--ic-z-index-side-navigation)}:host(.inline) .side-navigation{position:absolute;height:100%}:host(.anchor-right) .side-navigation{right:calc(var(--side-navigation-width) * -1)}.classification-spacing{margin-bottom:var(--ic-space-lg)}.navigation-list{padding:0;margin:0;list-style:none}.side-navigation-inner{background-color:var(--ic-theme-primary);display:flex;flex-direction:column;flex:1 1 0;overflow:auto}:host(.inline) .side-navigation-inner{flex:1}:host(.xs-menu-open) .side-navigation{transition:left var(--ic-easing-transition-slow);left:0}:host(.xs-menu-close) .side-navigation{left:calc(var(--side-navigation-width) * -1);transition:left var(--ic-easing-transition-slow)}:host(.xs-menu-close) .side-navigation>*{visibility:hidden}:host(.anchor-right.xs-menu-open) .side-navigation{right:0;left:auto}:host(.anchor-right.xs-menu-close) .side-navigation{right:calc(var(--side-navigation-width) * -1);left:auto;transition:right var(--ic-easing-transition-slow)}.bottom-wrapper{border-top:var(--ic-keyline-lighten);bottom:0;left:0;z-index:2;box-shadow:-0.188rem -0.188rem 0.5rem rgb(0 0 0 / 20%);background-color:var(--ic-theme-primary);display:flex;flex-direction:column}:host(.inline) .bottom-wrapper{position:sticky}:host(.dark) .bottom-wrapper{border-top:var(--ic-keyline-darken)}.top-bar{display:flex;flex-direction:row;align-items:center;min-height:var(--side-navigation-height);padding:var(--ic-space-xs);box-sizing:border-box;background-color:var(--ic-theme-primary);position:fixed;top:0;left:0;right:0;border-bottom:var(--ic-keyline-darken);box-shadow:var(--ic-elevation-overlay);z-index:2;overflow:hidden;visibility:visible}:host(.inline) .top-bar{position:absolute}.top-bar.dark a:focus{box-shadow:var(--ic-border-focus)}.top-bar.light{border-bottom:var(--ic-keyline-lighten)}.app-title-wrapper{display:flex;margin-left:var(--ic-space-xs);border-left:var(--ic-keyline-darken);padding-left:var(--ic-space-xxs);color:var(--ic-theme-text);align-items:center}.app-title-wrapper ic-typography h1{margin:0}@media screen and (min-width: 340px){.app-title-wrapper ic-typography{margin-left:var(--ic-space-xs)}}:host .title-link{display:flex;align-items:center;transition:box-shadow var(--ic-easing-transition-fast),\n background-color var(--ic-easing-transition-fast);text-decoration:none;padding:var(--ic-space-xxs);color:var(--ic-theme-text)}:host .title-link:visited,:host .title-link:active{color:var(--ic-theme-text)}slot[name="app-title"]::slotted(a),slot[name="app-icon"]::slotted(a){color:var(--ic-theme-text);outline:none;text-decoration:none}:host .title-link:hover{border-radius:var(--ic-border-radius);background-color:var(--ic-theme-hover)}:host .title-link:active{background-color:var(--ic-theme-active)}:host .title-link:focus,:host .title-link:focus-within{border-radius:var(--ic-border-radius);box-shadow:var(--ic-border-focus);outline:var(--ic-hc-focus-outline);background-color:transparent}:host .title-link ic-typography{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.app-title-wrapper ::slotted(svg){fill:var(--ic-theme-text)}.app-icon-container{display:none}.button-label{display:flex;align-items:center}.mobile-top-bar-menu-icon{display:flex}.menu-button{width:6.5rem}.app-status-wrapper{inset:0 var(--ic-space-sm) 0 3.5rem;width:auto;display:flex;gap:var(--ic-space-xs);padding:var(--ic-space-sm) 0;justify-content:flex-end;align-items:flex-end;pointer-events:none;height:-moz-fit-content;height:fit-content;margin:0 var(--ic-space-xs)}.app-status-wrapper .app-version{display:flex;overflow-wrap:break-word;padding-bottom:var(--ic-space-xxs)}.app-status-wrapper .app-status{display:flex;border-radius:1rem;background-color:var(--ic-theme-text);color:var(--ic-color-primary-text);padding:var(--ic-space-xxs) var(--ic-space-lg);min-width:1rem}.app-status-wrapper .app-status-text{overflow-wrap:break-word}:host(.dark) .app-status-wrapper .app-status{color:var(--ic-color-white-text)}.navigation-landmark-title{position:absolute;width:var(--ic-space-1px);height:var(--ic-space-1px);padding:0;margin:calc(-1 * var(--ic-space-1px));overflow:hidden}::slotted(ic-navigation-group){--navigation-group-height:2.75rem;--navigation-group-width:100%;--navigation-group-justify-content:space-between;--navigation-group-hover:var(--ic-theme-hover);--navigation-group-text-hover:var(--ic-theme-text);--navigation-item-child-height:3.5rem;--navigation-item-child-active:var(--ic-action-dark-bg-active);--navigation-item-child-color:var(--ic-theme-text);--navigation-group-expand-toggle-padding:0.25rem}::slotted(ic-navigation-item),::slotted(ic-navigation-group){--navigation-item-height:3.5rem;--navigation-item-width:auto;--navigation-item-justify-content:flex-start}.bottom-side-nav{position:relative;align-content:flex-end;min-height:var(--sm-side-navigation-top-bar-height)}.bottom-side-nav ic-divider{position:absolute;top:0;width:100%}.primary-navigation{flex:1;display:flex;flex-direction:column;overflow-y:auto;scrollbar-width:none}.primary-navigation::-webkit-scrollbar{display:none}.primary-navigation,.secondary-navigation{overflow-x:hidden}.bottom-side-nav .menu-expand-button{position:absolute;display:none}.menu-visibility-visible{visibility:visible;width:100%}@media screen and (min-width: 340px){.app-icon-container{display:flex}}@media screen and (min-width: 577px){:host{display:flex;flex-direction:column;height:100vh;position:var(--side-navigation-position);left:0;top:0;bottom:0}.app-icon-container{padding:var(--ic-space-xxs) 0}.top-bar{--side-navigation-height:var(--sm-side-navigation-top-bar-height);position:relative;padding:0;box-shadow:-0.188rem 0.188rem 0.5rem rgb(0 0 0 / 20%)}:host(.inline) .top-bar{position:sticky}:host(.anchor-right) .top-bar{box-shadow:0.188rem 0.188rem 0.5rem rgb(0 0 0 / 20%)}:host(.anchor-right) .bottom-wrapper{box-shadow:0.188rem -0.188rem 0.5rem rgb(0 0 0 / 20%)}.side-navigation,.top-bar{width:var(--sm-side-navigation-top-bar-height)}:host(.sm-collapsed){width:var(--sm-side-navigation-top-bar-height);transition:width var(--ic-easing-transition-slow)}:host(.sm-collapsed.collapsed-labels){width:var(--sm-side-navigation-collapsed-labels-width)}:host(.sm-expanded){width:var(--side-navigation-width);transition:width var(--ic-easing-transition-slow);box-shadow:var(--ic-elevation-overlay)}.side-navigation{--side-navigation-position-top:0;flex:1;position:relative;top:auto;left:auto;bottom:auto}:host(.inline) .side-navigation{position:relative}:host(.anchor-right) .side-navigation{left:auto;right:0}.app-title-wrapper{margin-left:0;border-left:none;padding:var(--ic-space-sm)}.app-title-wrapper ::slotted(svg){height:var(--ic-space-lg);width:var(--ic-space-lg)}.app-title-wrapper ic-typography{margin:calc(-1 * 0.281rem) 0 calc(-1 * 0.281rem) var(--ic-space-md);font-weight:var(--ic-font-weight-semibold)}:host(.sm-collapsed) .app-title-wrapper ic-typography{position:absolute;left:-9999px;opacity:0;transition:opacity var(--ic-easing-transition-slow)}:host(.sm-expanded) ic-typography{position:relative;left:0}:host(.sm-expanded) :is(.side-navigation,.top-bar){width:var(--side-navigation-width);transition:width var(--ic-easing-transition-slow)}:host(.sm-collapsed) :is(.side-navigation,.top-bar){width:var(--sm-side-navigation-top-bar-height);transition:width var(--ic-easing-transition-slow)}:host(.anchor-right.sm-expanded) :is(.side-navigation,.top-bar){left:auto;right:0}.app-status-wrapper,:host(.sm-collapsed) .app-status-wrapper{display:none;margin-left:0}:host(.sm-expanded) .app-status-wrapper{display:flex;max-width:16rem;margin-right:calc(var(--ic-space-xxxs) + var(--ic-space-xs))}.bottom-side-nav{justify-items:flex-end;align-items:flex-end;justify-content:flex-end;display:flex}.bottom-side-nav .menu-expand-button{padding-left:var(--ic-space-md);height:var(--sm-side-navigation-top-bar-height);width:100%;color:var(--ic-theme-text);background-color:transparent;outline:var(--ic-hc-focus-outline);border:none;cursor:pointer;display:flex;transition:var(--ic-easing-transition-fast)}:host(.sm-expanded) .bottom-side-nav .menu-expand-button{height:100%}.bottom-side-nav .menu-expand-button svg{justify-items:flex-start;align-self:center;display:inline-block;width:var(--ic-space-lg);height:var(--ic-space-lg)}.bottom-side-nav .menu-expand-button:hover{background-color:var(--ic-theme-hover)}:host .bottom-side-nav{outline:none}:host .bottom-side-nav .menu-expand-button:focus{box-shadow:var(--ic-border-focus-inset);border-radius:var(--ic-border-radius-inset);background-color:transparent}:host(.sm-collapsed) .bottom-side-nav .menu-expand-button svg{transform:scaleX(1);transition:transform var(--ic-easing-transition-slow)}:host(.sm-expanded) .bottom-side-nav .menu-expand-button svg{transform:scaleX(-1);transition:transform var(--ic-easing-transition-slow);align-self:flex-end;margin-bottom:0.875rem}:host(.anchor-right.sm-collapsed) .bottom-side-nav .menu-expand-button svg{transform:scaleX(-1)}:host(.anchor-right.sm-expanded) .bottom-side-nav .menu-expand-button svg{transform:scaleX(1)}:host(.sm-collapsed) ::slotted(ic-navigation-item){--navigation-item-label-opacity:1}:host(.sm-collapsed) ::slotted(ic-navigation-item),:host(.sm-collapsed) ::slotted(ic-navigation-group){--navigation-item-label-opacity:0}:host(.sm-expanded) ::slotted(ic-navigation-item),:host(.sm-expanded) ::slotted(ic-navigation-group){--navigation-item-label-opacity:1}:host(.sm-collapsed) ::slotted(ic-navigation-group){--navigation-group-title-position:absolute;--navigation-group-title-position-left:-9999px;--navigation-group-title-opacity:none}:host(.sm-expanded) ::slotted(ic-navigation-group){--navigation-group-title-position:relative;--navigation-group-title-position-left:0;--navigation-group-expand-toggle-padding:0.25rem;--navigation-group-title-opacity:flex}:host(.sm-collapsed.collapsed-labels) .side-navigation,:host(.sm-collapsed.collapsed-labels) .top-bar{width:var(--sm-side-navigation-collapsed-labels-width)}:host(.sm-collapsed.collapsed-labels) .menu-expand-button{padding:0}:host(.sm-collapsed.collapsed-labels) .app-title-wrapper{width:100%;justify-content:center}:host(.sm-collapsed.collapsed-labels) ::slotted(ic-navigation-group){--navigation-group-justify-content:center;--navigation-item-label-opacity:1;--navigation-group-item-min-width:100%;--navigation-group-expand-toggle-padding:1rem}:host(.collapsed-labels) .bottom-side-nav .menu-expand-button{justify-content:center}:host .collapsed-icon-labels-start{visibility:hidden;opacity:0}:host .collapsed-icon-labels-end{visibility:visible;opacity:1;transition:visibility 0s, opacity var(--ic-easing-transition-slow)}}@media screen and (min-width: 993px){:host{position:sticky;left:auto;top:0;bottom:0}:host(.sm-expanded){box-shadow:none}}@media (forced-colors: active){.side-navigation,.top-bar{border-right:var(--ic-hc-border)}slot[name="app-icon"]::slotted(svg){fill:currentcolor}}';const x=class{constructor(a){i(this,a);this.ANIMATION_DURATION=parseInt(n("--ic-transition-duration-slow"))||0;this.IC_NAVIGATION_ITEM="ic-navigation-item";this.resizeObserver=null;this.COLLAPSED_ICON_LABELS_END="collapsed-icon-labels-end";this.COLLAPSED_ICON_LABELS_START="collapsed-icon-labels-start";this.emitSideNavigationExpanded=i=>{const t=new CustomEvent("sideNavExpanded",{detail:{sideNavExpanded:i.sideNavExpanded,sideNavMobile:i.sideNavMobile}});this.el.dispatchEvent(t)};this.toggleMenu=()=>{this.menuOpen=!this.menuOpen;this.setMobileMenuAriaAttributes(this.menuOpen);this.arrangeSlottedNavigationItem(this.menuOpen);this.setToggleMenuFlyoutMenuVisibility(this.menuOpen);this.emitSideNavigationExpanded({sideNavExpanded:this.menuOpen,sideNavMobile:true})};this.setToggleMenuFlyoutMenuVisibility=i=>{const t=this.el.shadowRoot.querySelector("#side-navigation");const a=t.querySelector(".side-navigation-inner");const e=t.querySelector(".bottom-wrapper");const s="menu-visibility-visible";if(i){e.classList.add(s);a.classList.add(s)}else{setTimeout((()=>{a.classList.remove(s);e.classList.remove(s)}),this.ANIMATION_DURATION)}};this.setMobileMenuAriaAttributes=i=>{const t=this.el.shadowRoot.querySelector("#menu-button").shadowRoot.querySelector("button");if(i){t.setAttribute("aria-expanded","true");t.setAttribute("aria-label","Close navigation menu")}else{t.setAttribute("aria-expanded","false");t.setAttribute("aria-label","Open navigation menu")}};this.setAndRemoveNoWrapAfterMenuExpanded=()=>{const i=this.el.shadowRoot.querySelector(".title-link ic-typography");i.classList.add("ic-typography-no-wrap");setTimeout((()=>{i.classList.remove("ic-typography-no-wrap")}),this.ANIMATION_DURATION)};this.toggleMenuExpanded=()=>{this.menuExpanded=!this.menuExpanded;if(this.menuExpanded){this.setAndRemoveNoWrapAfterMenuExpanded()}this.arrangeSlottedNavigationItem(this.menuExpanded);this.displayTooltipWithExpandedLongLabel(this.menuExpanded);if(this.collapsedIconLabels){this.animateCollapsedIconLabels()}this.setExpandedButtonHeight();this.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded})};this.arrangeSlottedNavigationItem=i=>{const t=this.el.querySelectorAll("ic-navigation-item");t.forEach((t=>{const a=r(t,"navigation-item");if(a){const a=t.querySelector("[slot='navigation-item']");const e=document.createElement("div");const s=a.querySelector("svg");const o=t.textContent.trim();const n=document.createElement("ic-typography");n.classList.add("ic-typography-label","hydrated","navigation-item-side-nav-slotted-text");e.style.height="var(--ic-space-lg)";e.append(s);a.textContent="";n.textContent=o;a.append(e);a.append(n);if(this.collapsedIconLabels){this.styleSlottedCollapsedIconLabels(i,n)}else{this.styleSlottedIconLabels(i,n)}}}))};this.styleSlottedCollapsedIconLabels=(i,t)=>{if(i){t.style.marginTop="0";t.style.whiteSpace="nowrap";t.style.overflow="hidden";t.style.textOverflow="ellipsis"}else{t.style.marginTop="10px";t.style.whiteSpace="nowrap";t.style.overflow="hidden";t.style.textOverflow="ellipsis"}};this.setExpandedButtonHeight=()=>{const i=this.el.shadowRoot.querySelector("#side-navigation > .bottom-wrapper > .bottom-side-nav > .app-status-wrapper");if(i.offsetHeight!==0){this.el.style.setProperty("--sm-side-navigation-bottom-bar-height",`${i.offsetHeight}px`)}};this.styleSlottedIconLabels=(i,t)=>{if(i){t.style.opacity="1";t.style.visibility="visible";t.style.transition="visibility 0s, opacity var(--ic-easing-transition-slow)"}else{t.style.opacity="0";t.style.visibility="hidden";t.style.transition="visibility 0s, opacity var(--ic-easing-transition-slow)"}};this.transitionHandler=i=>{const t=this.el.shadowRoot.querySelector(".primary-navigation");const a=this.el.shadowRoot.querySelector(".bottom-wrapper > .secondary-navigation");const e=i==="start"?this.COLLAPSED_ICON_LABELS_END:this.COLLAPSED_ICON_LABELS_START;const s=i==="start"?this.COLLAPSED_ICON_LABELS_START:this.COLLAPSED_ICON_LABELS_END;if(t){t.classList.remove(e);t.classList.add(s)}if(a){a.classList.remove(e);a.classList.add(s)}};this.transitionEndHandler=()=>{this.transitionHandler("end")};this.animateCollapsedIconLabels=()=>{this.transitionHandler("start");this.transitionEndHandler();this.el.addEventListener("transitionend",this.transitionEndHandler)};this.paddingIconWidth=i=>{const t=i[0].shadowRoot&&(i[0].shadowRoot.querySelector("ic-tooltip a")||i[0].shadowRoot.querySelector("ic-tooltip div"))||i[0].querySelector("a")||i[0].querySelector("div");const a=i[0].querySelector("svg");const e={gap:window.getComputedStyle(t).gap,iconWidth:window.getComputedStyle(a).width,paddingLeft:window.getComputedStyle(t).paddingLeft};return Object.values(e).reduce(((i,t)=>i+=parseInt(t)),0)};this.displayTooltipWithExpandedLongLabel=i=>{let t;if(i){t=setTimeout((()=>{const i=this.el.clientWidth;const t=Array.from(this.el.querySelectorAll(this.IC_NAVIGATION_ITEM));const a=t.length?this.paddingIconWidth(t):0;t.forEach((t=>{var e,s;const o=((e=t.shadowRoot&&t.shadowRoot.querySelector("ic-tooltip .link ic-typography.ic-typography-label"))===null||e===void 0?void 0:e.scrollWidth)||((s=t.querySelector("ic-typography.ic-typography-label"))===null||s===void 0?void 0:s.scrollWidth);if(o>i-a){t.setAttribute("display-navigation-tooltip","true")}}))}),this.ANIMATION_DURATION)}else{clearTimeout(t);const i=Array.from(this.el.querySelectorAll(this.IC_NAVIGATION_ITEM));i.forEach((i=>{i.setAttribute("display-navigation-tooltip","false")}))}};this.setMenuExpanded=i=>{this.menuExpanded=i};this.setParentPaddingTop=i=>{this.el.parentElement.style.setProperty("padding-top",i)};this.setParentPaddingLeft=i=>{this.el.parentElement.style.setProperty("padding-left",i)};this.renderAppTitle=i=>{const a=this.deviceSize<=l.S&&!d(this.shortAppTitle);return t("ic-typography",{variant:a||i?"subtitle-small":"h3","aria-label":a?`${this.appTitle} (${this.shortAppTitle})`:undefined},t("h1",null,a?this.shortAppTitle:this.appTitle))};this.resizeObserverCallback=i=>{this.deviceSize=i;if(i===l.S){if(!this.disableAutoParentStyling){const i=this.el.shadowRoot.querySelector(".top-bar").scrollHeight;this.setParentPaddingTop(`${i}px`);this.setParentPaddingLeft("0");if(this.inline){this.el.parentElement.style.setProperty("height",`calc(100% - ${i}px)`)}}this.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded,sideNavMobile:true})}else{if(!this.disableAutoParentStyling){this.setParentPaddingTop("0");this.el.parentElement.style.setProperty("height","100%")}this.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded,sideNavMobile:false})}let t;if(this.collapsedIconLabels){t="calc(var(--ic-space-xxl) * 2)"}else{t="calc(var(--ic-space-xxl) + var(--ic-space-xs))"}if(i>l.L){if(!this.disableAutoParentStyling){this.setParentPaddingTop("0");this.setParentPaddingLeft("0")}}else if(i>l.S&&i<=l.M&&this.static&&!this.disableAutoParentStyling){this.setParentPaddingLeft(t)}else if(i>l.S&&i<=l.L&&!this.disableAutoParentStyling){if(this.static&&this.menuExpanded){this.setParentPaddingLeft("calc(var(--ic-space-xl) * 10)")}else{this.setParentPaddingLeft(t)}}};this.runResizeObserver=()=>{this.resizeObserver=new ResizeObserver((()=>{const i=p();this.deviceSizeAppTitle=i;this.resizeObserverCallback(i)}));this.resizeObserver.observe(document.body,{box:"content-box"})};this.setCollapsedIconLabels=()=>{const i=Array.from(this.el.querySelectorAll(this.IC_NAVIGATION_ITEM));i.forEach((i=>{i.setAttribute("collapsed-icon-label","true")}))};this.styleSlottedCollapsedIconLabel=()=>{const i=Array.from(this.el.querySelectorAll(".navigation-item-side-nav-slotted-text"));i.forEach((i=>{var t,a;if((a=(t=i===null||i===void 0?void 0:i.parentElement)===null||t===void 0?void 0:t.parentElement)===null||a===void 0?void 0:a.classList.contains("navigation-item-side-nav-collapsed-with-label")){i.style.whiteSpace="nowrap";i.style.overflow="hidden";i.style.textOverflow="ellipsis";i.style.marginTop="10px"}}))};this.renderTopBar=({isSDevice:i,foregroundColor:a,menuOpen:e,href:o,isAppNameSubtitleVariant:n})=>{const l=this.appTitle!==""&&this.appTitle!==undefined;const d=r(this.el,"app-title")?"div":"a";const p=d=="a"&&{href:o};return t("div",{class:{"top-bar":true,[this.foregroundColor]:true}},i&&t("nav",{"aria-labelledby":"menu-navigation-toggle-button-landmark","aria-hidden":"false"},t("ic-button",{"aria-label":"Open navigation menu",class:"menu-button",id:"menu-button",variant:"secondary",size:"small","full-width":"true",appearance:a,onClick:this.toggleMenu,"aria-owns":"side-navigation","aria-haspopup":"true","aria-expanded":"false"},t("span",{class:"mobile-top-bar-menu-icon",slot:"icon",innerHTML:e?s:b}),e?"Close":"Menu"),t("span",{id:"menu-navigation-toggle-button-landmark",class:"navigation-landmark-title","aria-hidden":"true"},"Navigation menu toggle button")),t("div",{class:"app-title-wrapper"},(l||r(this.el,"app-title"))&&t(d,Object.assign({},p,{class:"title-link"}),t("div",{class:"app-icon-container","aria-hidden":"true"},t("slot",{name:"app-icon"})),r(this.el,"app-title")?t("slot",{name:"app-title"}):this.renderAppTitle(n))))};this.deviceSize=l.XL;this.deviceSizeAppTitle=l.S;this.foregroundColor=c();this.hasSecondaryNavigation=false;this.menuExpanded=false;this.menuOpen=false;this.appTitle=undefined;this.collapsedIconLabels=false;this.disableAutoParentStyling=false;this.expanded=false;this.href="/";this.inline=false;this.shortAppTitle="";this.static=false;this.status=undefined;this.version=undefined}componentWillLoad(){if(this.expanded){this.setMenuExpanded(true)}else{this.setMenuExpanded(false)}if(this.collapsedIconLabels){this.setCollapsedIconLabels()}this.hasSecondaryNavigation=r(this.el,"secondary-navigation")}componentDidLoad(){this.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded,sideNavMobile:this.deviceSize===l.S});h(this.runResizeObserver);this.styleSlottedCollapsedIconLabel();this.arrangeSlottedNavigationItem(this.menuExpanded);this.displayTooltipWithExpandedLongLabel(this.menuExpanded);this.setExpandedButtonHeight();!r(this.el,"app-title")&&v([{prop:this.appTitle,propName:"app-title"}],"Side Navigation")}disconnectedCallback(){if(this.resizeObserver!==null){this.resizeObserver.disconnect()}this.el.removeEventListener("transitionend",this.transitionEndHandler)}themeChangeHandler(i){const t=i.detail;this.foregroundColor=t.mode}render(){const{appTitle:i,menuOpen:e,foregroundColor:s,menuExpanded:n,href:d,status:p,version:c,collapsedIconLabels:h,inline:v}=this;const b=this.deviceSize===l.S;const u=this.deviceSize===l.M;const x=this.deviceSize>=l.L;const f=this.deviceSizeAppTitle===l.S;const w=u||x&&!this.static;const y={isSDevice:b,foregroundColor:s,menuOpen:e,href:d,isAppNameSubtitleVariant:f,appTitle:i};return t(a,{class:{"xs-menu-open":e&&b,"xs-menu-close":!e&&b,"sm-collapsed":!b&&!n,"sm-expanded":!b&&n,[m.Dark]:s===m.Dark,["collapsed-labels"]:!b&&!n&&h,["inline"]:v}},b&&this.renderTopBar(Object.assign({},y)),t("div",{class:"side-navigation",id:"side-navigation"},!b&&this.renderTopBar(Object.assign({},y)),t("div",{class:"side-navigation-inner"},r(this.el,"primary-navigation")&&t("nav",{class:"primary-navigation","aria-labelledby":"primary-navigation-landmark"},t("span",{"aria-hidden":"true",class:"navigation-landmark-title",id:"primary-navigation-landmark"},"Primary"),t("ul",{class:"navigation-list"},t("slot",{name:"primary-navigation"})))),t("div",{class:{["bottom-wrapper"]:true,["classification-spacing"]:g()}},r(this.el,"secondary-navigation")&&t("nav",{class:"secondary-navigation","aria-labelledby":"secondary-navigation-landmark"},t("span",{"aria-hidden":"true",class:"navigation-landmark-title",id:"secondary-navigation-landmark"},"Secondary"),t("ul",{class:"navigation-list"},t("slot",{name:"secondary-navigation"}))),t("div",{class:"bottom-side-nav"},this.hasSecondaryNavigation&&t("ic-divider",null),w&&t("button",{class:"menu-expand-button",innerHTML:o,onClick:this.toggleMenuExpanded,"aria-label":`${n?"Collapse":"Expand"} side navigation`}),t("div",{class:"app-status-wrapper"},p!==""&&t("div",{class:{["app-status"]:true}},t("ic-typography",{"aria-label":"app tag",variant:"label-uppercase",class:"app-status-text"},p)),c!==""&&t("ic-typography",{variant:"label",class:"app-version","aria-label":"app version"},c))))))}get el(){return e(this)}};x.style=u;export{x as ic_side_navigation};
2
- //# sourceMappingURL=p-d78c90fe.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icSideNavigationCss","SideNavigation","this","ANIMATION_DURATION","parseInt","getCssProperty","IC_NAVIGATION_ITEM","resizeObserver","COLLAPSED_ICON_LABELS_END","COLLAPSED_ICON_LABELS_START","emitSideNavigationExpanded","objDetails","event","CustomEvent","detail","sideNavExpanded","sideNavMobile","el","dispatchEvent","toggleMenu","menuOpen","setMobileMenuAriaAttributes","arrangeSlottedNavigationItem","setToggleMenuFlyoutMenuVisibility","sideNav","shadowRoot","querySelector","sideNavInner","bottomWrapper","menuVisibilityVisible","classList","add","setTimeout","remove","nativeButton","setAttribute","setAndRemoveNoWrapAfterMenuExpanded","appTitle","toggleMenuExpanded","menuExpanded","displayTooltipWithExpandedLongLabel","collapsedIconLabels","animateCollapsedIconLabels","setExpandedButtonHeight","navItems","querySelectorAll","forEach","navItem","hasUsedSlot","isSlotUsed","navItemSlot","iconWrapper","document","createElement","icon","label","textContent","trim","icTypography","style","height","append","styleSlottedCollapsedIconLabels","styleSlottedIconLabels","marginTop","whiteSpace","overflow","textOverflow","appStatusWrapper","offsetHeight","setProperty","opacity","visibility","transition","transitionHandler","type","primaryNavigationWrapper","secondaryNavigationWrapper","classToRemove","classToAdd","transitionEndHandler","addEventListener","paddingIconWidth","navItemLink","navItemSVG","navStyles","gap","window","getComputedStyle","iconWidth","width","paddingLeft","Object","values","reduce","prev","curr","timer","sideNavWidth","clientWidth","navigationItems","Array","from","paddingIconDelta","length","navigationItem","icTypographyScrollWidth","_a","scrollWidth","_b","clearTimeout","setMenuExpanded","expanded","setParentPaddingTop","value","parentElement","setParentPaddingLeft","renderAppTitle","isAppNameSubtitleVariant","displayShortAppTitle","deviceSize","DEVICE_SIZES","S","isEmptyString","shortAppTitle","h","variant","undefined","resizeObserverCallback","currSize","disableAutoParentStyling","topBarHeight","scrollHeight","inline","L","M","static","runResizeObserver","ResizeObserver","getCurrentDeviceSize","deviceSizeAppTitle","observe","body","box","setCollapsedIconLabels","styleSlottedCollapsedIconLabel","dynamicSlottedIcTypographyComps","contains","renderTopBar","isSDevice","foregroundColor","href","hasTitle","Component","attrs","class","id","size","appearance","onClick","slot","innerHTML","closeIcon","menuIcon","assign","name","XL","getThemeForegroundColor","componentWillLoad","hasSecondaryNavigation","componentDidLoad","checkResizeObserver","onComponentRequiredPropUndefined","prop","propName","disconnectedCallback","disconnect","removeEventListener","themeChangeHandler","ev","theme","mode","render","status","version","isMdDevice","isLgDevice","displayExpandBtn","topBarProps","Host","IcThemeForegroundEnum","Dark","hasClassificationBanner","chevronIcon"],"sources":["src/components/ic-side-navigation/ic-side-navigation.css?tag=ic-side-navigation&encapsulation=shadow","src/components/ic-side-navigation/ic-side-navigation.tsx"],"sourcesContent":["/**\n * @prop --ic-z-index-side-navigation: z-index of side navigation panel\n */\n\n:host {\n display: block;\n\n --side-navigation-position: fixed;\n --side-navigation-position-left: 0;\n --side-navigation-position-top: var(--ic-space-xxl);\n --side-navigation-height: var(--ic-space-xxl);\n --sm-side-navigation-top-bar-height: 3.5rem;\n --sm-side-navigation-collapsed-labels-width: 6rem;\n --sm-side-navigation-expand-transition-duration: var(\n --ic-transition-duration-slow\n );\n --side-navigation-width: 20rem;\n --sm-side-navigation-bottom-bar-height: 3.5rem;\n\n z-index: var(--ic-z-index-side-navigation);\n}\n\n:host > * {\n box-sizing: border-box;\n}\n\n.side-navigation {\n display: flex;\n flex-direction: column;\n width: var(--side-navigation-width);\n color: var(--ic-theme-text);\n position: var(--side-navigation-position);\n top: var(--side-navigation-position-top);\n left: calc(var(--side-navigation-width) * -1);\n bottom: 0;\n background-color: var(--ic-theme-primary);\n z-index: var(--ic-z-index-side-navigation);\n}\n\n:host(.inline) .side-navigation {\n position: absolute;\n height: 100%;\n}\n\n:host(.anchor-right) .side-navigation {\n right: calc(var(--side-navigation-width) * -1);\n}\n\n.classification-spacing {\n margin-bottom: var(--ic-space-lg);\n}\n\n.navigation-list {\n padding: 0;\n margin: 0;\n list-style: none;\n}\n\n.side-navigation-inner {\n background-color: var(--ic-theme-primary);\n display: flex;\n flex-direction: column;\n flex: 1 1 0;\n overflow: auto;\n}\n\n:host(.inline) .side-navigation-inner {\n flex: 1;\n}\n\n:host(.xs-menu-open) .side-navigation {\n transition: left var(--ic-easing-transition-slow);\n left: 0;\n}\n\n:host(.xs-menu-close) .side-navigation {\n left: calc(var(--side-navigation-width) * -1);\n transition: left var(--ic-easing-transition-slow);\n}\n\n:host(.xs-menu-close) .side-navigation > * {\n visibility: hidden;\n}\n\n:host(.anchor-right.xs-menu-open) .side-navigation {\n right: 0;\n left: auto;\n}\n\n:host(.anchor-right.xs-menu-close) .side-navigation {\n right: calc(var(--side-navigation-width) * -1);\n left: auto;\n transition: right var(--ic-easing-transition-slow);\n}\n\n.bottom-wrapper {\n border-top: var(--ic-keyline-lighten);\n bottom: 0;\n left: 0;\n z-index: 2;\n box-shadow: -0.188rem -0.188rem 0.5rem rgb(0 0 0 / 20%);\n background-color: var(--ic-theme-primary);\n display: flex;\n flex-direction: column;\n}\n\n:host(.inline) .bottom-wrapper {\n position: sticky;\n}\n\n:host(.dark) .bottom-wrapper {\n border-top: var(--ic-keyline-darken);\n}\n\n/* Mobile Top Bar */\n\n.top-bar {\n display: flex;\n flex-direction: row;\n align-items: center;\n min-height: var(--side-navigation-height);\n padding: var(--ic-space-xs);\n box-sizing: border-box;\n background-color: var(--ic-theme-primary);\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n border-bottom: var(--ic-keyline-darken);\n box-shadow: var(--ic-elevation-overlay);\n z-index: 2;\n overflow: hidden;\n visibility: visible;\n}\n\n:host(.inline) .top-bar {\n position: absolute;\n}\n\n.top-bar.dark a:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n.top-bar.light {\n border-bottom: var(--ic-keyline-lighten);\n}\n\n.app-title-wrapper {\n display: flex;\n margin-left: var(--ic-space-xs);\n border-left: var(--ic-keyline-darken);\n padding-left: var(--ic-space-xxs);\n color: var(--ic-theme-text);\n align-items: center;\n}\n\n.app-title-wrapper ic-typography h1 {\n margin: 0;\n}\n\n@media screen and (min-width: 340px) {\n .app-title-wrapper ic-typography {\n margin-left: var(--ic-space-xs);\n }\n}\n\n:host .title-link {\n display: flex;\n align-items: center;\n transition: box-shadow var(--ic-easing-transition-fast),\n background-color var(--ic-easing-transition-fast);\n text-decoration: none;\n padding: var(--ic-space-xxs);\n color: var(--ic-theme-text);\n}\n\n:host .title-link:visited,\n:host .title-link:active {\n color: var(--ic-theme-text);\n}\n\nslot[name=\"app-title\"]::slotted(a),\nslot[name=\"app-icon\"]::slotted(a) {\n color: var(--ic-theme-text);\n outline: none;\n text-decoration: none;\n}\n\n:host .title-link:hover {\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-theme-hover);\n}\n\n:host .title-link:active {\n background-color: var(--ic-theme-active);\n}\n\n:host .title-link:focus,\n:host .title-link:focus-within {\n border-radius: var(--ic-border-radius);\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n background-color: transparent;\n}\n\n:host .title-link ic-typography {\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n}\n\n.app-title-wrapper ::slotted(svg) {\n fill: var(--ic-theme-text);\n}\n\n.app-icon-container {\n display: none;\n}\n\n.button-label {\n display: flex;\n align-items: center;\n}\n\n.mobile-top-bar-menu-icon {\n display: flex;\n}\n\n.menu-button {\n width: 6.5rem;\n}\n\n.app-status-wrapper {\n inset: 0 var(--ic-space-sm) 0 3.5rem;\n width: auto;\n display: flex;\n gap: var(--ic-space-xs);\n padding: var(--ic-space-sm) 0;\n justify-content: flex-end;\n align-items: flex-end;\n pointer-events: none;\n height: fit-content;\n margin: 0 var(--ic-space-xs);\n}\n\n.app-status-wrapper .app-version {\n display: flex;\n overflow-wrap: break-word;\n padding-bottom: var(--ic-space-xxs);\n}\n\n.app-status-wrapper .app-status {\n display: flex;\n border-radius: 1rem;\n background-color: var(--ic-theme-text);\n color: var(--ic-color-primary-text);\n padding: var(--ic-space-xxs) var(--ic-space-lg);\n min-width: 1rem;\n}\n\n.app-status-wrapper .app-status-text {\n overflow-wrap: break-word;\n}\n\n:host(.dark) .app-status-wrapper .app-status {\n color: var(--ic-color-white-text);\n}\n\n.navigation-landmark-title {\n position: absolute;\n width: var(--ic-space-1px);\n height: var(--ic-space-1px);\n padding: 0;\n margin: calc(-1 * var(--ic-space-1px));\n overflow: hidden;\n}\n\n/* Navigation Group */\n\n::slotted(ic-navigation-group) {\n --navigation-group-height: 2.75rem;\n --navigation-group-width: 100%;\n --navigation-group-justify-content: space-between;\n --navigation-group-hover: var(--ic-theme-hover);\n --navigation-group-text-hover: var(--ic-theme-text);\n --navigation-item-child-height: 3.5rem;\n --navigation-item-child-active: var(--ic-action-dark-bg-active);\n --navigation-item-child-color: var(--ic-theme-text);\n --navigation-group-expand-toggle-padding: 0.25rem;\n}\n\n/* Navigation Items */\n\n::slotted(ic-navigation-item),\n::slotted(ic-navigation-group) {\n --navigation-item-height: 3.5rem;\n --navigation-item-width: auto;\n --navigation-item-justify-content: flex-start;\n}\n\n/* Toggle Chevron */\n\n.bottom-side-nav {\n position: relative;\n align-content: flex-end;\n min-height: var(--sm-side-navigation-top-bar-height);\n}\n\n.bottom-side-nav ic-divider {\n position: absolute;\n top: 0;\n width: 100%;\n}\n\n.primary-navigation {\n flex: 1;\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n\n /* Hide scrollbar when required but keep functionality */\n scrollbar-width: none;\n}\n\n.primary-navigation::-webkit-scrollbar {\n display: none;\n}\n\n.primary-navigation,\n.secondary-navigation {\n overflow-x: hidden;\n}\n\n.bottom-side-nav .menu-expand-button {\n position: absolute;\n display: none;\n}\n\n.menu-visibility-visible {\n visibility: visible;\n width: 100%;\n}\n\n/* Media Queries */\n\n@media screen and (min-width: 340px) {\n .app-icon-container {\n display: flex;\n }\n}\n\n@media screen and (min-width: 577px) {\n :host {\n display: flex;\n flex-direction: column;\n height: 100vh;\n position: var(--side-navigation-position);\n left: 0;\n top: 0;\n bottom: 0;\n }\n\n .app-icon-container {\n padding: var(--ic-space-xxs) 0;\n }\n\n .top-bar {\n --side-navigation-height: var(--sm-side-navigation-top-bar-height);\n\n position: relative;\n padding: 0;\n box-shadow: -0.188rem 0.188rem 0.5rem rgb(0 0 0 / 20%);\n }\n\n :host(.inline) .top-bar {\n position: sticky;\n }\n\n :host(.anchor-right) .top-bar {\n box-shadow: 0.188rem 0.188rem 0.5rem rgb(0 0 0 / 20%);\n }\n\n :host(.anchor-right) .bottom-wrapper {\n box-shadow: 0.188rem -0.188rem 0.5rem rgb(0 0 0 / 20%);\n }\n\n .side-navigation,\n .top-bar {\n width: var(--sm-side-navigation-top-bar-height);\n }\n\n :host(.sm-collapsed) {\n width: var(--sm-side-navigation-top-bar-height);\n transition: width var(--ic-easing-transition-slow);\n }\n\n :host(.sm-collapsed.collapsed-labels) {\n width: var(--sm-side-navigation-collapsed-labels-width);\n }\n\n :host(.sm-expanded) {\n width: var(--side-navigation-width);\n transition: width var(--ic-easing-transition-slow);\n box-shadow: var(--ic-elevation-overlay);\n }\n\n .side-navigation {\n --side-navigation-position-top: 0;\n\n flex: 1;\n position: relative;\n top: auto;\n left: auto;\n bottom: auto;\n }\n\n :host(.inline) .side-navigation {\n position: relative;\n }\n\n :host(.anchor-right) .side-navigation {\n left: auto;\n right: 0;\n }\n\n .app-title-wrapper {\n margin-left: 0;\n border-left: none;\n padding: var(--ic-space-sm);\n }\n\n .app-title-wrapper ::slotted(svg) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n }\n\n .app-title-wrapper ic-typography {\n margin: calc(-1 * 0.281rem) 0 calc(-1 * 0.281rem) var(--ic-space-md);\n font-weight: var(--ic-font-weight-semibold);\n }\n\n :host(.sm-collapsed) .app-title-wrapper ic-typography {\n position: absolute;\n left: -9999px;\n opacity: 0;\n transition: opacity var(--ic-easing-transition-slow);\n }\n\n :host(.sm-expanded) ic-typography {\n position: relative;\n left: 0;\n }\n\n :host(.sm-expanded) :is(.side-navigation, .top-bar) {\n width: var(--side-navigation-width);\n transition: width var(--ic-easing-transition-slow);\n }\n\n :host(.sm-collapsed) :is(.side-navigation, .top-bar) {\n width: var(--sm-side-navigation-top-bar-height);\n transition: width var(--ic-easing-transition-slow);\n }\n\n :host(.anchor-right.sm-expanded) :is(.side-navigation, .top-bar) {\n left: auto;\n right: 0;\n }\n\n .app-status-wrapper,\n :host(.sm-collapsed) .app-status-wrapper {\n display: none;\n margin-left: 0;\n }\n\n :host(.sm-expanded) .app-status-wrapper {\n display: flex;\n max-width: 16rem;\n margin-right: calc(var(--ic-space-xxxs) + var(--ic-space-xs));\n }\n\n .bottom-side-nav {\n justify-items: flex-end;\n align-items: flex-end;\n justify-content: flex-end;\n display: flex;\n }\n\n .bottom-side-nav .menu-expand-button {\n padding-left: var(--ic-space-md);\n height: var(--sm-side-navigation-top-bar-height);\n width: 100%;\n color: var(--ic-theme-text);\n background-color: transparent;\n outline: var(--ic-hc-focus-outline);\n border: none;\n cursor: pointer;\n display: flex;\n transition: var(--ic-easing-transition-fast);\n }\n\n :host(.sm-expanded) .bottom-side-nav .menu-expand-button {\n height: 100%;\n }\n\n .bottom-side-nav .menu-expand-button svg {\n justify-items: flex-start;\n align-self: center;\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n }\n\n .bottom-side-nav .menu-expand-button:hover {\n background-color: var(--ic-theme-hover);\n }\n\n :host .bottom-side-nav {\n outline: none;\n }\n\n :host .bottom-side-nav .menu-expand-button:focus {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n background-color: transparent;\n }\n\n :host(.sm-collapsed) .bottom-side-nav .menu-expand-button svg {\n transform: scaleX(1);\n transition: transform var(--ic-easing-transition-slow);\n }\n\n :host(.sm-expanded) .bottom-side-nav .menu-expand-button svg {\n transform: scaleX(-1);\n transition: transform var(--ic-easing-transition-slow);\n align-self: flex-end;\n margin-bottom: 0.875rem;\n }\n\n :host(.anchor-right.sm-collapsed) .bottom-side-nav .menu-expand-button svg {\n transform: scaleX(-1);\n }\n\n :host(.anchor-right.sm-expanded) .bottom-side-nav .menu-expand-button svg {\n transform: scaleX(1);\n }\n\n :host(.sm-collapsed) ::slotted(ic-navigation-item) {\n --navigation-item-label-opacity: 1;\n }\n\n :host(.sm-collapsed) ::slotted(ic-navigation-item),\n :host(.sm-collapsed) ::slotted(ic-navigation-group) {\n --navigation-item-label-opacity: 0;\n }\n\n :host(.sm-expanded) ::slotted(ic-navigation-item),\n :host(.sm-expanded) ::slotted(ic-navigation-group) {\n --navigation-item-label-opacity: 1;\n }\n\n :host(.sm-collapsed) ::slotted(ic-navigation-group) {\n --navigation-group-title-position: absolute;\n --navigation-group-title-position-left: -9999px;\n --navigation-group-title-opacity: none;\n }\n\n :host(.sm-expanded) ::slotted(ic-navigation-group) {\n --navigation-group-title-position: relative;\n --navigation-group-title-position-left: 0;\n --navigation-group-expand-toggle-padding: 0.25rem;\n --navigation-group-title-opacity: flex;\n }\n\n :host(.sm-collapsed.collapsed-labels) .side-navigation,\n :host(.sm-collapsed.collapsed-labels) .top-bar {\n width: var(--sm-side-navigation-collapsed-labels-width);\n }\n\n :host(.sm-collapsed.collapsed-labels) .menu-expand-button {\n padding: 0;\n }\n\n :host(.sm-collapsed.collapsed-labels) .app-title-wrapper {\n width: 100%;\n justify-content: center;\n }\n\n :host(.sm-collapsed.collapsed-labels) ::slotted(ic-navigation-group) {\n --navigation-group-justify-content: center;\n --navigation-item-label-opacity: 1;\n --navigation-group-item-min-width: 100%;\n --navigation-group-expand-toggle-padding: 1rem;\n }\n\n :host(.collapsed-labels) .bottom-side-nav .menu-expand-button {\n justify-content: center;\n }\n\n :host .collapsed-icon-labels-start {\n visibility: hidden;\n opacity: 0;\n }\n\n :host .collapsed-icon-labels-end {\n visibility: visible;\n opacity: 1;\n transition: visibility 0s, opacity var(--ic-easing-transition-slow);\n }\n}\n\n@media screen and (min-width: 993px) {\n :host {\n position: sticky;\n left: auto;\n top: 0;\n bottom: 0;\n }\n\n :host(.sm-expanded) {\n box-shadow: none;\n }\n}\n\n@media (forced-colors: active) {\n .side-navigation,\n .top-bar {\n border-right: var(--ic-hc-border);\n }\n\n slot[name=\"app-icon\"]::slotted(svg) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Element,\n Listen,\n} from \"@stencil/core\";\n\nimport menuIcon from \"../../assets/hamburger-menu-icon.svg\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\nimport {\n getCurrentDeviceSize,\n DEVICE_SIZES,\n checkResizeObserver,\n isSlotUsed,\n getThemeForegroundColor,\n getCssProperty,\n hasClassificationBanner,\n onComponentRequiredPropUndefined,\n isEmptyString,\n} from \"../../utils/helpers\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcTopBar } from \"./ic-side-navigation.types\";\n\n/**\n * @slot app-icon - Content will be rendered adjacent to the app title at the very top of the side navigation.\n * @slot app-title - Handle routing by nesting a route in the app title.\n * @slot primary-navigation - Content will be rendered at the top of the side navigation.\n * @slot secondary-navigation - Content will be rendered at the bottom of the side navigation.\n */\n\n@Component({\n tag: \"ic-side-navigation\",\n styleUrl: \"ic-side-navigation.css\",\n shadow: true,\n})\nexport class SideNavigation {\n private ANIMATION_DURATION =\n parseInt(getCssProperty(\"--ic-transition-duration-slow\")) || 0;\n private IC_NAVIGATION_ITEM: string = \"ic-navigation-item\";\n private resizeObserver: ResizeObserver = null;\n private COLLAPSED_ICON_LABELS_END = \"collapsed-icon-labels-end\";\n private COLLAPSED_ICON_LABELS_START = \"collapsed-icon-labels-start\";\n\n @Element() el: HTMLIcSideNavigationElement;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n @State() deviceSizeAppTitle = DEVICE_SIZES.S;\n @State() foregroundColor: IcThemeForeground = getThemeForegroundColor();\n @State() hasSecondaryNavigation: boolean = false;\n @State() menuExpanded: boolean = false;\n @State() menuOpen: boolean = false;\n\n /**\n * The app title to be displayed. This is required, unless a slotted app title link is used.\n */\n @Prop() appTitle: string;\n\n /**\n * If `true`, the icon and label will appear when side navigation is collapsed.\n */\n @Prop() collapsedIconLabels: boolean = false;\n\n /**\n * If `true`, automatic parent wrapper styling will be disabled.\n */\n @Prop() disableAutoParentStyling: boolean = false;\n\n /**\n * If `true`, the side navigation will load in an expanded state.\n */\n @Prop() expanded: boolean = false;\n\n /**\n * The URL that the app title link points to.\n */\n @Prop() href: string = \"/\";\n\n /**\n * @internal If `true`, side navigation will be contained by its parent element.\n */\n @Prop() inline: boolean = false;\n\n /**\n * The short title of the app to be displayed at small screen sizes in place of the app title.\n */\n @Prop() shortAppTitle: string = \"\";\n\n /**\n * If `true`, the menu expand button will be removed (PLEASE NOTE: This takes effect on screen sizes 992px and above).\n */\n @Prop() static: boolean = false;\n\n /**\n * The status of the app to be displayed.\n */\n @Prop() status: string;\n\n /**\n * The version of the app to be displayed.\n */\n @Prop() version: string;\n\n componentWillLoad(): void {\n if (this.expanded) {\n this.setMenuExpanded(true);\n } else {\n this.setMenuExpanded(false);\n }\n\n if (this.collapsedIconLabels) {\n this.setCollapsedIconLabels();\n }\n\n this.hasSecondaryNavigation = isSlotUsed(this.el, \"secondary-navigation\");\n }\n\n componentDidLoad(): void {\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuExpanded,\n sideNavMobile: this.deviceSize === DEVICE_SIZES.S,\n });\n\n checkResizeObserver(this.runResizeObserver);\n this.styleSlottedCollapsedIconLabel();\n this.arrangeSlottedNavigationItem(this.menuExpanded);\n this.displayTooltipWithExpandedLongLabel(this.menuExpanded);\n\n this.setExpandedButtonHeight();\n\n !isSlotUsed(this.el, \"app-title\") &&\n onComponentRequiredPropUndefined(\n [{ prop: this.appTitle, propName: \"app-title\" }],\n \"Side Navigation\"\n );\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n\n this.el.removeEventListener(\"transitionend\", this.transitionEndHandler);\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.foregroundColor = theme.mode;\n }\n\n private emitSideNavigationExpanded = (objDetails: {\n sideNavExpanded: boolean;\n sideNavMobile?: boolean;\n }): void => {\n const event = new CustomEvent(\"sideNavExpanded\", {\n detail: {\n sideNavExpanded: objDetails.sideNavExpanded,\n sideNavMobile: objDetails.sideNavMobile,\n },\n });\n this.el.dispatchEvent(event);\n };\n\n private toggleMenu = (): void => {\n this.menuOpen = !this.menuOpen;\n this.setMobileMenuAriaAttributes(this.menuOpen);\n\n this.arrangeSlottedNavigationItem(this.menuOpen);\n\n this.setToggleMenuFlyoutMenuVisibility(this.menuOpen);\n\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuOpen,\n sideNavMobile: true,\n });\n };\n\n private setToggleMenuFlyoutMenuVisibility = (menuOpen: boolean) => {\n const sideNav = this.el.shadowRoot.querySelector(\n \"#side-navigation\"\n ) as HTMLDivElement;\n const sideNavInner = sideNav.querySelector(\n \".side-navigation-inner\"\n ) as HTMLElement;\n const bottomWrapper = sideNav.querySelector(\n \".bottom-wrapper\"\n ) as HTMLElement;\n\n const menuVisibilityVisible = \"menu-visibility-visible\";\n\n if (menuOpen) {\n bottomWrapper.classList.add(menuVisibilityVisible);\n sideNavInner.classList.add(menuVisibilityVisible);\n } else {\n setTimeout(() => {\n sideNavInner.classList.remove(menuVisibilityVisible);\n bottomWrapper.classList.remove(menuVisibilityVisible);\n }, this.ANIMATION_DURATION);\n }\n };\n\n private setMobileMenuAriaAttributes = (menuOpen: boolean) => {\n const nativeButton = this.el.shadowRoot\n .querySelector(\"#menu-button\")\n .shadowRoot.querySelector(\"button\");\n\n if (menuOpen) {\n nativeButton.setAttribute(\"aria-expanded\", \"true\");\n nativeButton.setAttribute(\"aria-label\", \"Close navigation menu\");\n } else {\n nativeButton.setAttribute(\"aria-expanded\", \"false\");\n nativeButton.setAttribute(\"aria-label\", \"Open navigation menu\");\n }\n };\n\n private setAndRemoveNoWrapAfterMenuExpanded = () => {\n const appTitle = this.el.shadowRoot.querySelector(\n \".title-link ic-typography\"\n );\n\n appTitle.classList.add(\"ic-typography-no-wrap\");\n\n setTimeout(() => {\n appTitle.classList.remove(\"ic-typography-no-wrap\");\n }, this.ANIMATION_DURATION);\n };\n\n private toggleMenuExpanded = (): void => {\n this.menuExpanded = !this.menuExpanded;\n\n if (this.menuExpanded) {\n this.setAndRemoveNoWrapAfterMenuExpanded();\n }\n\n this.arrangeSlottedNavigationItem(this.menuExpanded);\n\n this.displayTooltipWithExpandedLongLabel(this.menuExpanded);\n\n if (this.collapsedIconLabels) {\n this.animateCollapsedIconLabels();\n }\n\n this.setExpandedButtonHeight();\n this.emitSideNavigationExpanded({ sideNavExpanded: this.menuExpanded });\n };\n\n /**\n * In order to style nested slotted elements (e.g. using React Router components), this method\n * rearranges the a tag and labels and adds inline styling expand/collaped animations as external CSS classes are not\n * do not take affect.\n * @param menuExpanded boolean - true or false depending on side navigation state\n */\n private arrangeSlottedNavigationItem = (menuExpanded?: boolean) => {\n const navItems = this.el.querySelectorAll(\"ic-navigation-item\");\n\n navItems.forEach((navItem) => {\n const hasUsedSlot = isSlotUsed(navItem, \"navigation-item\");\n\n if (hasUsedSlot) {\n const navItemSlot = navItem.querySelector(\"[slot='navigation-item']\");\n const iconWrapper = document.createElement(\"div\");\n const icon = navItemSlot.querySelector(\"svg\");\n const label = navItem.textContent.trim();\n const icTypography = document.createElement(\"ic-typography\");\n icTypography.classList.add(\n \"ic-typography-label\",\n \"hydrated\",\n \"navigation-item-side-nav-slotted-text\"\n );\n\n iconWrapper.style.height = \"var(--ic-space-lg)\";\n iconWrapper.append(icon);\n\n navItemSlot.textContent = \"\";\n\n icTypography.textContent = label;\n\n navItemSlot.append(iconWrapper);\n navItemSlot.append(icTypography);\n\n if (this.collapsedIconLabels) {\n this.styleSlottedCollapsedIconLabels(menuExpanded, icTypography);\n } else {\n this.styleSlottedIconLabels(menuExpanded, icTypography);\n }\n }\n });\n };\n\n private styleSlottedCollapsedIconLabels = (\n menuExpanded: boolean,\n icTypography: HTMLIcTypographyElement\n ) => {\n if (menuExpanded) {\n icTypography.style.marginTop = \"0\";\n icTypography.style.whiteSpace = \"nowrap\";\n icTypography.style.overflow = \"hidden\";\n icTypography.style.textOverflow = \"ellipsis\";\n } else {\n icTypography.style.marginTop = \"10px\";\n icTypography.style.whiteSpace = \"nowrap\";\n icTypography.style.overflow = \"hidden\";\n icTypography.style.textOverflow = \"ellipsis\";\n }\n };\n\n private setExpandedButtonHeight = () => {\n const appStatusWrapper = this.el.shadowRoot.querySelector(\n \"#side-navigation > .bottom-wrapper > .bottom-side-nav > .app-status-wrapper\"\n ) as HTMLDivElement;\n\n if (appStatusWrapper.offsetHeight !== 0) {\n this.el.style.setProperty(\n \"--sm-side-navigation-bottom-bar-height\",\n `${appStatusWrapper.offsetHeight}px`\n );\n }\n };\n\n private styleSlottedIconLabels = (\n menuExpanded: boolean,\n icTypography: HTMLSpanElement\n ) => {\n if (menuExpanded) {\n icTypography.style.opacity = \"1\";\n icTypography.style.visibility = \"visible\";\n icTypography.style.transition =\n \"visibility 0s, opacity var(--ic-easing-transition-slow)\";\n } else {\n icTypography.style.opacity = \"0\";\n icTypography.style.visibility = \"hidden\";\n icTypography.style.transition =\n \"visibility 0s, opacity var(--ic-easing-transition-slow)\";\n }\n };\n\n private transitionHandler = (type: string) => {\n const primaryNavigationWrapper = this.el.shadowRoot.querySelector(\n \".primary-navigation\"\n );\n\n const secondaryNavigationWrapper = this.el.shadowRoot.querySelector(\n \".bottom-wrapper > .secondary-navigation\"\n );\n\n const classToRemove =\n type === \"start\"\n ? this.COLLAPSED_ICON_LABELS_END\n : this.COLLAPSED_ICON_LABELS_START;\n\n const classToAdd =\n type === \"start\"\n ? this.COLLAPSED_ICON_LABELS_START\n : this.COLLAPSED_ICON_LABELS_END;\n\n if (primaryNavigationWrapper) {\n primaryNavigationWrapper.classList.remove(classToRemove);\n primaryNavigationWrapper.classList.add(classToAdd);\n }\n\n if (secondaryNavigationWrapper) {\n secondaryNavigationWrapper.classList.remove(classToRemove);\n secondaryNavigationWrapper.classList.add(classToAdd);\n }\n };\n\n private transitionEndHandler = () => {\n this.transitionHandler(\"end\");\n };\n\n private animateCollapsedIconLabels = () => {\n this.transitionHandler(\"start\");\n this.transitionEndHandler();\n\n this.el.addEventListener(\"transitionend\", this.transitionEndHandler);\n };\n\n private paddingIconWidth = (\n navItems: HTMLIcNavigationItemElement[]\n ): number => {\n const navItemLink =\n (navItems[0].shadowRoot &&\n (navItems[0].shadowRoot.querySelector(\"ic-tooltip a\") ||\n navItems[0].shadowRoot.querySelector(\"ic-tooltip div\"))) ||\n navItems[0].querySelector(\"a\") ||\n navItems[0].querySelector(\"div\");\n const navItemSVG = navItems[0].querySelector(\"svg\");\n\n const navStyles = {\n gap: window.getComputedStyle(navItemLink).gap,\n iconWidth: window.getComputedStyle(navItemSVG).width,\n paddingLeft: window.getComputedStyle(navItemLink).paddingLeft,\n };\n\n return Object.values(navStyles).reduce((prev, curr) => {\n return (prev += parseInt(curr));\n }, 0);\n };\n\n private displayTooltipWithExpandedLongLabel = (menuExpanded: boolean) => {\n let timer;\n\n if (menuExpanded) {\n timer = setTimeout(() => {\n const sideNavWidth = this.el.clientWidth;\n\n const navigationItems: HTMLIcNavigationItemElement[] = Array.from(\n this.el.querySelectorAll(this.IC_NAVIGATION_ITEM)\n );\n\n const paddingIconDelta = navigationItems.length\n ? this.paddingIconWidth(navigationItems)\n : 0;\n\n navigationItems.forEach(\n (navigationItem: HTMLIcNavigationItemElement) => {\n const icTypographyScrollWidth =\n (\n navigationItem.shadowRoot &&\n navigationItem.shadowRoot.querySelector(\n \"ic-tooltip .link ic-typography.ic-typography-label\"\n )\n )?.scrollWidth ||\n navigationItem.querySelector(\"ic-typography.ic-typography-label\")\n ?.scrollWidth;\n\n if (icTypographyScrollWidth > sideNavWidth - paddingIconDelta) {\n navigationItem.setAttribute(\"display-navigation-tooltip\", \"true\");\n }\n }\n );\n }, this.ANIMATION_DURATION);\n } else {\n clearTimeout(timer);\n\n const navigationItems: HTMLIcNavigationItemElement[] = Array.from(\n this.el.querySelectorAll(this.IC_NAVIGATION_ITEM)\n );\n navigationItems.forEach((navigationItem: HTMLIcNavigationItemElement) => {\n navigationItem.setAttribute(\"display-navigation-tooltip\", \"false\");\n });\n }\n };\n\n private setMenuExpanded = (expanded: boolean): void => {\n this.menuExpanded = expanded;\n };\n\n /**\n * As the mobile top bar is fixed, a padding top is required\n * to push main content down the height of the mobile top bar\n * @param value - padding-top css value\n */\n private setParentPaddingTop = (value: string) => {\n this.el.parentElement.style.setProperty(\"padding-top\", value);\n };\n\n private setParentPaddingLeft = (value: string) => {\n this.el.parentElement.style.setProperty(\"padding-left\", value);\n };\n\n private renderAppTitle = (isAppNameSubtitleVariant: boolean) => {\n const displayShortAppTitle =\n this.deviceSize <= DEVICE_SIZES.S && !isEmptyString(this.shortAppTitle);\n return (\n <ic-typography\n variant={\n displayShortAppTitle || isAppNameSubtitleVariant\n ? \"subtitle-small\"\n : \"h3\"\n }\n aria-label={\n displayShortAppTitle\n ? `${this.appTitle} (${this.shortAppTitle})`\n : undefined\n }\n >\n <h1>{displayShortAppTitle ? this.shortAppTitle : this.appTitle}</h1>\n </ic-typography>\n );\n };\n\n private resizeObserverCallback = (currSize: number) => {\n this.deviceSize = currSize;\n\n if (currSize === DEVICE_SIZES.S) {\n if (!this.disableAutoParentStyling) {\n const topBarHeight =\n this.el.shadowRoot.querySelector(\".top-bar\").scrollHeight;\n this.setParentPaddingTop(`${topBarHeight}px`);\n this.setParentPaddingLeft(\"0\");\n\n if (this.inline) {\n this.el.parentElement.style.setProperty(\n \"height\",\n `calc(100% - ${topBarHeight}px)`\n );\n }\n }\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuExpanded,\n sideNavMobile: true,\n });\n } else {\n if (!this.disableAutoParentStyling) {\n this.setParentPaddingTop(\"0\");\n this.el.parentElement.style.setProperty(\"height\", \"100%\");\n }\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuExpanded,\n sideNavMobile: false,\n });\n }\n\n let paddingLeft;\n\n if (this.collapsedIconLabels) {\n paddingLeft = \"calc(var(--ic-space-xxl) * 2)\";\n } else {\n paddingLeft = \"calc(var(--ic-space-xxl) + var(--ic-space-xs))\";\n }\n\n if (currSize > DEVICE_SIZES.L) {\n if (!this.disableAutoParentStyling) {\n this.setParentPaddingTop(\"0\");\n this.setParentPaddingLeft(\"0\");\n }\n } else if (\n currSize > DEVICE_SIZES.S &&\n currSize <= DEVICE_SIZES.M &&\n this.static &&\n !this.disableAutoParentStyling\n ) {\n this.setParentPaddingLeft(paddingLeft);\n } else if (\n currSize > DEVICE_SIZES.S &&\n currSize <= DEVICE_SIZES.L &&\n !this.disableAutoParentStyling\n ) {\n if (this.static && this.menuExpanded) {\n this.setParentPaddingLeft(\"calc(var(--ic-space-xl) * 10)\");\n } else {\n this.setParentPaddingLeft(paddingLeft);\n }\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.deviceSizeAppTitle = currSize;\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(document.body, { box: \"content-box\" });\n };\n\n private setCollapsedIconLabels = () => {\n const navigationItems: HTMLIcNavigationItemElement[] = Array.from(\n this.el.querySelectorAll(this.IC_NAVIGATION_ITEM)\n );\n navigationItems.forEach((navigationItem: HTMLIcNavigationItemElement) => {\n navigationItem.setAttribute(\"collapsed-icon-label\", \"true\");\n });\n };\n\n private styleSlottedCollapsedIconLabel = () => {\n const dynamicSlottedIcTypographyComps: HTMLIcTypographyElement[] =\n Array.from(\n this.el.querySelectorAll(\".navigation-item-side-nav-slotted-text\")\n );\n\n dynamicSlottedIcTypographyComps.forEach((icTypography) => {\n if (\n icTypography?.parentElement?.parentElement?.classList.contains(\n \"navigation-item-side-nav-collapsed-with-label\"\n )\n ) {\n icTypography.style.whiteSpace = \"nowrap\";\n icTypography.style.overflow = \"hidden\";\n icTypography.style.textOverflow = \"ellipsis\";\n icTypography.style.marginTop = \"10px\";\n }\n });\n };\n\n private renderTopBar = ({\n isSDevice,\n foregroundColor,\n menuOpen,\n href,\n isAppNameSubtitleVariant,\n }: IcTopBar) => {\n const hasTitle = this.appTitle !== \"\" && this.appTitle !== undefined;\n\n const Component = isSlotUsed(this.el, \"app-title\") ? \"div\" : \"a\";\n\n const attrs = Component == \"a\" && {\n href: href,\n };\n\n return (\n <div\n class={{\n \"top-bar\": true,\n [this.foregroundColor]: true,\n }}\n >\n {isSDevice && (\n <nav\n aria-labelledby=\"menu-navigation-toggle-button-landmark\"\n aria-hidden=\"false\"\n >\n <ic-button\n aria-label=\"Open navigation menu\"\n class=\"menu-button\"\n id=\"menu-button\"\n variant=\"secondary\"\n size=\"small\"\n full-width=\"true\"\n appearance={foregroundColor}\n onClick={this.toggleMenu}\n aria-owns=\"side-navigation\"\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n >\n <span\n class=\"mobile-top-bar-menu-icon\"\n slot=\"icon\"\n innerHTML={menuOpen ? closeIcon : menuIcon}\n ></span>\n {menuOpen ? \"Close\" : \"Menu\"}\n </ic-button>\n <span\n id=\"menu-navigation-toggle-button-landmark\"\n class=\"navigation-landmark-title\"\n aria-hidden=\"true\"\n >\n Navigation menu toggle button\n </span>\n </nav>\n )}\n <div class=\"app-title-wrapper\">\n {(hasTitle || isSlotUsed(this.el, \"app-title\")) && (\n <Component {...attrs} class=\"title-link\">\n <div class=\"app-icon-container\" aria-hidden=\"true\">\n <slot name=\"app-icon\"></slot>\n </div>\n {isSlotUsed(this.el, \"app-title\") ? (\n <slot name=\"app-title\"></slot>\n ) : (\n this.renderAppTitle(isAppNameSubtitleVariant)\n )}\n </Component>\n )}\n </div>\n </div>\n );\n };\n\n render() {\n const {\n appTitle,\n menuOpen,\n foregroundColor,\n menuExpanded,\n href,\n status,\n version,\n collapsedIconLabels,\n inline,\n } = this;\n\n const isSDevice = this.deviceSize === DEVICE_SIZES.S;\n const isMdDevice = this.deviceSize === DEVICE_SIZES.M;\n const isLgDevice = this.deviceSize >= DEVICE_SIZES.L;\n const isAppNameSubtitleVariant = this.deviceSizeAppTitle === DEVICE_SIZES.S;\n const displayExpandBtn = isMdDevice || (isLgDevice && !this.static);\n\n const topBarProps: IcTopBar = {\n isSDevice,\n foregroundColor,\n menuOpen,\n href,\n isAppNameSubtitleVariant,\n appTitle,\n };\n\n return (\n <Host\n class={{\n \"xs-menu-open\": menuOpen && isSDevice,\n \"xs-menu-close\": !menuOpen && isSDevice,\n \"sm-collapsed\": !isSDevice && !menuExpanded,\n \"sm-expanded\": !isSDevice && menuExpanded,\n [IcThemeForegroundEnum.Dark]:\n foregroundColor === IcThemeForegroundEnum.Dark,\n [\"collapsed-labels\"]:\n !isSDevice && !menuExpanded && collapsedIconLabels,\n [\"inline\"]: inline,\n }}\n >\n {isSDevice && this.renderTopBar({ ...topBarProps })}\n <div class=\"side-navigation\" id=\"side-navigation\">\n {!isSDevice && this.renderTopBar({ ...topBarProps })}\n <div class=\"side-navigation-inner\">\n {isSlotUsed(this.el, \"primary-navigation\") && (\n <nav\n class=\"primary-navigation\"\n aria-labelledby=\"primary-navigation-landmark\"\n >\n <span\n aria-hidden=\"true\"\n class=\"navigation-landmark-title\"\n id=\"primary-navigation-landmark\"\n >\n Primary\n </span>\n <ul class=\"navigation-list\">\n <slot name=\"primary-navigation\"></slot>\n </ul>\n </nav>\n )}\n </div>\n <div\n class={{\n [\"bottom-wrapper\"]: true,\n [\"classification-spacing\"]: hasClassificationBanner(),\n }}\n >\n {isSlotUsed(this.el, \"secondary-navigation\") && (\n <nav\n class=\"secondary-navigation\"\n aria-labelledby=\"secondary-navigation-landmark\"\n >\n <span\n aria-hidden=\"true\"\n class=\"navigation-landmark-title\"\n id=\"secondary-navigation-landmark\"\n >\n Secondary\n </span>\n <ul class=\"navigation-list\">\n <slot name=\"secondary-navigation\"></slot>\n </ul>\n </nav>\n )}\n <div class=\"bottom-side-nav\">\n {this.hasSecondaryNavigation && <ic-divider></ic-divider>}\n {displayExpandBtn && (\n <button\n class=\"menu-expand-button\"\n innerHTML={chevronIcon}\n onClick={this.toggleMenuExpanded}\n aria-label={`${\n menuExpanded ? \"Collapse\" : \"Expand\"\n } side navigation`}\n ></button>\n )}\n <div class=\"app-status-wrapper\">\n {status !== \"\" && (\n <div\n class={{\n [\"app-status\"]: true,\n }}\n >\n <ic-typography\n aria-label=\"app tag\"\n variant=\"label-uppercase\"\n class=\"app-status-text\"\n >\n {status}\n </ic-typography>\n </div>\n )}\n {version !== \"\" && (\n <ic-typography\n variant=\"label\"\n class=\"app-version\"\n aria-label=\"app version\"\n >\n {version}\n </ic-typography>\n )}\n </div>\n </div>\n </div>\n </div>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as t,c as i,h as e,H as s,g as a}from"./p-18068237.js";import{c as o}from"./p-f074ef5b.js";import{c as n,i as r}from"./p-ebe76390.js";import"./p-613aa265.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{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;min-height:100% !important;background:rgb(0 0 0 / 60%);z-index:var(--ic-z-index-dialog);opacity:0;transition:opacity var(--ic-easing-transition-slow)}:host(.fade-in){opacity:1;transition:opacity var(--ic-easing-transition-slow)}:host(.hidden){display:none}.dialog{background-color:var(--ic-architectural-white);border:var(--ic-border-default);border-radius:var(--ic-border-radius);padding:var(--ic-space-xs) var(--ic-space-md);transform:translateY(-3rem);transition:transform 1000s;display:flex;flex-direction:column;box-sizing:border-box}:host(.fade-in) .dialog{transform:translateY(0);transition:transform var(--ic-easing-transition-slow)}.small{width:50%;max-width:25rem;min-height:11rem;max-height:70vh}.medium{width:70vw;max-width:44rem;min-height:12.5rem;max-height:70vh}.large{width:90vw;max-width:62.5rem;min-height:12.5rem;max-height:90vh}.heading-area{display:flex;margin-bottom:var(--ic-space-xs)}.close-icon{margin-left:auto}.close-icon-svg{display:flex;align-items:center}.content-area{-ms-overflow-style:none;scrollbar-width:none;padding:0 var(--ic-space-xs);margin:0 calc(-1 * var(--ic-space-xs))}:host([data-overflow="false"]) .content-area{overflow-y:visible}:host([data-overflow="true"]) .content-area{overflow-y:scroll}:host([data-overflow="false"]) .dialog{overflow:visible}.content-area::-webkit-scrollbar{display:none}#dialog-content{margin-bottom:var(--ic-space-sm)}.status-alert{margin-bottom:var(--ic-space-xs)}.dialog-controls{margin-top:auto;padding-top:var(--ic-space-xs);display:flex;justify-content:flex-end;gap:var(--ic-space-md)}.dialog-control-button{width:-moz-fit-content;width:fit-content}@media (min-width: 800px){:host([size="large"]) .content-area{width:75%}}@media (max-width: 576px){.dialog{width:100vw;height:100vh;transform:translateY(-5rem);max-width:none;max-height:none;box-sizing:border-box}}@media (max-width: 364px){.triple-button{flex-direction:column;gap:var(--ic-space-xs)}.dialog-control-button{width:unset}}';const h=class{constructor(e){t(this,e);this.icDialogCancelled=i(this,"icDialogCancelled",7);this.icDialogClosed=i(this,"icDialogClosed",7);this.icDialogConfirmed=i(this,"icDialogConfirmed",7);this.icDialogOpened=i(this,"icDialogOpened",7);this.DATA_OVERFLOW="data-overflow";this.DATA_GETS_FOCUS="data-gets-focus";this.DATA_GETS_FOCUS_SELECTOR="[data-gets-focus]";this.DIALOG_CONTROLS="dialog-controls";this.dialogHeight=0;this.focusedElementIndex=0;this.IC_TEXT_FIELD="IC-TEXT-FIELD";this.resizeObserver=null;this.setContentOverflow=()=>{if(this.dialogEl.clientHeight<this.dialogEl.scrollHeight){this.el.setAttribute(this.DATA_OVERFLOW,"true")}else{this.el.setAttribute(this.DATA_OVERFLOW,"false")}};this.runResizeObserver=()=>{this.resizeObserver=new ResizeObserver((()=>{clearTimeout(this.resizeTimeout);this.resizeTimeout=window.setTimeout(this.resizeObserverCallback,80)}));this.resizeObserver.observe(this.dialogEl)};this.resizeObserverCallback=()=>{if(this.dialogEl.clientHeight!==this.dialogHeight){this.el.setAttribute(this.DATA_OVERFLOW,"false");this.setContentOverflow();this.dialogHeight=this.dialogEl.clientHeight}};this.setInitialFocus=()=>{this.sourceElement=document.activeElement;let t;if(this.el.querySelector(this.DATA_GETS_FOCUS_SELECTOR)!==null){t=this.el.querySelector(this.DATA_GETS_FOCUS_SELECTOR)}else{t=this.el.shadowRoot.querySelector(this.DATA_GETS_FOCUS_SELECTOR)}if(t.tagName===this.IC_TEXT_FIELD){t.setFocus()}else{t.focus()}};this.getFocusedElementIndex=()=>{for(let t=0;t<this.interactiveElementList.length;t++){if(this.interactiveElementList[t]===(this.el.shadowRoot.activeElement||document.activeElement)){this.focusedElementIndex=t}}};this.setAlertVariant=()=>{if(this.status!==undefined&&this.status!==null){const t=this.el.shadowRoot.querySelector("ic-alert");t.setAttribute("variant",this.status)}};this.closeIconClick=()=>{this.hideDialog()};this.getInteractiveElements=()=>{this.interactiveElementList=Array.from(this.el.shadowRoot.querySelectorAll("ic-button"));const t=Array.from(this.el.querySelectorAll(`a[href], button, input:not(.ic-input), textarea, select, details, [tabindex]:not([tabindex="-1"]), \n ic-button, ic-checkbox, ic-select, ic-search-bar, ic-tab-group, ic-radio-group, \n ic-back-to-top, ic-breadcrumb, ic-chip[dismissible="true"], ic-footer-link, ic-link, ic-navigation-button, \n ic-navigation-item, ic-switch, ic-text-field`));if(t.length>0){if(t[0].slot!==this.DIALOG_CONTROLS){t[0].setAttribute(this.DATA_GETS_FOCUS,"")}else if(!this.destructive){t[t.length-1].setAttribute(this.DATA_GETS_FOCUS,"")}}for(let i=0;i<t.length;i++){this.interactiveElementList.splice(1+i,0,t[i])}};this.focusNextInteractiveElement=t=>{this.getFocusedElementIndex();if(t){this.focusedElementIndex-=1}else{this.focusedElementIndex+=1}if(this.focusedElementIndex>this.interactiveElementList.length-1)this.focusedElementIndex=0;else if(this.focusedElementIndex<0){this.focusedElementIndex=this.interactiveElementList.length-1}const i=this.interactiveElementList[this.focusedElementIndex];if(i.tagName===this.IC_TEXT_FIELD){i.setFocus()}else{i.focus()}};this.setButtonOnClick=()=>{var t,i,e;if(this.buttons){this.buttonOnclick0=new Function((t=this.buttonProps[0])===null||t===void 0?void 0:t.onclick);this.buttonOnclick1=new Function((i=this.buttonProps[1])===null||i===void 0?void 0:i.onclick);this.buttonOnclick2=new Function((e=this.buttonProps[2])===null||e===void 0?void 0:e.onclick)}};this.getButtonOnclick=t=>{if(t===0){return this.buttonOnclick0()}else if(t===1){return this.buttonOnclick1()}else{return this.buttonOnclick2()}};this.getButtonVariant=t=>{const i=this.destructive?"destructive":"primary";if(this.buttonProps.length===1){return i}else if(this.buttonProps.length===2){if(t===0){return"tertiary"}else{return i}}else{if(t===2){return i}else{return"secondary"}}};this.dialogRendered=false;this.fadeIn=false;this.alertHeading=undefined;this.alertMessage=undefined;this.buttons=true;this.closeOnBackdropClick=true;this.destructive=false;this.dismissLabel="Dismiss";this.heading=undefined;this.label=undefined;this.size="small";this.status=undefined;this.buttonProps=[{label:"Cancel",onclick:"this.cancelDialog();"},{label:"Confirm",onclick:"this.confirmDialog();"}]}watchPropHandler(){this.setButtonOnClick()}componentWillLoad(){this.setButtonOnClick()}componentDidLoad(){this.getInteractiveElements();this.setAlertVariant()}handleKeyboard(t){if(this.dialogRendered){switch(t.key){case"Tab":t.preventDefault();this.focusNextInteractiveElement(t.shiftKey);break;case"Escape":!t.repeat&&this.hideDialog();t.stopImmediatePropagation();break}}}handleClick(t){const i=this.el.shadowRoot.querySelector("dialog");if(this.closeOnBackdropClick&&t.composedPath().indexOf(i)<=0){const i=this.dialogEl.getBoundingClientRect();const e=i.top<=t.clientY&&t.clientY<=i.top+i.height&&i.left<=t.clientX&&t.clientX<=i.left+i.width;if(!e){this.hideDialog()}}}async showDialog(){this.dialogRendered=true;this.dialogEl.showModal();setTimeout((()=>{this.fadeIn=true}),10);setTimeout((()=>{this.setInitialFocus();n(this.runResizeObserver)}),75);setTimeout((()=>{this.getFocusedElementIndex();this.icDialogOpened.emit()}),80)}async hideDialog(){this.fadeIn=false;if(this.resizeObserver!==null){this.resizeObserver.disconnect()}setTimeout((()=>{var t;this.dialogRendered=false;this.dialogEl.close();(t=this.sourceElement)===null||t===void 0?void 0:t.focus();this.el.removeAttribute(this.DATA_OVERFLOW);this.dialogHeight=0;this.icDialogClosed.emit()}),80)}async cancelDialog(){this.icDialogCancelled.emit();this.hideDialog()}async confirmDialog(){this.icDialogConfirmed.emit()}render(){const{alertHeading:t,alertMessage:i,buttons:a,buttonProps:n,size:l,heading:h,label:c,status:d,destructive:u,dismissLabel:m}=this;return e(s,{class:{["hidden"]:!this.dialogRendered,["fade-in"]:this.fadeIn}},e("dialog",{class:{["dialog"]:true,[`${l}`]:true},"aria-labelledby":"dialog-label dialog-heading","aria-describedby":"dialog-alert dialog-content",ref:t=>this.dialogEl=t},e("div",{class:"heading-area"},e("div",{class:"heading-content"},e("div",{class:"label"},e("slot",{name:"label"},e("ic-typography",{variant:"label",id:"dialog-label"},c))),e("div",{class:"heading"},e("slot",{name:"heading"},e("ic-typography",{variant:"h4",id:"dialog-heading"},h)))),e("ic-button",{class:"close-icon",variant:"icon","aria-label":m,onClick:this.closeIconClick,"data-gets-focus":u||!a?"":null},e("span",{class:"close-icon-svg",innerHTML:o}))),e("div",{class:"content-area"},d&&e("ic-alert",{variant:d,heading:t,message:i,"title-above":true,class:"status-alert",id:"dialog-alert"}),e("div",{id:"dialog-content"},e("slot",null))),(a||r(this.el,this.DIALOG_CONTROLS))&&e("div",{class:{[this.DIALOG_CONTROLS]:true,["triple-button"]:n.length===3}},e("slot",{name:this.DIALOG_CONTROLS},!r(this.el,this.DIALOG_CONTROLS)&&n.map(((t,i)=>{if(i>2){return}else{return e("ic-button",{variant:this.getButtonVariant(i),onClick:()=>this.getButtonOnclick(i),class:"dialog-control-button","full-width":n.length===3,"data-gets-focus":this.getButtonVariant(i)==="primary"?"":null},t.label)}}))))))}get el(){return a(this)}static get watchers(){return{buttonProps:["watchPropHandler"]}}};h.style=l;export{h as ic_dialog};
2
- //# sourceMappingURL=p-fedcfea3.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icDialogCss","Dialog","this","DATA_OVERFLOW","DATA_GETS_FOCUS","DATA_GETS_FOCUS_SELECTOR","DIALOG_CONTROLS","dialogHeight","focusedElementIndex","IC_TEXT_FIELD","resizeObserver","setContentOverflow","dialogEl","clientHeight","scrollHeight","el","setAttribute","runResizeObserver","ResizeObserver","clearTimeout","resizeTimeout","window","setTimeout","resizeObserverCallback","observe","setInitialFocus","sourceElement","document","activeElement","focusedElement","querySelector","shadowRoot","tagName","setFocus","focus","getFocusedElementIndex","i","interactiveElementList","length","setAlertVariant","status","undefined","alert","closeIconClick","hideDialog","getInteractiveElements","Array","from","querySelectorAll","slottedInteractiveElements","slot","destructive","splice","focusNextInteractiveElement","shiftKey","nextFocusEl","setButtonOnClick","buttons","buttonOnclick0","Function","_a","buttonProps","onclick","buttonOnclick1","_b","buttonOnclick2","_c","getButtonOnclick","index","getButtonVariant","mainVariant","label","watchPropHandler","componentWillLoad","componentDidLoad","handleKeyboard","ev","dialogRendered","key","preventDefault","repeat","stopImmediatePropagation","handleClick","dialogElement","closeOnBackdropClick","composedPath","indexOf","rect","getBoundingClientRect","isInDialog","top","clientY","height","left","clientX","width","showDialog","showModal","fadeIn","checkResizeObserver","icDialogOpened","emit","disconnect","close","removeAttribute","icDialogClosed","cancelDialog","icDialogCancelled","confirmDialog","icDialogConfirmed","render","alertHeading","alertMessage","size","heading","dismissLabel","h","Host","class","ref","name","variant","id","onClick","innerHTML","closeIcon","message","isSlotUsed","map","props"],"sources":["src/components/ic-dialog/ic-dialog.css?tag=ic-dialog&encapsulation=shadow","src/components/ic-dialog/ic-dialog.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-dialog: z-index of dialog \n */\n\n:host {\n position: fixed;\n inset: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: 100% !important;\n background: rgb(0 0 0 / 60%);\n z-index: var(--ic-z-index-dialog);\n opacity: 0;\n transition: opacity var(--ic-easing-transition-slow);\n}\n\n:host(.fade-in) {\n opacity: 1;\n transition: opacity var(--ic-easing-transition-slow);\n}\n\n:host(.hidden) {\n display: none;\n}\n\n.dialog {\n background-color: var(--ic-architectural-white);\n border: var(--ic-border-default);\n border-radius: var(--ic-border-radius);\n padding: var(--ic-space-xs) var(--ic-space-md);\n transform: translateY(-3rem);\n transition: transform 1000s;\n display: flex;\n flex-direction: column;\n box-sizing: border-box;\n}\n\n:host(.fade-in) .dialog {\n transform: translateY(0);\n transition: transform var(--ic-easing-transition-slow);\n}\n\n.small {\n width: 50%;\n max-width: 25rem;\n min-height: 11rem;\n max-height: 70vh;\n}\n\n.medium {\n width: 70vw;\n max-width: 44rem;\n min-height: 12.5rem;\n max-height: 70vh;\n}\n\n.large {\n width: 90vw;\n max-width: 62.5rem;\n min-height: 12.5rem;\n max-height: 90vh;\n}\n\n.heading-area {\n display: flex;\n margin-bottom: var(--ic-space-xs);\n}\n\n.close-icon {\n margin-left: auto;\n}\n\n.close-icon-svg {\n display: flex;\n align-items: center;\n}\n\n.content-area {\n -ms-overflow-style: none;\n scrollbar-width: none;\n padding: 0 var(--ic-space-xs);\n margin: 0 calc(-1 * var(--ic-space-xs));\n}\n\n:host([data-overflow=\"false\"]) .content-area {\n overflow-y: visible;\n}\n\n:host([data-overflow=\"true\"]) .content-area {\n overflow-y: scroll;\n}\n\n:host([data-overflow=\"false\"]) .dialog {\n overflow: visible;\n}\n\n.content-area::-webkit-scrollbar {\n display: none;\n}\n\n#dialog-content {\n margin-bottom: var(--ic-space-sm);\n}\n\n.status-alert {\n margin-bottom: var(--ic-space-xs);\n}\n\n.dialog-controls {\n margin-top: auto;\n padding-top: var(--ic-space-xs);\n display: flex;\n justify-content: flex-end;\n gap: var(--ic-space-md);\n}\n\n.dialog-control-button {\n width: fit-content;\n}\n\n@media (min-width: 800px) {\n :host([size=\"large\"]) .content-area {\n width: 75%;\n }\n}\n\n@media (max-width: 576px) {\n .dialog {\n width: 100vw;\n height: 100vh;\n transform: translateY(-5rem);\n max-width: none;\n max-height: none;\n box-sizing: border-box;\n }\n}\n\n@media (max-width: 364px) {\n .triple-button {\n flex-direction: column;\n gap: var(--ic-space-xs);\n }\n\n .dialog-control-button {\n width: unset;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n State,\n Method,\n Listen,\n Watch,\n h,\n} from \"@stencil/core\";\nimport closeIcon from \"../../assets/close-icon.svg\";\nimport { isSlotUsed, checkResizeObserver } from \"../../utils/helpers\";\n\n/**\n * @slot dialog-controls - Content will be place at the bottom of the dialog.\n * @slot heading - Content will be placed at the top of the dialog.\n * @slot label - Content will be placed above the dialog heading.\n */\n@Component({\n tag: \"ic-dialog\",\n styleUrl: \"ic-dialog.css\",\n shadow: true,\n})\nexport class Dialog {\n private DATA_OVERFLOW: string = \"data-overflow\";\n private DATA_GETS_FOCUS: string = \"data-gets-focus\";\n private DATA_GETS_FOCUS_SELECTOR: string = \"[data-gets-focus]\";\n private DIALOG_CONTROLS: string = \"dialog-controls\";\n private dialogEl: HTMLDialogElement;\n private dialogHeight: number = 0;\n private focusedElementIndex = 0;\n private IC_TEXT_FIELD: string = \"IC-TEXT-FIELD\";\n private interactiveElementList: HTMLElement[];\n private resizeObserver: ResizeObserver = null;\n private resizeTimeout: number;\n private sourceElement: HTMLElement;\n\n /* eslint-disable */\n\n private buttonOnclick0: Function;\n private buttonOnclick1: Function;\n private buttonOnclick2: Function;\n\n /* eslint-enable */\n\n @Element() el: HTMLIcDialogElement;\n\n @State() dialogRendered: boolean = false;\n @State() fadeIn: boolean = false;\n\n /**\n * If a status is set, sets the heading for the displayed alert.\n */\n @Prop() alertHeading?: string;\n\n /**\n * If a status is set, sets the message for the displayed alert.\n */\n @Prop() alertMessage?: string;\n\n /**\n * If set to `false`, dialog controls will not be displayed overriding buttonProps or slotted dialog controls.\n */\n @Prop() buttons?: boolean = true;\n\n /**\n * If set to `true`, the dialog will not close when the backdrop is clicked.\n */\n @Prop() closeOnBackdropClick?: boolean = true;\n\n /**\n * If default buttons are displayed, sets the 'primary' or rightmost button to the destructive variant. Stops initial focus being set on the 'primary' or rightmost default or slotted button.\n */\n @Prop() destructive?: boolean = false;\n\n /**\n * Sets the dismiss label tooltip and aria label.\n */\n @Prop() dismissLabel?: string = \"Dismiss\";\n\n /**\n * Sets the heading for the dialog.\n */\n @Prop() heading!: string;\n\n /**\n * Sets the optional label for the dialog which appears above the heading.\n */\n @Prop() label?: string;\n\n /**\n * Sets the maximum and minimum height and width for the dialog.\n */\n @Prop() size?: \"small\" | \"medium\" | \"large\" = \"small\";\n\n /**\n * If set, displays an alert of the corresponding variant below the heading.\n */\n @Prop() status?: \"neutral\" | \"info\" | \"warning\" | \"error\" | \"success\";\n\n /**\n * Sets the label and onclick functions for default buttons.\n */\n @Prop() buttonProps?: { label: string; onclick: string }[] = [\n {\n label: \"Cancel\",\n onclick: \"this.cancelDialog();\",\n },\n { label: \"Confirm\", onclick: \"this.confirmDialog();\" },\n ];\n\n @Watch(\"buttonProps\")\n watchPropHandler(): void {\n this.setButtonOnClick();\n }\n\n /**\n * Cancelation event emitted when default 'Cancel' button clicked or 'cancelDialog' method is called.\n */\n @Event() icDialogCancelled: EventEmitter<void>;\n\n /**\n * Emitted when dialog has closed.\n */\n @Event() icDialogClosed: EventEmitter<void>;\n\n /**\n * Confirmation event emitted when default 'Confirm' primary button clicked or 'confirmDialog' method is called.\n */\n @Event() icDialogConfirmed: EventEmitter<void>;\n\n /**\n * Emitted when dialog has opened.\n */\n @Event() icDialogOpened: EventEmitter<void>;\n\n componentWillLoad(): void {\n this.setButtonOnClick();\n }\n\n componentDidLoad(): void {\n this.getInteractiveElements();\n this.setAlertVariant();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyboard(ev: KeyboardEvent): void {\n if (this.dialogRendered) {\n switch (ev.key) {\n case \"Tab\":\n ev.preventDefault();\n this.focusNextInteractiveElement(ev.shiftKey);\n break;\n case \"Escape\":\n !ev.repeat && this.hideDialog();\n ev.stopImmediatePropagation();\n break;\n }\n }\n }\n\n @Listen(\"click\", {})\n handleClick(ev: MouseEvent): void {\n const dialogElement = this.el.shadowRoot.querySelector(\"dialog\");\n if (\n this.closeOnBackdropClick &&\n ev.composedPath().indexOf(dialogElement) <= 0\n ) {\n const rect = this.dialogEl.getBoundingClientRect();\n const isInDialog =\n rect.top <= ev.clientY &&\n ev.clientY <= rect.top + rect.height &&\n rect.left <= ev.clientX &&\n ev.clientX <= rect.left + rect.width;\n if (!isInDialog) {\n this.hideDialog();\n }\n }\n }\n\n /**\n * Use to show the dialog.\n */\n @Method()\n async showDialog(): Promise<void> {\n this.dialogRendered = true;\n this.dialogEl.showModal();\n setTimeout(() => {\n this.fadeIn = true;\n }, 10);\n setTimeout(() => {\n this.setInitialFocus();\n checkResizeObserver(this.runResizeObserver);\n }, 75);\n setTimeout(() => {\n this.getFocusedElementIndex();\n this.icDialogOpened.emit();\n }, 80);\n }\n\n /**\n * Use to hide the dialog.\n */\n @Method()\n async hideDialog(): Promise<void> {\n this.fadeIn = false;\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n setTimeout(() => {\n this.dialogRendered = false;\n this.dialogEl.close();\n this.sourceElement?.focus();\n this.el.removeAttribute(this.DATA_OVERFLOW);\n this.dialogHeight = 0;\n this.icDialogClosed.emit();\n }, 80);\n }\n\n /**\n * Cancels the dialog. Used by the default 'Cancel' button or can be called manually to trigger cancelling of dialog.\n */\n @Method()\n async cancelDialog(): Promise<void> {\n this.icDialogCancelled.emit();\n this.hideDialog();\n }\n\n /**\n * Confirms the dialog. Used by the default 'Confirm' button or can be called manually to trigger confirming of dialog.\n */\n @Method()\n async confirmDialog(): Promise<void> {\n this.icDialogConfirmed.emit();\n }\n\n private setContentOverflow = (): void => {\n if (this.dialogEl.clientHeight < this.dialogEl.scrollHeight) {\n this.el.setAttribute(this.DATA_OVERFLOW, \"true\");\n } else {\n this.el.setAttribute(this.DATA_OVERFLOW, \"false\");\n }\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n clearTimeout(this.resizeTimeout);\n this.resizeTimeout = window.setTimeout(this.resizeObserverCallback, 80);\n });\n this.resizeObserver.observe(this.dialogEl);\n };\n\n private resizeObserverCallback = () => {\n if (this.dialogEl.clientHeight !== this.dialogHeight) {\n this.el.setAttribute(this.DATA_OVERFLOW, \"false\");\n this.setContentOverflow();\n this.dialogHeight = this.dialogEl.clientHeight;\n }\n };\n\n private setInitialFocus = () => {\n this.sourceElement = document.activeElement as HTMLElement;\n\n let focusedElement;\n\n if (this.el.querySelector(this.DATA_GETS_FOCUS_SELECTOR) !== null) {\n focusedElement = this.el.querySelector(\n this.DATA_GETS_FOCUS_SELECTOR\n ) as HTMLElement;\n } else {\n focusedElement = this.el.shadowRoot.querySelector(\n this.DATA_GETS_FOCUS_SELECTOR\n ) as HTMLElement;\n }\n if (focusedElement.tagName === this.IC_TEXT_FIELD) {\n (focusedElement as HTMLIcTextFieldElement).setFocus();\n } else {\n focusedElement.focus();\n }\n };\n\n private getFocusedElementIndex = () => {\n for (let i = 0; i < this.interactiveElementList.length; i++) {\n if (\n (this.interactiveElementList[i] as HTMLElement) ===\n (this.el.shadowRoot.activeElement || document.activeElement)\n ) {\n this.focusedElementIndex = i;\n }\n }\n };\n\n private setAlertVariant = () => {\n if (this.status !== undefined && this.status !== null) {\n const alert = this.el.shadowRoot.querySelector(\"ic-alert\");\n alert.setAttribute(\"variant\", this.status);\n }\n };\n\n private closeIconClick = () => {\n this.hideDialog();\n };\n\n private getInteractiveElements = () => {\n this.interactiveElementList = Array.from(\n this.el.shadowRoot.querySelectorAll(\"ic-button\")\n );\n const slottedInteractiveElements = Array.from(\n this.el.querySelectorAll(\n `a[href], button, input:not(.ic-input), textarea, select, details, [tabindex]:not([tabindex=\"-1\"]), \n ic-button, ic-checkbox, ic-select, ic-search-bar, ic-tab-group, ic-radio-group, \n ic-back-to-top, ic-breadcrumb, ic-chip[dismissible=\"true\"], ic-footer-link, ic-link, ic-navigation-button, \n ic-navigation-item, ic-switch, ic-text-field`\n )\n );\n if (slottedInteractiveElements.length > 0) {\n if (slottedInteractiveElements[0].slot !== this.DIALOG_CONTROLS) {\n slottedInteractiveElements[0].setAttribute(this.DATA_GETS_FOCUS, \"\");\n } else if (!this.destructive) {\n slottedInteractiveElements[\n slottedInteractiveElements.length - 1\n ].setAttribute(this.DATA_GETS_FOCUS, \"\");\n }\n }\n for (let i = 0; i < slottedInteractiveElements.length; i++) {\n this.interactiveElementList.splice(\n 1 + i,\n 0,\n slottedInteractiveElements[i] as HTMLElement\n );\n }\n };\n\n private focusNextInteractiveElement = (shiftKey: boolean) => {\n this.getFocusedElementIndex();\n\n if (shiftKey) {\n this.focusedElementIndex -= 1;\n } else {\n this.focusedElementIndex += 1;\n }\n\n if (this.focusedElementIndex > this.interactiveElementList.length - 1)\n this.focusedElementIndex = 0;\n else if (this.focusedElementIndex < 0) {\n this.focusedElementIndex = this.interactiveElementList.length - 1;\n }\n\n const nextFocusEl = this.interactiveElementList[this.focusedElementIndex];\n if (nextFocusEl.tagName === this.IC_TEXT_FIELD) {\n (nextFocusEl as HTMLIcTextFieldElement).setFocus();\n } else {\n (nextFocusEl as HTMLElement).focus();\n }\n };\n\n private setButtonOnClick = () => {\n if (this.buttons) {\n this.buttonOnclick0 = new Function(this.buttonProps[0]?.onclick);\n this.buttonOnclick1 = new Function(this.buttonProps[1]?.onclick);\n this.buttonOnclick2 = new Function(this.buttonProps[2]?.onclick);\n }\n };\n\n private getButtonOnclick = (index: number) => {\n if (index === 0) {\n return this.buttonOnclick0();\n } else if (index === 1) {\n return this.buttonOnclick1();\n } else {\n return this.buttonOnclick2();\n }\n };\n\n private getButtonVariant = (index: number) => {\n const mainVariant = this.destructive ? \"destructive\" : \"primary\";\n if (this.buttonProps.length === 1) {\n return mainVariant;\n } else if (this.buttonProps.length === 2) {\n if (index === 0) {\n return \"tertiary\";\n } else {\n return mainVariant;\n }\n } else {\n if (index === 2) {\n return mainVariant;\n } else {\n return \"secondary\";\n }\n }\n };\n\n render() {\n const {\n alertHeading,\n alertMessage,\n buttons,\n buttonProps,\n size,\n heading,\n label,\n status,\n destructive,\n dismissLabel,\n } = this;\n\n return (\n <Host\n class={{ [\"hidden\"]: !this.dialogRendered, [\"fade-in\"]: this.fadeIn }}\n >\n <dialog\n class={{ [\"dialog\"]: true, [`${size}`]: true }}\n aria-labelledby=\"dialog-label dialog-heading\"\n aria-describedby=\"dialog-alert dialog-content\"\n ref={(el) => (this.dialogEl = el)}\n >\n <div class=\"heading-area\">\n <div class=\"heading-content\">\n <div class=\"label\">\n <slot name=\"label\">\n <ic-typography variant=\"label\" id=\"dialog-label\">\n {label}\n </ic-typography>\n </slot>\n </div>\n <div class=\"heading\">\n <slot name=\"heading\">\n <ic-typography variant=\"h4\" id=\"dialog-heading\">\n {heading}\n </ic-typography>\n </slot>\n </div>\n </div>\n <ic-button\n class=\"close-icon\"\n variant=\"icon\"\n aria-label={dismissLabel}\n onClick={this.closeIconClick}\n data-gets-focus={destructive || !buttons ? \"\" : null}\n >\n <span class=\"close-icon-svg\" innerHTML={closeIcon} />\n </ic-button>\n </div>\n <div class=\"content-area\">\n {status && (\n <ic-alert\n variant={status}\n heading={alertHeading}\n message={alertMessage}\n title-above\n class=\"status-alert\"\n id=\"dialog-alert\"\n ></ic-alert>\n )}\n <div id=\"dialog-content\">\n <slot></slot>\n </div>\n </div>\n {(buttons || isSlotUsed(this.el, this.DIALOG_CONTROLS)) && (\n <div\n class={{\n [this.DIALOG_CONTROLS]: true,\n [\"triple-button\"]: buttonProps.length === 3,\n }}\n >\n <slot name={this.DIALOG_CONTROLS}>\n {!isSlotUsed(this.el, this.DIALOG_CONTROLS) &&\n buttonProps.map((props, index) => {\n if (index > 2) {\n return;\n } else {\n return (\n <ic-button\n variant={this.getButtonVariant(index)}\n onClick={() => this.getButtonOnclick(index)}\n class=\"dialog-control-button\"\n full-width={buttonProps.length === 3}\n data-gets-focus={\n this.getButtonVariant(index) === \"primary\"\n ? \"\"\n : null\n }\n >\n {props.label}\n </ic-button>\n );\n }\n })}\n </slot>\n </div>\n )}\n </dialog>\n </Host>\n );\n }\n}\n"],"mappings":"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"}