@ukic/web-components 2.8.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
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,6 +1,6 @@
1
1
  import { newE2EPage } from "@stencil/core/testing";
2
2
  beforeAll(() => {
3
- jest.spyOn(console, "warn").mockImplementation(jest.fn());
3
+ jest.spyOn(console, "warn").mockImplementation(jest.fn());
4
4
  });
5
5
  const options = `[
6
6
  { label: 'Test label 1', value: 'Test value 1' },
@@ -92,530 +92,530 @@ const getTestSelectAsync = (firstDataset, secondDataset) => `<ic-select label="I
92
92
  }, 1500)
93
93
  </script>`;
94
94
  const getMenuVisibility = async (page) => {
95
- return await page.evaluate(() => {
96
- const menu = document
97
- .querySelector("ic-select")
98
- .shadowRoot.querySelector("ic-menu #ic-select-input-0-menu");
99
- return window.getComputedStyle(menu).visibility;
100
- });
95
+ return await page.evaluate(() => {
96
+ const menu = document
97
+ .querySelector("ic-select")
98
+ .shadowRoot.querySelector("ic-menu #ic-select-input-0-menu");
99
+ return window.getComputedStyle(menu).visibility;
100
+ });
101
101
  };
102
102
  const focusAndTypeIntoInput = async (value, page) => {
103
- await page.$eval("ic-select", (el) => {
104
- const input = el.shadowRoot.querySelector("input");
105
- input.focus();
106
- });
107
- value.split("").forEach(async (char) => {
108
- await page.keyboard.press(char);
109
- });
110
- };
111
- describe("ic-select", () => {
112
- describe("custom", () => {
113
- it("should render", async () => {
114
- const page = await newE2EPage();
115
- await page.setContent(getTestSelect(options));
116
- await page.waitForChanges();
117
- const select = await page.find("ic-select");
118
- expect(select).not.toBeNull();
119
- });
120
- it("should render when no options are provided", async () => {
121
- const page = await newE2EPage();
122
- await page.setContent(`<ic-select label="IC Select Test"></ic-select>`);
123
- await page.waitForChanges();
124
- const select = await page.find("ic-select");
125
- expect(select).not.toBeNull();
126
- });
127
- it("should open, set focus on menu and set aria-expanded to 'true' when input clicked", async () => {
128
- const page = await newE2EPage();
129
- await page.setContent(getTestSelect(options));
130
- await page.waitForChanges();
131
- expect(await getMenuVisibility(page)).toBe("hidden");
132
- const select = await page.find("ic-select >>> #ic-select-input-0");
133
- await select.click();
134
- await page.waitForChanges();
135
- expect(await getMenuVisibility(page)).toBe("visible");
136
- expect(select.getAttribute("aria-expanded")).toBeTruthy();
137
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
138
- expect(activeElId).toBe("ic-select-input-0-menu");
139
- });
140
- it("should render options correctly", async () => {
141
- const page = await newE2EPage();
142
- await page.setContent(getTestSelect(options));
143
- await page.waitForChanges();
144
- const select = await page.find("ic-select >>> #ic-select-input-0");
145
- await select.click();
146
- await page.waitForChanges();
147
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
148
- const menuOptions = await menu.findAll("li");
149
- expect(menuOptions).toHaveLength(3);
150
- expect(menuOptions[0]).toEqualText("Test label 1");
151
- expect(menuOptions[1]).toEqualText("Test label 2");
152
- expect(menuOptions[2]).toEqualText("Test label 3");
153
- });
154
- it("should deduplicate options and warn about duplicate", async () => {
155
- const page = await newE2EPage();
156
- await page.setContent(getTestSelect(optionsWithDuplicate));
157
- await page.waitForChanges();
158
- const select = await page.find("ic-select >>> #ic-select-input-0");
159
- await select.click();
160
- await page.waitForChanges();
161
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
162
- const menuOptions = await menu.findAll("li");
163
- expect(menuOptions).toHaveLength(4);
164
- expect(menuOptions[0]).toEqualText("Test label 1");
165
- expect(menuOptions[1]).toEqualText("Test label 2");
166
- expect(menuOptions[2]).toEqualText("Test label 3");
167
- expect(menuOptions[3]).toEqualText("Test label 4");
168
- // We can't test for ic-warn being called because it's already called seven times over 'hiddeninputvalue' changing
169
- });
170
- it("should call icChange when the selected option is changed", async () => {
171
- const page = await newE2EPage();
172
- await page.setContent(getTestSelect(options));
173
- await page.waitForChanges();
174
- const icChange = await page.spyOnEvent("icChange");
175
- const select = await page.find("ic-select >>> #ic-select-input-0");
176
- await select.press("ArrowDown");
177
- await select.press("Enter");
178
- await page.waitForChanges();
179
- expect(icChange).toHaveReceivedEventDetail({
180
- value: "Test value 1",
181
- });
103
+ await page.$eval("ic-select", (el) => {
104
+ const input = el.shadowRoot.querySelector("input");
105
+ input.focus();
182
106
  });
183
- describe("when no option is selected", () => {
184
- it("should open menu, apply focus style on first option and set as value when Down Arrow is pressed", async () => {
185
- const page = await newE2EPage();
186
- await page.setContent(getTestSelect(options));
187
- await page.waitForChanges();
188
- const select = await page.find("ic-select >>> #ic-select-input-0");
189
- await select.press("ArrowDown");
190
- await page.waitForChanges();
191
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
192
- expect(await getMenuVisibility(page)).toBe("visible");
193
- const firstOption = await menu.findAll("li");
194
- expect(firstOption[0]).toHaveClass("focused-option");
195
- expect(select).toEqualText("Test label 1");
196
- });
197
- it("should open menu when Space is pressed", async () => {
198
- const page = await newE2EPage();
199
- await page.setContent(getTestSelect(options));
200
- await page.waitForChanges();
201
- const select = await page.find("ic-select >>> #ic-select-input-0");
202
- await select.press(" ");
203
- await page.waitForChanges();
204
- expect(await getMenuVisibility(page)).toBe("visible");
205
- });
206
- it("should open menu when Enter is pressed", async () => {
207
- const page = await newE2EPage();
208
- await page.setContent(getTestSelect(options));
209
- await page.waitForChanges();
210
- const select = await page.find("ic-select >>> #ic-select-input-0");
211
- await select.press("Enter");
212
- await page.waitForChanges();
213
- await page.waitForTimeout(1000);
214
- expect(await getMenuVisibility(page)).toBe("visible");
215
- });
216
- it("should open menu, apply focus style on last option and set as value when Up Arrow is pressed", async () => {
217
- const page = await newE2EPage();
218
- await page.setContent(getTestSelect(options));
219
- await page.waitForChanges();
220
- const select = await page.find("ic-select >>> #ic-select-input-0");
221
- await select.press("ArrowUp");
222
- await page.waitForChanges();
223
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
224
- expect(await getMenuVisibility(page)).toBe("visible");
225
- const lastOption = await menu.findAll("li");
226
- expect(lastOption[2]).toHaveClass("focused-option");
227
- expect(select).toEqualText("Test label 3");
228
- });
229
- it("should keep menu closed when Backspace, Home, End and Escape are pressed", async () => {
230
- const page = await newE2EPage();
231
- await page.setContent(getTestSelect(options));
232
- await page.waitForChanges();
233
- const select = await page.find("ic-select >>> #ic-select-input-0");
234
- await select.press("Backspace");
235
- await page.waitForChanges();
236
- expect(await getMenuVisibility(page)).toBe("hidden");
237
- await select.press("Home");
238
- await page.waitForChanges();
239
- expect(await getMenuVisibility(page)).toBe("hidden");
240
- await select.press("End");
241
- await page.waitForChanges();
242
- expect(await getMenuVisibility(page)).toBe("hidden");
243
- await select.press("Escape");
244
- await page.waitForChanges();
245
- expect(await getMenuVisibility(page)).toBe("hidden");
246
- });
107
+ value.split("").forEach(async (char) => {
108
+ await page.keyboard.press(char);
247
109
  });
248
- describe("when an option is selected", () => {
249
- it("should move focus to next option and set as value when Down Arrow is pressed", async () => {
250
- const page = await newE2EPage();
251
- await page.setContent(getTestSelect(options));
252
- await page.waitForChanges();
253
- const select = await page.find("ic-select >>> #ic-select-input-0");
254
- await select.press("ArrowDown");
255
- await select.press("ArrowDown");
256
- await page.waitForChanges();
257
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
258
- const secondOption = await menu.findAll("li");
259
- expect(secondOption[1]).toHaveClass("focused-option");
260
- expect(select).toEqualText("Test label 2");
261
- });
262
- it("should move focus to first option and set as value when focus is on last option and Down Arrow is pressed", async () => {
263
- const page = await newE2EPage();
264
- await page.setContent(getTestSelect(options));
265
- await page.waitForChanges();
266
- const select = await page.find("ic-select >>> #ic-select-input-0");
267
- await select.press("ArrowUp");
268
- await select.press("ArrowDown");
269
- await page.waitForChanges();
270
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
271
- const firstOption = await menu.findAll("li");
272
- expect(firstOption[0]).toHaveClass("focused-option");
273
- expect(select).toEqualText("Test label 1");
274
- });
275
- it("should move focus to previous option and set as value when Up Arrow is pressed", async () => {
276
- const page = await newE2EPage();
277
- await page.setContent(getTestSelect(options));
278
- await page.waitForChanges();
279
- const select = await page.find("ic-select >>> #ic-select-input-0");
280
- await select.press("ArrowUp");
281
- await select.press("ArrowUp");
282
- await page.waitForChanges();
283
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
284
- const secondOption = await menu.findAll("li");
285
- expect(secondOption[1]).toHaveClass("focused-option");
286
- expect(select).toEqualText("Test label 2");
287
- });
288
- it("should move focus to last option and set as value when focus is on first option and Up Arrow is pressed", async () => {
289
- const page = await newE2EPage();
290
- await page.setContent(getTestSelect(options));
291
- await page.waitForChanges();
292
- const select = await page.find("ic-select >>> #ic-select-input-0");
293
- await select.press("ArrowDown");
294
- await select.press("ArrowUp");
295
- await page.waitForChanges();
296
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
297
- const lastOption = await menu.findAll("li");
298
- expect(lastOption[2]).toHaveClass("focused-option");
299
- expect(select).toEqualText("Test label 3");
300
- });
301
- it("should move focus to first option and set as value when Home is pressed", async () => {
302
- const page = await newE2EPage();
303
- await page.setContent(getTestSelect(options));
304
- await page.waitForChanges();
305
- const select = await page.find("ic-select >>> #ic-select-input-0");
306
- await select.press("ArrowUp");
307
- await page.keyboard.press("Home");
308
- await page.waitForChanges();
309
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
310
- const firstOption = await menu.findAll("li");
311
- expect(firstOption[0]).toHaveClass("focused-option");
312
- expect(select).toEqualText("Test label 1");
313
- });
314
- it("should move focus to last option and set as value when End is pressed", async () => {
315
- const page = await newE2EPage();
316
- await page.setContent(getTestSelect(options));
317
- await page.waitForChanges();
318
- const select = await page.find("ic-select >>> #ic-select-input-0");
319
- await select.press("ArrowDown");
320
- await page.keyboard.press("End");
321
- await page.waitForChanges();
322
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
323
- const lastOption = await menu.findAll("li");
324
- expect(lastOption[2]).toHaveClass("focused-option");
325
- expect(select).toEqualText("Test label 3");
326
- });
327
- it("should display a check next to the selected option and set aria-selected", async () => {
328
- const page = await newE2EPage();
329
- await page.setContent(getTestSelect(options));
330
- await page.waitForChanges();
331
- const select = await page.find("ic-select >>> #ic-select-input-0");
332
- await select.press("ArrowDown");
333
- await page.waitForChanges();
334
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
335
- const firstOption = await menu.findAll("li");
336
- expect(firstOption[0]).toHaveAttribute("aria-selected");
337
- expect(await firstOption[0].find(".check-icon")).not.toBeNull;
338
- expect(firstOption[1]).not.toHaveAttribute("aria-selected");
339
- expect(await firstOption[1].find(".check-icon")).toBeNull;
340
- });
341
- it("should display a check next to the selected option and set aria-selected when a default value is applied", async () => {
342
- const page = await newE2EPage();
343
- await page.setContent(getTestSelect(options));
344
- await page.waitForChanges();
345
- const icSelect = await page.find("ic-select");
346
- icSelect.setAttribute("value", "Test value 1");
347
- await page.waitForChanges();
348
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
349
- const firstOption = await menu.findAll("li");
350
- expect(firstOption[0]).toHaveAttribute("aria-selected");
351
- expect(await firstOption[0].find(".check-icon")).not.toBeNull;
352
- });
353
- it("should display clear button if the 'show-clear-button' prop is supplied and an option is selected", async () => {
354
- const page = await newE2EPage();
355
- await page.setContent(getTestSelect(options));
356
- let clearButton = await page.find("ic-select >>> .clear-button");
357
- expect(clearButton).toBeNull();
358
- const icSelect = await page.find("ic-select");
359
- icSelect.setAttribute("show-clear-button", true);
360
- await page.waitForChanges();
361
- clearButton = await page.find("ic-select >>> .clear-button");
362
- expect(clearButton).toBeNull();
363
- const select = await page.find("ic-select >>> #ic-select-input-0");
364
- await select.press("ArrowDown");
365
- await page.keyboard.press("Enter");
366
- await page.waitForChanges();
367
- clearButton = await page.find("ic-select >>> .clear-button");
368
- expect(clearButton).not.toBeNull();
369
- });
370
- it("should clear the input if the clear button is clicked", async () => {
371
- const page = await newE2EPage();
372
- await page.setContent(getTestSelect(options));
373
- const icSelect = await page.find("ic-select");
374
- icSelect.setAttribute("show-clear-button", true);
375
- await page.waitForChanges();
376
- const icChange = await page.spyOnEvent("icChange");
377
- const select = await page.find("ic-select >>> #ic-select-input-0");
378
- await select.press("ArrowDown");
379
- await page.keyboard.press("Enter");
380
- await page.waitForChanges();
381
- let clearButton = await page.find("ic-select >>> .clear-button");
382
- await clearButton.click();
383
- await page.waitForChanges();
384
- expect(select).toEqualText("Select an option");
385
- expect(icChange).toHaveReceivedEventDetail({
386
- value: null,
110
+ };
111
+ describe("ic-select", () => {
112
+ describe("custom", () => {
113
+ it("should render", async () => {
114
+ const page = await newE2EPage();
115
+ await page.setContent(getTestSelect(options));
116
+ await page.waitForChanges();
117
+ const select = await page.find("ic-select");
118
+ expect(select).not.toBeNull();
387
119
  });
388
- clearButton = await page.find("ic-select >>> .clear-button");
389
- expect(clearButton).toBeNull;
390
- });
391
- });
392
- it("should close menu when input is clicked while open and set focus on it", async () => {
393
- const page = await newE2EPage();
394
- await page.setContent(getTestSelect(options));
395
- await page.waitForChanges();
396
- const select = await page.find("ic-select >>> #ic-select-input-0");
397
- await select.click();
398
- await page.waitForChanges();
399
- await select.click();
400
- await page.waitForChanges();
401
- await page.waitForTimeout(1000);
402
- expect(await getMenuVisibility(page)).toBe("hidden");
403
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
404
- expect(activeElId).toBe("ic-select-input-0");
405
- });
406
- it("should close menu when an option is clicked, set as value and move focus onto the input", async () => {
407
- const page = await newE2EPage();
408
- await page.setContent(getTestSelect(options));
409
- await page.waitForChanges();
410
- const select = await page.find("ic-select >>> #ic-select-input-0");
411
- await select.click();
412
- await page.waitForChanges();
413
- const icChange = await page.spyOnEvent("icChange");
414
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
415
- await menu.click();
416
- await page.waitForChanges();
417
- await page.waitForTimeout(1000);
418
- expect(await getMenuVisibility(page)).toBe("hidden");
419
- expect(icChange).toHaveReceivedEventDetail({
420
- value: "Test value 2",
421
- });
422
- expect(select).toEqualText("Test label 2");
423
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
424
- expect(activeElId).toBe("ic-select-input-0");
425
- });
426
- it("should close menu when Space is pressed and move focus to the input", async () => {
427
- const page = await newE2EPage();
428
- await page.setContent(getTestSelect(options));
429
- await page.waitForChanges();
430
- const select = await page.find("ic-select >>> #ic-select-input-0");
431
- await select.press("ArrowDown");
432
- await page.waitForChanges();
433
- await page.keyboard.press(" ");
434
- await page.waitForChanges();
435
- await page.waitForTimeout(1000);
436
- expect(await getMenuVisibility(page)).toBe("hidden");
437
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
438
- expect(activeElId).toBe("ic-select-input-0");
439
- });
440
- it("should close menu when Enter is pressed and set focus to the input", async () => {
441
- const page = await newE2EPage();
442
- await page.setContent(getTestSelect(options));
443
- await page.waitForChanges();
444
- const select = await page.find("ic-select >>> #ic-select-input-0");
445
- await select.press("ArrowDown");
446
- await page.waitForChanges();
447
- await page.keyboard.press("Enter");
448
- await page.waitForChanges();
449
- await page.waitForTimeout(1000);
450
- expect(await getMenuVisibility(page)).toBe("hidden");
451
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
452
- expect(activeElId).toBe("ic-select-input-0");
453
- });
454
- it("should close menu when Escape is pressed and set focus to the input", async () => {
455
- const page = await newE2EPage();
456
- await page.setContent(getTestSelect(options));
457
- await page.waitForChanges();
458
- const select = await page.find("ic-select >>> #ic-select-input-0");
459
- await select.press("ArrowDown");
460
- await page.waitForChanges();
461
- await page.keyboard.press("Escape");
462
- await page.waitForChanges();
463
- await page.waitForTimeout(1000);
464
- expect(await getMenuVisibility(page)).toBe("hidden");
465
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
466
- expect(activeElId).toBe("ic-select-input-0");
467
- });
468
- it("should close menu when another element on the page is clicked", async () => {
469
- const page = await newE2EPage();
470
- await page.setContent(`${getTestSelect(options)}<button>Test button</button>`);
471
- await page.waitForChanges();
472
- const select = await page.find("ic-select >>> #ic-select-input-0");
473
- await select.press("ArrowDown");
474
- await page.waitForChanges();
475
- const button = await page.find("button");
476
- await button.click();
477
- await page.waitForChanges();
478
- await page.waitForTimeout(1000);
479
- expect(await getMenuVisibility(page)).toBe("hidden");
480
- });
481
- it("should close menu when Tab is pressed to move focus onto the next element on the page", async () => {
482
- const page = await newE2EPage();
483
- await page.setContent(`${getTestSelect(options)}<button>Test button</button>`);
484
- await page.waitForChanges();
485
- const select = await page.find("ic-select >>> #ic-select-input-0");
486
- await select.press("ArrowDown");
487
- await page.waitForChanges();
488
- await page.keyboard.press("Tab");
489
- await page.waitForChanges();
490
- await page.waitForTimeout(1000);
491
- expect(await getMenuVisibility(page)).toBe("hidden");
492
- });
493
- it("should close menu when Shift + Tab is pressed to move focus onto the input", async () => {
494
- const page = await newE2EPage();
495
- await page.setContent(`${getTestSelect(options)}`);
496
- await page.waitForChanges();
497
- const select = await page.find("ic-select >>> #ic-select-input-0");
498
- await select.press("ArrowDown");
499
- await page.waitForChanges();
500
- await page.waitForTimeout(1000);
501
- await page.keyboard.down("Shift");
502
- await page.keyboard.press("Tab");
503
- await page.waitForChanges();
504
- await page.keyboard.up("Shift");
505
- await page.waitForChanges();
506
- await page.waitForTimeout(1000);
507
- expect(await getMenuVisibility(page)).toBe("hidden");
508
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
509
- expect(activeElId).toBe("ic-select-input-0");
510
- });
511
- it("should display the label of the value passed in using the 'value' prop as the selected option", async () => {
512
- const page = await newE2EPage();
513
- await page.setContent(getTestSelect(options));
514
- const icSelect = await page.find("ic-select");
515
- icSelect.setAttribute("value", "Test value 2");
516
- await page.waitForChanges();
517
- const select = await page.find("ic-select >>> #ic-select-input-0");
518
- expect(select).toEqualText("Test label 2");
519
- });
520
- it("should render options with descriptions", async () => {
521
- const page = await newE2EPage();
522
- const optionsWithDescription = `[
120
+ it("should render when no options are provided", async () => {
121
+ const page = await newE2EPage();
122
+ await page.setContent(`<ic-select label="IC Select Test"></ic-select>`);
123
+ await page.waitForChanges();
124
+ const select = await page.find("ic-select");
125
+ expect(select).not.toBeNull();
126
+ });
127
+ it("should open, set focus on menu and set aria-expanded to 'true' when input clicked", async () => {
128
+ const page = await newE2EPage();
129
+ await page.setContent(getTestSelect(options));
130
+ await page.waitForChanges();
131
+ expect(await getMenuVisibility(page)).toBe("hidden");
132
+ const select = await page.find("ic-select >>> #ic-select-input-0");
133
+ await select.click();
134
+ await page.waitForChanges();
135
+ expect(await getMenuVisibility(page)).toBe("visible");
136
+ expect(select.getAttribute("aria-expanded")).toBeTruthy();
137
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
138
+ expect(activeElId).toBe("ic-select-input-0-menu");
139
+ });
140
+ it("should render options correctly", async () => {
141
+ const page = await newE2EPage();
142
+ await page.setContent(getTestSelect(options));
143
+ await page.waitForChanges();
144
+ const select = await page.find("ic-select >>> #ic-select-input-0");
145
+ await select.click();
146
+ await page.waitForChanges();
147
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
148
+ const menuOptions = await menu.findAll("li");
149
+ expect(menuOptions).toHaveLength(3);
150
+ expect(menuOptions[0]).toEqualText("Test label 1");
151
+ expect(menuOptions[1]).toEqualText("Test label 2");
152
+ expect(menuOptions[2]).toEqualText("Test label 3");
153
+ });
154
+ it("should deduplicate options and warn about duplicate", async () => {
155
+ const page = await newE2EPage();
156
+ await page.setContent(getTestSelect(optionsWithDuplicate));
157
+ await page.waitForChanges();
158
+ const select = await page.find("ic-select >>> #ic-select-input-0");
159
+ await select.click();
160
+ await page.waitForChanges();
161
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
162
+ const menuOptions = await menu.findAll("li");
163
+ expect(menuOptions).toHaveLength(4);
164
+ expect(menuOptions[0]).toEqualText("Test label 1");
165
+ expect(menuOptions[1]).toEqualText("Test label 2");
166
+ expect(menuOptions[2]).toEqualText("Test label 3");
167
+ expect(menuOptions[3]).toEqualText("Test label 4");
168
+ // We can't test for ic-warn being called because it's already called seven times over 'hiddeninputvalue' changing
169
+ });
170
+ it("should call icChange when the selected option is changed", async () => {
171
+ const page = await newE2EPage();
172
+ await page.setContent(getTestSelect(options));
173
+ await page.waitForChanges();
174
+ const icChange = await page.spyOnEvent("icChange");
175
+ const select = await page.find("ic-select >>> #ic-select-input-0");
176
+ await select.press("ArrowDown");
177
+ await select.press("Enter");
178
+ await page.waitForChanges();
179
+ expect(icChange).toHaveReceivedEventDetail({
180
+ value: "Test value 1",
181
+ });
182
+ });
183
+ describe("when no option is selected", () => {
184
+ it("should open menu, apply focus style on first option and set as value when Down Arrow is pressed", async () => {
185
+ const page = await newE2EPage();
186
+ await page.setContent(getTestSelect(options));
187
+ await page.waitForChanges();
188
+ const select = await page.find("ic-select >>> #ic-select-input-0");
189
+ await select.press("ArrowDown");
190
+ await page.waitForChanges();
191
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
192
+ expect(await getMenuVisibility(page)).toBe("visible");
193
+ const firstOption = await menu.findAll("li");
194
+ expect(firstOption[0]).toHaveClass("focused-option");
195
+ expect(select).toEqualText("Test label 1");
196
+ });
197
+ it("should open menu when Space is pressed", async () => {
198
+ const page = await newE2EPage();
199
+ await page.setContent(getTestSelect(options));
200
+ await page.waitForChanges();
201
+ const select = await page.find("ic-select >>> #ic-select-input-0");
202
+ await select.press(" ");
203
+ await page.waitForChanges();
204
+ expect(await getMenuVisibility(page)).toBe("visible");
205
+ });
206
+ it("should open menu when Enter is pressed", async () => {
207
+ const page = await newE2EPage();
208
+ await page.setContent(getTestSelect(options));
209
+ await page.waitForChanges();
210
+ const select = await page.find("ic-select >>> #ic-select-input-0");
211
+ await select.press("Enter");
212
+ await page.waitForChanges();
213
+ await page.waitForTimeout(1000);
214
+ expect(await getMenuVisibility(page)).toBe("visible");
215
+ });
216
+ it("should open menu, apply focus style on last option and set as value when Up Arrow is pressed", async () => {
217
+ const page = await newE2EPage();
218
+ await page.setContent(getTestSelect(options));
219
+ await page.waitForChanges();
220
+ const select = await page.find("ic-select >>> #ic-select-input-0");
221
+ await select.press("ArrowUp");
222
+ await page.waitForChanges();
223
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
224
+ expect(await getMenuVisibility(page)).toBe("visible");
225
+ const lastOption = await menu.findAll("li");
226
+ expect(lastOption[2]).toHaveClass("focused-option");
227
+ expect(select).toEqualText("Test label 3");
228
+ });
229
+ it("should keep menu closed when Backspace, Home, End and Escape are pressed", async () => {
230
+ const page = await newE2EPage();
231
+ await page.setContent(getTestSelect(options));
232
+ await page.waitForChanges();
233
+ const select = await page.find("ic-select >>> #ic-select-input-0");
234
+ await select.press("Backspace");
235
+ await page.waitForChanges();
236
+ expect(await getMenuVisibility(page)).toBe("hidden");
237
+ await select.press("Home");
238
+ await page.waitForChanges();
239
+ expect(await getMenuVisibility(page)).toBe("hidden");
240
+ await select.press("End");
241
+ await page.waitForChanges();
242
+ expect(await getMenuVisibility(page)).toBe("hidden");
243
+ await select.press("Escape");
244
+ await page.waitForChanges();
245
+ expect(await getMenuVisibility(page)).toBe("hidden");
246
+ });
247
+ });
248
+ describe("when an option is selected", () => {
249
+ it("should move focus to next option and set as value when Down Arrow is pressed", async () => {
250
+ const page = await newE2EPage();
251
+ await page.setContent(getTestSelect(options));
252
+ await page.waitForChanges();
253
+ const select = await page.find("ic-select >>> #ic-select-input-0");
254
+ await select.press("ArrowDown");
255
+ await select.press("ArrowDown");
256
+ await page.waitForChanges();
257
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
258
+ const secondOption = await menu.findAll("li");
259
+ expect(secondOption[1]).toHaveClass("focused-option");
260
+ expect(select).toEqualText("Test label 2");
261
+ });
262
+ it("should move focus to first option and set as value when focus is on last option and Down Arrow is pressed", async () => {
263
+ const page = await newE2EPage();
264
+ await page.setContent(getTestSelect(options));
265
+ await page.waitForChanges();
266
+ const select = await page.find("ic-select >>> #ic-select-input-0");
267
+ await select.press("ArrowUp");
268
+ await select.press("ArrowDown");
269
+ await page.waitForChanges();
270
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
271
+ const firstOption = await menu.findAll("li");
272
+ expect(firstOption[0]).toHaveClass("focused-option");
273
+ expect(select).toEqualText("Test label 1");
274
+ });
275
+ it("should move focus to previous option and set as value when Up Arrow is pressed", async () => {
276
+ const page = await newE2EPage();
277
+ await page.setContent(getTestSelect(options));
278
+ await page.waitForChanges();
279
+ const select = await page.find("ic-select >>> #ic-select-input-0");
280
+ await select.press("ArrowUp");
281
+ await select.press("ArrowUp");
282
+ await page.waitForChanges();
283
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
284
+ const secondOption = await menu.findAll("li");
285
+ expect(secondOption[1]).toHaveClass("focused-option");
286
+ expect(select).toEqualText("Test label 2");
287
+ });
288
+ it("should move focus to last option and set as value when focus is on first option and Up Arrow is pressed", async () => {
289
+ const page = await newE2EPage();
290
+ await page.setContent(getTestSelect(options));
291
+ await page.waitForChanges();
292
+ const select = await page.find("ic-select >>> #ic-select-input-0");
293
+ await select.press("ArrowDown");
294
+ await select.press("ArrowUp");
295
+ await page.waitForChanges();
296
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
297
+ const lastOption = await menu.findAll("li");
298
+ expect(lastOption[2]).toHaveClass("focused-option");
299
+ expect(select).toEqualText("Test label 3");
300
+ });
301
+ it("should move focus to first option and set as value when Home is pressed", async () => {
302
+ const page = await newE2EPage();
303
+ await page.setContent(getTestSelect(options));
304
+ await page.waitForChanges();
305
+ const select = await page.find("ic-select >>> #ic-select-input-0");
306
+ await select.press("ArrowUp");
307
+ await page.keyboard.press("Home");
308
+ await page.waitForChanges();
309
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
310
+ const firstOption = await menu.findAll("li");
311
+ expect(firstOption[0]).toHaveClass("focused-option");
312
+ expect(select).toEqualText("Test label 1");
313
+ });
314
+ it("should move focus to last option and set as value when End is pressed", async () => {
315
+ const page = await newE2EPage();
316
+ await page.setContent(getTestSelect(options));
317
+ await page.waitForChanges();
318
+ const select = await page.find("ic-select >>> #ic-select-input-0");
319
+ await select.press("ArrowDown");
320
+ await page.keyboard.press("End");
321
+ await page.waitForChanges();
322
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
323
+ const lastOption = await menu.findAll("li");
324
+ expect(lastOption[2]).toHaveClass("focused-option");
325
+ expect(select).toEqualText("Test label 3");
326
+ });
327
+ it("should display a check next to the selected option and set aria-selected", async () => {
328
+ const page = await newE2EPage();
329
+ await page.setContent(getTestSelect(options));
330
+ await page.waitForChanges();
331
+ const select = await page.find("ic-select >>> #ic-select-input-0");
332
+ await select.press("ArrowDown");
333
+ await page.waitForChanges();
334
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
335
+ const firstOption = await menu.findAll("li");
336
+ expect(firstOption[0]).toHaveAttribute("aria-selected");
337
+ expect(await firstOption[0].find(".check-icon")).not.toBeNull;
338
+ expect(firstOption[1]).not.toHaveAttribute("aria-selected");
339
+ expect(await firstOption[1].find(".check-icon")).toBeNull;
340
+ });
341
+ it("should display a check next to the selected option and set aria-selected when a default value is applied", async () => {
342
+ const page = await newE2EPage();
343
+ await page.setContent(getTestSelect(options));
344
+ await page.waitForChanges();
345
+ const icSelect = await page.find("ic-select");
346
+ icSelect.setAttribute("value", "Test value 1");
347
+ await page.waitForChanges();
348
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
349
+ const firstOption = await menu.findAll("li");
350
+ expect(firstOption[0]).toHaveAttribute("aria-selected");
351
+ expect(await firstOption[0].find(".check-icon")).not.toBeNull;
352
+ });
353
+ it("should display clear button if the 'show-clear-button' prop is supplied and an option is selected", async () => {
354
+ const page = await newE2EPage();
355
+ await page.setContent(getTestSelect(options));
356
+ let clearButton = await page.find("ic-select >>> .clear-button");
357
+ expect(clearButton).toBeNull();
358
+ const icSelect = await page.find("ic-select");
359
+ icSelect.setAttribute("show-clear-button", true);
360
+ await page.waitForChanges();
361
+ clearButton = await page.find("ic-select >>> .clear-button");
362
+ expect(clearButton).toBeNull();
363
+ const select = await page.find("ic-select >>> #ic-select-input-0");
364
+ await select.press("ArrowDown");
365
+ await page.keyboard.press("Enter");
366
+ await page.waitForChanges();
367
+ clearButton = await page.find("ic-select >>> .clear-button");
368
+ expect(clearButton).not.toBeNull();
369
+ });
370
+ it("should clear the input if the clear button is clicked", async () => {
371
+ const page = await newE2EPage();
372
+ await page.setContent(getTestSelect(options));
373
+ const icSelect = await page.find("ic-select");
374
+ icSelect.setAttribute("show-clear-button", true);
375
+ await page.waitForChanges();
376
+ const icChange = await page.spyOnEvent("icChange");
377
+ const select = await page.find("ic-select >>> #ic-select-input-0");
378
+ await select.press("ArrowDown");
379
+ await page.keyboard.press("Enter");
380
+ await page.waitForChanges();
381
+ let clearButton = await page.find("ic-select >>> .clear-button");
382
+ await clearButton.click();
383
+ await page.waitForChanges();
384
+ expect(select).toEqualText("Select an option");
385
+ expect(icChange).toHaveReceivedEventDetail({
386
+ value: null,
387
+ });
388
+ clearButton = await page.find("ic-select >>> .clear-button");
389
+ expect(clearButton).toBeNull;
390
+ });
391
+ });
392
+ it("should close menu when input is clicked while open and set focus on it", async () => {
393
+ const page = await newE2EPage();
394
+ await page.setContent(getTestSelect(options));
395
+ await page.waitForChanges();
396
+ const select = await page.find("ic-select >>> #ic-select-input-0");
397
+ await select.click();
398
+ await page.waitForChanges();
399
+ await select.click();
400
+ await page.waitForChanges();
401
+ await page.waitForTimeout(1000);
402
+ expect(await getMenuVisibility(page)).toBe("hidden");
403
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
404
+ expect(activeElId).toBe("ic-select-input-0");
405
+ });
406
+ it("should close menu when an option is clicked, set as value and move focus onto the input", async () => {
407
+ const page = await newE2EPage();
408
+ await page.setContent(getTestSelect(options));
409
+ await page.waitForChanges();
410
+ const select = await page.find("ic-select >>> #ic-select-input-0");
411
+ await select.click();
412
+ await page.waitForChanges();
413
+ const icChange = await page.spyOnEvent("icChange");
414
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
415
+ await menu.click();
416
+ await page.waitForChanges();
417
+ await page.waitForTimeout(1000);
418
+ expect(await getMenuVisibility(page)).toBe("hidden");
419
+ expect(icChange).toHaveReceivedEventDetail({
420
+ value: "Test value 2",
421
+ });
422
+ expect(select).toEqualText("Test label 2");
423
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
424
+ expect(activeElId).toBe("ic-select-input-0");
425
+ });
426
+ it("should close menu when Space is pressed and move focus to the input", async () => {
427
+ const page = await newE2EPage();
428
+ await page.setContent(getTestSelect(options));
429
+ await page.waitForChanges();
430
+ const select = await page.find("ic-select >>> #ic-select-input-0");
431
+ await select.press("ArrowDown");
432
+ await page.waitForChanges();
433
+ await page.keyboard.press(" ");
434
+ await page.waitForChanges();
435
+ await page.waitForTimeout(1000);
436
+ expect(await getMenuVisibility(page)).toBe("hidden");
437
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
438
+ expect(activeElId).toBe("ic-select-input-0");
439
+ });
440
+ it("should close menu when Enter is pressed and set focus to the input", async () => {
441
+ const page = await newE2EPage();
442
+ await page.setContent(getTestSelect(options));
443
+ await page.waitForChanges();
444
+ const select = await page.find("ic-select >>> #ic-select-input-0");
445
+ await select.press("ArrowDown");
446
+ await page.waitForChanges();
447
+ await page.keyboard.press("Enter");
448
+ await page.waitForChanges();
449
+ await page.waitForTimeout(1000);
450
+ expect(await getMenuVisibility(page)).toBe("hidden");
451
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
452
+ expect(activeElId).toBe("ic-select-input-0");
453
+ });
454
+ it("should close menu when Escape is pressed and set focus to the input", async () => {
455
+ const page = await newE2EPage();
456
+ await page.setContent(getTestSelect(options));
457
+ await page.waitForChanges();
458
+ const select = await page.find("ic-select >>> #ic-select-input-0");
459
+ await select.press("ArrowDown");
460
+ await page.waitForChanges();
461
+ await page.keyboard.press("Escape");
462
+ await page.waitForChanges();
463
+ await page.waitForTimeout(1000);
464
+ expect(await getMenuVisibility(page)).toBe("hidden");
465
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
466
+ expect(activeElId).toBe("ic-select-input-0");
467
+ });
468
+ it("should close menu when another element on the page is clicked", async () => {
469
+ const page = await newE2EPage();
470
+ await page.setContent(`${getTestSelect(options)}<button>Test button</button>`);
471
+ await page.waitForChanges();
472
+ const select = await page.find("ic-select >>> #ic-select-input-0");
473
+ await select.press("ArrowDown");
474
+ await page.waitForChanges();
475
+ const button = await page.find("button");
476
+ await button.click();
477
+ await page.waitForChanges();
478
+ await page.waitForTimeout(1000);
479
+ expect(await getMenuVisibility(page)).toBe("hidden");
480
+ });
481
+ it("should close menu when Tab is pressed to move focus onto the next element on the page", async () => {
482
+ const page = await newE2EPage();
483
+ await page.setContent(`${getTestSelect(options)}<button>Test button</button>`);
484
+ await page.waitForChanges();
485
+ const select = await page.find("ic-select >>> #ic-select-input-0");
486
+ await select.press("ArrowDown");
487
+ await page.waitForChanges();
488
+ await page.keyboard.press("Tab");
489
+ await page.waitForChanges();
490
+ await page.waitForTimeout(1000);
491
+ expect(await getMenuVisibility(page)).toBe("hidden");
492
+ });
493
+ it("should close menu when Shift + Tab is pressed to move focus onto the input", async () => {
494
+ const page = await newE2EPage();
495
+ await page.setContent(`${getTestSelect(options)}`);
496
+ await page.waitForChanges();
497
+ const select = await page.find("ic-select >>> #ic-select-input-0");
498
+ await select.press("ArrowDown");
499
+ await page.waitForChanges();
500
+ await page.waitForTimeout(1000);
501
+ await page.keyboard.down("Shift");
502
+ await page.keyboard.press("Tab");
503
+ await page.waitForChanges();
504
+ await page.keyboard.up("Shift");
505
+ await page.waitForChanges();
506
+ await page.waitForTimeout(1000);
507
+ expect(await getMenuVisibility(page)).toBe("hidden");
508
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
509
+ expect(activeElId).toBe("ic-select-input-0");
510
+ });
511
+ it("should display the label of the value passed in using the 'value' prop as the selected option", async () => {
512
+ const page = await newE2EPage();
513
+ await page.setContent(getTestSelect(options));
514
+ const icSelect = await page.find("ic-select");
515
+ icSelect.setAttribute("value", "Test value 2");
516
+ await page.waitForChanges();
517
+ const select = await page.find("ic-select >>> #ic-select-input-0");
518
+ expect(select).toEqualText("Test label 2");
519
+ });
520
+ it("should render options with descriptions", async () => {
521
+ const page = await newE2EPage();
522
+ const optionsWithDescription = `[
523
523
  { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },
524
524
  { label: 'Test label 2', value: 'Test value 2' },
525
525
  { label: 'Test label 3', value: 'Test value 3' },
526
526
  ]`;
527
- await page.setContent(getTestSelect(optionsWithDescription));
528
- await page.waitForChanges();
529
- const select = await page.find("ic-select >>> #ic-select-input-0");
530
- await select.press("ArrowDown");
531
- await page.waitForChanges();
532
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
533
- const firstOptionDescription = await menu.find("li .option-description");
534
- expect(firstOptionDescription).toEqualText("Test description 1");
535
- });
536
- it("should render the placeholder", async () => {
537
- const page = await newE2EPage();
538
- await page.setContent(getTestSelect(options));
539
- const icSelect = await page.find("ic-select");
540
- icSelect.setAttribute("placeholder", "Test placeholder");
541
- await page.waitForChanges();
542
- const select = await page.find("ic-select >>> #ic-select-input-0");
543
- expect(select).toEqualText("Test placeholder");
544
- });
545
- it("should render as disabled correctly", async () => {
546
- const page = await newE2EPage();
547
- await page.setContent(getTestSelect(options));
548
- const icSelect = await page.find("ic-select");
549
- icSelect.setAttribute("disabled", true);
550
- await page.waitForChanges();
551
- const select = await page.find("ic-select >>> #ic-select-input-0");
552
- expect(select).toHaveAttribute("disabled");
553
- await select.click();
554
- await page.waitForChanges();
555
- expect(await getMenuVisibility(page)).toBe("hidden");
556
- });
557
- it("should prevent click on disabled options", async () => {
558
- const page = await newE2EPage();
559
- const optionsWithDisabled = `[
527
+ await page.setContent(getTestSelect(optionsWithDescription));
528
+ await page.waitForChanges();
529
+ const select = await page.find("ic-select >>> #ic-select-input-0");
530
+ await select.press("ArrowDown");
531
+ await page.waitForChanges();
532
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
533
+ const firstOptionDescription = await menu.find("li .option-description");
534
+ expect(firstOptionDescription).toEqualText("Test description 1");
535
+ });
536
+ it("should render the placeholder", async () => {
537
+ const page = await newE2EPage();
538
+ await page.setContent(getTestSelect(options));
539
+ const icSelect = await page.find("ic-select");
540
+ icSelect.setAttribute("placeholder", "Test placeholder");
541
+ await page.waitForChanges();
542
+ const select = await page.find("ic-select >>> #ic-select-input-0");
543
+ expect(select).toEqualText("Test placeholder");
544
+ });
545
+ it("should render as disabled correctly", async () => {
546
+ const page = await newE2EPage();
547
+ await page.setContent(getTestSelect(options));
548
+ const icSelect = await page.find("ic-select");
549
+ icSelect.setAttribute("disabled", true);
550
+ await page.waitForChanges();
551
+ const select = await page.find("ic-select >>> #ic-select-input-0");
552
+ expect(select).toHaveAttribute("disabled");
553
+ await select.click();
554
+ await page.waitForChanges();
555
+ expect(await getMenuVisibility(page)).toBe("hidden");
556
+ });
557
+ it("should prevent click on disabled options", async () => {
558
+ const page = await newE2EPage();
559
+ const optionsWithDisabled = `[
560
560
  { label: 'Test label 1', value: 'Test value 1' },
561
561
  { label: 'Test label 2', value: 'Test value 2', disabled: true },
562
562
  { label: 'Test label 3', value: 'Test value 3' },
563
563
  ]`;
564
- await page.setContent(getTestSelect(optionsWithDisabled));
565
- await page.waitForChanges();
566
- const select = await page.find("ic-select >>> #ic-select-input-0");
567
- await select.press("ArrowDown");
568
- await page.waitForChanges();
569
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
570
- await menu.click();
571
- await page.waitForChanges();
572
- expect(await getMenuVisibility(page)).toBe("visible");
573
- });
574
- it("should set aria-disabled and skip focus when option disabled", async () => {
575
- const page = await newE2EPage();
576
- const optionsWithDisabled = `[
564
+ await page.setContent(getTestSelect(optionsWithDisabled));
565
+ await page.waitForChanges();
566
+ const select = await page.find("ic-select >>> #ic-select-input-0");
567
+ await select.press("ArrowDown");
568
+ await page.waitForChanges();
569
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
570
+ await menu.click();
571
+ await page.waitForChanges();
572
+ expect(await getMenuVisibility(page)).toBe("visible");
573
+ });
574
+ it("should set aria-disabled and skip focus when option disabled", async () => {
575
+ const page = await newE2EPage();
576
+ const optionsWithDisabled = `[
577
577
  { label: 'Test label 1', value: 'Test value 1', disabled: true },
578
578
  { label: 'Test label 2', value: 'Test value 2' },
579
579
  { label: 'Test label 3', value: 'Test value 3' },
580
580
  ]`;
581
- await page.setContent(getTestSelect(optionsWithDisabled));
582
- await page.waitForChanges();
583
- const select = await page.find("ic-select >>> #ic-select-input-0");
584
- await select.press("ArrowDown");
585
- await page.waitForChanges();
586
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
587
- const menuOptions = await menu.findAll("li");
588
- expect(menuOptions[0]).toHaveAttribute("aria-disabled");
589
- expect(menuOptions[1]).toHaveClass("focused-option");
590
- });
591
- it("should render as required correctly", async () => {
592
- const page = await newE2EPage();
593
- await page.setContent(getTestSelect(options));
594
- const icSelect = await page.find("ic-select");
595
- icSelect.setAttribute("required", true);
596
- await page.waitForChanges();
597
- const label = await page.find("ic-select >>> ic-input-label");
598
- expect(label).toEqualText("IC Select Test *");
599
- const select = await page.find("ic-select >>> #ic-select-input-0");
600
- expect(select.getAttribute("aria-label").includes("required")).toBeTruthy();
601
- });
602
- it("should render selected value as text when read-only", async () => {
603
- const page = await newE2EPage();
604
- await page.setContent(getTestSelect(options));
605
- const icSelect = await page.find("ic-select");
606
- icSelect.setAttribute("value", "Test value 1");
607
- icSelect.setAttribute("readonly", true);
608
- await page.waitForChanges();
609
- const select = await page.find("ic-select >>> #ic-select-input-0");
610
- const typography = await page.evaluate(() => Array.from(document
611
- .querySelector("ic-select")
612
- .shadowRoot.querySelectorAll("ic-typography"), (typography) => typography.innerText));
613
- expect(select).toBe(null);
614
- expect(typography[1]).toBe("Test label 1");
615
- });
616
- it("should render options as groups if they have children", async () => {
617
- const page = await newE2EPage();
618
- const groupedOptions = `[
581
+ await page.setContent(getTestSelect(optionsWithDisabled));
582
+ await page.waitForChanges();
583
+ const select = await page.find("ic-select >>> #ic-select-input-0");
584
+ await select.press("ArrowDown");
585
+ await page.waitForChanges();
586
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
587
+ const menuOptions = await menu.findAll("li");
588
+ expect(menuOptions[0]).toHaveAttribute("aria-disabled");
589
+ expect(menuOptions[1]).toHaveClass("focused-option");
590
+ });
591
+ it("should render as required correctly", async () => {
592
+ const page = await newE2EPage();
593
+ await page.setContent(getTestSelect(options));
594
+ const icSelect = await page.find("ic-select");
595
+ icSelect.setAttribute("required", true);
596
+ await page.waitForChanges();
597
+ const label = await page.find("ic-select >>> ic-input-label");
598
+ expect(label).toEqualText("IC Select Test *");
599
+ const select = await page.find("ic-select >>> #ic-select-input-0");
600
+ expect(select.getAttribute("aria-label").includes("required")).toBeTruthy();
601
+ });
602
+ it("should render selected value as text when read-only", async () => {
603
+ const page = await newE2EPage();
604
+ await page.setContent(getTestSelect(options));
605
+ const icSelect = await page.find("ic-select");
606
+ icSelect.setAttribute("value", "Test value 1");
607
+ icSelect.setAttribute("readonly", true);
608
+ await page.waitForChanges();
609
+ const select = await page.find("ic-select >>> #ic-select-input-0");
610
+ const typography = await page.evaluate(() => Array.from(document
611
+ .querySelector("ic-select")
612
+ .shadowRoot.querySelectorAll("ic-typography"), (typography) => typography.innerText));
613
+ expect(select).toBe(null);
614
+ expect(typography[1]).toBe("Test label 1");
615
+ });
616
+ it("should render options as groups if they have children", async () => {
617
+ const page = await newE2EPage();
618
+ const groupedOptions = `[
619
619
  {
620
620
  label: 'Test group',
621
621
  children: [
@@ -625,21 +625,21 @@ describe("ic-select", () => {
625
625
  ],
626
626
  },
627
627
  ]`;
628
- await page.setContent(getTestSelect(groupedOptions));
629
- await page.waitForChanges();
630
- const select = await page.find("ic-select >>> #ic-select-input-0");
631
- await select.press("ArrowDown");
632
- await page.waitForChanges();
633
- const optionGroupTitle = await page.find("ic-select >>> ic-menu >>> .option-group-title");
634
- expect(optionGroupTitle).not.toBeNull();
635
- const optionsText = await page.evaluate(() => Array.from(document
636
- .querySelector("ic-select")
637
- .shadowRoot.querySelectorAll("ic-menu ic-typography"), (typography) => typography.innerText));
638
- expect(optionsText[0]).toBe("Test group");
639
- });
640
- it("should render and focus child options correctly", async () => {
641
- const page = await newE2EPage();
642
- const groupedOptions = `[
628
+ await page.setContent(getTestSelect(groupedOptions));
629
+ await page.waitForChanges();
630
+ const select = await page.find("ic-select >>> #ic-select-input-0");
631
+ await select.press("ArrowDown");
632
+ await page.waitForChanges();
633
+ const optionGroupTitle = await page.find("ic-select >>> ic-menu >>> .option-group-title");
634
+ expect(optionGroupTitle).not.toBeNull();
635
+ const optionsText = await page.evaluate(() => Array.from(document
636
+ .querySelector("ic-select")
637
+ .shadowRoot.querySelectorAll("ic-menu ic-typography"), (typography) => typography.innerText));
638
+ expect(optionsText[0]).toBe("Test group");
639
+ });
640
+ it("should render and focus child options correctly", async () => {
641
+ const page = await newE2EPage();
642
+ const groupedOptions = `[
643
643
  {
644
644
  label: 'Test group',
645
645
  children: [
@@ -649,63 +649,63 @@ describe("ic-select", () => {
649
649
  ],
650
650
  },
651
651
  ]`;
652
- await page.setContent(getTestSelect(groupedOptions));
653
- await page.waitForChanges();
654
- const select = await page.find("ic-select >>> #ic-select-input-0");
655
- await select.press("ArrowDown");
656
- await page.waitForChanges();
657
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
658
- const childOptions = await menu.findAll("li");
659
- expect(childOptions).toHaveLength(3);
660
- expect(childOptions[0]).toEqualText("Test label 1");
661
- expect(childOptions[1]).toEqualText("Test label 2");
662
- expect(childOptions[2]).toEqualText("Test label 3");
663
- expect(childOptions[0]).toHaveClass("focused-option");
664
- });
665
- it("should render options at the top of the menu if they are recommended", async () => {
666
- const page = await newE2EPage();
667
- const optionsWithDisabled = `[
652
+ await page.setContent(getTestSelect(groupedOptions));
653
+ await page.waitForChanges();
654
+ const select = await page.find("ic-select >>> #ic-select-input-0");
655
+ await select.press("ArrowDown");
656
+ await page.waitForChanges();
657
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
658
+ const childOptions = await menu.findAll("li");
659
+ expect(childOptions).toHaveLength(3);
660
+ expect(childOptions[0]).toEqualText("Test label 1");
661
+ expect(childOptions[1]).toEqualText("Test label 2");
662
+ expect(childOptions[2]).toEqualText("Test label 3");
663
+ expect(childOptions[0]).toHaveClass("focused-option");
664
+ });
665
+ it("should render options at the top of the menu if they are recommended", async () => {
666
+ const page = await newE2EPage();
667
+ const optionsWithDisabled = `[
668
668
  { label: 'Test label 1', value: 'Test value 1' },
669
669
  { label: 'Test label 2', value: 'Test value 2', recommended: true },
670
670
  { label: 'Test label 3', value: 'Test value 3' },
671
671
  ]`;
672
- await page.setContent(getTestSelect(optionsWithDisabled));
673
- await page.waitForChanges();
674
- const select = await page.find("ic-select >>> #ic-select-input-0");
675
- await select.press("ArrowDown");
676
- await page.waitForChanges();
677
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
678
- const firstOption = await menu.findAll("li");
679
- expect(firstOption[0]).toEqualText("Test label 2");
680
- });
681
- it("should set aria-invalid if validation status is 'error'", async () => {
682
- const page = await newE2EPage();
683
- await page.setContent(getTestSelect(options));
684
- const icSelect = await page.find("ic-select");
685
- icSelect.setAttribute("validation-status", "error");
686
- await page.waitForChanges();
687
- const select = await page.find("ic-select >>> #ic-select-input-0");
688
- expect(select).toHaveAttribute("aria-invalid");
689
- });
690
- it("should set the aria-label correctly if an option has a description", async () => {
691
- const page = await newE2EPage();
692
- const optionsWithDescription = `[
672
+ await page.setContent(getTestSelect(optionsWithDisabled));
673
+ await page.waitForChanges();
674
+ const select = await page.find("ic-select >>> #ic-select-input-0");
675
+ await select.press("ArrowDown");
676
+ await page.waitForChanges();
677
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
678
+ const firstOption = await menu.findAll("li");
679
+ expect(firstOption[0]).toEqualText("Test label 2");
680
+ });
681
+ it("should set aria-invalid if validation status is 'error'", async () => {
682
+ const page = await newE2EPage();
683
+ await page.setContent(getTestSelect(options));
684
+ const icSelect = await page.find("ic-select");
685
+ icSelect.setAttribute("validation-status", "error");
686
+ await page.waitForChanges();
687
+ const select = await page.find("ic-select >>> #ic-select-input-0");
688
+ expect(select).toHaveAttribute("aria-invalid");
689
+ });
690
+ it("should set the aria-label correctly if an option has a description", async () => {
691
+ const page = await newE2EPage();
692
+ const optionsWithDescription = `[
693
693
  { label: 'Test label 1', value: 'Test value 1', description: 'Test description 1' },
694
694
  { label: 'Test label 2', value: 'Test value 2' },
695
695
  { label: 'Test label 3', value: 'Test value 3' },
696
696
  ]`;
697
- await page.setContent(getTestSelect(optionsWithDescription));
698
- await page.waitForChanges();
699
- const select = await page.find("ic-select >>> #ic-select-input-0");
700
- await select.press("ArrowDown");
701
- await page.waitForChanges();
702
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
703
- const firstOption = await menu.findAll("li");
704
- expect(firstOption[0].getAttribute("aria-label")).toBe("Test label 1, Test description 1");
705
- });
706
- it("should set the aria-label correctly if an option is within a group", async () => {
707
- const page = await newE2EPage();
708
- const optionsWithDescription = `[
697
+ await page.setContent(getTestSelect(optionsWithDescription));
698
+ await page.waitForChanges();
699
+ const select = await page.find("ic-select >>> #ic-select-input-0");
700
+ await select.press("ArrowDown");
701
+ await page.waitForChanges();
702
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
703
+ const firstOption = await menu.findAll("li");
704
+ expect(firstOption[0].getAttribute("aria-label")).toBe("Test label 1, Test description 1");
705
+ });
706
+ it("should set the aria-label correctly if an option is within a group", async () => {
707
+ const page = await newE2EPage();
708
+ const optionsWithDescription = `[
709
709
  {
710
710
  label: 'Test group',
711
711
  children: [
@@ -715,18 +715,18 @@ describe("ic-select", () => {
715
715
  ],
716
716
  },
717
717
  ]`;
718
- await page.setContent(getTestSelect(optionsWithDescription));
719
- await page.waitForChanges();
720
- const select = await page.find("ic-select >>> #ic-select-input-0");
721
- await select.press("ArrowDown");
722
- await page.waitForChanges();
723
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
724
- const firstOption = await menu.findAll("li");
725
- expect(firstOption[0].getAttribute("aria-label")).toBe("Test label 1, Test group group");
726
- });
727
- it("should set the aria-label correctly if an option has a description and is within a group", async () => {
728
- const page = await newE2EPage();
729
- const optionsWithDescription = `[
718
+ await page.setContent(getTestSelect(optionsWithDescription));
719
+ await page.waitForChanges();
720
+ const select = await page.find("ic-select >>> #ic-select-input-0");
721
+ await select.press("ArrowDown");
722
+ await page.waitForChanges();
723
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
724
+ const firstOption = await menu.findAll("li");
725
+ expect(firstOption[0].getAttribute("aria-label")).toBe("Test label 1, Test group group");
726
+ });
727
+ it("should set the aria-label correctly if an option has a description and is within a group", async () => {
728
+ const page = await newE2EPage();
729
+ const optionsWithDescription = `[
730
730
  {
731
731
  label: 'Test group',
732
732
  children: [
@@ -736,41 +736,41 @@ describe("ic-select", () => {
736
736
  ],
737
737
  },
738
738
  ]`;
739
- await page.setContent(getTestSelect(optionsWithDescription));
740
- await page.waitForChanges();
741
- const select = await page.find("ic-select >>> #ic-select-input-0");
742
- await select.press("ArrowDown");
743
- await page.waitForChanges();
744
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
745
- const firstOption = await menu.findAll("li");
746
- expect(firstOption[0].getAttribute("aria-label")).toBe("Test label 1, Test description 1, Test group group");
747
- });
748
- it("should call icFocus when focused", async () => {
749
- const page = await newE2EPage();
750
- await page.setContent(`<button>Test button</button>${getTestSelect(options)}`);
751
- await page.waitForChanges();
752
- const button = await page.find("button");
753
- await button.focus();
754
- await page.waitForChanges();
755
- const icFocus = await page.spyOnEvent("icFocus");
756
- await page.keyboard.down("Tab");
757
- await page.waitForChanges();
758
- expect(icFocus).toHaveReceivedEvent();
759
- });
760
- it("should call icBlur when it loses focus", async () => {
761
- const page = await newE2EPage();
762
- await page.setContent(getTestSelect(options));
763
- await page.waitForChanges();
764
- const icBlur = await page.spyOnEvent("icBlur");
765
- await page.keyboard.down("Tab");
766
- await page.keyboard.down("Tab");
767
- await page.waitForChanges();
768
- expect(icBlur).toHaveReceivedEvent();
769
- });
770
- describe("loading", () => {
771
- it("should display a loading message and then the options when fetching options externally", async () => {
772
- const page = await newE2EPage();
773
- await page.setContent(`<ic-select label="IC Select Test" loading="true"></ic-select>
739
+ await page.setContent(getTestSelect(optionsWithDescription));
740
+ await page.waitForChanges();
741
+ const select = await page.find("ic-select >>> #ic-select-input-0");
742
+ await select.press("ArrowDown");
743
+ await page.waitForChanges();
744
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
745
+ const firstOption = await menu.findAll("li");
746
+ expect(firstOption[0].getAttribute("aria-label")).toBe("Test label 1, Test description 1, Test group group");
747
+ });
748
+ it("should call icFocus when focused", async () => {
749
+ const page = await newE2EPage();
750
+ await page.setContent(`<button>Test button</button>${getTestSelect(options)}`);
751
+ await page.waitForChanges();
752
+ const button = await page.find("button");
753
+ await button.focus();
754
+ await page.waitForChanges();
755
+ const icFocus = await page.spyOnEvent("icFocus");
756
+ await page.keyboard.down("Tab");
757
+ await page.waitForChanges();
758
+ expect(icFocus).toHaveReceivedEvent();
759
+ });
760
+ it("should call icBlur when it loses focus", async () => {
761
+ const page = await newE2EPage();
762
+ await page.setContent(getTestSelect(options));
763
+ await page.waitForChanges();
764
+ const icBlur = await page.spyOnEvent("icBlur");
765
+ await page.keyboard.down("Tab");
766
+ await page.keyboard.down("Tab");
767
+ await page.waitForChanges();
768
+ expect(icBlur).toHaveReceivedEvent();
769
+ });
770
+ describe("loading", () => {
771
+ it("should display a loading message and then the options when fetching options externally", async () => {
772
+ const page = await newE2EPage();
773
+ await page.setContent(`<ic-select label="IC Select Test" loading="true"></ic-select>
774
774
  <script>
775
775
  var select = document.querySelector('ic-select');
776
776
  select.options = [];
@@ -786,51 +786,51 @@ describe("ic-select", () => {
786
786
  ];
787
787
  }, 1000);
788
788
  </script>`);
789
- await page.waitForChanges();
790
- let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
791
- expect(firstOption).toEqualText("Loading...");
792
- await page.waitForTimeout(1500);
793
- firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
794
- expect(firstOption).toEqualText("Test label 1");
795
- const icSelect = await page.find("ic-select");
796
- expect(icSelect.getAttribute("loading")).toBeFalsy;
797
- });
798
- it("should display a retry button and a custom loading error when it times out and should not update the options", async () => {
799
- const page = await newE2EPage();
800
- await page.setContent(`<ic-select label="IC Select Test" loading="true" timeout="500" options="[]" loading-error-label="Error"></ic-select>`);
801
- await page.waitForChanges();
802
- let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
803
- expect(firstOption).toEqualText("Loading...");
804
- await page.waitForTimeout(560);
805
- firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
806
- expect(firstOption).toEqualText("Error");
807
- const retryButton = await page.find("ic-select >>> #retry-button");
808
- expect(retryButton).not.toBeNull;
809
- await page.waitForTimeout(1500);
810
- firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
811
- expect(firstOption).toEqualText("Error");
812
- });
813
- it("should focus the retry button on tab and emit icBlur and close the menu when blurring", async () => {
814
- const page = await newE2EPage();
815
- await page.setContent(`<ic-select label="IC Select Test" loading="true" timeout="500" options="[]" loading-error-label="Error"></ic-select>`);
816
- await page.waitForChanges();
817
- await page.waitForTimeout(560);
818
- const select = await page.find("ic-select >>> #ic-select-input-0");
819
- await select.click();
820
- await page.waitForChanges();
821
- await page.keyboard.press("Tab");
822
- await page.waitForChanges();
823
- const icBlur = await page.spyOnEvent("icBlur");
824
- expect(icBlur).not.toHaveReceivedEvent();
825
- const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
826
- expect(activeElId).toBe("retry-button");
827
- await page.keyboard.press("Tab");
828
- await page.waitForChanges();
829
- expect(icBlur).toHaveReceivedEvent();
830
- });
831
- it("should retry loading and keep the menu open when retry button is clicked", async () => {
832
- const page = await newE2EPage();
833
- await page.setContent(`<ic-select label="IC Select Test" loading="true" timeout="500"></ic-select>
789
+ await page.waitForChanges();
790
+ let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
791
+ expect(firstOption).toEqualText("Loading...");
792
+ await page.waitForTimeout(1500);
793
+ firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
794
+ expect(firstOption).toEqualText("Test label 1");
795
+ const icSelect = await page.find("ic-select");
796
+ expect(icSelect.getAttribute("loading")).toBeFalsy;
797
+ });
798
+ it("should display a retry button and a custom loading error when it times out and should not update the options", async () => {
799
+ const page = await newE2EPage();
800
+ await page.setContent(`<ic-select label="IC Select Test" loading="true" timeout="500" options="[]" loading-error-label="Error"></ic-select>`);
801
+ await page.waitForChanges();
802
+ let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
803
+ expect(firstOption).toEqualText("Loading...");
804
+ await page.waitForTimeout(560);
805
+ firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
806
+ expect(firstOption).toEqualText("Error");
807
+ const retryButton = await page.find("ic-select >>> #retry-button");
808
+ expect(retryButton).not.toBeNull;
809
+ await page.waitForTimeout(1500);
810
+ firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
811
+ expect(firstOption).toEqualText("Error");
812
+ });
813
+ it("should focus the retry button on tab and emit icBlur and close the menu when blurring", async () => {
814
+ const page = await newE2EPage();
815
+ await page.setContent(`<ic-select label="IC Select Test" loading="true" timeout="500" options="[]" loading-error-label="Error"></ic-select>`);
816
+ await page.waitForChanges();
817
+ await page.waitForTimeout(560);
818
+ const select = await page.find("ic-select >>> #ic-select-input-0");
819
+ await select.click();
820
+ await page.waitForChanges();
821
+ await page.keyboard.press("Tab");
822
+ await page.waitForChanges();
823
+ const icBlur = await page.spyOnEvent("icBlur");
824
+ expect(icBlur).not.toHaveReceivedEvent();
825
+ const activeElId = await page.$eval("ic-select", (el) => el.shadowRoot.activeElement.id);
826
+ expect(activeElId).toBe("retry-button");
827
+ await page.keyboard.press("Tab");
828
+ await page.waitForChanges();
829
+ expect(icBlur).toHaveReceivedEvent();
830
+ });
831
+ it("should retry loading and keep the menu open when retry button is clicked", async () => {
832
+ const page = await newE2EPage();
833
+ await page.setContent(`<ic-select label="IC Select Test" loading="true" timeout="500"></ic-select>
834
834
  <script>
835
835
  var select = document.querySelector('ic-select');
836
836
  select.options = [];
@@ -842,139 +842,139 @@ describe("ic-select", () => {
842
842
  select.loading = true;
843
843
  });
844
844
  </script>`);
845
- await page.waitForChanges();
846
- const icRetryLoad = await page.spyOnEvent("icRetryLoad");
847
- await page.waitForTimeout(560);
848
- let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
849
- expect(firstOption).toEqualText("Loading Error");
850
- const select = await page.find("ic-select >>> #ic-select-input-0");
851
- await select.click();
852
- await page.waitForChanges();
853
- const retryButton = await page.find("ic-select >>> #retry-button");
854
- await retryButton.click();
855
- await page.waitForChanges();
856
- expect(icRetryLoad).toHaveReceivedEvent;
857
- firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
858
- expect(firstOption).toEqualText("Loading...");
859
- expect(await getMenuVisibility(page)).toBe("visible");
860
- });
861
- it("should retry loading and keep the menu open when retry button is pressed with Enter", async () => {
862
- const page = await newE2EPage();
863
- await page.setContent(`<ic-select label="IC Select Test" loading="true" options="[]" timeout="500"></ic-select>`);
864
- await page.waitForChanges();
865
- const icRetryLoad = await page.spyOnEvent("icRetryLoad");
866
- await page.waitForTimeout(560);
867
- const firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
868
- expect(firstOption).toEqualText("Loading Error");
869
- const select = await page.find("ic-select >>> #ic-select-input-0");
870
- await select.click();
871
- await page.waitForChanges();
872
- const retryButton = await page.find("ic-select >>> #retry-button");
873
- await retryButton.press("Enter");
874
- await page.waitForChanges();
875
- expect(icRetryLoad).toHaveReceivedEvent;
876
- expect(await getMenuVisibility(page)).toBe("visible");
877
- });
878
- it("should render a No results message if no options are provided on render", async () => {
879
- const page = await newE2EPage();
880
- await page.setContent(getTestSelect(`[]`));
881
- await page.waitForChanges();
882
- const select = await page.find("ic-select >>> #ic-select-input-0");
883
- await select.click();
884
- await page.waitForChanges();
885
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
886
- const menuOptions = await menu.findAll("li");
887
- expect(menuOptions).toHaveLength(1);
888
- expect(menuOptions[0]).toEqualText("No results found");
889
- });
890
- });
891
- });
892
- describe("searchable", () => {
893
- it("should open menu when character is entered in input field and filter options", async () => {
894
- const page = await newE2EPage();
895
- await page.setContent(getTestSearchableSelect(searchableOptions));
896
- await page.waitForChanges();
897
- const select = await page.find("ic-select >>> #ic-select-input-0");
898
- await select.press("c");
899
- await page.waitForChanges();
900
- expect(await getMenuVisibility(page)).toBe("visible");
901
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
902
- const menuOptions = await menu.findAll("li");
903
- expect(menuOptions).toHaveLength(4);
904
- expect(menuOptions[0]).toEqualText("Cappuccino");
905
- expect(menuOptions[1]).toEqualText("Americano");
906
- expect(menuOptions[2]).toEqualText("Mocha");
907
- expect(menuOptions[3]).toEqualText("Macchiato");
908
- });
909
- it("should keep the same options when characters are entered and the menu is reopened", async () => {
910
- const page = await newE2EPage();
911
- await page.setContent(getTestSearchableSelect(searchableOptions));
912
- await page.waitForChanges();
913
- await focusAndTypeIntoInput("foo", page);
914
- await page.waitForChanges();
915
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
916
- let menuOptions = await menu.findAll("li");
917
- expect(menuOptions).toHaveLength(1);
918
- expect(menuOptions[0]).toEqualText("No results found");
919
- const select = await page.find("ic-select >>> #ic-select-input-0");
920
- select.click();
921
- await page.waitForChanges();
922
- expect(await getMenuVisibility(page)).toBe("hidden");
923
- select.click();
924
- await page.waitForChanges();
925
- expect(await getMenuVisibility(page)).toBe("visible");
926
- menuOptions = await menu.findAll("li");
927
- expect(menuOptions).toHaveLength(1);
928
- expect(menuOptions[0]).toEqualText("No results found");
929
- });
930
- it("should display no results state when search term matches none of the options", async () => {
931
- const page = await newE2EPage();
932
- await page.setContent(getTestSearchableSelect(searchableOptions));
933
- await page.waitForChanges();
934
- const select = await page.find("ic-select >>> #ic-select-input-0");
935
- await select.press("z");
936
- await page.waitForChanges();
937
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
938
- const menuOptions = await menu.findAll("li");
939
- expect(menuOptions).toHaveLength(1);
940
- expect(menuOptions[0]).toEqualText("No results found");
941
- });
942
- it("should filter options accordingly when Backspace is pressed", async () => {
943
- const page = await newE2EPage();
944
- await page.setContent(getTestSearchableSelect(searchableOptions));
945
- await page.waitForChanges();
946
- const select = await page.find("ic-select >>> #ic-select-input-0");
947
- await select.press("f");
948
- await page.waitForChanges();
949
- await select.press("i");
950
- await page.waitForChanges();
951
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
952
- let menuOptions = await menu.findAll("li");
953
- expect(menuOptions).toHaveLength(1);
954
- await select.press("Backspace");
955
- await page.waitForChanges();
956
- menuOptions = await menu.findAll("li");
957
- expect(menuOptions).toHaveLength(2);
958
- expect(menuOptions[0]).toEqualText("Filter");
959
- expect(menuOptions[1]).toEqualText("Flat white");
960
- });
961
- it("should filter options when search match position is set to start", async () => {
962
- const page = await newE2EPage();
963
- await page.setContent(getTestSearchableSelect(searchableOptions));
964
- const icSelect = await page.find("ic-select");
965
- icSelect.setAttribute("search-match-position", "start");
966
- await page.waitForChanges();
967
- const select = await page.find("ic-select >>> #ic-select-input-0");
968
- await select.press("c");
969
- await page.waitForChanges();
970
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
971
- const menuOptions = await menu.findAll("li");
972
- expect(menuOptions).toHaveLength(1);
973
- expect(menuOptions[0]).toEqualText("Cappuccino");
845
+ await page.waitForChanges();
846
+ const icRetryLoad = await page.spyOnEvent("icRetryLoad");
847
+ await page.waitForTimeout(560);
848
+ let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
849
+ expect(firstOption).toEqualText("Loading Error");
850
+ const select = await page.find("ic-select >>> #ic-select-input-0");
851
+ await select.click();
852
+ await page.waitForChanges();
853
+ const retryButton = await page.find("ic-select >>> #retry-button");
854
+ await retryButton.click();
855
+ await page.waitForChanges();
856
+ expect(icRetryLoad).toHaveReceivedEvent;
857
+ firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
858
+ expect(firstOption).toEqualText("Loading...");
859
+ expect(await getMenuVisibility(page)).toBe("visible");
860
+ });
861
+ it("should retry loading and keep the menu open when retry button is pressed with Enter", async () => {
862
+ const page = await newE2EPage();
863
+ await page.setContent(`<ic-select label="IC Select Test" loading="true" options="[]" timeout="500"></ic-select>`);
864
+ await page.waitForChanges();
865
+ const icRetryLoad = await page.spyOnEvent("icRetryLoad");
866
+ await page.waitForTimeout(560);
867
+ const firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
868
+ expect(firstOption).toEqualText("Loading Error");
869
+ const select = await page.find("ic-select >>> #ic-select-input-0");
870
+ await select.click();
871
+ await page.waitForChanges();
872
+ const retryButton = await page.find("ic-select >>> #retry-button");
873
+ await retryButton.press("Enter");
874
+ await page.waitForChanges();
875
+ expect(icRetryLoad).toHaveReceivedEvent;
876
+ expect(await getMenuVisibility(page)).toBe("visible");
877
+ });
878
+ it("should render a No results message if no options are provided on render", async () => {
879
+ const page = await newE2EPage();
880
+ await page.setContent(getTestSelect(`[]`));
881
+ await page.waitForChanges();
882
+ const select = await page.find("ic-select >>> #ic-select-input-0");
883
+ await select.click();
884
+ await page.waitForChanges();
885
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
886
+ const menuOptions = await menu.findAll("li");
887
+ expect(menuOptions).toHaveLength(1);
888
+ expect(menuOptions[0]).toEqualText("No results found");
889
+ });
890
+ });
974
891
  });
975
- it("should include option descriptions in search", async () => {
976
- const page = await newE2EPage();
977
- const optionsWithDescription = `[
892
+ describe("searchable", () => {
893
+ it("should open menu when character is entered in input field and filter options", async () => {
894
+ const page = await newE2EPage();
895
+ await page.setContent(getTestSearchableSelect(searchableOptions));
896
+ await page.waitForChanges();
897
+ const select = await page.find("ic-select >>> #ic-select-input-0");
898
+ await select.press("c");
899
+ await page.waitForChanges();
900
+ expect(await getMenuVisibility(page)).toBe("visible");
901
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
902
+ const menuOptions = await menu.findAll("li");
903
+ expect(menuOptions).toHaveLength(4);
904
+ expect(menuOptions[0]).toEqualText("Cappuccino");
905
+ expect(menuOptions[1]).toEqualText("Americano");
906
+ expect(menuOptions[2]).toEqualText("Mocha");
907
+ expect(menuOptions[3]).toEqualText("Macchiato");
908
+ });
909
+ it("should keep the same options when characters are entered and the menu is reopened", async () => {
910
+ const page = await newE2EPage();
911
+ await page.setContent(getTestSearchableSelect(searchableOptions));
912
+ await page.waitForChanges();
913
+ await focusAndTypeIntoInput("foo", page);
914
+ await page.waitForChanges();
915
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
916
+ let menuOptions = await menu.findAll("li");
917
+ expect(menuOptions).toHaveLength(1);
918
+ expect(menuOptions[0]).toEqualText("No results found");
919
+ const select = await page.find("ic-select >>> #ic-select-input-0");
920
+ select.click();
921
+ await page.waitForChanges();
922
+ expect(await getMenuVisibility(page)).toBe("hidden");
923
+ select.click();
924
+ await page.waitForChanges();
925
+ expect(await getMenuVisibility(page)).toBe("visible");
926
+ menuOptions = await menu.findAll("li");
927
+ expect(menuOptions).toHaveLength(1);
928
+ expect(menuOptions[0]).toEqualText("No results found");
929
+ });
930
+ it("should display no results state when search term matches none of the options", async () => {
931
+ const page = await newE2EPage();
932
+ await page.setContent(getTestSearchableSelect(searchableOptions));
933
+ await page.waitForChanges();
934
+ const select = await page.find("ic-select >>> #ic-select-input-0");
935
+ await select.press("z");
936
+ await page.waitForChanges();
937
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
938
+ const menuOptions = await menu.findAll("li");
939
+ expect(menuOptions).toHaveLength(1);
940
+ expect(menuOptions[0]).toEqualText("No results found");
941
+ });
942
+ it("should filter options accordingly when Backspace is pressed", async () => {
943
+ const page = await newE2EPage();
944
+ await page.setContent(getTestSearchableSelect(searchableOptions));
945
+ await page.waitForChanges();
946
+ const select = await page.find("ic-select >>> #ic-select-input-0");
947
+ await select.press("f");
948
+ await page.waitForChanges();
949
+ await select.press("i");
950
+ await page.waitForChanges();
951
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
952
+ let menuOptions = await menu.findAll("li");
953
+ expect(menuOptions).toHaveLength(1);
954
+ await select.press("Backspace");
955
+ await page.waitForChanges();
956
+ menuOptions = await menu.findAll("li");
957
+ expect(menuOptions).toHaveLength(2);
958
+ expect(menuOptions[0]).toEqualText("Filter");
959
+ expect(menuOptions[1]).toEqualText("Flat white");
960
+ });
961
+ it("should filter options when search match position is set to start", async () => {
962
+ const page = await newE2EPage();
963
+ await page.setContent(getTestSearchableSelect(searchableOptions));
964
+ const icSelect = await page.find("ic-select");
965
+ icSelect.setAttribute("search-match-position", "start");
966
+ await page.waitForChanges();
967
+ const select = await page.find("ic-select >>> #ic-select-input-0");
968
+ await select.press("c");
969
+ await page.waitForChanges();
970
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
971
+ const menuOptions = await menu.findAll("li");
972
+ expect(menuOptions).toHaveLength(1);
973
+ expect(menuOptions[0]).toEqualText("Cappuccino");
974
+ });
975
+ it("should include option descriptions in search", async () => {
976
+ const page = await newE2EPage();
977
+ const optionsWithDescription = `[
978
978
  { label: "Cappuccino", value: "Cap" },
979
979
  { label: "Latte", value: "Lat", description: "A milkier coffee than a cappuccino" },
980
980
  { label: "Americano", value: "Ame" },
@@ -983,23 +983,23 @@ describe("ic-select", () => {
983
983
  { label: "Mocha", value: "Moc" },
984
984
  { label: "Macchiato", value: "Mac" },
985
985
  ]`;
986
- await page.setContent(getTestSearchableSelect(optionsWithDescription));
987
- const icSelect = await page.find("ic-select");
988
- icSelect.setAttribute("include-descriptions-in-search", true);
989
- await page.waitForChanges();
990
- const select = await page.find("ic-select >>> #ic-select-input-0");
991
- await select.press("m");
992
- await page.waitForChanges();
993
- await select.press("i");
994
- await page.waitForChanges();
995
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
996
- const menuOptions = await menu.findAll("li");
997
- expect(menuOptions).toHaveLength(1);
998
- expect(menuOptions[0].textContent.substring(0, 5)).toEqualText("Latte");
999
- });
1000
- it("should not include group titles in search", async () => {
1001
- const page = await newE2EPage();
1002
- const groupedOptions = `[
986
+ await page.setContent(getTestSearchableSelect(optionsWithDescription));
987
+ const icSelect = await page.find("ic-select");
988
+ icSelect.setAttribute("include-descriptions-in-search", true);
989
+ await page.waitForChanges();
990
+ const select = await page.find("ic-select >>> #ic-select-input-0");
991
+ await select.press("m");
992
+ await page.waitForChanges();
993
+ await select.press("i");
994
+ await page.waitForChanges();
995
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
996
+ const menuOptions = await menu.findAll("li");
997
+ expect(menuOptions).toHaveLength(1);
998
+ expect(menuOptions[0].textContent.substring(0, 5)).toEqualText("Latte");
999
+ });
1000
+ it("should not include group titles in search", async () => {
1001
+ const page = await newE2EPage();
1002
+ const groupedOptions = `[
1003
1003
  {
1004
1004
  label: "Fancy",
1005
1005
  children: [
@@ -1015,19 +1015,19 @@ describe("ic-select", () => {
1015
1015
  ],
1016
1016
  },
1017
1017
  ]`;
1018
- await page.setContent(getTestSearchableSelect(groupedOptions));
1019
- await page.waitForChanges();
1020
- const select = await page.find("ic-select >>> #ic-select-input-0");
1021
- await select.press("b");
1022
- await page.waitForChanges();
1023
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1024
- const menuOptions = await menu.findAll("li");
1025
- expect(menuOptions).toHaveLength(1);
1026
- expect(menuOptions[0]).toEqualText("No results found");
1027
- });
1028
- it("should display whole group when group titles included in search", async () => {
1029
- const page = await newE2EPage();
1030
- const groupedOptions = `[
1018
+ await page.setContent(getTestSearchableSelect(groupedOptions));
1019
+ await page.waitForChanges();
1020
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1021
+ await select.press("b");
1022
+ await page.waitForChanges();
1023
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1024
+ const menuOptions = await menu.findAll("li");
1025
+ expect(menuOptions).toHaveLength(1);
1026
+ expect(menuOptions[0]).toEqualText("No results found");
1027
+ });
1028
+ it("should display whole group when group titles included in search", async () => {
1029
+ const page = await newE2EPage();
1030
+ const groupedOptions = `[
1031
1031
  {
1032
1032
  label: "Fancy",
1033
1033
  children: [
@@ -1043,453 +1043,453 @@ describe("ic-select", () => {
1043
1043
  ],
1044
1044
  },
1045
1045
  ]`;
1046
- await page.setContent(getTestSearchableSelect(groupedOptions));
1047
- const icSelect = await page.find("ic-select");
1048
- icSelect.setAttribute("include-group-titles-in-search", true);
1049
- await page.waitForChanges();
1050
- const select = await page.find("ic-select >>> #ic-select-input-0");
1051
- await select.press("b");
1052
- await page.waitForChanges();
1053
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1054
- const menuOptions = await menu.findAll("li");
1055
- expect(menuOptions).toHaveLength(2);
1056
- expect(menuOptions[0]).toEqualText("Filter");
1057
- expect(menuOptions[1]).toEqualText("Latte");
1058
- });
1059
- it("should display a clear button which clears the input when clicked", async () => {
1060
- const page = await newE2EPage();
1061
- await page.setContent(getTestSearchableSelect(searchableOptions));
1062
- await page.waitForChanges();
1063
- const icChange = await page.spyOnEvent("icChange");
1064
- let clearButton = await page.find("ic-select >>> .clear-button");
1065
- expect(clearButton).toBeNull();
1066
- const select = await page.find("ic-select >>> #ic-select-input-0");
1067
- await select.press("a");
1068
- await page.waitForChanges();
1069
- clearButton = await page.find("ic-select >>> .clear-button");
1070
- expect(clearButton).not.toBeNull();
1071
- await clearButton.click();
1072
- expect(select.textContent).toBe("");
1073
- expect(icChange).toHaveReceivedEventDetail({
1074
- value: null,
1075
- });
1076
- });
1077
- it("should emit the value as null when the input is changed after selecting an option", async () => {
1078
- const page = await newE2EPage();
1079
- await page.setContent(getTestSearchableSelect(searchableOptions));
1080
- await page.waitForChanges();
1081
- const icChange = await page.spyOnEvent("icChange");
1082
- const select = await page.find("ic-select >>> #ic-select-input-0");
1083
- await select.press("ArrowDown");
1084
- await page.waitForChanges();
1085
- await select.press("Enter");
1086
- await page.waitForChanges();
1087
- expect(icChange).toHaveReceivedEventDetail({
1088
- value: "Cap",
1089
- });
1090
- const clearButton = await page.find("ic-select >>> .clear-button");
1091
- await clearButton.click();
1092
- await page.waitForChanges();
1093
- expect(icChange).toHaveReceivedEventDetail({
1094
- value: null,
1095
- });
1096
- });
1097
- it("should still filter the options when the input is changed after selecting an option", async () => {
1098
- const page = await newE2EPage();
1099
- await page.setContent(getTestSearchableSelect(searchableOptions));
1100
- await page.waitForChanges();
1101
- const icChange = await page.spyOnEvent("icChange");
1102
- const select = await page.find("ic-select >>> #ic-select-input-0");
1103
- await select.press("ArrowDown");
1104
- await page.waitForChanges();
1105
- await select.press("Enter");
1106
- await page.waitForChanges();
1107
- expect(icChange).toHaveReceivedEventDetail({
1108
- value: "Cap",
1109
- });
1110
- for (let i = 0; i <= 7; i++) {
1111
- select.press("Backspace");
1112
- await page.waitForChanges();
1113
- }
1114
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1115
- const menuOptions = await menu.findAll("li");
1116
- await page.waitForChanges();
1117
- expect(menuOptions).toHaveLength(2);
1118
- expect(menuOptions[0]).toEqualText("Cappuccino");
1119
- expect(menuOptions[1]).toEqualText("Americano");
1120
- });
1121
- it("should close menu on blur", async () => {
1122
- const page = await newE2EPage();
1123
- await page.setContent(getTestSearchableSelect(searchableOptions));
1124
- await page.waitForChanges();
1125
- const select = await page.find("ic-select >>> #ic-select-input-0");
1126
- await select.click();
1127
- await page.waitForChanges();
1128
- expect(await getMenuVisibility(page)).toBe("visible");
1129
- await select.press("Tab");
1130
- expect(await getMenuVisibility(page)).toBe("hidden");
1131
- });
1132
- it("should emit icChange on delay", async () => {
1133
- const page = await newE2EPage();
1134
- await page.setContent(`<ic-select label="IC Select Test" debounce="500" searchable></ic-select>`);
1135
- await page.waitForChanges();
1136
- const icChange = await page.spyOnEvent("icChange");
1137
- await focusAndTypeIntoInput("foo", page);
1138
- await page.waitForTimeout(600);
1139
- expect(icChange).toHaveReceivedEventDetail({
1140
- value: "foo",
1141
- });
1142
- await focusAndTypeIntoInput("bar", page);
1143
- await page.waitForChanges();
1144
- await page.waitForTimeout(100);
1145
- expect(icChange).toHaveReceivedEventDetail({
1146
- value: "foo",
1147
- });
1148
- await page.waitForTimeout(500);
1149
- expect(icChange).toHaveReceivedEventDetail({
1150
- value: "foobar",
1151
- });
1152
- });
1153
- it("should update hidden input to value typed in select searchable input", async () => {
1154
- const page = await newE2EPage();
1155
- await page.setContent(getTestSearchableSelect(searchableOptions));
1156
- await page.waitForChanges();
1157
- await focusAndTypeIntoInput("bar", page);
1158
- await page.waitForChanges();
1159
- const hiddenInput = await page.find("input[type='hidden']");
1160
- expect(hiddenInput.getAttribute("value")).toBe("bar");
1161
- });
1162
- it("should keep typed in hidden input value when highlighting menu options", async () => {
1163
- const page = await newE2EPage();
1164
- await page.setContent(getTestSearchableSelect(searchableOptions));
1165
- await page.waitForChanges();
1166
- await focusAndTypeIntoInput("cap", page);
1167
- await page.waitForChanges();
1168
- let hiddenInput = await page.find("input[type='hidden']");
1169
- expect(hiddenInput.getAttribute("value")).toBe("cap");
1170
- await page.keyboard.press("ArrowDown");
1171
- await page.waitForChanges();
1172
- const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1173
- expect(menuListItems[0]).toHaveClass("focused-option");
1174
- hiddenInput = await page.find("input[type='hidden']");
1175
- expect(hiddenInput.getAttribute("value")).toBe("cap");
1176
- });
1177
- it("should update hidden value from typed to selected", async () => {
1178
- const page = await newE2EPage();
1179
- await page.setContent(getTestSearchableSelect(searchableOptions));
1180
- await page.waitForChanges();
1181
- await focusAndTypeIntoInput("o", page);
1182
- await page.waitForChanges();
1183
- const hiddenInput = await page.find("input[type='hidden']");
1184
- expect(hiddenInput.getAttribute("value")).toBe("o");
1185
- await page.keyboard.press("ArrowDown");
1186
- await page.waitForChanges();
1187
- const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1188
- expect(menuListItems[0]).toHaveClass("focused-option");
1189
- await page.keyboard.press("Enter");
1190
- await page.waitForChanges();
1191
- expect(hiddenInput.getAttribute("value")).toBe("Cap");
1192
- });
1193
- it("should update hidden value from typed to selected to typed", async () => {
1194
- const page = await newE2EPage();
1195
- await page.setContent(getTestSearchableSelect(searchableOptions));
1196
- await page.waitForChanges();
1197
- await focusAndTypeIntoInput("o", page);
1198
- await page.waitForChanges();
1199
- const hiddenInput = await page.find("input[type='hidden']");
1200
- expect(hiddenInput.getAttribute("value")).toBe("o");
1201
- await page.keyboard.press("ArrowDown");
1202
- await page.waitForChanges();
1203
- const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1204
- expect(menuListItems[0]).toHaveClass("focused-option");
1205
- await page.keyboard.press("Enter");
1206
- await page.waitForChanges();
1207
- expect(hiddenInput.getAttribute("value")).toBe("Cap");
1208
- await page.keyboard.press("1");
1209
- await page.waitForChanges();
1210
- expect(hiddenInput.getAttribute("value")).toBe("Cappuccino1");
1211
- });
1212
- it("should update the value of the input and options when passing the value directly", async () => {
1213
- const page = await newE2EPage();
1214
- await page.setContent(getTestSearchableSelect(searchableOptions));
1215
- await page.waitForChanges();
1216
- const select = await page.find("ic-select");
1217
- select.setAttribute("value", "foo");
1218
- await page.waitForChanges();
1219
- const selectInput = await page.find('ic-select >>> input[role="combobox"]');
1220
- expect(await selectInput.getProperty("value")).toBe("foo");
1221
- });
1222
- it("should trigger icChange on input for each typed value", async () => {
1223
- const page = await newE2EPage();
1224
- await page.setContent(getTestSearchableSelect(searchableOptions));
1225
- await page.waitForChanges();
1226
- const select = await page.find("ic-select");
1227
- const icChange = await select.spyOnEvent("icChange");
1228
- await focusAndTypeIntoInput("f", page);
1229
- await page.waitForChanges();
1230
- expect(icChange).toHaveReceivedEventDetail({
1231
- value: "f",
1232
- });
1233
- await focusAndTypeIntoInput("o", page);
1234
- await page.waitForChanges();
1235
- expect(icChange).toHaveReceivedEventDetail({
1236
- value: "fo",
1237
- });
1238
- await focusAndTypeIntoInput("o", page);
1239
- await page.waitForChanges();
1240
- expect(icChange).toHaveReceivedEventDetail({
1241
- value: "foo",
1242
- });
1243
- });
1244
- it("should not trigger icChange on highlighting menu items", async () => {
1245
- const page = await newE2EPage();
1246
- await page.setContent(getTestSearchableSelect(searchableOptions));
1247
- await page.waitForChanges();
1248
- const select = await page.find("ic-select");
1249
- const icChange = await select.spyOnEvent("icChange");
1250
- await page.$eval("ic-select", (el) => {
1251
- const input = el.shadowRoot.querySelector("input");
1252
- input.focus();
1253
- });
1254
- await page.waitForChanges();
1255
- await page.keyboard.press("ArrowDown");
1256
- await page.waitForChanges();
1257
- expect(icChange).not.toHaveReceivedEvent();
1258
- await page.keyboard.press("ArrowDown");
1259
- await page.waitForChanges();
1260
- expect(icChange).not.toHaveReceivedEvent();
1261
- });
1262
- it("should not select a menu option when typing into the searchable input field", async () => {
1263
- const page = await newE2EPage();
1264
- await page.setContent(getTestSearchableSelect(searchableOptions));
1265
- await page.waitForChanges();
1266
- await focusAndTypeIntoInput("Cap", page);
1267
- await page.waitForChanges();
1268
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1269
- expect(await getMenuVisibility(page)).toBe("visible");
1270
- const firstOption = await menu.findAll("li");
1271
- expect(firstOption[0]).not.toHaveClass("aria-selected");
1272
- });
1273
- it("should not selet a menu option when one has previously been set and backspace is pressed", async () => {
1274
- const page = await newE2EPage();
1275
- await page.setContent(getTestSearchableSelect(searchableOptions));
1276
- await page.waitForChanges();
1277
- await focusAndTypeIntoInput("Lat", page);
1278
- await page.waitForChanges();
1279
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1280
- expect(await getMenuVisibility(page)).toBe("visible");
1281
- await page.keyboard.press("ArrowDown");
1282
- await page.waitForChanges();
1283
- await page.keyboard.press("Enter");
1284
- await page.waitForChanges();
1285
- const inputValue = await page.$eval("ic-select", (el) => {
1286
- const input = el.shadowRoot.querySelector("input");
1287
- return input.value;
1288
- });
1289
- expect(inputValue).toBe("Latte");
1290
- await page.keyboard.press("Backspace");
1291
- await page.waitForChanges();
1292
- await page.keyboard.press("Backspace");
1293
- await page.waitForChanges();
1294
- const options = await menu.findAll("li");
1295
- options.forEach((option) => {
1296
- expect(option).not.toHaveClass("aria-selected");
1297
- });
1298
- });
1299
- it("should display selected option when selecting a menu option and then opening and closing the menu", async () => {
1300
- const page = await newE2EPage();
1301
- await page.setContent(getTestSearchableSelect(searchableOptions));
1302
- await page.waitForChanges();
1303
- await focusAndTypeIntoInput("Lat", page);
1304
- await page.waitForChanges();
1305
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1306
- expect(await getMenuVisibility(page)).toBe("visible");
1307
- await page.keyboard.press("ArrowDown");
1308
- await page.waitForChanges();
1309
- await page.keyboard.press("Enter");
1310
- await page.waitForChanges();
1311
- const inputValue = await page.$eval("ic-select", (el) => {
1312
- const input = el.shadowRoot.querySelector("input");
1313
- return input.value;
1314
- });
1315
- expect(inputValue).toBe("Latte");
1316
- await page.evaluate(() => {
1317
- const button = document.querySelector("button");
1318
- button.focus();
1319
- });
1320
- await page.waitForChanges();
1321
- expect(await getMenuVisibility(page)).toBe("hidden");
1322
- const select = await page.find("ic-select");
1323
- await select.click();
1324
- await page.keyboard.press("ArrowDown");
1325
- await page.waitForChanges();
1326
- const latteOption = await menu.find("li[data-value='Lat']");
1327
- expect(latteOption).toHaveAttribute("aria-selected");
1328
- });
1329
- it("hidden input value when on initial load with default value", async () => {
1330
- const page = await newE2EPage();
1331
- await page.setContent(getTestSelectSearchableFormReset(options));
1332
- await page.waitForChanges();
1333
- const hiddenInput = await page.find("ic-select > [name*='ic-select-input-0']");
1334
- expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1335
- });
1336
- it("should submit hidden input value when updating value, pressing reset to initial value and then submitting", async () => {
1337
- const page = await newE2EPage();
1338
- await page.setContent(getTestSelectSearchableFormReset(options));
1339
- await page.waitForChanges();
1340
- const hiddenInput = await page.find("ic-select > [name*='ic-select-input-0']");
1341
- expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1342
- const select = await page.find("ic-select >>> #ic-select-input-0");
1343
- await select.press("Backspace");
1344
- await page.waitForChanges();
1345
- expect(await getMenuVisibility(page)).toBe("visible");
1346
- await page.keyboard.press("ArrowDown");
1347
- await page.waitForChanges();
1348
- await page.keyboard.press("ArrowDown");
1349
- await page.waitForChanges();
1350
- await page.keyboard.press("Enter");
1351
- await page.waitForChanges();
1352
- expect(hiddenInput.getAttribute("value")).toBe("Test value 2");
1353
- await page.$eval("#resetButton", (el) => {
1354
- const reset = el;
1355
- reset.click();
1356
- });
1357
- await page.waitForChanges();
1358
- expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1359
- });
1360
- it("should scroll menu", async () => {
1361
- const page = await newE2EPage();
1362
- await page.setContent(getTestSearchableSelect(largeOptions));
1363
- await page.waitForChanges();
1364
- await focusAndTypeIntoInput("Test", page);
1365
- await page.waitForChanges();
1366
- expect(await getMenuVisibility(page)).toBe("visible");
1367
- await page.keyboard.press("ArrowDown");
1368
- await page.waitForChanges();
1369
- let menuScrollTop = await page.$eval("ic-select", (el) => {
1370
- const menu = el.shadowRoot.querySelector("ic-menu ul");
1371
- return menu.scrollTop;
1372
- });
1373
- expect(menuScrollTop).toBe(0);
1374
- await page.keyboard.press("Enter");
1375
- await page.waitForChanges();
1376
- const inputValue = await page.$eval("ic-select", (el) => {
1377
- const input = el.shadowRoot.querySelector("input");
1378
- return input.value;
1379
- });
1380
- expect(inputValue).toBe("Test label 1");
1381
- await page.$eval("ic-select", (el) => {
1382
- const input = el.shadowRoot.querySelector("input");
1383
- input.focus();
1384
- });
1385
- await page.waitForChanges();
1386
- await page.keyboard.press("ArrowUp");
1387
- await page.waitForChanges();
1388
- menuScrollTop = await page.$eval("ic-select", (el) => {
1389
- const menu = el.shadowRoot.querySelector("ic-menu ul");
1390
- return menu.scrollTop;
1391
- });
1392
- expect(menuScrollTop).not.toBe(0);
1393
- });
1394
- it("should only highlight and select enabled options in searchable with arrowDown", async () => {
1395
- const optionsWithDisabled = `[
1046
+ await page.setContent(getTestSearchableSelect(groupedOptions));
1047
+ const icSelect = await page.find("ic-select");
1048
+ icSelect.setAttribute("include-group-titles-in-search", true);
1049
+ await page.waitForChanges();
1050
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1051
+ await select.press("b");
1052
+ await page.waitForChanges();
1053
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1054
+ const menuOptions = await menu.findAll("li");
1055
+ expect(menuOptions).toHaveLength(2);
1056
+ expect(menuOptions[0]).toEqualText("Filter");
1057
+ expect(menuOptions[1]).toEqualText("Latte");
1058
+ });
1059
+ it("should display a clear button which clears the input when clicked", async () => {
1060
+ const page = await newE2EPage();
1061
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1062
+ await page.waitForChanges();
1063
+ const icChange = await page.spyOnEvent("icChange");
1064
+ let clearButton = await page.find("ic-select >>> .clear-button");
1065
+ expect(clearButton).toBeNull();
1066
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1067
+ await select.press("a");
1068
+ await page.waitForChanges();
1069
+ clearButton = await page.find("ic-select >>> .clear-button");
1070
+ expect(clearButton).not.toBeNull();
1071
+ await clearButton.click();
1072
+ expect(select.textContent).toBe("");
1073
+ expect(icChange).toHaveReceivedEventDetail({
1074
+ value: null,
1075
+ });
1076
+ });
1077
+ it("should emit the value as null when the input is changed after selecting an option", async () => {
1078
+ const page = await newE2EPage();
1079
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1080
+ await page.waitForChanges();
1081
+ const icChange = await page.spyOnEvent("icChange");
1082
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1083
+ await select.press("ArrowDown");
1084
+ await page.waitForChanges();
1085
+ await select.press("Enter");
1086
+ await page.waitForChanges();
1087
+ expect(icChange).toHaveReceivedEventDetail({
1088
+ value: "Cap",
1089
+ });
1090
+ const clearButton = await page.find("ic-select >>> .clear-button");
1091
+ await clearButton.click();
1092
+ await page.waitForChanges();
1093
+ expect(icChange).toHaveReceivedEventDetail({
1094
+ value: null,
1095
+ });
1096
+ });
1097
+ it("should still filter the options when the input is changed after selecting an option", async () => {
1098
+ const page = await newE2EPage();
1099
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1100
+ await page.waitForChanges();
1101
+ const icChange = await page.spyOnEvent("icChange");
1102
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1103
+ await select.press("ArrowDown");
1104
+ await page.waitForChanges();
1105
+ await select.press("Enter");
1106
+ await page.waitForChanges();
1107
+ expect(icChange).toHaveReceivedEventDetail({
1108
+ value: "Cap",
1109
+ });
1110
+ for (let i = 0; i <= 7; i++) {
1111
+ select.press("Backspace");
1112
+ await page.waitForChanges();
1113
+ }
1114
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1115
+ const menuOptions = await menu.findAll("li");
1116
+ await page.waitForChanges();
1117
+ expect(menuOptions).toHaveLength(2);
1118
+ expect(menuOptions[0]).toEqualText("Cappuccino");
1119
+ expect(menuOptions[1]).toEqualText("Americano");
1120
+ });
1121
+ it("should close menu on blur", async () => {
1122
+ const page = await newE2EPage();
1123
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1124
+ await page.waitForChanges();
1125
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1126
+ await select.click();
1127
+ await page.waitForChanges();
1128
+ expect(await getMenuVisibility(page)).toBe("visible");
1129
+ await select.press("Tab");
1130
+ expect(await getMenuVisibility(page)).toBe("hidden");
1131
+ });
1132
+ it("should emit icChange on delay", async () => {
1133
+ const page = await newE2EPage();
1134
+ await page.setContent(`<ic-select label="IC Select Test" debounce="500" searchable></ic-select>`);
1135
+ await page.waitForChanges();
1136
+ const icChange = await page.spyOnEvent("icChange");
1137
+ await focusAndTypeIntoInput("foo", page);
1138
+ await page.waitForTimeout(600);
1139
+ expect(icChange).toHaveReceivedEventDetail({
1140
+ value: "foo",
1141
+ });
1142
+ await focusAndTypeIntoInput("bar", page);
1143
+ await page.waitForChanges();
1144
+ await page.waitForTimeout(100);
1145
+ expect(icChange).toHaveReceivedEventDetail({
1146
+ value: "foo",
1147
+ });
1148
+ await page.waitForTimeout(500);
1149
+ expect(icChange).toHaveReceivedEventDetail({
1150
+ value: "foobar",
1151
+ });
1152
+ });
1153
+ it("should update hidden input to value typed in select searchable input", async () => {
1154
+ const page = await newE2EPage();
1155
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1156
+ await page.waitForChanges();
1157
+ await focusAndTypeIntoInput("bar", page);
1158
+ await page.waitForChanges();
1159
+ const hiddenInput = await page.find("input[type='hidden']");
1160
+ expect(hiddenInput.getAttribute("value")).toBe("bar");
1161
+ });
1162
+ it("should keep typed in hidden input value when highlighting menu options", async () => {
1163
+ const page = await newE2EPage();
1164
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1165
+ await page.waitForChanges();
1166
+ await focusAndTypeIntoInput("cap", page);
1167
+ await page.waitForChanges();
1168
+ let hiddenInput = await page.find("input[type='hidden']");
1169
+ expect(hiddenInput.getAttribute("value")).toBe("cap");
1170
+ await page.keyboard.press("ArrowDown");
1171
+ await page.waitForChanges();
1172
+ const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1173
+ expect(menuListItems[0]).toHaveClass("focused-option");
1174
+ hiddenInput = await page.find("input[type='hidden']");
1175
+ expect(hiddenInput.getAttribute("value")).toBe("cap");
1176
+ });
1177
+ it("should update hidden value from typed to selected", async () => {
1178
+ const page = await newE2EPage();
1179
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1180
+ await page.waitForChanges();
1181
+ await focusAndTypeIntoInput("o", page);
1182
+ await page.waitForChanges();
1183
+ const hiddenInput = await page.find("input[type='hidden']");
1184
+ expect(hiddenInput.getAttribute("value")).toBe("o");
1185
+ await page.keyboard.press("ArrowDown");
1186
+ await page.waitForChanges();
1187
+ const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1188
+ expect(menuListItems[0]).toHaveClass("focused-option");
1189
+ await page.keyboard.press("Enter");
1190
+ await page.waitForChanges();
1191
+ expect(hiddenInput.getAttribute("value")).toBe("Cap");
1192
+ });
1193
+ it("should update hidden value from typed to selected to typed", async () => {
1194
+ const page = await newE2EPage();
1195
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1196
+ await page.waitForChanges();
1197
+ await focusAndTypeIntoInput("o", page);
1198
+ await page.waitForChanges();
1199
+ const hiddenInput = await page.find("input[type='hidden']");
1200
+ expect(hiddenInput.getAttribute("value")).toBe("o");
1201
+ await page.keyboard.press("ArrowDown");
1202
+ await page.waitForChanges();
1203
+ const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1204
+ expect(menuListItems[0]).toHaveClass("focused-option");
1205
+ await page.keyboard.press("Enter");
1206
+ await page.waitForChanges();
1207
+ expect(hiddenInput.getAttribute("value")).toBe("Cap");
1208
+ await page.keyboard.press("1");
1209
+ await page.waitForChanges();
1210
+ expect(hiddenInput.getAttribute("value")).toBe("Cappuccino1");
1211
+ });
1212
+ it("should update the value of the input and options when passing the value directly", async () => {
1213
+ const page = await newE2EPage();
1214
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1215
+ await page.waitForChanges();
1216
+ const select = await page.find("ic-select");
1217
+ select.setAttribute("value", "foo");
1218
+ await page.waitForChanges();
1219
+ const selectInput = await page.find('ic-select >>> input[role="combobox"]');
1220
+ expect(await selectInput.getProperty("value")).toBe("foo");
1221
+ });
1222
+ it("should trigger icChange on input for each typed value", async () => {
1223
+ const page = await newE2EPage();
1224
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1225
+ await page.waitForChanges();
1226
+ const select = await page.find("ic-select");
1227
+ const icChange = await select.spyOnEvent("icChange");
1228
+ await focusAndTypeIntoInput("f", page);
1229
+ await page.waitForChanges();
1230
+ expect(icChange).toHaveReceivedEventDetail({
1231
+ value: "f",
1232
+ });
1233
+ await focusAndTypeIntoInput("o", page);
1234
+ await page.waitForChanges();
1235
+ expect(icChange).toHaveReceivedEventDetail({
1236
+ value: "fo",
1237
+ });
1238
+ await focusAndTypeIntoInput("o", page);
1239
+ await page.waitForChanges();
1240
+ expect(icChange).toHaveReceivedEventDetail({
1241
+ value: "foo",
1242
+ });
1243
+ });
1244
+ it("should not trigger icChange on highlighting menu items", async () => {
1245
+ const page = await newE2EPage();
1246
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1247
+ await page.waitForChanges();
1248
+ const select = await page.find("ic-select");
1249
+ const icChange = await select.spyOnEvent("icChange");
1250
+ await page.$eval("ic-select", (el) => {
1251
+ const input = el.shadowRoot.querySelector("input");
1252
+ input.focus();
1253
+ });
1254
+ await page.waitForChanges();
1255
+ await page.keyboard.press("ArrowDown");
1256
+ await page.waitForChanges();
1257
+ expect(icChange).not.toHaveReceivedEvent();
1258
+ await page.keyboard.press("ArrowDown");
1259
+ await page.waitForChanges();
1260
+ expect(icChange).not.toHaveReceivedEvent();
1261
+ });
1262
+ it("should not select a menu option when typing into the searchable input field", async () => {
1263
+ const page = await newE2EPage();
1264
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1265
+ await page.waitForChanges();
1266
+ await focusAndTypeIntoInput("Cap", page);
1267
+ await page.waitForChanges();
1268
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1269
+ expect(await getMenuVisibility(page)).toBe("visible");
1270
+ const firstOption = await menu.findAll("li");
1271
+ expect(firstOption[0]).not.toHaveClass("aria-selected");
1272
+ });
1273
+ it("should not selet a menu option when one has previously been set and backspace is pressed", async () => {
1274
+ const page = await newE2EPage();
1275
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1276
+ await page.waitForChanges();
1277
+ await focusAndTypeIntoInput("Lat", page);
1278
+ await page.waitForChanges();
1279
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1280
+ expect(await getMenuVisibility(page)).toBe("visible");
1281
+ await page.keyboard.press("ArrowDown");
1282
+ await page.waitForChanges();
1283
+ await page.keyboard.press("Enter");
1284
+ await page.waitForChanges();
1285
+ const inputValue = await page.$eval("ic-select", (el) => {
1286
+ const input = el.shadowRoot.querySelector("input");
1287
+ return input.value;
1288
+ });
1289
+ expect(inputValue).toBe("Latte");
1290
+ await page.keyboard.press("Backspace");
1291
+ await page.waitForChanges();
1292
+ await page.keyboard.press("Backspace");
1293
+ await page.waitForChanges();
1294
+ const options = await menu.findAll("li");
1295
+ options.forEach((option) => {
1296
+ expect(option).not.toHaveClass("aria-selected");
1297
+ });
1298
+ });
1299
+ it("should display selected option when selecting a menu option and then opening and closing the menu", async () => {
1300
+ const page = await newE2EPage();
1301
+ await page.setContent(getTestSearchableSelect(searchableOptions));
1302
+ await page.waitForChanges();
1303
+ await focusAndTypeIntoInput("Lat", page);
1304
+ await page.waitForChanges();
1305
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1306
+ expect(await getMenuVisibility(page)).toBe("visible");
1307
+ await page.keyboard.press("ArrowDown");
1308
+ await page.waitForChanges();
1309
+ await page.keyboard.press("Enter");
1310
+ await page.waitForChanges();
1311
+ const inputValue = await page.$eval("ic-select", (el) => {
1312
+ const input = el.shadowRoot.querySelector("input");
1313
+ return input.value;
1314
+ });
1315
+ expect(inputValue).toBe("Latte");
1316
+ await page.evaluate(() => {
1317
+ const button = document.querySelector("button");
1318
+ button.focus();
1319
+ });
1320
+ await page.waitForChanges();
1321
+ expect(await getMenuVisibility(page)).toBe("hidden");
1322
+ const select = await page.find("ic-select");
1323
+ await select.click();
1324
+ await page.keyboard.press("ArrowDown");
1325
+ await page.waitForChanges();
1326
+ const latteOption = await menu.find("li[data-value='Lat']");
1327
+ expect(latteOption).toHaveAttribute("aria-selected");
1328
+ });
1329
+ it("hidden input value when on initial load with default value", async () => {
1330
+ const page = await newE2EPage();
1331
+ await page.setContent(getTestSelectSearchableFormReset(options));
1332
+ await page.waitForChanges();
1333
+ const hiddenInput = await page.find("ic-select > [name*='ic-select-input-0']");
1334
+ expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1335
+ });
1336
+ it("should submit hidden input value when updating value, pressing reset to initial value and then submitting", async () => {
1337
+ const page = await newE2EPage();
1338
+ await page.setContent(getTestSelectSearchableFormReset(options));
1339
+ await page.waitForChanges();
1340
+ const hiddenInput = await page.find("ic-select > [name*='ic-select-input-0']");
1341
+ expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1342
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1343
+ await select.press("Backspace");
1344
+ await page.waitForChanges();
1345
+ expect(await getMenuVisibility(page)).toBe("visible");
1346
+ await page.keyboard.press("ArrowDown");
1347
+ await page.waitForChanges();
1348
+ await page.keyboard.press("ArrowDown");
1349
+ await page.waitForChanges();
1350
+ await page.keyboard.press("Enter");
1351
+ await page.waitForChanges();
1352
+ expect(hiddenInput.getAttribute("value")).toBe("Test value 2");
1353
+ await page.$eval("#resetButton", (el) => {
1354
+ const reset = el;
1355
+ reset.click();
1356
+ });
1357
+ await page.waitForChanges();
1358
+ expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1359
+ });
1360
+ it("should scroll menu", async () => {
1361
+ const page = await newE2EPage();
1362
+ await page.setContent(getTestSearchableSelect(largeOptions));
1363
+ await page.waitForChanges();
1364
+ await focusAndTypeIntoInput("Test", page);
1365
+ await page.waitForChanges();
1366
+ expect(await getMenuVisibility(page)).toBe("visible");
1367
+ await page.keyboard.press("ArrowDown");
1368
+ await page.waitForChanges();
1369
+ let menuScrollTop = await page.$eval("ic-select", (el) => {
1370
+ const menu = el.shadowRoot.querySelector("ic-menu ul");
1371
+ return menu.scrollTop;
1372
+ });
1373
+ expect(menuScrollTop).toBe(0);
1374
+ await page.keyboard.press("Enter");
1375
+ await page.waitForChanges();
1376
+ const inputValue = await page.$eval("ic-select", (el) => {
1377
+ const input = el.shadowRoot.querySelector("input");
1378
+ return input.value;
1379
+ });
1380
+ expect(inputValue).toBe("Test label 1");
1381
+ await page.$eval("ic-select", (el) => {
1382
+ const input = el.shadowRoot.querySelector("input");
1383
+ input.focus();
1384
+ });
1385
+ await page.waitForChanges();
1386
+ await page.keyboard.press("ArrowUp");
1387
+ await page.waitForChanges();
1388
+ menuScrollTop = await page.$eval("ic-select", (el) => {
1389
+ const menu = el.shadowRoot.querySelector("ic-menu ul");
1390
+ return menu.scrollTop;
1391
+ });
1392
+ expect(menuScrollTop).not.toBe(0);
1393
+ });
1394
+ it("should only highlight and select enabled options in searchable with arrowDown", async () => {
1395
+ const optionsWithDisabled = `[
1396
1396
  { label: 'Test label 1', value: 'Test value 1', disabled: true },
1397
1397
  { label: 'Test label 2', value: 'Test value 2' },
1398
1398
  { label: 'Test label 3', value: 'Test value 3', disabled: true },
1399
1399
  { label: 'Test label 4', value: 'Test value 4', disabled: true },
1400
1400
  { label: 'Test label 5', value: 'Test value 5' },
1401
1401
  ]`;
1402
- const page = await newE2EPage();
1403
- await page.setContent(getTestSearchableSelect(optionsWithDisabled));
1404
- await page.waitForChanges();
1405
- await focusAndTypeIntoInput("Test", page);
1406
- await page.waitForChanges();
1407
- expect(await getMenuVisibility(page)).toBe("visible");
1408
- await page.keyboard.press("ArrowDown");
1409
- await page.waitForChanges();
1410
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1411
- const menuItems = await menu.findAll("li");
1412
- expect(menuItems[0]).not.toHaveClass("focused-option");
1413
- expect(menuItems[1]).toHaveClass("focused-option");
1414
- await page.keyboard.press("Enter");
1415
- await page.waitForChanges();
1416
- let inputValue = await page.$eval("ic-select", (el) => {
1417
- const input = el.shadowRoot.querySelector("input");
1418
- return input.value;
1419
- });
1420
- expect(inputValue).toBe("Test label 2");
1421
- await page.keyboard.press("ArrowDown");
1422
- await page.waitForChanges();
1423
- await page.keyboard.press("ArrowDown");
1424
- await page.waitForChanges();
1425
- await page.keyboard.press("Enter");
1426
- await page.waitForChanges();
1427
- inputValue = await page.$eval("ic-select", (el) => {
1428
- const input = el.shadowRoot.querySelector("input");
1429
- return input.value;
1430
- });
1431
- expect(inputValue).toBe("Test label 5");
1432
- });
1433
- it("should only highlight and select enabled options in searchable with arrowUp", async () => {
1434
- const optionsWithDisabled = `[
1402
+ const page = await newE2EPage();
1403
+ await page.setContent(getTestSearchableSelect(optionsWithDisabled));
1404
+ await page.waitForChanges();
1405
+ await focusAndTypeIntoInput("Test", page);
1406
+ await page.waitForChanges();
1407
+ expect(await getMenuVisibility(page)).toBe("visible");
1408
+ await page.keyboard.press("ArrowDown");
1409
+ await page.waitForChanges();
1410
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1411
+ const menuItems = await menu.findAll("li");
1412
+ expect(menuItems[0]).not.toHaveClass("focused-option");
1413
+ expect(menuItems[1]).toHaveClass("focused-option");
1414
+ await page.keyboard.press("Enter");
1415
+ await page.waitForChanges();
1416
+ let inputValue = await page.$eval("ic-select", (el) => {
1417
+ const input = el.shadowRoot.querySelector("input");
1418
+ return input.value;
1419
+ });
1420
+ expect(inputValue).toBe("Test label 2");
1421
+ await page.keyboard.press("ArrowDown");
1422
+ await page.waitForChanges();
1423
+ await page.keyboard.press("ArrowDown");
1424
+ await page.waitForChanges();
1425
+ await page.keyboard.press("Enter");
1426
+ await page.waitForChanges();
1427
+ inputValue = await page.$eval("ic-select", (el) => {
1428
+ const input = el.shadowRoot.querySelector("input");
1429
+ return input.value;
1430
+ });
1431
+ expect(inputValue).toBe("Test label 5");
1432
+ });
1433
+ it("should only highlight and select enabled options in searchable with arrowUp", async () => {
1434
+ const optionsWithDisabled = `[
1435
1435
  { label: 'Test label 1', value: 'Test value 1', disabled: true },
1436
1436
  { label: 'Test label 2', value: 'Test value 2' },
1437
1437
  { label: 'Test label 3', value: 'Test value 3', disabled: true },
1438
1438
  { label: 'Test label 4', value: 'Test value 4', disabled: true },
1439
1439
  { label: 'Test label 5', value: 'Test value 5' },
1440
1440
  ]`;
1441
- const page = await newE2EPage();
1442
- await page.setContent(getTestSearchableSelect(optionsWithDisabled));
1443
- await page.waitForChanges();
1444
- await focusAndTypeIntoInput("Test", page);
1445
- await page.waitForChanges();
1446
- expect(await getMenuVisibility(page)).toBe("visible");
1447
- await page.keyboard.press("ArrowUp");
1448
- await page.waitForChanges();
1449
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1450
- const menuItems = await menu.findAll("li");
1451
- expect(menuItems[menuItems.length - 1]).toHaveClass("focused-option");
1452
- expect(menuItems[menuItems.length - 2]).not.toHaveClass("focused-option");
1453
- await page.keyboard.press("Enter");
1454
- await page.waitForChanges();
1455
- let inputValue = await page.$eval("ic-select", (el) => {
1456
- const input = el.shadowRoot.querySelector("input");
1457
- return input.value;
1458
- });
1459
- expect(inputValue).toBe("Test label 5");
1460
- await page.keyboard.press("ArrowUp");
1461
- await page.waitForChanges();
1462
- await page.keyboard.press("ArrowUp");
1463
- await page.waitForChanges();
1464
- await page.keyboard.press("Enter");
1465
- await page.waitForChanges();
1466
- inputValue = await page.$eval("ic-select", (el) => {
1467
- const input = el.shadowRoot.querySelector("input");
1468
- return input.value;
1469
- });
1470
- expect(inputValue).toBe("Test label 2");
1471
- });
1472
- describe("loading", () => {
1473
- it("should retry loading and keep the menu open when retry button is pressed with Spacebar", async () => {
1474
- const page = await newE2EPage();
1475
- await page.setContent(`<ic-select label="IC Select Test" searchable="true" options="[]" loading="true" timeout="500"></ic-select>`);
1476
- await page.waitForChanges();
1477
- const icRetryLoad = await page.spyOnEvent("icRetryLoad");
1478
- await page.waitForTimeout(560);
1479
- const firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
1480
- expect(firstOption).toEqualText("Loading Error");
1481
- const select = await page.find("ic-select >>> #ic-select-input-0");
1482
- await select.click();
1483
- await page.waitForChanges();
1484
- const retryButton = await page.find("ic-select >>> #retry-button");
1485
- await retryButton.press(" ");
1486
- await page.waitForChanges();
1487
- expect(icRetryLoad).toHaveReceivedEvent;
1488
- expect(await getMenuVisibility(page)).toBe("visible");
1489
- });
1490
- it("should cancel loading if the clear button is pressed mid-load", async () => {
1491
- const page = await newE2EPage();
1492
- await page.setContent(`<ic-select label="IC Select Test" searchable="true" timeout="500"></ic-select>
1441
+ const page = await newE2EPage();
1442
+ await page.setContent(getTestSearchableSelect(optionsWithDisabled));
1443
+ await page.waitForChanges();
1444
+ await focusAndTypeIntoInput("Test", page);
1445
+ await page.waitForChanges();
1446
+ expect(await getMenuVisibility(page)).toBe("visible");
1447
+ await page.keyboard.press("ArrowUp");
1448
+ await page.waitForChanges();
1449
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1450
+ const menuItems = await menu.findAll("li");
1451
+ expect(menuItems[menuItems.length - 1]).toHaveClass("focused-option");
1452
+ expect(menuItems[menuItems.length - 2]).not.toHaveClass("focused-option");
1453
+ await page.keyboard.press("Enter");
1454
+ await page.waitForChanges();
1455
+ let inputValue = await page.$eval("ic-select", (el) => {
1456
+ const input = el.shadowRoot.querySelector("input");
1457
+ return input.value;
1458
+ });
1459
+ expect(inputValue).toBe("Test label 5");
1460
+ await page.keyboard.press("ArrowUp");
1461
+ await page.waitForChanges();
1462
+ await page.keyboard.press("ArrowUp");
1463
+ await page.waitForChanges();
1464
+ await page.keyboard.press("Enter");
1465
+ await page.waitForChanges();
1466
+ inputValue = await page.$eval("ic-select", (el) => {
1467
+ const input = el.shadowRoot.querySelector("input");
1468
+ return input.value;
1469
+ });
1470
+ expect(inputValue).toBe("Test label 2");
1471
+ });
1472
+ describe("loading", () => {
1473
+ it("should retry loading and keep the menu open when retry button is pressed with Spacebar", async () => {
1474
+ const page = await newE2EPage();
1475
+ await page.setContent(`<ic-select label="IC Select Test" searchable="true" options="[]" loading="true" timeout="500"></ic-select>`);
1476
+ await page.waitForChanges();
1477
+ const icRetryLoad = await page.spyOnEvent("icRetryLoad");
1478
+ await page.waitForTimeout(560);
1479
+ const firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
1480
+ expect(firstOption).toEqualText("Loading Error");
1481
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1482
+ await select.click();
1483
+ await page.waitForChanges();
1484
+ const retryButton = await page.find("ic-select >>> #retry-button");
1485
+ await retryButton.press(" ");
1486
+ await page.waitForChanges();
1487
+ expect(icRetryLoad).toHaveReceivedEvent;
1488
+ expect(await getMenuVisibility(page)).toBe("visible");
1489
+ });
1490
+ it("should cancel loading if the clear button is pressed mid-load", async () => {
1491
+ const page = await newE2EPage();
1492
+ await page.setContent(`<ic-select label="IC Select Test" searchable="true" timeout="500"></ic-select>
1493
1493
  <script>
1494
1494
  var select = document.querySelector("ic-select");
1495
1495
  select.options = [];
@@ -1497,147 +1497,147 @@ describe("ic-select", () => {
1497
1497
  select.loading = "true";
1498
1498
  });
1499
1499
  </script>`);
1500
+ await page.waitForChanges();
1501
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1502
+ await select.press("c");
1503
+ await page.waitForChanges();
1504
+ let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
1505
+ expect(firstOption).toEqualText("Loading...");
1506
+ const clearButton = await page.find("ic-select >>> .clear-button");
1507
+ await clearButton.click();
1508
+ await page.waitForChanges();
1509
+ await page.waitForTimeout(560);
1510
+ firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
1511
+ expect(firstOption).toBeNull;
1512
+ });
1513
+ it("should render a No results message if no options are provided on render", async () => {
1514
+ const page = await newE2EPage();
1515
+ await page.setContent(getTestSearchableSelect(`[]`));
1516
+ await page.waitForChanges();
1517
+ const select = await page.find("ic-select >>> #ic-select-input-0");
1518
+ await select.click();
1519
+ await page.waitForChanges();
1520
+ const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1521
+ const menuOptions = await menu.findAll("li");
1522
+ expect(menuOptions).toHaveLength(1);
1523
+ expect(menuOptions[0]).toEqualText("No results found");
1524
+ });
1525
+ });
1526
+ });
1527
+ it("should reset to initial value on form reset", async () => {
1528
+ const page = await newE2EPage();
1529
+ await page.setContent(getTestSelectFormReset(options));
1500
1530
  await page.waitForChanges();
1531
+ let value = await page.$eval("ic-select", (el) => {
1532
+ const select = el;
1533
+ return select.value;
1534
+ });
1535
+ expect(value).toBe(undefined);
1501
1536
  const select = await page.find("ic-select >>> #ic-select-input-0");
1502
- await select.press("c");
1537
+ await select.press("Enter");
1503
1538
  await page.waitForChanges();
1504
- let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
1505
- expect(firstOption).toEqualText("Loading...");
1506
- const clearButton = await page.find("ic-select >>> .clear-button");
1507
- await clearButton.click();
1539
+ await select.press("ArrowDown");
1508
1540
  await page.waitForChanges();
1509
- await page.waitForTimeout(560);
1510
- firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
1511
- expect(firstOption).toBeNull;
1512
- });
1513
- it("should render a No results message if no options are provided on render", async () => {
1541
+ value = await page.$eval("ic-select", (el) => {
1542
+ const select = el;
1543
+ return select.value;
1544
+ });
1545
+ expect(value).toBe("Test value 1");
1546
+ await page.$eval("#resetButton", (el) => {
1547
+ const reset = el;
1548
+ reset.click();
1549
+ });
1550
+ await page.waitForChanges();
1551
+ value = await page.$eval("ic-select", (el) => {
1552
+ const select = el;
1553
+ return select.value;
1554
+ });
1555
+ expect(value).toBe(undefined);
1556
+ });
1557
+ it("menu should not be visible on initial load if setting default value and disable filter is set", async () => {
1558
+ const page = await newE2EPage();
1559
+ await page.setContent(getTestSearchableSelectAsync());
1560
+ await page.waitForChanges();
1561
+ await page.waitForTimeout(900);
1562
+ expect(await getMenuVisibility(page)).toBe("hidden");
1563
+ });
1564
+ it("should reset to initial value on form reset with searchable", async () => {
1514
1565
  const page = await newE2EPage();
1515
- await page.setContent(getTestSearchableSelect(`[]`));
1566
+ await page.setContent(getTestSelectSearchableFormReset(options));
1516
1567
  await page.waitForChanges();
1568
+ let value = await page.$eval("ic-select", (el) => {
1569
+ const select = el;
1570
+ return select.value;
1571
+ });
1572
+ expect(value).toBe("Test value 1");
1517
1573
  const select = await page.find("ic-select >>> #ic-select-input-0");
1518
- await select.click();
1574
+ await select.press("ArrowDown");
1519
1575
  await page.waitForChanges();
1520
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1521
- const menuOptions = await menu.findAll("li");
1522
- expect(menuOptions).toHaveLength(1);
1523
- expect(menuOptions[0]).toEqualText("No results found");
1524
- });
1525
- });
1526
- });
1527
- it("should reset to initial value on form reset", async () => {
1528
- const page = await newE2EPage();
1529
- await page.setContent(getTestSelectFormReset(options));
1530
- await page.waitForChanges();
1531
- let value = await page.$eval("ic-select", (el) => {
1532
- const select = el;
1533
- return select.value;
1534
- });
1535
- expect(value).toBe(undefined);
1536
- const select = await page.find("ic-select >>> #ic-select-input-0");
1537
- await select.press("Enter");
1538
- await page.waitForChanges();
1539
- await select.press("ArrowDown");
1540
- await page.waitForChanges();
1541
- value = await page.$eval("ic-select", (el) => {
1542
- const select = el;
1543
- return select.value;
1544
- });
1545
- expect(value).toBe("Test value 1");
1546
- await page.$eval("#resetButton", (el) => {
1547
- const reset = el;
1548
- reset.click();
1549
- });
1550
- await page.waitForChanges();
1551
- value = await page.$eval("ic-select", (el) => {
1552
- const select = el;
1553
- return select.value;
1554
- });
1555
- expect(value).toBe(undefined);
1556
- });
1557
- it("menu should not be visible on initial load if setting default value and disable filter is set", async () => {
1558
- const page = await newE2EPage();
1559
- await page.setContent(getTestSearchableSelectAsync());
1560
- await page.waitForChanges();
1561
- await page.waitForTimeout(900);
1562
- expect(await getMenuVisibility(page)).toBe("hidden");
1563
- });
1564
- it("should reset to initial value on form reset with searchable", async () => {
1565
- const page = await newE2EPage();
1566
- await page.setContent(getTestSelectSearchableFormReset(options));
1567
- await page.waitForChanges();
1568
- let value = await page.$eval("ic-select", (el) => {
1569
- const select = el;
1570
- return select.value;
1571
- });
1572
- expect(value).toBe("Test value 1");
1573
- const select = await page.find("ic-select >>> #ic-select-input-0");
1574
- await select.press("ArrowDown");
1575
- await page.waitForChanges();
1576
- await select.press("ArrowDown");
1577
- await page.waitForChanges();
1578
- await select.press("Enter");
1579
- await page.waitForChanges();
1580
- value = await page.$eval("ic-select", (el) => {
1581
- const select = el;
1582
- return select.value;
1583
- });
1584
- expect(value).toBe("Test value 2");
1585
- await page.$eval("#resetButton", (el) => {
1586
- const reset = el;
1587
- reset.click();
1588
- });
1589
- await page.waitForChanges();
1590
- value = await page.$eval("ic-select", (el) => {
1591
- const select = el;
1592
- return select.value;
1593
- });
1594
- expect(value).toBe("Test value 1");
1595
- });
1596
- let page;
1597
- describe("native", () => {
1598
- beforeEach(async () => {
1599
- page = await newE2EPage();
1600
- await page.setUserAgent("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");
1601
- await page.setViewport({
1602
- width: 375,
1603
- height: 667,
1604
- isMobile: true,
1605
- hasTouch: true,
1606
- });
1607
- });
1608
- it("should render", async () => {
1609
- await page.setContent(getTestSelect(options));
1610
- await page.waitForChanges();
1611
- const select = await page.find("ic-select >>> select");
1612
- expect(select).not.toBeNull();
1613
- });
1614
- it("should render a native select when searchable is applied on mobile", async () => {
1615
- await page.setContent(getTestSearchableSelect(options));
1616
- await page.waitForChanges();
1617
- const select = await page.find("ic-select >>> select");
1618
- expect(select).not.toBeNull();
1619
- });
1620
- it("should render when no options are provided", async () => {
1621
- await page.setContent(`<ic-select label="IC Select Test"></ic-select>`);
1622
- await page.waitForChanges();
1623
- const select = await page.find("ic-select >>> select");
1624
- expect(select).not.toBeNull();
1625
- });
1626
- it("should disable options correctly", async () => {
1627
- const optionsWithDisabled = `[
1576
+ await select.press("ArrowDown");
1577
+ await page.waitForChanges();
1578
+ await select.press("Enter");
1579
+ await page.waitForChanges();
1580
+ value = await page.$eval("ic-select", (el) => {
1581
+ const select = el;
1582
+ return select.value;
1583
+ });
1584
+ expect(value).toBe("Test value 2");
1585
+ await page.$eval("#resetButton", (el) => {
1586
+ const reset = el;
1587
+ reset.click();
1588
+ });
1589
+ await page.waitForChanges();
1590
+ value = await page.$eval("ic-select", (el) => {
1591
+ const select = el;
1592
+ return select.value;
1593
+ });
1594
+ expect(value).toBe("Test value 1");
1595
+ });
1596
+ let page;
1597
+ describe("native", () => {
1598
+ beforeEach(async () => {
1599
+ page = await newE2EPage();
1600
+ await page.setUserAgent("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");
1601
+ await page.setViewport({
1602
+ width: 375,
1603
+ height: 667,
1604
+ isMobile: true,
1605
+ hasTouch: true,
1606
+ });
1607
+ });
1608
+ it("should render", async () => {
1609
+ await page.setContent(getTestSelect(options));
1610
+ await page.waitForChanges();
1611
+ const select = await page.find("ic-select >>> select");
1612
+ expect(select).not.toBeNull();
1613
+ });
1614
+ it("should render a native select when searchable is applied on mobile", async () => {
1615
+ await page.setContent(getTestSearchableSelect(options));
1616
+ await page.waitForChanges();
1617
+ const select = await page.find("ic-select >>> select");
1618
+ expect(select).not.toBeNull();
1619
+ });
1620
+ it("should render when no options are provided", async () => {
1621
+ await page.setContent(`<ic-select label="IC Select Test"></ic-select>`);
1622
+ await page.waitForChanges();
1623
+ const select = await page.find("ic-select >>> select");
1624
+ expect(select).not.toBeNull();
1625
+ });
1626
+ it("should disable options correctly", async () => {
1627
+ const optionsWithDisabled = `[
1628
1628
  { label: 'Test label 1', value: 'Test value 1', disabled: true },
1629
1629
  { label: 'Test label 2', value: 'Test value 2' },
1630
1630
  { label: 'Test label 3', value: 'Test value 3' },
1631
1631
  ]`;
1632
- await page.setContent(getTestSelect(optionsWithDisabled));
1633
- await page.waitForChanges();
1634
- const optionsDisabled = await page.evaluate(() => Array.from(document
1635
- .querySelector("ic-select")
1636
- .shadowRoot.querySelectorAll("option"), (option) => option.disabled));
1637
- expect(optionsDisabled[0]).toBe(true);
1638
- });
1639
- it("should render options as <optgroup>s if they have children", async () => {
1640
- const groupedOptions = `[
1632
+ await page.setContent(getTestSelect(optionsWithDisabled));
1633
+ await page.waitForChanges();
1634
+ const optionsDisabled = await page.evaluate(() => Array.from(document
1635
+ .querySelector("ic-select")
1636
+ .shadowRoot.querySelectorAll("option"), (option) => option.disabled));
1637
+ expect(optionsDisabled[0]).toBe(true);
1638
+ });
1639
+ it("should render options as <optgroup>s if they have children", async () => {
1640
+ const groupedOptions = `[
1641
1641
  {
1642
1642
  label: 'Test group',
1643
1643
  children: [
@@ -1647,179 +1647,179 @@ describe("ic-select", () => {
1647
1647
  ],
1648
1648
  },
1649
1649
  ]`;
1650
- await page.setContent(getTestSelect(groupedOptions));
1651
- await page.waitForChanges();
1652
- const optGroup = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("optgroup"));
1653
- expect(optGroup).toBeTruthy();
1654
- });
1655
- it("should render a required <select> when required", async () => {
1656
- await page.setContent(getTestSelect(options));
1657
- const icSelect = await page.find("ic-select");
1658
- icSelect.setAttribute("required", true);
1659
- await page.waitForChanges();
1660
- const select = await page.find("ic-select >>> select");
1661
- expect(select).toHaveAttribute("required");
1662
- });
1663
- it("should not render a label when the 'hide-label' prop is supplied", async () => {
1664
- await page.setContent(getTestSelect(options));
1665
- const icSelect = await page.find("ic-select");
1666
- icSelect.setAttribute("hide-label", true);
1667
- await page.waitForChanges();
1668
- const label = await page.find("ic-select >>> ic-input-label");
1669
- expect(label).toBeNull();
1670
- });
1671
- it("should render a disabled <select> when the 'disabled' prop is supplied", async () => {
1672
- await page.setContent(getTestSelect(options));
1673
- const icSelect = await page.find("ic-select");
1674
- icSelect.setAttribute("disabled", true);
1675
- await page.waitForChanges();
1676
- const select = await page.find("ic-select >>> select");
1677
- expect(select).toHaveAttribute("disabled");
1678
- });
1679
- it("should render the selected value as text instead of rendering a <select> when read-only", async () => {
1680
- await page.setContent(getTestSelect(options));
1681
- const icSelect = await page.find("ic-select");
1682
- icSelect.setAttribute("value", "Test value 1");
1683
- icSelect.setAttribute("readonly", true);
1684
- await page.waitForChanges();
1685
- const select = await page.find("ic-select >>> select");
1686
- const typography = await page.evaluate(() => Array.from(document
1687
- .querySelector("ic-select")
1688
- .shadowRoot.querySelectorAll("ic-typography"), (typography) => typography.innerText));
1689
- expect(select).toBe(null);
1690
- expect(typography[1]).toBe("Test label 1");
1691
- });
1692
- it("should render the correct placeholder", async () => {
1693
- await page.setContent(getTestSelect(options));
1694
- const icSelect = await page.find("ic-select");
1695
- icSelect.setAttribute("placeholder", "Test placeholder");
1696
- await page.waitForChanges();
1697
- const optionLabels = await page.evaluate(() => Array.from(document
1698
- .querySelector("ic-select")
1699
- .shadowRoot.querySelectorAll("option"), (option) => option.innerText));
1700
- expect(optionLabels[0]).toEqual("Test placeholder");
1701
- });
1702
- it("should set aria-invalid if validation status is 'error'", async () => {
1703
- await page.setContent(getTestSelect(options));
1704
- const icSelect = await page.find("ic-select");
1705
- icSelect.setAttribute("validation-status", "error");
1706
- await page.waitForChanges();
1707
- const select = await page.find("ic-select >>> select");
1708
- expect(select).toHaveAttribute("aria-invalid");
1709
- });
1710
- it("should display the value passed in using the 'value' prop as the selected option", async () => {
1711
- await page.setContent(getTestSelect(options));
1712
- const icSelect = await page.find("ic-select");
1713
- icSelect.setAttribute("value", "Test value 1");
1714
- await page.waitForChanges();
1715
- const optionsSelected = await page.evaluate(() => Array.from(document
1716
- .querySelector("ic-select")
1717
- .shadowRoot.querySelectorAll("option"), (option) => option.selected));
1718
- expect(optionsSelected[1]).toBe(true);
1719
- });
1720
- it("should set the correct name on the hidden input", async () => {
1721
- await page.setContent(getTestSelect(options));
1722
- const icSelect = await page.find("ic-select");
1723
- icSelect.setAttribute("name", "Test name");
1724
- await page.waitForChanges();
1725
- const hiddenInput = await page.find("input");
1726
- const hiddenInputName = await hiddenInput.getProperty("name");
1727
- expect(hiddenInputName).toEqual("Test name");
1728
- });
1729
- it("should call icChange when the selected option is changed", async () => {
1730
- await page.setContent(getTestSelect(options));
1731
- await page.waitForChanges();
1732
- const icChange = await page.spyOnEvent("icChange");
1733
- const select = await page.find("ic-select >>> select");
1734
- await select.press("ArrowDown");
1735
- await select.press("Enter");
1736
- await page.waitForChanges();
1737
- expect(icChange).toHaveReceivedEventDetail({
1738
- value: "Test value 1",
1739
- });
1740
- });
1741
- it("should call icFocus when focused", async () => {
1742
- await page.setContent(getTestSelect(options));
1743
- await page.waitForChanges();
1744
- const icFocus = await page.spyOnEvent("icFocus");
1745
- await page.keyboard.down("Tab");
1746
- await page.waitForChanges();
1747
- expect(icFocus).toHaveReceivedEvent();
1748
- });
1749
- it("should call icBlur when it loses focus", async () => {
1750
- await page.setContent(getTestSelect(options));
1751
- await page.waitForChanges();
1752
- const icBlur = await page.spyOnEvent("icBlur");
1753
- await page.keyboard.down("Tab");
1754
- await page.keyboard.down("Tab");
1755
- await page.waitForChanges();
1756
- expect(icBlur).toHaveReceivedEvent();
1757
- });
1758
- it("should set the 'placeholder' class name if no option is selected", async () => {
1759
- await page.setContent(getTestSelect(options));
1760
- await page.waitForChanges();
1761
- const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1762
- .className);
1763
- expect(selectClassName).toBe("placeholder");
1764
- });
1765
- it("should set the text colour to the primary text colour if an option is selected", async () => {
1766
- await page.setContent(getTestSelect(options));
1767
- const icSelect = await page.find("ic-select");
1768
- icSelect.setAttribute("value", "Test value 1");
1769
- await page.waitForChanges();
1770
- const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1771
- .className);
1772
- expect(selectClassName).toBe("select-option-selected");
1773
- });
1774
- it("should change the text colour to the primary text colour when an option is selected", async () => {
1775
- await page.setContent(getTestSelect(options));
1776
- await page.waitForChanges();
1777
- const select = await page.find("ic-select >>> select");
1778
- await select.press("ArrowDown");
1779
- await select.press("Enter");
1780
- await page.waitForChanges();
1781
- const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1782
- .className);
1783
- expect(selectClassName).toBe("select-option-selected");
1784
- });
1785
- it("should add .menu-scroll to menu components when options height is over 320", async () => {
1786
- const page = await newE2EPage();
1787
- await page.setContent(getTestSelect(largeOptions));
1788
- await page.waitForChanges();
1789
- const select = await page.find("ic-select >>> button.select-input");
1790
- await select.click();
1791
- await page.waitForChanges();
1792
- const menuClasses = await page.evaluate(() => {
1793
- const menu = document
1794
- .querySelector("ic-select")
1795
- .shadowRoot.querySelector("ic-menu .menu");
1796
- return menu.classList;
1797
- });
1798
- expect(Object.values(menuClasses).includes("menu-scroll")).toBeTruthy();
1799
- });
1800
- it("should add .menu-scroll to menu components when options are initially set and then populated with large data set", async () => {
1801
- const page = await newE2EPage();
1802
- await page.setContent(getTestSelectAsync(options, largeOptions));
1803
- await page.waitForChanges();
1804
- const select = await page.find("ic-select >>> button.select-input");
1805
- await select.click();
1806
- await page.waitForChanges();
1807
- let menuClasses = await page.evaluate(() => {
1808
- const menu = document
1809
- .querySelector("ic-select")
1810
- .shadowRoot.querySelector("ic-menu .menu");
1811
- return menu.classList;
1812
- });
1813
- expect(Object.values(menuClasses).includes("menu-scroll")).toBeFalsy();
1814
- await page.waitForTimeout(1200);
1815
- menuClasses = await page.evaluate(() => {
1816
- const menu = document
1817
- .querySelector("ic-select")
1818
- .shadowRoot.querySelector("ic-menu .menu");
1819
- return menu.classList;
1820
- });
1821
- expect(Object.values(menuClasses).includes("menu-scroll")).toBeTruthy();
1650
+ await page.setContent(getTestSelect(groupedOptions));
1651
+ await page.waitForChanges();
1652
+ const optGroup = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("optgroup"));
1653
+ expect(optGroup).toBeTruthy();
1654
+ });
1655
+ it("should render a required <select> when required", async () => {
1656
+ await page.setContent(getTestSelect(options));
1657
+ const icSelect = await page.find("ic-select");
1658
+ icSelect.setAttribute("required", true);
1659
+ await page.waitForChanges();
1660
+ const select = await page.find("ic-select >>> select");
1661
+ expect(select).toHaveAttribute("required");
1662
+ });
1663
+ it("should not render a label when the 'hide-label' prop is supplied", async () => {
1664
+ await page.setContent(getTestSelect(options));
1665
+ const icSelect = await page.find("ic-select");
1666
+ icSelect.setAttribute("hide-label", true);
1667
+ await page.waitForChanges();
1668
+ const label = await page.find("ic-select >>> ic-input-label");
1669
+ expect(label).toBeNull();
1670
+ });
1671
+ it("should render a disabled <select> when the 'disabled' prop is supplied", async () => {
1672
+ await page.setContent(getTestSelect(options));
1673
+ const icSelect = await page.find("ic-select");
1674
+ icSelect.setAttribute("disabled", true);
1675
+ await page.waitForChanges();
1676
+ const select = await page.find("ic-select >>> select");
1677
+ expect(select).toHaveAttribute("disabled");
1678
+ });
1679
+ it("should render the selected value as text instead of rendering a <select> when read-only", async () => {
1680
+ await page.setContent(getTestSelect(options));
1681
+ const icSelect = await page.find("ic-select");
1682
+ icSelect.setAttribute("value", "Test value 1");
1683
+ icSelect.setAttribute("readonly", true);
1684
+ await page.waitForChanges();
1685
+ const select = await page.find("ic-select >>> select");
1686
+ const typography = await page.evaluate(() => Array.from(document
1687
+ .querySelector("ic-select")
1688
+ .shadowRoot.querySelectorAll("ic-typography"), (typography) => typography.innerText));
1689
+ expect(select).toBe(null);
1690
+ expect(typography[1]).toBe("Test label 1");
1691
+ });
1692
+ it("should render the correct placeholder", async () => {
1693
+ await page.setContent(getTestSelect(options));
1694
+ const icSelect = await page.find("ic-select");
1695
+ icSelect.setAttribute("placeholder", "Test placeholder");
1696
+ await page.waitForChanges();
1697
+ const optionLabels = await page.evaluate(() => Array.from(document
1698
+ .querySelector("ic-select")
1699
+ .shadowRoot.querySelectorAll("option"), (option) => option.innerText));
1700
+ expect(optionLabels[0]).toEqual("Test placeholder");
1701
+ });
1702
+ it("should set aria-invalid if validation status is 'error'", async () => {
1703
+ await page.setContent(getTestSelect(options));
1704
+ const icSelect = await page.find("ic-select");
1705
+ icSelect.setAttribute("validation-status", "error");
1706
+ await page.waitForChanges();
1707
+ const select = await page.find("ic-select >>> select");
1708
+ expect(select).toHaveAttribute("aria-invalid");
1709
+ });
1710
+ it("should display the value passed in using the 'value' prop as the selected option", async () => {
1711
+ await page.setContent(getTestSelect(options));
1712
+ const icSelect = await page.find("ic-select");
1713
+ icSelect.setAttribute("value", "Test value 1");
1714
+ await page.waitForChanges();
1715
+ const optionsSelected = await page.evaluate(() => Array.from(document
1716
+ .querySelector("ic-select")
1717
+ .shadowRoot.querySelectorAll("option"), (option) => option.selected));
1718
+ expect(optionsSelected[1]).toBe(true);
1719
+ });
1720
+ it("should set the correct name on the hidden input", async () => {
1721
+ await page.setContent(getTestSelect(options));
1722
+ const icSelect = await page.find("ic-select");
1723
+ icSelect.setAttribute("name", "Test name");
1724
+ await page.waitForChanges();
1725
+ const hiddenInput = await page.find("input");
1726
+ const hiddenInputName = await hiddenInput.getProperty("name");
1727
+ expect(hiddenInputName).toEqual("Test name");
1728
+ });
1729
+ it("should call icChange when the selected option is changed", async () => {
1730
+ await page.setContent(getTestSelect(options));
1731
+ await page.waitForChanges();
1732
+ const icChange = await page.spyOnEvent("icChange");
1733
+ const select = await page.find("ic-select >>> select");
1734
+ await select.press("ArrowDown");
1735
+ await select.press("Enter");
1736
+ await page.waitForChanges();
1737
+ expect(icChange).toHaveReceivedEventDetail({
1738
+ value: "Test value 1",
1739
+ });
1740
+ });
1741
+ it("should call icFocus when focused", async () => {
1742
+ await page.setContent(getTestSelect(options));
1743
+ await page.waitForChanges();
1744
+ const icFocus = await page.spyOnEvent("icFocus");
1745
+ await page.keyboard.down("Tab");
1746
+ await page.waitForChanges();
1747
+ expect(icFocus).toHaveReceivedEvent();
1748
+ });
1749
+ it("should call icBlur when it loses focus", async () => {
1750
+ await page.setContent(getTestSelect(options));
1751
+ await page.waitForChanges();
1752
+ const icBlur = await page.spyOnEvent("icBlur");
1753
+ await page.keyboard.down("Tab");
1754
+ await page.keyboard.down("Tab");
1755
+ await page.waitForChanges();
1756
+ expect(icBlur).toHaveReceivedEvent();
1757
+ });
1758
+ it("should set the 'placeholder' class name if no option is selected", async () => {
1759
+ await page.setContent(getTestSelect(options));
1760
+ await page.waitForChanges();
1761
+ const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1762
+ .className);
1763
+ expect(selectClassName).toBe("placeholder");
1764
+ });
1765
+ it("should set the text colour to the primary text colour if an option is selected", async () => {
1766
+ await page.setContent(getTestSelect(options));
1767
+ const icSelect = await page.find("ic-select");
1768
+ icSelect.setAttribute("value", "Test value 1");
1769
+ await page.waitForChanges();
1770
+ const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1771
+ .className);
1772
+ expect(selectClassName).toBe("select-option-selected");
1773
+ });
1774
+ it("should change the text colour to the primary text colour when an option is selected", async () => {
1775
+ await page.setContent(getTestSelect(options));
1776
+ await page.waitForChanges();
1777
+ const select = await page.find("ic-select >>> select");
1778
+ await select.press("ArrowDown");
1779
+ await select.press("Enter");
1780
+ await page.waitForChanges();
1781
+ const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1782
+ .className);
1783
+ expect(selectClassName).toBe("select-option-selected");
1784
+ });
1785
+ it("should add .menu-scroll to menu components when options height is over 320", async () => {
1786
+ const page = await newE2EPage();
1787
+ await page.setContent(getTestSelect(largeOptions));
1788
+ await page.waitForChanges();
1789
+ const select = await page.find("ic-select >>> button.select-input");
1790
+ await select.click();
1791
+ await page.waitForChanges();
1792
+ const menuClasses = await page.evaluate(() => {
1793
+ const menu = document
1794
+ .querySelector("ic-select")
1795
+ .shadowRoot.querySelector("ic-menu .menu");
1796
+ return menu.classList;
1797
+ });
1798
+ expect(Object.values(menuClasses).includes("menu-scroll")).toBeTruthy();
1799
+ });
1800
+ it("should add .menu-scroll to menu components when options are initially set and then populated with large data set", async () => {
1801
+ const page = await newE2EPage();
1802
+ await page.setContent(getTestSelectAsync(options, largeOptions));
1803
+ await page.waitForChanges();
1804
+ const select = await page.find("ic-select >>> button.select-input");
1805
+ await select.click();
1806
+ await page.waitForChanges();
1807
+ let menuClasses = await page.evaluate(() => {
1808
+ const menu = document
1809
+ .querySelector("ic-select")
1810
+ .shadowRoot.querySelector("ic-menu .menu");
1811
+ return menu.classList;
1812
+ });
1813
+ expect(Object.values(menuClasses).includes("menu-scroll")).toBeFalsy();
1814
+ await page.waitForTimeout(1200);
1815
+ menuClasses = await page.evaluate(() => {
1816
+ const menu = document
1817
+ .querySelector("ic-select")
1818
+ .shadowRoot.querySelector("ic-menu .menu");
1819
+ return menu.classList;
1820
+ });
1821
+ expect(Object.values(menuClasses).includes("menu-scroll")).toBeTruthy();
1822
+ });
1822
1823
  });
1823
- });
1824
1824
  });
1825
1825
  //# sourceMappingURL=ic-select.e2e.js.map