@ukic/web-components 2.1.0-beta.1 → 2.1.0-beta.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (502) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-alert.cjs.entry.js +2 -0
  3. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-back-to-top.cjs.entry.js +18 -8
  5. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-button_3.cjs.entry.js +29 -11
  10. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-checkbox.cjs.entry.js +2 -0
  14. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-chip.cjs.entry.js +66 -0
  16. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -0
  17. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +19 -18
  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.map +1 -1
  31. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  34. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  35. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-radio-option.cjs.entry.js +10 -1
  40. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-search-bar.cjs.entry.js +16 -2
  42. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-section-container.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-select.cjs.entry.js +2 -7
  45. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-side-navigation.cjs.entry.js +8 -4
  47. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-skeleton.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-step.cjs.entry.js +101 -13
  52. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-stepper.cjs.entry.js +161 -40
  54. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-tab-context.cjs.entry.js +6 -1
  58. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-theme.cjs.entry.js +2 -2
  64. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  67. package/dist/cjs/index-3ef30d9d.js +4 -0
  68. package/dist/cjs/loader.cjs.js +1 -1
  69. package/dist/collection/assets/dismiss-icon.svg +3 -0
  70. package/dist/collection/assets/warning-icon-outline.svg +3 -0
  71. package/dist/collection/collection-manifest.json +1 -0
  72. package/dist/collection/components/ic-alert/ic-alert.js +27 -8
  73. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  74. package/dist/collection/components/ic-back-to-top/ic-back-to-top.css +1 -1
  75. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js +17 -7
  76. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js.map +1 -1
  77. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +1 -1
  78. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +4 -4
  79. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  80. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +2 -2
  81. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  82. package/dist/collection/components/ic-button/ic-button.js +13 -13
  83. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  84. package/dist/collection/components/ic-card/ic-card.js +10 -10
  85. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  86. package/dist/collection/components/ic-checkbox/ic-checkbox.js +29 -10
  87. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  88. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +10 -10
  89. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  90. package/dist/collection/components/ic-chip/ic-chip.css +595 -0
  91. package/dist/collection/components/ic-chip/ic-chip.js +199 -0
  92. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -0
  93. package/dist/collection/components/ic-chip/ic-chip.test.a11y.js +11 -0
  94. package/dist/collection/components/ic-chip/ic-chip.test.a11y.js.map +1 -0
  95. package/dist/collection/components/ic-chip/ic-chip.types.js +2 -0
  96. package/dist/collection/components/ic-chip/ic-chip.types.js.map +1 -0
  97. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js +5 -5
  98. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js.map +1 -1
  99. package/dist/collection/components/ic-data-entity/ic-data-entity.js +2 -2
  100. package/dist/collection/components/ic-data-entity/ic-data-entity.js.map +1 -1
  101. package/dist/collection/components/ic-data-row/ic-data-row.css +12 -0
  102. package/dist/collection/components/ic-data-row/ic-data-row.js +3 -3
  103. package/dist/collection/components/ic-data-row/ic-data-row.js.map +1 -1
  104. package/dist/collection/components/ic-divider/ic-divider.js +1 -1
  105. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  106. package/dist/collection/components/ic-footer/ic-footer.js +19 -16
  107. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  108. package/dist/collection/components/ic-footer-link/ic-footer-link.css +7 -1
  109. package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
  110. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  111. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +3 -3
  112. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  113. package/dist/collection/components/ic-hero/ic-hero.js +10 -10
  114. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  115. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +0 -2
  116. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +8 -8
  117. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  118. package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
  119. package/dist/collection/components/ic-input-container/ic-input-container.js.map +1 -1
  120. package/dist/collection/components/ic-input-label/ic-input-label.js +8 -8
  121. package/dist/collection/components/ic-input-label/ic-input-label.js.map +1 -1
  122. package/dist/collection/components/ic-input-validation/ic-input-validation.js +5 -5
  123. package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
  124. package/dist/collection/components/ic-link/ic-link.js +7 -7
  125. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  126. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +38 -2
  127. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +45 -9
  128. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  129. package/dist/collection/components/ic-menu/ic-menu.css +1 -1
  130. package/dist/collection/components/ic-menu/ic-menu.js +35 -31
  131. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  132. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +5 -5
  133. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  134. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +4 -4
  135. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  136. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +10 -10
  137. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  138. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +3 -3
  139. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  140. package/dist/collection/components/ic-page-header/ic-page-header.css +1 -0
  141. package/dist/collection/components/ic-page-header/ic-page-header.js +8 -8
  142. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  143. package/dist/collection/components/ic-radio-group/ic-radio-group.js +10 -10
  144. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  145. package/dist/collection/components/ic-radio-option/ic-radio-option.js +34 -17
  146. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  147. package/dist/collection/components/ic-search-bar/ic-search-bar.js +51 -30
  148. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  149. package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
  150. package/dist/collection/components/ic-section-container/ic-section-container.js.map +1 -1
  151. package/dist/collection/components/ic-select/ic-select.css +1 -1
  152. package/dist/collection/components/ic-select/ic-select.js +19 -24
  153. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  154. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +5 -13
  155. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +24 -17
  156. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  157. package/dist/collection/components/ic-skeleton/ic-skeleton.css +1 -1
  158. package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
  159. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  160. package/dist/collection/components/ic-status-tag/ic-status-tag.js +1 -1
  161. package/dist/collection/components/ic-status-tag/ic-status-tag.js.map +1 -1
  162. package/dist/collection/components/ic-step/ic-step.css +120 -24
  163. package/dist/collection/components/ic-step/ic-step.js +269 -28
  164. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  165. package/dist/collection/components/ic-step/ic-step.types.js.map +1 -1
  166. package/dist/collection/components/ic-stepper/ic-stepper-test-examples.js +74 -0
  167. package/dist/collection/components/ic-stepper/ic-stepper-test-examples.js.map +1 -0
  168. package/dist/collection/components/ic-stepper/ic-stepper.css +15 -1
  169. package/dist/collection/components/ic-stepper/ic-stepper.js +206 -39
  170. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  171. package/dist/collection/components/ic-stepper/ic-stepper.test.a11y.js +13 -1
  172. package/dist/collection/components/ic-stepper/ic-stepper.test.a11y.js.map +1 -1
  173. package/dist/collection/components/ic-switch/ic-switch.css +1 -1
  174. package/dist/collection/components/ic-switch/ic-switch.js +7 -7
  175. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  176. package/dist/collection/components/ic-tab/ic-tab.js +9 -6
  177. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  178. package/dist/collection/components/ic-tab-context/ic-tab-context.js +31 -4
  179. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  180. package/dist/collection/components/ic-tab-group/ic-tab-group.js +4 -4
  181. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  182. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
  183. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  184. package/dist/collection/components/ic-text-field/ic-text-field.js +28 -28
  185. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  186. package/dist/collection/components/ic-theme/ic-theme.js +9 -6
  187. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  188. package/dist/collection/components/ic-tooltip/ic-tooltip.css +1 -1
  189. package/dist/collection/components/ic-tooltip/ic-tooltip.js +22 -1
  190. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  191. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +1 -1
  192. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +7 -7
  193. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  194. package/dist/collection/components/ic-typography/ic-typography.js +1 -1
  195. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  196. package/dist/collection/testspec.setup.js +8 -0
  197. package/dist/collection/testspec.setup.js.map +1 -1
  198. package/dist/components/ic-alert.js +3 -1
  199. package/dist/components/ic-alert.js.map +1 -1
  200. package/dist/components/ic-back-to-top.js +18 -8
  201. package/dist/components/ic-back-to-top.js.map +1 -1
  202. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  203. package/dist/components/ic-breadcrumb2.js +1 -1
  204. package/dist/components/ic-breadcrumb2.js.map +1 -1
  205. package/dist/components/ic-button2.js +3 -3
  206. package/dist/components/ic-button2.js.map +1 -1
  207. package/dist/components/ic-card.js +1 -1
  208. package/dist/components/ic-card.js.map +1 -1
  209. package/dist/components/ic-checkbox-group.js +1 -1
  210. package/dist/components/ic-checkbox-group.js.map +1 -1
  211. package/dist/components/ic-checkbox.js +2 -0
  212. package/dist/components/ic-checkbox.js.map +1 -1
  213. package/dist/components/ic-chip.d.ts +11 -0
  214. package/dist/components/ic-chip.js +99 -0
  215. package/dist/components/ic-chip.js.map +1 -0
  216. package/dist/components/ic-classification-banner.js.map +1 -1
  217. package/dist/components/ic-data-entity.js.map +1 -1
  218. package/dist/components/ic-data-row.js +1 -1
  219. package/dist/components/ic-data-row.js.map +1 -1
  220. package/dist/components/ic-divider2.js +1 -1
  221. package/dist/components/ic-divider2.js.map +1 -1
  222. package/dist/components/ic-footer-link-group.js +1 -1
  223. package/dist/components/ic-footer-link-group.js.map +1 -1
  224. package/dist/components/ic-footer-link.js +2 -2
  225. package/dist/components/ic-footer-link.js.map +1 -1
  226. package/dist/components/ic-footer.js +3 -3
  227. package/dist/components/ic-footer.js.map +1 -1
  228. package/dist/components/ic-hero.js +1 -1
  229. package/dist/components/ic-hero.js.map +1 -1
  230. package/dist/components/ic-input-component-container2.js +1 -1
  231. package/dist/components/ic-input-component-container2.js.map +1 -1
  232. package/dist/components/ic-input-container2.js.map +1 -1
  233. package/dist/components/ic-input-label2.js.map +1 -1
  234. package/dist/components/ic-input-validation2.js.map +1 -1
  235. package/dist/components/ic-link2.js +1 -1
  236. package/dist/components/ic-link2.js.map +1 -1
  237. package/dist/components/ic-loading-indicator2.js +24 -7
  238. package/dist/components/ic-loading-indicator2.js.map +1 -1
  239. package/dist/components/ic-menu2.js +18 -17
  240. package/dist/components/ic-menu2.js.map +1 -1
  241. package/dist/components/ic-navigation-button.js +1 -1
  242. package/dist/components/ic-navigation-button.js.map +1 -1
  243. package/dist/components/ic-navigation-group.js +1 -1
  244. package/dist/components/ic-navigation-group.js.map +1 -1
  245. package/dist/components/ic-navigation-item.js +3 -3
  246. package/dist/components/ic-navigation-item.js.map +1 -1
  247. package/dist/components/ic-navigation-menu2.js +1 -1
  248. package/dist/components/ic-navigation-menu2.js.map +1 -1
  249. package/dist/components/ic-page-header.js.map +1 -1
  250. package/dist/components/ic-radio-group.js +1 -1
  251. package/dist/components/ic-radio-group.js.map +1 -1
  252. package/dist/components/ic-radio-option.js +10 -1
  253. package/dist/components/ic-radio-option.js.map +1 -1
  254. package/dist/components/ic-search-bar.js +18 -3
  255. package/dist/components/ic-search-bar.js.map +1 -1
  256. package/dist/components/ic-section-container2.js.map +1 -1
  257. package/dist/components/ic-select.js +2 -7
  258. package/dist/components/ic-select.js.map +1 -1
  259. package/dist/components/ic-side-navigation.js +9 -5
  260. package/dist/components/ic-side-navigation.js.map +1 -1
  261. package/dist/components/ic-skeleton.js +1 -1
  262. package/dist/components/ic-skeleton.js.map +1 -1
  263. package/dist/components/ic-status-tag.js.map +1 -1
  264. package/dist/components/ic-step.js +117 -16
  265. package/dist/components/ic-step.js.map +1 -1
  266. package/dist/components/ic-stepper.js +169 -41
  267. package/dist/components/ic-stepper.js.map +1 -1
  268. package/dist/components/ic-switch.js +1 -1
  269. package/dist/components/ic-switch.js.map +1 -1
  270. package/dist/components/ic-tab-context.js +6 -1
  271. package/dist/components/ic-tab-context.js.map +1 -1
  272. package/dist/components/ic-tab-group.js.map +1 -1
  273. package/dist/components/ic-tab-panel.js.map +1 -1
  274. package/dist/components/ic-tab.js.map +1 -1
  275. package/dist/components/ic-text-field2.js +2 -2
  276. package/dist/components/ic-text-field2.js.map +1 -1
  277. package/dist/components/ic-theme.js +2 -2
  278. package/dist/components/ic-theme.js.map +1 -1
  279. package/dist/components/ic-tooltip2.js +7 -3
  280. package/dist/components/ic-tooltip2.js.map +1 -1
  281. package/dist/components/ic-top-navigation.js +1 -1
  282. package/dist/components/ic-top-navigation.js.map +1 -1
  283. package/dist/components/ic-typography2.js.map +1 -1
  284. package/dist/components/index.d.ts +2 -1
  285. package/dist/components/index.js +1 -0
  286. package/dist/components/index.js.map +1 -1
  287. package/dist/core/core.esm.js +1 -1
  288. package/dist/core/core.esm.js.map +1 -1
  289. package/dist/core/p-0118400b.entry.js.map +1 -1
  290. package/dist/core/p-07cd789d.entry.js.map +1 -1
  291. package/dist/core/p-0b125f26.entry.js.map +1 -1
  292. package/dist/core/p-0d77bd0c.entry.js +2 -0
  293. package/dist/core/p-0d77bd0c.entry.js.map +1 -0
  294. package/dist/core/p-10da19d2.entry.js.map +1 -1
  295. package/dist/core/p-272c7abd.entry.js.map +1 -1
  296. package/dist/core/p-2b5c9143.entry.js +2 -0
  297. package/dist/core/p-2b5c9143.entry.js.map +1 -0
  298. package/dist/core/p-2f114521.entry.js.map +1 -1
  299. package/dist/core/p-31a8595f.entry.js.map +1 -1
  300. package/dist/core/{p-7b39977f.entry.js → p-3a068a45.entry.js} +2 -2
  301. package/dist/core/p-3a068a45.entry.js.map +1 -0
  302. package/dist/core/{p-e590f1d2.entry.js → p-4c72f3a9.entry.js} +2 -2
  303. package/dist/core/{p-e590f1d2.entry.js.map → p-4c72f3a9.entry.js.map} +1 -1
  304. package/dist/core/{p-ae81dffa.entry.js → p-5831bb8e.entry.js} +2 -2
  305. package/dist/core/p-5831bb8e.entry.js.map +1 -0
  306. package/dist/core/p-5d76bbad.entry.js +2 -0
  307. package/dist/core/p-5d76bbad.entry.js.map +1 -0
  308. package/dist/core/p-5e261268.entry.js.map +1 -1
  309. package/dist/core/p-60ffb73e.entry.js.map +1 -1
  310. package/dist/core/p-6308f1f2.entry.js +2 -0
  311. package/dist/core/p-6308f1f2.entry.js.map +1 -0
  312. package/dist/core/{p-c6dd4f47.entry.js → p-66f3f02b.entry.js} +2 -2
  313. package/dist/core/p-66f3f02b.entry.js.map +1 -0
  314. package/dist/core/p-69650186.entry.js.map +1 -1
  315. package/dist/core/p-6b34d98f.entry.js.map +1 -1
  316. package/dist/core/p-6be5e06b.entry.js.map +1 -1
  317. package/dist/core/p-6d0eaaeb.entry.js.map +1 -1
  318. package/dist/core/p-6f6bd657.entry.js.map +1 -1
  319. package/dist/core/{p-1337db5e.entry.js → p-6fba90ee.entry.js} +2 -2
  320. package/dist/core/p-6fba90ee.entry.js.map +1 -0
  321. package/dist/core/{p-558552f8.entry.js → p-7881b94e.entry.js} +2 -2
  322. package/dist/core/p-7881b94e.entry.js.map +1 -0
  323. package/dist/core/{p-8ddeb574.entry.js → p-7f04e382.entry.js} +2 -2
  324. package/dist/core/{p-8ddeb574.entry.js.map → p-7f04e382.entry.js.map} +1 -1
  325. package/dist/core/p-7f632414.entry.js.map +1 -1
  326. package/dist/core/p-80cd0a2d.entry.js +2 -0
  327. package/dist/core/p-80cd0a2d.entry.js.map +1 -0
  328. package/dist/core/{p-df5caf13.entry.js → p-8144e941.entry.js} +2 -2
  329. package/dist/core/p-8144e941.entry.js.map +1 -0
  330. package/dist/core/p-9cd04875.entry.js.map +1 -1
  331. package/dist/core/p-9e684c58.entry.js +2 -0
  332. package/dist/core/p-9e684c58.entry.js.map +1 -0
  333. package/dist/core/{p-02799e26.entry.js → p-a2d3e955.entry.js} +2 -2
  334. package/dist/core/{p-02799e26.entry.js.map → p-a2d3e955.entry.js.map} +1 -1
  335. package/dist/core/{p-1721bcf3.entry.js → p-b24145f7.entry.js} +2 -2
  336. package/dist/core/p-b24145f7.entry.js.map +1 -0
  337. package/dist/core/p-b3dec76d.entry.js.map +1 -1
  338. package/dist/core/{p-347ec49e.entry.js → p-bf89bcd3.entry.js} +2 -2
  339. package/dist/core/p-bf89bcd3.entry.js.map +1 -0
  340. package/dist/core/p-c4d3c18c.entry.js.map +1 -1
  341. package/dist/core/p-c85689e3.entry.js +2 -0
  342. package/dist/core/p-c85689e3.entry.js.map +1 -0
  343. package/dist/core/p-c8ce6147.entry.js +2 -0
  344. package/dist/core/p-c8ce6147.entry.js.map +1 -0
  345. package/dist/core/p-cadb531f.entry.js.map +1 -1
  346. package/dist/core/p-cc83692e.entry.js.map +1 -1
  347. package/dist/core/p-dd3c3e3c.entry.js.map +1 -1
  348. package/dist/core/p-e93e9aa3.entry.js.map +1 -1
  349. package/dist/core/p-ecfb2e6b.entry.js.map +1 -1
  350. package/dist/core/p-fa7bc907.entry.js +2 -0
  351. package/dist/core/p-fa7bc907.entry.js.map +1 -0
  352. package/dist/core/p-fbde8a26.entry.js +2 -0
  353. package/dist/core/p-fbde8a26.entry.js.map +1 -0
  354. package/dist/esm/core.js +1 -1
  355. package/dist/esm/ic-alert.entry.js +2 -0
  356. package/dist/esm/ic-alert.entry.js.map +1 -1
  357. package/dist/esm/ic-back-to-top.entry.js +18 -8
  358. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  359. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  360. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  361. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  362. package/dist/esm/ic-button_3.entry.js +29 -11
  363. package/dist/esm/ic-button_3.entry.js.map +1 -1
  364. package/dist/esm/ic-card.entry.js.map +1 -1
  365. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  366. package/dist/esm/ic-checkbox.entry.js +2 -0
  367. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  368. package/dist/esm/ic-chip.entry.js +62 -0
  369. package/dist/esm/ic-chip.entry.js.map +1 -0
  370. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  371. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  372. package/dist/esm/ic-data-row.entry.js +1 -1
  373. package/dist/esm/ic-data-row.entry.js.map +1 -1
  374. package/dist/esm/ic-divider.entry.js.map +1 -1
  375. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  376. package/dist/esm/ic-footer-link.entry.js +1 -1
  377. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  378. package/dist/esm/ic-footer.entry.js +2 -2
  379. package/dist/esm/ic-footer.entry.js.map +1 -1
  380. package/dist/esm/ic-hero.entry.js.map +1 -1
  381. package/dist/esm/ic-input-component-container_3.entry.js +19 -18
  382. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  383. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  384. package/dist/esm/ic-link.entry.js.map +1 -1
  385. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  386. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  387. package/dist/esm/ic-navigation-item.entry.js +2 -2
  388. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  389. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  390. package/dist/esm/ic-page-header.entry.js.map +1 -1
  391. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  392. package/dist/esm/ic-radio-option.entry.js +10 -1
  393. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  394. package/dist/esm/ic-search-bar.entry.js +16 -2
  395. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  396. package/dist/esm/ic-section-container.entry.js.map +1 -1
  397. package/dist/esm/ic-select.entry.js +2 -7
  398. package/dist/esm/ic-select.entry.js.map +1 -1
  399. package/dist/esm/ic-side-navigation.entry.js +8 -4
  400. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  401. package/dist/esm/ic-skeleton.entry.js +1 -1
  402. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  403. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  404. package/dist/esm/ic-step.entry.js +101 -13
  405. package/dist/esm/ic-step.entry.js.map +1 -1
  406. package/dist/esm/ic-stepper.entry.js +161 -40
  407. package/dist/esm/ic-stepper.entry.js.map +1 -1
  408. package/dist/esm/ic-switch.entry.js +1 -1
  409. package/dist/esm/ic-switch.entry.js.map +1 -1
  410. package/dist/esm/ic-tab-context.entry.js +6 -1
  411. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  412. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  413. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  414. package/dist/esm/ic-tab.entry.js.map +1 -1
  415. package/dist/esm/ic-text-field.entry.js.map +1 -1
  416. package/dist/esm/ic-theme.entry.js +2 -2
  417. package/dist/esm/ic-theme.entry.js.map +1 -1
  418. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  419. package/dist/esm/ic-typography.entry.js.map +1 -1
  420. package/dist/esm/index-1500de1f.js +4 -0
  421. package/dist/esm/loader.js +1 -1
  422. package/dist/types/components/ic-alert/ic-alert.d.ts +12 -8
  423. package/dist/types/components/ic-back-to-top/ic-back-to-top.d.ts +1 -0
  424. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.d.ts +5 -5
  425. package/dist/types/components/ic-breadcrumb-group/ic-breadcrumb-group.d.ts +2 -2
  426. package/dist/types/components/ic-button/ic-button.d.ts +10 -10
  427. package/dist/types/components/ic-card/ic-card.d.ts +8 -8
  428. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +14 -10
  429. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +9 -9
  430. package/dist/types/components/ic-chip/ic-chip.d.ts +40 -0
  431. package/dist/types/components/ic-chip/ic-chip.test.a11y.d.ts +1 -0
  432. package/dist/types/components/ic-chip/ic-chip.types.d.ts +2 -0
  433. package/dist/types/components/ic-classification-banner/ic-classification-banner.d.ts +5 -5
  434. package/dist/types/components/ic-data-entity/ic-data-entity.d.ts +2 -2
  435. package/dist/types/components/ic-data-row/ic-data-row.d.ts +3 -3
  436. package/dist/types/components/ic-footer/ic-footer.d.ts +12 -12
  437. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +1 -1
  438. package/dist/types/components/ic-hero/ic-hero.d.ts +9 -9
  439. package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +8 -8
  440. package/dist/types/components/ic-input-container/ic-input-container.d.ts +2 -2
  441. package/dist/types/components/ic-input-label/ic-input-label.d.ts +8 -8
  442. package/dist/types/components/ic-input-validation/ic-input-validation.d.ts +5 -5
  443. package/dist/types/components/ic-link/ic-link.d.ts +6 -6
  444. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +8 -3
  445. package/dist/types/components/ic-menu/ic-menu.d.ts +14 -14
  446. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +5 -5
  447. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +2 -2
  448. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +7 -7
  449. package/dist/types/components/ic-navigation-menu/ic-navigation-menu.d.ts +2 -2
  450. package/dist/types/components/ic-page-header/ic-page-header.d.ts +10 -8
  451. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +10 -10
  452. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +13 -11
  453. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +28 -25
  454. package/dist/types/components/ic-section-container/ic-section-container.d.ts +2 -2
  455. package/dist/types/components/ic-select/ic-select.d.ts +18 -18
  456. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +12 -12
  457. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +2 -2
  458. package/dist/types/components/ic-status-tag/ic-status-tag.d.ts +1 -1
  459. package/dist/types/components/ic-step/ic-step.d.ts +37 -8
  460. package/dist/types/components/ic-step/ic-step.types.d.ts +2 -0
  461. package/dist/types/components/ic-stepper/ic-stepper-test-examples.d.ts +4 -0
  462. package/dist/types/components/ic-stepper/ic-stepper.d.ts +23 -6
  463. package/dist/types/components/ic-switch/ic-switch.d.ts +7 -7
  464. package/dist/types/components/ic-tab/ic-tab.d.ts +5 -5
  465. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +8 -4
  466. package/dist/types/components/ic-tab-group/ic-tab-group.d.ts +4 -4
  467. package/dist/types/components/ic-tab-panel/ic-tab-panel.d.ts +2 -2
  468. package/dist/types/components/ic-text-field/ic-text-field.d.ts +30 -30
  469. package/dist/types/components/ic-theme/ic-theme.d.ts +3 -3
  470. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +4 -0
  471. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +6 -6
  472. package/dist/types/components/ic-typography/ic-typography.d.ts +1 -1
  473. package/dist/types/components.d.ts +625 -535
  474. package/dist/types/testspec.setup.d.ts +1 -0
  475. package/hydrate/index.js +574 -212
  476. package/package.json +3 -3
  477. package/dist/core/p-1337db5e.entry.js.map +0 -1
  478. package/dist/core/p-1721bcf3.entry.js.map +0 -1
  479. package/dist/core/p-33a45ace.entry.js +0 -2
  480. package/dist/core/p-33a45ace.entry.js.map +0 -1
  481. package/dist/core/p-347ec49e.entry.js.map +0 -1
  482. package/dist/core/p-39ae284e.entry.js +0 -2
  483. package/dist/core/p-39ae284e.entry.js.map +0 -1
  484. package/dist/core/p-558552f8.entry.js.map +0 -1
  485. package/dist/core/p-7093d214.entry.js +0 -2
  486. package/dist/core/p-7093d214.entry.js.map +0 -1
  487. package/dist/core/p-7577c6a3.entry.js +0 -2
  488. package/dist/core/p-7577c6a3.entry.js.map +0 -1
  489. package/dist/core/p-7b11e1dc.entry.js +0 -2
  490. package/dist/core/p-7b11e1dc.entry.js.map +0 -1
  491. package/dist/core/p-7b39977f.entry.js.map +0 -1
  492. package/dist/core/p-898607d0.entry.js +0 -2
  493. package/dist/core/p-898607d0.entry.js.map +0 -1
  494. package/dist/core/p-ac43322e.entry.js +0 -2
  495. package/dist/core/p-ac43322e.entry.js.map +0 -1
  496. package/dist/core/p-ae81dffa.entry.js.map +0 -1
  497. package/dist/core/p-b5a988c0.entry.js +0 -2
  498. package/dist/core/p-b5a988c0.entry.js.map +0 -1
  499. package/dist/core/p-c6dd4f47.entry.js.map +0 -1
  500. package/dist/core/p-df5caf13.entry.js.map +0 -1
  501. package/dist/core/p-e106305b.entry.js +0 -2
  502. package/dist/core/p-e106305b.entry.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/ic-navigation-button/ic-navigation-button.css?tag=ic-navigation-button&encapsulation=shadow","src/components/ic-navigation-button/ic-navigation-button.tsx"],"names":["icNavigationButtonCss","NavigationButton","this","inheritedAttributes","getThemeForegroundColor","[object Object]","mode","ev","theme","detail","initialAppearance","buttonEl","setFocus","inheritAttributes","el","IC_INHERITED_ARIA","onComponentRequiredPropUndefined","prop","label","propName","href","target","rel","download","referrerpolicy","className","variant","appearance","size","fullWidth","IcThemeForegroundEnum","Default","buttonProps","h","Host","class","Object","assign","aria-label","ref","slot","name"],"mappings":"iJAAA,MAAMA,EAAwB,k9ECiCjBC,EAAgB,+BAwCnBC,KAAAC,oBAAgD,mGAlBlB,sEAaJ,gCAELC,IAM7BC,wBACEH,KAAKI,KAAO,OAIdD,yBACEH,KAAKI,KAAO,SAIdD,mBAAmBE,GACjB,MAAMC,EAAiBD,EAAGE,OAC1BP,KAAKQ,kBAAoBF,EAAMF,KAOjCD,iBACE,GAAIH,KAAKS,SAAU,CACjBT,KAAKS,SAASC,YAIlBP,oBACEH,KAAKC,oBAAsBU,EAAkBX,KAAKY,GAAI,IACjDC,EACH,UAIJV,mBACEW,EACE,CAAC,CAAEC,KAAMf,KAAKgB,MAAOC,SAAU,UAC/B,qBAIJd,SACE,MAAMe,KAAEA,EAAIC,OAAEA,EAAMC,IAAEA,EAAGC,SAAEA,EAAQC,eAAEA,GAAmBtB,KAExD,IAAIgB,EAAQ,GACZ,IAAIO,EAAY,GAChB,IAAIC,EAA+B,OACnC,IAAIC,EACFzB,KAAKQ,kBACP,IAAIkB,EAA4B,QAChC,IAAIC,EAAY,MAEhB,GAAI3B,KAAKI,OAAS,OAAQ,CACxBY,EAAQhB,KAAKgB,MACbQ,EAAU,WACVC,EAAaG,EAAsBC,QACnCH,EAAO,UACPC,EAAY,KACZJ,EAAY,qBAGd,MAAMO,EAAc,CAClBN,QAAAA,EACAC,WAAAA,EACAC,KAAAA,EACAR,KAAAA,EACAC,OAAAA,EACAC,IAAAA,EACAC,SAAAA,EACAC,eAAAA,EACAK,UAAAA,GAGF,OACEI,EAACC,EAAI,CAACC,MAAO,CAAE9B,CAAC,gBAAiBH,KAAKI,OAAS,SAC7C2B,EAAA,YAAAG,OAAAC,OAAA,CACEF,MAAOV,EAASa,aACJpC,KAAKgB,MACjBqB,IAAMzB,GAAQZ,KAAKS,SAAWG,GAC1BkB,EACA9B,KAAKC,qBAERe,EACDe,EAAA,OAAA,CAAMO,KAAK,OAAOC,KAAK","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: block;\n margin-right: var(--ic-space-xs);\n list-style: none;\n}\n\n:host(.in-side-menu) {\n margin-right: 0;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n State,\n h,\n Listen,\n Method,\n} from \"@stencil/core\";\n\nimport {\n getThemeForegroundColor,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcNavButtonModes } from \"./ic-navigation-button.types\";\n\n/**\n * @slot icon - Content will be placed to the left of the button label.\n */\n\n@Component({\n tag: \"ic-navigation-button\",\n styleUrl: \"ic-navigation-button.css\",\n shadow: true,\n})\nexport class NavigationButton {\n @Element() el: HTMLIcNavigationButtonElement;\n\n /**\n * label info to display\n */\n @Prop() label!: string;\n /**\n * The URL that the link points to. This will render the button as an \"a\" tag.\n */\n @Prop() href?: string;\n /**\n * 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 * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n /**\n * Prompts the user to save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n /**\n * Hints at the human language of the linked URL.\n */\n @Prop() hreflang?: string;\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * display mode\n */\n @State() mode: IcNavButtonModes = \"navbar\";\n\n @State() initialAppearance = getThemeForegroundColor();\n\n private buttonEl: HTMLIcButtonElement;\n private inheritedAttributes: { [k: string]: unknown } = {};\n\n @Listen(\"icNavigationMenuOpened\", { target: \"document\" })\n navBarMenuOpenHandler(): void {\n this.mode = \"menu\";\n }\n\n @Listen(\"icNavigationMenuClosed\", { target: \"document\" })\n navBarMenuCloseHandler(): void {\n this.mode = \"navbar\";\n }\n\n @Listen(\"icThemeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.initialAppearance = theme.mode;\n }\n\n /**\n * Sets focus on the native `button`\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.buttonEl) {\n this.buttonEl.setFocus();\n }\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"title\",\n ]);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Navigation Button\"\n );\n }\n\n render() {\n const { href, target, rel, download, referrerpolicy } = this;\n\n let label = \"\";\n let className = \"\";\n let variant: \"icon\" | \"tertiary\" = \"icon\";\n let appearance: IcThemeForeground | IcThemeForegroundEnum.Default =\n this.initialAppearance;\n let size: \"default\" | \"large\" = \"large\";\n let fullWidth = false;\n\n if (this.mode === \"menu\") {\n label = this.label;\n variant = \"tertiary\";\n appearance = IcThemeForegroundEnum.Default;\n size = \"default\";\n fullWidth = true;\n className = \"popout-menu-button\";\n }\n\n const buttonProps = {\n variant,\n appearance,\n size,\n href,\n target,\n rel,\n download,\n referrerpolicy,\n fullWidth,\n };\n\n return (\n <Host class={{ [\"in-side-menu\"]: this.mode === \"menu\" }}>\n <ic-button\n class={className}\n aria-label={this.label}\n ref={(el) => (this.buttonEl = el)}\n {...buttonProps}\n {...this.inheritedAttributes}\n >\n {label}\n <slot slot=\"icon\" name=\"icon\"></slot>\n </ic-button>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/ic-navigation-button/ic-navigation-button.css?tag=ic-navigation-button&encapsulation=shadow","src/components/ic-navigation-button/ic-navigation-button.tsx"],"names":["icNavigationButtonCss","NavigationButton","this","inheritedAttributes","getThemeForegroundColor","[object Object]","mode","ev","theme","detail","initialAppearance","buttonEl","setFocus","inheritAttributes","el","IC_INHERITED_ARIA","onComponentRequiredPropUndefined","prop","label","propName","href","target","rel","download","referrerpolicy","className","variant","appearance","size","fullWidth","IcThemeForegroundEnum","Default","buttonProps","h","Host","class","Object","assign","aria-label","ref","slot","name"],"mappings":"iJAAA,MAAMA,EAAwB,k9ECiCjBC,EAAgB,+BAwCnBC,KAAAC,oBAAgD,mGAlBlB,sEAaJ,gCAELC,IAM7BC,wBACEH,KAAKI,KAAO,OAIdD,yBACEH,KAAKI,KAAO,SAIdD,mBAAmBE,GACjB,MAAMC,EAAiBD,EAAGE,OAC1BP,KAAKQ,kBAAoBF,EAAMF,KAOjCD,iBACE,GAAIH,KAAKS,SAAU,CACjBT,KAAKS,SAASC,YAIlBP,oBACEH,KAAKC,oBAAsBU,EAAkBX,KAAKY,GAAI,IACjDC,EACH,UAIJV,mBACEW,EACE,CAAC,CAAEC,KAAMf,KAAKgB,MAAOC,SAAU,UAC/B,qBAIJd,SACE,MAAMe,KAAEA,EAAIC,OAAEA,EAAMC,IAAEA,EAAGC,SAAEA,EAAQC,eAAEA,GAAmBtB,KAExD,IAAIgB,EAAQ,GACZ,IAAIO,EAAY,GAChB,IAAIC,EAA+B,OACnC,IAAIC,EACFzB,KAAKQ,kBACP,IAAIkB,EAA4B,QAChC,IAAIC,EAAY,MAEhB,GAAI3B,KAAKI,OAAS,OAAQ,CACxBY,EAAQhB,KAAKgB,MACbQ,EAAU,WACVC,EAAaG,EAAsBC,QACnCH,EAAO,UACPC,EAAY,KACZJ,EAAY,qBAGd,MAAMO,EAAc,CAClBN,QAAAA,EACAC,WAAAA,EACAC,KAAAA,EACAR,KAAAA,EACAC,OAAAA,EACAC,IAAAA,EACAC,SAAAA,EACAC,eAAAA,EACAK,UAAAA,GAGF,OACEI,EAACC,EAAI,CAACC,MAAO,CAAE9B,CAAC,gBAAiBH,KAAKI,OAAS,SAC7C2B,EAAA,YAAAG,OAAAC,OAAA,CACEF,MAAOV,EAASa,aACJpC,KAAKgB,MACjBqB,IAAMzB,GAAQZ,KAAKS,SAAWG,GAC1BkB,EACA9B,KAAKC,qBAERe,EACDe,EAAA,OAAA,CAAMO,KAAK,OAAOC,KAAK","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: block;\n margin-right: var(--ic-space-xs);\n list-style: none;\n}\n\n:host(.in-side-menu) {\n margin-right: 0;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n State,\n h,\n Listen,\n Method,\n} from \"@stencil/core\";\n\nimport {\n getThemeForegroundColor,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcTheme,\n IcThemeForeground,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\nimport { IcNavButtonModes } from \"./ic-navigation-button.types\";\n\n/**\n * @slot icon - Content will be placed to the left of the button label.\n */\n\n@Component({\n tag: \"ic-navigation-button\",\n styleUrl: \"ic-navigation-button.css\",\n shadow: true,\n})\nexport class NavigationButton {\n @Element() el: HTMLIcNavigationButtonElement;\n\n /**\n * The label info to display.\n */\n @Prop() label!: string;\n /**\n * The URL that the link points to. This will render the button as an \"a\" tag.\n */\n @Prop() href?: string;\n /**\n * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n /**\n * The relationship of the linked URL as space-separated link types.\n */\n @Prop() rel?: string;\n /**\n * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n /**\n * The human language of the linked URL.\n */\n @Prop() hreflang?: string;\n /**\n * How much of the referrer to send when following the link.\n */\n @Prop() referrerpolicy?: ReferrerPolicy;\n\n /**\n * The display mode.\n */\n @State() mode: IcNavButtonModes = \"navbar\";\n\n @State() initialAppearance = getThemeForegroundColor();\n\n private buttonEl: HTMLIcButtonElement;\n private inheritedAttributes: { [k: string]: unknown } = {};\n\n @Listen(\"icNavigationMenuOpened\", { target: \"document\" })\n navBarMenuOpenHandler(): void {\n this.mode = \"menu\";\n }\n\n @Listen(\"icNavigationMenuClosed\", { target: \"document\" })\n navBarMenuCloseHandler(): void {\n this.mode = \"navbar\";\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.initialAppearance = theme.mode;\n }\n\n /**\n * Sets focus on the native `button`\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.buttonEl) {\n this.buttonEl.setFocus();\n }\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, [\n ...IC_INHERITED_ARIA,\n \"title\",\n ]);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Navigation Button\"\n );\n }\n\n render() {\n const { href, target, rel, download, referrerpolicy } = this;\n\n let label = \"\";\n let className = \"\";\n let variant: \"icon\" | \"tertiary\" = \"icon\";\n let appearance: IcThemeForeground | IcThemeForegroundEnum.Default =\n this.initialAppearance;\n let size: \"default\" | \"large\" = \"large\";\n let fullWidth = false;\n\n if (this.mode === \"menu\") {\n label = this.label;\n variant = \"tertiary\";\n appearance = IcThemeForegroundEnum.Default;\n size = \"default\";\n fullWidth = true;\n className = \"popout-menu-button\";\n }\n\n const buttonProps = {\n variant,\n appearance,\n size,\n href,\n target,\n rel,\n download,\n referrerpolicy,\n fullWidth,\n };\n\n return (\n <Host class={{ [\"in-side-menu\"]: this.mode === \"menu\" }}>\n <ic-button\n class={className}\n aria-label={this.label}\n ref={(el) => (this.buttonEl = el)}\n {...buttonProps}\n {...this.inheritedAttributes}\n >\n {label}\n <slot slot=\"icon\" name=\"icon\"></slot>\n </ic-button>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{r as e,h as t,H as i,g as o}from"./p-f9370be6.js";import{D as a,g as n,s,c as l}from"./p-23831891.js";import"./p-6f57b13c.js";const r='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{position:relative;display:block}.data{display:flex;align-items:center}.text-cells{display:flex;flex-grow:1;min-width:0}.label{width:200px;min-width:200px;margin-right:var(--ic-space-md);color:var(--ic-color-tertiary-text)}.value{flex-grow:1}slot[name="value"]::slotted(ic-text-field[readonly][hide-label]){margin-top:calc(var(--ic-space-xs) * -1)}slot[name="value"]::slotted(ic-text-field[small][readonly][hide-label]){margin-top:calc(var(--ic-space-xxs) * -1)}slot[name="value"]::slotted(ic-text-field[readonly][hide-label][rows]){margin-top:calc(var(--ic-space-xxs) * -1 - var(--ic-space-xxxs))}.end-component{width:-moz-fit-content;width:fit-content;margin-left:56px}.divider{margin-top:var(--ic-space-md);height:1px;background-color:var(--ic-architectural-300)}:host(.small) .divider{margin-top:var(--ic-space-xs)}:host(.breakpoint-medium) .label{width:160px;min-width:160px}:host(.breakpoint-xs) .text-cells{flex-direction:column}:host(.breakpoint-xs) .label{width:128px;margin-bottom:var(--ic-space-xs)}:host(.breakpoint-xs) .value{max-width:95%}:host(.breakpoint-xs) .end-component{margin-left:0}@media (forced-colors: active){.divider{background-color:canvastext}}';const d=class{constructor(t){e(this,t);this.resizeObserver=null;this.hasEndComponent=false;this.runResizeObserver=()=>{this.resizeObserver=new ResizeObserver((()=>{this.checkLabelAbove()}));this.resizeObserver.observe(this.el)};this.label=undefined;this.value=undefined;this.small=false;this.deviceSize=a.XL;this.entitySize=undefined}checkLabelAbove(){var e;const t=(e=this.el.shadowRoot.querySelector(".data"))===null||e===void 0?void 0:e.clientWidth;if(t+46<a.S){this.entitySize="xs"}else if(t+46<a.M){this.entitySize="m"}else{this.entitySize="xl"}}labelEndComponent(){const e=this.el.shadowRoot.querySelectorAll("slot[name=end-component]");e.forEach((e=>e.setAttribute("aria-label","for "+this.label+" row")))}componentWillLoad(){this.deviceSize=n();this.hasEndComponent=s(this.el,"end-component")}componentDidLoad(){l(this.runResizeObserver);this.checkLabelAbove();if(this.hasEndComponent){this.labelEndComponent()}}disconnectedCallback(){if(this.resizeObserver!==null){this.resizeObserver.disconnect()}}render(){const{label:e,value:o,small:a}=this;return t(i,{class:{["small"]:a,["breakpoint-medium"]:this.entitySize==="m",["breakpoint-xs"]:this.entitySize==="xs"},role:"listitem"},t("div",{class:"data"},t("div",{class:"text-cells"},t("div",{class:"label"},t("slot",{name:"label"},t("ic-typography",{variant:this.entitySize==="xs"?"label":"subtitle-large"},e))),t("div",{class:"value"},t("slot",{name:"value"},t("ic-typography",{variant:"body"},o)))),this.hasEndComponent&&t("div",{class:"end-component"},t("div",{role:"cell"},t("slot",{name:"end-component"})))),t("div",{class:"divider"}))}get el(){return o(this)}};d.style=r;export{d as ic_data_row};
2
+ //# sourceMappingURL=p-c85689e3.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/ic-data-row/ic-data-row.css?tag=ic-data-row&encapsulation=shadow","src/components/ic-data-row/ic-data-row.tsx"],"names":["icDataRowCss","DataRow","this","resizeObserver","hasEndComponent","runResizeObserver","ResizeObserver","checkLabelAbove","observe","el","DEVICE_SIZES","XL","[object Object]","rowSize","_a","shadowRoot","querySelector","clientWidth","S","entitySize","M","component","querySelectorAll","forEach","child","setAttribute","label","deviceSize","getCurrentDeviceSize","slotHasContent","checkResizeObserver","labelEndComponent","disconnect","value","small","h","Host","class","role","name","variant"],"mappings":"qIAAA,MAAMA,EAAe,ogHCkBRC,EAAO,+BAsBVC,KAAAC,eAAiC,KAEjCD,KAAAE,gBAA2B,MAE3BF,KAAAG,kBAAoB,KAC1BH,KAAKC,eAAiB,IAAIG,gBAAe,KACvCJ,KAAKK,qBAGPL,KAAKC,eAAeK,QAAQN,KAAKO,0DAfV,sBAEKC,EAAaC,6BAgBnCC,wBACN,MAAMC,GAAUC,EAAAZ,KAAKO,GAAGM,WAAWC,cAAc,YAAQ,MAAAF,SAAA,OAAA,EAAAA,EAAEG,YAC3D,GAAIJ,EAAU,GAAKH,EAAaQ,EAAG,CACjChB,KAAKiB,WAAa,UACb,GAAIN,EAAU,GAAKH,EAAaU,EAAG,CACxClB,KAAKiB,WAAa,QACb,CACLjB,KAAKiB,WAAa,MAIdP,oBACN,MAAMS,EAAYnB,KAAKO,GAAGM,WAAWO,iBACnC,4BAGFD,EAAUE,SAASC,GACjBA,EAAMC,aAAa,aAAc,OAASvB,KAAKwB,MAAQ,UAI3Dd,oBACEV,KAAKyB,WAAaC,IAClB1B,KAAKE,gBAAkByB,EAAe3B,KAAKO,GAAI,iBAGjDG,mBACEkB,EAAoB5B,KAAKG,mBACzBH,KAAKK,kBACL,GAAIL,KAAKE,gBAAiB,CACxBF,KAAK6B,qBAITnB,uBACE,GAAIV,KAAKC,iBAAmB,KAAM,CAChCD,KAAKC,eAAe6B,cAIxBpB,SACE,MAAMc,MAAEA,EAAKO,MAAEA,EAAKC,MAAEA,GAAUhC,KAEhC,OACEiC,EAACC,EAAI,CACHC,MAAO,CACLzB,CAAC,SAAUsB,EACXtB,CAAC,qBAAsBV,KAAKiB,aAAe,IAC3CP,CAAC,iBAAkBV,KAAKiB,aAAe,MAEzCmB,KAAK,YAELH,EAAA,MAAA,CAAKE,MAAM,QACTF,EAAA,MAAA,CAAKE,MAAM,cACTF,EAAA,MAAA,CAAKE,MAAM,SACTF,EAAA,OAAA,CAAMI,KAAK,SACTJ,EAAA,gBAAA,CACEK,QACEtC,KAAKiB,aAAe,KAAO,QAAU,kBAGtCO,KAIPS,EAAA,MAAA,CAAKE,MAAM,SACTF,EAAA,OAAA,CAAMI,KAAK,SACTJ,EAAA,gBAAA,CAAeK,QAAQ,QAAQP,MAIpC/B,KAAKE,iBACJ+B,EAAA,MAAA,CAAKE,MAAM,iBACTF,EAAA,MAAA,CAAKG,KAAK,QACRH,EAAA,OAAA,CAAMI,KAAK,qBAKnBJ,EAAA,MAAA,CAAKE,MAAM","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n position: relative;\n display: block;\n}\n\n.data {\n display: flex;\n align-items: center;\n}\n\n.text-cells {\n display: flex;\n flex-grow: 1;\n min-width: 0;\n}\n\n.label {\n width: 200px;\n min-width: 200px;\n margin-right: var(--ic-space-md);\n color: var(--ic-color-tertiary-text);\n}\n\n.value {\n flex-grow: 1;\n}\n\nslot[name=\"value\"]::slotted(ic-text-field[readonly][hide-label]) {\n margin-top: calc(var(--ic-space-xs) * -1);\n}\n\nslot[name=\"value\"]::slotted(ic-text-field[small][readonly][hide-label]) {\n margin-top: calc(var(--ic-space-xxs) * -1);\n}\n\nslot[name=\"value\"]::slotted(ic-text-field[readonly][hide-label][rows]) {\n margin-top: calc(var(--ic-space-xxs) * -1 - var(--ic-space-xxxs));\n}\n\n.end-component {\n width: fit-content;\n margin-left: 56px;\n}\n\n.divider {\n margin-top: var(--ic-space-md);\n height: 1px;\n background-color: var(--ic-architectural-300);\n}\n\n:host(.small) .divider {\n margin-top: var(--ic-space-xs);\n}\n\n:host(.breakpoint-medium) .label {\n width: 160px;\n min-width: 160px;\n}\n\n:host(.breakpoint-xs) .text-cells {\n flex-direction: column;\n}\n\n:host(.breakpoint-xs) .label {\n width: 128px;\n margin-bottom: var(--ic-space-xs);\n}\n\n:host(.breakpoint-xs) .value {\n max-width: 95%;\n}\n\n:host(.breakpoint-xs) .end-component {\n margin-left: 0;\n}\n\n@media (forced-colors: active) {\n .divider {\n background-color: canvastext;\n }\n}\n","import { Component, Element, Host, Prop, h, State } from \"@stencil/core\";\nimport {\n checkResizeObserver,\n DEVICE_SIZES,\n getCurrentDeviceSize,\n slotHasContent,\n} from \"../../utils/helpers\";\n\n/**\n * @slot label - Content will be rendered in the leftmost cell.\n * @slot value - Content will be rendered to the right of the label.\n * @slot end-component - Content will be displayed in the rightmost cell.\n */\n@Component({\n tag: \"ic-data-row\",\n styleUrl: \"ic-data-row.css\",\n shadow: true,\n})\nexport class DataRow {\n @Element() el: HTMLIcDataRowElement;\n\n /**\n * The label in the leftmost cell of the row.\n */\n @Prop() label: string;\n\n /**\n * The value of the middle (right if no end-component supplied) cell of the row.\n */\n @Prop() value: string;\n\n /**\n * If `true`, the small styling will be applied to the row. This is automatically applied if small is set on the parent data heading.\n */\n @Prop() small: boolean = false;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n @State() entitySize: \"xl\" | \"m\" | \"xs\";\n\n private resizeObserver: ResizeObserver = null;\n\n private hasEndComponent: boolean = false;\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkLabelAbove();\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n private checkLabelAbove() {\n const rowSize = this.el.shadowRoot.querySelector(\".data\")?.clientWidth;\n if (rowSize + 46 < DEVICE_SIZES.S) {\n this.entitySize = \"xs\";\n } else if (rowSize + 46 < DEVICE_SIZES.M) {\n this.entitySize = \"m\";\n } else {\n this.entitySize = \"xl\";\n }\n }\n\n private labelEndComponent(): void {\n const component = this.el.shadowRoot.querySelectorAll(\n \"slot[name=end-component]\"\n );\n\n component.forEach((child: HTMLElement) =>\n child.setAttribute(\"aria-label\", \"for \" + this.label + \" row\")\n );\n }\n\n componentWillLoad(): void {\n this.deviceSize = getCurrentDeviceSize();\n this.hasEndComponent = slotHasContent(this.el, \"end-component\");\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n this.checkLabelAbove();\n if (this.hasEndComponent) {\n this.labelEndComponent();\n }\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n\n render() {\n const { label, value, small } = this;\n\n return (\n <Host\n class={{\n [\"small\"]: small,\n [\"breakpoint-medium\"]: this.entitySize === \"m\",\n [\"breakpoint-xs\"]: this.entitySize === \"xs\",\n }}\n role=\"listitem\"\n >\n <div class=\"data\">\n <div class=\"text-cells\">\n <div class=\"label\">\n <slot name=\"label\">\n <ic-typography\n variant={\n this.entitySize === \"xs\" ? \"label\" : \"subtitle-large\"\n }\n >\n {label}\n </ic-typography>\n </slot>\n </div>\n <div class=\"value\">\n <slot name=\"value\">\n <ic-typography variant=\"body\">{value}</ic-typography>\n </slot>\n </div>\n </div>\n {this.hasEndComponent && (\n <div class=\"end-component\">\n <div role=\"cell\">\n <slot name=\"end-component\"></slot>\n </div>\n </div>\n )}\n </div>\n <div class=\"divider\" />\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as o,h as r,H as i}from"./p-f9370be6.js";import{B as s,C as e,W as h,E as c,F as a,k as n}from"./p-23831891.js";import"./p-6f57b13c.js";const l=class{constructor(r){t(this,r);this.themeChange=o(this,"themeChange",7);this.checkThemeColorContrast=()=>{if(s()<e&&s()>h){console.warn(`The theme colour does not provide enough contrast with either of the ICDS black or white foreground colours. Consider choosing a colour with a different brightness to achieve sufficient colour contrast for good visibility. See https://www.w3.org/TR/AERT/#color-contrast for more information about colour contrast.`)}};this.setThemeColor=()=>{if(this.color!==null){let t=null;const o=this.color.slice(0,1);if(o==="#"){t=c(this.color)}else if(o.toLowerCase()==="r"){t=a(this.color)}this.setThemeRGBA(t)}};this.setThemeRGBA=t=>{if(t!==null){const o=document.documentElement;o.style.setProperty("--ic-theme-primary-r",t.r.toString());o.style.setProperty("--ic-theme-primary-g",t.g.toString());o.style.setProperty("--ic-theme-primary-b",t.b.toString());o.style.setProperty("--ic-theme-primary-a",t.a.toString());this.checkThemeColorContrast();const r=n();this.themeChange.emit({mode:r,color:t})}};this.color=null}watchColorPropHandler(){this.setThemeColor()}componentWillLoad(){this.setThemeColor()}render(){return r(i,null)}static get watchers(){return{color:["watchColorPropHandler"]}}};export{l as ic_theme};
2
+ //# sourceMappingURL=p-c8ce6147.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/ic-theme/ic-theme.tsx"],"names":["Theme","this","checkThemeColorContrast","getThemeColorBrightness","BLACK_MIN_COLOR_BRIGHTNESS","WHITE_MAX_COLOR_BRIGHTNESS","console","warn","setThemeColor","color","colorRGBA","firstChar","slice","hexToRgba","toLowerCase","rgbaStrToObj","setThemeRGBA","root","document","documentElement","style","setProperty","r","toString","g","b","a","foregroundColor","getThemeForegroundColor","themeChange","emit","mode","[object Object]","h","Host"],"mappings":"8JA0BaA,EAAK,wEAgBRC,KAAAC,wBAA0B,KAChC,GACEC,IAA4BC,GAC5BD,IAA4BE,EAC5B,CACAC,QAAQC,KACN,+TAKEN,KAAAO,cAAgB,KACtB,GAAIP,KAAKQ,QAAU,KAAM,CACvB,IAAIC,EAAY,KAChB,MAAMC,EAAYV,KAAKQ,MAAMG,MAAM,EAAG,GACtC,GAAID,IAAc,IAAK,CACrBD,EAAYG,EAAUZ,KAAKQ,YACtB,GAAIE,EAAUG,gBAAkB,IAAK,CAC1CJ,EAAYK,EAAad,KAAKQ,OAEhCR,KAAKe,aAAaN,KAIdT,KAAAe,aAAgBN,IACtB,GAAIA,IAAc,KAAM,CACtB,MAAMO,EAAOC,SAASC,gBACtBF,EAAKG,MAAMC,YAAY,uBAAwBX,EAAUY,EAAEC,YAC3DN,EAAKG,MAAMC,YAAY,uBAAwBX,EAAUc,EAAED,YAC3DN,EAAKG,MAAMC,YAAY,uBAAwBX,EAAUe,EAAEF,YAC3DN,EAAKG,MAAMC,YAAY,uBAAwBX,EAAUgB,EAAEH,YAE3DtB,KAAKC,0BAEL,MAAMyB,EAAkBC,IACxB3B,KAAK4B,YAAYC,KAAK,CAAEC,KAAMJ,EAAiBlB,MAAOC,iBA/CjC,KAGzBsB,wBACE/B,KAAKO,gBA+CPwB,oBACE/B,KAAKO,gBAGPwB,SACE,OAAOC,EAACC,EAAI","sourcesContent":["import {\n Component,\n Host,\n Event,\n EventEmitter,\n h,\n Watch,\n Prop,\n} from \"@stencil/core\";\n\nimport { IcColorRGBA, IcTheme } from \"../../utils/types\";\nimport {\n getThemeForegroundColor,\n hexToRgba,\n rgbaStrToObj,\n} from \"../../utils/helpers\";\nimport { getThemeColorBrightness } from \"../../utils/helpers\";\nimport {\n BLACK_MIN_COLOR_BRIGHTNESS,\n WHITE_MAX_COLOR_BRIGHTNESS,\n} from \"../../utils/constants\";\n\n@Component({\n tag: \"ic-theme\",\n shadow: true,\n})\nexport class Theme {\n /**\n * The theme colour. Can be a hex value e.g. \"#ff0000\", RGB e.g. \"rgb(255, 0, 0)\", or RGBA e.g. \"rgba(255, 0, 0, 1)\".\n */\n @Prop() color?: string = null;\n\n @Watch(\"color\")\n watchColorPropHandler(): void {\n this.setThemeColor();\n }\n\n /**\n * @internal Emitted when the theme is changed.\n */\n @Event() themeChange: EventEmitter<IcTheme>;\n\n private checkThemeColorContrast = (): void => {\n if (\n getThemeColorBrightness() < BLACK_MIN_COLOR_BRIGHTNESS &&\n getThemeColorBrightness() > WHITE_MAX_COLOR_BRIGHTNESS\n ) {\n console.warn(\n `The theme colour does not provide enough contrast with either of the ICDS black or white foreground colours. Consider choosing a colour with a different brightness to achieve sufficient colour contrast for good visibility. See https://www.w3.org/TR/AERT/#color-contrast for more information about colour contrast.`\n );\n }\n };\n\n private setThemeColor = () => {\n if (this.color !== null) {\n let colorRGBA = null;\n const firstChar = this.color.slice(0, 1);\n if (firstChar === \"#\") {\n colorRGBA = hexToRgba(this.color);\n } else if (firstChar.toLowerCase() === \"r\") {\n colorRGBA = rgbaStrToObj(this.color);\n }\n this.setThemeRGBA(colorRGBA);\n }\n };\n\n private setThemeRGBA = (colorRGBA: IcColorRGBA) => {\n if (colorRGBA !== null) {\n const root = document.documentElement;\n root.style.setProperty(\"--ic-theme-primary-r\", colorRGBA.r.toString());\n root.style.setProperty(\"--ic-theme-primary-g\", colorRGBA.g.toString());\n root.style.setProperty(\"--ic-theme-primary-b\", colorRGBA.b.toString());\n root.style.setProperty(\"--ic-theme-primary-a\", colorRGBA.a.toString());\n\n this.checkThemeColorContrast();\n\n const foregroundColor = getThemeForegroundColor();\n this.themeChange.emit({ mode: foregroundColor, color: colorRGBA });\n }\n };\n\n componentWillLoad(): void {\n this.setThemeColor();\n }\n\n render() {\n return <Host></Host>;\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/ic-tab/ic-tab.css?tag=ic-tab&encapsulation=shadow","src/components/ic-tab/ic-tab.tsx"],"names":["icTabCss","Tab","this","isInitialRender","focusFromClick","handleClick","tabClick","emit","tabId","contextId","position","tabPosition","tabFocus","handleFocus","handleMouseDown","[object Object]","disabled","selected","appearance","h","Host","class","IcThemeForegroundEnum","Light","role","aria-selected","onClick","onFocus","onMouseDown","aria-disabled","tabindex","host","querySelector","name","variant"],"mappings":"oGAAA,MAAMA,EAAW,07HCwBJC,EAAG,qGAiCNC,KAAAC,gBAA2B,KAC3BD,KAAAE,eAA0B,MAE1BF,KAAAG,YAAc,KACpBH,KAAKI,SAASC,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,cAEjB,GAAIT,KAAKE,eAAgB,CACvBF,KAAKU,SAASL,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,cAEjBT,KAAKE,eAAiB,QAIlBF,KAAAW,YAAc,KACpB,IAAKX,KAAKE,eAAgB,CACxBF,KAAKU,SAASL,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,gBAKbT,KAAAY,gBAAkB,KAIxBZ,KAAKE,eAAiB,qBA9DsB,wBAKjB,oBAGiB,sEASI,OAgDlDW,qBACEb,KAAKC,gBAAkB,MAGzBY,SACE,MAAMC,SAAEA,EAAQC,SAAEA,EAAQC,WAAEA,GAAehB,KAC3C,OACEiB,EAACC,EAAI,CACHC,MAAO,CACLN,CAAC,oBAAqBb,KAAKC,gBAC3BY,CAAC,gBAAiBG,IAAeI,EAAsBC,OAEzDC,KAAK,MAAKC,gBACKR,EAAW,OAAS,QACnCS,QAASxB,KAAKG,YACdsB,QAASzB,KAAKW,YACde,YAAa1B,KAAKY,gBAAee,gBAClBb,EAAW,OAAS,QACnCc,SAAU5B,KAAKe,SAAW,GAAK,GAE9Bf,KAAK6B,KAAKC,cAAc,kBAAoBb,EAAA,OAAA,CAAMc,KAAK,SACxDd,EAAA,gBAAA,CAAeE,MAAM,eAAea,QAAQ,SAC1Cf,EAAA,OAAA,KACEA,EAAA,OAAA","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n --indicator-initial-color: rgba(23 89 188 / 0%);\n --indicator-color: var(--ic-action-default);\n --focus-indicator: var(--ic-border-focus);\n --label-color: var(--ic-color-primary-text);\n --background-color-hover: var(--ic-action-default-bg-hover);\n --background-color-active: var(--ic-action-default-bg-active);\n\n display: flex;\n align-items: center;\n border-radius: 0;\n color: var(--label-color);\n height: 40px;\n padding: 0 var(--ic-space-md);\n cursor: pointer;\n position: relative;\n border-bottom: var(--ic-space-xxs) solid var(--indicator-initial-color);\n gap: var(--ic-space-xs);\n transition: all var(--ic-easing-transition-fast);\n}\n\n:host(:focus) {\n box-shadow: var(--focus-indicator);\n border-radius: var(--ic-border-radius);\n}\n\n:host(:focus-visible) {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:hover) {\n background-color: var(--background-color-hover);\n}\n\n:host(:active) {\n background-color: var(--background-color-active);\n}\n\n:host(.ic-tab-light) {\n --indicator-initial-color: rgb(255 255 255 / 0%);\n --indicator-color: rgb(255 255 255 / 100%);\n --focus-indicator: var(--ic-border-focus);\n --label-color: white;\n --background-color-hover: var(--ic-action-dark-bg-hover);\n --background-color-active: var(--ic-action-dark-bg-active);\n}\n\n:host([selected]) {\n border-bottom: var(--ic-space-xxs) solid var(--indicator-color);\n}\n\n:host([disabled]) {\n pointer-events: none;\n color: var(--ic-architectural-300);\n}\n\n:host([selected].with-transition) {\n transition: all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow);\n}\n\n.ic-tab-label {\n pointer-events: none;\n}\n\n::slotted(svg) {\n fill: currentcolor;\n}\n\n@media (forced-colors: active) {\n :host {\n border-bottom: var(--ic-space-xxs) solid canvas;\n }\n\n :host([disabled]) {\n color: GrayText;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n} from \"@stencil/core\";\n\nimport { IcTabClickEventDetail } from \"./ic-tab.types\";\nimport {\n IcThemeForegroundNoDefault,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\n\n/**\n * @slot icon - Content will be rendered next to the tab label.\n */\n@Component({\n tag: \"ic-tab\",\n styleUrl: \"ic-tab.css\",\n shadow: true,\n})\nexport class Tab {\n @Element() host: HTMLIcTabElement;\n\n /** @internal Provide a unique context if using multiple tabs inside one another i.e. rendering another tabs inside a tab panel. */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * Disables the tab.\n */\n @Prop() disabled?: boolean = false;\n\n /** @internal Will display a selected indicator and set tabIndex. */\n @Prop({ reflect: true }) selected?: boolean = false;\n\n /** @internal The shared ID between panel and tab. */\n @Prop({ reflect: true }) tabId?: string;\n\n /** @internal The position of the tab inside the tabs array in context. */\n @Prop() tabPosition?: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n /**\n * Called when a tab is selected.\n */\n @Event() tabClick: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Called when a tab is focussed.\n */\n @Event() tabFocus: EventEmitter<IcTabClickEventDetail>;\n\n private isInitialRender: boolean = true;\n private focusFromClick: boolean = false;\n\n private handleClick = () => {\n this.tabClick.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n if (this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n this.focusFromClick = false;\n }\n };\n\n private handleFocus = () => {\n if (!this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n }\n };\n\n private handleMouseDown = () => {\n //set flag so that focus gets handled after click\n //there is a timing issue where a long click only causes focus to happen & not the click\n //the focus does need to be a seperate event though to handle focus from keyboard\n this.focusFromClick = true;\n };\n\n componentDidUpdate(): void {\n this.isInitialRender = false;\n }\n\n render() {\n const { disabled, selected, appearance } = this;\n return (\n <Host\n class={{\n [\"with-transition\"]: !this.isInitialRender,\n [\"ic-tab-light\"]: appearance === IcThemeForegroundEnum.Light,\n }}\n role=\"tab\"\n aria-selected={selected ? \"true\" : \"false\"}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onMouseDown={this.handleMouseDown}\n aria-disabled={disabled ? \"true\" : \"false\"}\n tabindex={this.selected ? 0 : -1}\n >\n {this.host.querySelector('[slot=\"icon\"]') && <slot name=\"icon\"></slot>}\n <ic-typography class=\"ic-tab-label\" variant=\"label\">\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/ic-tab/ic-tab.css?tag=ic-tab&encapsulation=shadow","src/components/ic-tab/ic-tab.tsx"],"names":["icTabCss","Tab","this","isInitialRender","focusFromClick","handleClick","tabClick","emit","tabId","contextId","position","tabPosition","tabFocus","handleFocus","handleMouseDown","[object Object]","disabled","selected","appearance","h","Host","class","IcThemeForegroundEnum","Light","role","aria-selected","onClick","onFocus","onMouseDown","aria-disabled","tabindex","host","querySelector","name","variant"],"mappings":"oGAAA,MAAMA,EAAW,07HCwBJC,EAAG,qGAiCNC,KAAAC,gBAA2B,KAC3BD,KAAAE,eAA0B,MAE1BF,KAAAG,YAAc,KACpBH,KAAKI,SAASC,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,cAEjB,GAAIT,KAAKE,eAAgB,CACvBF,KAAKU,SAASL,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,cAEjBT,KAAKE,eAAiB,QAIlBF,KAAAW,YAAc,KACpB,IAAKX,KAAKE,eAAgB,CACxBF,KAAKU,SAASL,KAAK,CACjBC,MAAON,KAAKM,MACZC,UAAWP,KAAKO,UAChBC,SAAUR,KAAKS,gBAKbT,KAAAY,gBAAkB,KAIxBZ,KAAKE,eAAiB,qBA9DsB,wBAKjB,oBAGiB,sEASI,OAgDlDW,qBACEb,KAAKC,gBAAkB,MAGzBY,SACE,MAAMC,SAAEA,EAAQC,SAAEA,EAAQC,WAAEA,GAAehB,KAC3C,OACEiB,EAACC,EAAI,CACHC,MAAO,CACLN,CAAC,oBAAqBb,KAAKC,gBAC3BY,CAAC,gBAAiBG,IAAeI,EAAsBC,OAEzDC,KAAK,MAAKC,gBACKR,EAAW,OAAS,QACnCS,QAASxB,KAAKG,YACdsB,QAASzB,KAAKW,YACde,YAAa1B,KAAKY,gBAAee,gBAClBb,EAAW,OAAS,QACnCc,SAAU5B,KAAKe,SAAW,GAAK,GAE9Bf,KAAK6B,KAAKC,cAAc,kBAAoBb,EAAA,OAAA,CAAMc,KAAK,SACxDd,EAAA,gBAAA,CAAeE,MAAM,eAAea,QAAQ,SAC1Cf,EAAA,OAAA,KACEA,EAAA,OAAA","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n --indicator-initial-color: rgba(23 89 188 / 0%);\n --indicator-color: var(--ic-action-default);\n --focus-indicator: var(--ic-border-focus);\n --label-color: var(--ic-color-primary-text);\n --background-color-hover: var(--ic-action-default-bg-hover);\n --background-color-active: var(--ic-action-default-bg-active);\n\n display: flex;\n align-items: center;\n border-radius: 0;\n color: var(--label-color);\n height: 40px;\n padding: 0 var(--ic-space-md);\n cursor: pointer;\n position: relative;\n border-bottom: var(--ic-space-xxs) solid var(--indicator-initial-color);\n gap: var(--ic-space-xs);\n transition: all var(--ic-easing-transition-fast);\n}\n\n:host(:focus) {\n box-shadow: var(--focus-indicator);\n border-radius: var(--ic-border-radius);\n}\n\n:host(:focus-visible) {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:hover) {\n background-color: var(--background-color-hover);\n}\n\n:host(:active) {\n background-color: var(--background-color-active);\n}\n\n:host(.ic-tab-light) {\n --indicator-initial-color: rgb(255 255 255 / 0%);\n --indicator-color: rgb(255 255 255 / 100%);\n --focus-indicator: var(--ic-border-focus);\n --label-color: white;\n --background-color-hover: var(--ic-action-dark-bg-hover);\n --background-color-active: var(--ic-action-dark-bg-active);\n}\n\n:host([selected]) {\n border-bottom: var(--ic-space-xxs) solid var(--indicator-color);\n}\n\n:host([disabled]) {\n pointer-events: none;\n color: var(--ic-architectural-300);\n}\n\n:host([selected].with-transition) {\n transition: all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow);\n}\n\n.ic-tab-label {\n pointer-events: none;\n}\n\n::slotted(svg) {\n fill: currentcolor;\n}\n\n@media (forced-colors: active) {\n :host {\n border-bottom: var(--ic-space-xxs) solid canvas;\n }\n\n :host([disabled]) {\n color: GrayText;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n} from \"@stencil/core\";\n\nimport { IcTabClickEventDetail } from \"./ic-tab.types\";\nimport {\n IcThemeForegroundNoDefault,\n IcThemeForegroundEnum,\n} from \"../../utils/types\";\n\n/**\n * @slot icon - Content will be rendered next to the tab label.\n */\n@Component({\n tag: \"ic-tab\",\n styleUrl: \"ic-tab.css\",\n shadow: true,\n})\nexport class Tab {\n @Element() host: HTMLIcTabElement;\n\n /** @internal The unique context needed if using multiple tabs inside one another i.e. rendering another tabs inside a tab panel. */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /** @internal If `true`, the tab will display with a selected indicator and tabIndex will be set. */\n @Prop({ reflect: true }) selected?: boolean = false;\n\n /** @internal The shared ID between panel and tab. */\n @Prop({ reflect: true }) tabId?: string;\n\n /** @internal The position of the tab inside the tabs array in context. */\n @Prop() tabPosition?: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() appearance?: IcThemeForegroundNoDefault = \"dark\";\n\n /**\n * @internal Emitted when a tab is selected.\n */\n @Event() tabClick: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is focussed.\n */\n @Event() tabFocus: EventEmitter<IcTabClickEventDetail>;\n\n private isInitialRender: boolean = true;\n private focusFromClick: boolean = false;\n\n private handleClick = () => {\n this.tabClick.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n if (this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n this.focusFromClick = false;\n }\n };\n\n private handleFocus = () => {\n if (!this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n }\n };\n\n private handleMouseDown = () => {\n //set flag so that focus gets handled after click\n //there is a timing issue where a long click only causes focus to happen & not the click\n //the focus does need to be a seperate event though to handle focus from keyboard\n this.focusFromClick = true;\n };\n\n componentDidUpdate(): void {\n this.isInitialRender = false;\n }\n\n render() {\n const { disabled, selected, appearance } = this;\n return (\n <Host\n class={{\n [\"with-transition\"]: !this.isInitialRender,\n [\"ic-tab-light\"]: appearance === IcThemeForegroundEnum.Light,\n }}\n role=\"tab\"\n aria-selected={selected ? \"true\" : \"false\"}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onMouseDown={this.handleMouseDown}\n aria-disabled={disabled ? \"true\" : \"false\"}\n tabindex={this.selected ? 0 : -1}\n >\n {this.host.querySelector('[slot=\"icon\"]') && <slot name=\"icon\"></slot>}\n <ic-typography class=\"ic-tab-label\" variant=\"label\">\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </Host>\n );\n }\n}\n"]}
@@ -1 +1 @@
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,ynJCoBLC,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 text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n}\n\n:host(.link) .ic-link:hover,\n:host(.link) ::slotted(a:hover) {\n outline: none;\n}\n\n:host(.link) .ic-link:focus,\n:host(.link) ::slotted(a:focus) {\n outline: var(--ic-hc-focus-outline);\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: var(--ic-hc-focus-outline);\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/**\n * @slot router-item - Handle routing by nesting your routes in this slot\n */\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
+ {"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,ynJCoBLC,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 text-decoration-line: underline;\n text-decoration-thickness: 25%;\n text-underline-offset: 25%;\n}\n\n:host(.link) .ic-link:hover,\n:host(.link) ::slotted(a:hover) {\n outline: none;\n}\n\n:host(.link) .ic-link:focus,\n:host(.link) ::slotted(a:focus) {\n outline: var(--ic-hc-focus-outline);\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: var(--ic-hc-focus-outline);\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/**\n * @slot router-item - Handle routing by nesting your routes in this slot.\n */\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 * If `true`, the user can save the linked URL instead of navigating to it.\n */\n @Prop() download?: string | boolean = false;\n\n /**\n * The URL that the link points to.\n */\n @Prop() href?: string = null;\n\n /**\n * 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 * The place to display the linked URL, as the name for a browsing context (a tab, window, or iframe).\n */\n @Prop() target?: string;\n\n /**\n * If `true`, the 'open in new tab/window' icon will be displayed.\n */\n @Prop() showIcon?: boolean;\n\n /**\n * The appearance of the link, e.g. dark, light, or default.\n */\n @Prop({ mutable: true }) appearance?: IcThemeForeground = \"default\";\n\n @Listen(\"themeChange\", { 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 +1 @@
1
- {"version":3,"sources":["src/components/ic-navigation-menu/ic-navigation-menu.css?tag=ic-navigation-menu&encapsulation=shadow","src/components/ic-navigation-menu/ic-navigation-menu.tsx"],"names":["icNavigationMenuCss","NavigationMenu","this","hasButtons","hasNavigation","navItemAboveButtons","navGroupFirst","lastTabStop","closeButton","closeMenu","icNavigationMenuClose","emit","focusCloseButton","setFocus","focusLastTabStop","focusEl","tagName","focus","[object Object]","ev","key","shiftKey","document","activeElement","navBarEl","preventDefault","querySelector","navigationEls","getSlotContent","el","lastEl","length","firstEl","buttonContent","slotContent","getSlot","isSlotUsed","h","Host","class","onClick","role","aria-modal","aria-label","aria-hidden","id","aria-labelledby","ref","variant","size","slot","width","height","viewBox","fill","xmlns","d","name","status","version"],"mappings":"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","sourcesContent":[":host {\n display: block;\n}\n\n.popout-modal {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.popout-menu {\n position: fixed;\n top: 0;\n right: 0;\n width: 256px;\n bottom: 0;\n background-color: var(--ic-architectural-20);\n color: var(--ic-color-primary-text);\n box-shadow: var(--ic-elevation-overlay);\n overflow-y: auto;\n overflow-x: hidden;\n z-index: calc(var(--ic-z-index-overlay) / 2);\n}\n\n:host(.inline) .popout-menu {\n position: absolute;\n}\n\n.menu-close-button-container {\n position: relative;\n left: 190px;\n padding: var(--ic-space-md) 0;\n}\n\n.nav-group-first {\n padding-bottom: 0;\n}\n\n.menu-buttons-container {\n padding: var(--ic-space-sm) 0;\n border-bottom: 1px solid var(--ic-architectural-200);\n}\n\n.menu-buttons-container-nav-item-above {\n margin-top: var(--ic-space-md);\n border-top: 1px solid var(--ic-architectural-200);\n}\n\n.menu-status-version-container {\n display: inline-flex;\n margin: var(--ic-space-md) var(--ic-space-md) var(--ic-space-xl);\n}\n\n.menu-status {\n background-color: var(--ic-architectural-500);\n color: var(--ic-color-white-text);\n border-radius: 80px;\n width: fit-content;\n padding: var(--ic-space-xxs) var(--ic-space-sm);\n margin-right: var(--ic-space-xs);\n}\n\n.menu-version {\n border-radius: 16px;\n background-color: var(--ic-architectural-100);\n padding: var(--ic-space-xxs) var(--ic-space-sm);\n}\n\n.menu-status-text,\n.menu-version-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 90px;\n}\n\n.navigation-landmark-text {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n Event,\n EventEmitter,\n Listen,\n} from \"@stencil/core\";\n\nimport { getSlot, getSlotContent, isSlotUsed } from \"../../utils/helpers\";\n\n/**\n * @slot navigation - Content will be rendered at top of panel.\n * @slot buttons - Content will be rendered above version info and below navigation.\n */\n@Component({\n tag: \"ic-navigation-menu\",\n styleUrl: \"ic-navigation-menu.css\",\n shadow: true,\n})\nexport class NavigationMenu {\n @Element() el: HTMLIcNavigationMenuElement;\n\n /**\n * Version info to display\n */\n @Prop() version: string = \"\";\n\n /**\n * Status info to display\n */\n @Prop() status: string = \"\";\n\n /**\n * @internal - Emitted when the menu is closed.\n */\n @Event() icNavigationMenuClose: EventEmitter<void>;\n\n @Listen(\"icNavItemClicked\")\n navItemClickHandler(): void {\n this.closeMenu();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyDown(ev: KeyboardEvent): void {\n if (ev.key === \"Tab\") {\n if (ev.shiftKey) {\n if (document.activeElement === this.navBarEl) {\n ev.preventDefault();\n this.focusLastTabStop();\n }\n } else if (\n document.activeElement === this.lastTabStop ||\n this.lastTabStop === null\n ) {\n ev.preventDefault();\n this.focusCloseButton();\n }\n } else if (ev.key === \"Escape\") {\n this.closeMenu();\n }\n }\n\n private hasButtons: boolean = false;\n private hasNavigation: boolean = false;\n private navItemAboveButtons: boolean = false;\n private navGroupFirst: boolean = false;\n private lastTabStop: HTMLElement = null;\n private closeButton: HTMLIcButtonElement = null;\n private navBarEl: HTMLIcTopNavigationElement;\n\n private closeMenu = () => {\n this.icNavigationMenuClose.emit();\n };\n\n private focusCloseButton = () => {\n if (this.closeButton.setFocus) {\n this.closeButton.setFocus();\n }\n };\n\n private focusLastTabStop = () => {\n let focusEl;\n if (this.lastTabStop !== null) {\n switch (this.lastTabStop.tagName) {\n case \"IC-NAVIGATION-BUTTON\":\n focusEl = this.lastTabStop as HTMLIcNavigationButtonElement;\n focusEl.setFocus();\n break;\n case \"IC-NAVIGATION-ITEM\":\n focusEl = this.lastTabStop as HTMLIcNavigationItemElement;\n focusEl.setFocus();\n break;\n case \"IC-NAVIGATION-GROUP\":\n focusEl = this.lastTabStop as HTMLIcNavigationGroupElement;\n focusEl.setFocus();\n break;\n case \"A\":\n this.lastTabStop.focus();\n break;\n }\n }\n };\n\n componentWillLoad(): void {\n this.navBarEl = document.querySelector(\"ic-top-navigation\");\n const navigationEls = getSlotContent(this.el, \"navigation\");\n if (navigationEls) {\n this.hasNavigation = true;\n const lastEl = navigationEls[navigationEls.length - 1] as HTMLElement;\n if (lastEl.tagName === \"IC-NAVIGATION-ITEM\") {\n this.navItemAboveButtons = true;\n }\n const firstEl = navigationEls[0] as HTMLElement;\n if (firstEl.tagName === \"IC-NAVIGATION-GROUP\") {\n this.navGroupFirst = true;\n }\n }\n const buttonContent = getSlotContent(this.el, \"buttons\");\n\n if (buttonContent !== null) {\n this.hasButtons = true;\n this.lastTabStop = buttonContent[buttonContent.length - 1] as HTMLElement;\n } else {\n if (this.hasNavigation) {\n const lastEl = navigationEls[navigationEls.length - 1] as HTMLElement;\n //check for slotted content i.e. react router link\n const slotContent = getSlot(lastEl, \"navigation-item\");\n if (slotContent !== null) {\n this.lastTabStop = slotContent as HTMLElement;\n } else {\n this.lastTabStop = lastEl;\n }\n }\n }\n }\n\n componentDidLoad(): void {\n this.focusCloseButton();\n }\n\n componentWillRender(): void {\n this.hasNavigation = isSlotUsed(this.el, \"navigation\");\n this.hasButtons = isSlotUsed(this.el, \"buttons\");\n }\n\n render() {\n return (\n <Host>\n <div class=\"popout-modal\" onClick={this.closeMenu}></div>\n <div\n class=\"popout-menu\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={`${this.hasNavigation ? \"Navigation\" : \"App\"} menu`}\n >\n <span\n aria-hidden=\"true\"\n id=\"navigation-landmark-text\"\n class=\"navigation-landmark-text\"\n >\n Main navigation\n </span>\n <nav\n aria-labelledby=\"navigation-landmark-text\"\n aria-hidden={this.hasNavigation ? \"false\" : \"true\"}\n >\n <div\n class={{\n [\"menu-close-button-container\"]: true,\n [\"nav-group-first\"]: this.navGroupFirst,\n }}\n >\n <ic-button\n ref={(el) => (this.closeButton = el)}\n id=\"menu-close-button\"\n class=\"menu-close-button\"\n variant=\"icon\"\n size=\"large\"\n aria-label={`Close ${\n this.hasNavigation ? \"navigation\" : \"app\"\n } menu`}\n onClick={this.closeMenu}\n >\n <svg\n slot=\"icon\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z\"\n fill=\"#1759BC\"\n />\n </svg>\n </ic-button>\n </div>\n {this.hasNavigation && <slot name=\"navigation\"></slot>}\n </nav>\n {this.hasButtons && (\n <div\n class={{\n [\"menu-buttons-container\"]: true,\n [\"menu-buttons-container-nav-item-above\"]:\n this.navItemAboveButtons,\n }}\n >\n <slot name=\"buttons\"></slot>\n </div>\n )}\n {(this.status !== \"\" || this.version !== \"\") && (\n <div class=\"menu-status-version-container\">\n {this.status !== \"\" && (\n <div class=\"menu-status\">\n <ic-typography\n variant=\"label-uppercase\"\n aria-label=\"app tag\"\n class=\"menu-status-text\"\n >\n {this.status}\n </ic-typography>\n </div>\n )}\n {this.version !== \"\" && (\n <div class=\"menu-version\">\n <ic-typography\n variant=\"label\"\n class=\"menu-version-text\"\n aria-label=\"app version\"\n >\n {this.version}\n </ic-typography>\n </div>\n )}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/ic-navigation-menu/ic-navigation-menu.css?tag=ic-navigation-menu&encapsulation=shadow","src/components/ic-navigation-menu/ic-navigation-menu.tsx"],"names":["icNavigationMenuCss","NavigationMenu","this","hasButtons","hasNavigation","navItemAboveButtons","navGroupFirst","lastTabStop","closeButton","closeMenu","icNavigationMenuClose","emit","focusCloseButton","setFocus","focusLastTabStop","focusEl","tagName","focus","[object Object]","ev","key","shiftKey","document","activeElement","navBarEl","preventDefault","querySelector","navigationEls","getSlotContent","el","lastEl","length","firstEl","buttonContent","slotContent","getSlot","isSlotUsed","h","Host","class","onClick","role","aria-modal","aria-label","aria-hidden","id","aria-labelledby","ref","variant","size","slot","width","height","viewBox","fill","xmlns","d","name","status","version"],"mappings":"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","sourcesContent":[":host {\n display: block;\n}\n\n.popout-modal {\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n}\n\n.popout-menu {\n position: fixed;\n top: 0;\n right: 0;\n width: 256px;\n bottom: 0;\n background-color: var(--ic-architectural-20);\n color: var(--ic-color-primary-text);\n box-shadow: var(--ic-elevation-overlay);\n overflow-y: auto;\n overflow-x: hidden;\n z-index: calc(var(--ic-z-index-overlay) / 2);\n}\n\n:host(.inline) .popout-menu {\n position: absolute;\n}\n\n.menu-close-button-container {\n position: relative;\n left: 190px;\n padding: var(--ic-space-md) 0;\n}\n\n.nav-group-first {\n padding-bottom: 0;\n}\n\n.menu-buttons-container {\n padding: var(--ic-space-sm) 0;\n border-bottom: 1px solid var(--ic-architectural-200);\n}\n\n.menu-buttons-container-nav-item-above {\n margin-top: var(--ic-space-md);\n border-top: 1px solid var(--ic-architectural-200);\n}\n\n.menu-status-version-container {\n display: inline-flex;\n margin: var(--ic-space-md) var(--ic-space-md) var(--ic-space-xl);\n}\n\n.menu-status {\n background-color: var(--ic-architectural-500);\n color: var(--ic-color-white-text);\n border-radius: 80px;\n width: fit-content;\n padding: var(--ic-space-xxs) var(--ic-space-sm);\n margin-right: var(--ic-space-xs);\n}\n\n.menu-version {\n border-radius: 16px;\n background-color: var(--ic-architectural-100);\n padding: var(--ic-space-xxs) var(--ic-space-sm);\n}\n\n.menu-status-text,\n.menu-version-text {\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n max-width: 90px;\n}\n\n.navigation-landmark-text {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n h,\n Event,\n EventEmitter,\n Listen,\n} from \"@stencil/core\";\n\nimport { getSlot, getSlotContent, isSlotUsed } from \"../../utils/helpers\";\n\n/**\n * @slot navigation - Content will be rendered at top of panel.\n * @slot buttons - Content will be rendered above version info and below navigation.\n */\n@Component({\n tag: \"ic-navigation-menu\",\n styleUrl: \"ic-navigation-menu.css\",\n shadow: true,\n})\nexport class NavigationMenu {\n @Element() el: HTMLIcNavigationMenuElement;\n\n /**\n * The version info to display.\n */\n @Prop() version: string = \"\";\n\n /**\n * The status info to display.\n */\n @Prop() status: string = \"\";\n\n /**\n * @internal - Emitted when the menu is closed.\n */\n @Event() icNavigationMenuClose: EventEmitter<void>;\n\n @Listen(\"navItemClicked\")\n navItemClickHandler(): void {\n this.closeMenu();\n }\n\n @Listen(\"keydown\", { target: \"document\" })\n handleKeyDown(ev: KeyboardEvent): void {\n if (ev.key === \"Tab\") {\n if (ev.shiftKey) {\n if (document.activeElement === this.navBarEl) {\n ev.preventDefault();\n this.focusLastTabStop();\n }\n } else if (\n document.activeElement === this.lastTabStop ||\n this.lastTabStop === null\n ) {\n ev.preventDefault();\n this.focusCloseButton();\n }\n } else if (ev.key === \"Escape\") {\n this.closeMenu();\n }\n }\n\n private hasButtons: boolean = false;\n private hasNavigation: boolean = false;\n private navItemAboveButtons: boolean = false;\n private navGroupFirst: boolean = false;\n private lastTabStop: HTMLElement = null;\n private closeButton: HTMLIcButtonElement = null;\n private navBarEl: HTMLIcTopNavigationElement;\n\n private closeMenu = () => {\n this.icNavigationMenuClose.emit();\n };\n\n private focusCloseButton = () => {\n if (this.closeButton.setFocus) {\n this.closeButton.setFocus();\n }\n };\n\n private focusLastTabStop = () => {\n let focusEl;\n if (this.lastTabStop !== null) {\n switch (this.lastTabStop.tagName) {\n case \"IC-NAVIGATION-BUTTON\":\n focusEl = this.lastTabStop as HTMLIcNavigationButtonElement;\n focusEl.setFocus();\n break;\n case \"IC-NAVIGATION-ITEM\":\n focusEl = this.lastTabStop as HTMLIcNavigationItemElement;\n focusEl.setFocus();\n break;\n case \"IC-NAVIGATION-GROUP\":\n focusEl = this.lastTabStop as HTMLIcNavigationGroupElement;\n focusEl.setFocus();\n break;\n case \"A\":\n this.lastTabStop.focus();\n break;\n }\n }\n };\n\n componentWillLoad(): void {\n this.navBarEl = document.querySelector(\"ic-top-navigation\");\n const navigationEls = getSlotContent(this.el, \"navigation\");\n if (navigationEls) {\n this.hasNavigation = true;\n const lastEl = navigationEls[navigationEls.length - 1] as HTMLElement;\n if (lastEl.tagName === \"IC-NAVIGATION-ITEM\") {\n this.navItemAboveButtons = true;\n }\n const firstEl = navigationEls[0] as HTMLElement;\n if (firstEl.tagName === \"IC-NAVIGATION-GROUP\") {\n this.navGroupFirst = true;\n }\n }\n const buttonContent = getSlotContent(this.el, \"buttons\");\n\n if (buttonContent !== null) {\n this.hasButtons = true;\n this.lastTabStop = buttonContent[buttonContent.length - 1] as HTMLElement;\n } else {\n if (this.hasNavigation) {\n const lastEl = navigationEls[navigationEls.length - 1] as HTMLElement;\n //check for slotted content i.e. react router link\n const slotContent = getSlot(lastEl, \"navigation-item\");\n if (slotContent !== null) {\n this.lastTabStop = slotContent as HTMLElement;\n } else {\n this.lastTabStop = lastEl;\n }\n }\n }\n }\n\n componentDidLoad(): void {\n this.focusCloseButton();\n }\n\n componentWillRender(): void {\n this.hasNavigation = isSlotUsed(this.el, \"navigation\");\n this.hasButtons = isSlotUsed(this.el, \"buttons\");\n }\n\n render() {\n return (\n <Host>\n <div class=\"popout-modal\" onClick={this.closeMenu}></div>\n <div\n class=\"popout-menu\"\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={`${this.hasNavigation ? \"Navigation\" : \"App\"} menu`}\n >\n <span\n aria-hidden=\"true\"\n id=\"navigation-landmark-text\"\n class=\"navigation-landmark-text\"\n >\n Main navigation\n </span>\n <nav\n aria-labelledby=\"navigation-landmark-text\"\n aria-hidden={this.hasNavigation ? \"false\" : \"true\"}\n >\n <div\n class={{\n [\"menu-close-button-container\"]: true,\n [\"nav-group-first\"]: this.navGroupFirst,\n }}\n >\n <ic-button\n ref={(el) => (this.closeButton = el)}\n id=\"menu-close-button\"\n class=\"menu-close-button\"\n variant=\"icon\"\n size=\"large\"\n aria-label={`Close ${\n this.hasNavigation ? \"navigation\" : \"app\"\n } menu`}\n onClick={this.closeMenu}\n >\n <svg\n slot=\"icon\"\n width=\"14\"\n height=\"14\"\n viewBox=\"0 0 14 14\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path\n d=\"M14 1.41L12.59 0L7 5.59L1.41 0L0 1.41L5.59 7L0 12.59L1.41 14L7 8.41L12.59 14L14 12.59L8.41 7L14 1.41Z\"\n fill=\"#1759BC\"\n />\n </svg>\n </ic-button>\n </div>\n {this.hasNavigation && <slot name=\"navigation\"></slot>}\n </nav>\n {this.hasButtons && (\n <div\n class={{\n [\"menu-buttons-container\"]: true,\n [\"menu-buttons-container-nav-item-above\"]:\n this.navItemAboveButtons,\n }}\n >\n <slot name=\"buttons\"></slot>\n </div>\n )}\n {(this.status !== \"\" || this.version !== \"\") && (\n <div class=\"menu-status-version-container\">\n {this.status !== \"\" && (\n <div class=\"menu-status\">\n <ic-typography\n variant=\"label-uppercase\"\n aria-label=\"app tag\"\n class=\"menu-status-text\"\n >\n {this.status}\n </ic-typography>\n </div>\n )}\n {this.version !== \"\" && (\n <div class=\"menu-version\">\n <ic-typography\n variant=\"label\"\n class=\"menu-version-text\"\n aria-label=\"app version\"\n >\n {this.version}\n </ic-typography>\n </div>\n )}\n </div>\n )}\n </div>\n </Host>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/ic-data-entity/ic-data-entity.css?tag=ic-data-entity&encapsulation=shadow","src/components/ic-data-entity/ic-data-entity.tsx"],"names":["icDataEntityCss","DataEntity","[object Object]","heading","small","this","children","el","i","length","setAttribute","h","Host","class","id","name","variant","aria-labelledby"],"mappings":"yDAAA,MAAMA,EAAkB,owFCOXC,EAAU,iEAWI,MAEzBC,SACE,MAAMC,QAAEA,EAAOC,MAAEA,GAAUC,KAE3B,MAAMC,EAAWD,KAAKE,GAAGD,SAEzB,GAAIF,EAAO,CACT,IAAK,IAAII,EAAI,EAAGA,EAAIF,EAASG,OAAQD,IAAK,CACxCF,EAASE,GAAGE,aAAa,QAAS,SAItC,OACEC,EAACC,EAAI,CAACC,MAAO,CAAEX,CAAC,SAAUE,IACxBO,EAAA,MAAA,CAAKE,MAAM,UAAUC,GAAG,uBACtBH,EAAA,OAAA,CAAMI,KAAK,WACTJ,EAAA,gBAAA,CAAeK,QAAQ,MAAMb,KAGjCQ,EAAA,MAAA,CAAKE,MAAM,YACXF,EAAA,KAAA,CAAAM,kBAAoB,sBAAsBJ,MAAM,QAC9CF,EAAA,OAAA","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: block;\n}\n\n.rows {\n display: flex;\n flex-direction: column;\n gap: var(--ic-space-md);\n}\n\n:host(.small) .rows {\n gap: var(--ic-space-xs);\n}\n\n.divider {\n margin-top: var(--ic-space-lg);\n margin-bottom: var(--ic-space-md);\n height: 1px;\n background-color: var(--ic-architectural-300);\n}\n\n:host(.small) .divider {\n margin-top: var(--ic-space-sm);\n margin-bottom: var(--ic-space-xs);\n}\n\n@media (forced-colors: active) {\n .divider {\n background-color: canvastext;\n }\n}\n","import { Component, Element, Host, h, Prop } from \"@stencil/core\";\n\n@Component({\n tag: \"ic-data-entity\",\n styleUrl: \"ic-data-entity.css\",\n shadow: true,\n})\nexport class DataEntity {\n @Element() el: HTMLIcDataEntityElement;\n\n /**\n * Title for the data entity\n */\n @Prop() heading: string;\n\n /**\n * Set the data heading and all child data rows to small styling\n */\n @Prop() small: boolean = false;\n\n render() {\n const { heading, small } = this;\n\n const children = this.el.children;\n\n if (small) {\n for (let i = 0; i < children.length; i++) {\n children[i].setAttribute(\"small\", \"true\");\n }\n }\n\n return (\n <Host class={{ [\"small\"]: small }}>\n <div class=\"heading\" id=\"data-entity-heading\">\n <slot name=\"heading\">\n <ic-typography variant=\"h3\">{heading}</ic-typography>\n </slot>\n </div>\n <div class=\"divider\" />\n <ul aria-labelledby=\"data-entity-heading\" class=\"rows\">\n <slot></slot>\n </ul>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/ic-data-entity/ic-data-entity.css?tag=ic-data-entity&encapsulation=shadow","src/components/ic-data-entity/ic-data-entity.tsx"],"names":["icDataEntityCss","DataEntity","[object Object]","heading","small","this","children","el","i","length","setAttribute","h","Host","class","id","name","variant","aria-labelledby"],"mappings":"yDAAA,MAAMA,EAAkB,owFCOXC,EAAU,iEAWI,MAEzBC,SACE,MAAMC,QAAEA,EAAOC,MAAEA,GAAUC,KAE3B,MAAMC,EAAWD,KAAKE,GAAGD,SAEzB,GAAIF,EAAO,CACT,IAAK,IAAII,EAAI,EAAGA,EAAIF,EAASG,OAAQD,IAAK,CACxCF,EAASE,GAAGE,aAAa,QAAS,SAItC,OACEC,EAACC,EAAI,CAACC,MAAO,CAAEX,CAAC,SAAUE,IACxBO,EAAA,MAAA,CAAKE,MAAM,UAAUC,GAAG,uBACtBH,EAAA,OAAA,CAAMI,KAAK,WACTJ,EAAA,gBAAA,CAAeK,QAAQ,MAAMb,KAGjCQ,EAAA,MAAA,CAAKE,MAAM,YACXF,EAAA,KAAA,CAAAM,kBAAoB,sBAAsBJ,MAAM,QAC9CF,EAAA,OAAA","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: block;\n}\n\n.rows {\n display: flex;\n flex-direction: column;\n gap: var(--ic-space-md);\n}\n\n:host(.small) .rows {\n gap: var(--ic-space-xs);\n}\n\n.divider {\n margin-top: var(--ic-space-lg);\n margin-bottom: var(--ic-space-md);\n height: 1px;\n background-color: var(--ic-architectural-300);\n}\n\n:host(.small) .divider {\n margin-top: var(--ic-space-sm);\n margin-bottom: var(--ic-space-xs);\n}\n\n@media (forced-colors: active) {\n .divider {\n background-color: canvastext;\n }\n}\n","import { Component, Element, Host, h, Prop } from \"@stencil/core\";\n\n@Component({\n tag: \"ic-data-entity\",\n styleUrl: \"ic-data-entity.css\",\n shadow: true,\n})\nexport class DataEntity {\n @Element() el: HTMLIcDataEntityElement;\n\n /**\n * The title for the data entity.\n */\n @Prop() heading: string;\n\n /**\n * If `true`, the small styling will be applied to the data heading and all child data rows.\n */\n @Prop() small: boolean = false;\n\n render() {\n const { heading, small } = this;\n\n const children = this.el.children;\n\n if (small) {\n for (let i = 0; i < children.length; i++) {\n children[i].setAttribute(\"small\", \"true\");\n }\n }\n\n return (\n <Host class={{ [\"small\"]: small }}>\n <div class=\"heading\" id=\"data-entity-heading\">\n <slot name=\"heading\">\n <ic-typography variant=\"h3\">{heading}</ic-typography>\n </slot>\n </div>\n <div class=\"divider\" />\n <ul aria-labelledby=\"data-entity-heading\" class=\"rows\">\n <slot></slot>\n </ul>\n </Host>\n );\n }\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["src/components/ic-navigation-group/ic-navigation-group.css?tag=ic-navigation-group&encapsulation=shadow","src/components/ic-navigation-group/ic-navigation-group.tsx"],"names":["icNavigationGroupCss","NavigationGroup","this","DYNAMIC_GROUPED_LINKS_HEIGHT_MS","sideNavExpandHandler","setTimeout","setInitialGroupedLinksWrapperHeight","topNavResizedHandler","ev","newSize","detail","size","deviceSize","inTopNavSideMenu","DEVICE_SIZES","L","setGroupedNavItemTabIndex","tabIndexValue","el","querySelectorAll","forEach","navigationItem","navItem","shadowRoot","querySelector","setAttribute","toggleGroupedLinkWrapperHeight","wrapper","expanded","getNavigationChildItemsHeight","toggleExpanded","linkWrapper","handleClick","navigationType","toggleDropdown","handleBlur","target","relatedTarget","contains","hideDropdown","handleTopNavKeydown","key","blur","handleKeydown","preventDefault","handleMouseLeave","dropdown","document","activeElement","triggerShowDropdown","showDropdown","renderDropdownGroupedLinks","h","class","[object Object]","dropdownOpen","onMouseLeave","ref","renderGroupedLinks","navigationItemLength","length","parseInt","getComputedStyle","height","renderNavigationItems","expandable","XL","getThemeForegroundColor","theme","focusStyle","mode","groupEl","focus","getCurrentDeviceSize","navParentDetails","getNavItemParentDetails","navType","parentEl","parent","addEventListener","removeEventListener","label","NavigationGroupElement","Host","collapsed","role","tabindex","onMouseOver","onBlur","onClick","onKeyDown","aria-expanded","aria-haspopup","variant","chevron-toggle-icon-wrapper","chevron-toggle-icon-closed","innerHTML","chevronIcon"],"mappings":"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","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: block;\n}\n\n:host(.in-side-menu) {\n border-bottom: 1px solid var(--ic-architectural-200);\n padding: var(--ic-space-md) 0;\n}\n\n:host .navigation-group {\n height: 100%;\n width: fit-content;\n color: var(--ic-theme-text);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--ic-space-md);\n transition: var(--ic-easing-transition-slow);\n position: relative;\n background: none;\n border: none;\n}\n\n:host(.in-side-menu) .navigation-group {\n height: 40px;\n width: 100%;\n text-align: left;\n}\n\n:host(.in-side-menu) .navigation-group .ic-typography-label {\n width: 190px;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu {\n color: var(--ic-action-default);\n justify-content: flex-start;\n padding: 0 var(--ic-space-md) 0 var(--ic-space-md);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-collapsed,\n:host(.in-side-menu) .navigation-group-side-menu-expanded {\n color: var(--ic-action-default);\n justify-content: flex-start;\n padding-left: var(--ic-space-md);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded {\n margin-bottom: var(--ic-space-xs);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-collapsed::after,\n:host(.in-side-menu) .navigation-group-side-menu-expanded::after {\n border-style: solid;\n border-width: 0.125em 0.125em 0 0;\n content: \"\";\n display: inline-block;\n height: 0.45em;\n left: 0.75em;\n position: relative;\n top: -0.1em;\n transform: rotate(135deg);\n vertical-align: top;\n width: 0.45em;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded::after {\n top: 0.15em;\n transform: rotate(-45deg);\n}\n\n:host .navigation-group:hover,\n:host .navigation-group:active,\n:host .selected {\n background-color: var(--ic-architectural-20);\n color: var(--ic-color-primary-text);\n outline: none;\n cursor: pointer;\n}\n\n:host(:not(.in-side-menu)) .navigation-group:focus {\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n outline: var(--ic-hc-focus-outline);\n z-index: 1;\n transition: box-shadow var(--ic-easing-transition-fast);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu:hover,\n:host(.in-side-menu) .navigation-group-side-menu:active,\n:host(.in-side-menu) .navigation-group-side-menu:focus {\n background-color: var(--ic-architectural-20);\n color: var(--ic-action-default);\n cursor: auto;\n box-shadow: none;\n outline: none;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu:focus {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:hover:not(:focus),\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:hover:not(:focus) {\n background-color: var(--ic-action-dark-bg-hover);\n color: var(--ic-action-default);\n cursor: pointer;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:active:not(:focus),\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:active:not(:focus) {\n background-color: var(--ic-action-dark-bg-active);\n color: var(--ic-action-default);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:focus,\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:focus {\n color: var(--ic-action-default);\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n outline: var(--ic-hc-focus-outline);\n}\n\n:host .navigation-group-dropdown {\n background-color: var(--ic-architectural-20);\n border-bottom: 1px solid var(--ic-architectural-300);\n position: absolute;\n left: 0;\n right: 0;\n padding: var(--ic-space-xs) var(--ic-space-md);\n box-shadow: 0 6px 8px -6px rgba(0 0 0 / 20%);\n}\n\n:host .navigation-group-dropdown-items-list {\n list-style: none;\n display: flex;\n flex-flow: column wrap;\n align-content: flex-start;\n padding-left: var(--ic-space-md);\n max-height: 264px;\n}\n\n:host .chevron-toggle-icon-wrapper {\n display: flex;\n align-items: center;\n}\n\n:host .chevron-toggle-icon-wrapper svg {\n transform: rotate(90deg);\n}\n\n:host .chevron-toggle-icon-closed svg {\n transform: rotate(-90deg);\n}\n\n:host(.expanded) .grouped-links-wrapper {\n height: var(--navigation-child-items-height, auto);\n transition: var(--ic-easing-transition-slow);\n overflow: hidden;\n}\n\n:host(.collapsed) .grouped-links-wrapper {\n height: var(--navigation-child-items-height, 0);\n transition: var(--ic-easing-transition-slow);\n overflow: hidden;\n}\n\n:host(.navigation-group-side-nav) .navigation-group {\n height: var(--navigation-group-height);\n width: var(--navigation-group-width);\n justify-content: var(--navigation-group-justify-content);\n padding-right: var(--navigation-group-expand-toggle-padding);\n}\n\n:host(.navigation-group-side-nav) .navigation-group:hover,\n:host(.navigation-group-side-nav) .navigation-group:active,\n:host(.navigation-group-side-nav) .selected {\n background-color: var(--navigation-group-hover);\n color: var(--navigation-group-text-hover);\n}\n\n:host(.navigation-group-side-nav) .navigation-group:focus {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n background: none;\n}\n\n:host(.navigation-group-side-nav) .ic-typography-caption {\n position: var(--navigation-group-title-position);\n left: var(--navigation-group-title-position-left);\n white-space: nowrap;\n}\n\n.menu-visibility-visible {\n visibility: visible;\n}\n\n.menu-visibility-hidden {\n visibility: hidden;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n State,\n Listen,\n h,\n Method,\n} from \"@stencil/core\";\n\nimport {\n DEVICE_SIZES,\n getCurrentDeviceSize,\n getThemeForegroundColor,\n getNavItemParentDetails,\n} from \"../../utils/helpers\";\nimport { IcNavType, IcTheme } from \"../../utils/types\";\n\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\n\n@Component({\n tag: \"ic-navigation-group\",\n styleUrl: \"ic-navigation-group.css\",\n shadow: true,\n})\nexport class NavigationGroup {\n @Element() el: HTMLIcNavigationGroupElement;\n\n /**\n * label to display on the group\n */\n @Prop() label: string;\n\n /**\n * whether the group should be expandable/collapsible in the side menu\n */\n @Prop() expandable: boolean = false;\n\n @State() dropdownOpen: boolean = false;\n\n @State() inTopNavSideMenu: boolean = false;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n @State() focusStyle = getThemeForegroundColor();\n\n @State() navigationType: IcNavType | \"\";\n\n @State() parentEl: HTMLElement;\n\n @State() expanded: boolean = true;\n\n private groupEl: HTMLElement;\n private dropdown: HTMLElement;\n private DYNAMIC_GROUPED_LINKS_HEIGHT_MS = 50;\n\n @Listen(\"childBlur\")\n childBlurHandler(): void {\n this.hideDropdown();\n }\n\n @Listen(\"icNavItemClicked\")\n navItemClickHandler(): void {\n this.hideDropdown();\n }\n\n @Listen(\"icThemeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.focusStyle = theme.mode;\n }\n\n /**\n * Sets focus on the nav item\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.groupEl) {\n this.groupEl.focus();\n }\n }\n\n private sideNavExpandHandler = (): void => {\n setTimeout(\n () => this.setInitialGroupedLinksWrapperHeight(),\n this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS\n );\n };\n\n private topNavResizedHandler = (ev: CustomEvent): void => {\n const newSize = ev.detail.size;\n if (newSize !== this.deviceSize) {\n this.deviceSize = newSize;\n this.inTopNavSideMenu = newSize <= DEVICE_SIZES.L;\n }\n };\n\n private toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n }\n\n private setGroupedNavItemTabIndex = (tabIndexValue: string) => {\n this.el.querySelectorAll(\"ic-navigation-item\").forEach((navigationItem) => {\n const navItem =\n navigationItem.shadowRoot.querySelector(\"a\") ||\n navigationItem.querySelector(\"a\");\n if (navItem) {\n navItem.setAttribute(\"tabindex\", tabIndexValue);\n }\n });\n };\n\n private toggleGroupedLinkWrapperHeight = (\n wrapper: HTMLElement,\n expanded: boolean\n ) => {\n if (wrapper) {\n if (expanded) {\n wrapper.setAttribute(\n \"style\",\n `--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`\n );\n this.setGroupedNavItemTabIndex(\"0\");\n } else {\n wrapper.setAttribute(\"style\", `--navigation-child-items-height: 0`);\n this.setGroupedNavItemTabIndex(\"-1\");\n }\n }\n };\n\n private toggleExpanded = () => {\n this.expanded = !this.expanded;\n const linkWrapper = this.el.shadowRoot.querySelector(\n \".grouped-links-wrapper\"\n ) as HTMLElement;\n\n this.toggleGroupedLinkWrapperHeight(linkWrapper, this.expanded);\n };\n\n private showDropdown() {\n if (!this.dropdownOpen) {\n this.toggleDropdown();\n }\n }\n\n private hideDropdown() {\n if (this.dropdownOpen) {\n this.toggleDropdown();\n }\n }\n\n private handleClick = (ev: MouseEvent) => {\n if (this.navigationType === \"top\" && ev.detail) {\n this.toggleDropdown();\n } else {\n this.toggleExpanded();\n }\n };\n\n private handleBlur = (ev: FocusEvent) => {\n const target = ev.relatedTarget as HTMLElement;\n if (!this.el.contains(target)) {\n this.hideDropdown();\n }\n };\n\n private handleTopNavKeydown = (ev: KeyboardEvent) => {\n if (!this.inTopNavSideMenu && ev.key === \"Escape\") {\n this.hideDropdown();\n this.el.blur();\n } else if (ev.key === \" \" || ev.key === \"Enter\") {\n this.toggleDropdown();\n }\n };\n\n private handleKeydown = (ev: KeyboardEvent) => {\n if (ev.key === \"Enter\" || ev.key === \"Space\") {\n switch (this.navigationType) {\n case \"top\":\n this.handleTopNavKeydown(ev as KeyboardEvent);\n break;\n case \"side\":\n this.toggleExpanded();\n ev.preventDefault();\n break;\n default:\n this.toggleExpanded();\n break;\n }\n }\n };\n\n private handleMouseLeave = (ev: MouseEvent) => {\n const target = ev.relatedTarget as HTMLElement;\n if (\n !this.el.contains(target) &&\n target !== this.dropdown &&\n document.activeElement !== this.el &&\n !this.el.contains(document.activeElement)\n ) {\n this.hideDropdown();\n }\n };\n\n private triggerShowDropdown = () => {\n this.showDropdown();\n };\n\n private renderDropdownGroupedLinks = (): HTMLDivElement => (\n <div\n class={{\n [\"navigation-group-dropdown\"]: !this.inTopNavSideMenu,\n [\"navigation-group-dropdown-side-menu\"]: this.inTopNavSideMenu,\n [\"selected\"]: this.dropdownOpen && !this.inTopNavSideMenu,\n }}\n onMouseLeave={!this.inTopNavSideMenu ? this.handleMouseLeave : null}\n ref={(el) => (this.dropdown = el)}\n >\n <nav\n class={{\n [\"navigation-group-dropdown-items\"]: !this.inTopNavSideMenu,\n }}\n >\n <ul>\n <slot></slot>\n </ul>\n </nav>\n </div>\n );\n\n private renderGroupedLinks = (): HTMLDivElement => (\n <ul class=\"grouped-links-wrapper\">\n <slot></slot>\n </ul>\n );\n\n /**\n * Gets the total height of navigation links to improve\n * smoothness of expand/collapse animations\n */\n private getNavigationChildItemsHeight = (): string => {\n const navigationItemLength =\n this.el.querySelectorAll(\"ic-navigation-item\").length || 0;\n const navigationItem = this.el.querySelector(\"ic-navigation-item\") || null;\n\n if (\n this.navigationType === \"side\" &&\n !!navigationItemLength &&\n navigationItem\n ) {\n return `${\n parseInt(getComputedStyle(navigationItem).height) * navigationItemLength\n }px`;\n }\n\n return \"auto\";\n };\n\n private setInitialGroupedLinksWrapperHeight = () => {\n const linkWrapper = this.el.shadowRoot.querySelector(\n \".grouped-links-wrapper\"\n ) as HTMLElement;\n\n if (linkWrapper && this.expanded) {\n linkWrapper.setAttribute(\n \"style\",\n `--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`\n );\n }\n };\n\n private renderNavigationItems = (): HTMLDivElement | null => {\n if (this.dropdownOpen || (this.inTopNavSideMenu && !this.expandable)) {\n return this.renderDropdownGroupedLinks();\n }\n\n if (this.navigationType !== \"top\") {\n return this.renderGroupedLinks();\n }\n\n return null;\n };\n\n componentWillLoad(): void {\n this.deviceSize = getCurrentDeviceSize();\n const navParentDetails = getNavItemParentDetails(this.el);\n this.navigationType = navParentDetails.navType;\n this.parentEl = navParentDetails.parent;\n if (this.deviceSize <= DEVICE_SIZES.L && this.navigationType === \"top\") {\n this.inTopNavSideMenu = true;\n }\n\n if (this.navigationType === \"side\") {\n this.parentEl.addEventListener(\n \"sideNavExpanded\",\n this.sideNavExpandHandler\n );\n } else if (this.navigationType === \"top\") {\n this.parentEl.addEventListener(\n \"topNavResized\",\n this.topNavResizedHandler\n );\n }\n }\n\n componentDidLoad(): void {\n /**\n * debounce is required as the incorrect height was retrieved instantly after\n * componentDidLoad is invoked.\n */\n setTimeout(\n () => this.setInitialGroupedLinksWrapperHeight(),\n this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS\n );\n }\n\n disconnectedCallback(): void {\n if (this.navigationType === \"side\") {\n this.parentEl.removeEventListener(\n \"sideNavExpanded\",\n this.sideNavExpandHandler\n );\n } else if (this.navigationType === \"top\") {\n this.parentEl.removeEventListener(\n \"topNavResized\",\n this.topNavResizedHandler\n );\n }\n }\n\n render() {\n const { label, dropdownOpen, inTopNavSideMenu, expandable } = this;\n\n const NavigationGroupElement =\n !inTopNavSideMenu || expandable ? \"button\" : \"div\";\n\n return (\n <Host\n class={{\n [\"in-side-menu\"]: inTopNavSideMenu,\n expanded: this.expanded,\n collapsed: !this.expanded,\n [\"navigation-group-side-nav\"]: this.navigationType === \"side\",\n }}\n role=\"listitem\"\n >\n <NavigationGroupElement\n tabindex={inTopNavSideMenu && !expandable ? \"-1\" : \"0\"}\n onMouseOver={\n !inTopNavSideMenu && this.navigationType === \"top\"\n ? this.triggerShowDropdown\n : null\n }\n onMouseLeave={this.navigationType === \"top\" && this.handleMouseLeave}\n onBlur={this.handleBlur}\n onClick={expandable ? this.handleClick : null}\n onKeyDown={this.handleKeydown}\n class={{\n [\"navigation-group\"]: true,\n [this.focusStyle]: !inTopNavSideMenu,\n [\"navigation-group-side-menu\"]: inTopNavSideMenu && !expandable,\n [\"navigation-group-side-menu-collapsed\"]:\n inTopNavSideMenu && expandable && !dropdownOpen,\n [\"navigation-group-side-menu-expanded\"]:\n inTopNavSideMenu && expandable && dropdownOpen,\n [\"selected\"]: dropdownOpen && !inTopNavSideMenu,\n }}\n ref={(el) => (this.groupEl = el)}\n aria-expanded={dropdownOpen || this.expanded ? \"true\" : \"false\"}\n aria-haspopup={\n !inTopNavSideMenu && this.navigationType === \"top\"\n ? \"true\"\n : \"false\"\n }\n >\n <ic-typography\n variant={this.navigationType === \"side\" ? \"caption\" : \"label\"}\n >\n {label}\n </ic-typography>\n {this.navigationType === \"side\" && expandable && (\n <div\n class={{\n \"chevron-toggle-icon-wrapper\": true,\n \"chevron-toggle-icon-closed\": this.expanded,\n }}\n innerHTML={chevronIcon}\n ></div>\n )}\n </NavigationGroupElement>\n {this.renderNavigationItems()}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"sources":["src/components/ic-navigation-group/ic-navigation-group.css?tag=ic-navigation-group&encapsulation=shadow","src/components/ic-navigation-group/ic-navigation-group.tsx"],"names":["icNavigationGroupCss","NavigationGroup","this","DYNAMIC_GROUPED_LINKS_HEIGHT_MS","sideNavExpandHandler","setTimeout","setInitialGroupedLinksWrapperHeight","topNavResizedHandler","ev","newSize","detail","size","deviceSize","inTopNavSideMenu","DEVICE_SIZES","L","setGroupedNavItemTabIndex","tabIndexValue","el","querySelectorAll","forEach","navigationItem","navItem","shadowRoot","querySelector","setAttribute","toggleGroupedLinkWrapperHeight","wrapper","expanded","getNavigationChildItemsHeight","toggleExpanded","linkWrapper","handleClick","navigationType","toggleDropdown","handleBlur","target","relatedTarget","contains","hideDropdown","handleTopNavKeydown","key","blur","handleKeydown","preventDefault","handleMouseLeave","dropdown","document","activeElement","triggerShowDropdown","showDropdown","renderDropdownGroupedLinks","h","class","[object Object]","dropdownOpen","onMouseLeave","ref","renderGroupedLinks","navigationItemLength","length","parseInt","getComputedStyle","height","renderNavigationItems","expandable","XL","getThemeForegroundColor","theme","focusStyle","mode","groupEl","focus","getCurrentDeviceSize","navParentDetails","getNavItemParentDetails","navType","parentEl","parent","addEventListener","removeEventListener","label","NavigationGroupElement","Host","collapsed","role","tabindex","onMouseOver","onBlur","onClick","onKeyDown","aria-expanded","aria-haspopup","variant","chevron-toggle-icon-wrapper","chevron-toggle-icon-closed","innerHTML","chevronIcon"],"mappings":"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","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: block;\n}\n\n:host(.in-side-menu) {\n border-bottom: 1px solid var(--ic-architectural-200);\n padding: var(--ic-space-md) 0;\n}\n\n:host .navigation-group {\n height: 100%;\n width: fit-content;\n color: var(--ic-theme-text);\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0 var(--ic-space-md);\n transition: var(--ic-easing-transition-slow);\n position: relative;\n background: none;\n border: none;\n}\n\n:host(.in-side-menu) .navigation-group {\n height: 40px;\n width: 100%;\n text-align: left;\n}\n\n:host(.in-side-menu) .navigation-group .ic-typography-label {\n width: 190px;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu {\n color: var(--ic-action-default);\n justify-content: flex-start;\n padding: 0 var(--ic-space-md) 0 var(--ic-space-md);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-collapsed,\n:host(.in-side-menu) .navigation-group-side-menu-expanded {\n color: var(--ic-action-default);\n justify-content: flex-start;\n padding-left: var(--ic-space-md);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded {\n margin-bottom: var(--ic-space-xs);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-collapsed::after,\n:host(.in-side-menu) .navigation-group-side-menu-expanded::after {\n border-style: solid;\n border-width: 0.125em 0.125em 0 0;\n content: \"\";\n display: inline-block;\n height: 0.45em;\n left: 0.75em;\n position: relative;\n top: -0.1em;\n transform: rotate(135deg);\n vertical-align: top;\n width: 0.45em;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded::after {\n top: 0.15em;\n transform: rotate(-45deg);\n}\n\n:host .navigation-group:hover,\n:host .navigation-group:active,\n:host .selected {\n background-color: var(--ic-architectural-20);\n color: var(--ic-color-primary-text);\n outline: none;\n cursor: pointer;\n}\n\n:host(:not(.in-side-menu)) .navigation-group:focus {\n box-shadow: var(--ic-border-focus);\n border-radius: var(--ic-border-radius);\n outline: var(--ic-hc-focus-outline);\n z-index: 1;\n transition: box-shadow var(--ic-easing-transition-fast);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu:hover,\n:host(.in-side-menu) .navigation-group-side-menu:active,\n:host(.in-side-menu) .navigation-group-side-menu:focus {\n background-color: var(--ic-architectural-20);\n color: var(--ic-action-default);\n cursor: auto;\n box-shadow: none;\n outline: none;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu:focus {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:hover:not(:focus),\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:hover:not(:focus) {\n background-color: var(--ic-action-dark-bg-hover);\n color: var(--ic-action-default);\n cursor: pointer;\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:active:not(:focus),\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:active:not(:focus) {\n background-color: var(--ic-action-dark-bg-active);\n color: var(--ic-action-default);\n}\n\n:host(.in-side-menu) .navigation-group-side-menu-expanded:focus,\n:host(.in-side-menu) .navigation-group-side-menu-collapsed:focus {\n color: var(--ic-action-default);\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n outline: var(--ic-hc-focus-outline);\n}\n\n:host .navigation-group-dropdown {\n background-color: var(--ic-architectural-20);\n border-bottom: 1px solid var(--ic-architectural-300);\n position: absolute;\n left: 0;\n right: 0;\n padding: var(--ic-space-xs) var(--ic-space-md);\n box-shadow: 0 6px 8px -6px rgba(0 0 0 / 20%);\n}\n\n:host .navigation-group-dropdown-items-list {\n list-style: none;\n display: flex;\n flex-flow: column wrap;\n align-content: flex-start;\n padding-left: var(--ic-space-md);\n max-height: 264px;\n}\n\n:host .chevron-toggle-icon-wrapper {\n display: flex;\n align-items: center;\n}\n\n:host .chevron-toggle-icon-wrapper svg {\n transform: rotate(90deg);\n}\n\n:host .chevron-toggle-icon-closed svg {\n transform: rotate(-90deg);\n}\n\n:host(.expanded) .grouped-links-wrapper {\n height: var(--navigation-child-items-height, auto);\n transition: var(--ic-easing-transition-slow);\n overflow: hidden;\n}\n\n:host(.collapsed) .grouped-links-wrapper {\n height: var(--navigation-child-items-height, 0);\n transition: var(--ic-easing-transition-slow);\n overflow: hidden;\n}\n\n:host(.navigation-group-side-nav) .navigation-group {\n height: var(--navigation-group-height);\n width: var(--navigation-group-width);\n justify-content: var(--navigation-group-justify-content);\n padding-right: var(--navigation-group-expand-toggle-padding);\n}\n\n:host(.navigation-group-side-nav) .navigation-group:hover,\n:host(.navigation-group-side-nav) .navigation-group:active,\n:host(.navigation-group-side-nav) .selected {\n background-color: var(--navigation-group-hover);\n color: var(--navigation-group-text-hover);\n}\n\n:host(.navigation-group-side-nav) .navigation-group:focus {\n box-shadow: var(--ic-border-focus-inset);\n border-radius: var(--ic-border-radius-inset);\n background: none;\n}\n\n:host(.navigation-group-side-nav) .ic-typography-caption {\n position: var(--navigation-group-title-position);\n left: var(--navigation-group-title-position-left);\n white-space: nowrap;\n}\n\n.menu-visibility-visible {\n visibility: visible;\n}\n\n.menu-visibility-hidden {\n visibility: hidden;\n}\n","import {\n Component,\n Element,\n Host,\n Prop,\n State,\n Listen,\n h,\n Method,\n} from \"@stencil/core\";\n\nimport {\n DEVICE_SIZES,\n getCurrentDeviceSize,\n getThemeForegroundColor,\n getNavItemParentDetails,\n} from \"../../utils/helpers\";\nimport { IcNavType, IcTheme } from \"../../utils/types\";\n\nimport chevronIcon from \"../../assets/chevron-icon.svg\";\n\n@Component({\n tag: \"ic-navigation-group\",\n styleUrl: \"ic-navigation-group.css\",\n shadow: true,\n})\nexport class NavigationGroup {\n @Element() el: HTMLIcNavigationGroupElement;\n\n /**\n * The label to display on the group.\n */\n @Prop() label: string;\n\n /**\n * If `true`, the group will be expandable in the side menu.\n */\n @Prop() expandable: boolean = false;\n\n @State() dropdownOpen: boolean = false;\n\n @State() inTopNavSideMenu: boolean = false;\n\n @State() deviceSize: number = DEVICE_SIZES.XL;\n\n @State() focusStyle = getThemeForegroundColor();\n\n @State() navigationType: IcNavType | \"\";\n\n @State() parentEl: HTMLElement;\n\n @State() expanded: boolean = true;\n\n private groupEl: HTMLElement;\n private dropdown: HTMLElement;\n private DYNAMIC_GROUPED_LINKS_HEIGHT_MS = 50;\n\n @Listen(\"childBlur\")\n childBlurHandler(): void {\n this.hideDropdown();\n }\n\n @Listen(\"navItemClicked\")\n navItemClickHandler(): void {\n this.hideDropdown();\n }\n\n @Listen(\"themeChange\", { target: \"document\" })\n themeChangeHandler(ev: CustomEvent): void {\n const theme: IcTheme = ev.detail;\n this.focusStyle = theme.mode;\n }\n\n /**\n * Sets focus on the nav item\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.groupEl) {\n this.groupEl.focus();\n }\n }\n\n private sideNavExpandHandler = (): void => {\n setTimeout(\n () => this.setInitialGroupedLinksWrapperHeight(),\n this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS\n );\n };\n\n private topNavResizedHandler = (ev: CustomEvent): void => {\n const newSize = ev.detail.size;\n if (newSize !== this.deviceSize) {\n this.deviceSize = newSize;\n this.inTopNavSideMenu = newSize <= DEVICE_SIZES.L;\n }\n };\n\n private toggleDropdown() {\n this.dropdownOpen = !this.dropdownOpen;\n }\n\n private setGroupedNavItemTabIndex = (tabIndexValue: string) => {\n this.el.querySelectorAll(\"ic-navigation-item\").forEach((navigationItem) => {\n const navItem =\n navigationItem.shadowRoot.querySelector(\"a\") ||\n navigationItem.querySelector(\"a\");\n if (navItem) {\n navItem.setAttribute(\"tabindex\", tabIndexValue);\n }\n });\n };\n\n private toggleGroupedLinkWrapperHeight = (\n wrapper: HTMLElement,\n expanded: boolean\n ) => {\n if (wrapper) {\n if (expanded) {\n wrapper.setAttribute(\n \"style\",\n `--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`\n );\n this.setGroupedNavItemTabIndex(\"0\");\n } else {\n wrapper.setAttribute(\"style\", `--navigation-child-items-height: 0`);\n this.setGroupedNavItemTabIndex(\"-1\");\n }\n }\n };\n\n private toggleExpanded = () => {\n this.expanded = !this.expanded;\n const linkWrapper = this.el.shadowRoot.querySelector(\n \".grouped-links-wrapper\"\n ) as HTMLElement;\n\n this.toggleGroupedLinkWrapperHeight(linkWrapper, this.expanded);\n };\n\n private showDropdown() {\n if (!this.dropdownOpen) {\n this.toggleDropdown();\n }\n }\n\n private hideDropdown() {\n if (this.dropdownOpen) {\n this.toggleDropdown();\n }\n }\n\n private handleClick = (ev: MouseEvent) => {\n if (this.navigationType === \"top\" && ev.detail) {\n this.toggleDropdown();\n } else {\n this.toggleExpanded();\n }\n };\n\n private handleBlur = (ev: FocusEvent) => {\n const target = ev.relatedTarget as HTMLElement;\n if (!this.el.contains(target)) {\n this.hideDropdown();\n }\n };\n\n private handleTopNavKeydown = (ev: KeyboardEvent) => {\n if (!this.inTopNavSideMenu && ev.key === \"Escape\") {\n this.hideDropdown();\n this.el.blur();\n } else if (ev.key === \" \" || ev.key === \"Enter\") {\n this.toggleDropdown();\n }\n };\n\n private handleKeydown = (ev: KeyboardEvent) => {\n if (ev.key === \"Enter\" || ev.key === \"Space\") {\n switch (this.navigationType) {\n case \"top\":\n this.handleTopNavKeydown(ev as KeyboardEvent);\n break;\n case \"side\":\n this.toggleExpanded();\n ev.preventDefault();\n break;\n default:\n this.toggleExpanded();\n break;\n }\n }\n };\n\n private handleMouseLeave = (ev: MouseEvent) => {\n const target = ev.relatedTarget as HTMLElement;\n if (\n !this.el.contains(target) &&\n target !== this.dropdown &&\n document.activeElement !== this.el &&\n !this.el.contains(document.activeElement)\n ) {\n this.hideDropdown();\n }\n };\n\n private triggerShowDropdown = () => {\n this.showDropdown();\n };\n\n private renderDropdownGroupedLinks = (): HTMLDivElement => (\n <div\n class={{\n [\"navigation-group-dropdown\"]: !this.inTopNavSideMenu,\n [\"navigation-group-dropdown-side-menu\"]: this.inTopNavSideMenu,\n [\"selected\"]: this.dropdownOpen && !this.inTopNavSideMenu,\n }}\n onMouseLeave={!this.inTopNavSideMenu ? this.handleMouseLeave : null}\n ref={(el) => (this.dropdown = el)}\n >\n <nav\n class={{\n [\"navigation-group-dropdown-items\"]: !this.inTopNavSideMenu,\n }}\n >\n <ul>\n <slot></slot>\n </ul>\n </nav>\n </div>\n );\n\n private renderGroupedLinks = (): HTMLDivElement => (\n <ul class=\"grouped-links-wrapper\">\n <slot></slot>\n </ul>\n );\n\n /**\n * Gets the total height of navigation links to improve\n * smoothness of expand/collapse animations\n */\n private getNavigationChildItemsHeight = (): string => {\n const navigationItemLength =\n this.el.querySelectorAll(\"ic-navigation-item\").length || 0;\n const navigationItem = this.el.querySelector(\"ic-navigation-item\") || null;\n\n if (\n this.navigationType === \"side\" &&\n !!navigationItemLength &&\n navigationItem\n ) {\n return `${\n parseInt(getComputedStyle(navigationItem).height) * navigationItemLength\n }px`;\n }\n\n return \"auto\";\n };\n\n private setInitialGroupedLinksWrapperHeight = () => {\n const linkWrapper = this.el.shadowRoot.querySelector(\n \".grouped-links-wrapper\"\n ) as HTMLElement;\n\n if (linkWrapper && this.expanded) {\n linkWrapper.setAttribute(\n \"style\",\n `--navigation-child-items-height: ${this.getNavigationChildItemsHeight()}`\n );\n }\n };\n\n private renderNavigationItems = (): HTMLDivElement | null => {\n if (this.dropdownOpen || (this.inTopNavSideMenu && !this.expandable)) {\n return this.renderDropdownGroupedLinks();\n }\n\n if (this.navigationType !== \"top\") {\n return this.renderGroupedLinks();\n }\n\n return null;\n };\n\n componentWillLoad(): void {\n this.deviceSize = getCurrentDeviceSize();\n const navParentDetails = getNavItemParentDetails(this.el);\n this.navigationType = navParentDetails.navType;\n this.parentEl = navParentDetails.parent;\n if (this.deviceSize <= DEVICE_SIZES.L && this.navigationType === \"top\") {\n this.inTopNavSideMenu = true;\n }\n\n if (this.navigationType === \"side\") {\n this.parentEl.addEventListener(\n \"sideNavExpanded\",\n this.sideNavExpandHandler\n );\n } else if (this.navigationType === \"top\") {\n this.parentEl.addEventListener(\n \"topNavResized\",\n this.topNavResizedHandler\n );\n }\n }\n\n componentDidLoad(): void {\n /**\n * debounce is required as the incorrect height was retrieved instantly after\n * componentDidLoad is invoked.\n */\n setTimeout(\n () => this.setInitialGroupedLinksWrapperHeight(),\n this.DYNAMIC_GROUPED_LINKS_HEIGHT_MS\n );\n }\n\n disconnectedCallback(): void {\n if (this.navigationType === \"side\") {\n this.parentEl.removeEventListener(\n \"sideNavExpanded\",\n this.sideNavExpandHandler\n );\n } else if (this.navigationType === \"top\") {\n this.parentEl.removeEventListener(\n \"topNavResized\",\n this.topNavResizedHandler\n );\n }\n }\n\n render() {\n const { label, dropdownOpen, inTopNavSideMenu, expandable } = this;\n\n const NavigationGroupElement =\n !inTopNavSideMenu || expandable ? \"button\" : \"div\";\n\n return (\n <Host\n class={{\n [\"in-side-menu\"]: inTopNavSideMenu,\n expanded: this.expanded,\n collapsed: !this.expanded,\n [\"navigation-group-side-nav\"]: this.navigationType === \"side\",\n }}\n role=\"listitem\"\n >\n <NavigationGroupElement\n tabindex={inTopNavSideMenu && !expandable ? \"-1\" : \"0\"}\n onMouseOver={\n !inTopNavSideMenu && this.navigationType === \"top\"\n ? this.triggerShowDropdown\n : null\n }\n onMouseLeave={this.navigationType === \"top\" && this.handleMouseLeave}\n onBlur={this.handleBlur}\n onClick={expandable ? this.handleClick : null}\n onKeyDown={this.handleKeydown}\n class={{\n [\"navigation-group\"]: true,\n [this.focusStyle]: !inTopNavSideMenu,\n [\"navigation-group-side-menu\"]: inTopNavSideMenu && !expandable,\n [\"navigation-group-side-menu-collapsed\"]:\n inTopNavSideMenu && expandable && !dropdownOpen,\n [\"navigation-group-side-menu-expanded\"]:\n inTopNavSideMenu && expandable && dropdownOpen,\n [\"selected\"]: dropdownOpen && !inTopNavSideMenu,\n }}\n ref={(el) => (this.groupEl = el)}\n aria-expanded={dropdownOpen || this.expanded ? \"true\" : \"false\"}\n aria-haspopup={\n !inTopNavSideMenu && this.navigationType === \"top\"\n ? \"true\"\n : \"false\"\n }\n >\n <ic-typography\n variant={this.navigationType === \"side\" ? \"caption\" : \"label\"}\n >\n {label}\n </ic-typography>\n {this.navigationType === \"side\" && expandable && (\n <div\n class={{\n \"chevron-toggle-icon-wrapper\": true,\n \"chevron-toggle-icon-closed\": this.expanded,\n }}\n innerHTML={chevronIcon}\n ></div>\n )}\n </NavigationGroupElement>\n {this.renderNavigationItems()}\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{r as t,c as i,h as s,H as e,g as a}from"./p-f9370be6.js";import{I as h}from"./p-6f57b13c.js";import{u as n,v as o,w as r,x as l,a as c,h as u,e as d}from"./p-23831891.js";const p=`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n <path d="M15.8327 5.34199L14.6577 4.16699L9.99935 8.82533L5.34102 4.16699L4.16602 5.34199L8.82435 10.0003L4.16602 14.6587L5.34102 15.8337L9.99935 11.1753L14.6577 15.8337L15.8327 14.6587L11.1743 10.0003L15.8327 5.34199Z" fill="currentColor"/>\n</svg>\n`;const b=`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">\n <path d="M13.1292 11.8792H12.4708L12.2375 11.6542C13.0542 10.7042 13.5458 9.47083 13.5458 8.12916C13.5458 5.13749 11.1208 2.71249 8.12916 2.71249C5.13749 2.71249 2.71249 5.13749 2.71249 8.12916C2.71249 11.1208 5.13749 13.5458 8.12916 13.5458C9.47083 13.5458 10.7042 13.0542 11.6542 12.2375L11.8792 12.4708V13.1292L16.0458 17.2875L17.2875 16.0458L13.1292 11.8792ZM8.12916 11.8792C6.05416 11.8792 4.37916 10.2042 4.37916 8.12916C4.37916 6.05416 6.05416 4.37916 8.12916 4.37916C10.2042 4.37916 11.8792 6.05416 11.8792 8.12916C11.8792 10.2042 10.2042 11.8792 8.12916 11.8792Z" fill="currentColor"/>\n</svg>`;const f='/*! 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(.search){--divider-height:24px}:host(.search.small){--divider-height:16px}:host(.fullwidth){width:100%}:host(.search) .disabled:hover{border-color:var(--ic-architectural-200)}:host(.search.disabled) .disabled svg{color:var(--ic-architectural-200)}:host(.search) .disabled svg{color:var(--ic-architectural-400)}.clear-button-container{align-items:center;margin-right:1px;display:none;visibility:hidden}.clear-button{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}.clear-button-visible{visibility:visible;display:flex}.search-submit-button-container{display:flex;align-items:center}.search-submit-button-disabled .ic-tooltip-container{display:none !important}.search-submit-button:focus{background-color:var(--ic-focus-blue) !important;box-shadow:inset 0 0 0 2px var(--ic-focus-glow) !important;border-radius:var(--ic-space-xxs);height:var(--ic-space-xl);margin-top:var(--ic-space-xxxs)}.search-submit-button:focus *{fill:white}.divider{width:1px;background-color:var(--ic-action-dark-active);height:var(--divider-height)}:host(.dark) .divider{background-color:var(--ic-architectural-200)}.menu-container{width:var(--input-width, 320px);position:relative;top:var(--ic-space-xxxs)}.menu-container.fullwidth{width:100%}ic-menu{transition:var(--ic-easing-transition-slow)}.no-results{cursor:not-allowed}.search-results-status{border:0;clip:rect(0, 0, 0, 0, 0);height:1px;margin-bottom:-1px;margin-right:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}';let m=0;const v=class{constructor(s){t(this,s);this.icInput=i(this,"icInput",7);this.icInputBlur=i(this,"icInputBlur",7);this.icInputFocus=i(this,"icInputFocus",7);this.icChange=i(this,"icChange",7);this.icClear=i(this,"icClear",7);this.icSubmitSearch=i(this,"icSubmitSearch",7);this.icOptionSelect=i(this,"icOptionSelect",7);this.icMenuChange=i(this,"icMenuChange",7);this.icClearBlur=i(this,"icClearBlur",7);this.icSubmitSearchBlur=i(this,"icSubmitSearchBlur",7);this.icSearchBarBlur=i(this,"icSearchBarBlur",7);this.icSearchBarFocus=i(this,"icSearchBarFocus",7);this.inputId=`ic-search-bar-input-${m++}`;this.menuId=`${this.inputId}-menu`;this.menuCloseFromMenuChangeEvent=false;this.truncateValue=false;this.assistiveHintEl=null;this.preventSubmit=false;this.handleSubmitSearch=()=>{this.highlightedValue&&(this.value=this.highlightedValue);this.highlightedValue=undefined;this.icSubmitSearch.emit({value:this.value});const t=this.el.closest("FORM");if(this.searchSubmitButton&&!!t&&!this.preventSubmit){n(t,this.searchSubmitButton)}};this.handleSubmitSearchKeyDown=t=>{if(t.key===" "){t.preventDefault();this.handleSubmitSearch()}};this.onInput=t=>{this.value=t.target.value;const i=[{label:this.emptyOptionListText,value:""}];if(this.options.length>0){this.setMenuChange(true);if(this.disableFilter===false){const t=o(this.options,false,this.value,"anywhere");this.filteredOptions=t.length>0?t:i}}else if(this.disableFilter){this.setMenuChange(true);this.filteredOptions=i}if(!this.showClearButton){this.handleShowClearButton(true)}this.debounceAriaLiveUpdate();this.icInput.emit({value:this.value})};this.onInputBlur=t=>{const i=t.target.value;const s=t.relatedTarget;this.icInputBlur.emit({value:i,relatedTarget:s})};this.onInputFocus=t=>{const i=t.target.value;this.icInputFocus.emit({value:i});this.handleShowClearButton(true)};this.handleClear=t=>{const i=t;const s=t;if(s.type==="click"||i.code==="Enter"||i.code==="Space"){this.value="";this.inputEl.value="";this.el.setFocus();this.icClear.emit();t.preventDefault();this.preventSubmit=true}};this.handleClearBlur=t=>{const i=t.relatedTarget;this.icClearBlur.emit({relatedTarget:i});this.clearButtonFocused=false};this.handleSubmitSearchBlur=t=>{const i=t.relatedTarget;this.icSubmitSearchBlur.emit({relatedTarget:i});this.searchSubmitFocused=false};this.handleSubmitSearchFocus=()=>{this.handleMenuCloseFromMenuChange(true);this.searchSubmitFocused=true};this.handleOptionSelect=t=>{if(t.detail.label===this.emptyOptionListText){this.el.setFocus();return}this.value=t.detail.value;this.icOptionSelect.emit({value:this.value})};this.handleMenuOptionHighlight=t=>{var i;const s=(i=t.detail.optionId)===null||i===void 0?void 0:i.replace(`${this.menuId}-`,"");s&&(this.highlightedValue=s)};this.handleMenuChange=t=>{this.setMenuChange(t.detail.open)};this.setMenuChange=t=>{if(this.open!==t){this.open=t;this.icMenuChange.emit({open:t})}};this.handleHostFocus=()=>{if(this.options&&this.value&&!this.menuCloseFromMenuChangeEvent){this.setMenuChange(true)}this.handleTruncateValue(false);this.icSearchBarFocus.emit()};this.handleHostBlur=t=>{const i=t.relatedTarget;if(this.open&&this.options&&i!==this.menu){this.setMenuChange(false)}this.handleShowClearButton(false);this.handleMenuCloseFromMenuChange(false);this.handleTruncateValue(true);this.icSearchBarBlur.emit({relatedTarget:i,value:this.value})};this.handleShowClearButton=t=>{this.showClearButton=t};this.handleFocusClearButton=()=>{this.clearButtonFocused=true};this.handleMenuCloseFromMenuChange=t=>{this.menuCloseFromMenuChangeEvent=t};this.handleTruncateValue=t=>{this.truncateValue=t};this.renderAssistiveHintEl=()=>{var t,i;const s=(i=(t=this.el.shadowRoot.querySelector("ic-text-field"))===null||t===void 0?void 0:t.shadowRoot)===null||i===void 0?void 0:i.querySelector(`#${this.inputId}`);if(s&&Object.keys(s).length>0&&this.hasOptionsOrFilterDisabled()){this.assistiveHintEl=document.createElement("span");this.assistiveHintEl.innerText=this.hintText;this.assistiveHintEl.id=`${this.inputId}-assistive-hint`;this.assistiveHintEl.style.display="none";if(s.after!==undefined){s.after(this.assistiveHintEl)}}};this.updateSearchResultAriaLive=()=>{const t=this.el.shadowRoot.querySelector(".search-results-status");if(!this.open||this.value===""||this.value.length<this.charactersUntilSuggestion){t.innerText=""}else if(this.hasOptionsOrFilterDisabled()&&this.filteredOptions.length>0&&this.open&&t){if(this.hadNoOptions()){t.innerText=this.emptyOptionListText}else{t.innerText=`${this.filteredOptions.length} result${this.filteredOptions.length>1?"s":""} available`}}};this.hasOptionsOrFilterDisabled=()=>this.options.length>0||this.disableFilter;this.hadNoOptions=()=>this.filteredOptions.length===1&&this.filteredOptions[0].label===this.emptyOptionListText;this.isSubmitDisabled=()=>{const t=this.value===undefined||this.value===null||this.value==="";return t||this.disabled||this.hadNoOptions()};this.highlightFirstOptionAfterNoResults=()=>{if(this.prevNoOption&&this.menu){this.menu.handleSetFirstOption();this.prevNoOption=false}const t=this.filteredOptions.find((t=>t.label===this.emptyOptionListText));if(t){this.prevNoOption=true}};this.label=undefined;this.required=false;this.disabled=false;this.readonly=false;this.placeholder="Search";this.fullWidth=false;this.disableFilter=false;this.hideLabel=false;this.helperText="";this.small=false;this.value="";this.autocapitalize="off";this.autocomplete="off";this.autocorrect="off";this.autofocus=false;this.debounce=0;this.name=this.inputId;this.spellcheck=false;this.options=[];this.focusOnLoad=false;this.hintText="When autocomplete results are available use the up and down arrows to choose and press enter to select";this.emptyOptionListText="No results found";this.charactersUntilSuggestion=2;this.open=false;this.filteredOptions=[];this.ariaActiveDescendant=undefined;this.showClearButton=false;this.clearButtonFocused=false;this.searchSubmitFocused=false;this.prevNoOption=false;this.highlightedValue=undefined}debounceChanged(){this.icChange=r(this.icChange,this.debounce)}watchOptionsHandler(t){if(this.disableFilter){this.filteredOptions=t}}watchValueHandler(t){if(this.inputEl&&this.options&&!!l(t,this.options)){this.inputEl.value=l(t,this.options)}else if(this.inputEl&&this.inputEl.value!==t){this.inputEl.value=t}this.icChange.emit({value:t})}async setFocus(){if(this.inputEl){this.inputEl.setFocus()}}handleKeyDown(t){const i=t.detail.event;if(this.menu&&this.open){this.menu.handleKeyboardOpen(i)}}handleKeyUp(t){if(t.key==="Enter"){if(this.preventSubmit||this.isSubmitDisabled()){return}this.handleSubmitSearch();this.setMenuChange(false)}if(t.key==="Escape"){this.setMenuChange(false)}if(this.preventSubmit){this.preventSubmit=false}}debounceAriaLiveUpdate(){clearTimeout(this.debounce);this.debounce=window.setTimeout((()=>{this.updateSearchResultAriaLive()}),500)}onMenuClose(t){if(!t.detail.open){this.handleMenuCloseFromMenuChange(true);if(t.detail.focusInput===undefined||t.detail.focusInput){this.el.setFocus()}}}onMenuOptionHighlighted(t){if(t.detail.optionId){this.ariaActiveDescendant=t.detail.optionId}else{this.ariaActiveDescendant=undefined}}connectedCallback(){this.debounceChanged()}componentWillRender(){this.highlightFirstOptionAfterNoResults()}componentWillLoad(){this.watchValueHandler(this.value)}componentDidLoad(){if(this.focusOnLoad){this.el.setFocus()}if(this.hasOptionsOrFilterDisabled()){this.renderAssistiveHintEl();if(this.disableFilter){this.filteredOptions=this.options}}c([{prop:this.label,propName:"label"}],"Search Bar");this.anchorEl=this.inputEl.shadowRoot.querySelector("ic-input-component-container")}disconnectedCallback(){if(this.assistiveHintEl){this.assistiveHintEl.remove()}}render(){const{inputId:t,name:i,label:a,required:n,small:o,placeholder:r,helperText:c,disabled:f,value:m,readonly:v,spellcheck:g,fullWidth:w,options:x,open:y,hideLabel:k,menuId:L,ariaActiveDescendant:z,truncateValue:C,autofocus:B,autocapitalize:S,autocomplete:I,filteredOptions:M}=this;const T=v||f?true:false;const F=u(t,c!=="",false).trim();let O;if(F!==""&&this.hasOptionsOrFilterDisabled()){O=`${F} ${this.inputId}-assistive-hint`}else if(this.hasOptionsOrFilterDisabled()){O=`${this.inputId}-assistive-hint`}else if(F!==""){O=F}else{O=undefined}const $=T&&!v;const H=m&&this.hasOptionsOrFilterDisabled();const E=H&&y&&M.length>0;let j;if(x.length>0){if(E){j="true"}else{j="false"}}else{j=undefined}d(true,this.el,i,m,T);return s(e,{class:{["search"]:true,["fullwidth"]:w,["disabled"]:f,["small"]:o},onFocus:this.handleHostFocus,onBlur:this.handleHostBlur},s("ic-text-field",{ref:t=>this.inputEl=t,inputId:t,label:a,helperText:c,required:n,disabled:$,readonly:v,small:o,hideLabel:k,fullWidth:w,name:i,truncateValue:C,value:x&&!!l(m,x)?l(m,x):m,placeholder:r,onInput:this.onInput,onBlur:this.onInputBlur,onFocus:this.onInputFocus,"aria-label":k?a:"","aria-describedby":O,"aria-owns":H?L:undefined,"aria-haspopup":x.length>0?"listbox":undefined,ariaExpanded:j,ariaActiveDescendant:z,"aria-autocomplete":H?"list":undefined,role:H?"combobox":undefined,autocomplete:I,autocapitalize:S,autoFocus:B,spellcheck:g,inputmode:"search"},s("div",{class:{"clear-button-container":true,"clear-button-visible":m&&!T&&this.showClearButton},slot:"clear-button"},s("ic-button",{id:"clear-button",class:"clear-button","aria-label":"Clear",innerHTML:p,onClick:this.handleClear,size:o?"small":"default",onFocus:this.handleFocusClearButton,onBlur:this.handleClearBlur,onKeyDown:this.handleClear,type:"submit",variant:"icon",appearance:this.clearButtonFocused?h.Light:h.Dark}),s("div",{class:"divider"})),s("div",{class:{"search-submit-button-container":true,"search-submit-button-disabled":this.isSubmitDisabled()},slot:"search-submit-button"},s("ic-button",{id:"search-submit-button","aria-label":"Search",ref:t=>this.searchSubmitButton=t,class:{["search-submit-button"]:true,["search-submit-button-small"]:!!o},disabled:this.isSubmitDisabled(),innerHTML:b,size:o?"small":"default",onClick:this.handleSubmitSearch,onBlur:this.handleSubmitSearchBlur,onFocus:this.handleSubmitSearchFocus,onKeyDown:this.handleSubmitSearchKeyDown,type:"submit",variant:"icon",appearance:this.searchSubmitFocused?h.Light:h.Default})),s("div",{class:{"menu-container":true,fullwidth:w},slot:"menu"},E&&m.length>=this.charactersUntilSuggestion&&s("ic-menu",{class:{"no-results":this.hadNoOptions()},activationType:"manual",anchorEl:this.anchorEl,autoFocusOnSelected:false,inputEl:this.inputEl,inputLabel:a,ref:t=>this.menu=t,small:o,fullWidth:w,menuId:L,open:true,options:M,onIcOptionSelect:this.handleOptionSelect,onIcMenuStateChange:this.handleMenuChange,onMenuOptionId:this.handleMenuOptionHighlight,parentEl:this.el,value:m}))),s("div",{"aria-live":"polite",role:"status",class:"search-results-status"}))}get el(){return a(this)}static get watchers(){return{debounce:["debounceChanged"],options:["watchOptionsHandler"],value:["watchValueHandler"]}}};v.style=f;export{v as ic_search_bar};
2
+ //# sourceMappingURL=p-fa7bc907.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/ic-search-bar/ic-search-bar.css?tag=ic-search-bar&encapsulation=shadow","src/components/ic-search-bar/ic-search-bar.tsx"],"names":["icSearchBarCss","inputIds","SearchBar","this","inputId","menuId","menuCloseFromMenuChangeEvent","truncateValue","assistiveHintEl","preventSubmit","handleSubmitSearch","highlightedValue","value","undefined","icSubmitSearch","emit","form","el","closest","searchSubmitButton","handleHiddenFormButtonClick","handleSubmitSearchKeyDown","ev","key","preventDefault","onInput","target","noOptions","label","emptyOptionListText","options","length","setMenuChange","disableFilter","rawFilteredOptions","getFilteredMenuOptions","filteredOptions","showClearButton","handleShowClearButton","debounceAriaLiveUpdate","icInput","onInputBlur","nextFocus","relatedTarget","icInputBlur","onInputFocus","icInputFocus","handleClear","keyboardEvent","mouseEvent","type","code","inputEl","setFocus","icClear","handleClearBlur","icClearBlur","clearButtonFocused","handleSubmitSearchBlur","icSubmitSearchBlur","searchSubmitFocused","handleSubmitSearchFocus","handleMenuCloseFromMenuChange","handleOptionSelect","detail","icOptionSelect","handleMenuOptionHighlight","optionValue","_a","optionId","replace","handleMenuChange","open","icMenuChange","handleHostFocus","handleTruncateValue","icSearchBarFocus","handleHostBlur","menu","icSearchBarBlur","visible","handleFocusClearButton","fromEvent","truncate","renderAssistiveHintEl","input","_b","shadowRoot","querySelector","Object","keys","hasOptionsOrFilterDisabled","document","createElement","innerText","hintText","id","style","display","after","updateSearchResultAriaLive","searchResultsStatusEl","charactersUntilSuggestion","hadNoOptions","isSubmitDisabled","valueNotSet","disabled","highlightFirstOptionAfterNoResults","prevNoOption","handleSetFirstOption","prevNoOptionsList","find","filteredOption","[object Object]","icChange","debounceEvent","debounce","newOptions","newValue","getLabelFromValue","keyEv","event","handleKeyboardOpen","clearTimeout","window","setTimeout","focusInput","ariaActiveDescendant","debounceChanged","watchValueHandler","focusOnLoad","onComponentRequiredPropUndefined","prop","propName","anchorEl","remove","name","required","small","placeholder","helperText","readonly","spellcheck","fullWidth","hideLabel","autofocus","autocapitalize","autocomplete","disabledMode","describedBy","getInputDescribedByText","trim","describedById","disabledText","hasSuggestedSearch","menuOpen","expanded","renderHiddenInput","h","Host","class","onFocus","onBlur","ref","aria-label","aria-describedby","aria-owns","aria-haspopup","ariaExpanded","aria-autocomplete","role","autoFocus","inputmode","clear-button-container","clear-button-visible","slot","innerHTML","clearIcon","onClick","size","onKeyDown","variant","appearance","IcThemeForegroundEnum","Light","Dark","search-submit-button-container","search-submit-button-disabled","searchIcon","Default","menu-container","fullwidth","no-results","activationType","autoFocusOnSelected","inputLabel","onIcOptionSelect","onIcMenuStateChange","onMenuOptionId","parentEl","aria-live"],"mappings":"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","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host(.search) {\n --divider-height: 24px;\n}\n\n:host(.search.small) {\n --divider-height: 16px;\n}\n\n:host(.fullwidth) {\n width: 100%;\n}\n\n:host(.search) .disabled:hover {\n border-color: var(--ic-architectural-200);\n}\n\n:host(.search.disabled) .disabled svg {\n color: var(--ic-architectural-200);\n}\n\n:host(.search) .disabled svg {\n color: var(--ic-architectural-400);\n}\n\n/* CLEAR */\n\n.clear-button-container {\n align-items: center;\n margin-right: 1px;\n display: none;\n visibility: hidden;\n}\n\n.clear-button {\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.clear-button-visible {\n visibility: visible;\n display: flex;\n}\n\n.search-submit-button-container {\n display: flex;\n align-items: center;\n}\n\n.search-submit-button-disabled .ic-tooltip-container {\n display: none !important;\n}\n\n.search-submit-button:focus {\n background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 2px var(--ic-focus-glow) !important;\n border-radius: var(--ic-space-xxs);\n height: var(--ic-space-xl);\n margin-top: var(--ic-space-xxxs);\n}\n\n.search-submit-button:focus * {\n fill: white;\n}\n\n.divider {\n width: 1px;\n background-color: var(--ic-action-dark-active);\n height: var(--divider-height);\n}\n\n:host(.dark) .divider {\n background-color: var(--ic-architectural-200);\n}\n\n.menu-container {\n width: var(--input-width, 320px);\n position: relative;\n top: var(--ic-space-xxxs);\n}\n\n.menu-container.fullwidth {\n width: 100%;\n}\n\nic-menu {\n transition: var(--ic-easing-transition-slow);\n}\n\n.no-results {\n cursor: not-allowed;\n}\n\n.search-results-status {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: 1px;\n margin-bottom: -1px;\n margin-right: -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 Listen,\n Prop,\n State,\n Watch,\n Method,\n h,\n} from \"@stencil/core\";\n\nimport {\n IcAutocompleteTypes,\n IcAutocorrectStates,\n IcThemeForegroundEnum,\n IcMenuOption,\n} from \"../../utils/types\";\nimport {\n debounceEvent,\n getInputDescribedByText,\n renderHiddenInput,\n handleHiddenFormButtonClick,\n getLabelFromValue,\n onComponentRequiredPropUndefined,\n getFilteredMenuOptions,\n} from \"../../utils/helpers\";\nimport { IcSearchBarBlurEventDetail } from \"./ic-search-bar.types\";\nimport { IcValueEventDetail, IcBlurEventDetail } from \"../../interface\";\nimport {\n IcMenuChangeEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\n\nimport clearIcon from \"../../assets/clear-icon.svg\";\nimport searchIcon from \"../../assets/search-icon.svg\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-search-bar\",\n styleUrl: \"ic-search-bar.css\",\n shadow: true,\n})\nexport class SearchBar {\n @Element() el: HTMLIcSearchBarElement;\n\n private inputId = `ic-search-bar-input-${inputIds++}`;\n private inputEl: HTMLIcTextFieldElement;\n\n private menuId = `${this.inputId}-menu`;\n private searchSubmitButton: HTMLIcButtonElement;\n private menu: HTMLIcMenuElement;\n private menuCloseFromMenuChangeEvent: boolean = false;\n\n private anchorEl: HTMLElement;\n private truncateValue = false;\n\n private assistiveHintEl: HTMLSpanElement = null;\n private preventSubmit: boolean = false;\n\n /**\n * The label for the search bar.\n */\n @Prop() label!: string;\n\n /**\n * If `true`, the search bar will require a value.\n */\n @Prop() required?: boolean = false;\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * The placeholder value to display.\n */\n @Prop() placeholder?: string = \"Search\";\n\n /**\n * Specify whether the search bar fills the full width of the container.\n * If `true`, this overrides the --input-width CSS variable.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * Specify whether to disable the built in filtering. For example, if options will already be filtered from external source.\n * If `true`, all options provided will be displayed.\n */\n @Prop() disableFilter?: boolean = false;\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * If `true`, the small styling will be applied to the search bar.\n */\n @Prop() small?: boolean = false;\n\n /**\n * The value of the search input.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n\n /**\n * The automatic capitalisation of the text value as it is entered/edited by the user.\n * Available options: \"off\", \"none\", \"on\", \"sentences\", \"words\", \"characters\".\n */\n @Prop() autocapitalize = \"off\";\n\n /**\n * The state of autocompletion the browser can apply on the text value.\n */\n @Prop() autocomplete?: IcAutocompleteTypes = \"off\";\n\n /**\n * The state of autocorrection the browser can apply when the user is entering/editing the text value.\n */\n @Prop() autocorrect?: IcAutocorrectStates = \"off\";\n\n /**\n * If `true`, the form control will have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop({ mutable: true }) debounce?: number = 0;\n\n @Watch(\"debounce\")\n private debounceChanged() {\n this.icChange = debounceEvent(this.icChange, this.debounce);\n }\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 * If `true`, the value of the search will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n /**\n * The suggested search options.\n */\n @Prop() options?: IcMenuOption[] = [];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n if (this.disableFilter) {\n this.filteredOptions = newOptions;\n }\n }\n\n /**\n * If `true`, the search bar will be focused when component loaded.\n */\n @Prop() focusOnLoad?: boolean = false;\n\n /**\n * The hint text for the hidden assistive description element.\n */\n @Prop() hintText?: string =\n \"When autocomplete results are available use the up and down arrows to choose and press enter to select\";\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * The number of characters until suggestions appear.\n */\n @Prop() charactersUntilSuggestion: number = 2;\n\n @Watch(\"value\")\n watchValueHandler(newValue: string): void {\n if (\n this.inputEl &&\n this.options &&\n !!getLabelFromValue(newValue, this.options)\n ) {\n this.inputEl.value = getLabelFromValue(newValue, this.options);\n } else if (this.inputEl && this.inputEl.value !== newValue) {\n this.inputEl.value = newValue;\n }\n\n this.icChange.emit({ value: newValue });\n }\n\n /**\n * Sets focus on the native `input`\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.inputEl) {\n this.inputEl.setFocus();\n }\n }\n\n @Listen(\"icKeydown\", {})\n handleKeyDown(ev: CustomEvent): void {\n const keyEv: KeyboardEvent = ev.detail.event;\n if (this.menu && this.open) {\n this.menu.handleKeyboardOpen(keyEv);\n }\n }\n\n @Listen(\"keyup\", {})\n handleKeyUp(ev: KeyboardEvent): void {\n if (ev.key === \"Enter\") {\n if (this.preventSubmit || this.isSubmitDisabled()) {\n return;\n }\n\n this.handleSubmitSearch();\n this.setMenuChange(false);\n }\n\n if (ev.key === \"Escape\") {\n this.setMenuChange(false);\n }\n\n if (this.preventSubmit) {\n this.preventSubmit = false;\n }\n }\n\n private handleSubmitSearch = () => {\n this.highlightedValue && (this.value = this.highlightedValue);\n this.highlightedValue = undefined;\n this.icSubmitSearch.emit({ value: this.value });\n\n const form: HTMLFormElement = this.el.closest(\"FORM\");\n\n if (this.searchSubmitButton && !!form && !this.preventSubmit) {\n handleHiddenFormButtonClick(form, this.searchSubmitButton);\n }\n };\n\n private handleSubmitSearchKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === \" \") {\n ev.preventDefault();\n this.handleSubmitSearch();\n }\n };\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n private onInput = (ev: Event) => {\n this.value = (ev.target as HTMLInputElement).value;\n\n const noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n\n if (this.options.length > 0) {\n this.setMenuChange(true);\n\n if (this.disableFilter === false) {\n const rawFilteredOptions = getFilteredMenuOptions(\n this.options,\n false,\n this.value,\n \"anywhere\"\n );\n\n this.filteredOptions =\n rawFilteredOptions.length > 0 ? rawFilteredOptions : noOptions;\n }\n } else if (this.disableFilter) {\n this.setMenuChange(true);\n this.filteredOptions = noOptions;\n }\n\n if (!this.showClearButton) {\n this.handleShowClearButton(true);\n }\n\n this.debounceAriaLiveUpdate();\n\n this.icInput.emit({ value: this.value });\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounce);\n\n this.debounce = window.setTimeout(() => {\n this.updateSearchResultAriaLive();\n }, 500);\n }\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarBlur instead.\n */\n @Event() icInputBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n private onInputBlur = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icInputBlur.emit({ value: value, relatedTarget: nextFocus });\n };\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarFocus instead.\n */\n @Event() icInputFocus: EventEmitter<IcValueEventDetail>;\n private onInputFocus = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n this.icInputFocus.emit({ value: value });\n\n this.handleShowClearButton(true);\n };\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when value is cleared with clear button\n */\n @Event() icClear: EventEmitter<void>;\n private handleClear = (ev: Event) => {\n const keyboardEvent = ev as KeyboardEvent;\n const mouseEvent = ev as MouseEvent;\n\n if (\n mouseEvent.type === \"click\" ||\n keyboardEvent.code === \"Enter\" ||\n keyboardEvent.code === \"Space\"\n ) {\n this.value = \"\";\n this.inputEl.value = \"\";\n this.el.setFocus();\n\n this.icClear.emit();\n ev.preventDefault();\n\n this.preventSubmit = true;\n }\n };\n\n /**\n * Emitted when the search value has been submitted\n */\n @Event() icSubmitSearch: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when option is highlighted within the menu\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the state of the menu changes (i.e. open or close)\n */\n @Event() icMenuChange: EventEmitter<IcMenuChangeEventDetail>;\n /**\n * @internal - Emitted when blur is invoked from clear button\n */\n @Event() icClearBlur: EventEmitter<IcBlurEventDetail>;\n private handleClearBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icClearBlur.emit({ relatedTarget: nextFocus });\n\n this.clearButtonFocused = false;\n };\n\n /**\n * @internal - Emitted when blur is invoked from search submit button\n */\n @Event() icSubmitSearchBlur: EventEmitter<IcBlurEventDetail>;\n private handleSubmitSearchBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icSubmitSearchBlur.emit({ relatedTarget: nextFocus });\n\n this.searchSubmitFocused = false;\n };\n\n private handleSubmitSearchFocus = () => {\n this.handleMenuCloseFromMenuChange(true);\n this.searchSubmitFocused = true;\n };\n\n /**\n * Emitted when blur is invoked from ic-search-bar\n */\n @Event() icSearchBarBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n\n /**\n * Emitted when focus is invoked from ic-search-bar\n */\n @Event() icSearchBarFocus: EventEmitter<void>;\n\n @State() open: boolean = false;\n @State() filteredOptions: IcMenuOption[] = [];\n @State() ariaActiveDescendant: string;\n @State() showClearButton: boolean = false;\n @State() clearButtonFocused: boolean = false;\n @State() searchSubmitFocused: boolean = false;\n @State() prevNoOption: boolean = false;\n @State() highlightedValue: string;\n\n private handleOptionSelect = (ev: CustomEvent) => {\n if (ev.detail.label === this.emptyOptionListText) {\n this.el.setFocus();\n return;\n }\n\n this.value = ev.detail.value;\n this.icOptionSelect.emit({ value: this.value });\n };\n\n private handleMenuOptionHighlight = (ev: CustomEvent) => {\n const optionValue = ev.detail.optionId?.replace(`${this.menuId}-`, \"\");\n optionValue && (this.highlightedValue = optionValue);\n };\n\n private handleMenuChange = (ev: CustomEvent) => {\n this.setMenuChange(ev.detail.open);\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n this.icMenuChange.emit({ open });\n }\n };\n\n private handleHostFocus = () => {\n if (this.options && this.value && !this.menuCloseFromMenuChangeEvent) {\n this.setMenuChange(true);\n }\n this.handleTruncateValue(false);\n\n this.icSearchBarFocus.emit();\n };\n\n private handleHostBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n if (this.open && this.options && nextFocus !== this.menu) {\n this.setMenuChange(false);\n }\n\n this.handleShowClearButton(false);\n this.handleMenuCloseFromMenuChange(false);\n this.handleTruncateValue(true);\n this.icSearchBarBlur.emit({ relatedTarget: nextFocus, value: this.value });\n };\n\n @Listen(\"icMenuStateChange\", {})\n onMenuClose(ev: CustomEvent): void {\n if (!ev.detail.open) {\n this.handleMenuCloseFromMenuChange(true);\n if (ev.detail.focusInput === undefined || ev.detail.focusInput) {\n this.el.setFocus();\n }\n }\n }\n\n @Listen(\"menuOptionId\")\n onMenuOptionHighlighted(ev: CustomEvent): void {\n if (ev.detail.optionId) {\n this.ariaActiveDescendant = ev.detail.optionId;\n } else {\n this.ariaActiveDescendant = undefined;\n }\n }\n\n private handleShowClearButton = (visible: boolean): void => {\n this.showClearButton = visible;\n };\n\n private handleFocusClearButton = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleMenuCloseFromMenuChange = (fromEvent: boolean): void => {\n this.menuCloseFromMenuChangeEvent = fromEvent;\n };\n\n private handleTruncateValue = (truncate: boolean): void => {\n this.truncateValue = truncate;\n };\n\n private renderAssistiveHintEl = (): void => {\n const input = this.el.shadowRoot\n .querySelector(\"ic-text-field\")\n ?.shadowRoot?.querySelector(`#${this.inputId}`);\n\n if (\n input &&\n Object.keys(input).length > 0 &&\n this.hasOptionsOrFilterDisabled()\n ) {\n this.assistiveHintEl = document.createElement(\"span\");\n this.assistiveHintEl.innerText = this.hintText;\n this.assistiveHintEl.id = `${this.inputId}-assistive-hint`;\n this.assistiveHintEl.style.display = \"none\";\n if (input.after !== undefined) {\n input.after(this.assistiveHintEl);\n }\n }\n };\n\n private updateSearchResultAriaLive = (): void => {\n const searchResultsStatusEl = this.el.shadowRoot.querySelector(\n \".search-results-status\"\n ) as HTMLParagraphElement;\n\n if (\n !this.open ||\n this.value === \"\" ||\n this.value.length < this.charactersUntilSuggestion\n ) {\n searchResultsStatusEl.innerText = \"\";\n } else if (\n this.hasOptionsOrFilterDisabled() &&\n this.filteredOptions.length > 0 &&\n this.open &&\n searchResultsStatusEl\n ) {\n if (this.hadNoOptions()) {\n searchResultsStatusEl.innerText = this.emptyOptionListText;\n } else {\n searchResultsStatusEl.innerText = `${\n this.filteredOptions.length\n } result${this.filteredOptions.length > 1 ? \"s\" : \"\"} available`;\n }\n }\n };\n\n private hasOptionsOrFilterDisabled = (): boolean =>\n this.options.length > 0 || this.disableFilter;\n\n private hadNoOptions = (): boolean =>\n this.filteredOptions.length === 1 &&\n this.filteredOptions[0].label === this.emptyOptionListText;\n\n private isSubmitDisabled = (): boolean => {\n const valueNotSet =\n this.value === undefined || this.value === null || this.value === \"\";\n return valueNotSet || this.disabled || this.hadNoOptions();\n };\n\n private highlightFirstOptionAfterNoResults = () => {\n if (this.prevNoOption && this.menu) {\n this.menu.handleSetFirstOption();\n this.prevNoOption = false;\n }\n const prevNoOptionsList = this.filteredOptions.find(\n (filteredOption) => filteredOption.label === this.emptyOptionListText\n );\n if (prevNoOptionsList) {\n this.prevNoOption = true;\n }\n };\n\n connectedCallback(): void {\n this.debounceChanged();\n }\n\n componentWillRender(): void {\n this.highlightFirstOptionAfterNoResults();\n }\n\n componentWillLoad(): void {\n this.watchValueHandler(this.value);\n }\n\n componentDidLoad(): void {\n if (this.focusOnLoad) {\n this.el.setFocus();\n }\n\n if (this.hasOptionsOrFilterDisabled()) {\n this.renderAssistiveHintEl();\n if (this.disableFilter) {\n this.filteredOptions = this.options;\n }\n }\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Search Bar\"\n );\n\n this.anchorEl = this.inputEl.shadowRoot.querySelector(\n \"ic-input-component-container\"\n );\n }\n\n disconnectedCallback(): void {\n if (this.assistiveHintEl) {\n this.assistiveHintEl.remove();\n }\n }\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n small,\n placeholder,\n helperText,\n disabled,\n value,\n readonly,\n spellcheck,\n fullWidth,\n options,\n open,\n hideLabel,\n menuId,\n ariaActiveDescendant,\n truncateValue,\n autofocus,\n autocapitalize,\n autocomplete,\n filteredOptions,\n } = this;\n\n const disabledMode = readonly || disabled ? true : false;\n\n const describedBy = getInputDescribedByText(\n inputId,\n helperText !== \"\",\n false\n ).trim();\n\n let describedById;\n\n if (describedBy !== \"\" && this.hasOptionsOrFilterDisabled()) {\n describedById = `${describedBy} ${this.inputId}-assistive-hint`;\n } else if (this.hasOptionsOrFilterDisabled()) {\n describedById = `${this.inputId}-assistive-hint`;\n } else if (describedBy !== \"\") {\n describedById = describedBy;\n } else {\n describedById = undefined;\n }\n\n const disabledText = disabledMode && !readonly;\n const hasSuggestedSearch = value && this.hasOptionsOrFilterDisabled();\n const menuOpen = hasSuggestedSearch && open && filteredOptions.length > 0;\n\n let expanded;\n\n if (options.length > 0) {\n if (menuOpen) {\n expanded = \"true\";\n } else {\n expanded = \"false\";\n }\n } else {\n expanded = undefined;\n }\n\n renderHiddenInput(true, this.el, name, value, disabledMode);\n\n return (\n <Host\n class={{\n [\"search\"]: true,\n [\"fullwidth\"]: fullWidth,\n [\"disabled\"]: disabled,\n [\"small\"]: small,\n }}\n onFocus={this.handleHostFocus}\n onBlur={this.handleHostBlur}\n >\n <ic-text-field\n ref={(el) => (this.inputEl = el)}\n inputId={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabledText}\n readonly={readonly}\n small={small}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n name={name}\n truncateValue={truncateValue}\n value={\n options && !!getLabelFromValue(value, options)\n ? getLabelFromValue(value, options)\n : value\n }\n placeholder={placeholder}\n onInput={this.onInput}\n onBlur={this.onInputBlur}\n onFocus={this.onInputFocus}\n aria-label={hideLabel ? label : \"\"}\n aria-describedby={describedById}\n aria-owns={hasSuggestedSearch ? menuId : undefined}\n aria-haspopup={options.length > 0 ? \"listbox\" : undefined}\n ariaExpanded={expanded}\n ariaActiveDescendant={ariaActiveDescendant}\n aria-autocomplete={hasSuggestedSearch ? \"list\" : undefined}\n role={hasSuggestedSearch ? \"combobox\" : undefined}\n autocomplete={autocomplete}\n autocapitalize={autocapitalize}\n autoFocus={autofocus}\n spellcheck={spellcheck}\n inputmode=\"search\"\n >\n <div\n class={{\n \"clear-button-container\": true,\n \"clear-button-visible\":\n value && !disabledMode && this.showClearButton,\n }}\n slot=\"clear-button\"\n >\n <ic-button\n id=\"clear-button\"\n class=\"clear-button\"\n aria-label=\"Clear\"\n innerHTML={clearIcon}\n onClick={this.handleClear}\n size={small ? \"small\" : \"default\"}\n onFocus={this.handleFocusClearButton}\n onBlur={this.handleClearBlur}\n onKeyDown={this.handleClear}\n type=\"submit\"\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 <div\n class={{\n \"search-submit-button-container\": true,\n \"search-submit-button-disabled\": this.isSubmitDisabled(),\n }}\n slot=\"search-submit-button\"\n >\n <ic-button\n id=\"search-submit-button\"\n aria-label=\"Search\"\n ref={(el) => (this.searchSubmitButton = el)}\n class={{\n [\"search-submit-button\"]: true,\n [\"search-submit-button-small\"]: !!small,\n }}\n disabled={this.isSubmitDisabled()}\n innerHTML={searchIcon}\n size={small ? \"small\" : \"default\"}\n onClick={this.handleSubmitSearch}\n onBlur={this.handleSubmitSearchBlur}\n onFocus={this.handleSubmitSearchFocus}\n onKeyDown={this.handleSubmitSearchKeyDown}\n type=\"submit\"\n variant=\"icon\"\n appearance={\n this.searchSubmitFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Default\n }\n ></ic-button>\n </div>\n <div\n class={{\n \"menu-container\": true,\n fullwidth: fullWidth,\n }}\n slot=\"menu\"\n >\n {menuOpen && value.length >= this.charactersUntilSuggestion && (\n <ic-menu\n class={{\n \"no-results\": this.hadNoOptions(),\n }}\n activationType=\"manual\"\n anchorEl={this.anchorEl}\n autoFocusOnSelected={false}\n inputEl={this.inputEl}\n inputLabel={label}\n ref={(el) => (this.menu = el)}\n small={small}\n fullWidth={fullWidth}\n menuId={menuId}\n open={true}\n options={filteredOptions}\n onIcOptionSelect={this.handleOptionSelect}\n onIcMenuStateChange={this.handleMenuChange}\n onMenuOptionId={this.handleMenuOptionHighlight}\n parentEl={this.el}\n value={value}\n ></ic-menu>\n )}\n </div>\n </ic-text-field>\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"search-results-status\"\n ></div>\n </Host>\n );\n }\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import{r as i,c as e,h as t,g as o}from"./p-f9370be6.js";import{a,i as s}from"./p-23831891.js";import"./p-6f57b13c.js";const n=`<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">\n<path d="M10 0C4.47 0 0 4.47 0 10C0 15.53 4.47 20 10 20C15.53 20 20 15.53 20 10C20 4.47 15.53 0 10 0ZM15 13.59L13.59 15L10 11.41L6.41 15L5 13.59L8.59 10L5 6.41L6.41 5L10 8.59L13.59 5L15 6.41L11.41 10L15 13.59Z" fill="currentColor"/>\n</svg>\n`;const r='/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button}button::-moz-focus-inner,[type="button"]::-moz-focus-inner,[type="reset"]::-moz-focus-inner,[type="submit"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type="button"]:-moz-focusring,[type="reset"]:-moz-focusring,[type="submit"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type="checkbox"],[type="radio"]{box-sizing:border-box;padding:0;}[type="number"]::-webkit-inner-spin-button,[type="number"]::-webkit-outer-spin-button{height:auto}[type="search"]{-webkit-appearance:textfield;outline-offset:-2px;}[type="search"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:inline-block}.chip{display:flex;padding:var(--ic-space-xxs);font-size:14px;border-radius:80px;text-align:center;align-items:center;text-decoration:none;transition:var(--ic-easing-transition-fast);position:relative}.chip.small{padding:var(--ic-space-xxxs)}.chip.large{padding:var(--ic-space-xs)}.label{padding:0 var(--ic-space-xs)}.chip.hovered:not(:focus-within){background-color:var(--ic-architectural-300)}.chip:focus-within{box-shadow:var(--ic-border-focus);outline:var(--ic-hc-focus-outline);z-index:1}.chip.outline.hovered:not(:focus-within){background-color:var(--ic-action-dark-bg-hover)}ic-tooltip:focus-within{z-index:1}.filled{background-color:var(--ic-architectural-200);color:black;border:none}.filled.disabled{background-color:var(--ic-architectural-100)}.outline{color:var(--ic-architectural-900);border:1px solid var(--ic-architectural-900);padding:calc(var(--ic-space-xxs) - 1px)}.outline.small{padding:calc(var(--ic-space-xxxs) - 1px)}.outline.large{padding:calc(var(--ic-space-xs) - 1px)}.outline.disabled{border:var(--ic-border-disabled);background:none}.chip.disabled ic-typography{color:var(--ic-architectural-200)}.dismiss-icon{border:none;border-radius:50%;padding:0;background:none;cursor:pointer;margin:var(--ic-space-xxxs);height:20px}.dismiss-icon:focus{outline:var(--ic-hc-focus-outline)}.dismiss-icon[disabled]{pointer-events:none;color:var(--ic-architectural-200)}.icon{padding:var(--ic-space-xxxs);box-sizing:border-box}.icon,ic-tooltip{width:var(--ic-space-lg);height:var(--ic-space-lg)}.chip.disabled path,.chip.disabled ::slotted(svg){fill:var(--ic-architectural-200)}@media (forced-colors: active){.chip{border:var(--ic-hc-border)}.filled.small{padding:calc(var(--ic-space-xxxs) - 1px)}.filled{padding:calc(var(--ic-space-xxxs) + 1px)}.filled.large{padding:calc(var(--ic-space-xs) - 1px)}.chip.disabled{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-color:GrayText}.chip.disabled ic-typography{color:GrayText}.chip.disabled path,.chip.disabled ::slotted(svg){fill:GrayText}.chip:focus-within{outline:none;border-color:Highlight}}';const c=class{constructor(t){i(this,t);this.dismiss=e(this,"dismiss",7);this.dismissAction=()=>{this.dismiss.emit()};this.mouseEnterHandler=()=>{this.isHovered=true};this.mouseLeaveHandler=()=>{this.isHovered=false};this.label=undefined;this.appearance="filled";this.size="default";this.dismissible=false;this.disabled=false;this.visible=true;this.isHovered=false}handleClick(){this.visible=!this.visible}componentDidLoad(){var i;this.dismissible&&((i=this.el.shadowRoot.querySelector("span.ic-tooltip-label"))===null||i===void 0?void 0:i.setAttribute("aria-hidden","true"));a([{prop:this.label,propName:"label"}],"Chip")}render(){const{label:i,appearance:e,size:o,dismissible:a,visible:r,disabled:c,isHovered:l}=this;return r&&t("div",{class:{["chip"]:true,[`${e}`]:true,[`${o}`]:true,["disabled"]:c,["dismissible"]:a,["hovered"]:l}},s(this.el,"icon")&&t("div",{class:"icon"},t("slot",{name:"icon"})),t("ic-typography",{variant:"label","apply-vertical-margins":false,class:"label"},t("span",null,i)),a&&t("ic-tooltip",{label:"Dismiss",target:"dismiss-icon",class:{["tooltip-disabled"]:c}},t("button",{id:"dismiss-icon",class:{["dismiss-icon"]:true},"aria-label":`Dismiss ${i} chip`,disabled:c,tabindex:c?-1:0,onClick:this.dismissAction,onMouseEnter:this.mouseEnterHandler,onMouseLeave:this.mouseLeaveHandler,innerHTML:n})))}get el(){return o(this)}};c.style=r;export{c as ic_chip};
2
+ //# sourceMappingURL=p-fbde8a26.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/ic-chip/ic-chip.css?tag=ic-chip&encapsulation=shadow","src/components/ic-chip/ic-chip.tsx"],"names":["icChipCss","Chip","this","dismissAction","dismiss","emit","mouseEnterHandler","isHovered","mouseLeaveHandler","[object Object]","visible","dismissible","_a","el","shadowRoot","querySelector","setAttribute","onComponentRequiredPropUndefined","prop","label","propName","appearance","size","disabled","h","class","isSlotUsed","name","variant","apply-vertical-margins","target","id","aria-label","tabindex","onClick","onMouseEnter","onMouseLeave","innerHTML","dismissIcon"],"mappings":"qdAAA,MAAMA,EAAY,65ICyBLC,EAAI,gEAqCPC,KAAAC,cAAgB,KACtBD,KAAKE,QAAQC,QAGPH,KAAAI,kBAAoB,KAC1BJ,KAAKK,UAAY,MAGXL,KAAAM,kBAAoB,KAC1BN,KAAKK,UAAY,4CApCqB,mBAIX,2BAIG,oBAIH,mBAED,oBAEE,MAG9BE,cACEP,KAAKQ,SAAWR,KAAKQ,QAmBvBD,yBACEP,KAAKS,eACHC,EAAAV,KAAKW,GAAGC,WACLC,cAAc,4BAAwB,MAAAH,SAAA,OAAA,EAAAA,EACrCI,aAAa,cAAe,SAClCC,EACE,CAAC,CAAEC,KAAMhB,KAAKiB,MAAOC,SAAU,UAC/B,QAIJX,SACE,MAAMU,MACJA,EAAKE,WACLA,EAAUC,KACVA,EAAIX,YACJA,EAAWD,QACXA,EAAOa,SACPA,EAAQhB,UACRA,GACEL,KAEJ,OACEQ,GACEc,EAAA,MAAA,CACEC,MAAO,CACLhB,CAAC,QAAS,KACVA,CAAC,GAAGY,KAAe,KACnBZ,CAAC,GAAGa,KAAS,KACbb,CAAC,YAAac,EACdd,CAAC,eAAgBE,EACjBF,CAAC,WAAYF,IAGdmB,EAAWxB,KAAKW,GAAI,SACnBW,EAAA,MAAA,CAAKC,MAAM,QACTD,EAAA,OAAA,CAAMG,KAAK,UAGfH,EAAA,gBAAA,CACEI,QAAQ,QAAOC,yBACS,MACxBJ,MAAM,SAEND,EAAA,OAAA,KAAOL,IAERR,GACCa,EAAA,aAAA,CACEL,MAAM,UACNW,OAAO,eACPL,MAAO,CAAEhB,CAAC,oBAAqBc,IAE/BC,EAAA,SAAA,CACEO,GAAG,eACHN,MAAO,CACLhB,CAAC,gBAAiB,MACnBuB,aACW,WAAWb,SACvBI,SAAUA,EACVU,SAAUV,GAAY,EAAI,EAC1BW,QAAShC,KAAKC,cACdgC,aAAcjC,KAAKI,kBACnB8B,aAAclC,KAAKM,kBACnB6B,UAAWC","sourcesContent":["@import \"../../global/normalise.css\";\n\n:host {\n display: inline-block;\n}\n\n.chip {\n display: flex;\n padding: var(--ic-space-xxs);\n font-size: 14px;\n border-radius: 80px;\n text-align: center;\n align-items: center;\n text-decoration: none;\n transition: var(--ic-easing-transition-fast);\n position: relative;\n}\n\n.chip.small {\n padding: var(--ic-space-xxxs);\n}\n\n.chip.large {\n padding: var(--ic-space-xs);\n}\n\n.label {\n padding: 0 var(--ic-space-xs);\n}\n\n.chip.hovered:not(:focus-within) {\n background-color: var(--ic-architectural-300);\n}\n\n.chip:focus-within {\n box-shadow: var(--ic-border-focus);\n outline: var(--ic-hc-focus-outline);\n z-index: 1;\n}\n\n.chip.outline.hovered:not(:focus-within) {\n background-color: var(--ic-action-dark-bg-hover);\n}\n\nic-tooltip:focus-within {\n z-index: 1;\n}\n\n.filled {\n background-color: var(--ic-architectural-200);\n color: black;\n border: none;\n}\n\n.filled.disabled {\n background-color: var(--ic-architectural-100);\n}\n\n.outline {\n color: var(--ic-architectural-900);\n border: 1px solid var(--ic-architectural-900);\n padding: calc(var(--ic-space-xxs) - 1px);\n}\n\n.outline.small {\n padding: calc(var(--ic-space-xxxs) - 1px);\n}\n\n.outline.large {\n padding: calc(var(--ic-space-xs) - 1px);\n}\n\n.outline.disabled {\n border: var(--ic-border-disabled);\n background: none;\n}\n\n.chip.disabled ic-typography {\n color: var(--ic-architectural-200);\n}\n\n.dismiss-icon {\n border: none;\n border-radius: 50%;\n padding: 0;\n background: none;\n cursor: pointer;\n margin: var(--ic-space-xxxs);\n height: 20px;\n}\n\n.dismiss-icon:focus {\n outline: var(--ic-hc-focus-outline);\n}\n\n.dismiss-icon[disabled] {\n pointer-events: none;\n color: var(--ic-architectural-200);\n}\n\n.icon {\n padding: var(--ic-space-xxxs);\n box-sizing: border-box;\n}\n\n.icon,\nic-tooltip {\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n.chip.disabled path,\n.chip.disabled ::slotted(svg) {\n fill: var(--ic-architectural-200);\n}\n\n@media (forced-colors: active) {\n .chip {\n border: var(--ic-hc-border);\n }\n\n .filled.small {\n padding: calc(var(--ic-space-xxxs) - 1px);\n }\n\n .filled {\n padding: calc(var(--ic-space-xxxs) + 1px);\n }\n\n .filled.large {\n padding: calc(var(--ic-space-xs) - 1px);\n }\n\n .chip.disabled {\n appearance: none;\n border-color: GrayText;\n }\n\n .chip.disabled ic-typography {\n color: GrayText;\n }\n\n .chip.disabled path,\n .chip.disabled ::slotted(svg) {\n fill: GrayText;\n }\n\n .chip:focus-within {\n outline: none;\n border-color: Highlight;\n }\n}\n","import {\n Component,\n h,\n Prop,\n State,\n Listen,\n Event,\n EventEmitter,\n Element,\n} from \"@stencil/core\";\nimport {\n onComponentRequiredPropUndefined,\n isSlotUsed,\n} from \"../../utils/helpers\";\nimport { IcChipAppearance, IcChipSizes } from \"./ic-chip.types\";\nimport dismissIcon from \"../../assets/dismiss-icon.svg\";\n\n/**\n * @slot icon - Content will be rendered at the start of the chip.\n */\n@Component({\n tag: \"ic-chip\",\n styleUrl: \"ic-chip.css\",\n shadow: true,\n})\nexport class Chip {\n @Element() el: HTMLIcChipElement;\n\n /**\n * The text rendered within the chip.\n */\n @Prop() label!: string;\n /**\n * The emphasis of the chip.\n */\n @Prop() appearance?: IcChipAppearance = \"filled\";\n /**\n * The size of the chip.\n */\n @Prop() size?: IcChipSizes = \"default\";\n /**\n * If `true`, the chip will have a close button at the end to dismiss it.\n */\n @Prop() dismissible?: boolean = false;\n /**\n * If `true`, the chip will appear disabled.\n */\n @Prop() disabled?: boolean = false;\n\n @State() visible: boolean = true;\n\n @State() isHovered: boolean = false;\n\n @Listen(\"dismiss\", { capture: true })\n handleClick(): void {\n this.visible = !this.visible;\n }\n /**\n * Is emitted when the user dismisses the chip.\n */\n @Event() dismiss: EventEmitter<void>;\n\n private dismissAction = (): void => {\n this.dismiss.emit();\n };\n\n private mouseEnterHandler = (): void => {\n this.isHovered = true;\n };\n\n private mouseLeaveHandler = (): void => {\n this.isHovered = false;\n };\n\n componentDidLoad(): void {\n this.dismissible &&\n this.el.shadowRoot\n .querySelector(\"span.ic-tooltip-label\")\n ?.setAttribute(\"aria-hidden\", \"true\");\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Chip\"\n );\n }\n\n render() {\n const {\n label,\n appearance,\n size,\n dismissible,\n visible,\n disabled,\n isHovered,\n } = this;\n\n return (\n visible && (\n <div\n class={{\n [\"chip\"]: true,\n [`${appearance}`]: true,\n [`${size}`]: true,\n [\"disabled\"]: disabled,\n [\"dismissible\"]: dismissible,\n [\"hovered\"]: isHovered,\n }}\n >\n {isSlotUsed(this.el, \"icon\") && (\n <div class=\"icon\">\n <slot name=\"icon\" />\n </div>\n )}\n <ic-typography\n variant=\"label\"\n apply-vertical-margins={false}\n class=\"label\"\n >\n <span>{label}</span>\n </ic-typography>\n {dismissible && (\n <ic-tooltip\n label=\"Dismiss\"\n target=\"dismiss-icon\"\n class={{ [\"tooltip-disabled\"]: disabled }}\n >\n <button\n id=\"dismiss-icon\"\n class={{\n [\"dismiss-icon\"]: true,\n }}\n aria-label={`Dismiss ${label} chip`}\n disabled={disabled}\n tabindex={disabled ? -1 : 0}\n onClick={this.dismissAction}\n onMouseEnter={this.mouseEnterHandler}\n onMouseLeave={this.mouseLeaveHandler}\n innerHTML={dismissIcon}\n ></button>\n </ic-tooltip>\n )}\n </div>\n )\n );\n }\n}\n"]}