@ukic/web-components 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1070) hide show
  1. package/dist/cjs/core.cjs.js +3 -3
  2. package/dist/cjs/core.cjs.js.map +1 -1
  3. package/dist/cjs/{helpers-0d63359f.js → helpers-3f91f63a.js} +292 -292
  4. package/dist/cjs/helpers-3f91f63a.js.map +1 -0
  5. package/dist/cjs/ic-accordion-group.cjs.entry.js +71 -71
  6. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-accordion.cjs.entry.js +99 -99
  8. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-alert.cjs.entry.js +58 -58
  10. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-back-to-top.cjs.entry.js +120 -120
  12. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-badge.cjs.entry.js +146 -146
  14. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +172 -166
  16. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-breadcrumb.cjs.entry.js +55 -53
  18. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-button_3.cjs.entry.js +615 -606
  20. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-card.cjs.entry.js +105 -105
  22. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-checkbox-group.cjs.entry.js +60 -60
  24. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-checkbox.cjs.entry.js +95 -95
  26. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-chip.cjs.entry.js +67 -65
  28. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-classification-banner.cjs.entry.js +23 -23
  30. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-data-entity.cjs.entry.js +17 -17
  32. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-data-row.cjs.entry.js +74 -74
  34. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-dialog.cjs.entry.js +339 -339
  36. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-divider.cjs.entry.js +16 -16
  38. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-empty-state.cjs.entry.js +24 -24
  40. package/dist/cjs/ic-empty-state.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-footer-link-group.cjs.entry.js +55 -55
  42. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-footer-link.cjs.entry.js +50 -50
  44. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-footer.cjs.entry.js +78 -78
  46. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-hero.cjs.entry.js +62 -62
  48. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +151 -151
  50. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +678 -678
  52. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-input-label_2.cjs.entry.js +63 -63
  54. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-link.cjs.entry.js +55 -55
  56. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-menu-group.cjs.entry.js +12 -12
  58. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-menu-item.cjs.entry.js +100 -100
  60. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-navigation-button.cjs.entry.js +79 -76
  62. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-navigation-group.cjs.entry.js +283 -283
  64. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-navigation-item.cjs.entry.js +152 -152
  66. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-navigation-menu.cjs.entry.js +105 -105
  68. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-page-header.cjs.entry.js +93 -93
  70. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-pagination-item.cjs.entry.js +42 -42
  72. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-pagination.cjs.entry.js +196 -195
  74. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-popover-menu.cjs.entry.js +231 -231
  76. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-radio-group.cjs.entry.js +156 -156
  78. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-radio-option.cjs.entry.js +128 -128
  80. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-search-bar.cjs.entry.js +474 -474
  82. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-section-container.cjs.entry.js +15 -15
  84. package/dist/cjs/ic-section-container.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-select.cjs.entry.js +639 -639
  86. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ic-side-navigation.cjs.entry.js +424 -426
  88. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  89. package/dist/cjs/ic-skeleton.cjs.entry.js +43 -43
  90. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  91. package/dist/cjs/ic-status-tag.cjs.entry.js +29 -29
  92. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  93. package/dist/cjs/ic-step.cjs.entry.js +121 -121
  94. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  95. package/dist/cjs/ic-stepper.cjs.entry.js +200 -200
  96. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  97. package/dist/cjs/ic-switch.cjs.entry.js +77 -77
  98. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  99. package/dist/cjs/ic-tab-context.cjs.entry.js +252 -252
  100. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  101. package/dist/cjs/ic-tab-group.cjs.entry.js +23 -23
  102. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  103. package/dist/cjs/ic-tab-panel.cjs.entry.js +31 -31
  104. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  105. package/dist/cjs/ic-tab.cjs.entry.js +86 -86
  106. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  107. package/dist/cjs/ic-text-field.cjs.entry.js +210 -210
  108. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  109. package/dist/cjs/ic-theme.cjs.entry.js +51 -51
  110. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  111. package/dist/cjs/ic-toast-region.cjs.entry.js +47 -46
  112. package/dist/cjs/ic-toast-region.cjs.entry.js.map +1 -1
  113. package/dist/cjs/ic-toast.cjs.entry.js +145 -145
  114. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  115. package/dist/cjs/ic-top-navigation.cjs.entry.js +198 -199
  116. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  117. package/dist/cjs/ic-typography.cjs.entry.js +118 -118
  118. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  119. package/dist/{esm/index-813020f1.js → cjs/index-152d1fe5.js} +634 -376
  120. package/dist/cjs/index-152d1fe5.js.map +1 -0
  121. package/dist/cjs/loader.cjs.js +2 -2
  122. package/dist/cjs/types-dc22e301.js +16 -0
  123. package/dist/cjs/{types-7d67439f.js.map → types-dc22e301.js.map} +1 -1
  124. package/dist/collection/collection-manifest.json +2 -2
  125. package/dist/collection/components/ic-accordion/ic-accordion.js +276 -276
  126. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  127. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.e2e.js +39 -39
  128. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.e2e.js.map +1 -1
  129. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +215 -215
  130. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -1
  131. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js +200 -200
  132. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -1
  133. package/dist/collection/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.js +5 -5
  134. package/dist/collection/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.js.map +1 -1
  135. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js +68 -68
  136. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js.map +1 -1
  137. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js +71 -71
  138. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js.map +1 -1
  139. package/dist/collection/components/ic-alert/ic-alert.js +231 -231
  140. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  141. package/dist/collection/components/ic-alert/test/a11y/ic-alert.test.a11y.js +5 -5
  142. package/dist/collection/components/ic-alert/test/a11y/ic-alert.test.a11y.js.map +1 -1
  143. package/dist/collection/components/ic-alert/test/basic/ic-alert.e2e.js +12 -12
  144. package/dist/collection/components/ic-alert/test/basic/ic-alert.e2e.js.map +1 -1
  145. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js +44 -44
  146. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js.map +1 -1
  147. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js +159 -159
  148. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js.map +1 -1
  149. package/dist/collection/components/ic-back-to-top/test/a11y/ic-back-to-top.test.a11y.js +14 -14
  150. package/dist/collection/components/ic-back-to-top/test/a11y/ic-back-to-top.test.a11y.js.map +1 -1
  151. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.e2e.js +43 -43
  152. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.e2e.js.map +1 -1
  153. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js +102 -102
  154. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js.map +1 -1
  155. package/dist/collection/components/ic-badge/ic-badge.js +385 -385
  156. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  157. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js +10 -10
  158. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js.map +1 -1
  159. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js +172 -172
  160. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js.map +1 -1
  161. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +9 -1
  162. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +186 -157
  163. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  164. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js +43 -43
  165. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js.map +1 -1
  166. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +250 -220
  167. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  168. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js +10 -10
  169. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js.map +1 -1
  170. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js +34 -34
  171. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js.map +1 -1
  172. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.spec.js +156 -118
  173. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.spec.js.map +1 -1
  174. package/dist/collection/components/ic-button/ic-button.css +14 -0
  175. package/dist/collection/components/ic-button/ic-button.js +798 -773
  176. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  177. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js +5 -5
  178. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js.map +1 -1
  179. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js +114 -114
  180. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js.map +1 -1
  181. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js +249 -236
  182. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js.map +1 -1
  183. package/dist/collection/components/ic-card/ic-card.js +375 -375
  184. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  185. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js +15 -15
  186. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js.map +1 -1
  187. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js +19 -19
  188. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js.map +1 -1
  189. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js +147 -147
  190. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js.map +1 -1
  191. package/dist/collection/components/ic-checkbox/ic-checkbox.css +6 -6
  192. package/dist/collection/components/ic-checkbox/ic-checkbox.js +474 -474
  193. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  194. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +302 -302
  195. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  196. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js +5 -5
  197. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js.map +1 -1
  198. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js +124 -124
  199. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js.map +1 -1
  200. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js +148 -148
  201. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js.map +1 -1
  202. package/dist/collection/components/ic-chip/ic-chip.css +8 -0
  203. package/dist/collection/components/ic-chip/ic-chip.js +291 -271
  204. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  205. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js +5 -5
  206. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js.map +1 -1
  207. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +81 -81
  208. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  209. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js +132 -132
  210. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js.map +1 -1
  211. package/dist/collection/components/ic-classification-banner/test/a11y/ic-classification-banner.test.a11y.js +5 -5
  212. package/dist/collection/components/ic-classification-banner/test/a11y/ic-classification-banner.test.a11y.js.map +1 -1
  213. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js +55 -55
  214. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js.map +1 -1
  215. package/dist/collection/components/ic-data-entity/ic-data-entity.js +92 -92
  216. package/dist/collection/components/ic-data-entity/ic-data-entity.js.map +1 -1
  217. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js +5 -5
  218. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js.map +1 -1
  219. package/dist/collection/components/ic-data-entity/test/basic/ic-data-entity.spec.js +28 -28
  220. package/dist/collection/components/ic-data-entity/test/basic/ic-data-entity.spec.js.map +1 -1
  221. package/dist/collection/components/ic-data-row/ic-data-row.js +170 -170
  222. package/dist/collection/components/ic-data-row/ic-data-row.js.map +1 -1
  223. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js +14 -14
  224. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js.map +1 -1
  225. package/dist/collection/components/ic-data-row/test/basic/ic-data-row.spec.js +61 -61
  226. package/dist/collection/components/ic-data-row/test/basic/ic-data-row.spec.js.map +1 -1
  227. package/dist/collection/components/ic-dialog/ic-dialog.js +765 -765
  228. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  229. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js +5 -5
  230. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js.map +1 -1
  231. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js +155 -155
  232. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js.map +1 -1
  233. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js +573 -573
  234. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js.map +1 -1
  235. package/dist/collection/components/ic-divider/ic-divider.js +38 -38
  236. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  237. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js +17 -17
  238. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js.map +1 -1
  239. package/dist/collection/components/ic-empty-state/ic-empty-state.js +151 -151
  240. package/dist/collection/components/ic-empty-state/ic-empty-state.js.map +1 -1
  241. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js +5 -5
  242. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js.map +1 -1
  243. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js +52 -52
  244. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js.map +1 -1
  245. package/dist/collection/components/ic-footer/ic-footer.js +242 -242
  246. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  247. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js +15 -15
  248. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js.map +1 -1
  249. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js +25 -25
  250. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js.map +1 -1
  251. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js +108 -108
  252. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js.map +1 -1
  253. package/dist/collection/components/ic-footer-link/ic-footer-link.js +190 -190
  254. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  255. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js +13 -13
  256. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js.map +1 -1
  257. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js +36 -36
  258. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js.map +1 -1
  259. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +107 -107
  260. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  261. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js +13 -13
  262. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js.map +1 -1
  263. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js +52 -52
  264. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js.map +1 -1
  265. package/dist/collection/components/ic-hero/ic-hero.js +292 -292
  266. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  267. package/dist/collection/components/ic-hero/test/a11y/ic-hero.test.a11y.js +5 -5
  268. package/dist/collection/components/ic-hero/test/a11y/ic-hero.test.a11y.js.map +1 -1
  269. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +62 -62
  270. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  271. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +241 -240
  272. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  273. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js +17 -17
  274. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js.map +1 -1
  275. package/dist/collection/components/ic-horizontal-scroll/test/basic/ic-horizontal-scroll.spec.js +145 -145
  276. package/dist/collection/components/ic-horizontal-scroll/test/basic/ic-horizontal-scroll.spec.js.map +1 -1
  277. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +248 -248
  278. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  279. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +49 -49
  280. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
  281. package/dist/collection/components/ic-input-container/ic-input-container.js +62 -62
  282. package/dist/collection/components/ic-input-container/ic-input-container.js.map +1 -1
  283. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js +19 -19
  284. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js.map +1 -1
  285. package/dist/collection/components/ic-input-label/ic-input-label.js +211 -211
  286. package/dist/collection/components/ic-input-label/ic-input-label.js.map +1 -1
  287. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js +37 -37
  288. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js.map +1 -1
  289. package/dist/collection/components/ic-input-validation/ic-input-validation.js +139 -139
  290. package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
  291. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js +31 -31
  292. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js.map +1 -1
  293. package/dist/collection/components/ic-link/ic-link.js +248 -248
  294. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  295. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js +5 -5
  296. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js.map +1 -1
  297. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js +92 -92
  298. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js.map +1 -1
  299. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +416 -415
  300. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  301. package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js +5 -5
  302. package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js.map +1 -1
  303. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js +25 -25
  304. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js.map +1 -1
  305. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js +114 -114
  306. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js.map +1 -1
  307. package/dist/collection/components/ic-menu/ic-menu.js +1268 -1269
  308. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  309. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +684 -684
  310. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  311. package/dist/collection/components/ic-menu-group/ic-menu-group.js +41 -41
  312. package/dist/collection/components/ic-menu-group/ic-menu-group.js.map +1 -1
  313. package/dist/collection/components/ic-menu-group/test/basic/ic-menu-group.spec.js +16 -16
  314. package/dist/collection/components/ic-menu-group/test/basic/ic-menu-group.spec.js.map +1 -1
  315. package/dist/collection/components/ic-menu-item/ic-menu-item.js +378 -378
  316. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  317. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js +67 -67
  318. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js.map +1 -1
  319. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +262 -259
  320. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  321. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js +41 -41
  322. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js.map +1 -1
  323. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +380 -380
  324. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  325. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js +14 -14
  326. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js.map +1 -1
  327. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js +242 -242
  328. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js.map +1 -1
  329. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +446 -446
  330. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  331. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js +14 -14
  332. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js.map +1 -1
  333. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +78 -78
  334. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  335. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +187 -187
  336. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  337. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js +25 -25
  338. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js.map +1 -1
  339. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.spec.js +104 -104
  340. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.spec.js.map +1 -1
  341. package/dist/collection/components/ic-page-header/ic-page-header.js +286 -286
  342. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  343. package/dist/collection/components/ic-page-header/test/a11y/ic-page-header.test.a11y.js +5 -5
  344. package/dist/collection/components/ic-page-header/test/a11y/ic-page-header.test.a11y.js.map +1 -1
  345. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.e2e.js +66 -66
  346. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.e2e.js.map +1 -1
  347. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js +82 -82
  348. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js.map +1 -1
  349. package/dist/collection/components/ic-pagination/ic-pagination.js +487 -482
  350. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  351. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js +5 -5
  352. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js.map +1 -1
  353. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.e2e.js +103 -103
  354. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.e2e.js.map +1 -1
  355. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +303 -303
  356. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  357. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +225 -225
  358. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  359. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +437 -437
  360. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  361. package/dist/collection/components/ic-popover-menu/test/a11y/ic-popover-menu.test.a11y.js +5 -5
  362. package/dist/collection/components/ic-popover-menu/test/a11y/ic-popover-menu.test.a11y.js.map +1 -1
  363. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js +27 -27
  364. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js.map +1 -1
  365. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js +283 -283
  366. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js.map +1 -1
  367. package/dist/collection/components/ic-radio-group/ic-radio-group.js +429 -429
  368. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  369. package/dist/collection/components/ic-radio-group/test/a11y/ic-radio-group.test.a11y.js +5 -5
  370. package/dist/collection/components/ic-radio-group/test/a11y/ic-radio-group.test.a11y.js.map +1 -1
  371. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js +218 -218
  372. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js.map +1 -1
  373. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +238 -238
  374. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  375. package/dist/collection/components/ic-radio-option/ic-radio-option.css +5 -5
  376. package/dist/collection/components/ic-radio-option/ic-radio-option.js +479 -479
  377. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  378. package/dist/collection/components/ic-search-bar/ic-search-bar.js +1381 -1381
  379. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  380. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js +5 -5
  381. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js.map +1 -1
  382. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +992 -992
  383. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +1 -1
  384. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js +568 -568
  385. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js.map +1 -1
  386. package/dist/collection/components/ic-section-container/ic-section-container.js +70 -70
  387. package/dist/collection/components/ic-section-container/ic-section-container.js.map +1 -1
  388. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js +28 -28
  389. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js.map +1 -1
  390. package/dist/collection/components/ic-select/ic-select.js +1466 -1466
  391. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  392. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js +5 -5
  393. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js.map +1 -1
  394. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js +1563 -1563
  395. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js.map +1 -1
  396. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +1299 -1299
  397. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  398. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +675 -654
  399. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  400. package/dist/collection/components/ic-side-navigation/ic-side-navigation.types.js.map +1 -1
  401. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js +5 -5
  402. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js.map +1 -1
  403. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js +463 -463
  404. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js.map +1 -1
  405. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js +143 -143
  406. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js.map +1 -1
  407. package/dist/collection/components/ic-skeleton/ic-skeleton.js +127 -127
  408. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  409. package/dist/collection/components/ic-skeleton/test/a11y/ic-skeleton.test.a11y.js +5 -5
  410. package/dist/collection/components/ic-skeleton/test/a11y/ic-skeleton.test.a11y.js.map +1 -1
  411. package/dist/collection/components/ic-skeleton/test/basic/ic-skeleton.spec.js +38 -38
  412. package/dist/collection/components/ic-skeleton/test/basic/ic-skeleton.spec.js.map +1 -1
  413. package/dist/collection/components/ic-status-tag/ic-status-tag.js +194 -194
  414. package/dist/collection/components/ic-status-tag/ic-status-tag.js.map +1 -1
  415. package/dist/collection/components/ic-status-tag/test/a11y/ic-status-tag.test.a11y.js +5 -5
  416. package/dist/collection/components/ic-status-tag/test/a11y/ic-status-tag.test.a11y.js.map +1 -1
  417. package/dist/collection/components/ic-status-tag/test/basic/ic-status-tag.spec.js +14 -14
  418. package/dist/collection/components/ic-status-tag/test/basic/ic-status-tag.spec.js.map +1 -1
  419. package/dist/collection/components/ic-step/ic-step.css +6 -0
  420. package/dist/collection/components/ic-step/ic-step.js +385 -385
  421. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  422. package/dist/collection/components/ic-step/test/basic/ic-step.spec.js +87 -87
  423. package/dist/collection/components/ic-step/test/basic/ic-step.spec.js.map +1 -1
  424. package/dist/collection/components/ic-stepper/ic-stepper.js +306 -306
  425. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  426. package/dist/collection/components/ic-stepper/test/a11y/ic-stepper.test.a11y.js +10 -10
  427. package/dist/collection/components/ic-stepper/test/a11y/ic-stepper.test.a11y.js.map +1 -1
  428. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js +36 -36
  429. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js.map +1 -1
  430. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js +350 -350
  431. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js.map +1 -1
  432. package/dist/collection/components/ic-switch/ic-switch.js +355 -355
  433. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  434. package/dist/collection/components/ic-switch/test/a11y/ic-switch.test.a11y.js +5 -5
  435. package/dist/collection/components/ic-switch/test/a11y/ic-switch.test.a11y.js.map +1 -1
  436. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js +88 -88
  437. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js.map +1 -1
  438. package/dist/collection/components/ic-tab/ic-tab.js +350 -350
  439. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  440. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js +26 -26
  441. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js.map +1 -1
  442. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js +93 -93
  443. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js.map +1 -1
  444. package/dist/collection/components/ic-tab-context/ic-tab-context.js +442 -441
  445. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  446. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js +5 -5
  447. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js.map +1 -1
  448. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js +213 -213
  449. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js.map +1 -1
  450. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js +250 -250
  451. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js.map +1 -1
  452. package/dist/collection/components/ic-tab-group/ic-tab-group.js +117 -117
  453. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  454. package/dist/collection/components/ic-tab-panel/ic-tab-panel.css +444 -1
  455. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +191 -191
  456. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  457. package/dist/collection/components/ic-tab-panel/test/basic/ic-tab-panel.spec.js +29 -29
  458. package/dist/collection/components/ic-tab-panel/test/basic/ic-tab-panel.spec.js.map +1 -1
  459. package/dist/collection/components/ic-text-field/ic-text-field.js +1115 -1115
  460. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  461. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js +5 -5
  462. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js.map +1 -1
  463. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js +94 -94
  464. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js.map +1 -1
  465. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js +194 -194
  466. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js.map +1 -1
  467. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js +92 -92
  468. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js.map +1 -1
  469. package/dist/collection/components/ic-theme/ic-theme.js +99 -99
  470. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  471. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js +65 -65
  472. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js.map +1 -1
  473. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js +53 -53
  474. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js.map +1 -1
  475. package/dist/collection/components/ic-toast/ic-toast.js +368 -368
  476. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  477. package/dist/collection/components/ic-toast/test/a11y/ic-toast.test.a11y.js +10 -10
  478. package/dist/collection/components/ic-toast/test/a11y/ic-toast.test.a11y.js.map +1 -1
  479. package/dist/collection/components/ic-toast/test/basic/ic-toast.e2e.js +66 -66
  480. package/dist/collection/components/ic-toast/test/basic/ic-toast.e2e.js.map +1 -1
  481. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +180 -180
  482. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  483. package/dist/collection/components/ic-toast-region/ic-toast-region.js +115 -110
  484. package/dist/collection/components/ic-toast-region/ic-toast-region.js.map +1 -1
  485. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js +58 -58
  486. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js.map +1 -1
  487. package/dist/collection/components/ic-tooltip/ic-tooltip.js +347 -329
  488. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  489. package/dist/collection/components/ic-tooltip/test/a11y/ic-tooltip.test.a11y.js +5 -5
  490. package/dist/collection/components/ic-tooltip/test/a11y/ic-tooltip.test.a11y.js.map +1 -1
  491. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js +105 -105
  492. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js.map +1 -1
  493. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js +276 -276
  494. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js.map +1 -1
  495. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +0 -4
  496. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +431 -418
  497. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  498. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js +20 -20
  499. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js.map +1 -1
  500. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js +43 -43
  501. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js.map +1 -1
  502. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js +191 -191
  503. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js.map +1 -1
  504. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js +180 -180
  505. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js.map +1 -1
  506. package/dist/collection/components/ic-typography/ic-typography.js +270 -270
  507. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  508. package/dist/collection/components/ic-typography/test/a11y/ic-typography.test.a11y.js +5 -5
  509. package/dist/collection/components/ic-typography/test/a11y/ic-typography.test.a11y.js.map +1 -1
  510. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js +25 -25
  511. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js.map +1 -1
  512. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js +276 -276
  513. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js.map +1 -1
  514. package/dist/collection/testspec.setup.js +32 -32
  515. package/dist/collection/testspec.setup.js.map +1 -1
  516. package/dist/collection/utils/constants.js +55 -55
  517. package/dist/collection/utils/constants.js.map +1 -1
  518. package/dist/collection/utils/helpers.js +235 -235
  519. package/dist/collection/utils/helpers.js.map +1 -1
  520. package/dist/collection/utils/testa11y.helpers.js +2 -2
  521. package/dist/collection/utils/testa11y.helpers.js.map +1 -1
  522. package/dist/collection/utils/types.js +6 -6
  523. package/dist/collection/utils/types.js.map +1 -1
  524. package/dist/components/helpers.js +290 -290
  525. package/dist/components/helpers.js.map +1 -1
  526. package/dist/components/ic-accordion-group.d.ts +2 -2
  527. package/dist/components/ic-accordion-group.js +112 -112
  528. package/dist/components/ic-accordion-group.js.map +1 -1
  529. package/dist/components/ic-accordion.d.ts +2 -2
  530. package/dist/components/ic-accordion.js +125 -125
  531. package/dist/components/ic-accordion.js.map +1 -1
  532. package/dist/components/ic-alert.d.ts +2 -2
  533. package/dist/components/ic-alert2.js +98 -98
  534. package/dist/components/ic-alert2.js.map +1 -1
  535. package/dist/components/ic-back-to-top.d.ts +2 -2
  536. package/dist/components/ic-back-to-top.js +143 -143
  537. package/dist/components/ic-back-to-top.js.map +1 -1
  538. package/dist/components/ic-badge.d.ts +2 -2
  539. package/dist/components/ic-badge.js +174 -174
  540. package/dist/components/ic-badge.js.map +1 -1
  541. package/dist/components/ic-breadcrumb-group.d.ts +2 -2
  542. package/dist/components/ic-breadcrumb-group.js +199 -192
  543. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  544. package/dist/components/ic-breadcrumb.d.ts +2 -2
  545. package/dist/components/ic-breadcrumb2.js +78 -75
  546. package/dist/components/ic-breadcrumb2.js.map +1 -1
  547. package/dist/components/ic-button.d.ts +2 -2
  548. package/dist/components/ic-button2.js +312 -304
  549. package/dist/components/ic-button2.js.map +1 -1
  550. package/dist/components/ic-card.d.ts +2 -2
  551. package/dist/components/ic-card.js +155 -155
  552. package/dist/components/ic-card.js.map +1 -1
  553. package/dist/components/ic-checkbox-group.d.ts +2 -2
  554. package/dist/components/ic-checkbox-group.js +97 -97
  555. package/dist/components/ic-checkbox-group.js.map +1 -1
  556. package/dist/components/ic-checkbox.d.ts +2 -2
  557. package/dist/components/ic-checkbox.js +131 -131
  558. package/dist/components/ic-checkbox.js.map +1 -1
  559. package/dist/components/ic-chip.d.ts +2 -2
  560. package/dist/components/ic-chip.js +99 -96
  561. package/dist/components/ic-chip.js.map +1 -1
  562. package/dist/components/ic-classification-banner.d.ts +2 -2
  563. package/dist/components/ic-classification-banner.js +47 -47
  564. package/dist/components/ic-classification-banner.js.map +1 -1
  565. package/dist/components/ic-data-entity.d.ts +2 -2
  566. package/dist/components/ic-data-entity.js +39 -39
  567. package/dist/components/ic-data-entity.js.map +1 -1
  568. package/dist/components/ic-data-row.d.ts +2 -2
  569. package/dist/components/ic-data-row.js +97 -97
  570. package/dist/components/ic-data-row.js.map +1 -1
  571. package/dist/components/ic-dialog.d.ts +2 -2
  572. package/dist/components/ic-dialog.js +399 -399
  573. package/dist/components/ic-dialog.js.map +1 -1
  574. package/dist/components/ic-divider.d.ts +2 -2
  575. package/dist/components/ic-divider2.js +28 -28
  576. package/dist/components/ic-divider2.js.map +1 -1
  577. package/dist/components/ic-empty-state.d.ts +2 -2
  578. package/dist/components/ic-empty-state.js +47 -47
  579. package/dist/components/ic-empty-state.js.map +1 -1
  580. package/dist/components/ic-footer-link-group.d.ts +2 -2
  581. package/dist/components/ic-footer-link-group.js +82 -82
  582. package/dist/components/ic-footer-link-group.js.map +1 -1
  583. package/dist/components/ic-footer-link.d.ts +2 -2
  584. package/dist/components/ic-footer-link.js +71 -71
  585. package/dist/components/ic-footer-link.js.map +1 -1
  586. package/dist/components/ic-footer.d.ts +2 -2
  587. package/dist/components/ic-footer.js +108 -108
  588. package/dist/components/ic-footer.js.map +1 -1
  589. package/dist/components/ic-hero.d.ts +2 -2
  590. package/dist/components/ic-hero.js +98 -98
  591. package/dist/components/ic-hero.js.map +1 -1
  592. package/dist/components/ic-horizontal-scroll.d.ts +2 -2
  593. package/dist/components/ic-horizontal-scroll2.js +189 -189
  594. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  595. package/dist/components/ic-input-component-container.d.ts +2 -2
  596. package/dist/components/ic-input-component-container2.js +61 -61
  597. package/dist/components/ic-input-component-container2.js.map +1 -1
  598. package/dist/components/ic-input-container.d.ts +2 -2
  599. package/dist/components/ic-input-container2.js +28 -28
  600. package/dist/components/ic-input-container2.js.map +1 -1
  601. package/dist/components/ic-input-label.d.ts +2 -2
  602. package/dist/components/ic-input-label2.js +62 -62
  603. package/dist/components/ic-input-label2.js.map +1 -1
  604. package/dist/components/ic-input-validation.d.ts +2 -2
  605. package/dist/components/ic-input-validation2.js +50 -50
  606. package/dist/components/ic-input-validation2.js.map +1 -1
  607. package/dist/components/ic-link.d.ts +2 -2
  608. package/dist/components/ic-link2.js +76 -76
  609. package/dist/components/ic-link2.js.map +1 -1
  610. package/dist/components/ic-loading-indicator.d.ts +2 -2
  611. package/dist/components/ic-loading-indicator2.js +211 -210
  612. package/dist/components/ic-loading-indicator2.js.map +1 -1
  613. package/dist/components/ic-menu-group.d.ts +2 -2
  614. package/dist/components/ic-menu-group.js +30 -30
  615. package/dist/components/ic-menu-group.js.map +1 -1
  616. package/dist/components/ic-menu-item.d.ts +2 -2
  617. package/dist/components/ic-menu-item2.js +144 -144
  618. package/dist/components/ic-menu-item2.js.map +1 -1
  619. package/dist/components/ic-menu.d.ts +2 -2
  620. package/dist/components/ic-menu2.js +691 -691
  621. package/dist/components/ic-menu2.js.map +1 -1
  622. package/dist/components/ic-navigation-button.d.ts +2 -2
  623. package/dist/components/ic-navigation-button.js +121 -118
  624. package/dist/components/ic-navigation-button.js.map +1 -1
  625. package/dist/components/ic-navigation-group.d.ts +2 -2
  626. package/dist/components/ic-navigation-group.js +310 -310
  627. package/dist/components/ic-navigation-group.js.map +1 -1
  628. package/dist/components/ic-navigation-item.d.ts +2 -2
  629. package/dist/components/ic-navigation-item.js +194 -194
  630. package/dist/components/ic-navigation-item.js.map +1 -1
  631. package/dist/components/ic-navigation-menu.d.ts +2 -2
  632. package/dist/components/ic-navigation-menu2.js +139 -139
  633. package/dist/components/ic-navigation-menu2.js.map +1 -1
  634. package/dist/components/ic-page-header.d.ts +2 -2
  635. package/dist/components/ic-page-header.js +147 -147
  636. package/dist/components/ic-page-header.js.map +1 -1
  637. package/dist/components/ic-pagination-item.d.ts +2 -2
  638. package/dist/components/ic-pagination-item2.js +67 -67
  639. package/dist/components/ic-pagination-item2.js.map +1 -1
  640. package/dist/components/ic-pagination.d.ts +2 -2
  641. package/dist/components/ic-pagination.js +253 -252
  642. package/dist/components/ic-pagination.js.map +1 -1
  643. package/dist/components/ic-popover-menu.d.ts +2 -2
  644. package/dist/components/ic-popover-menu.js +280 -280
  645. package/dist/components/ic-popover-menu.js.map +1 -1
  646. package/dist/components/ic-radio-group.d.ts +2 -2
  647. package/dist/components/ic-radio-group.js +200 -200
  648. package/dist/components/ic-radio-group.js.map +1 -1
  649. package/dist/components/ic-radio-option.d.ts +2 -2
  650. package/dist/components/ic-radio-option.js +163 -163
  651. package/dist/components/ic-radio-option.js.map +1 -1
  652. package/dist/components/ic-search-bar.d.ts +2 -2
  653. package/dist/components/ic-search-bar.js +580 -580
  654. package/dist/components/ic-search-bar.js.map +1 -1
  655. package/dist/components/ic-section-container.d.ts +2 -2
  656. package/dist/components/ic-section-container2.js +31 -31
  657. package/dist/components/ic-section-container2.js.map +1 -1
  658. package/dist/components/ic-select.d.ts +2 -2
  659. package/dist/components/ic-select.js +751 -751
  660. package/dist/components/ic-select.js.map +1 -1
  661. package/dist/components/ic-side-navigation.d.ts +2 -2
  662. package/dist/components/ic-side-navigation.js +479 -481
  663. package/dist/components/ic-side-navigation.js.map +1 -1
  664. package/dist/components/ic-skeleton.d.ts +2 -2
  665. package/dist/components/ic-skeleton.js +64 -64
  666. package/dist/components/ic-skeleton.js.map +1 -1
  667. package/dist/components/ic-status-tag.d.ts +2 -2
  668. package/dist/components/ic-status-tag.js +53 -53
  669. package/dist/components/ic-status-tag.js.map +1 -1
  670. package/dist/components/ic-step.d.ts +2 -2
  671. package/dist/components/ic-step.js +157 -157
  672. package/dist/components/ic-step.js.map +1 -1
  673. package/dist/components/ic-stepper.d.ts +2 -2
  674. package/dist/components/ic-stepper.js +223 -223
  675. package/dist/components/ic-stepper.js.map +1 -1
  676. package/dist/components/ic-switch.d.ts +2 -2
  677. package/dist/components/ic-switch.js +114 -114
  678. package/dist/components/ic-switch.js.map +1 -1
  679. package/dist/components/ic-tab-context.d.ts +2 -2
  680. package/dist/components/ic-tab-context.js +271 -271
  681. package/dist/components/ic-tab-context.js.map +1 -1
  682. package/dist/components/ic-tab-group.d.ts +2 -2
  683. package/dist/components/ic-tab-group.js +64 -64
  684. package/dist/components/ic-tab-group.js.map +1 -1
  685. package/dist/components/ic-tab-panel.d.ts +2 -2
  686. package/dist/components/ic-tab-panel.js +48 -48
  687. package/dist/components/ic-tab-panel.js.map +1 -1
  688. package/dist/components/ic-tab.d.ts +2 -2
  689. package/dist/components/ic-tab.js +112 -112
  690. package/dist/components/ic-tab.js.map +1 -1
  691. package/dist/components/ic-text-field.d.ts +2 -2
  692. package/dist/components/ic-text-field2.js +293 -293
  693. package/dist/components/ic-text-field2.js.map +1 -1
  694. package/dist/components/ic-theme.d.ts +2 -2
  695. package/dist/components/ic-theme.js +65 -65
  696. package/dist/components/ic-theme.js.map +1 -1
  697. package/dist/components/ic-toast-region.d.ts +2 -2
  698. package/dist/components/ic-toast-region.js +63 -62
  699. package/dist/components/ic-toast-region.js.map +1 -1
  700. package/dist/components/ic-toast.d.ts +2 -2
  701. package/dist/components/ic-toast.js +187 -187
  702. package/dist/components/ic-toast.js.map +1 -1
  703. package/dist/components/ic-tooltip.d.ts +2 -2
  704. package/dist/components/ic-tooltip2.js +213 -211
  705. package/dist/components/ic-tooltip2.js.map +1 -1
  706. package/dist/components/ic-top-navigation.d.ts +2 -2
  707. package/dist/components/ic-top-navigation.js +263 -264
  708. package/dist/components/ic-top-navigation.js.map +1 -1
  709. package/dist/components/ic-typography.d.ts +2 -2
  710. package/dist/components/ic-typography2.js +142 -142
  711. package/dist/components/ic-typography2.js.map +1 -1
  712. package/dist/components/types.js +6 -6
  713. package/dist/components/types.js.map +1 -1
  714. package/dist/core/core.css +1 -1
  715. package/dist/core/core.esm.js +1 -1
  716. package/dist/core/core.esm.js.map +1 -1
  717. package/dist/core/p-02159742.entry.js +2 -0
  718. package/dist/core/p-02159742.entry.js.map +1 -0
  719. package/dist/core/{p-7ce86152.entry.js → p-056f8a67.entry.js} +2 -2
  720. package/dist/core/{p-08b59078.entry.js → p-11736fbe.entry.js} +2 -2
  721. package/dist/core/{p-ba495175.entry.js → p-15466b42.entry.js} +2 -2
  722. package/dist/core/{p-ba495175.entry.js.map → p-15466b42.entry.js.map} +1 -1
  723. package/dist/core/{p-5ccbb042.entry.js → p-15624e08.entry.js} +2 -2
  724. package/dist/core/{p-5fcd202e.entry.js → p-15ef0674.entry.js} +2 -2
  725. package/dist/core/{p-88ea1e49.entry.js → p-180e36b1.entry.js} +2 -2
  726. package/dist/core/{p-43af3cf6.entry.js → p-22c024ee.entry.js} +2 -2
  727. package/dist/core/{p-613aa265.js → p-26b7b18f.js} +1 -1
  728. package/dist/core/{p-932fb4b7.entry.js → p-287ab47c.entry.js} +2 -2
  729. package/dist/core/{p-69948c3e.entry.js → p-2b24b4bf.entry.js} +2 -2
  730. package/dist/core/{p-9f6ffced.entry.js → p-31969be6.entry.js} +2 -2
  731. package/dist/core/{p-475b7bd2.entry.js → p-335fc5e4.entry.js} +2 -2
  732. package/dist/core/{p-c9ef9f5c.entry.js → p-366bcb17.entry.js} +2 -2
  733. package/dist/core/{p-ed256f1d.entry.js → p-3a0ef91e.entry.js} +2 -2
  734. package/dist/core/{p-ca6073be.entry.js → p-498eb7ad.entry.js} +2 -2
  735. package/dist/core/p-498eb7ad.entry.js.map +1 -0
  736. package/dist/core/{p-cb5f19ea.entry.js → p-51f9f329.entry.js} +2 -2
  737. package/dist/core/{p-f019219c.entry.js → p-529d8955.entry.js} +2 -2
  738. package/dist/core/p-52e063d3.js +3 -0
  739. package/dist/core/p-52e063d3.js.map +1 -0
  740. package/dist/core/{p-b879fa3e.entry.js → p-5c7e339f.entry.js} +2 -2
  741. package/dist/core/p-5f9d69ef.entry.js +2 -0
  742. package/dist/core/p-5f9d69ef.entry.js.map +1 -0
  743. package/dist/core/{p-2c30b583.entry.js → p-60c4604f.entry.js} +2 -2
  744. package/dist/core/{p-99fad66b.entry.js → p-6bc431b2.entry.js} +2 -2
  745. package/dist/core/{p-ccac1730.entry.js → p-6d3f9501.entry.js} +2 -2
  746. package/dist/core/{p-536b3c97.entry.js → p-6eb0421d.entry.js} +2 -2
  747. package/dist/core/{p-48525498.entry.js → p-765bdd98.entry.js} +2 -2
  748. package/dist/core/{p-3a814fc4.entry.js → p-7f887c1e.entry.js} +2 -2
  749. package/dist/core/{p-752f0f9a.entry.js → p-8a83f391.entry.js} +2 -2
  750. package/dist/core/p-8a83f391.entry.js.map +1 -0
  751. package/dist/core/{p-e3bffcae.entry.js → p-94e88827.entry.js} +2 -2
  752. package/dist/core/{p-8fb4f0c0.js → p-95a864bf.js} +2 -2
  753. package/dist/core/{p-c0c62df4.entry.js → p-9639e33f.entry.js} +2 -2
  754. package/dist/core/p-9639e33f.entry.js.map +1 -0
  755. package/dist/core/{p-eb4641a9.entry.js → p-96da1e85.entry.js} +2 -2
  756. package/dist/core/{p-69d15528.entry.js → p-988991d3.entry.js} +2 -2
  757. package/dist/core/{p-0c82048e.entry.js → p-9c30720d.entry.js} +2 -2
  758. package/dist/core/{p-a76912b0.entry.js → p-aa0a9870.entry.js} +2 -2
  759. package/dist/core/{p-76563540.entry.js → p-ad36a704.entry.js} +2 -2
  760. package/dist/core/{p-d80f99e0.entry.js → p-b0088956.entry.js} +2 -2
  761. package/dist/core/p-b39ecae2.entry.js +2 -0
  762. package/dist/core/p-b39ecae2.entry.js.map +1 -0
  763. package/dist/core/{p-2265e418.entry.js → p-b6a575c3.entry.js} +2 -2
  764. package/dist/core/{p-fbc8a739.entry.js → p-b9736cf4.entry.js} +2 -2
  765. package/dist/core/{p-025f9d2a.entry.js → p-b99f9e89.entry.js} +2 -2
  766. package/dist/core/{p-b0ce60a0.entry.js → p-c2452388.entry.js} +2 -2
  767. package/dist/core/{p-345fe84a.entry.js → p-c770e7a2.entry.js} +2 -2
  768. package/dist/core/p-ca178add.entry.js +2 -0
  769. package/dist/core/p-ca178add.entry.js.map +1 -0
  770. package/dist/core/{p-748159fe.entry.js → p-ca48e97a.entry.js} +2 -2
  771. package/dist/core/{p-5a3ca50a.entry.js → p-cd8de4c5.entry.js} +2 -2
  772. package/dist/core/{p-a4397df4.entry.js → p-cfc930f6.entry.js} +2 -2
  773. package/dist/core/{p-3a15202f.entry.js → p-d18450f9.entry.js} +2 -2
  774. package/dist/core/p-d18450f9.entry.js.map +1 -0
  775. package/dist/core/p-daebb58a.entry.js +2 -0
  776. package/dist/core/p-daebb58a.entry.js.map +1 -0
  777. package/dist/core/p-dbb5b008.entry.js +2 -0
  778. package/dist/core/p-dbb5b008.entry.js.map +1 -0
  779. package/dist/core/{p-4bc35224.entry.js → p-e278242f.entry.js} +2 -2
  780. package/dist/core/p-e278242f.entry.js.map +1 -0
  781. package/dist/core/{p-9ff57f09.entry.js → p-e5abfadd.entry.js} +2 -2
  782. package/dist/core/{p-41c6eaa1.entry.js → p-e9738c74.entry.js} +2 -2
  783. package/dist/core/p-ea17e371.entry.js +2 -0
  784. package/dist/core/p-ea17e371.entry.js.map +1 -0
  785. package/dist/core/{p-e2fd542e.entry.js → p-edd29edc.entry.js} +2 -2
  786. package/dist/core/p-edec0936.entry.js +2 -0
  787. package/dist/core/p-edec0936.entry.js.map +1 -0
  788. package/dist/core/{p-657513b5.entry.js → p-ee97e2a5.entry.js} +2 -2
  789. package/dist/core/{p-8b18346a.entry.js → p-f0809037.entry.js} +2 -2
  790. package/dist/core/{p-5bb6c79b.entry.js → p-f2e6b9ef.entry.js} +2 -2
  791. package/dist/core/{p-cf4bacee.entry.js → p-fdb4b48f.entry.js} +2 -2
  792. package/dist/esm/core.js +4 -4
  793. package/dist/esm/core.js.map +1 -1
  794. package/dist/esm/{helpers-24f6e762.js → helpers-c597f246.js} +292 -292
  795. package/dist/esm/helpers-c597f246.js.map +1 -0
  796. package/dist/esm/ic-accordion-group.entry.js +71 -71
  797. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  798. package/dist/esm/ic-accordion.entry.js +99 -99
  799. package/dist/esm/ic-accordion.entry.js.map +1 -1
  800. package/dist/esm/ic-alert.entry.js +58 -58
  801. package/dist/esm/ic-alert.entry.js.map +1 -1
  802. package/dist/esm/ic-back-to-top.entry.js +120 -120
  803. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  804. package/dist/esm/ic-badge.entry.js +146 -146
  805. package/dist/esm/ic-badge.entry.js.map +1 -1
  806. package/dist/esm/ic-breadcrumb-group.entry.js +172 -166
  807. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  808. package/dist/esm/ic-breadcrumb.entry.js +55 -53
  809. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  810. package/dist/esm/ic-button_3.entry.js +615 -606
  811. package/dist/esm/ic-button_3.entry.js.map +1 -1
  812. package/dist/esm/ic-card.entry.js +105 -105
  813. package/dist/esm/ic-card.entry.js.map +1 -1
  814. package/dist/esm/ic-checkbox-group.entry.js +60 -60
  815. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  816. package/dist/esm/ic-checkbox.entry.js +95 -95
  817. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  818. package/dist/esm/ic-chip.entry.js +67 -65
  819. package/dist/esm/ic-chip.entry.js.map +1 -1
  820. package/dist/esm/ic-classification-banner.entry.js +23 -23
  821. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  822. package/dist/esm/ic-data-entity.entry.js +17 -17
  823. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  824. package/dist/esm/ic-data-row.entry.js +74 -74
  825. package/dist/esm/ic-data-row.entry.js.map +1 -1
  826. package/dist/esm/ic-dialog.entry.js +339 -339
  827. package/dist/esm/ic-dialog.entry.js.map +1 -1
  828. package/dist/esm/ic-divider.entry.js +16 -16
  829. package/dist/esm/ic-divider.entry.js.map +1 -1
  830. package/dist/esm/ic-empty-state.entry.js +24 -24
  831. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  832. package/dist/esm/ic-footer-link-group.entry.js +55 -55
  833. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  834. package/dist/esm/ic-footer-link.entry.js +50 -50
  835. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  836. package/dist/esm/ic-footer.entry.js +78 -78
  837. package/dist/esm/ic-footer.entry.js.map +1 -1
  838. package/dist/esm/ic-hero.entry.js +62 -62
  839. package/dist/esm/ic-hero.entry.js.map +1 -1
  840. package/dist/esm/ic-horizontal-scroll.entry.js +151 -151
  841. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  842. package/dist/esm/ic-input-component-container_3.entry.js +678 -678
  843. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  844. package/dist/esm/ic-input-label_2.entry.js +63 -63
  845. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  846. package/dist/esm/ic-link.entry.js +55 -55
  847. package/dist/esm/ic-link.entry.js.map +1 -1
  848. package/dist/esm/ic-menu-group.entry.js +12 -12
  849. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  850. package/dist/esm/ic-menu-item.entry.js +100 -100
  851. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  852. package/dist/esm/ic-navigation-button.entry.js +79 -76
  853. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  854. package/dist/esm/ic-navigation-group.entry.js +283 -283
  855. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  856. package/dist/esm/ic-navigation-item.entry.js +152 -152
  857. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  858. package/dist/esm/ic-navigation-menu.entry.js +105 -105
  859. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  860. package/dist/esm/ic-page-header.entry.js +93 -93
  861. package/dist/esm/ic-page-header.entry.js.map +1 -1
  862. package/dist/esm/ic-pagination-item.entry.js +42 -42
  863. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  864. package/dist/esm/ic-pagination.entry.js +196 -195
  865. package/dist/esm/ic-pagination.entry.js.map +1 -1
  866. package/dist/esm/ic-popover-menu.entry.js +231 -231
  867. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  868. package/dist/esm/ic-radio-group.entry.js +156 -156
  869. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  870. package/dist/esm/ic-radio-option.entry.js +128 -128
  871. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  872. package/dist/esm/ic-search-bar.entry.js +474 -474
  873. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  874. package/dist/esm/ic-section-container.entry.js +15 -15
  875. package/dist/esm/ic-section-container.entry.js.map +1 -1
  876. package/dist/esm/ic-select.entry.js +639 -639
  877. package/dist/esm/ic-select.entry.js.map +1 -1
  878. package/dist/esm/ic-side-navigation.entry.js +424 -426
  879. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  880. package/dist/esm/ic-skeleton.entry.js +43 -43
  881. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  882. package/dist/esm/ic-status-tag.entry.js +29 -29
  883. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  884. package/dist/esm/ic-step.entry.js +121 -121
  885. package/dist/esm/ic-step.entry.js.map +1 -1
  886. package/dist/esm/ic-stepper.entry.js +200 -200
  887. package/dist/esm/ic-stepper.entry.js.map +1 -1
  888. package/dist/esm/ic-switch.entry.js +77 -77
  889. package/dist/esm/ic-switch.entry.js.map +1 -1
  890. package/dist/esm/ic-tab-context.entry.js +252 -252
  891. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  892. package/dist/esm/ic-tab-group.entry.js +23 -23
  893. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  894. package/dist/esm/ic-tab-panel.entry.js +31 -31
  895. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  896. package/dist/esm/ic-tab.entry.js +86 -86
  897. package/dist/esm/ic-tab.entry.js.map +1 -1
  898. package/dist/esm/ic-text-field.entry.js +210 -210
  899. package/dist/esm/ic-text-field.entry.js.map +1 -1
  900. package/dist/esm/ic-theme.entry.js +51 -51
  901. package/dist/esm/ic-theme.entry.js.map +1 -1
  902. package/dist/esm/ic-toast-region.entry.js +47 -46
  903. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  904. package/dist/esm/ic-toast.entry.js +145 -145
  905. package/dist/esm/ic-toast.entry.js.map +1 -1
  906. package/dist/esm/ic-top-navigation.entry.js +198 -199
  907. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  908. package/dist/esm/ic-typography.entry.js +118 -118
  909. package/dist/esm/ic-typography.entry.js.map +1 -1
  910. package/dist/{cjs/index-4f8c900f.js → esm/index-05003e1c.js} +603 -407
  911. package/dist/esm/index-05003e1c.js.map +1 -0
  912. package/dist/esm/loader.js +3 -3
  913. package/dist/esm/types-6f6b41a5.js +16 -0
  914. package/dist/esm/{types-b2398b37.js.map → types-6f6b41a5.js.map} +1 -1
  915. package/dist/node.d.ts +12 -0
  916. package/dist/types/components/ic-accordion/ic-accordion.d.ts +48 -48
  917. package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +30 -30
  918. package/dist/types/components/ic-alert/ic-alert.d.ts +40 -40
  919. package/dist/types/components/ic-back-to-top/ic-back-to-top.d.ts +23 -23
  920. package/dist/types/components/ic-badge/ic-badge.d.ts +57 -57
  921. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.d.ts +30 -25
  922. package/dist/types/components/ic-breadcrumb-group/ic-breadcrumb-group.d.ts +43 -38
  923. package/dist/types/components/ic-button/ic-button.d.ts +142 -137
  924. package/dist/types/components/ic-card/ic-card.d.ts +68 -68
  925. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +91 -91
  926. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +50 -50
  927. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.types.d.ts +6 -6
  928. package/dist/types/components/ic-chip/ic-chip.d.ts +50 -46
  929. package/dist/types/components/ic-classification-banner/ic-classification-banner.d.ts +21 -21
  930. package/dist/types/components/ic-data-entity/ic-data-entity.d.ts +14 -14
  931. package/dist/types/components/ic-data-row/ic-data-row.d.ts +34 -34
  932. package/dist/types/components/ic-dialog/ic-dialog.d.ts +139 -139
  933. package/dist/types/components/ic-divider/ic-divider.d.ts +3 -3
  934. package/dist/types/components/ic-empty-state/ic-empty-state.d.ts +27 -27
  935. package/dist/types/components/ic-footer/ic-footer.d.ts +41 -41
  936. package/dist/types/components/ic-footer-link/ic-footer-link.d.ts +35 -35
  937. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +17 -17
  938. package/dist/types/components/ic-hero/ic-hero.d.ts +51 -51
  939. package/dist/types/components/ic-horizontal-scroll/ic-horizontal-scroll.d.ts +41 -41
  940. package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +42 -42
  941. package/dist/types/components/ic-input-container/ic-input-container.d.ts +9 -9
  942. package/dist/types/components/ic-input-label/ic-input-label.d.ts +38 -38
  943. package/dist/types/components/ic-input-validation/ic-input-validation.d.ts +23 -23
  944. package/dist/types/components/ic-link/ic-link.d.ts +44 -44
  945. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +76 -76
  946. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.types.d.ts +3 -3
  947. package/dist/types/components/ic-menu/ic-menu.d.ts +183 -183
  948. package/dist/types/components/ic-menu/ic-menu.types.d.ts +6 -6
  949. package/dist/types/components/ic-menu-group/ic-menu-group.d.ts +6 -6
  950. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +66 -66
  951. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +47 -47
  952. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +62 -62
  953. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +80 -80
  954. package/dist/types/components/ic-navigation-menu/ic-navigation-menu.d.ts +29 -29
  955. package/dist/types/components/ic-page-header/ic-page-header.d.ts +48 -48
  956. package/dist/types/components/ic-pagination/ic-pagination.d.ts +78 -77
  957. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +1 -1
  958. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +42 -42
  959. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +60 -60
  960. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +67 -67
  961. package/dist/types/components/ic-radio-group/ic-radio-group.types.d.ts +5 -5
  962. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +89 -89
  963. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +248 -248
  964. package/dist/types/components/ic-search-bar/ic-search-bar.types.d.ts +1 -1
  965. package/dist/types/components/ic-section-container/ic-section-container.d.ts +9 -9
  966. package/dist/types/components/ic-select/ic-select.d.ts +269 -269
  967. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +103 -97
  968. package/dist/types/components/ic-side-navigation/ic-side-navigation.types.d.ts +10 -6
  969. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +19 -19
  970. package/dist/types/components/ic-status-tag/ic-status-tag.d.ts +31 -31
  971. package/dist/types/components/ic-step/ic-step.d.ts +51 -51
  972. package/dist/types/components/ic-stepper/ic-stepper.d.ts +40 -40
  973. package/dist/types/components/ic-switch/ic-switch.d.ts +73 -73
  974. package/dist/types/components/ic-switch/ic-switch.types.d.ts +2 -2
  975. package/dist/types/components/ic-tab/ic-tab.d.ts +51 -51
  976. package/dist/types/components/ic-tab/ic-tab.types.d.ts +4 -4
  977. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +59 -59
  978. package/dist/types/components/ic-tab-group/ic-tab-group.d.ts +19 -19
  979. package/dist/types/components/ic-tab-panel/ic-tab-panel.d.ts +33 -33
  980. package/dist/types/components/ic-text-field/ic-text-field.d.ts +214 -214
  981. package/dist/types/components/ic-theme/ic-theme.d.ts +14 -14
  982. package/dist/types/components/ic-toast/ic-toast.d.ts +58 -58
  983. package/dist/types/components/ic-toast-region/ic-toast-region.d.ts +16 -15
  984. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +54 -50
  985. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +77 -72
  986. package/dist/types/components/ic-typography/ic-typography.d.ts +54 -54
  987. package/dist/types/components.d.ts +397 -3
  988. package/dist/types/stencil-public-runtime.d.ts +29 -0
  989. package/dist/types/testspec.setup.d.ts +7 -7
  990. package/dist/types/utils/constants.d.ts +26 -26
  991. package/dist/types/utils/helpers.d.ts +7 -7
  992. package/dist/types/utils/types.d.ts +31 -31
  993. package/hydrate/index.d.ts +2 -2
  994. package/hydrate/index.js +15870 -14095
  995. package/package.json +5 -4
  996. package/vscode-data.json +3939 -0
  997. package/dist/cjs/helpers-0d63359f.js.map +0 -1
  998. package/dist/cjs/index-4f8c900f.js.map +0 -1
  999. package/dist/cjs/types-7d67439f.js +0 -16
  1000. package/dist/core/p-03329fd0.entry.js +0 -2
  1001. package/dist/core/p-03329fd0.entry.js.map +0 -1
  1002. package/dist/core/p-24da56e7.entry.js +0 -2
  1003. package/dist/core/p-24da56e7.entry.js.map +0 -1
  1004. package/dist/core/p-39c8111d.entry.js +0 -2
  1005. package/dist/core/p-39c8111d.entry.js.map +0 -1
  1006. package/dist/core/p-3a15202f.entry.js.map +0 -1
  1007. package/dist/core/p-4bc35224.entry.js.map +0 -1
  1008. package/dist/core/p-59bdafff.entry.js +0 -2
  1009. package/dist/core/p-59bdafff.entry.js.map +0 -1
  1010. package/dist/core/p-6c376756.entry.js +0 -2
  1011. package/dist/core/p-6c376756.entry.js.map +0 -1
  1012. package/dist/core/p-717907de.entry.js +0 -2
  1013. package/dist/core/p-717907de.entry.js.map +0 -1
  1014. package/dist/core/p-752f0f9a.entry.js.map +0 -1
  1015. package/dist/core/p-9d124fc7.js +0 -3
  1016. package/dist/core/p-9d124fc7.js.map +0 -1
  1017. package/dist/core/p-c0719bf4.entry.js +0 -2
  1018. package/dist/core/p-c0719bf4.entry.js.map +0 -1
  1019. package/dist/core/p-c0c62df4.entry.js.map +0 -1
  1020. package/dist/core/p-ca6073be.entry.js.map +0 -1
  1021. package/dist/core/p-e9ddb8cd.entry.js +0 -2
  1022. package/dist/core/p-e9ddb8cd.entry.js.map +0 -1
  1023. package/dist/esm/helpers-24f6e762.js.map +0 -1
  1024. package/dist/esm/index-813020f1.js.map +0 -1
  1025. package/dist/esm/types-b2398b37.js +0 -16
  1026. /package/dist/core/{p-7ce86152.entry.js.map → p-056f8a67.entry.js.map} +0 -0
  1027. /package/dist/core/{p-08b59078.entry.js.map → p-11736fbe.entry.js.map} +0 -0
  1028. /package/dist/core/{p-5ccbb042.entry.js.map → p-15624e08.entry.js.map} +0 -0
  1029. /package/dist/core/{p-5fcd202e.entry.js.map → p-15ef0674.entry.js.map} +0 -0
  1030. /package/dist/core/{p-88ea1e49.entry.js.map → p-180e36b1.entry.js.map} +0 -0
  1031. /package/dist/core/{p-43af3cf6.entry.js.map → p-22c024ee.entry.js.map} +0 -0
  1032. /package/dist/core/{p-613aa265.js.map → p-26b7b18f.js.map} +0 -0
  1033. /package/dist/core/{p-932fb4b7.entry.js.map → p-287ab47c.entry.js.map} +0 -0
  1034. /package/dist/core/{p-69948c3e.entry.js.map → p-2b24b4bf.entry.js.map} +0 -0
  1035. /package/dist/core/{p-9f6ffced.entry.js.map → p-31969be6.entry.js.map} +0 -0
  1036. /package/dist/core/{p-475b7bd2.entry.js.map → p-335fc5e4.entry.js.map} +0 -0
  1037. /package/dist/core/{p-c9ef9f5c.entry.js.map → p-366bcb17.entry.js.map} +0 -0
  1038. /package/dist/core/{p-ed256f1d.entry.js.map → p-3a0ef91e.entry.js.map} +0 -0
  1039. /package/dist/core/{p-cb5f19ea.entry.js.map → p-51f9f329.entry.js.map} +0 -0
  1040. /package/dist/core/{p-f019219c.entry.js.map → p-529d8955.entry.js.map} +0 -0
  1041. /package/dist/core/{p-b879fa3e.entry.js.map → p-5c7e339f.entry.js.map} +0 -0
  1042. /package/dist/core/{p-2c30b583.entry.js.map → p-60c4604f.entry.js.map} +0 -0
  1043. /package/dist/core/{p-99fad66b.entry.js.map → p-6bc431b2.entry.js.map} +0 -0
  1044. /package/dist/core/{p-ccac1730.entry.js.map → p-6d3f9501.entry.js.map} +0 -0
  1045. /package/dist/core/{p-536b3c97.entry.js.map → p-6eb0421d.entry.js.map} +0 -0
  1046. /package/dist/core/{p-48525498.entry.js.map → p-765bdd98.entry.js.map} +0 -0
  1047. /package/dist/core/{p-3a814fc4.entry.js.map → p-7f887c1e.entry.js.map} +0 -0
  1048. /package/dist/core/{p-e3bffcae.entry.js.map → p-94e88827.entry.js.map} +0 -0
  1049. /package/dist/core/{p-8fb4f0c0.js.map → p-95a864bf.js.map} +0 -0
  1050. /package/dist/core/{p-eb4641a9.entry.js.map → p-96da1e85.entry.js.map} +0 -0
  1051. /package/dist/core/{p-69d15528.entry.js.map → p-988991d3.entry.js.map} +0 -0
  1052. /package/dist/core/{p-0c82048e.entry.js.map → p-9c30720d.entry.js.map} +0 -0
  1053. /package/dist/core/{p-a76912b0.entry.js.map → p-aa0a9870.entry.js.map} +0 -0
  1054. /package/dist/core/{p-76563540.entry.js.map → p-ad36a704.entry.js.map} +0 -0
  1055. /package/dist/core/{p-d80f99e0.entry.js.map → p-b0088956.entry.js.map} +0 -0
  1056. /package/dist/core/{p-2265e418.entry.js.map → p-b6a575c3.entry.js.map} +0 -0
  1057. /package/dist/core/{p-fbc8a739.entry.js.map → p-b9736cf4.entry.js.map} +0 -0
  1058. /package/dist/core/{p-025f9d2a.entry.js.map → p-b99f9e89.entry.js.map} +0 -0
  1059. /package/dist/core/{p-b0ce60a0.entry.js.map → p-c2452388.entry.js.map} +0 -0
  1060. /package/dist/core/{p-345fe84a.entry.js.map → p-c770e7a2.entry.js.map} +0 -0
  1061. /package/dist/core/{p-748159fe.entry.js.map → p-ca48e97a.entry.js.map} +0 -0
  1062. /package/dist/core/{p-5a3ca50a.entry.js.map → p-cd8de4c5.entry.js.map} +0 -0
  1063. /package/dist/core/{p-a4397df4.entry.js.map → p-cfc930f6.entry.js.map} +0 -0
  1064. /package/dist/core/{p-9ff57f09.entry.js.map → p-e5abfadd.entry.js.map} +0 -0
  1065. /package/dist/core/{p-41c6eaa1.entry.js.map → p-e9738c74.entry.js.map} +0 -0
  1066. /package/dist/core/{p-e2fd542e.entry.js.map → p-edd29edc.entry.js.map} +0 -0
  1067. /package/dist/core/{p-657513b5.entry.js.map → p-ee97e2a5.entry.js.map} +0 -0
  1068. /package/dist/core/{p-8b18346a.entry.js.map → p-f0809037.entry.js.map} +0 -0
  1069. /package/dist/core/{p-5bb6c79b.entry.js.map → p-f2e6b9ef.entry.js.map} +0 -0
  1070. /package/dist/core/{p-cf4bacee.entry.js.map → p-fdb4b48f.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ic-select.e2e.js","sourceRoot":"","sources":["../../../../../src/components/ic-select/test/basic/ic-select.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { KeyInput } from \"puppeteer\";\n\nbeforeAll(() => {\n jest.spyOn(console, \"warn\").mockImplementation(jest.fn());\n});\n\nconst options = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n]`;\n\nconst optionsWithDuplicate = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Parent',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 4', value: 'Test value 4' },\n ]\n },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Test label 3 diff label', value: 'Test value 3' },\n]`;\n\nconst largeOptions = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Test label 4', value: 'Test value 4' },\n { label: 'Test label 5', value: 'Test value 5' },\n { label: 'Test label 6', value: 'Test value 6' },\n { label: 'Test label 7', value: 'Test value 7' },\n { label: 'Test label 8', value: 'Test value 8' },\n { label: 'Test label 9', value: 'Test value 9' },\n { label: 'Test label 10', value: 'Test value 10' },\n]`;\n\nconst searchableOptions = `[\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Latte\", value: \"Lat\" },\n { label: \"Americano\", value: \"Ame\" },\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Flat white\", value: \"Fla\" },\n { label: \"Mocha\", value: \"Moc\" },\n { label: \"Macchiato\", value: \"Mac\" },\n]`;\n\nconst getTestSelect = (\n options: string\n) => `<ic-select label=\"IC Select Test\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSelectFormReset = (\n options: string\n) => `<form><ic-select label=\"IC Select Test\"></ic-select><button type=\"reset\" id=\"resetButton\">Reset</button></form>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSelectSearchableFormReset = (\n options: string\n) => `<form><ic-select label=\"IC Select Test\" searchable></ic-select><button type=\"reset\" id=\"resetButton\">Reset</button></form>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n select.value = 'Test value 1';\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSearchableSelect = (\n options: string\n) => `<ic-select label=\"IC Select Test\" searchable></ic-select><button>Button</button>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n </script>`;\n\nconst getTestSearchableSelectAsync = () =>\n `<ic-select label=\"IC Select Test\" searchable disable-filter=\"true\" value=\"Test value\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = [];\n window.setTimeout(() => {\n select.options = []\n }, 800)\n </script>`;\n\nconst getTestSelectAsync = (firstDataset: string, secondDataset: string) =>\n `<ic-select label=\"IC Select Test\" value=\"Test value\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${firstDataset};\n window.setTimeout(() => {\n select.options = ${secondDataset}\n }, 1500)\n </script>`;\n\nconst getMenuVisibility = async (page: E2EPage) => {\n return await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu #ic-select-input-0-menu\");\n return window.getComputedStyle(menu).visibility;\n });\n};\n\nconst focusAndTypeIntoInput = async (value: string, page: E2EPage) => {\n await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n value.split(\"\").forEach(async (char: KeyInput) => {\n await page.keyboard.press(char);\n });\n};\n\ndescribe(\"ic-select\", () => {\n describe(\"custom\", () => {\n it(\"should render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render when no options are provided\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\"></ic-select>`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should open, set focus on menu and set aria-expanded to 'true' when input clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n expect(select.getAttribute(\"aria-expanded\")).toBeTruthy();\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0-menu\");\n });\n\n it(\"should render options correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(3);\n expect(menuOptions[0]).toEqualText(\"Test label 1\");\n expect(menuOptions[1]).toEqualText(\"Test label 2\");\n expect(menuOptions[2]).toEqualText(\"Test label 3\");\n });\n\n it(\"should deduplicate options and warn about duplicate\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(optionsWithDuplicate));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(4);\n expect(menuOptions[0]).toEqualText(\"Test label 1\");\n expect(menuOptions[1]).toEqualText(\"Test label 2\");\n expect(menuOptions[2]).toEqualText(\"Test label 3\");\n expect(menuOptions[3]).toEqualText(\"Test label 4\");\n // We can't test for ic-warn being called because it's already called seven times over 'hiddeninputvalue' changing\n });\n\n it(\"should call icChange when the selected option is changed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n });\n\n describe(\"when no option is selected\", () => {\n it(\"should open menu, apply focus style on first option and set as value when Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should open menu when Space is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\" \");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should open menu when Enter is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should open menu, apply focus style on last option and set as value when Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should keep menu closed when Backspace, Home, End and Escape are pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"Backspace\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"Home\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"End\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"Escape\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n });\n\n describe(\"when an option is selected\", () => {\n it(\"should move focus to next option and set as value when Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const secondOption = await menu.findAll(\"li\");\n expect(secondOption[1]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should move focus to first option and set as value when focus is on last option and Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should move focus to previous option and set as value when Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const secondOption = await menu.findAll(\"li\");\n expect(secondOption[1]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should move focus to last option and set as value when focus is on first option and Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should move focus to first option and set as value when Home is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await page.keyboard.press(\"Home\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should move focus to last option and set as value when End is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"End\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should display a check next to the selected option and set aria-selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveAttribute(\"aria-selected\");\n expect(await firstOption[0].find(\".check-icon\")).not.toBeNull;\n expect(firstOption[1]).not.toHaveAttribute(\"aria-selected\");\n expect(await firstOption[1].find(\".check-icon\")).toBeNull;\n });\n\n it(\"should display a check next to the selected option and set aria-selected when a default value is applied\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveAttribute(\"aria-selected\");\n expect(await firstOption[0].find(\".check-icon\")).not.toBeNull;\n });\n\n it(\"should display clear button if the 'show-clear-button' prop is supplied and an option is selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n let clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull();\n\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"show-clear-button\", true);\n await page.waitForChanges();\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).not.toBeNull();\n });\n\n it(\"should clear the input if the clear button is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"show-clear-button\", true);\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let clearButton = await page.find(\"ic-select >>> .clear-button\");\n await clearButton.click();\n await page.waitForChanges();\n\n expect(select).toEqualText(\"Select an option\");\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull;\n });\n });\n\n it(\"should close menu when input is clicked while open and set focus on it\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n await select.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when an option is clicked, set as value and move focus onto the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n await menu.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 2\",\n });\n expect(select).toEqualText(\"Test label 2\");\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Space is pressed and move focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\" \");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Enter is pressed and set focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Escape is pressed and set focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Escape\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when another element on the page is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `${getTestSelect(options)}<button>Test button</button>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const button = await page.find(\"button\");\n await button.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should close menu when Tab is pressed to move focus onto the next element on the page\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `${getTestSelect(options)}<button>Test button</button>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should close menu when Shift + Tab is pressed to move focus onto the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(`${getTestSelect(options)}`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await page.waitForTimeout(1000);\n\n await page.keyboard.down(\"Shift\");\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n await page.keyboard.up(\"Shift\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should display the label of the value passed in using the 'value' prop as the selected option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 2\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should render options with descriptions\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOptionDescription = await menu.find(\"li .option-description\");\n expect(firstOptionDescription).toEqualText(\"Test description 1\");\n });\n\n it(\"should render the placeholder\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"placeholder\", \"Test placeholder\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toEqualText(\"Test placeholder\");\n });\n\n it(\"should render as disabled correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"disabled\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toHaveAttribute(\"disabled\");\n\n await select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should prevent click on disabled options\", async () => {\n const page = await newE2EPage();\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2', disabled: true },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n await menu.click();\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should set aria-disabled and skip focus when option disabled\", async () => {\n const page = await newE2EPage();\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions[0]).toHaveAttribute(\"aria-disabled\");\n expect(menuOptions[1]).toHaveClass(\"focused-option\");\n });\n\n it(\"should render as required correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"required\", true);\n await page.waitForChanges();\n\n const label = await page.find(\"ic-select >>> ic-input-label\");\n expect(label).toEqualText(\"IC Select Test *\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(\n select.getAttribute(\"aria-label\").includes(\"required\")\n ).toBeTruthy();\n });\n\n it(\"should render selected value as text when read-only\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n icSelect.setAttribute(\"readonly\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n const typography = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"ic-typography\"),\n (typography) => typography.innerText\n )\n );\n\n expect(select).toBe(null);\n expect(typography[1]).toBe(\"Test label 1\");\n });\n\n it(\"should render options as groups if they have children\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const optionGroupTitle = await page.find(\n \"ic-select >>> ic-menu >>> .option-group-title\"\n );\n expect(optionGroupTitle).not.toBeNull();\n\n const optionsText = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"ic-menu ic-typography\"),\n (typography) => (typography as HTMLElement).innerText\n )\n );\n expect(optionsText[0]).toBe(\"Test group\");\n });\n\n it(\"should render and focus child options correctly\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const childOptions = await menu.findAll(\"li\");\n expect(childOptions).toHaveLength(3);\n expect(childOptions[0]).toEqualText(\"Test label 1\");\n expect(childOptions[1]).toEqualText(\"Test label 2\");\n expect(childOptions[2]).toEqualText(\"Test label 3\");\n expect(childOptions[0]).toHaveClass(\"focused-option\");\n });\n\n it(\"should render options at the top of the menu if they are recommended\", async () => {\n const page = await newE2EPage();\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2', recommended: true },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toEqualText(\"Test label 2\");\n });\n\n it(\"should set aria-invalid if validation status is 'error'\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"validation-status\", \"error\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toHaveAttribute(\"aria-invalid\");\n });\n\n it(\"should set the aria-label correctly if an option has a description\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test description 1\"\n );\n });\n\n it(\"should set the aria-label correctly if an option is within a group\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test group group\"\n );\n });\n\n it(\"should set the aria-label correctly if an option has a description and is within a group\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test description 1, Test group group\"\n );\n });\n\n it(\"should call icFocus when focused\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<button>Test button</button>${getTestSelect(options)}`\n );\n await page.waitForChanges();\n\n const button = await page.find(\"button\");\n await button.focus();\n await page.waitForChanges();\n\n const icFocus = await page.spyOnEvent(\"icFocus\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icFocus).toHaveReceivedEvent();\n });\n\n it(\"should call icBlur when it loses focus\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icBlur = await page.spyOnEvent(\"icBlur\");\n\n await page.keyboard.down(\"Tab\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icBlur).toHaveReceivedEvent();\n });\n\n describe(\"loading\", () => {\n it(\"should display a loading message and then the options when fetching options externally\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\" loading=\"true\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = [];\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n setTimeout(() => {\n select.options = [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ];\n }, 1000);\n </script>`);\n await page.waitForChanges();\n\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n\n await page.waitForTimeout(1500);\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Test label 1\");\n\n const icSelect = await page.find(\"ic-select\");\n expect(icSelect.getAttribute(\"loading\")).toBeFalsy;\n });\n\n it(\"should display a retry button and a custom loading error when it times out and should not update the options\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" loading=\"true\" timeout=\"500\" options=\"[]\" loading-error-label=\"Error\"></ic-select>`\n );\n await page.waitForChanges();\n\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n await page.waitForTimeout(560);\n\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Error\");\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n expect(retryButton).not.toBeNull;\n\n await page.waitForTimeout(1500);\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Error\");\n });\n\n it(\"should focus the retry button on tab and emit icBlur and close the menu when blurring\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" loading=\"true\" timeout=\"500\" options=\"[]\" loading-error-label=\"Error\"></ic-select>`\n );\n await page.waitForChanges();\n await page.waitForTimeout(560);\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n const icBlur = await page.spyOnEvent(\"icBlur\");\n expect(icBlur).not.toHaveReceivedEvent();\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"retry-button\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n expect(icBlur).toHaveReceivedEvent();\n });\n\n it(\"should retry loading and keep the menu open when retry button is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\" loading=\"true\" timeout=\"500\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = [];\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n select.addEventListener('icRetryLoad', function () {\n select.loading = true;\n });\n </script>`);\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n await retryButton.click();\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should retry loading and keep the menu open when retry button is pressed with Enter\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" loading=\"true\" options=\"[]\" timeout=\"500\"></ic-select>`\n );\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n const firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n await retryButton.press(\"Enter\");\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should render a No results message if no options are provided on render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(`[]`));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n });\n });\n\n describe(\"searchable\", () => {\n it(\"should open menu when character is entered in input field and filter options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"c\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(4);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n expect(menuOptions[1]).toEqualText(\"Americano\");\n expect(menuOptions[2]).toEqualText(\"Mocha\");\n expect(menuOptions[3]).toEqualText(\"Macchiato\");\n });\n\n it(\"should keep the same options when characters are entered and the menu is reopened\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"foo\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n let menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should display no results state when search term matches none of the options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"z\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should filter options accordingly when Backspace is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"f\");\n await page.waitForChanges();\n await select.press(\"i\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n let menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n\n await select.press(\"Backspace\");\n await page.waitForChanges();\n\n menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Filter\");\n expect(menuOptions[1]).toEqualText(\"Flat white\");\n });\n\n it(\"should filter options when search match position is set to start\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"search-match-position\", \"start\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"c\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n });\n\n it(\"should include option descriptions in search\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Latte\", value: \"Lat\", description: \"A milkier coffee than a cappuccino\" },\n { label: \"Americano\", value: \"Ame\" },\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Flat white\", value: \"Fla\" },\n { label: \"Mocha\", value: \"Moc\" },\n { label: \"Macchiato\", value: \"Mac\" },\n ]`;\n await page.setContent(getTestSearchableSelect(optionsWithDescription));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"include-descriptions-in-search\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"m\");\n await page.waitForChanges();\n await select.press(\"i\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0].textContent.substring(0, 5)).toEqualText(\"Latte\");\n });\n\n it(\"should not include group titles in search\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: \"Fancy\",\n children: [\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Flat white\", value: \"Flat\" },\n ],\n },\n {\n label: \"Boring\",\n children: [\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Latte\", value: \"Lat\" },\n ],\n },\n ]`;\n await page.setContent(getTestSearchableSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"b\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should display whole group when group titles included in search\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: \"Fancy\",\n children: [\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Flat white\", value: \"Flat\" },\n ],\n },\n {\n label: \"Boring\",\n children: [\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Latte\", value: \"Lat\" },\n ],\n },\n ]`;\n await page.setContent(getTestSearchableSelect(groupedOptions));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"include-group-titles-in-search\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"b\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Filter\");\n expect(menuOptions[1]).toEqualText(\"Latte\");\n });\n\n it(\"should display a clear button which clears the input when clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n let clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull();\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"a\");\n await page.waitForChanges();\n\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).not.toBeNull();\n\n await clearButton.click();\n expect(select.textContent).toBe(\"\");\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n });\n\n it(\"should emit the value as null when the input is changed after selecting an option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Cap\",\n });\n\n const clearButton = await page.find(\"ic-select >>> .clear-button\");\n await clearButton.click();\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n });\n\n it(\"should still filter the options when the input is changed after selecting an option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Cap\",\n });\n\n for (let i = 0; i <= 7; i++) {\n select.press(\"Backspace\");\n await page.waitForChanges();\n }\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n\n await page.waitForChanges();\n\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n expect(menuOptions[1]).toEqualText(\"Americano\");\n });\n\n it(\"should close menu on blur\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await select.press(\"Tab\");\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should emit icChange on delay\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" debounce=\"500\" searchable></ic-select>`\n );\n\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n await focusAndTypeIntoInput(\"foo\", page);\n\n await page.waitForTimeout(600);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n\n await focusAndTypeIntoInput(\"bar\", page);\n await page.waitForChanges();\n await page.waitForTimeout(100);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n await page.waitForTimeout(500);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foobar\",\n });\n });\n\n it(\"should update hidden input to value typed in select searchable input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"bar\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"bar\");\n });\n\n it(\"should keep typed in hidden input value when highlighting menu options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"cap\", page);\n\n await page.waitForChanges();\n\n let hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"cap\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select >>> ic-menu > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"cap\");\n });\n\n it(\"should update hidden value from typed to selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"o\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"o\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select >>> ic-menu > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cap\");\n });\n\n it(\"should update hidden value from typed to selected to typed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"o\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"o\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select >>> ic-menu > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cap\");\n\n await page.keyboard.press(\"1\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cappuccino1\");\n });\n\n it(\"should update the value of the input and options when passing the value directly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n select.setAttribute(\"value\", \"foo\");\n\n await page.waitForChanges();\n\n const selectInput = await page.find(\n 'ic-select >>> input[role=\"combobox\"]'\n );\n\n expect(await selectInput.getProperty(\"value\")).toBe(\"foo\");\n });\n\n it(\"should trigger icChange on input for each typed value\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n const icChange = await select.spyOnEvent(\"icChange\");\n\n await focusAndTypeIntoInput(\"f\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"f\",\n });\n\n await focusAndTypeIntoInput(\"o\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"fo\",\n });\n\n await focusAndTypeIntoInput(\"o\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n });\n\n it(\"should not trigger icChange on highlighting menu items\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n const icChange = await select.spyOnEvent(\"icChange\");\n\n await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n expect(icChange).not.toHaveReceivedEvent();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n expect(icChange).not.toHaveReceivedEvent();\n });\n\n it(\"should not select a menu option when typing into the searchable input field\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Cap\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).not.toHaveClass(\"aria-selected\");\n });\n\n it(\"should not selet a menu option when one has previously been set and backspace is pressed\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Lat\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Latte\");\n\n await page.keyboard.press(\"Backspace\");\n await page.waitForChanges();\n await page.keyboard.press(\"Backspace\");\n await page.waitForChanges();\n\n const options = await menu.findAll(\"li\");\n\n options.forEach((option) => {\n expect(option).not.toHaveClass(\"aria-selected\");\n });\n });\n\n it(\"should display selected option when selecting a menu option and then opening and closing the menu\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Lat\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Latte\");\n\n await page.evaluate(() => {\n const button = document.querySelector(\"button\");\n button.focus();\n });\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const select = await page.find(\"ic-select\");\n await select.click();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const latteOption = await menu.find(\"li[data-value='Lat']\");\n\n expect(latteOption).toHaveAttribute(\"aria-selected\");\n });\n\n it(\"hidden input value when on initial load with default value\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\n \"ic-select > [name*='ic-select-input-0']\"\n );\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n });\n\n it(\"should submit hidden input value when updating value, pressing reset to initial value and then submitting\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\n \"ic-select > [name*='ic-select-input-0']\"\n );\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"Backspace\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 2\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n });\n\n it(\"should scroll menu\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(largeOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n let menuScrollTop = await page.$eval(\"ic-select\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-menu ul\");\n return menu.scrollTop;\n });\n\n expect(menuScrollTop).toBe(0);\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 1\");\n\n await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n menuScrollTop = await page.$eval(\"ic-select\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-menu ul\");\n return menu.scrollTop;\n });\n\n expect(menuScrollTop).not.toBe(0);\n });\n\n it(\"should only highlight and select enabled options in searchable with arrowDown\", async () => {\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3', disabled: true },\n { label: 'Test label 4', value: 'Test value 4', disabled: true },\n { label: 'Test label 5', value: 'Test value 5' },\n ]`;\n\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuItems = await menu.findAll(\"li\");\n\n expect(menuItems[0]).not.toHaveClass(\"focused-option\");\n expect(menuItems[1]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 2\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 5\");\n });\n\n it(\"should only highlight and select enabled options in searchable with arrowUp\", async () => {\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3', disabled: true },\n { label: 'Test label 4', value: 'Test value 4', disabled: true },\n { label: 'Test label 5', value: 'Test value 5' },\n ]`;\n\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuItems = await menu.findAll(\"li\");\n\n expect(menuItems[menuItems.length - 1]).toHaveClass(\"focused-option\");\n expect(menuItems[menuItems.length - 2]).not.toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 5\");\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 2\");\n });\n\n describe(\"loading\", () => {\n it(\"should retry loading and keep the menu open when retry button is pressed with Spacebar\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" searchable=\"true\" options=\"[]\" loading=\"true\" timeout=\"500\"></ic-select>`\n );\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n const firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n await retryButton.press(\" \");\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should cancel loading if the clear button is pressed mid-load\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\" searchable=\"true\" timeout=\"500\"></ic-select>\n <script>\n var select = document.querySelector(\"ic-select\");\n select.options = [];\n select.addEventListener(\"icChange\", function() {\n select.loading = \"true\";\n });\n </script>`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"c\");\n await page.waitForChanges();\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n\n const clearButton = await page.find(\"ic-select >>> .clear-button\");\n await clearButton.click();\n await page.waitForChanges();\n await page.waitForTimeout(560);\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toBeNull;\n });\n\n it(\"should render a No results message if no options are provided on render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(`[]`));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n });\n });\n\n it(\"should reset to initial value on form reset\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectFormReset(options));\n await page.waitForChanges();\n\n let value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(undefined);\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(undefined);\n });\n\n it(\"menu should not be visible on initial load if setting default value and disable filter is set\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelectAsync());\n await page.waitForChanges();\n await page.waitForTimeout(900);\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should reset to initial value on form reset with searchable\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n let value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 2\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n });\n\n let page: E2EPage;\n\n describe(\"native\", () => {\n beforeEach(async () => {\n page = await newE2EPage();\n await page.setUserAgent(\n \"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1\"\n );\n await page.setViewport({\n width: 375,\n height: 667,\n isMobile: true,\n hasTouch: true,\n });\n });\n\n it(\"should render\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render a native select when searchable is applied on mobile\", async () => {\n await page.setContent(getTestSearchableSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render when no options are provided\", async () => {\n await page.setContent(`<ic-select label=\"IC Select Test\"></ic-select>`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should disable options correctly\", async () => {\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const optionsDisabled = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.disabled\n )\n );\n\n expect(optionsDisabled[0]).toBe(true);\n });\n\n it(\"should render options as <optgroup>s if they have children\", async () => {\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const optGroup = await page.evaluate(() =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"optgroup\")\n );\n\n expect(optGroup).toBeTruthy();\n });\n\n it(\"should render a required <select> when required\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"required\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).toHaveAttribute(\"required\");\n });\n\n it(\"should not render a label when the 'hide-label' prop is supplied\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"hide-label\", true);\n await page.waitForChanges();\n\n const label = await page.find(\"ic-select >>> ic-input-label\");\n\n expect(label).toBeNull();\n });\n\n it(\"should render a disabled <select> when the 'disabled' prop is supplied\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"disabled\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).toHaveAttribute(\"disabled\");\n });\n\n it(\"should render the selected value as text instead of rendering a <select> when read-only\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n icSelect.setAttribute(\"readonly\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n const typography = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"ic-typography\"),\n (typography) => typography.innerText\n )\n );\n\n expect(select).toBe(null);\n expect(typography[1]).toBe(\"Test label 1\");\n });\n\n it(\"should render the correct placeholder\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"placeholder\", \"Test placeholder\");\n await page.waitForChanges();\n\n const optionLabels = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.innerText\n )\n );\n\n expect(optionLabels[0]).toEqual(\"Test placeholder\");\n });\n\n it(\"should set aria-invalid if validation status is 'error'\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"validation-status\", \"error\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n expect(select).toHaveAttribute(\"aria-invalid\");\n });\n\n it(\"should display the value passed in using the 'value' prop as the selected option\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const optionsSelected = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.selected\n )\n );\n\n expect(optionsSelected[1]).toBe(true);\n });\n\n it(\"should set the correct name on the hidden input\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"name\", \"Test name\");\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input\");\n const hiddenInputName = await hiddenInput.getProperty(\"name\");\n\n expect(hiddenInputName).toEqual(\"Test name\");\n });\n\n it(\"should call icChange when the selected option is changed\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n const select = await page.find(\"ic-select >>> select\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n });\n\n it(\"should call icFocus when focused\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icFocus = await page.spyOnEvent(\"icFocus\");\n\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icFocus).toHaveReceivedEvent();\n });\n\n it(\"should call icBlur when it loses focus\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icBlur = await page.spyOnEvent(\"icBlur\");\n\n await page.keyboard.down(\"Tab\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icBlur).toHaveReceivedEvent();\n });\n\n it(\"should set the 'placeholder' class name if no option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"select\")\n .className\n );\n\n expect(selectClassName).toBe(\"placeholder\");\n });\n\n it(\"should set the text colour to the primary text colour if an option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"select\")\n .className\n );\n\n expect(selectClassName).toBe(\"select-option-selected\");\n });\n\n it(\"should change the text colour to the primary text colour when an option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"select\")\n .className\n );\n\n expect(selectClassName).toBe(\"select-option-selected\");\n });\n\n it(\"should add .menu-scroll to menu components when options height is over 320\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(largeOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> button.select-input\");\n await select.click();\n await page.waitForChanges();\n\n const menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeTruthy();\n });\n\n it(\"should add .menu-scroll to menu components when options are initially set and then populated with large data set\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectAsync(options, largeOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> button.select-input\");\n await select.click();\n await page.waitForChanges();\n\n let menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeFalsy();\n\n await page.waitForTimeout(1200);\n\n menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeTruthy();\n });\n });\n});\n"]}
1
+ {"version":3,"file":"ic-select.e2e.js","sourceRoot":"","sources":["../../../../../src/components/ic-select/test/basic/ic-select.e2e.ts"],"names":[],"mappings":"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","sourcesContent":["import { E2EPage, newE2EPage } from \"@stencil/core/testing\";\nimport { KeyInput } from \"puppeteer\";\n\nbeforeAll(() => {\n jest.spyOn(console, \"warn\").mockImplementation(jest.fn());\n});\n\nconst options = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n]`;\n\nconst optionsWithDuplicate = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Parent',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 4', value: 'Test value 4' },\n ]\n },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Test label 3 diff label', value: 'Test value 3' },\n]`;\n\nconst largeOptions = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n { label: 'Test label 4', value: 'Test value 4' },\n { label: 'Test label 5', value: 'Test value 5' },\n { label: 'Test label 6', value: 'Test value 6' },\n { label: 'Test label 7', value: 'Test value 7' },\n { label: 'Test label 8', value: 'Test value 8' },\n { label: 'Test label 9', value: 'Test value 9' },\n { label: 'Test label 10', value: 'Test value 10' },\n]`;\n\nconst searchableOptions = `[\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Latte\", value: \"Lat\" },\n { label: \"Americano\", value: \"Ame\" },\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Flat white\", value: \"Fla\" },\n { label: \"Mocha\", value: \"Moc\" },\n { label: \"Macchiato\", value: \"Mac\" },\n]`;\n\nconst getTestSelect = (\n options: string\n) => `<ic-select label=\"IC Select Test\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSelectFormReset = (\n options: string\n) => `<form><ic-select label=\"IC Select Test\"></ic-select><button type=\"reset\" id=\"resetButton\">Reset</button></form>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSelectSearchableFormReset = (\n options: string\n) => `<form><ic-select label=\"IC Select Test\" searchable></ic-select><button type=\"reset\" id=\"resetButton\">Reset</button></form>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n select.value = 'Test value 1';\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n </script>`;\n\nconst getTestSearchableSelect = (\n options: string\n) => `<ic-select label=\"IC Select Test\" searchable></ic-select><button>Button</button>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${options};\n </script>`;\n\nconst getTestSearchableSelectAsync = () =>\n `<ic-select label=\"IC Select Test\" searchable disable-filter=\"true\" value=\"Test value\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = [];\n window.setTimeout(() => {\n select.options = []\n }, 800)\n </script>`;\n\nconst getTestSelectAsync = (firstDataset: string, secondDataset: string) =>\n `<ic-select label=\"IC Select Test\" value=\"Test value\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = ${firstDataset};\n window.setTimeout(() => {\n select.options = ${secondDataset}\n }, 1500)\n </script>`;\n\nconst getMenuVisibility = async (page: E2EPage) => {\n return await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu #ic-select-input-0-menu\");\n return window.getComputedStyle(menu).visibility;\n });\n};\n\nconst focusAndTypeIntoInput = async (value: string, page: E2EPage) => {\n await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n value.split(\"\").forEach(async (char: KeyInput) => {\n await page.keyboard.press(char);\n });\n};\n\ndescribe(\"ic-select\", () => {\n describe(\"custom\", () => {\n it(\"should render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render when no options are provided\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\"></ic-select>`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should open, set focus on menu and set aria-expanded to 'true' when input clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n expect(select.getAttribute(\"aria-expanded\")).toBeTruthy();\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0-menu\");\n });\n\n it(\"should render options correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(3);\n expect(menuOptions[0]).toEqualText(\"Test label 1\");\n expect(menuOptions[1]).toEqualText(\"Test label 2\");\n expect(menuOptions[2]).toEqualText(\"Test label 3\");\n });\n\n it(\"should deduplicate options and warn about duplicate\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(optionsWithDuplicate));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(4);\n expect(menuOptions[0]).toEqualText(\"Test label 1\");\n expect(menuOptions[1]).toEqualText(\"Test label 2\");\n expect(menuOptions[2]).toEqualText(\"Test label 3\");\n expect(menuOptions[3]).toEqualText(\"Test label 4\");\n // We can't test for ic-warn being called because it's already called seven times over 'hiddeninputvalue' changing\n });\n\n it(\"should call icChange when the selected option is changed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n });\n\n describe(\"when no option is selected\", () => {\n it(\"should open menu, apply focus style on first option and set as value when Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should open menu when Space is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\" \");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should open menu when Enter is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should open menu, apply focus style on last option and set as value when Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should keep menu closed when Backspace, Home, End and Escape are pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"Backspace\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"Home\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"End\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n await select.press(\"Escape\");\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n });\n\n describe(\"when an option is selected\", () => {\n it(\"should move focus to next option and set as value when Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const secondOption = await menu.findAll(\"li\");\n expect(secondOption[1]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should move focus to first option and set as value when focus is on last option and Down Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should move focus to previous option and set as value when Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const secondOption = await menu.findAll(\"li\");\n expect(secondOption[1]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should move focus to last option and set as value when focus is on first option and Up Arrow is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await select.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should move focus to first option and set as value when Home is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowUp\");\n await page.keyboard.press(\"Home\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 1\");\n });\n\n it(\"should move focus to last option and set as value when End is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"End\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const lastOption = await menu.findAll(\"li\");\n expect(lastOption[2]).toHaveClass(\"focused-option\");\n expect(select).toEqualText(\"Test label 3\");\n });\n\n it(\"should display a check next to the selected option and set aria-selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveAttribute(\"aria-selected\");\n expect(await firstOption[0].find(\".check-icon\")).not.toBeNull;\n expect(firstOption[1]).not.toHaveAttribute(\"aria-selected\");\n expect(await firstOption[1].find(\".check-icon\")).toBeNull;\n });\n\n it(\"should display a check next to the selected option and set aria-selected when a default value is applied\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toHaveAttribute(\"aria-selected\");\n expect(await firstOption[0].find(\".check-icon\")).not.toBeNull;\n });\n\n it(\"should display clear button if the 'show-clear-button' prop is supplied and an option is selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n let clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull();\n\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"show-clear-button\", true);\n await page.waitForChanges();\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).not.toBeNull();\n });\n\n it(\"should clear the input if the clear button is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"show-clear-button\", true);\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let clearButton = await page.find(\"ic-select >>> .clear-button\");\n await clearButton.click();\n await page.waitForChanges();\n\n expect(select).toEqualText(\"Select an option\");\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull;\n });\n });\n\n it(\"should close menu when input is clicked while open and set focus on it\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n await select.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when an option is clicked, set as value and move focus onto the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n await menu.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 2\",\n });\n expect(select).toEqualText(\"Test label 2\");\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Space is pressed and move focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\" \");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Enter is pressed and set focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when Escape is pressed and set focus to the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Escape\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should close menu when another element on the page is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `${getTestSelect(options)}<button>Test button</button>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const button = await page.find(\"button\");\n await button.click();\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should close menu when Tab is pressed to move focus onto the next element on the page\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `${getTestSelect(options)}<button>Test button</button>`\n );\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should close menu when Shift + Tab is pressed to move focus onto the input\", async () => {\n const page = await newE2EPage();\n await page.setContent(`${getTestSelect(options)}`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await page.waitForTimeout(1000);\n\n await page.keyboard.down(\"Shift\");\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n\n await page.keyboard.up(\"Shift\");\n await page.waitForChanges();\n\n await page.waitForTimeout(1000);\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"ic-select-input-0\");\n });\n\n it(\"should display the label of the value passed in using the 'value' prop as the selected option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 2\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toEqualText(\"Test label 2\");\n });\n\n it(\"should render options with descriptions\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOptionDescription = await menu.find(\"li .option-description\");\n expect(firstOptionDescription).toEqualText(\"Test description 1\");\n });\n\n it(\"should render the placeholder\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"placeholder\", \"Test placeholder\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toEqualText(\"Test placeholder\");\n });\n\n it(\"should render as disabled correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"disabled\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toHaveAttribute(\"disabled\");\n\n await select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should prevent click on disabled options\", async () => {\n const page = await newE2EPage();\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2', disabled: true },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n await menu.click();\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should set aria-disabled and skip focus when option disabled\", async () => {\n const page = await newE2EPage();\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions[0]).toHaveAttribute(\"aria-disabled\");\n expect(menuOptions[1]).toHaveClass(\"focused-option\");\n });\n\n it(\"should render as required correctly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"required\", true);\n await page.waitForChanges();\n\n const label = await page.find(\"ic-select >>> ic-input-label\");\n expect(label).toEqualText(\"IC Select Test *\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(\n select.getAttribute(\"aria-label\").includes(\"required\")\n ).toBeTruthy();\n });\n\n it(\"should render selected value as text when read-only\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n icSelect.setAttribute(\"readonly\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n const typography = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"ic-typography\"),\n (typography) => typography.innerText\n )\n );\n\n expect(select).toBe(null);\n expect(typography[1]).toBe(\"Test label 1\");\n });\n\n it(\"should render options as groups if they have children\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const optionGroupTitle = await page.find(\n \"ic-select >>> ic-menu >>> .option-group-title\"\n );\n expect(optionGroupTitle).not.toBeNull();\n\n const optionsText = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"ic-menu ic-typography\"),\n (typography) => (typography as HTMLElement).innerText\n )\n );\n expect(optionsText[0]).toBe(\"Test group\");\n });\n\n it(\"should render and focus child options correctly\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const childOptions = await menu.findAll(\"li\");\n expect(childOptions).toHaveLength(3);\n expect(childOptions[0]).toEqualText(\"Test label 1\");\n expect(childOptions[1]).toEqualText(\"Test label 2\");\n expect(childOptions[2]).toEqualText(\"Test label 3\");\n expect(childOptions[0]).toHaveClass(\"focused-option\");\n });\n\n it(\"should render options at the top of the menu if they are recommended\", async () => {\n const page = await newE2EPage();\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2', recommended: true },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).toEqualText(\"Test label 2\");\n });\n\n it(\"should set aria-invalid if validation status is 'error'\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"validation-status\", \"error\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n expect(select).toHaveAttribute(\"aria-invalid\");\n });\n\n it(\"should set the aria-label correctly if an option has a description\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test description 1\"\n );\n });\n\n it(\"should set the aria-label correctly if an option is within a group\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test group group\"\n );\n });\n\n it(\"should set the aria-label correctly if an option has a description and is within a group\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(optionsWithDescription));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0].getAttribute(\"aria-label\")).toBe(\n \"Test label 1, Test description 1, Test group group\"\n );\n });\n\n it(\"should call icFocus when focused\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<button>Test button</button>${getTestSelect(options)}`\n );\n await page.waitForChanges();\n\n const button = await page.find(\"button\");\n await button.focus();\n await page.waitForChanges();\n\n const icFocus = await page.spyOnEvent(\"icFocus\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icFocus).toHaveReceivedEvent();\n });\n\n it(\"should call icBlur when it loses focus\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icBlur = await page.spyOnEvent(\"icBlur\");\n\n await page.keyboard.down(\"Tab\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icBlur).toHaveReceivedEvent();\n });\n\n describe(\"loading\", () => {\n it(\"should display a loading message and then the options when fetching options externally\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\" loading=\"true\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = [];\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n setTimeout(() => {\n select.options = [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ];\n }, 1000);\n </script>`);\n await page.waitForChanges();\n\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n\n await page.waitForTimeout(1500);\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Test label 1\");\n\n const icSelect = await page.find(\"ic-select\");\n expect(icSelect.getAttribute(\"loading\")).toBeFalsy;\n });\n\n it(\"should display a retry button and a custom loading error when it times out and should not update the options\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" loading=\"true\" timeout=\"500\" options=\"[]\" loading-error-label=\"Error\"></ic-select>`\n );\n await page.waitForChanges();\n\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n await page.waitForTimeout(560);\n\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Error\");\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n expect(retryButton).not.toBeNull;\n\n await page.waitForTimeout(1500);\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Error\");\n });\n\n it(\"should focus the retry button on tab and emit icBlur and close the menu when blurring\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" loading=\"true\" timeout=\"500\" options=\"[]\" loading-error-label=\"Error\"></ic-select>`\n );\n await page.waitForChanges();\n await page.waitForTimeout(560);\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n const icBlur = await page.spyOnEvent(\"icBlur\");\n expect(icBlur).not.toHaveReceivedEvent();\n const activeElId = await page.$eval(\n \"ic-select\",\n (el) => el.shadowRoot.activeElement.id\n );\n expect(activeElId).toBe(\"retry-button\");\n\n await page.keyboard.press(\"Tab\");\n await page.waitForChanges();\n expect(icBlur).toHaveReceivedEvent();\n });\n\n it(\"should retry loading and keep the menu open when retry button is clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\" loading=\"true\" timeout=\"500\"></ic-select>\n <script>\n var select = document.querySelector('ic-select');\n select.options = [];\n select.addEventListener('icChange', function (event) {\n option = event.detail.value;\n select.value = option;\n });\n select.addEventListener('icRetryLoad', function () {\n select.loading = true;\n });\n </script>`);\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n await retryButton.click();\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should retry loading and keep the menu open when retry button is pressed with Enter\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" loading=\"true\" options=\"[]\" timeout=\"500\"></ic-select>`\n );\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n const firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n await retryButton.press(\"Enter\");\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should render a No results message if no options are provided on render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(`[]`));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n });\n });\n\n describe(\"searchable\", () => {\n it(\"should open menu when character is entered in input field and filter options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"c\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(4);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n expect(menuOptions[1]).toEqualText(\"Americano\");\n expect(menuOptions[2]).toEqualText(\"Mocha\");\n expect(menuOptions[3]).toEqualText(\"Macchiato\");\n });\n\n it(\"should keep the same options when characters are entered and the menu is reopened\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"foo\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n let menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n select.click();\n await page.waitForChanges();\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should display no results state when search term matches none of the options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"z\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should filter options accordingly when Backspace is pressed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"f\");\n await page.waitForChanges();\n await select.press(\"i\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n let menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n\n await select.press(\"Backspace\");\n await page.waitForChanges();\n\n menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Filter\");\n expect(menuOptions[1]).toEqualText(\"Flat white\");\n });\n\n it(\"should filter options when search match position is set to start\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"search-match-position\", \"start\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"c\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n });\n\n it(\"should include option descriptions in search\", async () => {\n const page = await newE2EPage();\n const optionsWithDescription = `[\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Latte\", value: \"Lat\", description: \"A milkier coffee than a cappuccino\" },\n { label: \"Americano\", value: \"Ame\" },\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Flat white\", value: \"Fla\" },\n { label: \"Mocha\", value: \"Moc\" },\n { label: \"Macchiato\", value: \"Mac\" },\n ]`;\n await page.setContent(getTestSearchableSelect(optionsWithDescription));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"include-descriptions-in-search\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"m\");\n await page.waitForChanges();\n await select.press(\"i\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0].textContent.substring(0, 5)).toEqualText(\"Latte\");\n });\n\n it(\"should not include group titles in search\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: \"Fancy\",\n children: [\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Flat white\", value: \"Flat\" },\n ],\n },\n {\n label: \"Boring\",\n children: [\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Latte\", value: \"Lat\" },\n ],\n },\n ]`;\n await page.setContent(getTestSearchableSelect(groupedOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"b\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n\n it(\"should display whole group when group titles included in search\", async () => {\n const page = await newE2EPage();\n const groupedOptions = `[\n {\n label: \"Fancy\",\n children: [\n { label: \"Cappuccino\", value: \"Cap\" },\n { label: \"Flat white\", value: \"Flat\" },\n ],\n },\n {\n label: \"Boring\",\n children: [\n { label: \"Filter\", value: \"Fil\" },\n { label: \"Latte\", value: \"Lat\" },\n ],\n },\n ]`;\n await page.setContent(getTestSearchableSelect(groupedOptions));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"include-group-titles-in-search\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"b\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Filter\");\n expect(menuOptions[1]).toEqualText(\"Latte\");\n });\n\n it(\"should display a clear button which clears the input when clicked\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n let clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).toBeNull();\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"a\");\n await page.waitForChanges();\n\n clearButton = await page.find(\"ic-select >>> .clear-button\");\n expect(clearButton).not.toBeNull();\n\n await clearButton.click();\n expect(select.textContent).toBe(\"\");\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n });\n\n it(\"should emit the value as null when the input is changed after selecting an option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Cap\",\n });\n\n const clearButton = await page.find(\"ic-select >>> .clear-button\");\n await clearButton.click();\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: null,\n });\n });\n\n it(\"should still filter the options when the input is changed after selecting an option\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Cap\",\n });\n\n for (let i = 0; i <= 7; i++) {\n select.press(\"Backspace\");\n await page.waitForChanges();\n }\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n\n await page.waitForChanges();\n\n expect(menuOptions).toHaveLength(2);\n expect(menuOptions[0]).toEqualText(\"Cappuccino\");\n expect(menuOptions[1]).toEqualText(\"Americano\");\n });\n\n it(\"should close menu on blur\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await select.press(\"Tab\");\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should emit icChange on delay\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" debounce=\"500\" searchable></ic-select>`\n );\n\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n await focusAndTypeIntoInput(\"foo\", page);\n\n await page.waitForTimeout(600);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n\n await focusAndTypeIntoInput(\"bar\", page);\n await page.waitForChanges();\n await page.waitForTimeout(100);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n await page.waitForTimeout(500);\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foobar\",\n });\n });\n\n it(\"should update hidden input to value typed in select searchable input\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"bar\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"bar\");\n });\n\n it(\"should keep typed in hidden input value when highlighting menu options\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"cap\", page);\n\n await page.waitForChanges();\n\n let hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"cap\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select >>> ic-menu > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"cap\");\n });\n\n it(\"should update hidden value from typed to selected\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"o\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"o\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select >>> ic-menu > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cap\");\n });\n\n it(\"should update hidden value from typed to selected to typed\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"o\", page);\n\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input[type='hidden']\");\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"o\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menuListItems = await page.findAll(\n \"ic-select >>> ic-menu > ul > li\"\n );\n\n expect(menuListItems[0]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cap\");\n\n await page.keyboard.press(\"1\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Cappuccino1\");\n });\n\n it(\"should update the value of the input and options when passing the value directly\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n select.setAttribute(\"value\", \"foo\");\n\n await page.waitForChanges();\n\n const selectInput = await page.find(\n 'ic-select >>> input[role=\"combobox\"]'\n );\n\n expect(await selectInput.getProperty(\"value\")).toBe(\"foo\");\n });\n\n it(\"should trigger icChange on input for each typed value\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n const icChange = await select.spyOnEvent(\"icChange\");\n\n await focusAndTypeIntoInput(\"f\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"f\",\n });\n\n await focusAndTypeIntoInput(\"o\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"fo\",\n });\n\n await focusAndTypeIntoInput(\"o\", page);\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"foo\",\n });\n });\n\n it(\"should not trigger icChange on highlighting menu items\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select\");\n const icChange = await select.spyOnEvent(\"icChange\");\n\n await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n expect(icChange).not.toHaveReceivedEvent();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n expect(icChange).not.toHaveReceivedEvent();\n });\n\n it(\"should not select a menu option when typing into the searchable input field\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Cap\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n const firstOption = await menu.findAll(\"li\");\n expect(firstOption[0]).not.toHaveClass(\"aria-selected\");\n });\n\n it(\"should not selet a menu option when one has previously been set and backspace is pressed\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Lat\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Latte\");\n\n await page.keyboard.press(\"Backspace\");\n await page.waitForChanges();\n await page.keyboard.press(\"Backspace\");\n await page.waitForChanges();\n\n const options = await menu.findAll(\"li\");\n\n options.forEach((option) => {\n expect(option).not.toHaveClass(\"aria-selected\");\n });\n });\n\n it(\"should display selected option when selecting a menu option and then opening and closing the menu\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSearchableSelect(searchableOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Lat\", page);\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Latte\");\n\n await page.evaluate(() => {\n const button = document.querySelector(\"button\");\n button.focus();\n });\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n\n const select = await page.find(\"ic-select\");\n await select.click();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const latteOption = await menu.find(\"li[data-value='Lat']\");\n\n expect(latteOption).toHaveAttribute(\"aria-selected\");\n });\n\n it(\"hidden input value when on initial load with default value\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\n \"ic-select > [name*='ic-select-input-0']\"\n );\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n });\n\n it(\"should submit hidden input value when updating value, pressing reset to initial value and then submitting\", async () => {\n const page = await newE2EPage();\n\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\n \"ic-select > [name*='ic-select-input-0']\"\n );\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"Backspace\");\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 2\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n expect(hiddenInput.getAttribute(\"value\")).toBe(\"Test value 1\");\n });\n\n it(\"should scroll menu\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(largeOptions));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n let menuScrollTop = await page.$eval(\"ic-select\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-menu ul\");\n return menu.scrollTop;\n });\n\n expect(menuScrollTop).toBe(0);\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n const inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 1\");\n\n await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n input.focus();\n });\n\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n menuScrollTop = await page.$eval(\"ic-select\", (el) => {\n const menu = el.shadowRoot.querySelector(\"ic-menu ul\");\n return menu.scrollTop;\n });\n\n expect(menuScrollTop).not.toBe(0);\n });\n\n it(\"should only highlight and select enabled options in searchable with arrowDown\", async () => {\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3', disabled: true },\n { label: 'Test label 4', value: 'Test value 4', disabled: true },\n { label: 'Test label 5', value: 'Test value 5' },\n ]`;\n\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuItems = await menu.findAll(\"li\");\n\n expect(menuItems[0]).not.toHaveClass(\"focused-option\");\n expect(menuItems[1]).toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 2\");\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowDown\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 5\");\n });\n\n it(\"should only highlight and select enabled options in searchable with arrowUp\", async () => {\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3', disabled: true },\n { label: 'Test label 4', value: 'Test value 4', disabled: true },\n { label: 'Test label 5', value: 'Test value 5' },\n ]`;\n\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n await focusAndTypeIntoInput(\"Test\", page);\n await page.waitForChanges();\n\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuItems = await menu.findAll(\"li\");\n\n expect(menuItems[menuItems.length - 1]).toHaveClass(\"focused-option\");\n expect(menuItems[menuItems.length - 2]).not.toHaveClass(\"focused-option\");\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n let inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 5\");\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"ArrowUp\");\n await page.waitForChanges();\n\n await page.keyboard.press(\"Enter\");\n await page.waitForChanges();\n\n inputValue = await page.$eval(\"ic-select\", (el) => {\n const input = el.shadowRoot.querySelector(\"input\") as HTMLInputElement;\n return input.value;\n });\n\n expect(inputValue).toBe(\"Test label 2\");\n });\n\n describe(\"loading\", () => {\n it(\"should retry loading and keep the menu open when retry button is pressed with Spacebar\", async () => {\n const page = await newE2EPage();\n await page.setContent(\n `<ic-select label=\"IC Select Test\" searchable=\"true\" options=\"[]\" loading=\"true\" timeout=\"500\"></ic-select>`\n );\n await page.waitForChanges();\n const icRetryLoad = await page.spyOnEvent(\"icRetryLoad\");\n\n await page.waitForTimeout(560);\n const firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li ic-typography\"\n );\n expect(firstOption).toEqualText(\"Loading Error\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const retryButton = await page.find(\"ic-select >>> #retry-button\");\n await retryButton.press(\" \");\n await page.waitForChanges();\n expect(icRetryLoad).toHaveReceivedEvent;\n expect(await getMenuVisibility(page)).toBe(\"visible\");\n });\n\n it(\"should cancel loading if the clear button is pressed mid-load\", async () => {\n const page = await newE2EPage();\n await page.setContent(`<ic-select label=\"IC Select Test\" searchable=\"true\" timeout=\"500\"></ic-select>\n <script>\n var select = document.querySelector(\"ic-select\");\n select.options = [];\n select.addEventListener(\"icChange\", function() {\n select.loading = \"true\";\n });\n </script>`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.press(\"c\");\n await page.waitForChanges();\n let firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toEqualText(\"Loading...\");\n\n const clearButton = await page.find(\"ic-select >>> .clear-button\");\n await clearButton.click();\n await page.waitForChanges();\n await page.waitForTimeout(560);\n firstOption = await page.find(\n \"ic-select >>> #ic-select-input-0-menu li\"\n );\n expect(firstOption).toBeNull;\n });\n\n it(\"should render a No results message if no options are provided on render\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelect(`[]`));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n await select.click();\n await page.waitForChanges();\n\n const menu = await page.find(\"ic-select >>> #ic-select-input-0-menu\");\n const menuOptions = await menu.findAll(\"li\");\n expect(menuOptions).toHaveLength(1);\n expect(menuOptions[0]).toEqualText(\"No results found\");\n });\n });\n });\n\n it(\"should reset to initial value on form reset\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectFormReset(options));\n await page.waitForChanges();\n\n let value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(undefined);\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n\n await select.press(\"Enter\");\n await page.waitForChanges();\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(undefined);\n });\n\n it(\"menu should not be visible on initial load if setting default value and disable filter is set\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSearchableSelectAsync());\n await page.waitForChanges();\n await page.waitForTimeout(900);\n\n expect(await getMenuVisibility(page)).toBe(\"hidden\");\n });\n\n it(\"should reset to initial value on form reset with searchable\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectSearchableFormReset(options));\n await page.waitForChanges();\n\n let value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n\n const select = await page.find(\"ic-select >>> #ic-select-input-0\");\n\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"ArrowDown\");\n await page.waitForChanges();\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 2\");\n\n await page.$eval(\"#resetButton\", (el) => {\n const reset = el as unknown as HTMLButtonElement;\n reset.click();\n });\n await page.waitForChanges();\n\n value = await page.$eval(\"ic-select\", (el) => {\n const select = el as unknown as HTMLIcSelectElement;\n return select.value;\n });\n expect(value).toBe(\"Test value 1\");\n });\n\n let page: E2EPage;\n\n describe(\"native\", () => {\n beforeEach(async () => {\n page = await newE2EPage();\n await page.setUserAgent(\n \"Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1\"\n );\n await page.setViewport({\n width: 375,\n height: 667,\n isMobile: true,\n hasTouch: true,\n });\n });\n\n it(\"should render\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render a native select when searchable is applied on mobile\", async () => {\n await page.setContent(getTestSearchableSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should render when no options are provided\", async () => {\n await page.setContent(`<ic-select label=\"IC Select Test\"></ic-select>`);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).not.toBeNull();\n });\n\n it(\"should disable options correctly\", async () => {\n const optionsWithDisabled = `[\n { label: 'Test label 1', value: 'Test value 1', disabled: true },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ]`;\n await page.setContent(getTestSelect(optionsWithDisabled));\n await page.waitForChanges();\n\n const optionsDisabled = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.disabled\n )\n );\n\n expect(optionsDisabled[0]).toBe(true);\n });\n\n it(\"should render options as <optgroup>s if they have children\", async () => {\n const groupedOptions = `[\n {\n label: 'Test group',\n children: [\n { label: 'Test label 1', value: 'Test value 1' },\n { label: 'Test label 2', value: 'Test value 2' },\n { label: 'Test label 3', value: 'Test value 3' },\n ],\n },\n ]`;\n await page.setContent(getTestSelect(groupedOptions));\n await page.waitForChanges();\n\n const optGroup = await page.evaluate(() =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"optgroup\")\n );\n\n expect(optGroup).toBeTruthy();\n });\n\n it(\"should render a required <select> when required\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"required\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).toHaveAttribute(\"required\");\n });\n\n it(\"should not render a label when the 'hide-label' prop is supplied\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"hide-label\", true);\n await page.waitForChanges();\n\n const label = await page.find(\"ic-select >>> ic-input-label\");\n\n expect(label).toBeNull();\n });\n\n it(\"should render a disabled <select> when the 'disabled' prop is supplied\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"disabled\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n\n expect(select).toHaveAttribute(\"disabled\");\n });\n\n it(\"should render the selected value as text instead of rendering a <select> when read-only\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n icSelect.setAttribute(\"readonly\", true);\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n const typography = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"ic-typography\"),\n (typography) => typography.innerText\n )\n );\n\n expect(select).toBe(null);\n expect(typography[1]).toBe(\"Test label 1\");\n });\n\n it(\"should render the correct placeholder\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"placeholder\", \"Test placeholder\");\n await page.waitForChanges();\n\n const optionLabels = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.innerText\n )\n );\n\n expect(optionLabels[0]).toEqual(\"Test placeholder\");\n });\n\n it(\"should set aria-invalid if validation status is 'error'\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"validation-status\", \"error\");\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n expect(select).toHaveAttribute(\"aria-invalid\");\n });\n\n it(\"should display the value passed in using the 'value' prop as the selected option\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const optionsSelected = await page.evaluate(() =>\n Array.from(\n document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelectorAll(\"option\"),\n (option) => option.selected\n )\n );\n\n expect(optionsSelected[1]).toBe(true);\n });\n\n it(\"should set the correct name on the hidden input\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"name\", \"Test name\");\n await page.waitForChanges();\n\n const hiddenInput = await page.find(\"input\");\n const hiddenInputName = await hiddenInput.getProperty(\"name\");\n\n expect(hiddenInputName).toEqual(\"Test name\");\n });\n\n it(\"should call icChange when the selected option is changed\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icChange = await page.spyOnEvent(\"icChange\");\n\n const select = await page.find(\"ic-select >>> select\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n expect(icChange).toHaveReceivedEventDetail({\n value: \"Test value 1\",\n });\n });\n\n it(\"should call icFocus when focused\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icFocus = await page.spyOnEvent(\"icFocus\");\n\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icFocus).toHaveReceivedEvent();\n });\n\n it(\"should call icBlur when it loses focus\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const icBlur = await page.spyOnEvent(\"icBlur\");\n\n await page.keyboard.down(\"Tab\");\n await page.keyboard.down(\"Tab\");\n await page.waitForChanges();\n\n expect(icBlur).toHaveReceivedEvent();\n });\n\n it(\"should set the 'placeholder' class name if no option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"select\")\n .className\n );\n\n expect(selectClassName).toBe(\"placeholder\");\n });\n\n it(\"should set the text colour to the primary text colour if an option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n const icSelect = await page.find(\"ic-select\");\n icSelect.setAttribute(\"value\", \"Test value 1\");\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"select\")\n .className\n );\n\n expect(selectClassName).toBe(\"select-option-selected\");\n });\n\n it(\"should change the text colour to the primary text colour when an option is selected\", async () => {\n await page.setContent(getTestSelect(options));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> select\");\n await select.press(\"ArrowDown\");\n await select.press(\"Enter\");\n await page.waitForChanges();\n\n const selectClassName = await page.evaluate(\n () =>\n document.querySelector(\"ic-select\").shadowRoot.querySelector(\"select\")\n .className\n );\n\n expect(selectClassName).toBe(\"select-option-selected\");\n });\n\n it(\"should add .menu-scroll to menu components when options height is over 320\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelect(largeOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> button.select-input\");\n await select.click();\n await page.waitForChanges();\n\n const menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeTruthy();\n });\n\n it(\"should add .menu-scroll to menu components when options are initially set and then populated with large data set\", async () => {\n const page = await newE2EPage();\n await page.setContent(getTestSelectAsync(options, largeOptions));\n await page.waitForChanges();\n\n const select = await page.find(\"ic-select >>> button.select-input\");\n await select.click();\n await page.waitForChanges();\n\n let menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeFalsy();\n\n await page.waitForTimeout(1200);\n\n menuClasses = await page.evaluate(() => {\n const menu = document\n .querySelector(\"ic-select\")\n .shadowRoot.querySelector(\"ic-menu .menu\");\n return menu.classList;\n });\n\n expect(Object.values(menuClasses).includes(\"menu-scroll\")).toBeTruthy();\n });\n });\n});\n"]}