@ukic/web-components 3.0.0-alpha.5 → 3.0.0-alpha.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (596) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-529aaa3a.js → helpers-dd569d97.js} +33 -29
  3. package/dist/cjs/helpers-dd569d97.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +8 -1
  6. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  8. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js +2 -2
  11. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-button_3.cjs.entry.js +10 -7
  15. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-card-vertical.cjs.entry.js +15 -6
  17. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-checkbox-group.cjs.entry.js +5 -1
  19. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-checkbox.cjs.entry.js +5 -1
  21. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-chip.cjs.entry.js +9 -4
  23. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-divider.cjs.entry.js +3 -3
  27. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-footer-link-group.cjs.entry.js +4 -5
  30. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-footer-link.cjs.entry.js +4 -5
  32. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-footer.cjs.entry.js +7 -8
  34. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-hero.cjs.entry.js +6 -7
  36. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +3 -3
  38. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +13 -4
  40. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-link.cjs.entry.js +9 -6
  43. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-menu-item.cjs.entry.js +7 -1
  46. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-navigation-button.cjs.entry.js +6 -7
  48. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-navigation-group.cjs.entry.js +5 -6
  50. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-navigation-item.cjs.entry.js +4 -4
  52. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-pagination-item.cjs.entry.js +5 -1
  56. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-pagination.cjs.entry.js +5 -1
  58. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-radio-group.cjs.entry.js +9 -1
  61. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-radio-option.cjs.entry.js +5 -1
  63. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-search-bar.cjs.entry.js +7 -3
  65. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-select.cjs.entry.js +9 -3
  67. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  68. package/dist/cjs/ic-side-navigation.cjs.entry.js +5 -5
  69. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-switch.cjs.entry.js +6 -2
  74. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  77. package/dist/cjs/ic-tab.cjs.entry.js +5 -2
  78. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-text-field.cjs.entry.js +20 -5
  80. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-theme.cjs.entry.js +20 -20
  82. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  84. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +3 -0
  85. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  86. package/dist/cjs/ic-toggle-button.cjs.entry.js +7 -1
  87. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-top-navigation.cjs.entry.js +10 -6
  89. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  91. package/dist/cjs/loader.cjs.js +1 -1
  92. package/dist/collection/components/ic-accordion/ic-accordion.js +10 -1
  93. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  94. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +3 -0
  95. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -1
  96. package/dist/collection/components/ic-alert/ic-alert.js +2 -2
  97. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  98. package/dist/collection/components/ic-badge/ic-badge.js +2 -2
  99. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  100. package/dist/collection/components/ic-button/ic-button.css +40 -0
  101. package/dist/collection/components/ic-button/ic-button.js +12 -9
  102. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  103. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js +7 -7
  104. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js.map +1 -1
  105. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js +21 -9
  106. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js.map +1 -1
  107. package/dist/collection/components/ic-card-vertical/test/basic/ic-card-vertical.spec.js +10 -0
  108. package/dist/collection/components/ic-card-vertical/test/basic/ic-card-vertical.spec.js.map +1 -1
  109. package/dist/collection/components/ic-checkbox/ic-checkbox.js +6 -0
  110. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  111. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +6 -0
  112. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  113. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js +3 -0
  114. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js.map +1 -1
  115. package/dist/collection/components/ic-chip/ic-chip.js +27 -2
  116. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  117. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +3 -0
  118. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  119. package/dist/collection/components/ic-divider/ic-divider.js +8 -8
  120. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  121. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js +4 -4
  122. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js.map +1 -1
  123. package/dist/collection/components/ic-footer/ic-footer.css +2 -2
  124. package/dist/collection/components/ic-footer/ic-footer.js +9 -10
  125. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  126. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js +2 -2
  127. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js.map +1 -1
  128. package/dist/collection/components/ic-footer-link/ic-footer-link.js +6 -7
  129. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  130. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js +1 -1
  131. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js.map +1 -1
  132. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +6 -7
  133. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  134. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js +1 -1
  135. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js.map +1 -1
  136. package/dist/collection/components/ic-hero/ic-hero.css +3 -3
  137. package/dist/collection/components/ic-hero/ic-hero.js +8 -9
  138. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  139. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +2 -2
  140. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  141. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +6 -6
  142. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  143. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +15 -3
  144. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  145. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +9 -0
  146. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
  147. package/dist/collection/components/ic-link/ic-link.js +12 -9
  148. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  149. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js +5 -5
  150. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js.map +1 -1
  151. package/dist/collection/components/ic-menu/ic-menu.js +4 -4
  152. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  153. package/dist/collection/components/ic-menu-item/ic-menu-item.js +9 -0
  154. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  155. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js +13 -0
  156. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js.map +1 -1
  157. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +9 -10
  158. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  159. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js +2 -2
  160. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js.map +1 -1
  161. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +1 -1
  162. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +6 -7
  163. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  164. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js +3 -3
  165. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js.map +1 -1
  166. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +9 -9
  167. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +5 -5
  168. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  169. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +3 -3
  170. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  171. package/dist/collection/components/ic-pagination/ic-pagination.js +6 -0
  172. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  173. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +10 -0
  174. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  175. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +6 -0
  176. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  177. package/dist/collection/components/ic-pagination-item/test/basic/ic-pagination-item.spec.js +3 -0
  178. package/dist/collection/components/ic-pagination-item/test/basic/ic-pagination-item.spec.js.map +1 -1
  179. package/dist/collection/components/ic-radio-group/ic-radio-group.js +8 -0
  180. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  181. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +6 -0
  182. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  183. package/dist/collection/components/ic-radio-option/ic-radio-option.js +6 -0
  184. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  185. package/dist/collection/components/ic-search-bar/ic-search-bar.js +8 -2
  186. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  187. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js +4 -1
  188. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js.map +1 -1
  189. package/dist/collection/components/ic-select/ic-select.js +10 -2
  190. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  191. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +10 -0
  192. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  193. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +2 -2
  194. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +7 -7
  195. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  196. package/dist/collection/components/ic-side-navigation/ic-side-navigation.types.js.map +1 -1
  197. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js +3 -3
  198. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js.map +1 -1
  199. package/dist/collection/components/ic-switch/ic-switch.js +6 -0
  200. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  201. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js +3 -0
  202. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js.map +1 -1
  203. package/dist/collection/components/ic-tab/ic-tab.js +6 -0
  204. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  205. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js +16 -0
  206. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js.map +1 -1
  207. package/dist/collection/components/ic-text-field/ic-text-field.js +24 -12
  208. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  209. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js +26 -12
  210. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js.map +1 -1
  211. package/dist/collection/components/ic-theme/ic-theme.js +31 -31
  212. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  213. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js +7 -7
  214. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js.map +1 -1
  215. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js +11 -11
  216. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js.map +1 -1
  217. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +9 -0
  218. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js.map +1 -1
  219. package/dist/collection/components/ic-toggle-button/test/basic/ic-toggle-button.spec.js +10 -0
  220. package/dist/collection/components/ic-toggle-button/test/basic/ic-toggle-button.spec.js.map +1 -1
  221. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +3 -0
  222. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
  223. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js +104 -0
  224. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js.map +1 -1
  225. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +2 -2
  226. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +12 -8
  227. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  228. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js +3 -3
  229. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js.map +1 -1
  230. package/dist/collection/utils/helpers.js +24 -20
  231. package/dist/collection/utils/helpers.js.map +1 -1
  232. package/dist/collection/utils/types.js +6 -6
  233. package/dist/collection/utils/types.js.map +1 -1
  234. package/dist/components/helpers.js +30 -26
  235. package/dist/components/helpers.js.map +1 -1
  236. package/dist/components/ic-accordion.js +9 -1
  237. package/dist/components/ic-accordion.js.map +1 -1
  238. package/dist/components/ic-alert.js +2 -2
  239. package/dist/components/ic-alert.js.map +1 -1
  240. package/dist/components/ic-badge.js +2 -2
  241. package/dist/components/ic-badge.js.map +1 -1
  242. package/dist/components/ic-button2.js +11 -8
  243. package/dist/components/ic-button2.js.map +1 -1
  244. package/dist/components/ic-card-vertical.js +18 -7
  245. package/dist/components/ic-card-vertical.js.map +1 -1
  246. package/dist/components/ic-checkbox-group.js +5 -0
  247. package/dist/components/ic-checkbox-group.js.map +1 -1
  248. package/dist/components/ic-checkbox.js +5 -0
  249. package/dist/components/ic-checkbox.js.map +1 -1
  250. package/dist/components/ic-chip.js +11 -4
  251. package/dist/components/ic-chip.js.map +1 -1
  252. package/dist/components/ic-divider2.js +4 -4
  253. package/dist/components/ic-divider2.js.map +1 -1
  254. package/dist/components/ic-footer-link-group.js +5 -6
  255. package/dist/components/ic-footer-link-group.js.map +1 -1
  256. package/dist/components/ic-footer-link.js +5 -6
  257. package/dist/components/ic-footer-link.js.map +1 -1
  258. package/dist/components/ic-footer.js +8 -9
  259. package/dist/components/ic-footer.js.map +1 -1
  260. package/dist/components/ic-hero.js +7 -8
  261. package/dist/components/ic-hero.js.map +1 -1
  262. package/dist/components/ic-horizontal-scroll2.js +3 -3
  263. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  264. package/dist/components/ic-input-component-container2.js +13 -2
  265. package/dist/components/ic-input-component-container2.js.map +1 -1
  266. package/dist/components/ic-link2.js +10 -7
  267. package/dist/components/ic-link2.js.map +1 -1
  268. package/dist/components/ic-menu-item2.js +9 -1
  269. package/dist/components/ic-menu-item2.js.map +1 -1
  270. package/dist/components/ic-menu2.js +3 -3
  271. package/dist/components/ic-menu2.js.map +1 -1
  272. package/dist/components/ic-navigation-button.js +7 -8
  273. package/dist/components/ic-navigation-button.js.map +1 -1
  274. package/dist/components/ic-navigation-group.js +6 -7
  275. package/dist/components/ic-navigation-group.js.map +1 -1
  276. package/dist/components/ic-navigation-item.js +5 -5
  277. package/dist/components/ic-navigation-item.js.map +1 -1
  278. package/dist/components/ic-pagination-item2.js +6 -1
  279. package/dist/components/ic-pagination-item2.js.map +1 -1
  280. package/dist/components/ic-pagination.js +5 -0
  281. package/dist/components/ic-pagination.js.map +1 -1
  282. package/dist/components/ic-radio-group.js +8 -0
  283. package/dist/components/ic-radio-group.js.map +1 -1
  284. package/dist/components/ic-radio-option.js +6 -1
  285. package/dist/components/ic-radio-option.js.map +1 -1
  286. package/dist/components/ic-search-bar.js +8 -3
  287. package/dist/components/ic-search-bar.js.map +1 -1
  288. package/dist/components/ic-select.js +10 -3
  289. package/dist/components/ic-select.js.map +1 -1
  290. package/dist/components/ic-side-navigation.js +6 -6
  291. package/dist/components/ic-side-navigation.js.map +1 -1
  292. package/dist/components/ic-switch.js +8 -3
  293. package/dist/components/ic-switch.js.map +1 -1
  294. package/dist/components/ic-tab.js +5 -2
  295. package/dist/components/ic-tab.js.map +1 -1
  296. package/dist/components/ic-text-field2.js +22 -6
  297. package/dist/components/ic-text-field2.js.map +1 -1
  298. package/dist/components/ic-theme.js +22 -22
  299. package/dist/components/ic-theme.js.map +1 -1
  300. package/dist/components/ic-toggle-button-group.js +3 -0
  301. package/dist/components/ic-toggle-button-group.js.map +1 -1
  302. package/dist/components/ic-toggle-button.js +9 -1
  303. package/dist/components/ic-toggle-button.js.map +1 -1
  304. package/dist/components/ic-top-navigation.js +11 -7
  305. package/dist/components/ic-top-navigation.js.map +1 -1
  306. package/dist/core/core.css +63 -43
  307. package/dist/core/core.esm.js +1 -1
  308. package/dist/core/core.esm.js.map +1 -1
  309. package/dist/core/{p-60d458e5.entry.js → p-07cd8a50.entry.js} +2 -2
  310. package/dist/core/p-07cd8a50.entry.js.map +1 -0
  311. package/dist/core/p-0821fc5b.entry.js +2 -0
  312. package/dist/core/p-0821fc5b.entry.js.map +1 -0
  313. package/dist/core/p-0b8c3770.entry.js +2 -0
  314. package/dist/core/p-0b8c3770.entry.js.map +1 -0
  315. package/dist/core/{p-97e8246c.entry.js → p-0d505c1f.entry.js} +2 -2
  316. package/dist/core/{p-e107f362.entry.js → p-1234f7a5.entry.js} +2 -2
  317. package/dist/core/{p-78f46cf8.entry.js → p-193582d4.entry.js} +2 -2
  318. package/dist/core/{p-7cba80ac.entry.js → p-225384ab.entry.js} +2 -2
  319. package/dist/core/p-225384ab.entry.js.map +1 -0
  320. package/dist/core/{p-88810080.entry.js → p-3420a999.entry.js} +2 -2
  321. package/dist/core/p-3420a999.entry.js.map +1 -0
  322. package/dist/core/{p-4fea4610.entry.js → p-3994d86d.entry.js} +2 -2
  323. package/dist/core/p-3994d86d.entry.js.map +1 -0
  324. package/dist/core/p-3bfc4a52.entry.js +2 -0
  325. package/dist/core/p-3bfc4a52.entry.js.map +1 -0
  326. package/dist/core/p-3cfef37a.entry.js +2 -0
  327. package/dist/core/p-3cfef37a.entry.js.map +1 -0
  328. package/dist/core/{p-ba37e169.entry.js → p-406e58af.entry.js} +2 -2
  329. package/dist/core/p-406e58af.entry.js.map +1 -0
  330. package/dist/core/{p-f99576e0.js → p-48e98730.js} +2 -2
  331. package/dist/core/p-48e98730.js.map +1 -0
  332. package/dist/core/{p-48463a79.entry.js → p-4af52174.entry.js} +2 -2
  333. package/dist/core/p-4af52174.entry.js.map +1 -0
  334. package/dist/core/{p-15fd6539.entry.js → p-4dc48606.entry.js} +2 -2
  335. package/dist/core/{p-c563d479.entry.js → p-4f72a02a.entry.js} +2 -2
  336. package/dist/core/p-4f72a02a.entry.js.map +1 -0
  337. package/dist/core/{p-c43d676b.entry.js → p-518ea375.entry.js} +2 -2
  338. package/dist/core/{p-3a4000d8.entry.js → p-520c6089.entry.js} +2 -2
  339. package/dist/core/p-580b1593.entry.js +2 -0
  340. package/dist/core/p-580b1593.entry.js.map +1 -0
  341. package/dist/core/{p-79c132e3.entry.js → p-59800237.entry.js} +2 -2
  342. package/dist/core/p-59800237.entry.js.map +1 -0
  343. package/dist/core/{p-f580f0ce.entry.js → p-5ba8e679.entry.js} +2 -2
  344. package/dist/core/p-5ba8e679.entry.js.map +1 -0
  345. package/dist/core/p-5d417fc0.entry.js +2 -0
  346. package/dist/core/p-5d417fc0.entry.js.map +1 -0
  347. package/dist/core/{p-c5d3c71e.entry.js → p-5d653608.entry.js} +2 -2
  348. package/dist/core/{p-c82240b7.entry.js → p-61510f00.entry.js} +2 -2
  349. package/dist/core/p-6159b077.entry.js +2 -0
  350. package/dist/core/p-6159b077.entry.js.map +1 -0
  351. package/dist/core/{p-6bb3ef22.entry.js → p-6859019c.entry.js} +2 -2
  352. package/dist/core/p-6859019c.entry.js.map +1 -0
  353. package/dist/core/{p-c4f32f77.entry.js → p-705db6a5.entry.js} +2 -2
  354. package/dist/core/{p-c4f32f77.entry.js.map → p-705db6a5.entry.js.map} +1 -1
  355. package/dist/core/{p-cdbc3414.entry.js → p-7124b387.entry.js} +2 -2
  356. package/dist/core/p-810744b5.entry.js +2 -0
  357. package/dist/core/p-810744b5.entry.js.map +1 -0
  358. package/dist/core/p-810f5a2d.entry.js +2 -0
  359. package/dist/core/p-810f5a2d.entry.js.map +1 -0
  360. package/dist/core/{p-85be0268.entry.js → p-8a2670c1.entry.js} +2 -2
  361. package/dist/core/p-8a2670c1.entry.js.map +1 -0
  362. package/dist/core/{p-03dc6b93.entry.js → p-91c1327d.entry.js} +2 -2
  363. package/dist/core/{p-a91b0212.entry.js → p-98dbbb34.entry.js} +2 -2
  364. package/dist/core/{p-85d33e38.entry.js → p-9c1d4f72.entry.js} +2 -2
  365. package/dist/core/p-9c1d4f72.entry.js.map +1 -0
  366. package/dist/core/{p-f069f50e.entry.js → p-a23c515d.entry.js} +2 -2
  367. package/dist/core/p-a24bcf5f.entry.js +2 -0
  368. package/dist/core/p-a24bcf5f.entry.js.map +1 -0
  369. package/dist/core/p-aefebee9.entry.js +2 -0
  370. package/dist/core/p-aefebee9.entry.js.map +1 -0
  371. package/dist/core/{p-2223c7ee.entry.js → p-b27dfa1b.entry.js} +2 -2
  372. package/dist/core/{p-685d6aa9.entry.js → p-b2a41070.entry.js} +2 -2
  373. package/dist/core/{p-d987bdc0.entry.js → p-b51e378c.entry.js} +2 -2
  374. package/dist/core/p-b51e378c.entry.js.map +1 -0
  375. package/dist/core/{p-b06939fa.entry.js → p-b5439baa.entry.js} +2 -2
  376. package/dist/core/p-b9aa801f.entry.js +2 -0
  377. package/dist/core/p-b9aa801f.entry.js.map +1 -0
  378. package/dist/core/{p-12f72d83.entry.js → p-bc7b8a1e.entry.js} +2 -2
  379. package/dist/core/{p-c7e01fcd.entry.js → p-c2b359d9.entry.js} +2 -2
  380. package/dist/core/p-c2b359d9.entry.js.map +1 -0
  381. package/dist/core/{p-ec097c1f.entry.js → p-c67f7603.entry.js} +2 -2
  382. package/dist/core/p-c6e91e13.entry.js +2 -0
  383. package/dist/core/p-c6e91e13.entry.js.map +1 -0
  384. package/dist/core/{p-98816f52.entry.js → p-c83e933c.entry.js} +2 -2
  385. package/dist/core/{p-0aec7fab.entry.js → p-ca27ab19.entry.js} +2 -2
  386. package/dist/core/{p-0aec7fab.entry.js.map → p-ca27ab19.entry.js.map} +1 -1
  387. package/dist/core/p-cfe32b37.entry.js +2 -0
  388. package/dist/core/p-cfe32b37.entry.js.map +1 -0
  389. package/dist/core/{p-175baf98.entry.js → p-d2909711.entry.js} +2 -2
  390. package/dist/core/p-da85eaf6.entry.js +2 -0
  391. package/dist/core/p-da85eaf6.entry.js.map +1 -0
  392. package/dist/core/p-dcb2073d.entry.js +2 -0
  393. package/dist/core/p-dcb2073d.entry.js.map +1 -0
  394. package/dist/core/{p-d3263ed9.entry.js → p-ded2dbed.entry.js} +2 -2
  395. package/dist/core/p-ded2dbed.entry.js.map +1 -0
  396. package/dist/core/{p-81f80487.entry.js → p-f42c0469.entry.js} +2 -2
  397. package/dist/core/p-f42c0469.entry.js.map +1 -0
  398. package/dist/esm/core.js +1 -1
  399. package/dist/esm/{helpers-7bf8c67f.js → helpers-e594bfc6.js} +31 -27
  400. package/dist/esm/helpers-e594bfc6.js.map +1 -0
  401. package/dist/esm/ic-accordion-group.entry.js +1 -1
  402. package/dist/esm/ic-accordion.entry.js +8 -1
  403. package/dist/esm/ic-accordion.entry.js.map +1 -1
  404. package/dist/esm/ic-alert.entry.js +2 -2
  405. package/dist/esm/ic-alert.entry.js.map +1 -1
  406. package/dist/esm/ic-back-to-top.entry.js +1 -1
  407. package/dist/esm/ic-badge.entry.js +2 -2
  408. package/dist/esm/ic-badge.entry.js.map +1 -1
  409. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  410. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  411. package/dist/esm/ic-button_3.entry.js +10 -7
  412. package/dist/esm/ic-button_3.entry.js.map +1 -1
  413. package/dist/esm/ic-card-vertical.entry.js +15 -6
  414. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  415. package/dist/esm/ic-checkbox-group.entry.js +5 -1
  416. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  417. package/dist/esm/ic-checkbox.entry.js +5 -1
  418. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  419. package/dist/esm/ic-chip.entry.js +9 -4
  420. package/dist/esm/ic-chip.entry.js.map +1 -1
  421. package/dist/esm/ic-data-row.entry.js +1 -1
  422. package/dist/esm/ic-dialog.entry.js +1 -1
  423. package/dist/esm/ic-divider.entry.js +3 -3
  424. package/dist/esm/ic-divider.entry.js.map +1 -1
  425. package/dist/esm/ic-empty-state.entry.js +1 -1
  426. package/dist/esm/ic-footer-link-group.entry.js +4 -5
  427. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  428. package/dist/esm/ic-footer-link.entry.js +4 -5
  429. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  430. package/dist/esm/ic-footer.entry.js +7 -8
  431. package/dist/esm/ic-footer.entry.js.map +1 -1
  432. package/dist/esm/ic-hero.entry.js +6 -7
  433. package/dist/esm/ic-hero.entry.js.map +1 -1
  434. package/dist/esm/ic-horizontal-scroll.entry.js +3 -3
  435. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  436. package/dist/esm/ic-input-component-container_3.entry.js +13 -4
  437. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  438. package/dist/esm/ic-input-label_2.entry.js +1 -1
  439. package/dist/esm/ic-link.entry.js +9 -6
  440. package/dist/esm/ic-link.entry.js.map +1 -1
  441. package/dist/esm/ic-menu-group.entry.js +1 -1
  442. package/dist/esm/ic-menu-item.entry.js +7 -1
  443. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  444. package/dist/esm/ic-navigation-button.entry.js +6 -7
  445. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  446. package/dist/esm/ic-navigation-group.entry.js +5 -6
  447. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  448. package/dist/esm/ic-navigation-item.entry.js +4 -4
  449. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  450. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  451. package/dist/esm/ic-page-header.entry.js +1 -1
  452. package/dist/esm/ic-pagination-item.entry.js +5 -1
  453. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  454. package/dist/esm/ic-pagination.entry.js +5 -1
  455. package/dist/esm/ic-pagination.entry.js.map +1 -1
  456. package/dist/esm/ic-popover-menu.entry.js +1 -1
  457. package/dist/esm/ic-radio-group.entry.js +9 -1
  458. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  459. package/dist/esm/ic-radio-option.entry.js +5 -1
  460. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  461. package/dist/esm/ic-search-bar.entry.js +7 -3
  462. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  463. package/dist/esm/ic-select.entry.js +9 -3
  464. package/dist/esm/ic-select.entry.js.map +1 -1
  465. package/dist/esm/ic-side-navigation.entry.js +5 -5
  466. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  467. package/dist/esm/ic-status-tag.entry.js +1 -1
  468. package/dist/esm/ic-step.entry.js +1 -1
  469. package/dist/esm/ic-stepper.entry.js +1 -1
  470. package/dist/esm/ic-switch.entry.js +6 -2
  471. package/dist/esm/ic-switch.entry.js.map +1 -1
  472. package/dist/esm/ic-tab-group.entry.js +1 -1
  473. package/dist/esm/ic-tab-panel.entry.js +1 -1
  474. package/dist/esm/ic-tab.entry.js +5 -2
  475. package/dist/esm/ic-tab.entry.js.map +1 -1
  476. package/dist/esm/ic-text-field.entry.js +20 -5
  477. package/dist/esm/ic-text-field.entry.js.map +1 -1
  478. package/dist/esm/ic-theme.entry.js +20 -20
  479. package/dist/esm/ic-theme.entry.js.map +1 -1
  480. package/dist/esm/ic-toast.entry.js +1 -1
  481. package/dist/esm/ic-toggle-button-group.entry.js +3 -0
  482. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  483. package/dist/esm/ic-toggle-button.entry.js +7 -1
  484. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  485. package/dist/esm/ic-top-navigation.entry.js +10 -6
  486. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  487. package/dist/esm/ic-typography.entry.js +1 -1
  488. package/dist/esm/loader.js +1 -1
  489. package/dist/types/components/ic-accordion/ic-accordion.d.ts +2 -0
  490. package/dist/types/components/ic-button/ic-button.d.ts +2 -2
  491. package/dist/types/components/ic-card-vertical/ic-card-vertical.d.ts +3 -2
  492. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +1 -0
  493. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +1 -0
  494. package/dist/types/components/ic-chip/ic-chip.d.ts +5 -0
  495. package/dist/types/components/ic-divider/ic-divider.d.ts +4 -4
  496. package/dist/types/components/ic-footer/ic-footer.d.ts +3 -3
  497. package/dist/types/components/ic-footer-link/ic-footer-link.d.ts +3 -3
  498. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +3 -3
  499. package/dist/types/components/ic-hero/ic-hero.d.ts +3 -3
  500. package/dist/types/components/ic-horizontal-scroll/ic-horizontal-scroll.d.ts +2 -2
  501. package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +2 -0
  502. package/dist/types/components/ic-link/ic-link.d.ts +2 -2
  503. package/dist/types/components/ic-menu/ic-menu.d.ts +1 -1
  504. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +1 -0
  505. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +3 -3
  506. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +3 -3
  507. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +3 -3
  508. package/dist/types/components/ic-pagination/ic-pagination.d.ts +1 -0
  509. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +1 -0
  510. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +1 -0
  511. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +1 -0
  512. package/dist/types/components/ic-select/ic-select.d.ts +1 -0
  513. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +3 -3
  514. package/dist/types/components/ic-side-navigation/ic-side-navigation.types.d.ts +2 -2
  515. package/dist/types/components/ic-switch/ic-switch.d.ts +1 -0
  516. package/dist/types/components/ic-tab/ic-tab.d.ts +1 -0
  517. package/dist/types/components/ic-text-field/ic-text-field.d.ts +5 -2
  518. package/dist/types/components/ic-theme/ic-theme.d.ts +8 -8
  519. package/dist/types/components/ic-toggle-button/ic-toggle-button.d.ts +1 -0
  520. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +3 -3
  521. package/dist/types/components.d.ts +28 -20
  522. package/dist/types/utils/helpers.d.ts +12 -8
  523. package/dist/types/utils/types.d.ts +5 -5
  524. package/hydrate/index.js +255 -142
  525. package/package.json +4 -2
  526. package/vscode-data.json +10 -6
  527. package/dist/cjs/helpers-529aaa3a.js.map +0 -1
  528. package/dist/core/p-04339c98.entry.js +0 -2
  529. package/dist/core/p-04339c98.entry.js.map +0 -1
  530. package/dist/core/p-0cef50b7.entry.js +0 -2
  531. package/dist/core/p-0cef50b7.entry.js.map +0 -1
  532. package/dist/core/p-274b1ed7.entry.js +0 -2
  533. package/dist/core/p-274b1ed7.entry.js.map +0 -1
  534. package/dist/core/p-2a300ec7.entry.js +0 -2
  535. package/dist/core/p-2a300ec7.entry.js.map +0 -1
  536. package/dist/core/p-303307bb.entry.js +0 -2
  537. package/dist/core/p-303307bb.entry.js.map +0 -1
  538. package/dist/core/p-3317f083.entry.js +0 -2
  539. package/dist/core/p-3317f083.entry.js.map +0 -1
  540. package/dist/core/p-35bd9d76.entry.js +0 -2
  541. package/dist/core/p-35bd9d76.entry.js.map +0 -1
  542. package/dist/core/p-36f4e0bd.entry.js +0 -2
  543. package/dist/core/p-36f4e0bd.entry.js.map +0 -1
  544. package/dist/core/p-48463a79.entry.js.map +0 -1
  545. package/dist/core/p-4fea4610.entry.js.map +0 -1
  546. package/dist/core/p-60d458e5.entry.js.map +0 -1
  547. package/dist/core/p-6bb3ef22.entry.js.map +0 -1
  548. package/dist/core/p-6cb1f1da.entry.js +0 -2
  549. package/dist/core/p-6cb1f1da.entry.js.map +0 -1
  550. package/dist/core/p-79c132e3.entry.js.map +0 -1
  551. package/dist/core/p-7cba80ac.entry.js.map +0 -1
  552. package/dist/core/p-81f80487.entry.js.map +0 -1
  553. package/dist/core/p-85be0268.entry.js.map +0 -1
  554. package/dist/core/p-85d33e38.entry.js.map +0 -1
  555. package/dist/core/p-88810080.entry.js.map +0 -1
  556. package/dist/core/p-a01841e2.entry.js +0 -2
  557. package/dist/core/p-a01841e2.entry.js.map +0 -1
  558. package/dist/core/p-a6be333f.entry.js +0 -2
  559. package/dist/core/p-a6be333f.entry.js.map +0 -1
  560. package/dist/core/p-ae42affc.entry.js +0 -2
  561. package/dist/core/p-ae42affc.entry.js.map +0 -1
  562. package/dist/core/p-ba37e169.entry.js.map +0 -1
  563. package/dist/core/p-ba55afea.entry.js +0 -2
  564. package/dist/core/p-ba55afea.entry.js.map +0 -1
  565. package/dist/core/p-bbd2febe.entry.js +0 -2
  566. package/dist/core/p-bbd2febe.entry.js.map +0 -1
  567. package/dist/core/p-c0d5043e.entry.js +0 -2
  568. package/dist/core/p-c0d5043e.entry.js.map +0 -1
  569. package/dist/core/p-c563d479.entry.js.map +0 -1
  570. package/dist/core/p-c7e01fcd.entry.js.map +0 -1
  571. package/dist/core/p-d3263ed9.entry.js.map +0 -1
  572. package/dist/core/p-d43e0f4b.entry.js +0 -2
  573. package/dist/core/p-d43e0f4b.entry.js.map +0 -1
  574. package/dist/core/p-d987bdc0.entry.js.map +0 -1
  575. package/dist/core/p-f580f0ce.entry.js.map +0 -1
  576. package/dist/core/p-f99576e0.js.map +0 -1
  577. package/dist/esm/helpers-7bf8c67f.js.map +0 -1
  578. /package/dist/core/{p-97e8246c.entry.js.map → p-0d505c1f.entry.js.map} +0 -0
  579. /package/dist/core/{p-e107f362.entry.js.map → p-1234f7a5.entry.js.map} +0 -0
  580. /package/dist/core/{p-78f46cf8.entry.js.map → p-193582d4.entry.js.map} +0 -0
  581. /package/dist/core/{p-15fd6539.entry.js.map → p-4dc48606.entry.js.map} +0 -0
  582. /package/dist/core/{p-c43d676b.entry.js.map → p-518ea375.entry.js.map} +0 -0
  583. /package/dist/core/{p-3a4000d8.entry.js.map → p-520c6089.entry.js.map} +0 -0
  584. /package/dist/core/{p-c5d3c71e.entry.js.map → p-5d653608.entry.js.map} +0 -0
  585. /package/dist/core/{p-c82240b7.entry.js.map → p-61510f00.entry.js.map} +0 -0
  586. /package/dist/core/{p-cdbc3414.entry.js.map → p-7124b387.entry.js.map} +0 -0
  587. /package/dist/core/{p-03dc6b93.entry.js.map → p-91c1327d.entry.js.map} +0 -0
  588. /package/dist/core/{p-a91b0212.entry.js.map → p-98dbbb34.entry.js.map} +0 -0
  589. /package/dist/core/{p-f069f50e.entry.js.map → p-a23c515d.entry.js.map} +0 -0
  590. /package/dist/core/{p-2223c7ee.entry.js.map → p-b27dfa1b.entry.js.map} +0 -0
  591. /package/dist/core/{p-685d6aa9.entry.js.map → p-b2a41070.entry.js.map} +0 -0
  592. /package/dist/core/{p-b06939fa.entry.js.map → p-b5439baa.entry.js.map} +0 -0
  593. /package/dist/core/{p-12f72d83.entry.js.map → p-bc7b8a1e.entry.js.map} +0 -0
  594. /package/dist/core/{p-ec097c1f.entry.js.map → p-c67f7603.entry.js.map} +0 -0
  595. /package/dist/core/{p-98816f52.entry.js.map → p-c83e933c.entry.js.map} +0 -0
  596. /package/dist/core/{p-175baf98.entry.js.map → p-d2909711.entry.js.map} +0 -0
@@ -81,7 +81,7 @@ describe("ic-link component", () => {
81
81
  });
82
82
  expect(page.root).toMatchSnapshot("alert-theme-context");
83
83
  });
84
- it("should correctly set variant on theme change", async () => {
84
+ it("should correctly set variant on brand change", async () => {
85
85
  const page = await newSpecPage({
86
86
  components: [Link],
87
87
  html: `<ic-hero heading="Hero heading" subheading="Hero description">
@@ -89,12 +89,12 @@ describe("ic-link component", () => {
89
89
  </ic-hero>
90
90
  `,
91
91
  });
92
- page.rootInstance.themeChangeHandler({ detail: { mode: "dark" } });
93
- await page.waitForChanges();
94
- expect(page.rootInstance.theme).toBe("dark");
95
- page.rootInstance.themeChangeHandler({ detail: { mode: "light" } });
92
+ page.rootInstance.brandChangeHandler({ detail: { mode: "dark" } });
96
93
  await page.waitForChanges();
97
94
  expect(page.rootInstance.theme).toBe("light");
95
+ page.rootInstance.brandChangeHandler({ detail: { mode: "light" } });
96
+ await page.waitForChanges();
97
+ expect(page.rootInstance.theme).toBe("dark");
98
98
  });
99
99
  it("should call 'setFocus' when link is focused", async () => {
100
100
  const page = await newSpecPage({
@@ -1 +1 @@
1
- {"version":3,"file":"ic-link.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-link/test/basic/ic-link.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Alert } from \"../../../ic-alert/ic-alert\";\nimport { Link } from \"../../ic-link\";\n\ndescribe(\"ic-link component\", () => {\n it(\"should render a link by default with the correct text\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link\");\n });\n\n it(\"should apply the 'download' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link download=\"test-download\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"download-link\");\n });\n\n it(\"should apply the 'href' attribute and ic-link styling to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link href=\"test-href\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-href\");\n });\n\n it(\"should apply the 'dark' theme styling and ic-link styling\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link href=\"test-href\" theme=\"dark\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"link-dark-theme\");\n });\n\n it(\"should apply the 'hreflang' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link hreflang=\"test-hreflang\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-hreflang\");\n });\n\n it(\"should apply the 'referrerpolicy' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link referrerpolicy=\"no-referrer\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-referrerpolicy\");\n });\n\n it(\"should apply the 'rel' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link rel=\"test-rel\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-rel\");\n });\n\n it(\"should apply the 'target' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link target=\"test-target\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-target\");\n });\n\n it(\"should render an 'open in new' icon when target is blank\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link target=\"_blank\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-target-blank\");\n });\n\n it(\"should render a slotted link\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>\n <ic-link slot=\"router-item\">Slotted Link</ic-link>\n </ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"slotted-link\");\n });\n\n it(\"should get theme from context\", async () => {\n const page = await newSpecPage({\n components: [Alert, Link],\n html: `<ic-alert message=\"This has an action\"><ic-link slot=\"action\">Theme context link</ic-link></ic-alert>`,\n });\n\n expect(page.root).toMatchSnapshot(\"alert-theme-context\");\n });\n\n it(\"should correctly set variant on theme change\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-hero heading=\"Hero heading\" subheading=\"Hero description\">\n <ic-link slot=\"interaction\">Link</ic-link>\n </ic-hero>\n`,\n });\n\n page.rootInstance.themeChangeHandler({ detail: { mode: \"dark\" } });\n await page.waitForChanges();\n\n expect(page.rootInstance.theme).toBe(\"dark\");\n\n page.rootInstance.themeChangeHandler({ detail: { mode: \"light\" } });\n await page.waitForChanges();\n\n expect(page.rootInstance.theme).toBe(\"light\");\n });\n\n it(\"should call 'setFocus' when link is focused\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>IC Link Test</ic-link>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n\n it(\"should update any attributes that are inherited from the root element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>IC Link Test</ic-link>`,\n });\n expect(\n page.root.shadowRoot.querySelector(\"a\").getAttribute(\"aria-label\")\n ).toBeNull();\n\n page.root.setAttribute(\"aria-label\", \"new-label\");\n page.rootInstance.hostMutationCallback([{ attributeName: \"aria-label\" }]);\n await page.waitForChanges();\n\n expect(\n page.root.shadowRoot.querySelector(\"a\").getAttribute(\"aria-label\")\n ).toBe(\"new-label\");\n page.rootInstance.disconnectedCallback();\n });\n});\n"]}
1
+ {"version":3,"file":"ic-link.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-link/test/basic/ic-link.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Alert } from \"../../../ic-alert/ic-alert\";\nimport { Link } from \"../../ic-link\";\n\ndescribe(\"ic-link component\", () => {\n it(\"should render a link by default with the correct text\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link\");\n });\n\n it(\"should apply the 'download' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link download=\"test-download\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"download-link\");\n });\n\n it(\"should apply the 'href' attribute and ic-link styling to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link href=\"test-href\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-href\");\n });\n\n it(\"should apply the 'dark' theme styling and ic-link styling\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link href=\"test-href\" theme=\"dark\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"link-dark-theme\");\n });\n\n it(\"should apply the 'hreflang' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link hreflang=\"test-hreflang\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-hreflang\");\n });\n\n it(\"should apply the 'referrerpolicy' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link referrerpolicy=\"no-referrer\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-referrerpolicy\");\n });\n\n it(\"should apply the 'rel' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link rel=\"test-rel\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-rel\");\n });\n\n it(\"should apply the 'target' attribute to the anchor element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link target=\"test-target\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-target\");\n });\n\n it(\"should render an 'open in new' icon when target is blank\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link target=\"_blank\">IC Link Test</ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"default-link-target-blank\");\n });\n\n it(\"should render a slotted link\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>\n <ic-link slot=\"router-item\">Slotted Link</ic-link>\n </ic-link>`,\n });\n\n expect(page.root).toMatchSnapshot(\"slotted-link\");\n });\n\n it(\"should get theme from context\", async () => {\n const page = await newSpecPage({\n components: [Alert, Link],\n html: `<ic-alert message=\"This has an action\"><ic-link slot=\"action\">Theme context link</ic-link></ic-alert>`,\n });\n\n expect(page.root).toMatchSnapshot(\"alert-theme-context\");\n });\n\n it(\"should correctly set variant on brand change\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-hero heading=\"Hero heading\" subheading=\"Hero description\">\n <ic-link slot=\"interaction\">Link</ic-link>\n </ic-hero>\n`,\n });\n\n page.rootInstance.brandChangeHandler({ detail: { mode: \"dark\" } });\n await page.waitForChanges();\n\n expect(page.rootInstance.theme).toBe(\"light\");\n\n page.rootInstance.brandChangeHandler({ detail: { mode: \"light\" } });\n await page.waitForChanges();\n\n expect(page.rootInstance.theme).toBe(\"dark\");\n });\n\n it(\"should call 'setFocus' when link is focused\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>IC Link Test</ic-link>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n\n it(\"should update any attributes that are inherited from the root element\", async () => {\n const page = await newSpecPage({\n components: [Link],\n html: `<ic-link>IC Link Test</ic-link>`,\n });\n expect(\n page.root.shadowRoot.querySelector(\"a\").getAttribute(\"aria-label\")\n ).toBeNull();\n\n page.root.setAttribute(\"aria-label\", \"new-label\");\n page.rootInstance.hostMutationCallback([{ attributeName: \"aria-label\" }]);\n await page.waitForChanges();\n\n expect(\n page.root.shadowRoot.querySelector(\"a\").getAttribute(\"aria-label\")\n ).toBe(\"new-label\");\n page.rootInstance.disconnectedCallback();\n });\n});\n"]}
@@ -705,7 +705,7 @@ export class Menu {
705
705
  this.menuOptions = undefined;
706
706
  this.activationType = "automatic";
707
707
  this.anchorEl = undefined;
708
- this.autoFocusOnSelected = true;
708
+ this.autofocusOnSelected = true;
709
709
  this.closeOnSelect = true;
710
710
  this.fullWidth = false;
711
711
  this.inputEl = undefined;
@@ -776,7 +776,7 @@ export class Menu {
776
776
  if (this.value &&
777
777
  this.keyboardNav &&
778
778
  inputValueInOptions &&
779
- this.autoFocusOnSelected &&
779
+ this.autofocusOnSelected &&
780
780
  !this.isSearchableSelect) {
781
781
  this.scrollToSelected(this.menu);
782
782
  }
@@ -971,7 +971,7 @@ export class Menu {
971
971
  "text": "The reference to an anchor element the menu will position itself from when rendered."
972
972
  }
973
973
  },
974
- "autoFocusOnSelected": {
974
+ "autofocusOnSelected": {
975
975
  "type": "boolean",
976
976
  "mutable": false,
977
977
  "complexType": {
@@ -988,7 +988,7 @@ export class Menu {
988
988
  }],
989
989
  "text": ""
990
990
  },
991
- "attribute": "auto-focus-on-selected",
991
+ "attribute": "autofocus-on-selected",
992
992
  "reflect": false,
993
993
  "defaultValue": "true"
994
994
  },
@@ -1 +1 @@
1
- {"version":3,"file":"ic-menu.js","sourceRoot":"","sources":["../../../src/components/ic-menu/ic-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Method,\n State,\n Watch,\n Fragment,\n} from \"@stencil/core\";\nimport { createPopper, Instance as PopperInstance } from \"@popperjs/core\";\n\nimport {\n IcActivationTypes,\n IcMenuOption,\n IcSizes,\n IcValueEventDetail,\n} from \"../../utils/types\";\nimport Check from \"../../assets/check-icon.svg\";\nimport {\n getOptionsWithoutGroupTitlesCount,\n isMacDevice,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcOptionSelectEventDetail,\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n} from \"./ic-menu.types\";\nimport { IcSearchBarSearchModes } from \"../ic-search-bar/ic-search-bar.types\";\n\n@Component({\n tag: \"ic-menu\",\n styleUrl: \"ic-menu.css\",\n scoped: true,\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class Menu {\n private ACTIVE_DESCENDANT = \"aria-activedescendant\";\n private CLEAR_BUTTON_ID = \"clear-button\";\n private disabledOptionSelected: boolean = false;\n private hasPreviouslyBlurred: boolean = false;\n private hasTimedOut: boolean = false;\n private isLoading: boolean = false;\n private isMultiSelect: boolean = false;\n private isSearchBar: boolean = false;\n private isSearchableSelect: boolean = false;\n private lastOptionSelected: number = null; // Index of last option selected\n private lastOptionFocused: number = null; // Index of last option focused\n private menu: HTMLUListElement;\n private multiOptionClicked: string = null;\n private popperInstance: PopperInstance;\n private preventClickOpen: boolean = false; // Prevents menu re-opening immediately after it is closed on blur when clicking input.\n private preventMenuFocus: boolean = false; // (When multiple) ensures focus moves straight to select all button from menu.\n private selectAllButton: HTMLIcButtonElement;\n private shiftPressed: boolean = false;\n private ungroupedOptions: IcMenuOption[] = [];\n\n @Element() host: HTMLIcMenuElement;\n\n @State() focusFromSearchKeypress: boolean = false;\n @State() initialOptionsListRender: boolean = false;\n @State() keyboardNav: boolean = false;\n @State() optionHighlighted: string;\n @State() preventIncorrectTabOrder: boolean = false;\n @State() menuOptions: IcMenuOption[];\n\n /**\n * Determines whether options manually set as values (by pressing 'Enter') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The reference to an anchor element the menu will position itself from when rendered.\n */\n @Prop() anchorEl!: HTMLElement;\n\n /**\n * @internal If `true`, autofocus will be applied on selected item when menu is open.\n */\n @Prop() autoFocusOnSelected: boolean = true;\n\n /**\n * If `true`, the menu will close when an option is selected.\n */\n @Prop() closeOnSelect: boolean = true;\n\n /**\n * If `true`, the menu will fill the width of the container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The reference to the input element.\n */\n @Prop() inputEl!: HTMLElement;\n\n /**\n * The label for the input element.\n */\n @Prop() inputLabel!: string;\n\n /**\n * The custom name for the label field for IcMenuOption.\n */\n @Prop() labelField: string = \"label\";\n\n /**\n * The ID of the menu.\n */\n @Prop() menuId!: string;\n\n /**\n * If `true`, the menu will be displayed open.\n */\n @Prop({ reflect: true }) open!: boolean;\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (!this.open && this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n\n /**\n * @internal - The parent element if ic-menu is nested inside another component.\n */\n @Prop() parentEl?: HTMLElement;\n\n /**\n * Specify the mode search bar uses to search. `navigation` allows for quick lookups of a set of values, `query` allows for more general searches.\n */\n @Prop() searchMode?: IcSearchBarSearchModes = \"navigation\";\n\n /**\n * @internal If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown.\n */\n @Prop() selectOnEnter?: boolean = false;\n\n /**\n * The size of the menu.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * The possible menu selection options.\n */\n @Prop() options!: IcMenuOption[];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n this.isLoading = newOptions.some((opt) => opt.loading);\n this.ungroupedOptions = [];\n this.loadUngroupedOptions();\n }\n\n /**\n * The value of the currently selected option - or array of values (if multiple options allowed).\n */\n @Prop() value!: string | string[];\n\n /**\n * The custom name for the value field for IcMenuOption.\n */\n @Prop() valueField: string = \"value\";\n\n /**\n * @internal Emitted when key is pressed while menu is open.\n */\n @Event() menuKeyPress: EventEmitter<{ isNavKey: boolean; key: string }>;\n\n /**\n * @internal Emitted when an option has been highlighted.\n */\n @Event() menuOptionId: EventEmitter<IcMenuOptionIdEventDetail>;\n\n /**\n * @internal Emitted when an option is selected.\n */\n @Event() menuOptionSelect!: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * @internal Emitted when all options are selected or deselected.\n */\n @Event() menuOptionSelectAll!: EventEmitter<{ select: boolean }>;\n\n /**\n * @internal Emitted when state of menu changes (i.e. open or closed).\n */\n @Event() menuStateChange!: EventEmitter<IcMenuChangeEventDetail>;\n\n /**\n * @internal Emitted when the retry button is clicked.\n */\n @Event() retryButtonClicked: EventEmitter<IcValueEventDetail>;\n\n /**\n * @internal Emitted when the timeout menu loses focus.\n */\n @Event() timeoutBlur: EventEmitter<{ ev: FocusEvent }>;\n\n /**\n * @internal Emitted when the ungrouped options have been set.\n */\n @Event() ungroupedOptionsSet: EventEmitter<{ options: IcMenuOption[] }>;\n\n connectedCallback(): void {\n this.getParentEl(this.parentEl);\n\n if (this.isSearchBar) {\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n this.initialOptionsListRender = true;\n }\n }\n\n disconnectedCallback(): void {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n }\n this.parentEl?.removeEventListener(\"icClear\", this.handleClearListener);\n this.parentEl?.removeEventListener(\n \"icSubmitSearch\",\n this.handleSubmitSearch\n );\n }\n\n componentWillLoad(): void {\n this.loadUngroupedOptions();\n this.parentEl.addEventListener(\"icClear\", this.handleClearListener);\n this.parentEl.addEventListener(\"icSubmitSearch\", this.handleSubmitSearch);\n this.hasTimedOut = this.options?.some((opt) => opt.timedOut);\n this.isLoading = this.options?.some((opt) => opt.loading);\n }\n\n componentDidLoad(): void {\n if (\n this.isSearchBar &&\n (this.parentEl as HTMLIcSearchBarElement).disableAutoFiltering\n ) {\n this.focusFromSearchKeypress = true;\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.open, propName: \"open\" },\n { prop: this.options, propName: \"options\" },\n { prop: this.menuId, propName: \"menu-id\" },\n { prop: this.inputLabel, propName: \"input-label\" },\n //NOTE: no check for value, input-el or anchor-el as otherwise get console errors on first load of select component\n ],\n \"Menu\"\n );\n }\n\n componentDidUpdate(): void {\n const inputValueInOptions = this.options.some(\n (option) => option[this.valueField] === this.value\n );\n\n if (this.open && this.options.length !== 0 && !this.preventMenuFocus) {\n if (\n this.value &&\n this.keyboardNav &&\n inputValueInOptions &&\n this.autoFocusOnSelected &&\n !this.isSearchableSelect\n ) {\n this.scrollToSelected(this.menu);\n } else if (this.selectOnEnter) {\n this.menu.focus();\n } else if (\n !!this.optionHighlighted &&\n !this.focusFromSearchKeypress &&\n !this.preventIncorrectTabOrder\n ) {\n const highlightedEl = this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement;\n\n if (highlightedEl) {\n this.menu.setAttribute(this.ACTIVE_DESCENDANT, highlightedEl.id);\n highlightedEl.focus();\n }\n } else if (\n this.inputEl.tagName !== \"IC-TEXT-FIELD\" &&\n this.inputEl.tagName !== \"INPUT\"\n ) {\n this.menu.focus();\n }\n }\n\n if (this.open && !this.value && this.selectOnEnter) {\n this.scrollToSelected(this.menu);\n }\n\n this.preventMenuFocus = false;\n }\n\n componentDidRender(): void {\n if (this.open && !this.popperInstance && this.anchorEl) {\n this.initPopperJs(this.anchorEl);\n }\n\n if (this.open && !!this.options.length) {\n this.setMenuScrollbar();\n }\n }\n\n /**\n * @internal If menu is opened with the mouse, emit menuStateChange custom event.\n */\n @Method()\n async handleClickOpen(): Promise<void> {\n if (!this.preventClickOpen) {\n this.menuStateChange.emit({ open: !this.open });\n this.keyboardNav = false;\n }\n this.preventClickOpen = false;\n }\n\n /**\n * Used alongside activationType\n * If menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\n * @param {KeyboardEvent} event The keyboard event which is available when handleKeyboardOpen is invoked.\n */\n @Method()\n async handleKeyboardOpen(event: KeyboardEvent): Promise<void> {\n if (this.activationType === \"automatic\") {\n this.autoSetInputValueKeyboardOpen(event);\n } else {\n this.manualSetInputValueKeyboardOpen(event);\n }\n }\n\n /**\n * @internal Used to highlight the first option in the menu.\n */\n @Method()\n async handleSetFirstOption(): Promise<void> {\n this.setHighlightedOption(0);\n }\n\n /**\n * @internal Used to initialize popperJS with an anchor element.\n * 5/12/2023: Tested with Floating UI, however, discovered inconsistent\n * boundary behaviour so sticking with PopperJS.\n */\n @Method()\n async initPopperJs(anchor: HTMLElement): Promise<void> {\n // Placements set to \"-start\" to accommodate for custom menu width - menu should always be aligned to the left\n this.popperInstance = createPopper(anchor, this.host, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 7],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top-start\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n }\n\n private handleClearListener = (): void => {\n this.optionHighlighted = \"\";\n };\n\n private handleSubmitSearch = (): void => {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option[this.valueField] === this.optionHighlighted\n );\n\n this.setInputValue(highlightedOptionIndex);\n };\n\n private handleMenuChange = (open: boolean, focusInput?: boolean): void => {\n this.menuStateChange.emit({ open, focusInput });\n\n if (!open) {\n if (focusInput !== false) {\n this.inputEl.focus();\n this.preventClickOpen = false;\n }\n\n // Reset optionHighlighted so previously highlighted option doesn't get reselected when Enter pressed\n if (this.isMultiSelect) {\n this.optionHighlighted = undefined;\n this.multiOptionClicked = null;\n }\n }\n };\n\n private setNextOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex + 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex + 1][this.valueField],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex + 1][this.valueField]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n optionId: this.getOptionId(this.ungroupedOptions[0][this.valueField]),\n });\n }\n };\n\n private setPreviousOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex - 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex - 1][this.valueField],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex - 1][this.valueField]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ],\n optionId: this.getOptionId(\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ]\n ),\n });\n }\n };\n\n private getParentEl = (parent: HTMLElement) => {\n if (parent.tagName === \"IC-SEARCH-BAR\") {\n this.isSearchBar = true;\n } else if (parent.tagName === \"IC-SELECT\") {\n if (\n parent.getAttribute(\"searchable\") !== null &&\n parent.getAttribute(\"searchable\") !== undefined\n ) {\n this.isSearchableSelect = true;\n } else if (\n parent.getAttribute(\"multiple\") !== null &&\n parent.getAttribute(\"multiple\") !== undefined\n ) {\n this.isMultiSelect = true;\n }\n }\n };\n\n // Open menu when up or down arrow keys are pressed\n private arrowBehaviour = (event: KeyboardEvent): void => {\n event.preventDefault();\n this.handleMenuChange(true);\n };\n\n private getMenuOptions = () =>\n this.isSearchBar ? this.options : this.ungroupedOptions;\n\n // Set option that is focused and so should show focus state\n private setHighlightedOption = (highlightedIndex: number): void => {\n const menuOptions = this.getMenuOptions();\n\n menuOptions[highlightedIndex] &&\n !menuOptions[highlightedIndex].timedOut &&\n (this.optionHighlighted =\n menuOptions[highlightedIndex][this.valueField] || undefined);\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is closed\n private autoSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField] === this.value\n );\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setNextOptionValue(selectedOptionIndex);\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setPreviousOptionValue(selectedOptionIndex);\n break;\n case \" \":\n case \"Enter\":\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n break;\n }\n };\n\n private selectHighlightedOption = (\n options: IcMenuOption[],\n highlightedOptionIndex: number\n ) => {\n if (!this.isLoading && !this.hasTimedOut) {\n this.keyboardNav = true;\n }\n\n const isOpen: boolean =\n this.isSearchBar || this.isSearchableSelect || this.open;\n\n if (isOpen) {\n if (highlightedOptionIndex >= 0) {\n if (options[highlightedOptionIndex] !== undefined) {\n if (\n this.isSearchBar &&\n options[highlightedOptionIndex].disabled === true\n ) {\n this.disabledOptionSelected = true;\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n }\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n } else {\n this.handleMenuChange(true);\n }\n };\n\n // Check if option is selected based on the index of the option\n private isOptionSelected = (index: number) => {\n const menuOptions = this.getMenuOptions();\n\n return this.value\n ? this.value.includes(menuOptions[index][this.valueField])\n : false;\n };\n\n // Deselect currently selected options when shift pressed, but keep certain options selected\n private deselectSelectedOptions = (optionsToKeepSelected: number[]) => {\n const menuOptions = this.getMenuOptions();\n\n if (this.value) {\n const selectedOptionIndexes = (this.value as string[]).map((value) => {\n return menuOptions.findIndex(\n (option) => option[this.valueField] === value\n );\n });\n\n // Call setInputValue (which toggles the selected state) on options that need to be deselected\n selectedOptionIndexes.forEach(\n (index) =>\n !optionsToKeepSelected.includes(index) && this.setInputValue(index)\n );\n }\n };\n\n // Determines keyboard behaviour when selection is manual (i.e. when you have to press Enter to select an option)\n private manualSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const menuOptions = this.getMenuOptions();\n\n // For preventing focus disappearing on currently focused option when Shift / Cmd / Ctrl pressed\n // (i.e. when user is likely in the middle of executing a keyboard combination to select options)\n const isKeyboardCombination =\n event.shiftKey || event.metaKey || event.ctrlKey;\n\n const highlightedOptionIndex = this.getOptionHighlightedIndex();\n\n const clickedMultiOptionIndex = menuOptions.findIndex(\n (option) => option[this.valueField] === this.multiOptionClicked\n );\n\n const getOptionId = (index: number): string =>\n Array.from(this.host.querySelectorAll(\"li\"))[index]?.id;\n\n // Space press should be equivalent to Enter when multi-select\n if (event.key === \" \" && this.isMultiSelect) {\n this.handleOptionSelect(event, highlightedOptionIndex);\n } else {\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the top of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (highlightedOptionIndex < menuOptions.length - 1) {\n this.setHighlightedOption(highlightedOptionIndex + 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex + 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex + 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0),\n });\n\n this.handleSingleShiftSelect(event, 0, menuOptions);\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.isMultiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the bottom of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (\n highlightedOptionIndex <= 0 ||\n highlightedOptionIndex > menuOptions.length + 1\n ) {\n this.setHighlightedOption(menuOptions.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(menuOptions.length - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n menuOptions.length - 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(highlightedOptionIndex - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex - 1,\n menuOptions\n );\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.isMultiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"Home\": {\n const startOptionIndex = 0;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(startOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(startOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(startOptionIndex);\n }\n\n this.lastOptionFocused = startOptionIndex;\n this.lastOptionSelected = startOptionIndex;\n break;\n }\n case \"End\": {\n const endOptionIndex = menuOptions.length - 1;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(endOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(endOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(endOptionIndex);\n }\n\n this.lastOptionFocused = endOptionIndex;\n this.lastOptionSelected = endOptionIndex;\n break;\n }\n case \" \":\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n if (this.isSearchBar || this.isSearchableSelect) {\n break;\n } else {\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n }\n break;\n case \"Enter\":\n event.preventDefault();\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.handleOptionSelect(event, highlightedOptionIndex);\n break;\n case \"Escape\":\n if (this.open) {\n event.stopImmediatePropagation();\n }\n this.handleMenuChange(false);\n this.menuOptionId.emit({ optionId: undefined });\n break;\n case \"a\":\n // Checks if Cmd (meta) key is pressed if Mac device (while excluding meta key on Windows)\n // Otherwise, if a different OS, checks Ctrl key\n if (\n (isMacDevice() && event.metaKey) ||\n (!isMacDevice() && event.ctrlKey)\n ) {\n this.emitSelectAll();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n break;\n case \"Shift\":\n case \"Tab\":\n if (event.key === \"Shift\") {\n this.shiftPressed = true;\n }\n if (this.isSearchBar) {\n this.keyboardNav = true;\n }\n if (this.isMultiSelect) {\n if (this.open && !event.shiftKey && this.selectAllButton) {\n event.preventDefault();\n this.selectAllButton.focus(); // Move focus to select all button instead of focused option\n this.preventMenuFocus = true;\n this.preventClickOpen = true;\n this.optionHighlighted = undefined; // Stop any option focus states showing when focus moved to select all button\n }\n } else {\n this.preventIncorrectTabOrder = true;\n }\n break;\n default:\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex);\n }\n }\n };\n\n private setInputValue = (highlightedOptionIndex: number) => {\n const menuOptions = this.getMenuOptions();\n\n if (menuOptions[highlightedOptionIndex] !== undefined) {\n this.menuOptionSelect.emit({\n value: menuOptions[highlightedOptionIndex][this.valueField],\n });\n\n if (this.closeOnSelect) {\n this.optionHighlighted = undefined;\n this.menuOptionId.emit({ optionId: undefined });\n }\n }\n\n if (this.closeOnSelect) {\n if (!this.hasTimedOut) {\n this.handleMenuChange(false);\n } else {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n }\n }\n };\n\n private handleOptionClick = (event: MouseEvent): void => {\n const { value, label } = (event.target as HTMLLIElement).dataset;\n\n if (this.isMultiSelect) {\n const menuOptions = this.getMenuOptions();\n const selectedOptionIndex = menuOptions.findIndex(\n (option) => option.value === value\n );\n\n this.handleOptionSelect(event, selectedOptionIndex, true);\n this.multiOptionClicked = value;\n } else {\n this.menuOptionSelect.emit({ value, label });\n this.handleMenuChange(false);\n }\n\n this.optionHighlighted = undefined;\n };\n\n private handleRetry = (): void => {\n this.retryButtonClicked.emit({ value: this.value });\n };\n\n private handleRetryKeyDown = (ev: KeyboardEvent): void => {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.preventDefault();\n this.retryButtonClicked.emit({ value: this.value, keyPressed: ev.key });\n }\n };\n\n private handleBlur = (event: FocusEvent): void => {\n if (event.relatedTarget !== this.inputEl) {\n if (event.relatedTarget === this.selectAllButton) {\n this.menu.removeAttribute(this.ACTIVE_DESCENDANT);\n }\n\n if (\n !(\n this.menu.contains(event.relatedTarget as HTMLElement) ||\n event.relatedTarget === this.selectAllButton\n )\n ) {\n this.handleMenuChange(false, this.hasPreviouslyBlurred);\n this.menu.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n } else {\n this.handleMenuChange(false);\n this.preventClickOpen = true;\n this.menu.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n if (!this.isSearchBar) this.hasPreviouslyBlurred = !!event.relatedTarget;\n };\n\n private handleMouseDown = (event: Event): void => {\n event.preventDefault();\n };\n\n private handleMenuKeyDown = (event: KeyboardEvent) => {\n if (this.activationType === \"automatic\") {\n this.autoSetValueOnMenuKeyDown(event);\n } else if (this.activationType === \"manual\" && !this.isSearchBar) {\n this.manualSetInputValueKeyboardOpen(event);\n }\n };\n\n private handleMenuKeyUp = (event: KeyboardEvent): void => {\n if (event.key === \"Tab\" && event.shiftKey) {\n this.preventClickOpen = false;\n }\n if (event.key === \"Enter\" && this.disabledOptionSelected) {\n this.disabledOptionSelected = false;\n event.stopImmediatePropagation();\n }\n\n if (event.key === \"Shift\") {\n this.shiftPressed = false;\n }\n };\n\n private handleSelectAllClick = () => {\n this.keyboardNav = false;\n this.menu.focus();\n this.emitSelectAll();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n private handleSelectAllBlur = (event: FocusEvent) => {\n this.host.classList.remove(\"ic-select-select-all-focused\");\n if (!this.menu.contains(event.relatedTarget as HTMLElement)) {\n this.handleMenuChange(false, false);\n }\n };\n\n private handleSelectAllFocus = () => {\n this.host.classList.add(\"ic-select-select-all-focused\");\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n // Fix for Safari - select all button click was causing menu to close\n private handleSelectAllMouseDown = (event: Event) => {\n event.preventDefault();\n };\n\n // When shift key is being used to select contiguous options one by one on a multi-select\n // I.e. holding shift and pressing up and down arrow keys\n private handleSingleShiftSelect = (\n event: KeyboardEvent,\n optionToSelectIndex: number,\n options: IcMenuOption[]\n ) => {\n if (\n this.isMultiSelect &&\n event.shiftKey &&\n !this.isOptionSelected(optionToSelectIndex)\n ) {\n this.selectHighlightedOption(options, optionToSelectIndex);\n this.lastOptionSelected = optionToSelectIndex;\n }\n };\n\n // When shift key is being used to select multiple options at once on a multi-select\n // I.e. holding shift when selecting another option\n private handleMultipleShiftSelect = (\n lastOptionInSelection: number,\n useFocusForSelection = false,\n firstOptionSelected: number = null\n ) => {\n this.shiftPressed = false;\n\n const firstOptionInSelection =\n firstOptionSelected === null\n ? this.getFirstOptionInSelection(useFocusForSelection)\n : firstOptionSelected;\n if (firstOptionInSelection !== null) {\n const optionsToSelect = [];\n\n if (firstOptionInSelection < lastOptionInSelection) {\n for (\n let i = firstOptionInSelection;\n i < lastOptionInSelection + 1;\n i++\n ) {\n optionsToSelect.push(i);\n }\n } else {\n for (\n let i = firstOptionInSelection;\n i > lastOptionInSelection - 1;\n i--\n ) {\n optionsToSelect.push(i);\n }\n }\n\n optionsToSelect.forEach(\n (optionIndex) =>\n !this.isOptionSelected(optionIndex) && this.setInputValue(optionIndex)\n );\n this.deselectSelectedOptions(optionsToSelect);\n }\n };\n\n private handleOptionSelect = (\n event: KeyboardEvent | MouseEvent,\n optionIndex: number,\n useFocusForSelection = false\n ) => {\n const menuOptions = this.getMenuOptions();\n const firstOptionInSelection =\n this.getFirstOptionInSelection(useFocusForSelection);\n if (event.shiftKey && firstOptionInSelection !== null) {\n this.handleMultipleShiftSelect(\n optionIndex,\n useFocusForSelection,\n firstOptionInSelection\n );\n } else {\n this.selectHighlightedOption(menuOptions, optionIndex);\n }\n\n this.lastOptionFocused = optionIndex;\n this.lastOptionSelected = optionIndex;\n };\n\n private getFirstOptionInSelection = (\n useFocusForSelection: boolean\n ): number => {\n return useFocusForSelection && this.lastOptionFocused !== null\n ? this.lastOptionFocused\n : this.lastOptionSelected !== null\n ? this.lastOptionSelected\n : null;\n };\n\n private emitSelectAll = () => {\n // Select all if there is either no value or not all options are selected\n // 'true' means select all, 'false' means clear all\n this.menuOptionSelectAll.emit({\n select:\n !this.value || !(this.value?.length === this.ungroupedOptions.length),\n });\n };\n\n private emitMenuKeyPress = (isNavKey: boolean, key: string) => {\n this.menuKeyPress.emit({ isNavKey: isNavKey, key: key });\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is focused\n private autoSetValueOnMenuKeyDown = (event: KeyboardEvent): void => {\n event.cancelBubble = true;\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField] === this.value\n );\n\n const isSearchableSelect = this.inputEl.tagName === \"INPUT\";\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \" \":\n event.preventDefault();\n break;\n case \"ArrowUp\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setPreviousOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"ArrowDown\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setNextOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"Home\":\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n });\n this.keyboardNav = true;\n break;\n case \"End\":\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ],\n });\n this.keyboardNav = true;\n break;\n case \"Enter\":\n !this.hasTimedOut && this.handleMenuChange(false);\n break;\n case \"Escape\":\n this.handleMenuChange(false);\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n case \"Shift\":\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\" && !this.hasTimedOut) {\n this.inputEl.focus();\n }\n if (event.key.length === 1) {\n this.keyboardNav = true;\n }\n break;\n }\n this.emitMenuKeyPress(this.keyboardNav, event.key);\n };\n\n private getOptionId = (value: string): string => {\n return `${this.menuId}-${value}`;\n };\n\n private getOptionAriaLabel = (\n option: IcMenuOption,\n parentOption: IcMenuOption\n ): string => {\n let ariaLabel = option[this.labelField];\n\n if (option.description) {\n ariaLabel = `${ariaLabel}, ${option.description}`;\n }\n\n if (option.element) {\n ariaLabel = `${ariaLabel}, ${option.element.ariaLabel}`;\n }\n\n if (parentOption) {\n return `${ariaLabel}, ${parentOption[this.labelField]} group`;\n } else {\n return ariaLabel;\n }\n };\n\n private getSortedOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n let sorted: IcMenuOption[] = [];\n if (options.sort) {\n sorted = options.sort((optionA, optionB) =>\n optionA.recommended && !optionB.recommended ? -1 : 0\n );\n }\n return sorted;\n };\n\n private getOptionHighlightedIndex = () => {\n const menuOptions = this.getMenuOptions();\n\n return menuOptions.findIndex(\n (option) => option[this.valueField] === this.optionHighlighted\n );\n };\n\n private isManualMode = this.activationType === \"manual\";\n\n private scrollToSelected = (menu: HTMLUListElement) => {\n const selectedOption = this.selectOnEnter\n ? (this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement)\n : (menu.querySelector(\".option[aria-selected='true']\") as HTMLElement);\n\n if (selectedOption) {\n const elTop = selectedOption.offsetTop + selectedOption.offsetHeight;\n if (\n elTop > menu.scrollTop + menu.offsetHeight ||\n elTop < menu.scrollTop + menu.offsetHeight\n ) {\n menu.scrollTop = selectedOption.offsetTop;\n }\n // 'aria-activedescendant' affects screen reader focus\n // https://www.w3.org/TR/2017/WD-wai-aria-practices-1.1-20170628/#kbd_focus_activedescendant\n this.menu.setAttribute(this.ACTIVE_DESCENDANT, selectedOption.id);\n selectedOption.focus();\n }\n };\n\n // Set 'ungroupedOptions' variable and emit its value\n // - this is all the options with disabled options and group titles removed\n private loadUngroupedOptions = () => {\n if (this.options.length > 0 && this.options.map) {\n this.options.map((option) => {\n if (option.children) {\n option.children.map(\n (option) => !option.disabled && this.ungroupedOptions.push(option)\n );\n } else if (!option.disabled) {\n this.ungroupedOptions.push(option);\n }\n });\n }\n this.ungroupedOptions = this.getSortedOptions(this.ungroupedOptions);\n this.ungroupedOptionsSet.emit({ options: this.ungroupedOptions });\n };\n\n private setMenuScrollbar = () => {\n let optionsHeight = 0;\n this.host\n .querySelectorAll(\".option\")\n .forEach((option) => (optionsHeight += option.clientHeight));\n\n if (optionsHeight >= 320) {\n this.menu.classList.add(\"menu-scroll\");\n }\n };\n\n private handleTimeoutBlur = (ev: FocusEvent) => {\n this.timeoutBlur.emit({ ev });\n };\n\n private focusOnSearchOrSelectInput(\n menuOptions: IcMenuOption[],\n highlightedOptionIndex: number\n ) {\n if (!menuOptions[highlightedOptionIndex]) return;\n\n if (this.isSearchBar) {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n }\n\n if (this.isSearchableSelect) {\n (this.parentEl as HTMLIcSelectElement).setFocus();\n }\n\n this.focusFromSearchKeypress = true;\n }\n\n private optionContent = (option: IcMenuOption, selected: boolean) => {\n const showCheckIcon =\n !!option[this.valueField] &&\n !!this.value &&\n selected &&\n this.parentEl.tagName !== \"IC-SEARCH-BAR\";\n\n return (\n <Fragment>\n {option.loading && <ic-loading-indicator size=\"icon\" />}\n <div\n class={{\n \"option-text-container\": true,\n \"show-check-icon\": showCheckIcon,\n }}\n >\n <div class=\"option-label\">\n {option.icon && (\n <div\n class=\"option-icon\"\n innerHTML={option.icon}\n aria-hidden=\"true\"\n ></div>\n )}\n <ic-typography variant=\"body\" aria-hidden=\"true\">\n {option[this.labelField]}\n </ic-typography>\n </div>\n {option.description && (\n <ic-typography\n id={`${this.getOptionId(option[this.valueField])}-description`}\n class=\"option-description\"\n variant=\"caption\"\n aria-hidden=\"true\"\n >\n <p>{option.description}</p>\n </ic-typography>\n )}\n {option.element && (\n <div\n class=\"option-element\"\n innerHTML={option.element.component}\n aria-hidden=\"true\"\n ></div>\n )}\n </div>\n {showCheckIcon && <span class=\"check-icon\" innerHTML={Check} />}\n </Fragment>\n );\n };\n\n private displayOption = (\n option: IcMenuOption,\n selected: boolean,\n index?: number,\n parentOption?: IcMenuOption\n ): HTMLLIElement => {\n const {\n open,\n keyboardNav,\n isManualMode,\n initialOptionsListRender,\n optionHighlighted,\n options,\n } = this;\n\n return (\n <li\n id={this.getOptionId(option[this.valueField])}\n class={{\n option: true,\n \"focused-option\": isManualMode\n ? (keyboardNav || initialOptionsListRender) &&\n option[this.valueField] === optionHighlighted\n : keyboardNav && selected,\n \"last-recommended-option\":\n option.recommended &&\n options[index + 1] &&\n !options[index + 1].recommended,\n \"disabled-option\": option.disabled,\n \"loading-option\": option.loading,\n timeout: option.timedOut,\n }}\n role=\"option\"\n tabindex={\n open &&\n (selected || option[this.valueField] === optionHighlighted) &&\n keyboardNav\n ? \"0\"\n : \"-1\"\n }\n aria-label={this.getOptionAriaLabel(option, parentOption)}\n aria-selected={selected ? \"true\" : \"false\"}\n aria-disabled={option.disabled ? \"true\" : \"false\"}\n onClick={!option.timedOut && !option.loading && this.handleOptionClick}\n onBlur={this.handleBlur}\n onMouseDown={this.handleMouseDown}\n data-value={option[this.valueField]}\n data-label={option[this.labelField]}\n >\n {option.timedOut ? (\n <Fragment>\n <div class=\"loading-error-info\">\n <svg\n class=\"error-icon-svg\"\n aria-labelledby=\"error-title\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"#000000\"\n >\n <title id=\"error-title\">Error</title>\n <g id=\"close-octagon\">\n <path\n id=\"Vector\"\n d=\"M8.77 3L3.5 8.27V15.73L8.77 21H16.23L21.5 15.73V8.27L16.23 3M8.91 7L12.5 10.59L16.09 7L17.5 8.41L13.91 12L17.5 15.59L16.09 17L12.5 13.41L8.91 17L7.5 15.59L11.09 12L7.5 8.41\"\n />\n </g>\n </svg>\n <ic-typography variant=\"label\">\n {option[this.labelField]}\n </ic-typography>\n </div>\n <ic-button\n size=\"small\"\n variant=\"tertiary\"\n onClick={this.handleRetry}\n onKeyDown={this.handleRetryKeyDown}\n onBlur={this.handleTimeoutBlur}\n id=\"retry-button\"\n >\n Retry\n </ic-button>\n </Fragment>\n ) : (\n this.optionContent(option, selected)\n )}\n </li>\n );\n };\n\n render() {\n const {\n inputLabel,\n options,\n menuId,\n value,\n fullWidth,\n hasTimedOut,\n isLoading,\n size,\n open,\n inputEl,\n keyboardNav,\n } = this;\n\n const selectAllButtonText = `${\n value?.length === this.ungroupedOptions.length ? \"Clear\" : \"Select\"\n } all`;\n\n const hasNoResults = this.host.classList.contains(\"no-results\");\n\n return (\n <Host\n class={{\n \"ic-menu-full-width\": fullWidth,\n \"ic-menu-no-focus\":\n inputEl?.tagName === \"INPUT\" || hasTimedOut || isLoading,\n [`ic-menu-${size}`]: true,\n \"ic-menu-open\": open && options.length !== 0,\n \"ic-menu-multiple\": this.isMultiSelect,\n }}\n >\n {options.length !== 0 && (\n <ul\n id={menuId}\n class=\"menu\"\n role=\"listbox\"\n aria-label={`${inputLabel} pop-up`}\n aria-multiselectable={this.isMultiSelect ? \"true\" : \"false\"}\n tabindex={\n open && !keyboardNav && inputEl?.tagName !== \"INPUT\" ? \"0\" : \"-1\"\n }\n ref={(el) => (this.menu = el)}\n onKeyDown={this.handleMenuKeyDown}\n onKeyUp={this.handleMenuKeyUp}\n onBlur={this.handleBlur}\n >\n {this.getSortedOptions(options).map((option, index) => {\n if (option.children) {\n if (option.children.length > 0) {\n return (\n <div>\n <ic-typography\n class=\"option-group-title\"\n role=\"presentation\"\n variant=\"subtitle-small\"\n >\n <p>{option[this.labelField]}</p>\n </ic-typography>\n {option.children.map(\n (childOption) =>\n childOption.label &&\n this.displayOption(\n childOption,\n this.isMultiSelect\n ? value?.includes(childOption[this.valueField])\n : childOption[this.valueField] === value,\n index,\n option\n )\n )}\n </div>\n );\n } else {\n return null;\n }\n } else {\n // Display option only if it has a label (rather than displaying an empty space)\n return (\n option.label &&\n this.displayOption(\n option,\n this.isMultiSelect\n ? value?.includes(option[this.valueField])\n : option[this.valueField] === value,\n index\n )\n );\n }\n })}\n </ul>\n )}\n {options.length !== 0 &&\n this.isMultiSelect &&\n !isLoading &&\n !hasTimedOut &&\n !hasNoResults && (\n <div class=\"option-bar\">\n <ic-typography>\n <p>{`${\n value ? value.length : 0\n }/${getOptionsWithoutGroupTitlesCount(\n this.options\n )} selected`}</p>\n </ic-typography>\n <ic-button\n class=\"select-all-button\"\n aria-label={`${selectAllButtonText} options for ${inputLabel}`}\n ref={(el: HTMLIcButtonElement) => (this.selectAllButton = el)}\n variant=\"tertiary\"\n onClick={this.handleSelectAllClick}\n onMouseDown={this.handleSelectAllMouseDown}\n onBlur={this.handleSelectAllBlur}\n onFocus={this.handleSelectAllFocus}\n size={size === \"small\" ? \"small\" : \"medium\"}\n >\n {selectAllButtonText}\n </ic-button>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-menu.js","sourceRoot":"","sources":["../../../src/components/ic-menu/ic-menu.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Prop,\n Method,\n State,\n Watch,\n Fragment,\n} from \"@stencil/core\";\nimport { createPopper, Instance as PopperInstance } from \"@popperjs/core\";\n\nimport {\n IcActivationTypes,\n IcMenuOption,\n IcSizes,\n IcValueEventDetail,\n} from \"../../utils/types\";\nimport Check from \"../../assets/check-icon.svg\";\nimport {\n getOptionsWithoutGroupTitlesCount,\n isMacDevice,\n onComponentRequiredPropUndefined,\n} from \"../../utils/helpers\";\nimport {\n IcOptionSelectEventDetail,\n IcMenuChangeEventDetail,\n IcMenuOptionIdEventDetail,\n} from \"./ic-menu.types\";\nimport { IcSearchBarSearchModes } from \"../ic-search-bar/ic-search-bar.types\";\n\n@Component({\n tag: \"ic-menu\",\n styleUrl: \"ic-menu.css\",\n scoped: true,\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class Menu {\n private ACTIVE_DESCENDANT = \"aria-activedescendant\";\n private CLEAR_BUTTON_ID = \"clear-button\";\n private disabledOptionSelected: boolean = false;\n private hasPreviouslyBlurred: boolean = false;\n private hasTimedOut: boolean = false;\n private isLoading: boolean = false;\n private isMultiSelect: boolean = false;\n private isSearchBar: boolean = false;\n private isSearchableSelect: boolean = false;\n private lastOptionSelected: number = null; // Index of last option selected\n private lastOptionFocused: number = null; // Index of last option focused\n private menu: HTMLUListElement;\n private multiOptionClicked: string = null;\n private popperInstance: PopperInstance;\n private preventClickOpen: boolean = false; // Prevents menu re-opening immediately after it is closed on blur when clicking input.\n private preventMenuFocus: boolean = false; // (When multiple) ensures focus moves straight to select all button from menu.\n private selectAllButton: HTMLIcButtonElement;\n private shiftPressed: boolean = false;\n private ungroupedOptions: IcMenuOption[] = [];\n\n @Element() host: HTMLIcMenuElement;\n\n @State() focusFromSearchKeypress: boolean = false;\n @State() initialOptionsListRender: boolean = false;\n @State() keyboardNav: boolean = false;\n @State() optionHighlighted: string;\n @State() preventIncorrectTabOrder: boolean = false;\n @State() menuOptions: IcMenuOption[];\n\n /**\n * Determines whether options manually set as values (by pressing 'Enter') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The reference to an anchor element the menu will position itself from when rendered.\n */\n @Prop() anchorEl!: HTMLElement;\n\n /**\n * @internal If `true`, autofocus will be applied on selected item when menu is open.\n */\n @Prop() autofocusOnSelected: boolean = true;\n\n /**\n * If `true`, the menu will close when an option is selected.\n */\n @Prop() closeOnSelect: boolean = true;\n\n /**\n * If `true`, the menu will fill the width of the container.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The reference to the input element.\n */\n @Prop() inputEl!: HTMLElement;\n\n /**\n * The label for the input element.\n */\n @Prop() inputLabel!: string;\n\n /**\n * The custom name for the label field for IcMenuOption.\n */\n @Prop() labelField: string = \"label\";\n\n /**\n * The ID of the menu.\n */\n @Prop() menuId!: string;\n\n /**\n * If `true`, the menu will be displayed open.\n */\n @Prop({ reflect: true }) open!: boolean;\n\n @Watch(\"open\")\n watchOpenHandler(): void {\n if (!this.open && this.popperInstance) {\n this.popperInstance.destroy();\n this.popperInstance = null;\n }\n }\n\n /**\n * @internal - The parent element if ic-menu is nested inside another component.\n */\n @Prop() parentEl?: HTMLElement;\n\n /**\n * Specify the mode search bar uses to search. `navigation` allows for quick lookups of a set of values, `query` allows for more general searches.\n */\n @Prop() searchMode?: IcSearchBarSearchModes = \"navigation\";\n\n /**\n * @internal If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown.\n */\n @Prop() selectOnEnter?: boolean = false;\n\n /**\n * The size of the menu.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * The possible menu selection options.\n */\n @Prop() options!: IcMenuOption[];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n this.isLoading = newOptions.some((opt) => opt.loading);\n this.ungroupedOptions = [];\n this.loadUngroupedOptions();\n }\n\n /**\n * The value of the currently selected option - or array of values (if multiple options allowed).\n */\n @Prop() value!: string | string[];\n\n /**\n * The custom name for the value field for IcMenuOption.\n */\n @Prop() valueField: string = \"value\";\n\n /**\n * @internal Emitted when key is pressed while menu is open.\n */\n @Event() menuKeyPress: EventEmitter<{ isNavKey: boolean; key: string }>;\n\n /**\n * @internal Emitted when an option has been highlighted.\n */\n @Event() menuOptionId: EventEmitter<IcMenuOptionIdEventDetail>;\n\n /**\n * @internal Emitted when an option is selected.\n */\n @Event() menuOptionSelect!: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * @internal Emitted when all options are selected or deselected.\n */\n @Event() menuOptionSelectAll!: EventEmitter<{ select: boolean }>;\n\n /**\n * @internal Emitted when state of menu changes (i.e. open or closed).\n */\n @Event() menuStateChange!: EventEmitter<IcMenuChangeEventDetail>;\n\n /**\n * @internal Emitted when the retry button is clicked.\n */\n @Event() retryButtonClicked: EventEmitter<IcValueEventDetail>;\n\n /**\n * @internal Emitted when the timeout menu loses focus.\n */\n @Event() timeoutBlur: EventEmitter<{ ev: FocusEvent }>;\n\n /**\n * @internal Emitted when the ungrouped options have been set.\n */\n @Event() ungroupedOptionsSet: EventEmitter<{ options: IcMenuOption[] }>;\n\n connectedCallback(): void {\n this.getParentEl(this.parentEl);\n\n if (this.isSearchBar) {\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n this.initialOptionsListRender = true;\n }\n }\n\n disconnectedCallback(): void {\n if (this.popperInstance) {\n this.popperInstance.destroy();\n }\n this.parentEl?.removeEventListener(\"icClear\", this.handleClearListener);\n this.parentEl?.removeEventListener(\n \"icSubmitSearch\",\n this.handleSubmitSearch\n );\n }\n\n componentWillLoad(): void {\n this.loadUngroupedOptions();\n this.parentEl.addEventListener(\"icClear\", this.handleClearListener);\n this.parentEl.addEventListener(\"icSubmitSearch\", this.handleSubmitSearch);\n this.hasTimedOut = this.options?.some((opt) => opt.timedOut);\n this.isLoading = this.options?.some((opt) => opt.loading);\n }\n\n componentDidLoad(): void {\n if (\n this.isSearchBar &&\n (this.parentEl as HTMLIcSearchBarElement).disableAutoFiltering\n ) {\n this.focusFromSearchKeypress = true;\n }\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.open, propName: \"open\" },\n { prop: this.options, propName: \"options\" },\n { prop: this.menuId, propName: \"menu-id\" },\n { prop: this.inputLabel, propName: \"input-label\" },\n //NOTE: no check for value, input-el or anchor-el as otherwise get console errors on first load of select component\n ],\n \"Menu\"\n );\n }\n\n componentDidUpdate(): void {\n const inputValueInOptions = this.options.some(\n (option) => option[this.valueField] === this.value\n );\n\n if (this.open && this.options.length !== 0 && !this.preventMenuFocus) {\n if (\n this.value &&\n this.keyboardNav &&\n inputValueInOptions &&\n this.autofocusOnSelected &&\n !this.isSearchableSelect\n ) {\n this.scrollToSelected(this.menu);\n } else if (this.selectOnEnter) {\n this.menu.focus();\n } else if (\n !!this.optionHighlighted &&\n !this.focusFromSearchKeypress &&\n !this.preventIncorrectTabOrder\n ) {\n const highlightedEl = this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement;\n\n if (highlightedEl) {\n this.menu.setAttribute(this.ACTIVE_DESCENDANT, highlightedEl.id);\n highlightedEl.focus();\n }\n } else if (\n this.inputEl.tagName !== \"IC-TEXT-FIELD\" &&\n this.inputEl.tagName !== \"INPUT\"\n ) {\n this.menu.focus();\n }\n }\n\n if (this.open && !this.value && this.selectOnEnter) {\n this.scrollToSelected(this.menu);\n }\n\n this.preventMenuFocus = false;\n }\n\n componentDidRender(): void {\n if (this.open && !this.popperInstance && this.anchorEl) {\n this.initPopperJs(this.anchorEl);\n }\n\n if (this.open && !!this.options.length) {\n this.setMenuScrollbar();\n }\n }\n\n /**\n * @internal If menu is opened with the mouse, emit menuStateChange custom event.\n */\n @Method()\n async handleClickOpen(): Promise<void> {\n if (!this.preventClickOpen) {\n this.menuStateChange.emit({ open: !this.open });\n this.keyboardNav = false;\n }\n this.preventClickOpen = false;\n }\n\n /**\n * Used alongside activationType\n * If menu is opened via keyboard navigation (i.e. Enter, ArrowUp or ArrowDown), emit optionSelect custom event.\n * @param {KeyboardEvent} event The keyboard event which is available when handleKeyboardOpen is invoked.\n */\n @Method()\n async handleKeyboardOpen(event: KeyboardEvent): Promise<void> {\n if (this.activationType === \"automatic\") {\n this.autoSetInputValueKeyboardOpen(event);\n } else {\n this.manualSetInputValueKeyboardOpen(event);\n }\n }\n\n /**\n * @internal Used to highlight the first option in the menu.\n */\n @Method()\n async handleSetFirstOption(): Promise<void> {\n this.setHighlightedOption(0);\n }\n\n /**\n * @internal Used to initialize popperJS with an anchor element.\n * 5/12/2023: Tested with Floating UI, however, discovered inconsistent\n * boundary behaviour so sticking with PopperJS.\n */\n @Method()\n async initPopperJs(anchor: HTMLElement): Promise<void> {\n // Placements set to \"-start\" to accommodate for custom menu width - menu should always be aligned to the left\n this.popperInstance = createPopper(anchor, this.host, {\n placement: \"bottom-start\",\n modifiers: [\n {\n name: \"offset\",\n options: {\n offset: [0, 7],\n },\n },\n {\n name: \"flip\",\n options: {\n fallbackPlacements: [\"top-start\"],\n rootBoundary: \"viewport\",\n },\n },\n ],\n });\n }\n\n private handleClearListener = (): void => {\n this.optionHighlighted = \"\";\n };\n\n private handleSubmitSearch = (): void => {\n const highlightedOptionIndex = this.options.findIndex(\n (option) => option[this.valueField] === this.optionHighlighted\n );\n\n this.setInputValue(highlightedOptionIndex);\n };\n\n private handleMenuChange = (open: boolean, focusInput?: boolean): void => {\n this.menuStateChange.emit({ open, focusInput });\n\n if (!open) {\n if (focusInput !== false) {\n this.inputEl.focus();\n this.preventClickOpen = false;\n }\n\n // Reset optionHighlighted so previously highlighted option doesn't get reselected when Enter pressed\n if (this.isMultiSelect) {\n this.optionHighlighted = undefined;\n this.multiOptionClicked = null;\n }\n }\n };\n\n private setNextOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex + 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex + 1][this.valueField],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex + 1][this.valueField]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n optionId: this.getOptionId(this.ungroupedOptions[0][this.valueField]),\n });\n }\n };\n\n private setPreviousOptionValue = (selectedOptionIndex: number): void => {\n if (this.ungroupedOptions[selectedOptionIndex - 1]) {\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[selectedOptionIndex - 1][this.valueField],\n optionId: this.getOptionId(\n this.ungroupedOptions[selectedOptionIndex - 1][this.valueField]\n ),\n });\n } else {\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ],\n optionId: this.getOptionId(\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ]\n ),\n });\n }\n };\n\n private getParentEl = (parent: HTMLElement) => {\n if (parent.tagName === \"IC-SEARCH-BAR\") {\n this.isSearchBar = true;\n } else if (parent.tagName === \"IC-SELECT\") {\n if (\n parent.getAttribute(\"searchable\") !== null &&\n parent.getAttribute(\"searchable\") !== undefined\n ) {\n this.isSearchableSelect = true;\n } else if (\n parent.getAttribute(\"multiple\") !== null &&\n parent.getAttribute(\"multiple\") !== undefined\n ) {\n this.isMultiSelect = true;\n }\n }\n };\n\n // Open menu when up or down arrow keys are pressed\n private arrowBehaviour = (event: KeyboardEvent): void => {\n event.preventDefault();\n this.handleMenuChange(true);\n };\n\n private getMenuOptions = () =>\n this.isSearchBar ? this.options : this.ungroupedOptions;\n\n // Set option that is focused and so should show focus state\n private setHighlightedOption = (highlightedIndex: number): void => {\n const menuOptions = this.getMenuOptions();\n\n menuOptions[highlightedIndex] &&\n !menuOptions[highlightedIndex].timedOut &&\n (this.optionHighlighted =\n menuOptions[highlightedIndex][this.valueField] || undefined);\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is closed\n private autoSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField] === this.value\n );\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setNextOptionValue(selectedOptionIndex);\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n this.setPreviousOptionValue(selectedOptionIndex);\n break;\n case \" \":\n case \"Enter\":\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n break;\n }\n };\n\n private selectHighlightedOption = (\n options: IcMenuOption[],\n highlightedOptionIndex: number\n ) => {\n if (!this.isLoading && !this.hasTimedOut) {\n this.keyboardNav = true;\n }\n\n const isOpen: boolean =\n this.isSearchBar || this.isSearchableSelect || this.open;\n\n if (isOpen) {\n if (highlightedOptionIndex >= 0) {\n if (options[highlightedOptionIndex] !== undefined) {\n if (\n this.isSearchBar &&\n options[highlightedOptionIndex].disabled === true\n ) {\n this.disabledOptionSelected = true;\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n }\n } else {\n this.setInputValue(highlightedOptionIndex);\n }\n } else {\n this.handleMenuChange(true);\n }\n };\n\n // Check if option is selected based on the index of the option\n private isOptionSelected = (index: number) => {\n const menuOptions = this.getMenuOptions();\n\n return this.value\n ? this.value.includes(menuOptions[index][this.valueField])\n : false;\n };\n\n // Deselect currently selected options when shift pressed, but keep certain options selected\n private deselectSelectedOptions = (optionsToKeepSelected: number[]) => {\n const menuOptions = this.getMenuOptions();\n\n if (this.value) {\n const selectedOptionIndexes = (this.value as string[]).map((value) => {\n return menuOptions.findIndex(\n (option) => option[this.valueField] === value\n );\n });\n\n // Call setInputValue (which toggles the selected state) on options that need to be deselected\n selectedOptionIndexes.forEach(\n (index) =>\n !optionsToKeepSelected.includes(index) && this.setInputValue(index)\n );\n }\n };\n\n // Determines keyboard behaviour when selection is manual (i.e. when you have to press Enter to select an option)\n private manualSetInputValueKeyboardOpen = (event: KeyboardEvent) => {\n const menuOptions = this.getMenuOptions();\n\n // For preventing focus disappearing on currently focused option when Shift / Cmd / Ctrl pressed\n // (i.e. when user is likely in the middle of executing a keyboard combination to select options)\n const isKeyboardCombination =\n event.shiftKey || event.metaKey || event.ctrlKey;\n\n const highlightedOptionIndex = this.getOptionHighlightedIndex();\n\n const clickedMultiOptionIndex = menuOptions.findIndex(\n (option) => option[this.valueField] === this.multiOptionClicked\n );\n\n const getOptionId = (index: number): string =>\n Array.from(this.host.querySelectorAll(\"li\"))[index]?.id;\n\n // Space press should be equivalent to Enter when multi-select\n if (event.key === \" \" && this.isMultiSelect) {\n this.handleOptionSelect(event, highlightedOptionIndex);\n } else {\n switch (event.key) {\n case \"ArrowDown\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the top of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (highlightedOptionIndex < menuOptions.length - 1) {\n this.setHighlightedOption(highlightedOptionIndex + 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex + 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex + 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(0);\n this.menuOptionId.emit({\n optionId: getOptionId(0),\n });\n\n this.handleSingleShiftSelect(event, 0, menuOptions);\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.isMultiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"ArrowUp\":\n this.keyboardNav = true;\n this.arrowBehaviour(event);\n if (this.multiOptionClicked) {\n // Set focus to option last clicked\n // Prevents it resetting to the bottom of the menu when user switches to using keyboard\n this.setHighlightedOption(clickedMultiOptionIndex);\n this.multiOptionClicked = null;\n } else {\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex,\n menuOptions\n );\n\n if (\n highlightedOptionIndex <= 0 ||\n highlightedOptionIndex > menuOptions.length + 1\n ) {\n this.setHighlightedOption(menuOptions.length - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(menuOptions.length - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n menuOptions.length - 1,\n menuOptions\n );\n } else {\n this.setHighlightedOption(highlightedOptionIndex - 1);\n this.menuOptionId.emit({\n optionId: getOptionId(highlightedOptionIndex - 1),\n });\n\n this.handleSingleShiftSelect(\n event,\n highlightedOptionIndex - 1,\n menuOptions\n );\n }\n\n // Deselect currently selected options if arrow was pressed for first time after shift is held\n if (this.isMultiSelect && this.shiftPressed) {\n this.deselectSelectedOptions([\n highlightedOptionIndex,\n this.getOptionHighlightedIndex(),\n ]);\n this.shiftPressed = false;\n }\n }\n\n this.lastOptionFocused = this.getOptionHighlightedIndex();\n this.preventIncorrectTabOrder = false;\n this.focusFromSearchKeypress = false;\n break;\n case \"Home\": {\n const startOptionIndex = 0;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(startOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(startOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(startOptionIndex);\n }\n\n this.lastOptionFocused = startOptionIndex;\n this.lastOptionSelected = startOptionIndex;\n break;\n }\n case \"End\": {\n const endOptionIndex = menuOptions.length - 1;\n\n this.keyboardNav = true;\n event.preventDefault();\n this.arrowBehaviour(event);\n this.setHighlightedOption(endOptionIndex);\n this.menuOptionId.emit({\n optionId: getOptionId(endOptionIndex),\n });\n\n if (event.shiftKey && event.ctrlKey) {\n this.handleMultipleShiftSelect(endOptionIndex);\n }\n\n this.lastOptionFocused = endOptionIndex;\n this.lastOptionSelected = endOptionIndex;\n break;\n }\n case \" \":\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n if (this.isSearchBar || this.isSearchableSelect) {\n break;\n } else {\n if ((event.target as HTMLElement).id !== this.CLEAR_BUTTON_ID) {\n this.handleMenuChange(true);\n }\n }\n break;\n case \"Enter\":\n event.preventDefault();\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.handleOptionSelect(event, highlightedOptionIndex);\n break;\n case \"Escape\":\n if (this.open) {\n event.stopImmediatePropagation();\n }\n this.handleMenuChange(false);\n this.menuOptionId.emit({ optionId: undefined });\n break;\n case \"a\":\n // Checks if Cmd (meta) key is pressed if Mac device (while excluding meta key on Windows)\n // Otherwise, if a different OS, checks Ctrl key\n if (\n (isMacDevice() && event.metaKey) ||\n (!isMacDevice() && event.ctrlKey)\n ) {\n this.emitSelectAll();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n break;\n case \"Shift\":\n case \"Tab\":\n if (event.key === \"Shift\") {\n this.shiftPressed = true;\n }\n if (this.isSearchBar) {\n this.keyboardNav = true;\n }\n if (this.isMultiSelect) {\n if (this.open && !event.shiftKey && this.selectAllButton) {\n event.preventDefault();\n this.selectAllButton.focus(); // Move focus to select all button instead of focused option\n this.preventMenuFocus = true;\n this.preventClickOpen = true;\n this.optionHighlighted = undefined; // Stop any option focus states showing when focus moved to select all button\n }\n } else {\n this.preventIncorrectTabOrder = true;\n }\n break;\n default:\n if (!isKeyboardCombination) {\n this.keyboardNav = false;\n }\n this.focusOnSearchOrSelectInput(menuOptions, highlightedOptionIndex);\n }\n }\n };\n\n private setInputValue = (highlightedOptionIndex: number) => {\n const menuOptions = this.getMenuOptions();\n\n if (menuOptions[highlightedOptionIndex] !== undefined) {\n this.menuOptionSelect.emit({\n value: menuOptions[highlightedOptionIndex][this.valueField],\n });\n\n if (this.closeOnSelect) {\n this.optionHighlighted = undefined;\n this.menuOptionId.emit({ optionId: undefined });\n }\n }\n\n if (this.closeOnSelect) {\n if (!this.hasTimedOut) {\n this.handleMenuChange(false);\n } else {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n }\n }\n };\n\n private handleOptionClick = (event: MouseEvent): void => {\n const { value, label } = (event.target as HTMLLIElement).dataset;\n\n if (this.isMultiSelect) {\n const menuOptions = this.getMenuOptions();\n const selectedOptionIndex = menuOptions.findIndex(\n (option) => option.value === value\n );\n\n this.handleOptionSelect(event, selectedOptionIndex, true);\n this.multiOptionClicked = value;\n } else {\n this.menuOptionSelect.emit({ value, label });\n this.handleMenuChange(false);\n }\n\n this.optionHighlighted = undefined;\n };\n\n private handleRetry = (): void => {\n this.retryButtonClicked.emit({ value: this.value });\n };\n\n private handleRetryKeyDown = (ev: KeyboardEvent): void => {\n if (ev.key === \"Enter\" || ev.key === \" \") {\n ev.preventDefault();\n this.retryButtonClicked.emit({ value: this.value, keyPressed: ev.key });\n }\n };\n\n private handleBlur = (event: FocusEvent): void => {\n if (event.relatedTarget !== this.inputEl) {\n if (event.relatedTarget === this.selectAllButton) {\n this.menu.removeAttribute(this.ACTIVE_DESCENDANT);\n }\n\n if (\n !(\n this.menu.contains(event.relatedTarget as HTMLElement) ||\n event.relatedTarget === this.selectAllButton\n )\n ) {\n this.handleMenuChange(false, this.hasPreviouslyBlurred);\n this.menu.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n } else {\n this.handleMenuChange(false);\n this.preventClickOpen = true;\n this.menu.removeAttribute(this.ACTIVE_DESCENDANT);\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n }\n if (!this.isSearchBar) this.hasPreviouslyBlurred = !!event.relatedTarget;\n };\n\n private handleMouseDown = (event: Event): void => {\n event.preventDefault();\n };\n\n private handleMenuKeyDown = (event: KeyboardEvent) => {\n if (this.activationType === \"automatic\") {\n this.autoSetValueOnMenuKeyDown(event);\n } else if (this.activationType === \"manual\" && !this.isSearchBar) {\n this.manualSetInputValueKeyboardOpen(event);\n }\n };\n\n private handleMenuKeyUp = (event: KeyboardEvent): void => {\n if (event.key === \"Tab\" && event.shiftKey) {\n this.preventClickOpen = false;\n }\n if (event.key === \"Enter\" && this.disabledOptionSelected) {\n this.disabledOptionSelected = false;\n event.stopImmediatePropagation();\n }\n\n if (event.key === \"Shift\") {\n this.shiftPressed = false;\n }\n };\n\n private handleSelectAllClick = () => {\n this.keyboardNav = false;\n this.menu.focus();\n this.emitSelectAll();\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n private handleSelectAllBlur = (event: FocusEvent) => {\n this.host.classList.remove(\"ic-select-select-all-focused\");\n if (!this.menu.contains(event.relatedTarget as HTMLElement)) {\n this.handleMenuChange(false, false);\n }\n };\n\n private handleSelectAllFocus = () => {\n this.host.classList.add(\"ic-select-select-all-focused\");\n this.lastOptionFocused = null;\n this.lastOptionSelected = null;\n };\n\n // Fix for Safari - select all button click was causing menu to close\n private handleSelectAllMouseDown = (event: Event) => {\n event.preventDefault();\n };\n\n // When shift key is being used to select contiguous options one by one on a multi-select\n // I.e. holding shift and pressing up and down arrow keys\n private handleSingleShiftSelect = (\n event: KeyboardEvent,\n optionToSelectIndex: number,\n options: IcMenuOption[]\n ) => {\n if (\n this.isMultiSelect &&\n event.shiftKey &&\n !this.isOptionSelected(optionToSelectIndex)\n ) {\n this.selectHighlightedOption(options, optionToSelectIndex);\n this.lastOptionSelected = optionToSelectIndex;\n }\n };\n\n // When shift key is being used to select multiple options at once on a multi-select\n // I.e. holding shift when selecting another option\n private handleMultipleShiftSelect = (\n lastOptionInSelection: number,\n useFocusForSelection = false,\n firstOptionSelected: number = null\n ) => {\n this.shiftPressed = false;\n\n const firstOptionInSelection =\n firstOptionSelected === null\n ? this.getFirstOptionInSelection(useFocusForSelection)\n : firstOptionSelected;\n if (firstOptionInSelection !== null) {\n const optionsToSelect = [];\n\n if (firstOptionInSelection < lastOptionInSelection) {\n for (\n let i = firstOptionInSelection;\n i < lastOptionInSelection + 1;\n i++\n ) {\n optionsToSelect.push(i);\n }\n } else {\n for (\n let i = firstOptionInSelection;\n i > lastOptionInSelection - 1;\n i--\n ) {\n optionsToSelect.push(i);\n }\n }\n\n optionsToSelect.forEach(\n (optionIndex) =>\n !this.isOptionSelected(optionIndex) && this.setInputValue(optionIndex)\n );\n this.deselectSelectedOptions(optionsToSelect);\n }\n };\n\n private handleOptionSelect = (\n event: KeyboardEvent | MouseEvent,\n optionIndex: number,\n useFocusForSelection = false\n ) => {\n const menuOptions = this.getMenuOptions();\n const firstOptionInSelection =\n this.getFirstOptionInSelection(useFocusForSelection);\n if (event.shiftKey && firstOptionInSelection !== null) {\n this.handleMultipleShiftSelect(\n optionIndex,\n useFocusForSelection,\n firstOptionInSelection\n );\n } else {\n this.selectHighlightedOption(menuOptions, optionIndex);\n }\n\n this.lastOptionFocused = optionIndex;\n this.lastOptionSelected = optionIndex;\n };\n\n private getFirstOptionInSelection = (\n useFocusForSelection: boolean\n ): number => {\n return useFocusForSelection && this.lastOptionFocused !== null\n ? this.lastOptionFocused\n : this.lastOptionSelected !== null\n ? this.lastOptionSelected\n : null;\n };\n\n private emitSelectAll = () => {\n // Select all if there is either no value or not all options are selected\n // 'true' means select all, 'false' means clear all\n this.menuOptionSelectAll.emit({\n select:\n !this.value || !(this.value?.length === this.ungroupedOptions.length),\n });\n };\n\n private emitMenuKeyPress = (isNavKey: boolean, key: string) => {\n this.menuKeyPress.emit({ isNavKey: isNavKey, key: key });\n };\n\n // Determines keyboard behaviour when selection is automatic\n // (i.e. you don't have to press Enter select an option - just focus on it)\n // and menu is focused\n private autoSetValueOnMenuKeyDown = (event: KeyboardEvent): void => {\n event.cancelBubble = true;\n const selectedOptionIndex = this.ungroupedOptions.findIndex(\n (option) => option[this.valueField] === this.value\n );\n\n const isSearchableSelect = this.inputEl.tagName === \"INPUT\";\n\n this.keyboardNav = false;\n\n switch (event.key) {\n case \" \":\n event.preventDefault();\n break;\n case \"ArrowUp\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setPreviousOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"ArrowDown\":\n if (!this.hasTimedOut) {\n event.preventDefault();\n this.setNextOptionValue(selectedOptionIndex);\n this.keyboardNav = true;\n }\n break;\n case \"Home\":\n this.menuOptionSelect.emit({\n value: this.ungroupedOptions[0][this.valueField],\n });\n this.keyboardNav = true;\n break;\n case \"End\":\n this.menuOptionSelect.emit({\n value:\n this.ungroupedOptions[this.ungroupedOptions.length - 1][\n this.valueField\n ],\n });\n this.keyboardNav = true;\n break;\n case \"Enter\":\n !this.hasTimedOut && this.handleMenuChange(false);\n break;\n case \"Escape\":\n this.handleMenuChange(false);\n break;\n case \"Backspace\":\n if (isSearchableSelect) {\n this.inputEl.focus();\n }\n break;\n case \"Shift\":\n break;\n default:\n if (isSearchableSelect && event.key !== \"Tab\" && !this.hasTimedOut) {\n this.inputEl.focus();\n }\n if (event.key.length === 1) {\n this.keyboardNav = true;\n }\n break;\n }\n this.emitMenuKeyPress(this.keyboardNav, event.key);\n };\n\n private getOptionId = (value: string): string => {\n return `${this.menuId}-${value}`;\n };\n\n private getOptionAriaLabel = (\n option: IcMenuOption,\n parentOption: IcMenuOption\n ): string => {\n let ariaLabel = option[this.labelField];\n\n if (option.description) {\n ariaLabel = `${ariaLabel}, ${option.description}`;\n }\n\n if (option.element) {\n ariaLabel = `${ariaLabel}, ${option.element.ariaLabel}`;\n }\n\n if (parentOption) {\n return `${ariaLabel}, ${parentOption[this.labelField]} group`;\n } else {\n return ariaLabel;\n }\n };\n\n private getSortedOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n let sorted: IcMenuOption[] = [];\n if (options.sort) {\n sorted = options.sort((optionA, optionB) =>\n optionA.recommended && !optionB.recommended ? -1 : 0\n );\n }\n return sorted;\n };\n\n private getOptionHighlightedIndex = () => {\n const menuOptions = this.getMenuOptions();\n\n return menuOptions.findIndex(\n (option) => option[this.valueField] === this.optionHighlighted\n );\n };\n\n private isManualMode = this.activationType === \"manual\";\n\n private scrollToSelected = (menu: HTMLUListElement) => {\n const selectedOption = this.selectOnEnter\n ? (this.host.querySelector(\n `li[data-value=\"${this.optionHighlighted}\"]`\n ) as HTMLElement)\n : (menu.querySelector(\".option[aria-selected='true']\") as HTMLElement);\n\n if (selectedOption) {\n const elTop = selectedOption.offsetTop + selectedOption.offsetHeight;\n if (\n elTop > menu.scrollTop + menu.offsetHeight ||\n elTop < menu.scrollTop + menu.offsetHeight\n ) {\n menu.scrollTop = selectedOption.offsetTop;\n }\n // 'aria-activedescendant' affects screen reader focus\n // https://www.w3.org/TR/2017/WD-wai-aria-practices-1.1-20170628/#kbd_focus_activedescendant\n this.menu.setAttribute(this.ACTIVE_DESCENDANT, selectedOption.id);\n selectedOption.focus();\n }\n };\n\n // Set 'ungroupedOptions' variable and emit its value\n // - this is all the options with disabled options and group titles removed\n private loadUngroupedOptions = () => {\n if (this.options.length > 0 && this.options.map) {\n this.options.map((option) => {\n if (option.children) {\n option.children.map(\n (option) => !option.disabled && this.ungroupedOptions.push(option)\n );\n } else if (!option.disabled) {\n this.ungroupedOptions.push(option);\n }\n });\n }\n this.ungroupedOptions = this.getSortedOptions(this.ungroupedOptions);\n this.ungroupedOptionsSet.emit({ options: this.ungroupedOptions });\n };\n\n private setMenuScrollbar = () => {\n let optionsHeight = 0;\n this.host\n .querySelectorAll(\".option\")\n .forEach((option) => (optionsHeight += option.clientHeight));\n\n if (optionsHeight >= 320) {\n this.menu.classList.add(\"menu-scroll\");\n }\n };\n\n private handleTimeoutBlur = (ev: FocusEvent) => {\n this.timeoutBlur.emit({ ev });\n };\n\n private focusOnSearchOrSelectInput(\n menuOptions: IcMenuOption[],\n highlightedOptionIndex: number\n ) {\n if (!menuOptions[highlightedOptionIndex]) return;\n\n if (this.isSearchBar) {\n (this.parentEl as HTMLIcSearchBarElement).setFocus();\n if (this.searchMode === \"navigation\") this.setHighlightedOption(0);\n }\n\n if (this.isSearchableSelect) {\n (this.parentEl as HTMLIcSelectElement).setFocus();\n }\n\n this.focusFromSearchKeypress = true;\n }\n\n private optionContent = (option: IcMenuOption, selected: boolean) => {\n const showCheckIcon =\n !!option[this.valueField] &&\n !!this.value &&\n selected &&\n this.parentEl.tagName !== \"IC-SEARCH-BAR\";\n\n return (\n <Fragment>\n {option.loading && <ic-loading-indicator size=\"icon\" />}\n <div\n class={{\n \"option-text-container\": true,\n \"show-check-icon\": showCheckIcon,\n }}\n >\n <div class=\"option-label\">\n {option.icon && (\n <div\n class=\"option-icon\"\n innerHTML={option.icon}\n aria-hidden=\"true\"\n ></div>\n )}\n <ic-typography variant=\"body\" aria-hidden=\"true\">\n {option[this.labelField]}\n </ic-typography>\n </div>\n {option.description && (\n <ic-typography\n id={`${this.getOptionId(option[this.valueField])}-description`}\n class=\"option-description\"\n variant=\"caption\"\n aria-hidden=\"true\"\n >\n <p>{option.description}</p>\n </ic-typography>\n )}\n {option.element && (\n <div\n class=\"option-element\"\n innerHTML={option.element.component}\n aria-hidden=\"true\"\n ></div>\n )}\n </div>\n {showCheckIcon && <span class=\"check-icon\" innerHTML={Check} />}\n </Fragment>\n );\n };\n\n private displayOption = (\n option: IcMenuOption,\n selected: boolean,\n index?: number,\n parentOption?: IcMenuOption\n ): HTMLLIElement => {\n const {\n open,\n keyboardNav,\n isManualMode,\n initialOptionsListRender,\n optionHighlighted,\n options,\n } = this;\n\n return (\n <li\n id={this.getOptionId(option[this.valueField])}\n class={{\n option: true,\n \"focused-option\": isManualMode\n ? (keyboardNav || initialOptionsListRender) &&\n option[this.valueField] === optionHighlighted\n : keyboardNav && selected,\n \"last-recommended-option\":\n option.recommended &&\n options[index + 1] &&\n !options[index + 1].recommended,\n \"disabled-option\": option.disabled,\n \"loading-option\": option.loading,\n timeout: option.timedOut,\n }}\n role=\"option\"\n tabindex={\n open &&\n (selected || option[this.valueField] === optionHighlighted) &&\n keyboardNav\n ? \"0\"\n : \"-1\"\n }\n aria-label={this.getOptionAriaLabel(option, parentOption)}\n aria-selected={selected ? \"true\" : \"false\"}\n aria-disabled={option.disabled ? \"true\" : \"false\"}\n onClick={!option.timedOut && !option.loading && this.handleOptionClick}\n onBlur={this.handleBlur}\n onMouseDown={this.handleMouseDown}\n data-value={option[this.valueField]}\n data-label={option[this.labelField]}\n >\n {option.timedOut ? (\n <Fragment>\n <div class=\"loading-error-info\">\n <svg\n class=\"error-icon-svg\"\n aria-labelledby=\"error-title\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"#000000\"\n >\n <title id=\"error-title\">Error</title>\n <g id=\"close-octagon\">\n <path\n id=\"Vector\"\n d=\"M8.77 3L3.5 8.27V15.73L8.77 21H16.23L21.5 15.73V8.27L16.23 3M8.91 7L12.5 10.59L16.09 7L17.5 8.41L13.91 12L17.5 15.59L16.09 17L12.5 13.41L8.91 17L7.5 15.59L11.09 12L7.5 8.41\"\n />\n </g>\n </svg>\n <ic-typography variant=\"label\">\n {option[this.labelField]}\n </ic-typography>\n </div>\n <ic-button\n size=\"small\"\n variant=\"tertiary\"\n onClick={this.handleRetry}\n onKeyDown={this.handleRetryKeyDown}\n onBlur={this.handleTimeoutBlur}\n id=\"retry-button\"\n >\n Retry\n </ic-button>\n </Fragment>\n ) : (\n this.optionContent(option, selected)\n )}\n </li>\n );\n };\n\n render() {\n const {\n inputLabel,\n options,\n menuId,\n value,\n fullWidth,\n hasTimedOut,\n isLoading,\n size,\n open,\n inputEl,\n keyboardNav,\n } = this;\n\n const selectAllButtonText = `${\n value?.length === this.ungroupedOptions.length ? \"Clear\" : \"Select\"\n } all`;\n\n const hasNoResults = this.host.classList.contains(\"no-results\");\n\n return (\n <Host\n class={{\n \"ic-menu-full-width\": fullWidth,\n \"ic-menu-no-focus\":\n inputEl?.tagName === \"INPUT\" || hasTimedOut || isLoading,\n [`ic-menu-${size}`]: true,\n \"ic-menu-open\": open && options.length !== 0,\n \"ic-menu-multiple\": this.isMultiSelect,\n }}\n >\n {options.length !== 0 && (\n <ul\n id={menuId}\n class=\"menu\"\n role=\"listbox\"\n aria-label={`${inputLabel} pop-up`}\n aria-multiselectable={this.isMultiSelect ? \"true\" : \"false\"}\n tabindex={\n open && !keyboardNav && inputEl?.tagName !== \"INPUT\" ? \"0\" : \"-1\"\n }\n ref={(el) => (this.menu = el)}\n onKeyDown={this.handleMenuKeyDown}\n onKeyUp={this.handleMenuKeyUp}\n onBlur={this.handleBlur}\n >\n {this.getSortedOptions(options).map((option, index) => {\n if (option.children) {\n if (option.children.length > 0) {\n return (\n <div>\n <ic-typography\n class=\"option-group-title\"\n role=\"presentation\"\n variant=\"subtitle-small\"\n >\n <p>{option[this.labelField]}</p>\n </ic-typography>\n {option.children.map(\n (childOption) =>\n childOption.label &&\n this.displayOption(\n childOption,\n this.isMultiSelect\n ? value?.includes(childOption[this.valueField])\n : childOption[this.valueField] === value,\n index,\n option\n )\n )}\n </div>\n );\n } else {\n return null;\n }\n } else {\n // Display option only if it has a label (rather than displaying an empty space)\n return (\n option.label &&\n this.displayOption(\n option,\n this.isMultiSelect\n ? value?.includes(option[this.valueField])\n : option[this.valueField] === value,\n index\n )\n );\n }\n })}\n </ul>\n )}\n {options.length !== 0 &&\n this.isMultiSelect &&\n !isLoading &&\n !hasTimedOut &&\n !hasNoResults && (\n <div class=\"option-bar\">\n <ic-typography>\n <p>{`${\n value ? value.length : 0\n }/${getOptionsWithoutGroupTitlesCount(\n this.options\n )} selected`}</p>\n </ic-typography>\n <ic-button\n class=\"select-all-button\"\n aria-label={`${selectAllButtonText} options for ${inputLabel}`}\n ref={(el: HTMLIcButtonElement) => (this.selectAllButton = el)}\n variant=\"tertiary\"\n onClick={this.handleSelectAllClick}\n onMouseDown={this.handleSelectAllMouseDown}\n onBlur={this.handleSelectAllBlur}\n onFocus={this.handleSelectAllFocus}\n size={size === \"small\" ? \"small\" : \"medium\"}\n >\n {selectAllButtonText}\n </ic-button>\n </div>\n )}\n </Host>\n );\n }\n}\n"]}
@@ -59,6 +59,9 @@ export class MenuItem {
59
59
  this.target = undefined;
60
60
  this.variant = "default";
61
61
  }
62
+ watchDisabledHandler() {
63
+ removeDisabledFalse(this.disabled, this.el);
64
+ }
62
65
  componentWillLoad() {
63
66
  // This ensures that trigger menu items are always set to the default variant
64
67
  if (isPropDefined(this.submenuTriggerFor) && this.variant !== "default") {
@@ -406,6 +409,12 @@ export class MenuItem {
406
409
  }];
407
410
  }
408
411
  static get elementRef() { return "el"; }
412
+ static get watchers() {
413
+ return [{
414
+ "propName": "disabled",
415
+ "methodName": "watchDisabledHandler"
416
+ }];
417
+ }
409
418
  static get listeners() {
410
419
  return [{
411
420
  "name": "click",