@ukic/web-components 2.0.0 → 2.1.0-beta.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (391) hide show
  1. package/README.md +173 -0
  2. package/dist/cjs/core.cjs.js +1 -1
  3. package/dist/cjs/{helpers-60fda93f.js → helpers-d0eeccf0.js} +18 -1
  4. package/dist/cjs/helpers-d0eeccf0.js.map +1 -0
  5. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  6. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-breadcrumb.cjs.entry.js +2 -2
  10. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-button_3.cjs.entry.js +2 -2
  12. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-card.cjs.entry.js +2 -2
  14. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-checkbox.cjs.entry.js +12 -2
  17. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-data-row.cjs.entry.js +2 -2
  19. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  22. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  24. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-hero.cjs.entry.js +2 -2
  27. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +3 -3
  29. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  30. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  32. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-navigation-group.cjs.entry.js +2 -2
  35. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  37. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-page-header.cjs.entry.js +2 -2
  40. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-radio-option.cjs.entry.js +16 -3
  43. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-search-bar.cjs.entry.js +27 -13
  45. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-select.cjs.entry.js +13 -2
  47. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-side-navigation.cjs.entry.js +2 -2
  49. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-switch.cjs.entry.js +16 -6
  54. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-tab-context.cjs.entry.js +4 -3
  56. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-tab-group.cjs.entry.js +4 -4
  58. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-tab-panel.cjs.entry.js +8 -5
  60. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-tab.cjs.entry.js +4 -4
  62. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-text-field.cjs.entry.js +9 -1
  64. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  66. package/dist/cjs/ic-top-navigation.cjs.entry.js +2 -2
  67. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  68. package/dist/cjs/loader.cjs.js +1 -1
  69. package/dist/collection/components/ic-alert/ic-alert.css +1 -6
  70. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +1 -1
  71. package/dist/collection/components/ic-button/ic-button.css +1 -1
  72. package/dist/collection/components/ic-card/ic-card.css +2 -2
  73. package/dist/collection/components/ic-checkbox/ic-checkbox.css +7 -1
  74. package/dist/collection/components/ic-checkbox/ic-checkbox.js +17 -2
  75. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  76. package/dist/collection/components/ic-data-row/ic-data-row.css +8 -0
  77. package/dist/collection/components/ic-footer-link/ic-footer-link.css +12 -3
  78. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.css +2 -2
  79. package/dist/collection/components/ic-hero/ic-hero.css +17 -5
  80. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +5 -0
  81. package/dist/collection/components/ic-link/ic-link.css +11 -2
  82. package/dist/collection/components/ic-link/ic-link.js +3 -0
  83. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  84. package/dist/collection/components/ic-menu/ic-menu.css +1 -1
  85. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +6 -2
  86. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +5 -5
  87. package/dist/collection/components/ic-page-header/ic-page-header.css +9 -0
  88. package/dist/collection/components/ic-radio-option/ic-radio-option.css +8 -2
  89. package/dist/collection/components/ic-radio-option/ic-radio-option.js +22 -4
  90. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  91. package/dist/collection/components/ic-search-bar/ic-search-bar.js +26 -12
  92. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  93. package/dist/collection/components/ic-select/ic-select.css +1 -1
  94. package/dist/collection/components/ic-select/ic-select.js +15 -3
  95. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  96. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +2 -2
  97. package/dist/collection/components/ic-switch/ic-switch.js +21 -10
  98. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  99. package/dist/collection/components/ic-tab/ic-tab.css +2 -2
  100. package/dist/collection/components/ic-tab/ic-tab.js +3 -3
  101. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  102. package/dist/collection/components/ic-tab-context/ic-tab-context.js +5 -4
  103. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  104. package/dist/collection/components/ic-tab-group/ic-tab-group.css +3 -3
  105. package/dist/collection/components/ic-tab-group/ic-tab-group.js +3 -3
  106. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  107. package/dist/collection/components/ic-tab-panel/ic-tab-panel.css +4 -0
  108. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +32 -2
  109. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  110. package/dist/collection/components/ic-text-field/ic-text-field.js +11 -2
  111. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  112. package/dist/collection/components/ic-tooltip/ic-tooltip.js +1 -1
  113. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  114. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +1 -1
  115. package/dist/collection/utils/helpers.js +15 -0
  116. package/dist/collection/utils/helpers.js.map +1 -1
  117. package/dist/components/helpers.js +16 -1
  118. package/dist/components/helpers.js.map +1 -1
  119. package/dist/components/ic-alert.js +1 -1
  120. package/dist/components/ic-alert.js.map +1 -1
  121. package/dist/components/ic-breadcrumb2.js +1 -1
  122. package/dist/components/ic-breadcrumb2.js.map +1 -1
  123. package/dist/components/ic-button2.js +2 -2
  124. package/dist/components/ic-button2.js.map +1 -1
  125. package/dist/components/ic-card.js +1 -1
  126. package/dist/components/ic-card.js.map +1 -1
  127. package/dist/components/ic-checkbox-group.js +1 -1
  128. package/dist/components/ic-checkbox.js +15 -4
  129. package/dist/components/ic-checkbox.js.map +1 -1
  130. package/dist/components/ic-data-row.js +1 -1
  131. package/dist/components/ic-data-row.js.map +1 -1
  132. package/dist/components/ic-divider2.js +1 -1
  133. package/dist/components/ic-footer-link-group.js +2 -2
  134. package/dist/components/ic-footer-link-group.js.map +1 -1
  135. package/dist/components/ic-footer-link.js +2 -2
  136. package/dist/components/ic-footer-link.js.map +1 -1
  137. package/dist/components/ic-footer.js +1 -1
  138. package/dist/components/ic-hero.js +2 -2
  139. package/dist/components/ic-hero.js.map +1 -1
  140. package/dist/components/ic-input-component-container2.js +1 -1
  141. package/dist/components/ic-input-component-container2.js.map +1 -1
  142. package/dist/components/ic-input-label2.js +1 -1
  143. package/dist/components/ic-input-validation2.js +1 -1
  144. package/dist/components/ic-link2.js +2 -2
  145. package/dist/components/ic-link2.js.map +1 -1
  146. package/dist/components/ic-menu2.js +1 -1
  147. package/dist/components/ic-menu2.js.map +1 -1
  148. package/dist/components/ic-navigation-button.js +1 -1
  149. package/dist/components/ic-navigation-group.js +2 -2
  150. package/dist/components/ic-navigation-group.js.map +1 -1
  151. package/dist/components/ic-navigation-item.js +2 -2
  152. package/dist/components/ic-navigation-item.js.map +1 -1
  153. package/dist/components/ic-navigation-menu2.js +1 -1
  154. package/dist/components/ic-page-header.js +1 -1
  155. package/dist/components/ic-page-header.js.map +1 -1
  156. package/dist/components/ic-radio-group.js +1 -1
  157. package/dist/components/ic-radio-option.js +20 -6
  158. package/dist/components/ic-radio-option.js.map +1 -1
  159. package/dist/components/ic-search-bar.js +27 -13
  160. package/dist/components/ic-search-bar.js.map +1 -1
  161. package/dist/components/ic-select.js +15 -3
  162. package/dist/components/ic-select.js.map +1 -1
  163. package/dist/components/ic-side-navigation.js +2 -2
  164. package/dist/components/ic-side-navigation.js.map +1 -1
  165. package/dist/components/ic-switch.js +18 -7
  166. package/dist/components/ic-switch.js.map +1 -1
  167. package/dist/components/ic-tab-context.js +4 -3
  168. package/dist/components/ic-tab-context.js.map +1 -1
  169. package/dist/components/ic-tab-group.js +4 -4
  170. package/dist/components/ic-tab-group.js.map +1 -1
  171. package/dist/components/ic-tab-panel.js +9 -4
  172. package/dist/components/ic-tab-panel.js.map +1 -1
  173. package/dist/components/ic-tab.js +3 -3
  174. package/dist/components/ic-tab.js.map +1 -1
  175. package/dist/components/ic-text-field2.js +10 -1
  176. package/dist/components/ic-text-field2.js.map +1 -1
  177. package/dist/components/ic-theme.js +1 -1
  178. package/dist/components/ic-tooltip2.js +1 -1
  179. package/dist/components/ic-tooltip2.js.map +1 -1
  180. package/dist/components/ic-top-navigation.js +2 -2
  181. package/dist/components/ic-top-navigation.js.map +1 -1
  182. package/dist/core/core.css +1 -1
  183. package/dist/core/core.esm.js +1 -1
  184. package/dist/core/core.esm.js.map +1 -1
  185. package/dist/core/p-037273aa.entry.js +2 -0
  186. package/dist/core/{p-27528d04.entry.js.map → p-037273aa.entry.js.map} +1 -1
  187. package/dist/core/{p-da6f09cd.entry.js → p-0d63bfe4.entry.js} +2 -2
  188. package/dist/core/{p-da6f09cd.entry.js.map → p-0d63bfe4.entry.js.map} +0 -0
  189. package/dist/core/{p-73d41c36.entry.js → p-12e113bf.entry.js} +2 -2
  190. package/dist/core/p-12e113bf.entry.js.map +1 -0
  191. package/dist/core/p-155114db.entry.js +2 -0
  192. package/dist/core/p-155114db.entry.js.map +1 -0
  193. package/dist/core/{p-438e327e.entry.js → p-17d0d631.entry.js} +2 -2
  194. package/dist/core/p-17d0d631.entry.js.map +1 -0
  195. package/dist/core/p-1b619302.entry.js +2 -0
  196. package/dist/core/p-1b619302.entry.js.map +1 -0
  197. package/dist/core/{p-be583c9b.entry.js → p-2177dae2.entry.js} +2 -2
  198. package/dist/core/p-2177dae2.entry.js.map +1 -0
  199. package/dist/core/p-378a7270.entry.js +2 -0
  200. package/dist/core/p-378a7270.entry.js.map +1 -0
  201. package/dist/core/{p-0522eb9a.entry.js → p-3c6defd7.entry.js} +2 -2
  202. package/dist/core/{p-0522eb9a.entry.js.map → p-3c6defd7.entry.js.map} +0 -0
  203. package/dist/core/p-40d3fd89.entry.js +2 -0
  204. package/dist/core/p-40d3fd89.entry.js.map +1 -0
  205. package/dist/core/{p-a301cf67.entry.js → p-48029498.entry.js} +2 -2
  206. package/dist/core/{p-a301cf67.entry.js.map → p-48029498.entry.js.map} +0 -0
  207. package/dist/core/{p-36b25af4.entry.js → p-50a0f1a0.entry.js} +2 -2
  208. package/dist/core/p-50a0f1a0.entry.js.map +1 -0
  209. package/dist/core/{p-d8b6271d.entry.js → p-54b77947.entry.js} +2 -2
  210. package/dist/core/{p-d8b6271d.entry.js.map → p-54b77947.entry.js.map} +0 -0
  211. package/dist/core/{p-f37a732a.entry.js → p-59041cfc.entry.js} +2 -2
  212. package/dist/core/{p-f37a732a.entry.js.map → p-59041cfc.entry.js.map} +0 -0
  213. package/dist/core/p-5977c1e0.entry.js +2 -0
  214. package/dist/core/p-5977c1e0.entry.js.map +1 -0
  215. package/dist/core/{p-6ac7757f.entry.js → p-6009c5bc.entry.js} +2 -2
  216. package/dist/core/{p-6ac7757f.entry.js.map → p-6009c5bc.entry.js.map} +0 -0
  217. package/dist/core/p-7577c6a3.entry.js +2 -0
  218. package/dist/core/p-7577c6a3.entry.js.map +1 -0
  219. package/dist/core/p-8054c2c0.entry.js +2 -0
  220. package/dist/core/p-8054c2c0.entry.js.map +1 -0
  221. package/dist/core/{p-c96985bc.entry.js → p-89d46b9b.entry.js} +2 -2
  222. package/dist/core/{p-c96985bc.entry.js.map → p-89d46b9b.entry.js.map} +0 -0
  223. package/dist/core/{p-14153fa0.entry.js → p-972f4e69.entry.js} +2 -2
  224. package/dist/core/{p-14153fa0.entry.js.map → p-972f4e69.entry.js.map} +0 -0
  225. package/dist/core/{p-530b7fe0.entry.js → p-9a3d6bca.entry.js} +2 -2
  226. package/dist/core/{p-530b7fe0.entry.js.map → p-9a3d6bca.entry.js.map} +0 -0
  227. package/dist/core/p-9db8edb7.entry.js +2 -0
  228. package/dist/core/{p-3013158d.entry.js.map → p-9db8edb7.entry.js.map} +1 -1
  229. package/dist/core/p-9e1f450f.entry.js +2 -0
  230. package/dist/core/p-9e1f450f.entry.js.map +1 -0
  231. package/dist/core/{p-994111b7.entry.js → p-a183353c.entry.js} +2 -2
  232. package/dist/core/{p-994111b7.entry.js.map → p-a183353c.entry.js.map} +0 -0
  233. package/dist/core/p-a6715f61.entry.js +2 -0
  234. package/dist/core/p-a6715f61.entry.js.map +1 -0
  235. package/dist/core/p-a9237c61.entry.js +2 -0
  236. package/dist/core/p-a9237c61.entry.js.map +1 -0
  237. package/dist/core/p-aad5da60.entry.js +2 -0
  238. package/dist/core/p-aad5da60.entry.js.map +1 -0
  239. package/dist/core/p-af6a41bd.entry.js +2 -0
  240. package/dist/core/p-af6a41bd.entry.js.map +1 -0
  241. package/dist/core/p-bf4ddf33.entry.js +2 -0
  242. package/dist/core/p-bf4ddf33.entry.js.map +1 -0
  243. package/dist/core/p-bfa9392f.entry.js +2 -0
  244. package/dist/core/p-bfa9392f.entry.js.map +1 -0
  245. package/dist/core/p-c023c49c.entry.js +2 -0
  246. package/dist/core/p-c023c49c.entry.js.map +1 -0
  247. package/dist/core/p-c96adfd7.entry.js +2 -0
  248. package/dist/core/p-c96adfd7.entry.js.map +1 -0
  249. package/dist/core/p-d38168f0.entry.js +2 -0
  250. package/dist/core/p-d38168f0.entry.js.map +1 -0
  251. package/dist/core/{p-aebc7562.entry.js → p-d61c2983.entry.js} +2 -2
  252. package/dist/core/{p-aebc7562.entry.js.map → p-d61c2983.entry.js.map} +0 -0
  253. package/dist/core/p-db6566c0.entry.js +2 -0
  254. package/dist/core/p-db6566c0.entry.js.map +1 -0
  255. package/dist/core/{p-400b34b9.entry.js → p-ee3a9fd0.entry.js} +2 -2
  256. package/dist/core/p-ee3a9fd0.entry.js.map +1 -0
  257. package/dist/core/p-ef59f111.entry.js +2 -0
  258. package/dist/core/p-ef59f111.entry.js.map +1 -0
  259. package/dist/core/{p-c15bb762.js → p-f228c232.js} +2 -2
  260. package/dist/core/p-f228c232.js.map +1 -0
  261. package/dist/core/p-fce4b26b.entry.js +2 -0
  262. package/dist/core/p-fce4b26b.entry.js.map +1 -0
  263. package/dist/esm/core.js +1 -1
  264. package/dist/esm/{helpers-8b43d0d4.js → helpers-e090fe7e.js} +17 -2
  265. package/dist/esm/helpers-e090fe7e.js.map +1 -0
  266. package/dist/esm/ic-alert.entry.js +2 -2
  267. package/dist/esm/ic-alert.entry.js.map +1 -1
  268. package/dist/esm/ic-back-to-top.entry.js +1 -1
  269. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  270. package/dist/esm/ic-breadcrumb.entry.js +2 -2
  271. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  272. package/dist/esm/ic-button_3.entry.js +2 -2
  273. package/dist/esm/ic-button_3.entry.js.map +1 -1
  274. package/dist/esm/ic-card.entry.js +2 -2
  275. package/dist/esm/ic-card.entry.js.map +1 -1
  276. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  277. package/dist/esm/ic-checkbox.entry.js +12 -2
  278. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  279. package/dist/esm/ic-data-row.entry.js +2 -2
  280. package/dist/esm/ic-data-row.entry.js.map +1 -1
  281. package/dist/esm/ic-divider.entry.js +1 -1
  282. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  283. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  284. package/dist/esm/ic-footer-link.entry.js +2 -2
  285. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  286. package/dist/esm/ic-footer.entry.js +1 -1
  287. package/dist/esm/ic-hero.entry.js +2 -2
  288. package/dist/esm/ic-hero.entry.js.map +1 -1
  289. package/dist/esm/ic-input-component-container_3.entry.js +3 -3
  290. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  291. package/dist/esm/ic-input-label_2.entry.js +1 -1
  292. package/dist/esm/ic-link.entry.js +2 -2
  293. package/dist/esm/ic-link.entry.js.map +1 -1
  294. package/dist/esm/ic-navigation-button.entry.js +1 -1
  295. package/dist/esm/ic-navigation-group.entry.js +2 -2
  296. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  297. package/dist/esm/ic-navigation-item.entry.js +2 -2
  298. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  299. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  300. package/dist/esm/ic-page-header.entry.js +2 -2
  301. package/dist/esm/ic-page-header.entry.js.map +1 -1
  302. package/dist/esm/ic-radio-group.entry.js +1 -1
  303. package/dist/esm/ic-radio-option.entry.js +16 -3
  304. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  305. package/dist/esm/ic-search-bar.entry.js +27 -13
  306. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  307. package/dist/esm/ic-select.entry.js +13 -2
  308. package/dist/esm/ic-select.entry.js.map +1 -1
  309. package/dist/esm/ic-side-navigation.entry.js +2 -2
  310. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  311. package/dist/esm/ic-status-tag.entry.js +1 -1
  312. package/dist/esm/ic-step.entry.js +1 -1
  313. package/dist/esm/ic-stepper.entry.js +1 -1
  314. package/dist/esm/ic-switch.entry.js +16 -6
  315. package/dist/esm/ic-switch.entry.js.map +1 -1
  316. package/dist/esm/ic-tab-context.entry.js +4 -3
  317. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  318. package/dist/esm/ic-tab-group.entry.js +4 -4
  319. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  320. package/dist/esm/ic-tab-panel.entry.js +8 -5
  321. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  322. package/dist/esm/ic-tab.entry.js +4 -4
  323. package/dist/esm/ic-tab.entry.js.map +1 -1
  324. package/dist/esm/ic-text-field.entry.js +9 -1
  325. package/dist/esm/ic-text-field.entry.js.map +1 -1
  326. package/dist/esm/ic-theme.entry.js +1 -1
  327. package/dist/esm/ic-top-navigation.entry.js +2 -2
  328. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  329. package/dist/esm/loader.js +1 -1
  330. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +4 -0
  331. package/dist/types/components/ic-link/ic-link.d.ts +3 -0
  332. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +4 -0
  333. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +2 -0
  334. package/dist/types/components/ic-select/ic-select.d.ts +3 -0
  335. package/dist/types/components/ic-switch/ic-switch.d.ts +6 -2
  336. package/dist/types/components/ic-tab-panel/ic-tab-panel.d.ts +3 -0
  337. package/dist/types/components/ic-text-field/ic-text-field.d.ts +3 -0
  338. package/dist/types/components.d.ts +5 -4
  339. package/dist/types/utils/helpers.d.ts +3 -0
  340. package/hydrate/index.js +153 -59
  341. package/package.json +4 -4
  342. package/dist/cjs/helpers-60fda93f.js.map +0 -1
  343. package/dist/core/p-1bec5ccb.entry.js +0 -2
  344. package/dist/core/p-1bec5ccb.entry.js.map +0 -1
  345. package/dist/core/p-21025b10.entry.js +0 -2
  346. package/dist/core/p-21025b10.entry.js.map +0 -1
  347. package/dist/core/p-27528d04.entry.js +0 -2
  348. package/dist/core/p-3013158d.entry.js +0 -2
  349. package/dist/core/p-36b25af4.entry.js.map +0 -1
  350. package/dist/core/p-3d6902a3.entry.js +0 -2
  351. package/dist/core/p-3d6902a3.entry.js.map +0 -1
  352. package/dist/core/p-400b34b9.entry.js.map +0 -1
  353. package/dist/core/p-438e327e.entry.js.map +0 -1
  354. package/dist/core/p-4aa8c1e1.entry.js +0 -2
  355. package/dist/core/p-4aa8c1e1.entry.js.map +0 -1
  356. package/dist/core/p-4af4a9e7.entry.js +0 -2
  357. package/dist/core/p-4af4a9e7.entry.js.map +0 -1
  358. package/dist/core/p-4c1e1d04.entry.js +0 -2
  359. package/dist/core/p-4c1e1d04.entry.js.map +0 -1
  360. package/dist/core/p-4e498c03.entry.js +0 -2
  361. package/dist/core/p-4e498c03.entry.js.map +0 -1
  362. package/dist/core/p-59a917d4.entry.js +0 -2
  363. package/dist/core/p-59a917d4.entry.js.map +0 -1
  364. package/dist/core/p-605e4270.entry.js +0 -2
  365. package/dist/core/p-605e4270.entry.js.map +0 -1
  366. package/dist/core/p-682686a6.entry.js +0 -2
  367. package/dist/core/p-682686a6.entry.js.map +0 -1
  368. package/dist/core/p-71282f37.entry.js +0 -2
  369. package/dist/core/p-71282f37.entry.js.map +0 -1
  370. package/dist/core/p-73d41c36.entry.js.map +0 -1
  371. package/dist/core/p-8bcadf55.entry.js +0 -2
  372. package/dist/core/p-8bcadf55.entry.js.map +0 -1
  373. package/dist/core/p-98e9eccc.entry.js +0 -2
  374. package/dist/core/p-98e9eccc.entry.js.map +0 -1
  375. package/dist/core/p-9bf3f413.entry.js +0 -2
  376. package/dist/core/p-9bf3f413.entry.js.map +0 -1
  377. package/dist/core/p-be583c9b.entry.js.map +0 -1
  378. package/dist/core/p-c15bb762.js.map +0 -1
  379. package/dist/core/p-c817e46b.entry.js +0 -2
  380. package/dist/core/p-c817e46b.entry.js.map +0 -1
  381. package/dist/core/p-c8772106.entry.js +0 -2
  382. package/dist/core/p-c8772106.entry.js.map +0 -1
  383. package/dist/core/p-d4c6f4fb.entry.js +0 -2
  384. package/dist/core/p-d4c6f4fb.entry.js.map +0 -1
  385. package/dist/core/p-d78bded9.entry.js +0 -2
  386. package/dist/core/p-d78bded9.entry.js.map +0 -1
  387. package/dist/core/p-d8973266.entry.js +0 -2
  388. package/dist/core/p-d8973266.entry.js.map +0 -1
  389. package/dist/core/p-fca84a85.entry.js +0 -2
  390. package/dist/core/p-fca84a85.entry.js.map +0 -1
  391. package/dist/esm/helpers-8b43d0d4.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/ic-hero/ic-hero.css?tag=ic-hero&encapsulation=shadow","src/components/ic-hero/ic-hero.tsx"],"names":["icHeroCss","Hero","this","rightContent","secondaryHeading","undefined","getThemeForegroundColor","[object Object]","ev","theme","detail","foregroundColor","mode","disableBackgroundParallax","scrolltotop","document","scrollingElement","scrollTop","factor","y","scrollFactor","slotHasContent","el","onComponentRequiredPropUndefined","prop","heading","propName","aligned","small","subheading","secondarySubheading","backgroundImage","style","background-image","background-position","h","Host","class","IcThemeForegroundEnum","Dark","fullHeight","leftContentFullWidth","name","variant"],"mappings":"0IAAA,MAAMA,EAAY,2lMCkCLC,EAAI,iNA+B+B,mBAKf,2BAKmB,kBAKzB,wBAEQ,wBAED,0CAG7BC,KAAKC,cAAgBD,KAAKE,mBAAqBC,+BAEJC,IAG9CC,mBAAmBC,GACjB,MAAMC,EAAiBD,EAAGE,OAC1BR,KAAKS,gBAAkBF,EAAMG,KAI/BL,WACE,GAAIL,KAAKW,0BAA2B,CAClC,OAGF,MAAMC,EAAcC,SAASC,iBAAiBC,UAC9C,MAAMC,EAAS,GACf,MAAMC,GAAK,IAAML,EAAcI,EAC/BhB,KAAKkB,aAAe,SAAWD,EAAI,KAGrCZ,oBACEL,KAAKC,aAAekB,EAAenB,KAAKoB,GAAI,aAG9Cf,mBACEgB,EACE,CAAC,CAAEC,KAAMtB,KAAKuB,QAASC,SAAU,YACjC,QAIJnB,sBACEL,KAAKC,aAAekB,EAAenB,KAAKoB,GAAI,aAG9Cf,SACE,MAAMoB,QACJA,EAAOC,MACPA,EAAKH,QACLA,EAAOI,WACPA,EAAUzB,iBACVA,EAAgB0B,oBAChBA,EAAmBnB,gBACnBA,EAAeoB,gBACfA,EAAeX,aACfA,GACElB,KAEJ,IAAI8B,EAAQ,GAEZ,GAAID,IAAoB1B,UAAW,CACjC2B,EAAQ,CACNC,mBAAoB,OAASF,EAAkB,IAC/CG,sBAAuBd,GAI3B,OACEe,EAACC,EAAI,CACHC,MAAO,CACL9B,CAAC+B,EAAsBC,MACrB5B,IAAoB2B,EAAsBC,KAC5ChC,CAAC,wBAAyBwB,IAAoB1B,WAEhD2B,MAAOA,GAEPG,EAAA,uBAAA,CACER,QAASA,EACTa,WAAU,KACVH,MAAM,qBAENF,EAAA,MAAA,CACEE,MAAO,CACL9B,CAAC,kBAAmB,KACpBA,CAAC,6BAA8BL,KAAKuC,uBAGtCN,EAAA,MAAA,CAAKE,MAAM,WACTF,EAAA,OAAA,CAAMO,KAAK,WACTP,EAAA,gBAAA,CACEQ,QAASf,EAAQ,KAAO,KACxBS,MAAO,CAAE9B,CAAC,2BAA4BqB,IAErCH,KAIPU,EAAA,MAAA,CAAKE,MAAM,cACTF,EAAA,OAAA,CAAMO,KAAK,cACTP,EAAA,gBAAA,CAAeQ,QAAQ,QAAQd,KAGnCM,EAAA,MAAA,CAAKE,MAAM,yBACTF,EAAA,OAAA,CAAMO,KAAK,mBAGbtC,IAAqBC,WAAaH,KAAKC,eACvCgC,EAAA,MAAA,CAAKE,MAAM,mBACTF,EAAA,OAAA,CAAMO,KAAK,aACRtC,GACC+B,EAAA,MAAA,CAAKE,MAAM,uBACTF,EAAA,MAAA,CAAKE,MAAM,qBACTF,EAAA,gBAAA,CAAeQ,QAAQ,MACpBvC,IAGL+B,EAAA,MAAA,CAAKE,MAAM,wBACTF,EAAA,gBAAA,CAAeQ,QAAQ,kBACpBb","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: block;\n background-color: var(--ic-theme-tertiary);\n color: var(--ic-theme-text);\n --hero-heading-bottom-margin: var(--ic-space-md);\n}\n\n:host(.dark) {\n background-color: var(--ic-theme-secondary);\n}\n\n:host(.has-background-image) {\n background-repeat: no-repeat;\n background-position: right -100px;\n background-size: auto calc(100% + 100px);\n box-shadow: var(--ic-elevation-inset);\n}\n\n@media (prefers-reduced-motion) {\n :host(.has-background-image) {\n background-position: right -100px !important;\n }\n}\n\nic-typography.heading-bottom-spacing {\n margin-bottom: var(--hero-heading-bottom-margin);\n}\n\n.section-container {\n display: flex;\n align-items: center;\n height: 100%;\n}\n\n.left-container {\n flex-basis: 50%;\n padding: var(--ic-space-xl) 0;\n}\n\n.right-container {\n flex-basis: 50%;\n}\n\n.interaction-container {\n display: flex;\n gap: var(--ic-space-md);\n margin-top: var(--ic-space-lg);\n}\n\n.secondary-container {\n display: flex;\n flex-direction: column;\n justify-content: center;\n border-left: var(--ic-space-xxxs) solid var(--ic-theme-text);\n}\n\n.secondary-subheading {\n margin-top: var(--ic-space-xxs);\n}\n\n:host([content-aligned=\"left\"]) .left-container,\n:host([content-aligned=\"left\"]) .interaction-container {\n justify-content: flex-start;\n text-align: left;\n}\n\n:host([content-aligned=\"center\"]) .left-container,\n:host([content-aligned=\"center\"]) .interaction-container {\n justify-content: center;\n text-align: center;\n}\n\n.left-container-full-width {\n flex-basis: 100% !important;\n max-width: 66.6%;\n}\n\n@media (min-width: 1044px) {\n :host,\n .section-container {\n min-height: 208px;\n }\n\n :host([small]),\n :host([small]) .section-container {\n min-height: 173px;\n }\n\n .left-container {\n flex-basis: 66.6%;\n min-height: 144px;\n }\n\n .right-container {\n flex-basis: 33.3%;\n margin-left: 50px;\n }\n\n .secondary-container {\n min-height: 144px;\n }\n\n .secondary-heading,\n .secondary-subheading {\n margin-left: 63px;\n }\n}\n\n@media (min-width: 801px) and (max-width: 1043px) {\n :host(.has-background-image) {\n background-image: none !important;\n }\n\n :host,\n .section-container {\n min-height: 256px;\n }\n\n :host([small]),\n :host([small]) .section-container {\n min-height: 240px;\n }\n\n :host([secondary-heading]),\n :host([secondary-heading]) .section-container {\n min-height: 224px;\n }\n\n .left-container {\n min-height: 160px;\n }\n\n .secondary-container {\n min-height: 160px;\n }\n\n .secondary-heading,\n .secondary-subheading {\n margin-left: 94.75px;\n }\n\n .right-container {\n margin-left: 50px;\n }\n}\n\n@media (min-width: 641px) and (max-width: 800px) {\n :host(.has-background-image) {\n background-image: none !important;\n }\n\n :host,\n .section-container {\n min-height: 256px;\n }\n\n :host([small]),\n :host([small]) .section-container {\n min-height: 240px;\n }\n\n :host([secondary-heading]),\n :host([secondary-heading]) .section-container {\n min-height: 224px;\n }\n\n .left-container {\n min-height: 160px;\n }\n\n .secondary-container {\n min-height: 160px;\n }\n\n .secondary-heading,\n .secondary-subheading {\n margin-left: 34px;\n }\n\n .right-container {\n margin-left: 50px;\n }\n}\n\n@media (min-width: 481px) and (max-width: 640px) {\n :host(.has-background-image) {\n background-image: none !important;\n }\n\n :host,\n .section-container {\n min-height: 208px;\n }\n\n :host([small]),\n :host([small]) .section-container {\n min-height: 173px;\n }\n\n :host([secondary-heading]),\n :host([secondary-heading]) .section-container {\n min-height: 280px;\n }\n\n :host([secondary-heading]) .section-container,\n :host([small]) .section-container,\n .section-container {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .left-container {\n height: fit-content;\n }\n\n .secondary-container {\n height: fit-content;\n border: none;\n }\n\n .right-container {\n margin-bottom: 40px;\n }\n}\n\n@media (max-width: 480px) {\n :host(.has-background-image) {\n background-image: none !important;\n }\n\n :host,\n .section-container {\n min-height: 192px;\n }\n\n :host([small]),\n :host([small]) .section-container {\n min-height: 173px;\n }\n\n :host([secondary-heading]),\n :host([secondary-heading]) .section-container {\n min-height: 264px;\n }\n\n :host([secondary-heading]) .section-container,\n :host([small]) .section-container,\n .section-container {\n flex-direction: column;\n align-items: flex-start;\n }\n\n .left-container {\n height: fit-content;\n }\n\n .secondary-container {\n height: fit-content;\n border: none;\n }\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n State,\n Listen,\n} from \"@stencil/core\";\nimport {\n IcAlignment,\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport {\n slotHasContent,\n getThemeForegroundColor,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcHeroContentAlignments } from \"./ic-hero.types\";\n\n/**\n * @slot heading - Content will be rendered in the title area, in place of the heading.\n * @slot subheading - Content will be rendered in the title area, in place of the subheading.\n * @slot interaction - Content will be rendered in the interaction area, adjacent to the title area.\n * @slot secondary - Content will be rendered in the secondary content area.\n */\n\n@Component({\n tag: \"ic-hero\",\n styleUrl: \"ic-hero.css\",\n shadow: true,\n})\nexport class Hero {\n @Element() el: HTMLIcHeroElement;\n\n /**\n * The heading of the hero\n */\n @Prop() heading!: string;\n\n /**\n * Description for the hero\n */\n @Prop() subheading?: string;\n\n /**\n * Optional secondary heading, replaced by slotted right content\n */\n @Prop() secondaryHeading?: string;\n\n /**\n * Optional secondary subheading, replaced by slotted right content\n */\n @Prop() secondarySubheading?: string;\n\n /**\n * Optional background image\n */\n @Prop() backgroundImage?: string;\n\n /**\n * Whether the background image (if set) scrolls using a parallax effect.\n */\n @Prop() disableBackgroundParallax?: boolean = false;\n\n /**\n * The alignment of the hero content\n */\n @Prop() aligned: IcAlignment = \"left\";\n\n /**\n * The alignment of the hero content\n */\n @Prop() contentAligned: IcHeroContentAlignments = \"left\";\n\n /**\n * Alter styling for use with small content/pages\n */\n @Prop() small: boolean = false;\n\n @State() rightContent: boolean = false;\n\n @State() scrollFactor: string = \"right -100px\";\n\n @State() leftContentFullWidth: boolean =\n !this.rightContent && this.secondaryHeading === undefined;\n\n @State() foregroundColor: IcThemeForeground = getThemeForegroundColor();\n\n @Listen(\"icThemeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.foregroundColor = theme.mode;\n }\n\n @Listen(\"scroll\", { target: \"document\" })\n doScroll(): void {\n if (this.disableBackgroundParallax) {\n return;\n }\n\n const scrolltotop = document.scrollingElement.scrollTop;\n const factor = 0.4;\n const y = -100 + scrolltotop * factor;\n this.scrollFactor = \"right \" + y + \"px\";\n }\n\n componentWillLoad(): void {\n this.rightContent = slotHasContent(this.el, \"secondary\");\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.heading, propName: \"heading\" }],\n \"Hero\"\n );\n }\n\n componentWillRender(): void {\n this.rightContent = slotHasContent(this.el, \"secondary\");\n }\n\n render() {\n const {\n aligned,\n small,\n heading,\n subheading,\n secondaryHeading,\n secondarySubheading,\n foregroundColor,\n backgroundImage,\n scrollFactor,\n } = this;\n\n let style = {};\n\n if (backgroundImage !== undefined) {\n style = {\n \"background-image\": \"url(\" + backgroundImage + \")\",\n \"background-position\": scrollFactor,\n };\n }\n\n return (\n <Host\n class={{\n [IcThemeForegroundEnum.Dark]:\n foregroundColor === IcThemeForegroundEnum.Dark,\n [\"has-background-image\"]: backgroundImage !== undefined,\n }}\n style={style}\n >\n <ic-section-container\n aligned={aligned}\n fullHeight\n class=\"section-container\"\n >\n <div\n class={{\n [\"left-container\"]: true,\n [\"left-container-full-width\"]: this.leftContentFullWidth,\n }}\n >\n <div class=\"heading\">\n <slot name=\"heading\">\n <ic-typography\n variant={small ? \"h2\" : \"h1\"}\n class={{ [\"heading-bottom-spacing\"]: !small }}\n >\n {heading}\n </ic-typography>\n </slot>\n </div>\n <div class=\"subheading\">\n <slot name=\"subheading\">\n <ic-typography variant=\"body\">{subheading}</ic-typography>\n </slot>\n </div>\n <div class=\"interaction-container\">\n <slot name=\"interaction\"></slot>\n </div>\n </div>\n {(secondaryHeading !== undefined || this.rightContent) && (\n <div class=\"right-container\">\n <slot name=\"secondary\">\n {secondaryHeading && (\n <div class=\"secondary-container\">\n <div class=\"secondary-heading\">\n <ic-typography variant=\"h4\">\n {secondaryHeading}\n </ic-typography>\n </div>\n <div class=\"secondary-subheading\">\n <ic-typography variant=\"subtitle-small\">\n {secondarySubheading}\n </ic-typography>\n </div>\n </div>\n )}\n </slot>\n </div>\n )}\n </ic-section-container>\n </Host>\n );\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import{r as e,c as t,h as i,H as o,g as a}from"./p-f9370be6.js";import{a as r,r as n,b as c,i as s}from"./p-c15bb762.js";import"./p-6f57b13c.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([disabled]){color:var(--ic-architectural-200);pointer-events:none}:host([small]) .container{margin-bottom:10px}.container{display:flex;width:-moz-fit-content;width:fit-content;margin-bottom:var(--ic-space-sm);margin-left:var(--ic-space-xxs)}.checkbox{-webkit-appearance:none;-moz-appearance:none;display:block;position:relative;top:0;left:0;height:var(--ic-space-lg);width:var(--ic-space-lg);background-color:transparent;border:1px solid var(--ic-architectural-300);border-radius:var(--ic-border-radius);outline:none;cursor:pointer;transition:var(--ic-easing-transition-fast)}.checkbox:checked{background-color:var(--ic-action-default);border:1px solid var(--ic-action-default);transition:var(--ic-easing-transition-slow)}.checkbox:checked:disabled{background-color:var(--ic-architectural-200)}.checkbox.indeterminate:checked{background-color:transparent;border:2px solid var(--ic-action-default)}.checkbox:checked:hover{background-color:var(--ic-action-default-hover)}.checkbox.indeterminate:checked:hover{background-color:var(--ic-action-default-bg-hover);border:2px solid var(--ic-action-default-hover)}.checkbox:checked:active{background-color:var(--ic-action-default-active)}.checkbox.indeterminate:checked:active{background-color:var(--ic-action-default-bg-active);border:2px solid var(--ic-action-default-active)}.checkbox:hover{background-color:var(--ic-action-default-bg-hover);box-shadow:0 0 0 4px var(--ic-action-default-bg-hover);border:1px solid var(--ic-action-default-hover)}.checkbox:active{background-color:var(--ic-action-default-bg-active);box-shadow:0 0 0 4px var(--ic-action-default-bg-active);border:1px solid var(--ic-action-default-active)}.checkbox:focus{box-shadow:var(--ic-border-focus)}.checkbox:disabled{border:1px dashed var(--ic-architectural-200)}.checkbox-label{padding-left:var(--ic-space-sm)}.checkbox-label:hover{cursor:pointer}.checkmark{position:relative;right:calc(-1 * var(--ic-space-lg));margin-left:calc(-1 * var(--ic-space-lg));fill:white;z-index:1;background-color:transparent;pointer-events:none}.indeterminate-symbol{position:relative;width:14px;height:var(--ic-space-xxxs);top:11px;right:-19px;margin-left:-14px;z-index:1;background-color:var(--ic-action-default);pointer-events:none}.container:hover .indeterminate-symbol{background-color:var(--ic-action-default-hover)}.container:active .indeterminate-symbol{background-color:var(--ic-action-default-active)}.additional-field-wrapper{margin-left:44px;margin-top:var(--ic-space-xs)}.branch-corner{color:var(--ic-action-default);height:var(--ic-space-md);width:var(--ic-space-xl);border-radius:0 0 0 3px;border-bottom:2px solid var(--ic-action-default);border-left:2px solid var(--ic-action-default)}.dynamic-container{display:flex;position:relative;margin-left:15px;margin-top:-6px;margin-bottom:var(--ic-space-md);gap:var(--ic-space-xs)}.dynamic-text{color:var(--ic-action-default);margin-top:7px;margin-bottom:var(--ic-space-xs);border-radius:2%}';const l=class{constructor(i){e(this,i);this.checkboxChecked=t(this,"checkboxChecked",7);this.handleClick=()=>{this.checked=!this.checked;this.checkboxChecked.emit()};this.checked=false;this.disabled=false;this.label=undefined;this.value=undefined;this.name=undefined;this.groupLabel=undefined;this.dynamicText="This selection requires additional answers";this.additionalFieldDisplay="static";this.indeterminate=false}componentDidRender(){if(this.additionalFieldDisplay==="static"){const e=this.host.querySelector("ic-text-field");if(!this.checked){e&&e.setAttribute("disabled","")}else{e&&e.removeAttribute("disabled")}}else{if(!this.checked){this.additionalFieldContainer.style.display="none"}else{this.additionalFieldContainer.style.display="flex"}}}componentDidLoad(){r([{prop:this.label,propName:"label"},{prop:this.value,propName:"value"}],"Checkbox")}render(){const e=`ic-checkbox-${this.label!==undefined?this.label:this.value}-${this.groupLabel}`;this.checked?n(true,this.host,this.name,this.checked&&this.value,this.disabled):c(this.host);return i(o,null,i("div",{class:{["container"]:true,["disabled"]:this.disabled}},this.checked&&!this.indeterminate&&i("svg",{class:"checkmark",width:"24",height:"24",xmlns:"http://www.w3.org/2000/svg","fill-rule":"evenodd","clip-rule":"evenodd"},i("title",null,"checkmark icon"),i("path",{d:"M21 6.285l-11.16 12.733-6.84-6.018 1.319-1.49 5.341 4.686 9.865-11.196 1.475 1.285z"})),this.checked&&this.indeterminate&&i("div",{class:"indeterminate-symbol"}),i("input",{role:"checkbox",class:{["checkbox"]:true,["checked"]:this.checked,["indeterminate"]:this.indeterminate},type:"checkbox",name:this.name,id:e,value:this.value,disabled:this.disabled?true:null,checked:this.checked,onClick:this.handleClick}),i("ic-typography",{variant:"body"},i("label",{class:"checkbox-label",htmlFor:e},this.label))),s(this.host,"additional-field")&&i("div",{class:"dynamic-container",ref:e=>this.additionalFieldContainer=e},this.additionalFieldDisplay==="dynamic"&&i("div",{class:"branch-corner"}),i("div",null,this.additionalFieldDisplay==="dynamic"&&i("ic-typography",{variant:"caption"},i("p",{class:"dynamic-text","aria-live":"polite"},this.dynamicText)),i("div",{class:{"additional-field-wrapper":this.additionalFieldDisplay==="static"}},i("slot",{name:"additional-field"})))))}get host(){return a(this)}};l.style=d;export{l as ic_checkbox};
2
- //# sourceMappingURL=p-71282f37.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/ic-checkbox/ic-checkbox.css?tag=ic-checkbox&encapsulation=shadow","src/components/ic-checkbox/ic-checkbox.tsx"],"names":["icCheckboxCss","Checkbox","this","handleClick","checked","checkboxChecked","emit","[object Object]","additionalFieldDisplay","textfield","host","querySelector","setAttribute","removeAttribute","additionalFieldContainer","style","display","onComponentRequiredPropUndefined","prop","label","propName","value","id","undefined","groupLabel","renderHiddenInput","name","disabled","removeHiddenInput","h","Host","class","indeterminate","width","height","xmlns","fill-rule","clip-rule","d","role","type","onClick","variant","htmlFor","isSlotUsed","ref","el","aria-live","dynamicText","additional-field-wrapper"],"mappings":"iJAAA,MAAMA,EAAgB,kvKCsBTC,EAAQ,gFAgDXC,KAAAC,YAAc,KACpBD,KAAKE,SAAWF,KAAKE,QACrBF,KAAKG,gBAAgBC,qBA9CsB,oBAIhB,+GAoBC,yEAK5B,4BAI+B,MAgBjCC,qBACE,GAAIL,KAAKM,yBAA2B,SAAU,CAC5C,MAAMC,EAAYP,KAAKQ,KAAKC,cAAc,iBAC1C,IAAKT,KAAKE,QAAS,CACjBK,GAAaA,EAAUG,aAAa,WAAY,QAC3C,CACLH,GAAaA,EAAUI,gBAAgB,iBAEpC,CACL,IAAKX,KAAKE,QAAS,CACjBF,KAAKY,yBAAyBC,MAAMC,QAAU,WACzC,CACLd,KAAKY,yBAAyBC,MAAMC,QAAU,SAKpDT,mBACEU,EACE,CACE,CAAEC,KAAMhB,KAAKiB,MAAOC,SAAU,SAC9B,CAAEF,KAAMhB,KAAKmB,MAAOD,SAAU,UAEhC,YAIJb,SACE,MAAMe,EAAK,eACTpB,KAAKiB,QAAUI,UAAYrB,KAAKiB,MAAQjB,KAAKmB,SAC3CnB,KAAKsB,aAETtB,KAAKE,QACDqB,EACE,KACAvB,KAAKQ,KACLR,KAAKwB,KACLxB,KAAKE,SAAWF,KAAKmB,MACrBnB,KAAKyB,UAEPC,EAAkB1B,KAAKQ,MAE3B,OACEmB,EAACC,EAAI,KACHD,EAAA,MAAA,CAAKE,MAAO,CAAExB,CAAC,aAAc,KAAMA,CAAC,YAAaL,KAAKyB,WACnDzB,KAAKE,UAAYF,KAAK8B,eACrBH,EAAA,MAAA,CACEE,MAAM,YACNE,MAAM,KACNC,OAAO,KACPC,MAAM,6BAA4BC,YACxB,UAASC,YACT,WAEVR,EAAA,QAAA,KAAA,kBACAA,EAAA,OAAA,CAAMS,EAAE,yFAGXpC,KAAKE,SAAWF,KAAK8B,eACpBH,EAAA,MAAA,CAAKE,MAAM,yBAEbF,EAAA,QAAA,CACEU,KAAK,WACLR,MAAO,CACLxB,CAAC,YAAa,KACdA,CAAC,WAAYL,KAAKE,QAClBG,CAAC,iBAAkBL,KAAK8B,eAE1BQ,KAAK,WACLd,KAAMxB,KAAKwB,KACXJ,GAAIA,EACJD,MAAOnB,KAAKmB,MACZM,SAAUzB,KAAKyB,SAAW,KAAO,KACjCvB,QAASF,KAAKE,QACdqC,QAASvC,KAAKC,cAEhB0B,EAAA,gBAAA,CAAea,QAAQ,QACrBb,EAAA,QAAA,CAAOE,MAAM,iBAAiBY,QAASrB,GACpCpB,KAAKiB,SAIXyB,EAAW1C,KAAKQ,KAAM,qBACrBmB,EAAA,MAAA,CACEE,MAAM,oBACNc,IAAMC,GAAQ5C,KAAKY,yBAA2BgC,GAE7C5C,KAAKM,yBAA2B,WAC/BqB,EAAA,MAAA,CAAKE,MAAM,kBAEbF,EAAA,MAAA,KACG3B,KAAKM,yBAA2B,WAC/BqB,EAAA,gBAAA,CAAea,QAAQ,WACrBb,EAAA,IAAA,CAAGE,MAAM,eAAcgB,YAAW,UAC/B7C,KAAK8C,cAIZnB,EAAA,MAAA,CACEE,MAAO,CACLkB,2BACE/C,KAAKM,yBAA2B,WAGpCqB,EAAA,OAAA,CAAMH,KAAK","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host([disabled]) {\n color: var(--ic-architectural-200);\n pointer-events: none;\n}\n\n:host([small]) .container {\n margin-bottom: 10px;\n}\n\n.container {\n display: flex;\n width: fit-content;\n margin-bottom: var(--ic-space-sm);\n margin-left: var(--ic-space-xxs);\n}\n\n.checkbox {\n -webkit-appearance: none;\n -moz-appearance: none;\n display: block;\n position: relative;\n top: 0;\n left: 0;\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n background-color: transparent;\n border: 1px solid var(--ic-architectural-300);\n border-radius: var(--ic-border-radius);\n outline: none;\n cursor: pointer;\n transition: var(--ic-easing-transition-fast);\n}\n\n.checkbox:checked {\n background-color: var(--ic-action-default);\n border: 1px solid var(--ic-action-default);\n transition: var(--ic-easing-transition-slow);\n}\n\n.checkbox:checked:disabled {\n background-color: var(--ic-architectural-200);\n}\n\n.checkbox.indeterminate:checked {\n background-color: transparent;\n border: 2px solid var(--ic-action-default);\n}\n\n.checkbox:checked:hover {\n background-color: var(--ic-action-default-hover);\n}\n\n.checkbox.indeterminate:checked:hover {\n background-color: var(--ic-action-default-bg-hover);\n border: 2px solid var(--ic-action-default-hover);\n}\n\n.checkbox:checked:active {\n background-color: var(--ic-action-default-active);\n}\n\n.checkbox.indeterminate:checked:active {\n background-color: var(--ic-action-default-bg-active);\n border: 2px solid var(--ic-action-default-active);\n}\n\n.checkbox:hover {\n background-color: var(--ic-action-default-bg-hover);\n box-shadow: 0 0 0 4px var(--ic-action-default-bg-hover);\n border: 1px solid var(--ic-action-default-hover);\n}\n\n.checkbox:active {\n background-color: var(--ic-action-default-bg-active);\n box-shadow: 0 0 0 4px var(--ic-action-default-bg-active);\n border: 1px solid var(--ic-action-default-active);\n}\n\n.checkbox:focus {\n box-shadow: var(--ic-border-focus);\n}\n\n.checkbox:disabled {\n border: 1px dashed var(--ic-architectural-200);\n}\n\n.checkbox-label {\n padding-left: var(--ic-space-sm);\n}\n\n.checkbox-label:hover {\n cursor: pointer;\n}\n\n.checkmark {\n position: relative;\n right: calc(-1 * var(--ic-space-lg));\n margin-left: calc(-1 * var(--ic-space-lg));\n fill: white;\n z-index: 1;\n background-color: transparent;\n pointer-events: none;\n}\n\n.indeterminate-symbol {\n position: relative;\n width: 14px;\n height: var(--ic-space-xxxs);\n top: 11px;\n right: -19px;\n margin-left: -14px;\n z-index: 1;\n background-color: var(--ic-action-default);\n pointer-events: none;\n}\n\n.container:hover .indeterminate-symbol {\n background-color: var(--ic-action-default-hover);\n}\n\n.container:active .indeterminate-symbol {\n background-color: var(--ic-action-default-active);\n}\n\n.additional-field-wrapper {\n margin-left: 44px;\n margin-top: var(--ic-space-xs);\n}\n\n.branch-corner {\n color: var(--ic-action-default);\n height: var(--ic-space-md);\n width: var(--ic-space-xl);\n border-radius: 0 0 0 3px;\n border-bottom: 2px solid var(--ic-action-default);\n border-left: 2px solid var(--ic-action-default);\n}\n\n.dynamic-container {\n display: flex;\n position: relative;\n margin-left: 15px;\n margin-top: -6px;\n margin-bottom: var(--ic-space-md);\n gap: var(--ic-space-xs);\n}\n\n.dynamic-text {\n color: var(--ic-action-default);\n margin-top: 7px;\n margin-bottom: var(--ic-space-xs);\n border-radius: 2%;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Element,\n Event,\n EventEmitter,\n} from \"@stencil/core\";\nimport { IcAdditionalFieldTypes } from \"../../utils/types\";\nimport {\n isSlotUsed,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n removeHiddenInput,\n} from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-checkbox\",\n styleUrl: \"ic-checkbox.css\",\n shadow: true,\n})\nexport class Checkbox {\n /**\n * Set the checkbox to the checked state\n */\n @Prop({ reflect: true }) checked?: boolean = false;\n /**\n * Set the checkbox to the disabled state\n */\n @Prop() disabled?: boolean = false;\n /**\n * Provide a label for the input\n */\n @Prop() label!: string;\n /**\n * Provide a value for the input\n */\n @Prop() value!: string;\n /**\n * Provide a name for the input\n */\n @Prop() name: string;\n /**\n * Provide a group label for the input\n */\n @Prop() groupLabel: string;\n /**\n * Provide a text prop for the dynamic text\n */\n @Prop() dynamicText: string = \"This selection requires additional answers\";\n /**\n * Set which style of additionalField will be displayed if used\n */\n @Prop({ reflect: true }) additionalFieldDisplay: IcAdditionalFieldTypes =\n \"static\";\n /**\n * Display the indeterminate state when checked\n */\n @Prop() indeterminate: boolean = false;\n\n @Element() host: HTMLIcCheckboxElement;\n\n /**\n * Emitted when a checkbox has been checked\n */\n @Event() checkboxChecked: EventEmitter<void>;\n\n private additionalFieldContainer: HTMLDivElement;\n\n private handleClick = () => {\n this.checked = !this.checked;\n this.checkboxChecked.emit();\n };\n\n componentDidRender(): void {\n if (this.additionalFieldDisplay === \"static\") {\n const textfield = this.host.querySelector(\"ic-text-field\");\n if (!this.checked) {\n textfield && textfield.setAttribute(\"disabled\", \"\");\n } else {\n textfield && textfield.removeAttribute(\"disabled\");\n }\n } else {\n if (!this.checked) {\n this.additionalFieldContainer.style.display = \"none\";\n } else {\n this.additionalFieldContainer.style.display = \"flex\";\n }\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [\n { prop: this.label, propName: \"label\" },\n { prop: this.value, propName: \"value\" },\n ],\n \"Checkbox\"\n );\n }\n\n render() {\n const id = `ic-checkbox-${\n this.label !== undefined ? this.label : this.value\n }-${this.groupLabel}`;\n\n this.checked\n ? renderHiddenInput(\n true,\n this.host,\n this.name,\n this.checked && this.value,\n this.disabled\n )\n : removeHiddenInput(this.host);\n\n return (\n <Host>\n <div class={{ [\"container\"]: true, [\"disabled\"]: this.disabled }}>\n {this.checked && !this.indeterminate && (\n <svg\n class=\"checkmark\"\n width=\"24\"\n height=\"24\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill-rule=\"evenodd\"\n clip-rule=\"evenodd\"\n >\n <title>checkmark icon</title>\n <path d=\"M21 6.285l-11.16 12.733-6.84-6.018 1.319-1.49 5.341 4.686 9.865-11.196 1.475 1.285z\" />\n </svg>\n )}\n {this.checked && this.indeterminate && (\n <div class=\"indeterminate-symbol\" />\n )}\n <input\n role=\"checkbox\"\n class={{\n [\"checkbox\"]: true,\n [\"checked\"]: this.checked,\n [\"indeterminate\"]: this.indeterminate,\n }}\n type=\"checkbox\"\n name={this.name}\n id={id}\n value={this.value}\n disabled={this.disabled ? true : null}\n checked={this.checked}\n onClick={this.handleClick}\n ></input>\n <ic-typography variant=\"body\">\n <label class=\"checkbox-label\" htmlFor={id}>\n {this.label}\n </label>\n </ic-typography>\n </div>\n {isSlotUsed(this.host, \"additional-field\") && (\n <div\n class=\"dynamic-container\"\n ref={(el) => (this.additionalFieldContainer = el)}\n >\n {this.additionalFieldDisplay === \"dynamic\" && (\n <div class=\"branch-corner\"></div>\n )}\n <div>\n {this.additionalFieldDisplay === \"dynamic\" && (\n <ic-typography variant=\"caption\">\n <p class=\"dynamic-text\" aria-live=\"polite\">\n {this.dynamicText}\n </p>\n </ic-typography>\n )}\n <div\n class={{\n \"additional-field-wrapper\":\n this.additionalFieldDisplay === \"static\",\n }}\n >\n <slot name=\"additional-field\"></slot>\n </div>\n </div>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/ic-footer-link-group/ic-footer-link-group.css?tag=ic-footer-link-group&encapsulation=shadow","src/components/ic-footer-link-group/ic-footer-link-group.tsx"],"names":["icFooterLinkGroupCss","FooterLinkGroup","this","handleKeydown","event","key","toggleExpanded","expanded","getThemeForegroundColor","DEVICE_SIZES","XL","[object Object]","e","parentElement","classList","contains","isSmall","small","el","ev","theme","detail","dropdownIconStyle","mode","onComponentRequiredPropUndefined","prop","groupTitle","propName","h","Host","class","variant","tabIndex","onClick","onKeydown","aria-haspopup","aria-expanded","fullHeight","xmlns","aria-hidden","role","width","height","preserveAspectRatio","viewBox","fill","d","transform"],"mappings":"mIAAA,MAAMA,EAAuB,qxICqBhBC,EAAe,+BA4BlBC,KAAAC,cAAiBC,IACvB,GAAIA,EAAMC,MAAQ,KAAOD,EAAMC,MAAQ,QAAS,CAC9CH,KAAKI,mBAIDJ,KAAAI,eAAiB,KACvBJ,KAAKK,UAAYL,KAAKK,+CA3BE,oBAEG,6BAEAC,oBAECC,EAAaC,GAEnCC,QAAQC,GACd,GAAIA,EAAEC,gBAAkB,KAAM,CAC5B,GAAID,EAAEC,cAAcC,UAAUC,SAAS,UAAW,CAChD,OAAOH,EAAEC,cAAcC,UAAUC,SAAS,oBACrC,CACL,OAAOb,KAAKc,QAAQJ,EAAEC,oBAEnB,CACL,OAAO,OAeXF,sBACET,KAAKe,MAAQf,KAAKc,QAAQd,KAAKgB,IAIjCP,yBAAyBQ,GACvB,MAAMC,EAAiBD,EAAGE,OAC1BnB,KAAKoB,kBAAoBF,EAAMG,KAGjCZ,oBACET,KAAKe,MAAQf,KAAKc,QAAQd,KAAKgB,IAGjCP,mBACEa,EACE,CAAC,CAAEC,KAAMvB,KAAKwB,WAAYC,SAAU,gBACpC,qBAIJhB,SACE,MAAMM,MAAEA,EAAKS,WAAEA,GAAexB,KAE9B,OAAQe,EACNW,EAACC,EAAI,CACHC,MAAO,CACLnB,CAAC,8CAA+C,KAChDA,CAAC,qBAAqBT,KAAKoB,qBAAsB,OAGnDM,EAAA,MAAA,CAAKE,MAAM,2BACTF,EAAA,gBAAA,CAAeG,QAAQ,kBAAkBL,IAE3CE,EAAA,MAAA,CAAKE,MAAM,2BACTF,EAAA,OAAA,QAIJA,EAACC,EAAI,CACHC,MAAO,CACLnB,CAAC,6CAA8C,KAC/CA,CAAC,qBAAqBT,KAAKoB,qBAAsB,MAEnDU,SAAS,IACTC,QAAS/B,KAAKI,eACd4B,UAAWhC,KAAKC,cAAagC,gBACf,OAAMC,gBACLlC,KAAKK,UAEpBqB,EAAA,uBAAA,CAAsBS,WAAY,MAChCT,EAAA,MAAA,CAAKE,MAAM,4BACTF,EAAA,MAAA,CAAKE,MAAM,2BACTF,EAAA,gBAAA,CAAeG,QAAQ,SAASL,IAEjCxB,KAAKK,SACJqB,EAAA,MAAA,CACEE,MAAM,2BACNQ,MAAM,6BAA4BC,cACtB,OACZC,KAAK,MACLC,MAAM,MACNC,OAAO,MACPC,oBAAoB,gBACpBC,QAAQ,iBAERhB,EAAA,OAAA,CACEiB,KAAK,eACLC,EAAE,8IAINlB,EAAA,MAAA,CACEE,MAAM,2BACNQ,MAAM,6BAA4BC,cACtB,OACZC,KAAK,MACLC,MAAM,MACNC,OAAO,MACPC,oBAAoB,gBACpBC,QAAQ,iBAERhB,EAAA,IAAA,CAAGmB,UAAU,iCACXnB,EAAA,OAAA,CACEiB,KAAK,eACLC,EAAE,gJAMX5C,KAAKK,UACJqB,EAAA,MAAA,CAAKE,MAAM,2BACTF,EAAA,OAAA","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host(.footer-link-group-sparse) {\n --footer-link-group-margin-right: 95px;\n --footer-link-group-border-bottom: 0 solid transparent;\n --footer-link-group-title-margin-top: 0;\n --footer-link-group-title-margin-bottom: var(--ic-space-md);\n}\n\n:host(.footer-link-group-small) {\n --footer-link-group-margin-right: 0;\n --footer-link-group-title-margin-top: var(--ic-space-md);\n --footer-link-group-title-margin-bottom: var(--ic-space-md);\n --footer-link-group-links-padding-left: var(--ic-space-md);\n --footer-link-group-links-padding-bottom: var(--ic-space-md);\n}\n\n:host(.footer-link-group-light.footer-link-group-small) {\n --footer-link-group-border-bottom: var(--ic-keyline-lighten);\n}\n\n:host(.footer-link-group-dark.footer-link-group-small) {\n --footer-link-group-border-bottom: var(--ic-keyline-darken);\n}\n\n:host(.footer-link-group) {\n margin-right: var(--footer-link-group-margin-right);\n border-bottom: var(--footer-link-group-border-bottom);\n}\n\n:host(.footer-link-group-small.footer-link-group-light:hover) {\n background-color: var(--ic-action-light-bg-hover);\n cursor: pointer;\n}\n\n:host(.footer-link-group-small.footer-link-group-dark:hover) {\n background-color: var(--ic-action-dark-bg-hover);\n cursor: pointer;\n}\n\n:host(.footer-link-group-sparse:focus) {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n outline: none;\n z-index: 1;\n}\n\n:host(.footer-link-group-small:focus) {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n outline: none;\n z-index: 1;\n}\n\n:host(.footer-link-group-small.footer-link-group-light:active) {\n background-color: var(--ic-action-light-bg-active);\n}\n\n:host(.footer-link-group-small.footer-link-group-dark:active) {\n background-color: var(--ic-action-dark-bg-active);\n}\n\n.footer-link-group-title {\n margin-top: var(--footer-link-group-title-margin-top);\n margin-bottom: var(--footer-link-group-title-margin-bottom);\n flex-grow: 1;\n}\n\n.footer-link-group-toggle {\n fill: white !important;\n}\n\n.footer-link-group-links {\n display: flex;\n flex-direction: column;\n}\n\n.footer-link-group-header {\n display: flex;\n align-items: center;\n}\n","import {\n Component,\n Host,\n Element,\n Listen,\n Prop,\n h,\n State,\n} from \"@stencil/core\";\nimport {\n DEVICE_SIZES,\n getThemeForegroundColor,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IcTheme } from \"../../utils/types\";\n\n@Component({\n tag: \"ic-footer-link-group\",\n styleUrl: \"ic-footer-link-group.css\",\n shadow: true,\n})\nexport class FooterLinkGroup {\n @Element() el: HTMLIcFooterLinkGroupElement;\n\n /**\n * Sets the title of the link group for display\n */\n @Prop() groupTitle!: string;\n\n @State() small: boolean = false;\n\n @State() expanded: boolean = false;\n\n @State() dropdownIconStyle = getThemeForegroundColor();\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n private isSmall(e: HTMLElement): boolean {\n if (e.parentElement !== null) {\n if (e.parentElement.classList.contains(\"footer\")) {\n return e.parentElement.classList.contains(\"footer-small\");\n } else {\n return this.isSmall(e.parentElement);\n }\n } else {\n return false;\n }\n }\n\n private handleKeydown = (event: KeyboardEvent): void => {\n if (event.key === \" \" || event.key === \"Enter\") {\n this.toggleExpanded();\n }\n };\n\n private toggleExpanded = (): void => {\n this.expanded = !this.expanded;\n };\n\n @Listen(\"icFooterResized\", { target: \"document\" })\n footerResizeHandler(): void {\n this.small = this.isSmall(this.el);\n }\n\n @Listen(\"icThemeChange\", { target: \"document\" })\n footerThemeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.dropdownIconStyle = theme.mode;\n }\n\n componentWillLoad(): void {\n this.small = this.isSmall(this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.groupTitle, propName: \"group-title\" }],\n \"Footer Link Group\"\n );\n }\n\n render() {\n const { small, groupTitle } = this;\n\n return !small ? (\n <Host\n class={{\n [\"footer-link-group footer-link-group-sparse\"]: true,\n [`footer-link-group-${this.dropdownIconStyle}`]: true,\n }}\n >\n <div class=\"footer-link-group-title\">\n <ic-typography variant=\"subtitle-small\">{groupTitle}</ic-typography>\n </div>\n <div class=\"footer-link-group-links\">\n <slot />\n </div>\n </Host>\n ) : (\n <Host\n class={{\n [\"footer-link-group footer-link-group-small\"]: true,\n [`footer-link-group-${this.dropdownIconStyle}`]: true,\n }}\n tabIndex=\"1\"\n onClick={this.toggleExpanded}\n onKeydown={this.handleKeydown}\n aria-haspopup=\"true\"\n aria-expanded={this.expanded}\n >\n <ic-section-container fullHeight={true}>\n <div class=\"footer-link-group-header\">\n <div class=\"footer-link-group-title\">\n <ic-typography variant=\"label\">{groupTitle}</ic-typography>\n </div>\n {this.expanded ? (\n <svg\n class=\"footer-link-group-toggle\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n width=\"1em\"\n height=\"1em\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 1200 1200\"\n >\n <path\n fill=\"currentColor\"\n d=\"M600.002 210.605L421.285 389.336L0 810.559l178.721 178.836l421.281-421.341l421.281 421.341L1200 810.559L778.733 389.336L600.002 210.605z\"\n />\n </svg>\n ) : (\n <svg\n class=\"footer-link-group-toggle\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n role=\"img\"\n width=\"1em\"\n height=\"1em\"\n preserveAspectRatio=\"xMidYMid meet\"\n viewBox=\"0 0 1200 1200\"\n >\n <g transform=\"translate(0 1200) scale(1 -1)\">\n <path\n fill=\"currentColor\"\n d=\"M600.002 210.605L421.285 389.336L0 810.559l178.721 178.836l421.281-421.341l421.281 421.341L1200 810.559L778.733 389.336L600.002 210.605z\"\n />\n </g>\n </svg>\n )}\n </div>\n {this.expanded && (\n <div class=\"footer-link-group-links\">\n <slot />\n </div>\n )}\n </ic-section-container>\n </Host>\n );\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import{r as i,h as t,H as a,g as e}from"./p-f9370be6.js";import{c as o}from"./p-44512ebe.js";import{c as n}from"./p-e28af65b.js";import{w as s,i as l,D as r,g as p,e as d,c,a as h,f as v}from"./p-c15bb762.js";import{I as g}from"./p-6f57b13c.js";const m=`<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" 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 b=":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:56px;--sm-side-navigation-collapsed-labels-width:96px;--sm-side-navigation-expand-transition-duration:var(\n --ic-transition-duration-slow\n );--side-navigation-width:320px}: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)}: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;visibility:hidden}: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(.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);position:sticky;bottom:0;left:0;z-index:2;box-shadow:-3px -3px 8px rgb(0 0 0 / 20%);background-color:var(--ic-theme-primary);display:flex;flex-direction:column;visibility:hidden}: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}@media screen and (min-width: 340px){.app-title-wrapper ic-typography{margin-left:var(--ic-space-xs)}}:host .title-link: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)}: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{border-radius:var(--ic-border-radius);box-shadow:var(--ic-border-focus);outline:none;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:104px}.app-status-wrapper{position:absolute;right:var(--ic-space-md);top:0;bottom:0;width:auto;display:flex;align-items:center;pointer-events:none}.app-status-wrapper .app-version{max-width:100px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.app-status-wrapper .app-status{border-radius:80px;background-color:var(--ic-theme-text);color:var(--ic-color-primary-text);padding:var(--ic-space-xxs) var(--ic-space-lg);margin-right:var(--ic-space-xs);max-width:100px}.app-status-wrapper .app-status-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:96px}:host(.dark) .app-status-wrapper .app-status{color:var(--ic-color-white-text)}.navigation-landmark-title{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden}::slotted(ic-navigation-group){--navigation-group-height:44px;--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:56px;--navigation-item-child-active:var(--ic-action-dark-bg-active);--navigation-item-child-color:var(--ic-theme-text);--navigation-group-expand-toggle-padding:4px}::slotted(ic-navigation-item),::slotted(ic-navigation-group){--navigation-item-height:56px;--navigation-item-width:auto;--navigation-item-justify-content:flex-start}.bottom-side-nav{position:relative;align-content:flex-end;height:var(--sm-side-navigation-top-bar-height)}.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{display:none}.menu-visibility-visible{visibility:visible}.menu-visibility-hidden{visibility:hidden}@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}:host(.inline){position:absolute}:host(.static){position:relative;left:auto;top:auto;bottom:auto}.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:-3px 3px 8px rgb(0 0 0 / 20%)}:host(.inline) .top-bar{position:relative}:host(.anchor-right) .top-bar{box-shadow:3px 3px 8px rgb(0 0 0 / 20%)}:host(.anchor-right) .bottom-wrapper{box-shadow:3px -3px 8px 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}.side-navigation-inner{width:100%;visibility:visible}.bottom-wrapper{visibility:visible}.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 * 4.5px) 0 calc(-1 * 4.5px) 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}:host(.sm-expanded) .app-status-wrapper{display:flex}.bottom-side-nav{justify-items:flex-end;display:flex;flex-direction:column}.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:none;border:none;cursor:pointer;display:flex;transition:var(--ic-easing-transition-fast)}.bottom-side-nav .menu-expand-button svg{justify-items:flex-start;align-self:center}.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)}: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:4px;--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:16px}: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:relative;left:auto;top:auto;bottom:auto}:host(.inline){position:relative}:host(.sm-expanded){box-shadow:none}}";const u=class{constructor(a){i(this,a);this.ANIMATION_DURATION=parseInt(s("--ic-transition-duration"))||0;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.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");if(i){e.classList.add("menu-visibility-visible");a.classList.add("menu-visibility-visible")}else{setTimeout((()=>{a.classList.remove("menu-visibility-visible");e.classList.remove("menu-visibility-visible")}),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.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded})};this.arrangeSlottedNavigationItem=i=>{const t=this.el.querySelectorAll("ic-navigation-item");t.forEach((t=>{const a=l(t,"navigation-item");if(a){const a=t.querySelector("[slot='navigation-item']");const e=document.createElement("div");const o=a.querySelector("svg");const n=t.textContent.trim();const s=document.createElement("ic-typography");s.classList.add("ic-typography-label","hydrated","navigation-item-side-nav-slotted-text");e.className="icon-container";e.append(o);a.textContent="";s.textContent=n;a.append(e);a.append(s);if(this.collapsedIconLabels){this.styleSlottedCollapsedIconLabels(i,s)}else{this.styleSlottedIconLabels(i,s)}}}))};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.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.animateCollapsedIconLabels=()=>{const i=this.el.shadowRoot.querySelector(".primary-navigation");const t=this.el.shadowRoot.querySelector(".bottom-wrapper > .secondary-navigation");if(i){i.classList.remove("collapsed-icon-labels-end");i.classList.add("collapsed-icon-labels-start")}if(t){t.classList.remove("collapsed-icon-labels-end");t.classList.add("collapsed-icon-labels-start")}this.el.addEventListener("transitionend",(()=>{if(i){i.classList.remove("collapsed-icon-labels-start");i.classList.add("collapsed-icon-labels-end")}if(t){t.classList.remove("collapsed-icon-labels-start");t.classList.add("collapsed-icon-labels-end")}}))};this.paddingIconWidth=i=>{const t=i[0].shadowRoot&&i[0].shadowRoot.querySelector("ic-tooltip a")||i[0].querySelector("a");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("ic-navigation-item"));const a=t.length?this.paddingIconWidth(t):0;t.forEach((t=>{var e,o;const n=((e=t.shadowRoot&&t.shadowRoot.querySelector("ic-tooltip .link ic-typography.ic-typography-label"))===null||e===void 0?void 0:e.scrollWidth)||((o=t.querySelector("ic-typography.ic-typography-label"))===null||o===void 0?void 0:o.scrollWidth);if(n>i-a){t.setAttribute("display-navigation-tooltip","true")}}))}),this.ANIMATION_DURATION)}else{clearTimeout(t);const i=Array.from(this.el.querySelectorAll("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.paddingTop=i};this.setParentPaddingLeft=i=>{this.el.parentElement.style.paddingLeft=i};this.resizeObserver=null;this.resizeObserverCallback=i=>{if(i!==this.deviceSize){this.deviceSize=i;if(i===r.S){if(!this.disableAutoParentStyling){const i=this.el.shadowRoot.querySelector(".top-bar").scrollHeight;this.setParentPaddingTop(`${i}px`);this.setParentPaddingLeft("0")}this.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded,sideNavMobile:true})}else{if(!this.disableAutoParentStyling){this.setParentPaddingTop("0")}this.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded,sideNavMobile:false})}if(i>r.L){if(!this.disableAutoParentStyling){this.setParentPaddingTop("0");this.setParentPaddingLeft("0")}}else if(i>r.S&&i<=r.L&&!this.static&&!this.disableAutoParentStyling){if(this.collapsedIconLabels){this.setParentPaddingLeft("calc(var(--ic-space-xxl) * 2)")}else{this.setParentPaddingLeft("calc(var(--ic-space-xxl) + var(--ic-space-xs))")}}}};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("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:n,isAppNameSubtitleVariant:s,appTitle:l})=>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?o:m}),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"},t("a",{href:n,class:"title-link"},t("div",{class:"app-icon-container","aria-hidden":"true"},t("slot",{name:"app-icon"})),t("ic-typography",{variant:s?"subtitle-small":"h3"},l))));this.appTitle=undefined;this.status=undefined;this.version=undefined;this.expanded=false;this.href="/";this.static=false;this.collapsedIconLabels=false;this.inline=false;this.disableAutoParentStyling=false;this.foregroundColor=d();this.menuOpen=false;this.menuExpanded=false;this.deviceSize=r.XL;this.deviceSizeAppTitle=r.S;this.hasSecondaryNavigation=false}themeChangeHandler(i){const t=i.detail;this.foregroundColor=t.mode}componentWillLoad(){if(this.expanded){this.setMenuExpanded(true)}else{this.setMenuExpanded(false)}if(this.collapsedIconLabels){this.setCollapsedIconLabels()}this.hasSecondaryNavigation=l(this.el,"secondary-navigation")}componentDidLoad(){this.emitSideNavigationExpanded({sideNavExpanded:this.menuExpanded,sideNavMobile:this.deviceSize===r.S});c(this.runResizeObserver);this.arrangeSlottedNavigationItem();this.styleSlottedCollapsedIconLabel();this.displayTooltipWithExpandedLongLabel(this.menuExpanded);h([{prop:this.appTitle,propName:"app-title"}],"Side Navigation")}disconnectedCallback(){if(this.resizeObserver!==null){this.resizeObserver.disconnect()}}render(){const{appTitle:i,menuOpen:e,foregroundColor:o,menuExpanded:s,href:p,status:d,version:c,collapsedIconLabels:h,inline:m}=this;const b=this.deviceSize===r.S;const u=this.deviceSize===r.M;const x=this.deviceSize>=r.L;const f=this.deviceSizeAppTitle===r.S;const y=u||x&&!this.static;const w={isSDevice:b,foregroundColor:o,menuOpen:e,href:p,isAppNameSubtitleVariant:f,appTitle:i};return t(a,{class:{"xs-menu-open":e&&b,"xs-menu-close":!e&&b,"sm-collapsed":!b&&!s,"sm-expanded":!b&&s,[g.Dark]:o===g.Dark,["collapsed-labels"]:!b&&!s&&h,["static"]:this.static,["inline"]:m}},b&&this.renderTopBar(Object.assign({},w)),t("div",{class:"side-navigation",id:"side-navigation"},!b&&this.renderTopBar(Object.assign({},w)),t("div",{class:"side-navigation-inner"},l(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"]:v()}},l(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),y&&t("button",{class:"menu-expand-button",innerHTML:n,onClick:this.toggleMenuExpanded,"aria-label":`${s?"Collapse":"Expand"} side navigation`}),t("div",{class:"app-status-wrapper"},d!==""&&t("div",{class:{["app-status"]:true}},t("ic-typography",{"aria-label":"app tag",variant:"label-uppercase",class:"app-status-text"},d)),c!==""&&t("ic-typography",{variant:"label",class:"app-version","aria-label":"app version"},c))))))}get el(){return e(this)}};u.style=b;export{u as ic_side_navigation};
2
- //# sourceMappingURL=p-8bcadf55.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"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"],"names":["icSideNavigationCss","SideNavigation","this","ANIMATION_DURATION","parseInt","getCssProperty","emitSideNavigationExpanded","objDetails","event","CustomEvent","detail","sideNavExpanded","sideNavMobile","el","dispatchEvent","toggleMenu","menuOpen","setMobileMenuAriaAttributes","setToggleMenuFlyoutMenuVisibility","sideNav","shadowRoot","querySelector","sideNavInner","bottomWrapper","classList","add","setTimeout","remove","nativeButton","setAttribute","setAndRemoveNoWrapAfterMenuExpanded","appTitle","toggleMenuExpanded","menuExpanded","arrangeSlottedNavigationItem","displayTooltipWithExpandedLongLabel","collapsedIconLabels","animateCollapsedIconLabels","navItems","querySelectorAll","forEach","navItem","hasUsedSlot","isSlotUsed","navItemSlot","iconWrapper","document","createElement","icon","label","textContent","trim","icTypography","className","append","styleSlottedCollapsedIconLabels","styleSlottedIconLabels","style","marginTop","whiteSpace","overflow","textOverflow","opacity","visibility","transition","primaryNavigationWrapper","secondaryNavigationWrapper","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","paddingTop","setParentPaddingLeft","resizeObserver","resizeObserverCallback","currSize","deviceSize","DEVICE_SIZES","S","disableAutoParentStyling","topBarHeight","scrollHeight","L","static","runResizeObserver","ResizeObserver","getCurrentDeviceSize","deviceSizeAppTitle","observe","body","box","setCollapsedIconLabels","styleSlottedCollapsedIconLabel","dynamicSlottedIcTypographyComps","contains","renderTopBar","isSDevice","foregroundColor","href","isAppNameSubtitleVariant","h","class","top-bar","[object Object]","aria-labelledby","aria-hidden","aria-label","id","variant","size","full-width","appearance","onClick","aria-owns","aria-haspopup","aria-expanded","slot","innerHTML","closeIcon","menuIcon","name","getThemeForegroundColor","XL","ev","theme","mode","hasSecondaryNavigation","checkResizeObserver","onComponentRequiredPropUndefined","prop","propName","disconnect","status","version","inline","isMdDevice","M","isLgDevice","displayExpandBtn","topBarProps","Host","xs-menu-open","xs-menu-close","sm-collapsed","sm-expanded","IcThemeForegroundEnum","Dark","assign","hasClassificationBanner","chevronIcon"],"mappings":"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","sourcesContent":[":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: 56px;\n --sm-side-navigation-collapsed-labels-width: 96px;\n --sm-side-navigation-expand-transition-duration: var(\n --ic-transition-duration-slow\n );\n --side-navigation-width: 320px;\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}\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 visibility: hidden;\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(.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 position: sticky;\n bottom: 0;\n left: 0;\n z-index: 2;\n box-shadow: -3px -3px 8px rgb(0 0 0 / 20%);\n background-color: var(--ic-theme-primary);\n display: flex;\n flex-direction: column;\n visibility: hidden;\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@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: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\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 border-radius: var(--ic-border-radius);\n box-shadow: var(--ic-border-focus);\n outline: none;\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: 104px;\n}\n\n.app-status-wrapper {\n position: absolute;\n right: var(--ic-space-md);\n top: 0;\n bottom: 0;\n width: auto;\n display: flex;\n align-items: center;\n pointer-events: none;\n}\n\n.app-status-wrapper .app-version {\n max-width: 100px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n}\n\n.app-status-wrapper .app-status {\n border-radius: 80px;\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 margin-right: var(--ic-space-xs);\n max-width: 100px;\n}\n\n.app-status-wrapper .app-status-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 96px;\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: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n}\n\n/* Navigation Group */\n\n::slotted(ic-navigation-group) {\n --navigation-group-height: 44px;\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: 56px;\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: 4px;\n}\n\n/* Navigation Items */\n\n::slotted(ic-navigation-item),\n::slotted(ic-navigation-group) {\n --navigation-item-height: 56px;\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 height: var(--sm-side-navigation-top-bar-height);\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 display: none;\n}\n\n.menu-visibility-visible {\n visibility: visible;\n}\n\n.menu-visibility-hidden {\n visibility: hidden;\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 :host(.inline) {\n position: absolute;\n }\n\n :host(.static) {\n position: relative;\n left: auto;\n top: auto;\n bottom: auto;\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: -3px 3px 8px rgb(0 0 0 / 20%);\n }\n\n :host(.inline) .top-bar {\n position: relative;\n }\n\n :host(.anchor-right) .top-bar {\n box-shadow: 3px 3px 8px rgb(0 0 0 / 20%);\n }\n\n :host(.anchor-right) .bottom-wrapper {\n box-shadow: 3px -3px 8px 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 .side-navigation-inner {\n width: 100%;\n visibility: visible;\n }\n\n .bottom-wrapper {\n visibility: visible;\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 * 4.5px) 0 calc(-1 * 4.5px) 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 }\n\n :host(.sm-expanded) .app-status-wrapper {\n display: flex;\n }\n\n .bottom-side-nav {\n justify-items: flex-end;\n display: flex;\n flex-direction: column;\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: none;\n border: none;\n cursor: pointer;\n display: flex;\n transition: var(--ic-easing-transition-fast);\n }\n\n .bottom-side-nav .menu-expand-button svg {\n justify-items: flex-start;\n align-self: center;\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 }\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: 4px;\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: 16px;\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: relative;\n left: auto;\n top: auto;\n bottom: auto;\n }\n\n :host(.inline) {\n position: relative;\n }\n\n :host(.sm-expanded) {\n box-shadow: none;\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} 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 application title at the very top of the side navigation\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 @Element() el: HTMLIcSideNavigationElement;\n /**\n * Title to display.\n */\n @Prop() appTitle!: string;\n /**\n * Status of application\n */\n @Prop() status: string;\n /**\n * Version of application\n */\n @Prop() version: string;\n /**\n * If true, the ic-side-navigation will load in an expanded state\n */\n @Prop() expanded: boolean = false;\n /**\n * Set application title link\n */\n @Prop() href: string = \"/\";\n /**\n * If true, the menu expand button is removed (PLEASE NOTE: This takes effect on screen sizes 992px and above)\n */\n @Prop() static: boolean = false;\n /**\n * If true, the icon and label will appear when side navigation is collapsed\n */\n\n @Prop() collapsedIconLabels: boolean = false;\n /**\n * If true, side navigation will be contained by parent element\n */\n @Prop() inline: boolean = false;\n\n /**\n * If true, disable automatic parent wrapper styling\n */\n @Prop() disableAutoParentStyling: boolean = false;\n\n @State() foregroundColor: IcThemeForeground = getThemeForegroundColor();\n @State() menuOpen: boolean = false;\n @State() menuExpanded: boolean = false;\n @State() deviceSize: number = DEVICE_SIZES.XL;\n @State() deviceSizeAppTitle = DEVICE_SIZES.S;\n @State() hasSecondaryNavigation: boolean = false;\n\n private ANIMATION_DURATION =\n parseInt(getCssProperty(\"--ic-transition-duration\")) || 0;\n\n @Listen(\"icThemeChange\", { 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.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 if (menuOpen) {\n bottomWrapper.classList.add(\"menu-visibility-visible\");\n sideNavInner.classList.add(\"menu-visibility-visible\");\n } else {\n setTimeout(() => {\n sideNavInner.classList.remove(\"menu-visibility-visible\");\n bottomWrapper.classList.remove(\"menu-visibility-visible\");\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.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 seide 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.className = \"icon-container\";\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 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 animateCollapsedIconLabels = () => {\n const primaryNavigationWrapper = this.el.shadowRoot.querySelector(\n \".primary-navigation\"\n );\n const secondaryNavigationWrapper = this.el.shadowRoot.querySelector(\n \".bottom-wrapper > .secondary-navigation\"\n );\n\n if (primaryNavigationWrapper) {\n primaryNavigationWrapper.classList.remove(\"collapsed-icon-labels-end\");\n primaryNavigationWrapper.classList.add(\"collapsed-icon-labels-start\");\n }\n\n if (secondaryNavigationWrapper) {\n secondaryNavigationWrapper.classList.remove(\"collapsed-icon-labels-end\");\n secondaryNavigationWrapper.classList.add(\"collapsed-icon-labels-start\");\n }\n\n this.el.addEventListener(\"transitionend\", () => {\n if (primaryNavigationWrapper) {\n primaryNavigationWrapper.classList.remove(\n \"collapsed-icon-labels-start\"\n );\n primaryNavigationWrapper.classList.add(\"collapsed-icon-labels-end\");\n }\n\n if (secondaryNavigationWrapper) {\n secondaryNavigationWrapper.classList.remove(\n \"collapsed-icon-labels-start\"\n );\n secondaryNavigationWrapper.classList.add(\"collapsed-icon-labels-end\");\n }\n });\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].querySelector(\"a\");\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(\"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(\"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.paddingTop = value;\n };\n\n private setParentPaddingLeft = (value: string) => {\n this.el.parentElement.style.paddingLeft = value;\n };\n\n private resizeObserver: ResizeObserver = null;\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\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 this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuExpanded,\n sideNavMobile: true,\n });\n } else {\n if (!this.disableAutoParentStyling) {\n this.setParentPaddingTop(\"0\");\n }\n this.emitSideNavigationExpanded({\n sideNavExpanded: this.menuExpanded,\n sideNavMobile: false,\n });\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.L &&\n !this.static &&\n !this.disableAutoParentStyling\n ) {\n if (this.collapsedIconLabels) {\n this.setParentPaddingLeft(\"calc(var(--ic-space-xxl) * 2)\");\n } else {\n this.setParentPaddingLeft(\n \"calc(var(--ic-space-xxl) + var(--ic-space-xs))\"\n );\n }\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(\"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 appTitle,\n }: IcTopBar) => (\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 <a href={href} class=\"title-link\">\n <div class=\"app-icon-container\" aria-hidden=\"true\">\n <slot name=\"app-icon\"></slot>\n </div>\n <ic-typography\n variant={isAppNameSubtitleVariant ? \"subtitle-small\" : \"h3\"}\n >\n {appTitle}\n </ic-typography>\n </a>\n </div>\n </div>\n );\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.arrangeSlottedNavigationItem();\n this.styleSlottedCollapsedIconLabel();\n this.displayTooltipWithExpandedLongLabel(this.menuExpanded);\n\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\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 [\"static\"]: this.static,\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"]}
@@ -1,2 +0,0 @@
1
- import{r as e,h as i,H as t,g as n}from"./p-f9370be6.js";import{C as o,j as r,k as l}from"./p-c15bb762.js";import{I as a}from"./p-6f57b13c.js";const s=`<svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px"><path d="M0 0h24v24H0z" fill="none"/><path d="M19 19H5V5h7V3H5c-1.11 0-2 .9-2 2v14c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2v-7h-2v7zM14 3v2h3.59l-9.83 9.83 1.41 1.41L19 6.41V10h2V3h-7z"/></svg>`;const c='/*! 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(.link) .ic-link,:host(.link) ::slotted(a){color:var(--ic-hyperlink);text-decoration:underline;font-weight:var(--ic-font-weight-bold);transition:var(--ic-easing-transition-fast)}:host(.link.dark) .ic-link.dark,:host(.link.dark) ::slotted(a){color:var(--ic-color-primary-text)}:host(.link.light) .ic-link.light,:host(.link.light) ::slotted(a){color:var(--ic-color-white-text)}:host(.link) .ic-link:visited,:host(.link) ::slotted(a:visited){color:var(--ic-hyperlink-visited)}:host(.link) .ic-link:hover,:host(.link) .ic-link:focus,:host(.link) ::slotted(a:hover),:host(.link) ::slotted(a:focus){outline:none;text-decoration-line:underline;text-decoration-thickness:25%;text-underline-offset:25%}:host(.link) .ic-link:active,:host(.link) .ic-link:focus:active,:host(.link) .ic-link:visited:active,:host(.link) ::slotted(a:active),:host(.link) ::slotted(a:focus:active),:host(.link) ::slotted(a:visited:active){text-decoration:none}.ic-link-open-in-new-icon{vertical-align:middle;margin-left:var(--ic-space-xxs)}.ic-link>.ic-link-open-in-new-icon{fill:var(--ic-hyperlink)}.ic-link.dark>.ic-link-open-in-new-icon{fill:var(--ic-color-primary-text)}.ic-link.light>.ic-link-open-in-new-icon{fill:var(--ic-color-white-text)}.ic-link-open-in-new-icon>svg{width:var(--ic-space-md);height:var(--ic-space-md);fill:currentcolor}.ic-link:visited>.ic-link-open-in-new-icon{fill:var(--ic-hyperlink-visited)}.ic-link.light:visited>.ic-link-open-in-new-icon{fill:var(--ic-hyperlink-contrast-visited)}:host(.breadcrumb-link) .ic-link{display:var(--breadcrumb-link-display);align-items:var(--breadcrumb-link-align-items);gap:var(--breadcrumb-link-gap)}:host(.breadcrumb-link) .ic-link ::slotted(.back-icon){height:var(--ic-space-lg);width:var(--ic-space-lg)}:host(.breadcrumb-link.current-page) a,:host(.breadcrumb-link.current-page) ::slotted(a){font-weight:normal;color:inherit;text-decoration:none;display:flex;align-items:center}:host(.breadcrumb-link.current-page) .ic-link,:host(.breadcrumb-link.current-page) ::slotted(a:focus){outline:none;text-decoration:none}:host(.breadcrumb-link.current-page) .ic-link:visited{color:var(--ic-color-primary-text)}';const d=class{constructor(i){e(this,i);this.inheritedAttributes={};this.download=false;this.href=null;this.hreflang=undefined;this.referrerpolicy=undefined;this.rel=undefined;this.target=undefined;this.showIcon=undefined;this.appearance="default"}themeChangeHandler(e){const i=e.detail;this.updateTheme(i.mode)}updateTheme(e=null){const i=o(this.el,e||null);switch(i){case a.Light:this.appearance=a.Light;break;case a.Dark:this.appearance=a.Dark;break}}componentWillLoad(){this.inheritedAttributes=r(this.el,[...l,"aria-expanded"])}componentDidLoad(){this.updateTheme()}hasRouterSlot(){this.routerSlot=this.el.querySelector('[slot="router-item"]');if(this.routerSlot){this.routerSlot.ariaLabel=this.routerSlot.textContent}return!!this.routerSlot}render(){const{download:e,href:n,hreflang:o,referrerpolicy:r,rel:l,target:a,showIcon:c,appearance:d}=this;return i(t,{class:{["link"]:true,[`${d}`]:true}},this.hasRouterSlot()?i("slot",{name:"router-item"}):i("a",Object.assign({class:{["ic-link"]:n!==null,[`${d}`]:n!==null},download:e!==false?e:null,href:n,hrefLang:o,referrerPolicy:r,rel:l,target:a,tabindex:n!==null?"0":"-1"},this.inheritedAttributes),i("slot",null),c&&i("span",{class:"ic-link-open-in-new-icon",innerHTML:s})))}get el(){return n(this)}};d.style=c;export{d as ic_link};
2
- //# sourceMappingURL=p-98e9eccc.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/ic-link/ic-link.css?tag=ic-link&encapsulation=shadow","src/components/ic-link/ic-link.tsx"],"names":["icLinkCss","Link","this","inheritedAttributes","[object Object]","ev","theme","detail","updateTheme","mode","newTheme","getThemeFromContext","el","IcThemeForegroundEnum","Light","appearance","Dark","inheritAttributes","IC_INHERITED_ARIA","routerSlot","querySelector","ariaLabel","textContent","download","href","hreflang","referrerpolicy","rel","target","showIcon","h","Host","class","hasRouterSlot","name","Object","assign","hrefLang","referrerPolicy","tabindex","innerHTML","OpenInNew"],"mappings":"0aAAA,MAAMA,EAAY,w8ICgBLC,EAAI,+BACPC,KAAAC,oBAAgD,iBAQlB,gBAKd,4IA8BkC,UAG1DC,mBAAmBC,GACjB,MAAMC,EAAiBD,EAAGE,OAC1BL,KAAKM,YAAYF,EAAMG,MAGjBL,YAAYM,EAA8B,MAChD,MAAMJ,EAAQK,EAAoBT,KAAKU,GAAIF,GAAY,MAEvD,OAAQJ,GACN,KAAKO,EAAsBC,MACzBZ,KAAKa,WAAaF,EAAsBC,MACxC,MACF,KAAKD,EAAsBG,KACzBd,KAAKa,WAAaF,EAAsBG,KACxC,OAINZ,oBACEF,KAAKC,oBAAsBc,EAAkBf,KAAKU,GAAI,IACjDM,EACH,kBAIJd,mBACEF,KAAKM,cAGCJ,gBACNF,KAAKiB,WAAajB,KAAKU,GAAGQ,cAAc,wBACxC,GAAIlB,KAAKiB,WAAY,CACnBjB,KAAKiB,WAAWE,UAAYnB,KAAKiB,WAAWG,YAE9C,QAASpB,KAAKiB,WAGhBf,SACE,MAAMmB,SACJA,EAAQC,KACRA,EAAIC,SACJA,EAAQC,eACRA,EAAcC,IACdA,EAAGC,OACHA,EAAMC,SACNA,EAAQd,WACRA,GACEb,KAEJ,OACE4B,EAACC,EAAI,CAACC,MAAO,CAAE5B,CAAC,QAAS,KAAMA,CAAC,GAAGW,KAAe,OAC/Cb,KAAK+B,gBACJH,EAAA,OAAA,CAAMI,KAAK,gBAEXJ,EAAA,IAAAK,OAAAC,OAAA,CACEJ,MAAO,CACL5B,CAAC,WAAYoB,IAAS,KACtBpB,CAAC,GAAGW,KAAeS,IAAS,MAE9BD,SAAUA,IAAa,MAAQA,EAAW,KAC1CC,KAAMA,EACNa,SAAUZ,EACVa,eAAgBZ,EAChBC,IAAKA,EACLC,OAAQA,EACRW,SAAUf,IAAS,KAAO,IAAM,MAC5BtB,KAAKC,qBAET2B,EAAA,OAAA,MACCD,GACCC,EAAA,OAAA,CAAME,MAAM,2BAA2BQ,UAAWC","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host(.link) .ic-link,\n:host(.link) ::slotted(a) {\n color: var(--ic-hyperlink);\n text-decoration: underline;\n font-weight: var(--ic-font-weight-bold);\n transition: var(--ic-easing-transition-fast);\n}\n\n:host(.link.dark) .ic-link.dark,\n:host(.link.dark) ::slotted(a) {\n color: var(--ic-color-primary-text);\n}\n\n:host(.link.light) .ic-link.light,\n:host(.link.light) ::slotted(a) {\n color: var(--ic-color-white-text);\n}\n\n:host(.link) .ic-link:visited,\n:host(.link) ::slotted(a:visited) {\n color: var(--ic-hyperlink-visited);\n}\n\n:host(.link) .ic-link:hover,\n:host(.link) .ic-link:focus,\n:host(.link) ::slotted(a:hover),\n:host(.link) ::slotted(a:focus) {\n outline: none;\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n}\n\n:host(.link) .ic-link:active,\n:host(.link) .ic-link:focus:active,\n:host(.link) .ic-link:visited:active,\n:host(.link) ::slotted(a:active),\n:host(.link) ::slotted(a:focus:active),\n:host(.link) ::slotted(a:visited:active) {\n text-decoration: none;\n}\n\n.ic-link-open-in-new-icon {\n vertical-align: middle;\n margin-left: var(--ic-space-xxs);\n}\n\n.ic-link > .ic-link-open-in-new-icon {\n fill: var(--ic-hyperlink);\n}\n\n.ic-link.dark > .ic-link-open-in-new-icon {\n fill: var(--ic-color-primary-text);\n}\n\n.ic-link.light > .ic-link-open-in-new-icon {\n fill: var(--ic-color-white-text);\n}\n\n.ic-link-open-in-new-icon > svg {\n width: var(--ic-space-md);\n height: var(--ic-space-md);\n fill: currentcolor;\n}\n\n.ic-link:visited > .ic-link-open-in-new-icon {\n fill: var(--ic-hyperlink-visited);\n}\n\n.ic-link.light:visited > .ic-link-open-in-new-icon {\n fill: var(--ic-hyperlink-contrast-visited);\n}\n\n:host(.breadcrumb-link) .ic-link {\n display: var(--breadcrumb-link-display);\n align-items: var(--breadcrumb-link-align-items);\n gap: var(--breadcrumb-link-gap);\n}\n\n:host(.breadcrumb-link) .ic-link ::slotted(.back-icon) {\n height: var(--ic-space-lg);\n width: var(--ic-space-lg);\n}\n\n:host(.breadcrumb-link.current-page) a,\n:host(.breadcrumb-link.current-page) ::slotted(a) {\n font-weight: normal;\n color: inherit;\n text-decoration: none;\n display: flex;\n align-items: center;\n}\n\n:host(.breadcrumb-link.current-page) .ic-link,\n:host(.breadcrumb-link.current-page) ::slotted(a:focus) {\n outline: none;\n text-decoration: none;\n}\n\n:host(.breadcrumb-link.current-page) .ic-link:visited {\n color: var(--ic-color-primary-text);\n}\n","import { Component, Element, Prop, h, Host, Listen } from \"@stencil/core\";\n\nimport OpenInNew from \"./assets/OpenInNew.svg\";\nimport { getThemeFromContext, inheritAttributes } from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\n\n@Component({\n tag: \"ic-link\",\n styleUrl: \"ic-link.css\",\n shadow: true,\n})\nexport class Link {\n private inheritedAttributes: { [k: string]: unknown } = {};\n private routerSlot: HTMLElement;\n\n @Element() el: HTMLIcLinkElement;\n\n /**\n * Prompts the user to 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.\n */\n @Prop() href?: string = null;\n\n /**\n * Hints at the human language of the linked URL.\n */\n @Prop() hreflang?: 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 * Where to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n /**\n * Determines whether the 'open in new tab/window' icon is to be displayed.\n */\n @Prop() showIcon?: boolean;\n\n /**\n * Determines the whether the appearance is dark, light, or the default.\n */\n @Prop({ mutable: true }) appearance?: IcThemeForeground = \"default\";\n\n @Listen(\"icThemeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.updateTheme(theme.mode);\n }\n\n private updateTheme(newTheme: IcThemeForeground = null): void {\n const theme = getThemeFromContext(this.el, newTheme || null);\n\n switch (theme) {\n case IcThemeForegroundEnum.Light:\n this.appearance = IcThemeForegroundEnum.Light;\n break;\n case IcThemeForegroundEnum.Dark:\n this.appearance = IcThemeForegroundEnum.Dark;\n break;\n }\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"aria-expanded\",\n ]);\n }\n\n componentDidLoad(): void {\n this.updateTheme();\n }\n\n private hasRouterSlot(): boolean {\n this.routerSlot = this.el.querySelector('[slot=\"router-item\"]');\n if (this.routerSlot) {\n this.routerSlot.ariaLabel = this.routerSlot.textContent;\n }\n return !!this.routerSlot;\n }\n\n render() {\n const {\n download,\n href,\n hreflang,\n referrerpolicy,\n rel,\n target,\n showIcon,\n appearance,\n } = this;\n\n return (\n <Host class={{ [\"link\"]: true, [`${appearance}`]: true }}>\n {this.hasRouterSlot() ? (\n <slot name=\"router-item\"></slot>\n ) : (\n <a\n class={{\n [\"ic-link\"]: href !== null,\n [`${appearance}`]: href !== null,\n }}\n download={download !== false ? download : null}\n href={href}\n hrefLang={hreflang}\n referrerPolicy={referrerpolicy}\n rel={rel}\n target={target}\n tabindex={href !== null ? \"0\" : \"-1\"}\n {...this.inheritedAttributes}\n >\n <slot />\n {showIcon && (\n <span class=\"ic-link-open-in-new-icon\" innerHTML={OpenInNew} />\n )}\n </a>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -1,2 +0,0 @@
1
- import{r as t,c as i,h as e,H as s,g as a}from"./p-f9370be6.js";import{u as n,q as o,j as l,a as r,r as h,d as c,h as d,v as u,k as p}from"./p-c15bb762.js";import{I as b,a as f}from"./p-6f57b13c.js";const v=`<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">\n<path d="M7 9.5L12 14.5L17 9.5H7Z" fill="currentColor" />\n</svg>\n`;const m=`<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">\n<path d="M12.6666 4.27334L11.7266 3.33334L7.99998 7.06001L4.27331 3.33334L3.33331 4.27334L7.05998 8.00001L3.33331 11.7267L4.27331 12.6667L7.99998 8.94001L11.7266 12.6667L12.6666 11.7267L8.93998 8.00001L12.6666 4.27334Z" fill="currentColor" />\n</svg>\n`;const g='/*! 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}ic-input-component-container:hover{--border-color:var(--ic-action-dark-hover)}ic-input-component-container:active{--border-color:var(--ic-action-dark-active);color:var(--ic-action-dark-active)}ic-input-component-container.menu-open{--border-color:var(--ic-architectural-400);color:var(--ic-action-dark)}ic-input-validation .status-icon,ic-input-validation .statustext{visibility:visible}ic-input-validation.menu-open .status-icon,ic-input-validation.menu-open .statustext{visibility:hidden;transition:visibility 0s}ic-input-label{margin-bottom:var(--ic-space-xs) !important}select{border:0;border-radius:var(--ic-border-radius);background-color:var(--ic-architectural-white);color:var(--ic-color-primary-text);line-height:1.5rem;letter-spacing:0.005rem;width:100%;height:100%;padding-left:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-repeat:no-repeat;background-position:right 6px center;background-image:url("data:image/svg+xml;utf8,<svg fill=\'black\' height=\'24\' viewBox=\'0 0 24 24\' width=\'24\' xmlns=\'http://www.w3.org/2000/svg\'><path d=\'M7 10l5 5 5-5z\'/><path d=\'M0 0h24v24H0z\' fill=\'none\'/></svg>")}select option,.select-option-selected{color:var(--ic-color-primary-text)}select:disabled{color:var(--ic-architectural-200);background-image:url("data:image/svg+xml;utf8,<svg fill=\'grey\' height=\'24\' viewBox=\'0 0 24 24\' width=\'24\' xmlns=\'http://www.w3.org/2000/svg\'><path d=\'M7 10l5 5 5-5z\'/><path d=\'M0 0h24v24H0z\' fill=\'none\'/></svg>")}select:focus{border:0;outline:0}select:not([disabled]){cursor:pointer}.select-container{width:100%;display:flex;align-items:center}.select-input{width:100%;height:100%;padding:0 6px;display:flex;cursor:pointer;align-items:center;justify-content:space-between;background:none;border:none}.select-input:focus{outline:none}:host(:not([disabled])) ic-input-component-container:hover .select-input{background-color:var(--ic-architectural-white)}:host([disabled]) .select-input{pointer-events:none}:host([searchable]) .select-input{cursor:auto}.searchable-select-container{align-items:center;display:flex;width:100%}.expand-icon{height:var(--ic-space-lg);padding-left:var(--ic-space-xs);color:var(--expand-icon-hover, var(--ic-architectural-400))}:host([disabled]) .expand-icon,:host([disabled]) .expand-icon>svg>path{color:var(--ic-architectural-200)}:host([searchable]) .expand-icon{padding-left:var(--ic-space-xxs);height:36px}:host([searchable]) .expand-icon>svg{height:36px;padding:0 6px}:host([searchable]:not([disabled])) .expand-icon>svg{cursor:pointer}.expand-icon-open{color:var(--ic-action-dark)}.expand-icon-filled{color:var(--ic-action-dark)}.expand-icon-open,:host([searchable]) .expand-icon-open{transform:rotateX(180deg)}:host([disabled]) .value-text,.placeholder{color:var(--ic-color-tertiary-text)}.select-input-end{display:flex;align-items:center}.clear-button-container{display:flex;gap:var(--ic-space-xxs);padding-left:38px}:host([small]) .clear-button-container{padding-left:30px}.divider{width:1px;background-color:var(--ic-architectural-400);margin:var(--ic-space-xxs) 0;border-radius:1px;height:var(--ic-space-lg)}:host([small]) .divider{height:var(--ic-space-md)}.clear-button{position:absolute;right:44px;border-radius:var(--ic-border-radius);transition:box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition)}.clear-button:focus{background-color:var(--ic-focus-blue);box-shadow:inset 0 0 0 2px var(--ic-focus-glow);border-radius:4px}.clear-button:focus *{fill:white}.searchable-select-results-status{border:0;clip:rect(0, 0, 0, 0, 0);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}';let x=0;const w=class{constructor(e){t(this,e);this.icChange=i(this,"icChange",7);this.icFocus=i(this,"icFocus",7);this.icBlur=i(this,"icBlur",7);this.inputId=`ic-select-input-${x++}`;this.menuId=`${this.inputId}-menu`;this.inheritedAttributes={};this.isMenuEnabled=()=>(this.searchableSelectInputValue===null||this.searchableSelectInputValue==="")&&this.charactersUntilSuggestions===0||this.searchableSelectInputValue&&this.searchableSelectInputValue.length>=this.charactersUntilSuggestions;this.setOptionsValuesFromLabels=()=>{if(this.options.length>0){this.options.map((t=>{if(!t.value){t.value=t.label}}))}};this.setTextColor=()=>{if(this.nativeSelectElement.selectedIndex===0){this.nativeSelectElement.className="placeholder"}else{this.nativeSelectElement.className="select-option-selected"}};this.setMenuChange=t=>{if(this.open!==t){this.open=t}};this.getLabelFromValue=t=>n(t,this.options);this.getValueFromLabel=t=>{var i;const e=(i=this.options.find((i=>i.label===t)))===null||i===void 0?void 0:i.value;return e};this.getFilteredChildMenuOptions=t=>{let i=t.children;i=o(t.children,this.includeDescriptionsInSearch,this.searchableSelectInputValue,this.searchMatchPosition);const e=Object.assign({},t);e.children=i;return e};this.handleNativeSelectChange=()=>{this.icChange.emit({value:this.nativeSelectElement.value});this.setTextColor()};this.handleCustomSelectChange=t=>{if(this.searchable&&t.detail.label===this.emptyOptionListText){this.searchableSelectElement.focus();return}if(this.searchable){this.searchableSelectInputValue=this.getLabelFromValue(t.detail.value)}this.ariaActiveDescendant=t.detail.optionId;this.icChange.emit({value:t.detail.value})};this.handleMenuChange=t=>{this.open=t.detail.open;this.searchable&&this.handleFocusIndicatorDisplay()};this.handleFocusIndicatorDisplay=()=>{const t=this.host.shadowRoot.querySelector(".focus-indicator");if(this.open){t.classList.add("focus-indicator-enabled")}else{t.classList.remove("focus-indicator-enabled")}};this.handleMouseDown=t=>{if(!this.open){t.preventDefault()}};this.handleClick=t=>{this.noOptions=null;this.menu.options=this.options;if(t.detail!==0&&this.isMenuEnabled()){this.menu.handleClickOpen()}};this.handleExpandIconMouseDown=t=>{if(!this.disabled){t.preventDefault();this.searchableSelectElement.focus();this.handleClick(t)}};this.handleClear=t=>{t.stopPropagation();this.noOptions=null;this.icChange.emit({value:null});if(this.searchable){this.searchableSelectElement.value=null;this.searchableSelectInputValue=null;this.menu.options=this.options;this.searchableSelectElement.focus();if(!this.isMenuEnabled()){this.setMenuChange(false)}}else{this.customSelectElement.focus()}};this.handleKeyDown=t=>{t.cancelBubble=true;if(!this.open){this.noOptions=null;this.menu.options=this.options}if(this.open&&t.key==="Enter"){this.setMenuChange(false)}else{if(!((t.key==="ArrowDown"||t.key==="ArrowUp")&&this.noOptions!==null)&&this.isMenuEnabled()){this.menu.handleKeyboardOpen(t)}}};this.handleClearButtonFocus=()=>{this.clearButtonFocused=true};this.handleClearButtonBlur=()=>{this.clearButtonFocused=false};this.handleSearchableSelectInput=t=>{this.searchableSelectInputValue=t.target.value;if(this.getValueFromLabel(this.searchableSelectInputValue)===undefined){this.icChange.emit({value:null})}if(this.isMenuEnabled()){this.setMenuChange(true)}else{this.setMenuChange(false)}const i=[...this.options];let e=false;let s=[];i.map((t=>{if(t.children)e=true}));const a=o(i,this.includeDescriptionsInSearch,this.searchableSelectInputValue,this.searchMatchPosition);if(!e){s=a}else{i.map((t=>{if(this.includeGroupTitlesInSearch){if(a.indexOf(t)!==-1){s.push(t)}else{s.push(this.getFilteredChildMenuOptions(t))}}else{s.push(this.getFilteredChildMenuOptions(t))}}))}let n=false;if(e){n=true;s.map((t=>{if(t.children.length>0){n=false}}))}const l=[{label:this.emptyOptionListText,value:""}];if(s.length>0&&!n){this.noOptions=null;this.filteredOptions=s}else{this.noOptions=l;this.filteredOptions=this.noOptions}this.debounceAriaLiveUpdate()};this.updateSearchableSelectResultAriaLive=()=>{const t=this.host.shadowRoot.querySelector(".searchable-select-results-status");if(this.noOptions!==null){t.innerText=this.emptyOptionListText}else{t.innerText=""}};this.onFocus=()=>{this.icFocus.emit()};this.onBlur=t=>{if(this.searchable&&t.relatedTarget!==this.menu&&!(this.clearButton&&t.relatedTarget===this.clearButton)){this.setMenuChange(false);this.handleFocusIndicatorDisplay()}this.icBlur.emit()};this.label=undefined;this.options=[];this.required=false;this.hideLabel=false;this.disabled=false;this.readonly=false;this.placeholder="Select an option";this.helperText="";this.small=false;this.fullWidth=false;this.validationStatus="";this.validationText="";this.value=undefined;this.name=this.inputId;this.showClearButton=false;this.searchable=false;this.includeDescriptionsInSearch=false;this.includeGroupTitlesInSearch=false;this.searchMatchPosition="anywhere";this.charactersUntilSuggestions=0;this.emptyOptionListText="No results found";this.open=false;this.clearButtonFocused=false;this.searchableSelectInputValue=null;this.filteredOptions=this.options;this.ariaActiveDescendant=undefined;this.noOptions=null}watchOptionsHandler(){this.setOptionsValuesFromLabels();this.filteredOptions=this.options}async setFocus(){if(this.nativeSelectElement){this.nativeSelectElement.focus()}else if(this.customSelectElement){this.customSelectElement.focus()}else if(this.searchableSelectElement){this.searchableSelectElement.focus()}}debounceAriaLiveUpdate(){clearTimeout(this.debounce);window.setTimeout((()=>{this.updateSearchableSelectResultAriaLive()}),800)}componentWillLoad(){this.inheritedAttributes=l(this.host,[...p,"tabindex","title"]);this.setOptionsValuesFromLabels()}componentDidRender(){if(this.nativeSelectElement&&!this.disabled){this.setTextColor()}}componentDidLoad(){r([{prop:this.label,propName:"label"}],"Select")}render(){const{small:t,disabled:i,fullWidth:a,helperText:n,hideLabel:o,label:l,menuId:r,name:p,options:g,placeholder:x,readonly:w,required:y,searchable:k,showClearButton:z,validationStatus:L,validationText:M,value:C}=this;h(true,this.host,p,C,i);const B=L===f.Error?"true":"false";const H=c(this.inputId,n!=="",d(this.validationStatus,this.disabled)).trim();return e(s,null,e("ic-input-container",{readonly:w},!o&&e("ic-input-label",{for:this.inputId,label:l,helperText:n,required:y,disabled:i,readonly:w}),e("ic-input-component-container",{ref:t=>this.anchorEl=t,class:{"menu-open":this.open},small:t,fullWidth:a,disabled:i,readonly:w,validationStatus:L},w?e("ic-typography",null,e("p",null,this.getLabelFromValue(C))):u()?e("select",Object.assign({ref:t=>this.nativeSelectElement=t,disabled:i,onChange:this.handleNativeSelectChange,required:y,id:this.inputId,"aria-label":l,"aria-describedby":H,"aria-invalid":B,onBlur:this.onBlur,onFocus:this.onFocus},this.inheritedAttributes),e("option",{value:"",selected:true,disabled:!z},x),g.map((t=>{if(t.children){return e("optgroup",{label:t.label},t.children.map((t=>e("option",{value:t.value,disabled:t.disabled,selected:t.value===C},t.label))))}else{return e("option",{value:t.value,disabled:t.disabled,selected:t.value===C},t.label)}}))):k?e("div",{class:"searchable-select-container"},e("input",{class:"select-input",role:"combobox","aria-label":l,"aria-describedby":H,"aria-activedescendant":this.ariaActiveDescendant,"aria-autocomplete":"list","aria-expanded":this.open?"true":"false","aria-invalid":B,"aria-required":y?"true":"false","aria-controls":r,ref:t=>this.searchableSelectElement=t,id:this.inputId,value:this.searchableSelectInputValue,placeholder:x,disabled:i,onInput:this.handleSearchableSelectInput,onClick:this.handleClick,onKeyDown:this.handleKeyDown,onFocus:this.onFocus,onBlur:this.onBlur}),this.searchableSelectInputValue&&(z||k)&&e("div",{class:"clear-button-container"},e("ic-button",{id:"clear-button",ref:t=>this.clearButton=t,"aria-label":this.searchableSelectInputValue&&C===null?"Clear input":"Clear selection",class:"clear-button",innerHTML:m,onClick:this.handleClear,onFocus:this.handleClearButtonFocus,onBlur:this.handleClearButtonBlur,size:t?"small":"default",variant:"icon",appearance:this.clearButtonFocused?b.Light:b.Dark}),e("div",{class:"divider"})),e("span",{onMouseDown:this.handleExpandIconMouseDown,class:{"expand-icon":true,"expand-icon-open":this.open,"expand-icon-filled":!(C==null||C===""),"expand-icon-disabled":!this.isMenuEnabled()},innerHTML:v,"aria-hidden":"true"}),e("div",{"aria-live":"polite",role:"status",class:"searchable-select-results-status"})):e("div",{class:"select-container"},e("button",{class:"select-input",ref:t=>this.customSelectElement=t,id:this.inputId,"aria-label":`${l}, ${this.getLabelFromValue(C)||x}${y?", required":""}`,"aria-describedby":H,"aria-invalid":B,"aria-haspopup":"listbox","aria-expanded":this.open?"true":"false","aria-owns":r,"aria-controls":r,disabled:i,onBlur:this.onBlur,onFocus:this.onFocus,onClick:this.handleClick,onMouseDown:this.handleMouseDown,onKeyDown:this.handleKeyDown},e("ic-typography",{variant:"body",class:{"value-text":true,placeholder:this.getLabelFromValue(C)===undefined}},e("p",null,this.getLabelFromValue(C)||x)),e("div",{class:"select-input-end"},C&&z&&e("div",{class:"divider"}),e("span",{class:{"expand-icon":true,"expand-icon-open":this.open,"expand-icon-filled":!(C==null||C==="")},innerHTML:v,"aria-hidden":"true"}))),C&&z&&e("ic-button",{id:"clear-button","aria-label":"Clear selection",class:"clear-button",innerHTML:m,onClick:this.handleClear,onFocus:this.handleClearButtonFocus,onBlur:this.handleClearButtonBlur,size:t?"small":"default",variant:"icon",appearance:this.clearButtonFocused?b.Light:b.Dark}))),!u()&&e("ic-menu",{class:{"no-results":this.noOptions!==null},ref:t=>this.menu=t,inputEl:k?this.searchableSelectElement:this.customSelectElement,inputLabel:l,anchorEl:this.anchorEl,small:t,menuId:r,open:this.open,options:k?this.filteredOptions:g,value:C,fullWidth:a,onMenuChange:this.handleMenuChange,onOptionSelect:this.handleCustomSelectChange,parentEl:this.host}),e("ic-input-validation",{class:{"menu-open":this.open},ariaLiveMode:"polite",status:d(this.validationStatus,this.disabled)===false?"":L,message:d(this.validationStatus,this.disabled)?M:"",for:this.inputId})))}get host(){return a(this)}static get watchers(){return{options:["watchOptionsHandler"]}}};w.style=g;export{w as ic_select};
2
- //# sourceMappingURL=p-9bf3f413.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/ic-select/ic-select.css?tag=ic-select&encapsulation=shadow","src/components/ic-select/ic-select.tsx"],"names":["icSelectCss","inputIds","Select","this","inputId","menuId","inheritedAttributes","isMenuEnabled","searchableSelectInputValue","charactersUntilSuggestions","length","setOptionsValuesFromLabels","options","map","option","value","label","setTextColor","nativeSelectElement","selectedIndex","className","setMenuChange","open","getLabelFromValue","getValueFromLabel","_a","find","getFilteredChildMenuOptions","children","getFilteredMenuOptions","includeDescriptionsInSearch","searchMatchPosition","newOption","Object","assign","handleNativeSelectChange","icChange","emit","handleCustomSelectChange","event","searchable","detail","emptyOptionListText","searchableSelectElement","focus","ariaActiveDescendant","optionId","handleMenuChange","handleFocusIndicatorDisplay","focusIndicator","host","shadowRoot","querySelector","classList","add","remove","handleMouseDown","preventDefault","handleClick","noOptions","menu","handleClickOpen","handleExpandIconMouseDown","disabled","handleClear","stopPropagation","customSelectElement","handleKeyDown","cancelBubble","key","handleKeyboardOpen","handleClearButtonFocus","clearButtonFocused","handleClearButtonBlur","handleSearchableSelectInput","target","undefined","isGrouped","newFilteredOptions","menuOptionsFiltered","includeGroupTitlesInSearch","indexOf","push","noChildOptionsWhenFiltered","filteredOptions","debounceAriaLiveUpdate","updateSearchableSelectResultAriaLive","searchableSelectResultsStatusEl","innerText","onFocus","icFocus","onBlur","relatedTarget","clearButton","icBlur","[object Object]","clearTimeout","debounce","window","setTimeout","inheritAttributes","IC_INHERITED_ARIA","onComponentRequiredPropUndefined","prop","propName","small","fullWidth","helperText","hideLabel","name","placeholder","readonly","required","showClearButton","validationStatus","validationText","renderHiddenInput","invalid","IcInformationStatus","Error","describedBy","getInputDescribedByText","hasValidationStatus","trim","h","Host","for","ref","el","anchorEl","class","menu-open","isMobileOrTablet","onChange","id","aria-label","aria-describedby","aria-invalid","selected","role","aria-activedescendant","aria-autocomplete","aria-expanded","aria-required","aria-controls","onInput","onClick","onKeyDown","innerHTML","Clear","size","variant","appearance","IcThemeForegroundEnum","Light","Dark","onMouseDown","expand-icon","expand-icon-open","expand-icon-filled","expand-icon-disabled","Expand","aria-hidden","aria-live","aria-haspopup","aria-owns","value-text","no-results","inputEl","inputLabel","onMenuChange","onOptionSelect","parentEl","ariaLiveMode","status","message"],"mappings":"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","sourcesContent":["@import \"../../global/normalise.css\";\n\n/**\n * @prop --input-width: Width of the input field\n*/\n\nic-input-component-container:hover {\n --border-color: var(--ic-action-dark-hover);\n}\n\nic-input-component-container:active {\n --border-color: var(--ic-action-dark-active);\n\n color: var(--ic-action-dark-active);\n}\n\nic-input-component-container.menu-open {\n --border-color: var(--ic-architectural-400);\n\n color: var(--ic-action-dark);\n}\n\nic-input-validation .status-icon,\nic-input-validation .statustext {\n visibility: visible;\n}\n\nic-input-validation.menu-open .status-icon,\nic-input-validation.menu-open .statustext {\n visibility: hidden;\n transition: visibility 0s;\n}\n\nic-input-label {\n margin-bottom: var(--ic-space-xs) !important;\n}\n\nselect {\n border: 0;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-architectural-white);\n color: var(--ic-color-primary-text);\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n height: 100%;\n padding-left: 6px;\n appearance: none;\n background-repeat: no-repeat;\n background-position: right 6px center;\n background-image: url(\"data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\");\n}\n\nselect option,\n.select-option-selected {\n color: var(--ic-color-primary-text);\n}\n\nselect:disabled {\n color: var(--ic-architectural-200);\n background-image: url(\"data:image/svg+xml;utf8,<svg fill='grey' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\");\n}\n\nselect:focus {\n border: 0;\n outline: 0;\n}\n\nselect:not([disabled]) {\n cursor: pointer;\n}\n\n.select-container {\n width: 100%;\n display: flex;\n align-items: center;\n}\n\n.select-input {\n width: 100%;\n height: 100%;\n padding: 0 6px;\n display: flex;\n cursor: pointer;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n}\n\n.select-input:focus {\n outline: none;\n}\n\n:host(:not([disabled])) ic-input-component-container:hover .select-input {\n background-color: var(--ic-architectural-white);\n}\n\n:host([disabled]) .select-input {\n pointer-events: none;\n}\n\n:host([searchable]) .select-input {\n cursor: auto;\n}\n\n.searchable-select-container {\n align-items: center;\n display: flex;\n width: 100%;\n}\n\n.expand-icon {\n height: var(--ic-space-lg);\n padding-left: var(--ic-space-xs);\n color: var(--expand-icon-hover, var(--ic-architectural-400));\n}\n\n:host([disabled]) .expand-icon,\n:host([disabled]) .expand-icon > svg > path {\n color: var(--ic-architectural-200);\n}\n\n:host([searchable]) .expand-icon {\n padding-left: var(--ic-space-xxs);\n height: 36px;\n}\n\n:host([searchable]) .expand-icon > svg {\n height: 36px;\n padding: 0 6px;\n}\n\n:host([searchable]:not([disabled])) .expand-icon > svg {\n cursor: pointer;\n}\n\n.expand-icon-open {\n color: var(--ic-action-dark);\n}\n\n.expand-icon-filled {\n color: var(--ic-action-dark);\n}\n\n.expand-icon-open,\n:host([searchable]) .expand-icon-open {\n transform: rotateX(180deg);\n}\n\n:host([disabled]) .value-text,\n.placeholder {\n color: var(--ic-color-tertiary-text);\n}\n\n.select-input-end {\n display: flex;\n align-items: center;\n}\n\n.clear-button-container {\n display: flex;\n gap: var(--ic-space-xxs);\n padding-left: 38px;\n}\n\n:host([small]) .clear-button-container {\n padding-left: 30px;\n}\n\n.divider {\n width: 1px;\n background-color: var(--ic-architectural-400);\n margin: var(--ic-space-xxs) 0;\n border-radius: 1px;\n height: var(--ic-space-lg);\n}\n\n:host([small]) .divider {\n height: var(--ic-space-md);\n}\n\n.clear-button {\n position: absolute;\n right: 44px;\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus {\n background-color: var(--ic-focus-blue);\n box-shadow: inset 0 0 0 2px var(--ic-focus-glow);\n border-radius: 4px;\n}\n\n.clear-button:focus * {\n fill: white;\n}\n\n.searchable-select-results-status {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: 1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 1px;\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n h,\n State,\n Watch,\n} from \"@stencil/core\";\n\nimport {\n getInputDescribedByText,\n getLabelFromValue,\n hasValidationStatus,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n isMobileOrTablet,\n getFilteredMenuOptions,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcThemeForegroundEnum,\n IcMenuOption,\n IcSearchMatchPositions,\n} from \"../../utils/types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport { IcValueEventDetail } from \"../../interface\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-select\",\n styleUrl: \"ic-select.css\",\n shadow: true,\n})\nexport class Select {\n private nativeSelectElement: HTMLSelectElement;\n private customSelectElement: HTMLButtonElement;\n private searchableSelectElement: HTMLInputElement;\n private menu: HTMLIcMenuElement;\n private anchorEl: HTMLElement;\n private clearButton: HTMLIcButtonElement;\n\n private inputId = `ic-select-input-${inputIds++}`;\n private menuId = `${this.inputId}-menu`;\n\n private inheritedAttributes: { [k: string]: unknown } = {};\n\n private debounce: number;\n\n /**\n * Provide a label for the input.\n */\n @Prop() label!: string;\n\n /**\n * Provide the possible selection options.\n */\n @Prop() options?: IcMenuOption[] = [];\n\n /**\n * Specify if the input requires a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * Hides the label and applies the required label value as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Specify whether the input is disabled.\n */\n @Prop({ reflect: true }) disabled?: boolean = false;\n\n /**\n * Specify whether the input is read only.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * Provide a placeholder value to display.\n */\n @Prop() placeholder?: string = \"Select an option\";\n\n /**\n * Provide helper text to display additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * Specify whether small styling is to be applied to the element.\n */\n @Prop() small?: boolean = false;\n\n /**\n * If true, then fill width of container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * Provide a validation status.\n */\n @Prop() validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * Provide the text to display as the validation message.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * The value of the currently selected option.\n */\n @Prop() value?: string;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name?: string = this.inputId;\n\n /**\n * Display a button which clears the input when clicked. The button will always appear on the searchable select.\n */\n @Prop() showClearButton?: boolean = false;\n\n /**\n * If true, the select can be typed in to filter options.\n */\n @Prop() searchable?: boolean = false;\n\n /**\n * If true, descriptions of options are included when filtering options in a searchable select.\n */\n @Prop() includeDescriptionsInSearch?: boolean = false;\n\n /**\n * If true, group titles of grouped options are included when filtering options in a searchable select.\n */\n @Prop() includeGroupTitlesInSearch?: boolean = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options.\n */\n @Prop() searchMatchPosition?: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * Number of characters until suggestions appear for a searchable select.\n */\n @Prop() charactersUntilSuggestions?: number = 0;\n\n /**\n * Provide text for empty results list\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n @State() open: boolean = false;\n\n @State() clearButtonFocused: boolean = false;\n\n @State() searchableSelectInputValue: string = null;\n\n @State() filteredOptions: IcMenuOption[] = this.options;\n\n @State() ariaActiveDescendant: string;\n\n @State() noOptions: IcMenuOption[] = null;\n\n @Watch(\"options\")\n watchOptionsHandler(): void {\n this.setOptionsValuesFromLabels();\n this.filteredOptions = this.options;\n }\n\n /**\n * Emitted when a value is selected.\n */\n @Event() icChange!: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when select has focus.\n */\n @Event() icFocus!: EventEmitter<void>;\n\n /**\n * Emitted when select has blur.\n */\n @Event() icBlur!: EventEmitter<void>;\n\n @Element() host!: HTMLIcSelectElement;\n\n /**\n * Sets focus on the input box.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.customSelectElement) {\n this.customSelectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n private isMenuEnabled = () => {\n return (\n ((this.searchableSelectInputValue === null ||\n this.searchableSelectInputValue === \"\") &&\n this.charactersUntilSuggestions === 0) ||\n (this.searchableSelectInputValue &&\n this.searchableSelectInputValue.length >=\n this.charactersUntilSuggestions)\n );\n };\n\n private setOptionsValuesFromLabels = (): void => {\n if (this.options.length > 0) {\n this.options.map((option) => {\n if (!option.value) {\n option.value = option.label;\n }\n });\n }\n };\n\n private setTextColor = (): void => {\n if (this.nativeSelectElement.selectedIndex === 0) {\n this.nativeSelectElement.className = \"placeholder\";\n } else {\n this.nativeSelectElement.className = \"select-option-selected\";\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n }\n };\n\n private getLabelFromValue = (value: string): string | undefined => {\n return getLabelFromValue(value, this.options);\n };\n\n private getValueFromLabel = (label: string): string | undefined => {\n const value = this.options.find((option) => option.label === label)?.value;\n return value;\n };\n\n private getFilteredChildMenuOptions = (option: IcMenuOption) => {\n let children = option.children;\n\n children = getFilteredMenuOptions(\n option.children,\n this.includeDescriptionsInSearch,\n this.searchableSelectInputValue,\n this.searchMatchPosition\n );\n\n const newOption = { ...option };\n newOption.children = children;\n return newOption;\n };\n\n private handleNativeSelectChange = (): void => {\n this.icChange.emit({ value: this.nativeSelectElement.value });\n this.setTextColor();\n };\n\n private handleCustomSelectChange = (event: CustomEvent): void => {\n if (this.searchable && event.detail.label === this.emptyOptionListText) {\n this.searchableSelectElement.focus();\n return;\n }\n\n if (this.searchable) {\n this.searchableSelectInputValue = this.getLabelFromValue(\n event.detail.value\n );\n }\n\n this.ariaActiveDescendant = event.detail.optionId;\n this.icChange.emit({ value: event.detail.value });\n };\n\n private handleMenuChange = (event: CustomEvent): void => {\n this.open = event.detail.open;\n\n this.searchable && this.handleFocusIndicatorDisplay();\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator =\n this.host.shadowRoot.querySelector(\".focus-indicator\");\n\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n };\n\n private handleMouseDown = (event: Event): void => {\n if (!this.open) {\n event.preventDefault();\n }\n };\n\n private handleClick = (event: MouseEvent): void => {\n this.noOptions = null;\n this.menu.options = this.options;\n\n if (event.detail !== 0 && this.isMenuEnabled()) {\n this.menu.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement.focus();\n this.handleClick(event);\n }\n };\n\n private handleClear = (event: Event): void => {\n event.stopPropagation();\n this.noOptions = null;\n this.icChange.emit({ value: null });\n\n if (this.searchable) {\n this.searchableSelectElement.value = null;\n this.searchableSelectInputValue = null;\n this.menu.options = this.options;\n this.searchableSelectElement.focus();\n\n if (!this.isMenuEnabled()) {\n this.setMenuChange(false);\n }\n } else {\n this.customSelectElement.focus();\n }\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n event.cancelBubble = true;\n\n if (!this.open) {\n this.noOptions = null;\n this.menu.options = this.options;\n }\n\n if (this.open && event.key === \"Enter\") {\n this.setMenuChange(false);\n } else {\n if (\n !(\n (event.key === \"ArrowDown\" || event.key === \"ArrowUp\") &&\n this.noOptions !== null\n ) &&\n this.isMenuEnabled()\n ) {\n this.menu.handleKeyboardOpen(event);\n }\n }\n };\n\n private handleClearButtonFocus = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleClearButtonBlur = (): void => {\n this.clearButtonFocused = false;\n };\n\n private handleSearchableSelectInput = (event: Event): void => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n\n if (this.getValueFromLabel(this.searchableSelectInputValue) === undefined) {\n this.icChange.emit({ value: null });\n }\n\n if (this.isMenuEnabled()) {\n this.setMenuChange(true);\n } else {\n this.setMenuChange(false);\n }\n\n const options = [...this.options];\n\n let isGrouped = false;\n let newFilteredOptions: IcMenuOption[] = [];\n\n options.map((option) => {\n if (option.children) isGrouped = true;\n });\n\n const menuOptionsFiltered = getFilteredMenuOptions(\n options,\n this.includeDescriptionsInSearch,\n this.searchableSelectInputValue,\n this.searchMatchPosition\n );\n\n if (!isGrouped) {\n newFilteredOptions = menuOptionsFiltered;\n } else {\n options.map((option) => {\n if (this.includeGroupTitlesInSearch) {\n if (menuOptionsFiltered.indexOf(option) !== -1) {\n newFilteredOptions.push(option);\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n });\n }\n\n let noChildOptionsWhenFiltered = false;\n\n if (isGrouped) {\n noChildOptionsWhenFiltered = true;\n newFilteredOptions.map((option) => {\n if (option.children.length > 0) {\n noChildOptionsWhenFiltered = false;\n }\n });\n }\n\n const noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n\n if (newFilteredOptions.length > 0 && !noChildOptionsWhenFiltered) {\n this.noOptions = null;\n this.filteredOptions = newFilteredOptions;\n } else {\n this.noOptions = noOptions;\n this.filteredOptions = this.noOptions;\n }\n\n this.debounceAriaLiveUpdate();\n };\n\n private updateSearchableSelectResultAriaLive = (): void => {\n const searchableSelectResultsStatusEl = this.host.shadowRoot.querySelector(\n \".searchable-select-results-status\"\n ) as HTMLDivElement;\n\n if (this.noOptions !== null) {\n searchableSelectResultsStatusEl.innerText = this.emptyOptionListText;\n } else {\n searchableSelectResultsStatusEl.innerText = \"\";\n }\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounce);\n\n window.setTimeout(() => {\n this.updateSearchableSelectResultAriaLive();\n }, 800);\n }\n\n private onFocus = (): void => {\n this.icFocus.emit();\n };\n\n private onBlur = (event: FocusEvent): void => {\n if (\n this.searchable &&\n event.relatedTarget !== this.menu &&\n !(this.clearButton && event.relatedTarget === this.clearButton)\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n }\n\n this.icBlur.emit();\n };\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.host, [\n ...IC_INHERITED_ARIA,\n \"tabindex\",\n \"title\",\n ]);\n\n this.setOptionsValuesFromLabels();\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Select\"\n );\n }\n\n render() {\n const {\n small,\n disabled,\n fullWidth,\n helperText,\n hideLabel,\n label,\n menuId,\n name,\n options,\n placeholder,\n readonly,\n required,\n searchable,\n showClearButton,\n validationStatus,\n validationText,\n value,\n } = this;\n\n renderHiddenInput(true, this.host, name, value, disabled);\n\n const invalid =\n validationStatus === IcInformationStatus.Error ? \"true\" : \"false\";\n\n const describedBy = getInputDescribedByText(\n this.inputId,\n helperText !== \"\",\n hasValidationStatus(this.validationStatus, this.disabled)\n ).trim();\n\n return (\n <Host>\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={this.inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n ></ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": this.open }}\n small={small}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {readonly ? (\n <ic-typography>\n <p>{this.getLabelFromValue(value)}</p>\n </ic-typography>\n ) : isMobileOrTablet() ? (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={this.inputId}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n {...this.inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options.map((option) => {\n if (option.children) {\n return (\n <optgroup label={option.label}>\n {option.children.map((option) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === value}\n >\n {option.label}\n </option>\n ))}\n </optgroup>\n );\n } else {\n return (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === value}\n >\n {option.label}\n </option>\n );\n }\n })}\n </select>\n ) : searchable ? (\n <div class=\"searchable-select-container\">\n <input\n class=\"select-input\"\n role=\"combobox\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={this.ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-invalid={invalid}\n aria-required={required ? \"true\" : \"false\"}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={this.inputId}\n value={this.searchableSelectInputValue}\n placeholder={placeholder}\n disabled={disabled}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n ></input>\n {this.searchableSelectInputValue &&\n (showClearButton || searchable) && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el) => (this.clearButton = el)}\n aria-label={\n this.searchableSelectInputValue && value === null\n ? \"Clear input\"\n : \"Clear selection\"\n }\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={small ? \"small\" : \"default\"}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n \"expand-icon-filled\": !(value == null || value === \"\"),\n \"expand-icon-disabled\": !this.isMenuEnabled(),\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"searchable-select-results-status\"\n ></div>\n </div>\n ) : (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n ref={(el) => (this.customSelectElement = el)}\n id={this.inputId}\n aria-label={`${label}, ${\n this.getLabelFromValue(value) || placeholder\n }${required ? \", required\" : \"\"}`}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-owns={menuId}\n aria-controls={menuId}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.handleClick}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleKeyDown}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n placeholder: this.getLabelFromValue(value) === undefined,\n }}\n >\n <p>{this.getLabelFromValue(value) || placeholder}</p>\n </ic-typography>\n <div class=\"select-input-end\">\n {value && showClearButton && <div class=\"divider\"></div>}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n \"expand-icon-filled\": !(value == null || value === \"\"),\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {value && showClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear selection\"\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={small ? \"small\" : \"default\"}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n )}\n </div>\n )}\n </ic-input-component-container>\n {!isMobileOrTablet() && (\n <ic-menu\n class={{\n \"no-results\": this.noOptions !== null,\n }}\n ref={(el) => (this.menu = el)}\n inputEl={\n searchable\n ? this.searchableSelectElement\n : this.customSelectElement\n }\n inputLabel={label}\n anchorEl={this.anchorEl}\n small={small}\n menuId={menuId}\n open={this.open}\n options={searchable ? this.filteredOptions : options}\n value={value}\n fullWidth={fullWidth}\n onMenuChange={this.handleMenuChange}\n onOptionSelect={this.handleCustomSelectChange}\n parentEl={this.host}\n ></ic-menu>\n )}\n <ic-input-validation\n class={{ \"menu-open\": this.open }}\n ariaLiveMode=\"polite\"\n status={\n hasValidationStatus(this.validationStatus, this.disabled) ===\n false\n ? \"\"\n : validationStatus\n }\n message={\n hasValidationStatus(this.validationStatus, this.disabled)\n ? validationText\n : \"\"\n }\n for={this.inputId}\n ></ic-input-validation>\n </ic-input-container>\n </Host>\n );\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/components/ic-footer-link/ic-footer-link.css?tag=ic-footer-link&encapsulation=shadow","src/components/ic-footer-link/ic-footer-link.tsx"],"names":["icFooterLinkCss","FooterLink","small","grouped","DEVICE_SIZES","XL","getThemeForegroundColor","[object Object]","e","parentElement","classList","contains","this","inferConfig","footerConfig","el","ev","theme","detail","foregroundColor","mode","href","h","Host","class","footer-link"],"mappings":"4HAAA,MAAMA,EAAkB,g7JCmBXC,EAAU,yCAMG,uBAEc,CAAEC,MAAO,MAAOC,QAAS,uBAEjCC,EAAaC,wBAEGC,IAEtCC,YAAYC,GAClB,GAAIA,EAAEC,gBAAkB,KAAM,CAC5B,GAAID,EAAEC,cAAcC,UAAUC,SAAS,UAAW,CAChD,MAAO,CACLT,MAAOM,EAAEC,cAAcC,UAAUC,SAAS,gBAC1CR,QAASK,EAAEC,cAAcC,UAAUC,SAAS,uBAEzC,CACL,OAAOC,KAAKC,YAAYL,EAAEC,oBAEvB,CACL,MAAO,CAAEP,MAAO,MAAOC,QAAS,QAKpCI,sBACEK,KAAKE,aAAeF,KAAKC,YAAYD,KAAKG,IAI5CR,yBAAyBS,GACvB,MAAMC,EAAiBD,EAAGE,OAC1BN,KAAKO,gBAAkBF,EAAMG,KAG/Bb,oBACEK,KAAKE,aAAeF,KAAKC,YAAYD,KAAKG,IAG5CR,SACE,MAAMO,aAAEA,EAAYO,KAAEA,GAAST,KAC/B,MAAMV,MAAEA,EAAKC,QAAEA,GAAYW,EAE3B,OACEQ,EAACC,EAAI,CACHC,MAAO,CACLC,cAAe,KACflB,CAAC,eAAeJ,EAAU,UAAY,eACpCD,EAAQ,QAAU,YACf,KACLK,CAAC,eAAeK,KAAKO,mBAAoB,OAG3CG,EAAA,IAAA,CAAGD,KAAMA,GACPC,EAAA,OAAA","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host(.footer-link-ungrouped-sparse) {\n --footer-link-margin-left: 0;\n --footer-link-margin-right: 40px;\n --footer-link-margin-bottom: 0;\n}\n\n:host(.footer-link-ungrouped-small) {\n --footer-link-margin-left: 0;\n --footer-link-margin-right: 0;\n --footer-link-margin-bottom: var(--ic-space-md);\n}\n\n:host(.footer-link-grouped-sparse) {\n --footer-link-margin-left: 0;\n --footer-link-margin-right: 0;\n --footer-link-margin-bottom: var(--ic-space-md);\n}\n\n:host(.footer-link-grouped-small) {\n --footer-link-margin-left: var(--ic-space-md);\n --footer-link-margin-right: 0;\n --footer-link-margin-bottom: var(--ic-space-md);\n}\n\n:host(.footer-link) {\n margin-left: var(--footer-link-margin-left);\n margin-right: var(--footer-link-margin-right);\n margin-bottom: var(--footer-link-margin-bottom);\n}\n\n/* Link styling */\n\n:host(.footer-link) a,\n:host(.footer-link) a ::slotted(a) {\n display: block;\n font-weight: var(--ic-font-weight-bold);\n color: inherit;\n width: fit-content;\n font-size: var(--ic-font-size-regular);\n}\n\n:host(.footer-link) a:link,\n:host(.footer-link) a ::slotted(a:link) {\n color: inherit;\n text-decoration: underline;\n font-weight: var(--ic-font-weight-bold);\n}\n\n:host(.footer-link) a:link > ::slotted(svg),\n:host(.footer-link) a:link > ::slotted(img),\n:host(.footer-link) a ::slotted(a:link > ::slotted(svg)),\n:host(.footer-link) a ::slotted(a:link > ::slotted(img)) {\n padding: var(--ic-space-xxxs);\n pointer-events: none;\n transition: var(--ic-easing-transition-fast);\n}\n\n/*\nThere's an apparent defect in Chrome that means this isn't always re-rendered if changed. \nNot an issue in Safari. Line 73-79 implement the same function but less clean.\n\na:link > ::slotted(svg) ,\na:link:visited > ::slotted(svg) {\n fill: var(--ic-theme-text);\n}\n*/\n\n:host(.footer-link-light) ::slotted(svg) {\n fill: var(--ic-architectural-white);\n}\n\n:host(.footer-link-dark) ::slotted(svg) {\n fill: var(--ic-architectural-black);\n}\n\n:host(.footer-link) a:link:hover,\n:host(.footer-link) a:link:focus,\n:host(.footer-link) a ::slotted(a:link:hover),\n:host(.footer-link) a ::slotted(a:link:focus) {\n outline: none;\n text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n}\n\n:host(.footer-link) a:link:focus > ::slotted(svg),\n:host(.footer-link) a:link:focus > ::slotted(img),\n:host(.footer-link) a ::slotted(a:link:focus > ::slotted(svg)),\n:host(.footer-link) a ::slotted(a:link:focus > ::slotted(img)) {\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n}\n\n:host(.footer-link) a:focus,\n:host(.footer-link) a ::slotted(a:focus) {\n border-radius: var(--ic-border-radius);\n outline: none;\n transition: var(--ic-transition-duration-fast);\n}\n\n:host(.footer-link) a:link:active,\n:host(.footer-link) a:link:focus:active,\n:host(.footer-link) a:link:visited:active,\n:host(.footer-link) a ::slotted(a:link:active),\n:host(.footer-link) a ::slotted(a:link:focus:active),\n:host(.footer-link) a ::slotted(a:link:visited:active) {\n color: var(--ic-action-default);\n text-decoration: none;\n}\n\n:host(.footer-link) a:hover,\n:host(.footer-link) a ::slotted(a:hover) {\n text-decoration: none;\n}\n","import {\n Component,\n Element,\n Host,\n Listen,\n Prop,\n h,\n State,\n} from \"@stencil/core\";\nimport { DEVICE_SIZES, getThemeForegroundColor } from \"../../utils/helpers\";\nimport { IcTheme, IcThemeForeground } from \"../../utils/types\";\n\ntype FooterConfig = { small: boolean; grouped: boolean };\n\n@Component({\n tag: \"ic-footer-link\",\n styleUrl: \"ic-footer-link.css\",\n shadow: true,\n})\nexport class FooterLink {\n @Element() el: HTMLIcFooterLinkElement;\n\n /**\n * The URL that the link points to.\n */\n @Prop() href?: string = null;\n\n @State() footerConfig: FooterConfig = { small: false, grouped: false };\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n @State() foregroundColor: IcThemeForeground = getThemeForegroundColor();\n\n private inferConfig(e: HTMLElement): FooterConfig {\n if (e.parentElement !== null) {\n if (e.parentElement.classList.contains(\"footer\")) {\n return {\n small: e.parentElement.classList.contains(\"footer-small\"),\n grouped: e.parentElement.classList.contains(\"footer-grouped\"),\n };\n } else {\n return this.inferConfig(e.parentElement);\n }\n } else {\n return { small: false, grouped: false };\n }\n }\n\n @Listen(\"icFooterResized\", { target: \"document\" })\n footerResizeHandler(): void {\n this.footerConfig = this.inferConfig(this.el);\n }\n\n @Listen(\"icThemeChange\", { target: \"document\" })\n footerThemeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.foregroundColor = theme.mode;\n }\n\n componentWillLoad(): void {\n this.footerConfig = this.inferConfig(this.el);\n }\n\n render() {\n const { footerConfig, href } = this;\n const { small, grouped } = footerConfig;\n\n return (\n <Host\n class={{\n \"footer-link\": true,\n [`footer-link-${grouped ? \"grouped\" : \"ungrouped\"}-${\n small ? \"small\" : \"sparse\"\n }`]: true,\n [`footer-link-${this.foregroundColor}`]: true,\n }}\n >\n <a href={href}>\n <slot />\n </a>\n </Host>\n );\n }\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["src/utils/constants.ts","src/utils/helpers.ts"],"names":["IC_INHERITED_ARIA","IC_DEVICE_SIZES","XS","S","M","L","XL","IC_BLOCK_COLOR_COMPONENTS","IC_FIXED_COLOR_COMPONENTS","IC_BLOCK_COLOR_EXCEPTIONS","ic-alert","DARK_MODE_THRESHOLD","inheritAttributes","element","attributes","attributeObject","forEach","attr","hasAttribute","value","getAttribute","removeAttribute","debounceEvent","event","wait","original","_original","emit","debounce","bind","func","timer","args","clearTimeout","setTimeout","renderHiddenInput","always","container","name","disabled","hasShadowDom","input","querySelector","ownerDocument","createElement","type","classList","add","appendChild","removeHiddenInput","remove","el","shadowRoot","attachShadow","getInputHelperTextID","id","getInputValidationTextID","getInputDescribedByText","inputId","helperText","validationText","trim","getThemeFromContext","themeFromEvent","blockColorParent","parentElement","closest","join","parentTag","tagName","toLowerCase","currentTag","_a","includes","IcThemeForegroundEnum","Default","contains","Dark","Light","isMobileOrTablet","navigator","maxTouchPoints","handleHiddenFormButtonClick","form","button","hiddenFormButton","document","setAttribute","style","display","click","isEmptyString","length","getLabelFromValue","options","ungroupedOptions","map","option","children","push","find","label","undefined","getFilteredMenuOptions","includeDescriptions","searchString","position","rawFilteredOptions","filter","description","startsWith","deviceSizeMatches","size","window","matchMedia","matches","getCurrentDeviceSize","DEVICE_SIZES","UNDEFINED","getCssProperty","cssVar","getComputedStyle","documentElement","getPropertyValue","getThemeForegroundColor","themeRed","themeGreen","themeBlue","fontColor","Math","round","parseInt","getSlot","slotHasContent","getSlotContent","slot","getSlotElements","slotContent","firstElementChild","elements","assignedElements","childNodes","getNavItemParentDetails","navType","parent","getParentElementType","getParentElement","Number","replace","hasValidationStatus","status","isSlotUsed","slotName","onComponentPropUndefinedChange","oldValue","newValue","callback","onComponentRequiredPropUndefined","props","component","i","prop","propName","console","error","kebabToCamelCase","kebabCase","individualWords","split","camelCase","substring","toUpperCase","checkResizeObserver","callbackFn","ResizeObserver","hex2dec","v","hexToRgb","hex","c","r","g","b","slice","rgbStrToObj","rgbStr","colorRGB","rgb","elementOverflowsX","scrollWidth","clientWidth","child","hasClassificationBanner"],"mappings":"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","sourcesContent":["// Global ARIA attributes\nexport const IC_INHERITED_ARIA = [\n \"aria-atomic\",\n \"aria-busy\",\n \"aria-controls\",\n \"aria-current\",\n \"aria-describedby\",\n \"aria-description\",\n \"aria-details\",\n \"aria-disabled\",\n \"aria-dropeffect\",\n \"aria-errormessage\",\n \"aria-flowto\",\n \"aria-grabbed\",\n \"aria-haspopup\",\n \"aria-hidden\",\n \"aria-invalid\",\n \"aria-keyshortcuts\",\n \"aria-label\",\n \"aria-labelledby\",\n \"aria-live\",\n \"aria-owns\",\n \"aria-relevant\",\n \"aria-roledescription\",\n];\n\nexport const IC_DEVICE_SIZES = {\n XS: 576,\n S: 768,\n M: 992,\n L: 1200,\n XL: 99999,\n};\n\nexport const IC_BLOCK_COLOR_COMPONENTS = [\n \"ic-hero\",\n \"ic-top-navigation\",\n \"ic-footer\",\n \"ic-side-navigation\",\n \"ic-alert\",\n];\n\nexport const IC_FIXED_COLOR_COMPONENTS = [\"ic-alert\"];\n\nexport interface IcColorExceptions {\n [details: string]: string[];\n}\n\nexport const IC_BLOCK_COLOR_EXCEPTIONS: IcColorExceptions = {\n \"ic-alert\": [\"ic-link\"],\n};\n","import { EventEmitter } from \"@stencil/core\";\nimport {\n IcCallbackFunctionNoReturn,\n IcInformationStatusOrEmpty,\n IcNavParentDetails,\n IcPropObject,\n IcColorRGB,\n IcSearchMatchPositions,\n} from \"./types\";\n\nimport {\n IcMenuOption,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../utils/types\";\nimport {\n IC_BLOCK_COLOR_COMPONENTS,\n IC_BLOCK_COLOR_EXCEPTIONS,\n IC_FIXED_COLOR_COMPONENTS,\n} from \"./constants\";\n\nconst DARK_MODE_THRESHOLD = 128;\n\n/**\n * Used to inherit global attributes set on the host. Called in componentWillLoad and assigned\n * to a variable that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nexport const inheritAttributes = (\n element: HTMLElement,\n attributes: string[] = []\n): { [key: string]: unknown } => {\n const attributeObject: { [key: string]: unknown } = {};\n\n attributes.forEach((attr) => {\n if (element.hasAttribute(attr)) {\n const value = element.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = element.getAttribute(attr);\n }\n element.removeAttribute(attr);\n }\n });\n\n return attributeObject;\n};\n\nexport const debounceEvent = (\n event: EventEmitter,\n wait: number\n): EventEmitter => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const original = (event as any)._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n } as EventEmitter;\n};\n\nexport const debounce = (\n func: (...args: unknown[]) => void,\n wait = 0\n): unknown => {\n let timer: ReturnType<typeof setTimeout>;\n return (...args: unknown[]) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param always Add a hidden input even if the container does not use Shadow\n * @param container The element where the input will be added\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n */\nexport const renderHiddenInput = (\n always: boolean,\n container: HTMLElement,\n name: string,\n value: string | undefined | null,\n disabled: boolean\n): void => {\n if (always || hasShadowDom(container)) {\n let input = container.querySelector(\n \"input.ic-input\"\n ) as HTMLInputElement | null;\n if (input === null) {\n input = container.ownerDocument.createElement(\"input\");\n input.type = \"hidden\";\n input.classList.add(\"ic-input\");\n container.appendChild(input);\n }\n input.disabled = disabled;\n input.name = name;\n input.value = value || \"\";\n }\n};\n\nexport const removeHiddenInput = (container: HTMLElement): void => {\n const input = container.querySelector(\n \"input.ic-input\"\n ) as HTMLInputElement | null;\n input?.remove();\n};\n\nexport const hasShadowDom = (el: HTMLElement): boolean => {\n return !!el.shadowRoot && !!el.attachShadow;\n};\n\nexport const getInputHelperTextID = (id: string): string => {\n return id + \"-helper-text\";\n};\n\nexport const getInputValidationTextID = (id: string): string => {\n return id + \"-validation-text\";\n};\n\nexport const getInputDescribedByText = (\n inputId: string,\n helperText: boolean,\n validationText: boolean\n): string => {\n return `${helperText ? getInputHelperTextID(inputId) : \"\"} ${\n validationText ? getInputValidationTextID(inputId) : \"\"\n }`.trim();\n};\n\n/**\n * This method helps to understand the context in which a component exists,\n * to assist with choosing appropriate foreground colours to use. For example,\n * this method will help you use the 'white' version of a button if it's within\n * a block colour element using white foreground text.\n *\n * This only works for components/elements passed via <slot> and not if they\n * are part of an IC component.\n *\n * \"\"\n * @returns IcThemeForeground depending on the context\n */\nexport const getThemeFromContext = (\n el: Element,\n themeFromEvent: IcThemeForeground = null\n): IcThemeForeground => {\n const blockColorParent = el.parentElement.closest(\n IC_BLOCK_COLOR_COMPONENTS.join(\",\")\n );\n\n // If within a block color component\n if (blockColorParent !== null) {\n const parentTag = blockColorParent.tagName.toLowerCase();\n const currentTag = el.tagName.toLowerCase();\n\n if (IC_BLOCK_COLOR_EXCEPTIONS[parentTag]?.includes(currentTag)) {\n return IcThemeForegroundEnum.Default;\n } else if (\n themeFromEvent !== null &&\n !IC_FIXED_COLOR_COMPONENTS.includes(parentTag)\n ) {\n return themeFromEvent;\n } else if (\n blockColorParent.classList.contains(IcThemeForegroundEnum.Dark)\n ) {\n return IcThemeForegroundEnum.Dark;\n }\n\n return IcThemeForegroundEnum.Light;\n }\n\n return IcThemeForegroundEnum.Default;\n};\n\nexport const isMobileOrTablet = (): boolean => {\n let isMobileOrTablet = false;\n if (\"maxTouchPoints\" in navigator) {\n isMobileOrTablet = navigator.maxTouchPoints > 0;\n }\n return isMobileOrTablet;\n};\n\n/**\n * Will create a button within the lightDOM which interacts with the parent form.\n * This is required as buttons within the shadowDOM will not invoke a submit or reset\n *\n * @param form - parent form element which contains shadowDom button\n * @param button - shadowDOM button\n */\nexport const handleHiddenFormButtonClick = (\n form: HTMLFormElement,\n button: HTMLIcButtonElement | HTMLButtonElement\n): void => {\n const hiddenFormButton = document.createElement(\"button\");\n\n hiddenFormButton.setAttribute(\"type\", button.type);\n hiddenFormButton.style.display = \"none\";\n\n form.appendChild(hiddenFormButton);\n\n hiddenFormButton.click();\n hiddenFormButton.remove();\n};\n\nexport const isEmptyString = (value: string): boolean =>\n value.trim().length === 0;\n\n/**\n * Extracts the label using the value from an object. Requires the object to have a label and value property.\n * @param value - value from object\n * @param options - list of menu items\n * @returns - label corresponding to value\n */\nexport const getLabelFromValue = (\n value: string,\n options: IcMenuOption[]\n): string | undefined => {\n const ungroupedOptions: IcMenuOption[] = [];\n if (options.length > 0) {\n options.map((option) => {\n if (option.children) {\n option.children.map((option: IcMenuOption) =>\n ungroupedOptions.push(option)\n );\n } else {\n ungroupedOptions.push(option);\n }\n });\n return ungroupedOptions.find((option) => option.value === value)?.label;\n }\n\n return undefined;\n};\n\n/**\n * Filters the options based on the search string.\n * @param options - array of options\n * @param includeDescriptions - determines whether option descriptions are included when filtering options\n * @param searchString - string used to filter the options\n * @param position - whether the search string matches the start of or anywhere in the options\n * @returns filtered array of options\n */\nexport const getFilteredMenuOptions = (\n options: IcMenuOption[],\n includeDescriptions: boolean,\n searchString: string,\n position: IcSearchMatchPositions\n): IcMenuOption[] => {\n let rawFilteredOptions;\n\n if (position === \"anywhere\") {\n rawFilteredOptions = options.filter((option) => {\n if (includeDescriptions) {\n return (\n option.label.toLowerCase().includes(searchString.toLowerCase()) ||\n option.description?.toLowerCase().includes(searchString.toLowerCase())\n );\n } else {\n return option.label.toLowerCase().includes(searchString.toLowerCase());\n }\n });\n } else {\n rawFilteredOptions = options.filter((option) => {\n if (includeDescriptions) {\n return (\n option.label.toLowerCase().startsWith(searchString.toLowerCase()) ||\n option.description\n ?.toLowerCase()\n .startsWith(searchString.toLowerCase())\n );\n } else {\n return option.label\n .toLowerCase()\n .startsWith(searchString.toLowerCase());\n }\n });\n }\n\n return rawFilteredOptions;\n};\n\nexport const deviceSizeMatches = (size: number): boolean =>\n window.matchMedia(`(max-width: ${size}px)`).matches;\n\nexport const getCurrentDeviceSize = (): number => {\n if (deviceSizeMatches(DEVICE_SIZES.S)) {\n return DEVICE_SIZES.S;\n }\n if (deviceSizeMatches(DEVICE_SIZES.M)) {\n return DEVICE_SIZES.M;\n }\n if (deviceSizeMatches(DEVICE_SIZES.L)) {\n return DEVICE_SIZES.L;\n }\n if (deviceSizeMatches(DEVICE_SIZES.XL)) {\n return DEVICE_SIZES.XL;\n }\n //fallback needed as all of above get initialised to 0 in jest tests\n return DEVICE_SIZES.UNDEFINED;\n};\n\nexport const getCssProperty = (cssVar: string): string => {\n return getComputedStyle(document.documentElement).getPropertyValue(cssVar);\n};\n\nexport const getThemeForegroundColor = (): IcThemeForeground => {\n /*\n Returns if dark or light font colors should be used for color contrast reasons, calculated by using the theme RGB CSS values by:\n - Multiplying each RGB value by a set number: https://www.w3.org/TR/AERT/#color-contrast\n - Adding them together and dividing by 1000\n - If the result is greater than 128 return \"dark\" color, else return \"light\" color\n This is a similar calculation to it's CSS counterpart: \"--ic-theme-text\"\n */\n const themeRed = getCssProperty(\"--ic-theme-primary-r\");\n const themeGreen = getCssProperty(\"--ic-theme-primary-g\");\n const themeBlue = getCssProperty(\"--ic-theme-primary-b\");\n const fontColor = Math.round(\n (parseInt(themeRed) * 299 +\n parseInt(themeGreen) * 587 +\n parseInt(themeBlue) * 114) /\n 1000\n );\n\n return fontColor > DARK_MODE_THRESHOLD\n ? IcThemeForegroundEnum.Dark\n : IcThemeForegroundEnum.Light;\n};\n\nexport const getSlot = (element: HTMLElement, name: string): Element | null => {\n if (element && element.querySelector) {\n return element.querySelector(`[slot=\"${name}\"]`);\n }\n return null;\n};\n\nexport const slotHasContent = (element: HTMLElement, name: string): boolean =>\n getSlot(element, name) !== null;\n\nexport const getSlotContent = (\n element: HTMLElement,\n name: string\n): Element[] | NodeListOf<ChildNode> | null => {\n const slot = getSlot(element, name);\n if (slot) {\n return getSlotElements(slot);\n }\n\n return null;\n};\n\nconst getSlotElements = (slot: Element) => {\n const slotContent = slot.firstElementChild as HTMLSlotElement;\n\n if (slotContent !== null) {\n const elements = slotContent.assignedElements\n ? slotContent.assignedElements()\n : slotContent.childNodes;\n return elements.length ? elements : null;\n } else {\n //check for single element\n return slot === null ? null : [slot];\n }\n};\n\nexport const getNavItemParentDetails = (\n el: HTMLElement\n): IcNavParentDetails => {\n let navType: IcNavParentDetails = { navType: \"\", parent: null };\n switch (getParentElementType(el)) {\n case \"IC-NAVIGATION-GROUP\":\n navType = getNavItemParentDetails(el.parentElement);\n break;\n case \"IC-TOP-NAVIGATION\":\n navType = { navType: \"top\", parent: getParentElement(el) };\n break;\n case \"IC-SIDE-NAVIGATION\":\n navType = { navType: \"side\", parent: getParentElement(el) };\n break;\n case \"IC-PAGE-HEADER\":\n navType = { navType: \"page-header\", parent: null };\n break;\n }\n return navType;\n};\n\nexport const DEVICE_SIZES = {\n XS: Number(getCssProperty(\"--ic-breakpoint-xs\").replace(\"px\", \"\")), // 0\n S: Number(getCssProperty(\"--ic-breakpoint-sm\").replace(\"px\", \"\")), // 576\n M: Number(getCssProperty(\"--ic-breakpoint-md\").replace(\"px\", \"\")), // 768\n L: Number(getCssProperty(\"--ic-breakpoint-lg\").replace(\"px\", \"\")), // 992\n XL: Number(getCssProperty(\"--ic-breakpoint-xl\").replace(\"px\", \"\")), // 1200\n UNDEFINED: 1200,\n};\n\nexport const hasValidationStatus = (\n status: IcInformationStatusOrEmpty,\n disabled: boolean\n): boolean => {\n return status !== \"\" && !disabled;\n};\n\nexport const isSlotUsed = (element: HTMLElement, slotName: string): boolean => {\n return !!element.querySelector(`[slot=\"${slotName}\"]`);\n};\n\n// added as a common method to allow detection of gatsby hydration issue, where (camelCase) props are initially undefined & then update\n// with a value. Allows a callback function to be executed when this is the case\nexport const onComponentPropUndefinedChange = (\n oldValue: string | undefined,\n newValue: string | undefined,\n callback: IcCallbackFunctionNoReturn\n): void => {\n if (oldValue === undefined && newValue !== oldValue) {\n callback();\n }\n};\n\nexport const onComponentRequiredPropUndefined = (\n props: IcPropObject[],\n component: string\n): void => {\n for (let i = 0; i < props.length; i++) {\n const { prop, propName } = props[i];\n if (prop === null || prop === undefined) {\n console.error(\n `No ${propName} specified for ${component} component - prop '${propName}' (web components) / '${kebabToCamelCase(\n propName\n )}' (react) required`\n );\n }\n }\n};\n\nexport const kebabToCamelCase = (kebabCase: string): string => {\n kebabCase = kebabCase.toLowerCase();\n const individualWords: string[] = kebabCase.split(\"-\");\n let camelCase = individualWords[0];\n for (let i = 1; i < individualWords.length; i++) {\n camelCase +=\n individualWords[i].substring(0, 1).toUpperCase() +\n individualWords[i].substring(1);\n }\n return camelCase;\n};\n\nexport const checkResizeObserver = (\n callbackFn: IcCallbackFunctionNoReturn\n): void => {\n if (\n typeof window !== \"undefined\" &&\n typeof window.ResizeObserver !== \"undefined\"\n ) {\n callbackFn();\n }\n};\n\nconst hex2dec = function (v: string) {\n return parseInt(v, 16);\n};\n\nexport const hexToRgb = (hex: string): IcColorRGB => {\n let c;\n if (hex.length === 4) {\n c = hex.replace(\"#\", \"\").split(\"\");\n return {\n r: hex2dec(c[0] + c[0]),\n g: hex2dec(c[1] + c[1]),\n b: hex2dec(c[2] + c[2]),\n };\n } else {\n return {\n r: hex2dec(hex.slice(1, 3)),\n g: hex2dec(hex.slice(3, 5)),\n b: hex2dec(hex.slice(5)),\n };\n }\n};\n\nexport const rgbStrToObj = (rgbStr: string): IcColorRGB => {\n const colorRGB: IcColorRGB = { r: null, g: null, b: null };\n const rgb = rgbStr\n .substring(4, rgbStr.length - 1)\n .replace(/ /g, \"\")\n .split(\",\");\n colorRGB.r = Number(rgb[0]);\n colorRGB.g = Number(rgb[1]);\n colorRGB.b = Number(rgb[2]);\n\n return colorRGB;\n};\n\nexport const elementOverflowsX = (element: HTMLElement): boolean => {\n return element.scrollWidth > element.clientWidth;\n};\n/**\n *\n * @param child - The child element\n * @returns string\n */\nexport const getParentElementType = (child: HTMLElement): string =>\n child.parentElement.tagName;\n\nexport const getParentElement = (child: HTMLElement): HTMLElement =>\n child.parentElement;\n\nexport const hasClassificationBanner = (): boolean => {\n if (document.querySelector(\"ic-classification-banner:not([inline='true'])\")) {\n return true;\n } else {\n return false;\n }\n};\n"]}