@ukic/web-components 2.7.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1117) 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 +121 -121
  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 +616 -607
  20. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-card.cjs.entry.js +106 -106
  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 +18 -18
  32. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-data-row.cjs.entry.js +75 -75
  34. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-dialog.cjs.entry.js +339 -318
  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 +682 -673
  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 +284 -284
  64. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-navigation-item.cjs.entry.js +153 -153
  66. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-navigation-menu.cjs.entry.js +106 -103
  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 +229 -260
  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 +475 -475
  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 +640 -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 +30 -30
  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 +78 -78
  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 +24 -24
  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 +209 -217
  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 -195
  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 +70 -67
  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 +73 -70
  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.css +3 -3
  148. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js +159 -159
  149. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js.map +1 -1
  150. package/dist/collection/components/ic-back-to-top/test/a11y/ic-back-to-top.test.a11y.js +14 -14
  151. package/dist/collection/components/ic-back-to-top/test/a11y/ic-back-to-top.test.a11y.js.map +1 -1
  152. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.e2e.js +43 -43
  153. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.e2e.js.map +1 -1
  154. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js +102 -102
  155. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js.map +1 -1
  156. package/dist/collection/components/ic-badge/ic-badge.js +385 -385
  157. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  158. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js +10 -10
  159. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js.map +1 -1
  160. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js +172 -172
  161. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js.map +1 -1
  162. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +9 -1
  163. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +186 -157
  164. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  165. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js +43 -43
  166. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js.map +1 -1
  167. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +250 -220
  168. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  169. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js +10 -10
  170. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js.map +1 -1
  171. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js +34 -34
  172. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js.map +1 -1
  173. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.spec.js +156 -118
  174. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.spec.js.map +1 -1
  175. package/dist/collection/components/ic-button/ic-button.css +17 -1
  176. package/dist/collection/components/ic-button/ic-button.js +798 -773
  177. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  178. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js +5 -5
  179. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js.map +1 -1
  180. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js +114 -114
  181. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js.map +1 -1
  182. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js +249 -236
  183. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js.map +1 -1
  184. package/dist/collection/components/ic-card/ic-card.css +1 -1
  185. package/dist/collection/components/ic-card/ic-card.js +375 -375
  186. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  187. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js +15 -15
  188. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js.map +1 -1
  189. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js +19 -19
  190. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js.map +1 -1
  191. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js +147 -147
  192. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js.map +1 -1
  193. package/dist/collection/components/ic-checkbox/ic-checkbox.css +11 -11
  194. package/dist/collection/components/ic-checkbox/ic-checkbox.js +474 -474
  195. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  196. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +302 -302
  197. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  198. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js +5 -5
  199. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js.map +1 -1
  200. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js +124 -124
  201. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js.map +1 -1
  202. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js +148 -148
  203. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js.map +1 -1
  204. package/dist/collection/components/ic-chip/ic-chip.css +9 -1
  205. package/dist/collection/components/ic-chip/ic-chip.js +291 -271
  206. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  207. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js +5 -5
  208. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js.map +1 -1
  209. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +81 -81
  210. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  211. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js +132 -132
  212. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js.map +1 -1
  213. package/dist/collection/components/ic-classification-banner/test/a11y/ic-classification-banner.test.a11y.js +5 -5
  214. package/dist/collection/components/ic-classification-banner/test/a11y/ic-classification-banner.test.a11y.js.map +1 -1
  215. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js +55 -55
  216. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js.map +1 -1
  217. package/dist/collection/components/ic-data-entity/ic-data-entity.css +1 -1
  218. package/dist/collection/components/ic-data-entity/ic-data-entity.js +92 -92
  219. package/dist/collection/components/ic-data-entity/ic-data-entity.js.map +1 -1
  220. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js +5 -5
  221. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js.map +1 -1
  222. package/dist/collection/components/ic-data-entity/test/basic/ic-data-entity.spec.js +28 -28
  223. package/dist/collection/components/ic-data-entity/test/basic/ic-data-entity.spec.js.map +1 -1
  224. package/dist/collection/components/ic-data-row/ic-data-row.css +1 -1
  225. package/dist/collection/components/ic-data-row/ic-data-row.js +170 -170
  226. package/dist/collection/components/ic-data-row/ic-data-row.js.map +1 -1
  227. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js +15 -13
  228. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js.map +1 -1
  229. package/dist/collection/components/ic-data-row/test/basic/ic-data-row.spec.js +61 -61
  230. package/dist/collection/components/ic-data-row/test/basic/ic-data-row.spec.js.map +1 -1
  231. package/dist/collection/components/ic-dialog/ic-dialog.css +56 -22
  232. package/dist/collection/components/ic-dialog/ic-dialog.js +765 -726
  233. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  234. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js +5 -5
  235. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js.map +1 -1
  236. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js +207 -126
  237. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js.map +1 -1
  238. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js +573 -574
  239. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js.map +1 -1
  240. package/dist/collection/components/ic-divider/ic-divider.js +38 -38
  241. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  242. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js +17 -17
  243. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js.map +1 -1
  244. package/dist/collection/components/ic-empty-state/ic-empty-state.js +151 -151
  245. package/dist/collection/components/ic-empty-state/ic-empty-state.js.map +1 -1
  246. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js +5 -5
  247. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js.map +1 -1
  248. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js +52 -52
  249. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js.map +1 -1
  250. package/dist/collection/components/ic-footer/ic-footer.js +242 -242
  251. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  252. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js +15 -13
  253. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js.map +1 -1
  254. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js +25 -25
  255. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js.map +1 -1
  256. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js +108 -108
  257. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js.map +1 -1
  258. package/dist/collection/components/ic-footer-link/ic-footer-link.js +190 -190
  259. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  260. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js +13 -13
  261. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js.map +1 -1
  262. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js +36 -36
  263. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js.map +1 -1
  264. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +107 -107
  265. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  266. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js +13 -13
  267. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js.map +1 -1
  268. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js +52 -52
  269. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js.map +1 -1
  270. package/dist/collection/components/ic-hero/ic-hero.js +292 -292
  271. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  272. package/dist/collection/components/ic-hero/test/a11y/ic-hero.test.a11y.js +5 -5
  273. package/dist/collection/components/ic-hero/test/a11y/ic-hero.test.a11y.js.map +1 -1
  274. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +62 -62
  275. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  276. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +241 -240
  277. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  278. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js +17 -15
  279. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js.map +1 -1
  280. package/dist/collection/components/ic-horizontal-scroll/test/basic/ic-horizontal-scroll.spec.js +145 -145
  281. package/dist/collection/components/ic-horizontal-scroll/test/basic/ic-horizontal-scroll.spec.js.map +1 -1
  282. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +4 -4
  283. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +248 -248
  284. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  285. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +49 -49
  286. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
  287. package/dist/collection/components/ic-input-container/ic-input-container.js +62 -62
  288. package/dist/collection/components/ic-input-container/ic-input-container.js.map +1 -1
  289. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js +19 -19
  290. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js.map +1 -1
  291. package/dist/collection/components/ic-input-label/ic-input-label.js +211 -211
  292. package/dist/collection/components/ic-input-label/ic-input-label.js.map +1 -1
  293. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js +37 -37
  294. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js.map +1 -1
  295. package/dist/collection/components/ic-input-validation/ic-input-validation.js +139 -139
  296. package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
  297. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js +31 -31
  298. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js.map +1 -1
  299. package/dist/collection/components/ic-link/ic-link.js +248 -248
  300. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  301. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js +5 -5
  302. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js.map +1 -1
  303. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js +92 -92
  304. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js.map +1 -1
  305. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +416 -415
  306. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  307. package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js +5 -5
  308. package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js.map +1 -1
  309. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js +25 -25
  310. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js.map +1 -1
  311. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js +114 -114
  312. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js.map +1 -1
  313. package/dist/collection/components/ic-menu/ic-menu.css +1 -5
  314. package/dist/collection/components/ic-menu/ic-menu.js +1271 -1213
  315. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  316. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +684 -667
  317. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  318. package/dist/collection/components/ic-menu-group/ic-menu-group.js +41 -41
  319. package/dist/collection/components/ic-menu-group/ic-menu-group.js.map +1 -1
  320. package/dist/collection/components/ic-menu-group/test/basic/ic-menu-group.spec.js +16 -16
  321. package/dist/collection/components/ic-menu-group/test/basic/ic-menu-group.spec.js.map +1 -1
  322. package/dist/collection/components/ic-menu-item/ic-menu-item.js +378 -378
  323. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  324. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js +67 -67
  325. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js.map +1 -1
  326. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +262 -259
  327. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  328. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js +41 -41
  329. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js.map +1 -1
  330. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +1 -1
  331. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +380 -380
  332. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  333. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js +14 -12
  334. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js.map +1 -1
  335. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js +242 -242
  336. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js.map +1 -1
  337. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +11 -5
  338. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +446 -446
  339. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  340. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js +14 -12
  341. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js.map +1 -1
  342. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +78 -78
  343. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  344. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.css +7 -3
  345. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +187 -184
  346. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  347. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js +25 -25
  348. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js.map +1 -1
  349. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.spec.js +104 -104
  350. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.spec.js.map +1 -1
  351. package/dist/collection/components/ic-page-header/ic-page-header.js +286 -286
  352. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  353. package/dist/collection/components/ic-page-header/test/a11y/ic-page-header.test.a11y.js +5 -5
  354. package/dist/collection/components/ic-page-header/test/a11y/ic-page-header.test.a11y.js.map +1 -1
  355. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.e2e.js +66 -66
  356. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.e2e.js.map +1 -1
  357. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js +82 -82
  358. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js.map +1 -1
  359. package/dist/collection/components/ic-pagination/ic-pagination.js +487 -482
  360. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  361. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js +5 -5
  362. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js.map +1 -1
  363. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.e2e.js +103 -103
  364. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.e2e.js.map +1 -1
  365. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +304 -303
  366. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  367. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +225 -225
  368. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  369. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +434 -465
  370. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  371. package/dist/collection/components/ic-popover-menu/test/a11y/ic-popover-menu.test.a11y.js +5 -5
  372. package/dist/collection/components/ic-popover-menu/test/a11y/ic-popover-menu.test.a11y.js.map +1 -1
  373. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js +29 -26
  374. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js.map +1 -1
  375. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js +283 -283
  376. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js.map +1 -1
  377. package/dist/collection/components/ic-radio-group/ic-radio-group.js +429 -429
  378. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  379. package/dist/collection/components/ic-radio-group/test/a11y/ic-radio-group.test.a11y.js +5 -5
  380. package/dist/collection/components/ic-radio-group/test/a11y/ic-radio-group.test.a11y.js.map +1 -1
  381. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js +218 -218
  382. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js.map +1 -1
  383. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +238 -238
  384. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  385. package/dist/collection/components/ic-radio-option/ic-radio-option.css +8 -8
  386. package/dist/collection/components/ic-radio-option/ic-radio-option.js +479 -479
  387. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  388. package/dist/collection/components/ic-search-bar/ic-search-bar.css +1 -1
  389. package/dist/collection/components/ic-search-bar/ic-search-bar.js +1381 -1381
  390. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  391. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js +5 -5
  392. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js.map +1 -1
  393. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +992 -1008
  394. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +1 -1
  395. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js +568 -568
  396. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js.map +1 -1
  397. package/dist/collection/components/ic-section-container/ic-section-container.js +70 -70
  398. package/dist/collection/components/ic-section-container/ic-section-container.js.map +1 -1
  399. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js +28 -28
  400. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js.map +1 -1
  401. package/dist/collection/components/ic-select/ic-select.css +1 -1
  402. package/dist/collection/components/ic-select/ic-select.js +1466 -1447
  403. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  404. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js +5 -5
  405. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js.map +1 -1
  406. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js +1563 -1562
  407. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js.map +1 -1
  408. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +1299 -1299
  409. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  410. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +675 -654
  411. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  412. package/dist/collection/components/ic-side-navigation/ic-side-navigation.types.js.map +1 -1
  413. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js +5 -5
  414. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js.map +1 -1
  415. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js +463 -464
  416. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js.map +1 -1
  417. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js +143 -143
  418. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js.map +1 -1
  419. package/dist/collection/components/ic-skeleton/ic-skeleton.js +127 -127
  420. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  421. package/dist/collection/components/ic-skeleton/test/a11y/ic-skeleton.test.a11y.js +5 -5
  422. package/dist/collection/components/ic-skeleton/test/a11y/ic-skeleton.test.a11y.js.map +1 -1
  423. package/dist/collection/components/ic-skeleton/test/basic/ic-skeleton.spec.js +38 -38
  424. package/dist/collection/components/ic-skeleton/test/basic/ic-skeleton.spec.js.map +1 -1
  425. package/dist/collection/components/ic-status-tag/ic-status-tag.css +4 -4
  426. package/dist/collection/components/ic-status-tag/ic-status-tag.js +194 -194
  427. package/dist/collection/components/ic-status-tag/ic-status-tag.js.map +1 -1
  428. package/dist/collection/components/ic-status-tag/test/a11y/ic-status-tag.test.a11y.js +5 -5
  429. package/dist/collection/components/ic-status-tag/test/a11y/ic-status-tag.test.a11y.js.map +1 -1
  430. package/dist/collection/components/ic-status-tag/test/basic/ic-status-tag.spec.js +14 -14
  431. package/dist/collection/components/ic-status-tag/test/basic/ic-status-tag.spec.js.map +1 -1
  432. package/dist/collection/components/ic-step/ic-step.css +7 -1
  433. package/dist/collection/components/ic-step/ic-step.js +385 -385
  434. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  435. package/dist/collection/components/ic-step/test/basic/ic-step.spec.js +87 -87
  436. package/dist/collection/components/ic-step/test/basic/ic-step.spec.js.map +1 -1
  437. package/dist/collection/components/ic-stepper/ic-stepper.js +306 -306
  438. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  439. package/dist/collection/components/ic-stepper/test/a11y/ic-stepper.test.a11y.js +10 -10
  440. package/dist/collection/components/ic-stepper/test/a11y/ic-stepper.test.a11y.js.map +1 -1
  441. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js +36 -36
  442. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js.map +1 -1
  443. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js +350 -350
  444. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js.map +1 -1
  445. package/dist/collection/components/ic-switch/ic-switch.css +3 -2
  446. package/dist/collection/components/ic-switch/ic-switch.js +355 -355
  447. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  448. package/dist/collection/components/ic-switch/test/a11y/ic-switch.test.a11y.js +5 -5
  449. package/dist/collection/components/ic-switch/test/a11y/ic-switch.test.a11y.js.map +1 -1
  450. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js +88 -88
  451. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js.map +1 -1
  452. package/dist/collection/components/ic-tab/ic-tab.js +350 -350
  453. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  454. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js +26 -26
  455. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js.map +1 -1
  456. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js +93 -93
  457. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js.map +1 -1
  458. package/dist/collection/components/ic-tab-context/ic-tab-context.js +442 -441
  459. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  460. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js +5 -5
  461. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js.map +1 -1
  462. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js +213 -213
  463. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js.map +1 -1
  464. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js +250 -250
  465. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js.map +1 -1
  466. package/dist/collection/components/ic-tab-group/ic-tab-group.css +1 -1
  467. package/dist/collection/components/ic-tab-group/ic-tab-group.js +117 -117
  468. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  469. package/dist/collection/components/ic-tab-panel/ic-tab-panel.css +444 -1
  470. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +191 -191
  471. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  472. package/dist/collection/components/ic-tab-panel/test/basic/ic-tab-panel.spec.js +29 -29
  473. package/dist/collection/components/ic-tab-panel/test/basic/ic-tab-panel.spec.js.map +1 -1
  474. package/dist/collection/components/ic-text-field/ic-text-field.js +1114 -1122
  475. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  476. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js +5 -5
  477. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js.map +1 -1
  478. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js +94 -94
  479. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js.map +1 -1
  480. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js +194 -194
  481. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js.map +1 -1
  482. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js +92 -92
  483. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js.map +1 -1
  484. package/dist/collection/components/ic-theme/ic-theme.js +99 -99
  485. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  486. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js +65 -65
  487. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js.map +1 -1
  488. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js +53 -53
  489. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js.map +1 -1
  490. package/dist/collection/components/ic-toast/ic-toast.js +368 -368
  491. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  492. package/dist/collection/components/ic-toast/test/a11y/ic-toast.test.a11y.js +10 -10
  493. package/dist/collection/components/ic-toast/test/a11y/ic-toast.test.a11y.js.map +1 -1
  494. package/dist/collection/components/ic-toast/test/basic/ic-toast.e2e.js +66 -66
  495. package/dist/collection/components/ic-toast/test/basic/ic-toast.e2e.js.map +1 -1
  496. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +180 -180
  497. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  498. package/dist/collection/components/ic-toast-region/ic-toast-region.js +115 -110
  499. package/dist/collection/components/ic-toast-region/ic-toast-region.js.map +1 -1
  500. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js +58 -58
  501. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js.map +1 -1
  502. package/dist/collection/components/ic-tooltip/ic-tooltip.css +2 -2
  503. package/dist/collection/components/ic-tooltip/ic-tooltip.js +347 -329
  504. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  505. package/dist/collection/components/ic-tooltip/test/a11y/ic-tooltip.test.a11y.js +5 -5
  506. package/dist/collection/components/ic-tooltip/test/a11y/ic-tooltip.test.a11y.js.map +1 -1
  507. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js +105 -105
  508. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js.map +1 -1
  509. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js +276 -276
  510. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js.map +1 -1
  511. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +3 -7
  512. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +432 -414
  513. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  514. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js +20 -18
  515. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js.map +1 -1
  516. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js +43 -43
  517. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js.map +1 -1
  518. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js +191 -191
  519. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js.map +1 -1
  520. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js +187 -172
  521. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js.map +1 -1
  522. package/dist/collection/components/ic-typography/ic-typography.js +270 -270
  523. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  524. package/dist/collection/components/ic-typography/test/a11y/ic-typography.test.a11y.js +5 -5
  525. package/dist/collection/components/ic-typography/test/a11y/ic-typography.test.a11y.js.map +1 -1
  526. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js +25 -25
  527. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js.map +1 -1
  528. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js +276 -276
  529. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js.map +1 -1
  530. package/dist/collection/testspec.setup.js +32 -32
  531. package/dist/collection/testspec.setup.js.map +1 -1
  532. package/dist/collection/utils/constants.js +55 -55
  533. package/dist/collection/utils/constants.js.map +1 -1
  534. package/dist/collection/utils/helpers.js +235 -235
  535. package/dist/collection/utils/helpers.js.map +1 -1
  536. package/dist/collection/utils/testa11y.helpers.js +2 -2
  537. package/dist/collection/utils/testa11y.helpers.js.map +1 -1
  538. package/dist/collection/utils/types.js +6 -6
  539. package/dist/collection/utils/types.js.map +1 -1
  540. package/dist/components/helpers.js +290 -290
  541. package/dist/components/helpers.js.map +1 -1
  542. package/dist/components/ic-accordion-group.d.ts +2 -2
  543. package/dist/components/ic-accordion-group.js +112 -112
  544. package/dist/components/ic-accordion-group.js.map +1 -1
  545. package/dist/components/ic-accordion.d.ts +2 -2
  546. package/dist/components/ic-accordion.js +125 -125
  547. package/dist/components/ic-accordion.js.map +1 -1
  548. package/dist/components/ic-alert.d.ts +2 -2
  549. package/dist/components/ic-alert2.js +98 -98
  550. package/dist/components/ic-alert2.js.map +1 -1
  551. package/dist/components/ic-back-to-top.d.ts +2 -2
  552. package/dist/components/ic-back-to-top.js +144 -144
  553. package/dist/components/ic-back-to-top.js.map +1 -1
  554. package/dist/components/ic-badge.d.ts +2 -2
  555. package/dist/components/ic-badge.js +174 -174
  556. package/dist/components/ic-badge.js.map +1 -1
  557. package/dist/components/ic-breadcrumb-group.d.ts +2 -2
  558. package/dist/components/ic-breadcrumb-group.js +199 -192
  559. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  560. package/dist/components/ic-breadcrumb.d.ts +2 -2
  561. package/dist/components/ic-breadcrumb2.js +78 -75
  562. package/dist/components/ic-breadcrumb2.js.map +1 -1
  563. package/dist/components/ic-button.d.ts +2 -2
  564. package/dist/components/ic-button2.js +312 -304
  565. package/dist/components/ic-button2.js.map +1 -1
  566. package/dist/components/ic-card.d.ts +2 -2
  567. package/dist/components/ic-card.js +156 -156
  568. package/dist/components/ic-card.js.map +1 -1
  569. package/dist/components/ic-checkbox-group.d.ts +2 -2
  570. package/dist/components/ic-checkbox-group.js +97 -97
  571. package/dist/components/ic-checkbox-group.js.map +1 -1
  572. package/dist/components/ic-checkbox.d.ts +2 -2
  573. package/dist/components/ic-checkbox.js +131 -131
  574. package/dist/components/ic-checkbox.js.map +1 -1
  575. package/dist/components/ic-chip.d.ts +2 -2
  576. package/dist/components/ic-chip.js +99 -96
  577. package/dist/components/ic-chip.js.map +1 -1
  578. package/dist/components/ic-classification-banner.d.ts +2 -2
  579. package/dist/components/ic-classification-banner.js +47 -47
  580. package/dist/components/ic-classification-banner.js.map +1 -1
  581. package/dist/components/ic-data-entity.d.ts +2 -2
  582. package/dist/components/ic-data-entity.js +40 -40
  583. package/dist/components/ic-data-entity.js.map +1 -1
  584. package/dist/components/ic-data-row.d.ts +2 -2
  585. package/dist/components/ic-data-row.js +98 -98
  586. package/dist/components/ic-data-row.js.map +1 -1
  587. package/dist/components/ic-dialog.d.ts +2 -2
  588. package/dist/components/ic-dialog.js +400 -378
  589. package/dist/components/ic-dialog.js.map +1 -1
  590. package/dist/components/ic-divider.d.ts +2 -2
  591. package/dist/components/ic-divider2.js +28 -28
  592. package/dist/components/ic-divider2.js.map +1 -1
  593. package/dist/components/ic-empty-state.d.ts +2 -2
  594. package/dist/components/ic-empty-state.js +47 -47
  595. package/dist/components/ic-empty-state.js.map +1 -1
  596. package/dist/components/ic-footer-link-group.d.ts +2 -2
  597. package/dist/components/ic-footer-link-group.js +82 -82
  598. package/dist/components/ic-footer-link-group.js.map +1 -1
  599. package/dist/components/ic-footer-link.d.ts +2 -2
  600. package/dist/components/ic-footer-link.js +71 -71
  601. package/dist/components/ic-footer-link.js.map +1 -1
  602. package/dist/components/ic-footer.d.ts +2 -2
  603. package/dist/components/ic-footer.js +108 -108
  604. package/dist/components/ic-footer.js.map +1 -1
  605. package/dist/components/ic-hero.d.ts +2 -2
  606. package/dist/components/ic-hero.js +98 -98
  607. package/dist/components/ic-hero.js.map +1 -1
  608. package/dist/components/ic-horizontal-scroll.d.ts +2 -2
  609. package/dist/components/ic-horizontal-scroll2.js +189 -189
  610. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  611. package/dist/components/ic-input-component-container.d.ts +2 -2
  612. package/dist/components/ic-input-component-container2.js +62 -62
  613. package/dist/components/ic-input-component-container2.js.map +1 -1
  614. package/dist/components/ic-input-container.d.ts +2 -2
  615. package/dist/components/ic-input-container2.js +28 -28
  616. package/dist/components/ic-input-container2.js.map +1 -1
  617. package/dist/components/ic-input-label.d.ts +2 -2
  618. package/dist/components/ic-input-label2.js +62 -62
  619. package/dist/components/ic-input-label2.js.map +1 -1
  620. package/dist/components/ic-input-validation.d.ts +2 -2
  621. package/dist/components/ic-input-validation2.js +50 -50
  622. package/dist/components/ic-input-validation2.js.map +1 -1
  623. package/dist/components/ic-link.d.ts +2 -2
  624. package/dist/components/ic-link2.js +76 -76
  625. package/dist/components/ic-link2.js.map +1 -1
  626. package/dist/components/ic-loading-indicator.d.ts +2 -2
  627. package/dist/components/ic-loading-indicator2.js +211 -210
  628. package/dist/components/ic-loading-indicator2.js.map +1 -1
  629. package/dist/components/ic-menu-group.d.ts +2 -2
  630. package/dist/components/ic-menu-group.js +30 -30
  631. package/dist/components/ic-menu-group.js.map +1 -1
  632. package/dist/components/ic-menu-item.d.ts +2 -2
  633. package/dist/components/ic-menu-item2.js +144 -144
  634. package/dist/components/ic-menu-item2.js.map +1 -1
  635. package/dist/components/ic-menu.d.ts +2 -2
  636. package/dist/components/ic-menu2.js +694 -682
  637. package/dist/components/ic-menu2.js.map +1 -1
  638. package/dist/components/ic-navigation-button.d.ts +2 -2
  639. package/dist/components/ic-navigation-button.js +121 -118
  640. package/dist/components/ic-navigation-button.js.map +1 -1
  641. package/dist/components/ic-navigation-group.d.ts +2 -2
  642. package/dist/components/ic-navigation-group.js +311 -311
  643. package/dist/components/ic-navigation-group.js.map +1 -1
  644. package/dist/components/ic-navigation-item.d.ts +2 -2
  645. package/dist/components/ic-navigation-item.js +195 -195
  646. package/dist/components/ic-navigation-item.js.map +1 -1
  647. package/dist/components/ic-navigation-menu.d.ts +2 -2
  648. package/dist/components/ic-navigation-menu2.js +140 -137
  649. package/dist/components/ic-navigation-menu2.js.map +1 -1
  650. package/dist/components/ic-page-header.d.ts +2 -2
  651. package/dist/components/ic-page-header.js +147 -147
  652. package/dist/components/ic-page-header.js.map +1 -1
  653. package/dist/components/ic-pagination-item.d.ts +2 -2
  654. package/dist/components/ic-pagination-item2.js +67 -67
  655. package/dist/components/ic-pagination-item2.js.map +1 -1
  656. package/dist/components/ic-pagination.d.ts +2 -2
  657. package/dist/components/ic-pagination.js +253 -252
  658. package/dist/components/ic-pagination.js.map +1 -1
  659. package/dist/components/ic-popover-menu.d.ts +2 -2
  660. package/dist/components/ic-popover-menu.js +278 -309
  661. package/dist/components/ic-popover-menu.js.map +1 -1
  662. package/dist/components/ic-radio-group.d.ts +2 -2
  663. package/dist/components/ic-radio-group.js +200 -200
  664. package/dist/components/ic-radio-group.js.map +1 -1
  665. package/dist/components/ic-radio-option.d.ts +2 -2
  666. package/dist/components/ic-radio-option.js +163 -163
  667. package/dist/components/ic-radio-option.js.map +1 -1
  668. package/dist/components/ic-search-bar.d.ts +2 -2
  669. package/dist/components/ic-search-bar.js +581 -581
  670. package/dist/components/ic-search-bar.js.map +1 -1
  671. package/dist/components/ic-section-container.d.ts +2 -2
  672. package/dist/components/ic-section-container2.js +31 -31
  673. package/dist/components/ic-section-container2.js.map +1 -1
  674. package/dist/components/ic-select.d.ts +2 -2
  675. package/dist/components/ic-select.js +752 -750
  676. package/dist/components/ic-select.js.map +1 -1
  677. package/dist/components/ic-side-navigation.d.ts +2 -2
  678. package/dist/components/ic-side-navigation.js +479 -481
  679. package/dist/components/ic-side-navigation.js.map +1 -1
  680. package/dist/components/ic-skeleton.d.ts +2 -2
  681. package/dist/components/ic-skeleton.js +64 -64
  682. package/dist/components/ic-skeleton.js.map +1 -1
  683. package/dist/components/ic-status-tag.d.ts +2 -2
  684. package/dist/components/ic-status-tag.js +54 -54
  685. package/dist/components/ic-status-tag.js.map +1 -1
  686. package/dist/components/ic-step.d.ts +2 -2
  687. package/dist/components/ic-step.js +157 -157
  688. package/dist/components/ic-step.js.map +1 -1
  689. package/dist/components/ic-stepper.d.ts +2 -2
  690. package/dist/components/ic-stepper.js +223 -223
  691. package/dist/components/ic-stepper.js.map +1 -1
  692. package/dist/components/ic-switch.d.ts +2 -2
  693. package/dist/components/ic-switch.js +115 -115
  694. package/dist/components/ic-switch.js.map +1 -1
  695. package/dist/components/ic-tab-context.d.ts +2 -2
  696. package/dist/components/ic-tab-context.js +271 -271
  697. package/dist/components/ic-tab-context.js.map +1 -1
  698. package/dist/components/ic-tab-group.d.ts +2 -2
  699. package/dist/components/ic-tab-group.js +65 -65
  700. package/dist/components/ic-tab-group.js.map +1 -1
  701. package/dist/components/ic-tab-panel.d.ts +2 -2
  702. package/dist/components/ic-tab-panel.js +48 -48
  703. package/dist/components/ic-tab-panel.js.map +1 -1
  704. package/dist/components/ic-tab.d.ts +2 -2
  705. package/dist/components/ic-tab.js +112 -112
  706. package/dist/components/ic-tab.js.map +1 -1
  707. package/dist/components/ic-text-field.d.ts +2 -2
  708. package/dist/components/ic-text-field2.js +292 -300
  709. package/dist/components/ic-text-field2.js.map +1 -1
  710. package/dist/components/ic-theme.d.ts +2 -2
  711. package/dist/components/ic-theme.js +65 -65
  712. package/dist/components/ic-theme.js.map +1 -1
  713. package/dist/components/ic-toast-region.d.ts +2 -2
  714. package/dist/components/ic-toast-region.js +63 -62
  715. package/dist/components/ic-toast-region.js.map +1 -1
  716. package/dist/components/ic-toast.d.ts +2 -2
  717. package/dist/components/ic-toast.js +187 -187
  718. package/dist/components/ic-toast.js.map +1 -1
  719. package/dist/components/ic-tooltip.d.ts +2 -2
  720. package/dist/components/ic-tooltip2.js +214 -212
  721. package/dist/components/ic-tooltip2.js.map +1 -1
  722. package/dist/components/ic-top-navigation.d.ts +2 -2
  723. package/dist/components/ic-top-navigation.js +263 -260
  724. package/dist/components/ic-top-navigation.js.map +1 -1
  725. package/dist/components/ic-typography.d.ts +2 -2
  726. package/dist/components/ic-typography2.js +142 -142
  727. package/dist/components/ic-typography2.js.map +1 -1
  728. package/dist/components/types.js +6 -6
  729. package/dist/components/types.js.map +1 -1
  730. package/dist/core/core.css +2 -2
  731. package/dist/core/core.esm.js +1 -1
  732. package/dist/core/core.esm.js.map +1 -1
  733. package/dist/core/p-02159742.entry.js +2 -0
  734. package/dist/core/p-02159742.entry.js.map +1 -0
  735. package/dist/core/p-056f8a67.entry.js +2 -0
  736. package/dist/core/p-056f8a67.entry.js.map +1 -0
  737. package/dist/core/{p-08b59078.entry.js → p-11736fbe.entry.js} +2 -2
  738. package/dist/core/{p-ba495175.entry.js → p-15466b42.entry.js} +2 -2
  739. package/dist/core/{p-ba495175.entry.js.map → p-15466b42.entry.js.map} +1 -1
  740. package/dist/core/{p-eb063498.entry.js → p-15624e08.entry.js} +2 -2
  741. package/dist/core/p-15624e08.entry.js.map +1 -0
  742. package/dist/core/{p-5fcd202e.entry.js → p-15ef0674.entry.js} +2 -2
  743. package/dist/core/{p-88ea1e49.entry.js → p-180e36b1.entry.js} +2 -2
  744. package/dist/core/p-22c024ee.entry.js +2 -0
  745. package/dist/core/p-22c024ee.entry.js.map +1 -0
  746. package/dist/core/{p-613aa265.js → p-26b7b18f.js} +1 -1
  747. package/dist/core/{p-932fb4b7.entry.js → p-287ab47c.entry.js} +2 -2
  748. package/dist/core/{p-69948c3e.entry.js → p-2b24b4bf.entry.js} +2 -2
  749. package/dist/core/p-31969be6.entry.js +2 -0
  750. package/dist/core/p-31969be6.entry.js.map +1 -0
  751. package/dist/core/{p-475b7bd2.entry.js → p-335fc5e4.entry.js} +2 -2
  752. package/dist/core/{p-c9ef9f5c.entry.js → p-366bcb17.entry.js} +2 -2
  753. package/dist/core/{p-ed256f1d.entry.js → p-3a0ef91e.entry.js} +2 -2
  754. package/dist/core/p-498eb7ad.entry.js +2 -0
  755. package/dist/core/p-498eb7ad.entry.js.map +1 -0
  756. package/dist/core/p-51f9f329.entry.js +2 -0
  757. package/dist/core/p-51f9f329.entry.js.map +1 -0
  758. package/dist/core/{p-f019219c.entry.js → p-529d8955.entry.js} +2 -2
  759. package/dist/core/p-52e063d3.js +3 -0
  760. package/dist/core/p-52e063d3.js.map +1 -0
  761. package/dist/core/p-5c7e339f.entry.js +2 -0
  762. package/dist/core/p-5c7e339f.entry.js.map +1 -0
  763. package/dist/core/p-5f9d69ef.entry.js +2 -0
  764. package/dist/core/p-5f9d69ef.entry.js.map +1 -0
  765. package/dist/core/{p-2c30b583.entry.js → p-60c4604f.entry.js} +2 -2
  766. package/dist/core/p-6bc431b2.entry.js +2 -0
  767. package/dist/core/p-6bc431b2.entry.js.map +1 -0
  768. package/dist/core/{p-ccac1730.entry.js → p-6d3f9501.entry.js} +2 -2
  769. package/dist/core/{p-536b3c97.entry.js → p-6eb0421d.entry.js} +2 -2
  770. package/dist/core/{p-48525498.entry.js → p-765bdd98.entry.js} +2 -2
  771. package/dist/core/{p-3a814fc4.entry.js → p-7f887c1e.entry.js} +2 -2
  772. package/dist/core/{p-752f0f9a.entry.js → p-8a83f391.entry.js} +2 -2
  773. package/dist/core/p-8a83f391.entry.js.map +1 -0
  774. package/dist/core/{p-e3bffcae.entry.js → p-94e88827.entry.js} +2 -2
  775. package/dist/core/{p-8fb4f0c0.js → p-95a864bf.js} +2 -2
  776. package/dist/core/{p-c0c62df4.entry.js → p-9639e33f.entry.js} +2 -2
  777. package/dist/core/p-9639e33f.entry.js.map +1 -0
  778. package/dist/core/p-96da1e85.entry.js +2 -0
  779. package/dist/core/p-96da1e85.entry.js.map +1 -0
  780. package/dist/core/p-988991d3.entry.js +2 -0
  781. package/dist/core/p-988991d3.entry.js.map +1 -0
  782. package/dist/core/{p-0c82048e.entry.js → p-9c30720d.entry.js} +2 -2
  783. package/dist/core/p-aa0a9870.entry.js +2 -0
  784. package/dist/core/p-aa0a9870.entry.js.map +1 -0
  785. package/dist/core/{p-76563540.entry.js → p-ad36a704.entry.js} +2 -2
  786. package/dist/core/p-b0088956.entry.js +2 -0
  787. package/dist/core/p-b0088956.entry.js.map +1 -0
  788. package/dist/core/p-b39ecae2.entry.js +2 -0
  789. package/dist/core/p-b39ecae2.entry.js.map +1 -0
  790. package/dist/core/{p-2265e418.entry.js → p-b6a575c3.entry.js} +2 -2
  791. package/dist/core/{p-fbc8a739.entry.js → p-b9736cf4.entry.js} +2 -2
  792. package/dist/core/{p-025f9d2a.entry.js → p-b99f9e89.entry.js} +2 -2
  793. package/dist/core/{p-b0ce60a0.entry.js → p-c2452388.entry.js} +2 -2
  794. package/dist/core/{p-345fe84a.entry.js → p-c770e7a2.entry.js} +2 -2
  795. package/dist/core/p-ca178add.entry.js +2 -0
  796. package/dist/core/p-ca178add.entry.js.map +1 -0
  797. package/dist/core/p-ca48e97a.entry.js +2 -0
  798. package/dist/core/p-ca48e97a.entry.js.map +1 -0
  799. package/dist/core/p-cd8de4c5.entry.js +2 -0
  800. package/dist/core/p-cd8de4c5.entry.js.map +1 -0
  801. package/dist/core/{p-a4397df4.entry.js → p-cfc930f6.entry.js} +2 -2
  802. package/dist/core/{p-3a15202f.entry.js → p-d18450f9.entry.js} +2 -2
  803. package/dist/core/p-d18450f9.entry.js.map +1 -0
  804. package/dist/core/p-daebb58a.entry.js +2 -0
  805. package/dist/core/p-daebb58a.entry.js.map +1 -0
  806. package/dist/core/p-dbb5b008.entry.js +2 -0
  807. package/dist/core/p-dbb5b008.entry.js.map +1 -0
  808. package/dist/core/p-e278242f.entry.js +2 -0
  809. package/dist/core/p-e278242f.entry.js.map +1 -0
  810. package/dist/core/{p-af9f1caa.entry.js → p-e5abfadd.entry.js} +2 -2
  811. package/dist/core/p-e5abfadd.entry.js.map +1 -0
  812. package/dist/core/{p-41c6eaa1.entry.js → p-e9738c74.entry.js} +2 -2
  813. package/dist/core/p-ea17e371.entry.js +2 -0
  814. package/dist/core/p-ea17e371.entry.js.map +1 -0
  815. package/dist/core/{p-e2fd542e.entry.js → p-edd29edc.entry.js} +2 -2
  816. package/dist/core/p-edec0936.entry.js +2 -0
  817. package/dist/core/p-edec0936.entry.js.map +1 -0
  818. package/dist/core/p-ee97e2a5.entry.js +2 -0
  819. package/dist/core/p-ee97e2a5.entry.js.map +1 -0
  820. package/dist/core/{p-8b18346a.entry.js → p-f0809037.entry.js} +2 -2
  821. package/dist/core/p-f0809037.entry.js.map +1 -0
  822. package/dist/core/{p-5bb6c79b.entry.js → p-f2e6b9ef.entry.js} +2 -2
  823. package/dist/core/{p-cf4bacee.entry.js → p-fdb4b48f.entry.js} +2 -2
  824. package/dist/esm/core.js +4 -4
  825. package/dist/esm/core.js.map +1 -1
  826. package/dist/esm/{helpers-24f6e762.js → helpers-c597f246.js} +292 -292
  827. package/dist/esm/helpers-c597f246.js.map +1 -0
  828. package/dist/esm/ic-accordion-group.entry.js +71 -71
  829. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  830. package/dist/esm/ic-accordion.entry.js +99 -99
  831. package/dist/esm/ic-accordion.entry.js.map +1 -1
  832. package/dist/esm/ic-alert.entry.js +58 -58
  833. package/dist/esm/ic-alert.entry.js.map +1 -1
  834. package/dist/esm/ic-back-to-top.entry.js +121 -121
  835. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  836. package/dist/esm/ic-badge.entry.js +146 -146
  837. package/dist/esm/ic-badge.entry.js.map +1 -1
  838. package/dist/esm/ic-breadcrumb-group.entry.js +172 -166
  839. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  840. package/dist/esm/ic-breadcrumb.entry.js +55 -53
  841. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  842. package/dist/esm/ic-button_3.entry.js +616 -607
  843. package/dist/esm/ic-button_3.entry.js.map +1 -1
  844. package/dist/esm/ic-card.entry.js +106 -106
  845. package/dist/esm/ic-card.entry.js.map +1 -1
  846. package/dist/esm/ic-checkbox-group.entry.js +60 -60
  847. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  848. package/dist/esm/ic-checkbox.entry.js +95 -95
  849. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  850. package/dist/esm/ic-chip.entry.js +67 -65
  851. package/dist/esm/ic-chip.entry.js.map +1 -1
  852. package/dist/esm/ic-classification-banner.entry.js +23 -23
  853. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  854. package/dist/esm/ic-data-entity.entry.js +18 -18
  855. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  856. package/dist/esm/ic-data-row.entry.js +75 -75
  857. package/dist/esm/ic-data-row.entry.js.map +1 -1
  858. package/dist/esm/ic-dialog.entry.js +339 -318
  859. package/dist/esm/ic-dialog.entry.js.map +1 -1
  860. package/dist/esm/ic-divider.entry.js +16 -16
  861. package/dist/esm/ic-divider.entry.js.map +1 -1
  862. package/dist/esm/ic-empty-state.entry.js +24 -24
  863. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  864. package/dist/esm/ic-footer-link-group.entry.js +55 -55
  865. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  866. package/dist/esm/ic-footer-link.entry.js +50 -50
  867. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  868. package/dist/esm/ic-footer.entry.js +78 -78
  869. package/dist/esm/ic-footer.entry.js.map +1 -1
  870. package/dist/esm/ic-hero.entry.js +62 -62
  871. package/dist/esm/ic-hero.entry.js.map +1 -1
  872. package/dist/esm/ic-horizontal-scroll.entry.js +151 -151
  873. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  874. package/dist/esm/ic-input-component-container_3.entry.js +682 -673
  875. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  876. package/dist/esm/ic-input-label_2.entry.js +63 -63
  877. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  878. package/dist/esm/ic-link.entry.js +55 -55
  879. package/dist/esm/ic-link.entry.js.map +1 -1
  880. package/dist/esm/ic-menu-group.entry.js +12 -12
  881. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  882. package/dist/esm/ic-menu-item.entry.js +100 -100
  883. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  884. package/dist/esm/ic-navigation-button.entry.js +79 -76
  885. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  886. package/dist/esm/ic-navigation-group.entry.js +284 -284
  887. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  888. package/dist/esm/ic-navigation-item.entry.js +153 -153
  889. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  890. package/dist/esm/ic-navigation-menu.entry.js +106 -103
  891. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  892. package/dist/esm/ic-page-header.entry.js +93 -93
  893. package/dist/esm/ic-page-header.entry.js.map +1 -1
  894. package/dist/esm/ic-pagination-item.entry.js +42 -42
  895. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  896. package/dist/esm/ic-pagination.entry.js +196 -195
  897. package/dist/esm/ic-pagination.entry.js.map +1 -1
  898. package/dist/esm/ic-popover-menu.entry.js +229 -260
  899. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  900. package/dist/esm/ic-radio-group.entry.js +156 -156
  901. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  902. package/dist/esm/ic-radio-option.entry.js +128 -128
  903. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  904. package/dist/esm/ic-search-bar.entry.js +475 -475
  905. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  906. package/dist/esm/ic-section-container.entry.js +15 -15
  907. package/dist/esm/ic-section-container.entry.js.map +1 -1
  908. package/dist/esm/ic-select.entry.js +640 -639
  909. package/dist/esm/ic-select.entry.js.map +1 -1
  910. package/dist/esm/ic-side-navigation.entry.js +424 -426
  911. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  912. package/dist/esm/ic-skeleton.entry.js +43 -43
  913. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  914. package/dist/esm/ic-status-tag.entry.js +30 -30
  915. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  916. package/dist/esm/ic-step.entry.js +121 -121
  917. package/dist/esm/ic-step.entry.js.map +1 -1
  918. package/dist/esm/ic-stepper.entry.js +200 -200
  919. package/dist/esm/ic-stepper.entry.js.map +1 -1
  920. package/dist/esm/ic-switch.entry.js +78 -78
  921. package/dist/esm/ic-switch.entry.js.map +1 -1
  922. package/dist/esm/ic-tab-context.entry.js +252 -252
  923. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  924. package/dist/esm/ic-tab-group.entry.js +24 -24
  925. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  926. package/dist/esm/ic-tab-panel.entry.js +31 -31
  927. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  928. package/dist/esm/ic-tab.entry.js +86 -86
  929. package/dist/esm/ic-tab.entry.js.map +1 -1
  930. package/dist/esm/ic-text-field.entry.js +209 -217
  931. package/dist/esm/ic-text-field.entry.js.map +1 -1
  932. package/dist/esm/ic-theme.entry.js +51 -51
  933. package/dist/esm/ic-theme.entry.js.map +1 -1
  934. package/dist/esm/ic-toast-region.entry.js +47 -46
  935. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  936. package/dist/esm/ic-toast.entry.js +145 -145
  937. package/dist/esm/ic-toast.entry.js.map +1 -1
  938. package/dist/esm/ic-top-navigation.entry.js +198 -195
  939. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  940. package/dist/esm/ic-typography.entry.js +118 -118
  941. package/dist/esm/ic-typography.entry.js.map +1 -1
  942. package/dist/{cjs/index-4f8c900f.js → esm/index-05003e1c.js} +603 -407
  943. package/dist/esm/index-05003e1c.js.map +1 -0
  944. package/dist/esm/loader.js +3 -3
  945. package/dist/esm/types-6f6b41a5.js +16 -0
  946. package/dist/esm/{types-b2398b37.js.map → types-6f6b41a5.js.map} +1 -1
  947. package/dist/node.d.ts +12 -0
  948. package/dist/types/components/ic-accordion/ic-accordion.d.ts +48 -48
  949. package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +30 -30
  950. package/dist/types/components/ic-alert/ic-alert.d.ts +40 -40
  951. package/dist/types/components/ic-back-to-top/ic-back-to-top.d.ts +23 -23
  952. package/dist/types/components/ic-badge/ic-badge.d.ts +57 -57
  953. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.d.ts +30 -25
  954. package/dist/types/components/ic-breadcrumb-group/ic-breadcrumb-group.d.ts +43 -38
  955. package/dist/types/components/ic-button/ic-button.d.ts +142 -137
  956. package/dist/types/components/ic-card/ic-card.d.ts +68 -68
  957. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +91 -91
  958. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +50 -50
  959. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.types.d.ts +6 -6
  960. package/dist/types/components/ic-chip/ic-chip.d.ts +50 -46
  961. package/dist/types/components/ic-classification-banner/ic-classification-banner.d.ts +21 -21
  962. package/dist/types/components/ic-data-entity/ic-data-entity.d.ts +14 -14
  963. package/dist/types/components/ic-data-row/ic-data-row.d.ts +34 -34
  964. package/dist/types/components/ic-dialog/ic-dialog.d.ts +139 -128
  965. package/dist/types/components/ic-divider/ic-divider.d.ts +3 -3
  966. package/dist/types/components/ic-empty-state/ic-empty-state.d.ts +27 -27
  967. package/dist/types/components/ic-footer/ic-footer.d.ts +41 -41
  968. package/dist/types/components/ic-footer-link/ic-footer-link.d.ts +35 -35
  969. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +17 -17
  970. package/dist/types/components/ic-hero/ic-hero.d.ts +51 -51
  971. package/dist/types/components/ic-horizontal-scroll/ic-horizontal-scroll.d.ts +41 -41
  972. package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +42 -42
  973. package/dist/types/components/ic-input-container/ic-input-container.d.ts +9 -9
  974. package/dist/types/components/ic-input-label/ic-input-label.d.ts +38 -38
  975. package/dist/types/components/ic-input-validation/ic-input-validation.d.ts +23 -23
  976. package/dist/types/components/ic-link/ic-link.d.ts +44 -44
  977. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +76 -76
  978. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.types.d.ts +3 -3
  979. package/dist/types/components/ic-menu/ic-menu.d.ts +183 -173
  980. package/dist/types/components/ic-menu/ic-menu.types.d.ts +6 -6
  981. package/dist/types/components/ic-menu-group/ic-menu-group.d.ts +6 -6
  982. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +66 -66
  983. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +47 -47
  984. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +62 -62
  985. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +80 -80
  986. package/dist/types/components/ic-navigation-menu/ic-navigation-menu.d.ts +29 -29
  987. package/dist/types/components/ic-page-header/ic-page-header.d.ts +48 -48
  988. package/dist/types/components/ic-pagination/ic-pagination.d.ts +78 -77
  989. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +1 -1
  990. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +42 -42
  991. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +60 -60
  992. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +67 -67
  993. package/dist/types/components/ic-radio-group/ic-radio-group.types.d.ts +5 -5
  994. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +89 -89
  995. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +248 -248
  996. package/dist/types/components/ic-search-bar/ic-search-bar.types.d.ts +1 -1
  997. package/dist/types/components/ic-section-container/ic-section-container.d.ts +9 -9
  998. package/dist/types/components/ic-select/ic-select.d.ts +269 -265
  999. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +103 -97
  1000. package/dist/types/components/ic-side-navigation/ic-side-navigation.types.d.ts +10 -6
  1001. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +19 -19
  1002. package/dist/types/components/ic-status-tag/ic-status-tag.d.ts +31 -31
  1003. package/dist/types/components/ic-step/ic-step.d.ts +51 -51
  1004. package/dist/types/components/ic-stepper/ic-stepper.d.ts +40 -40
  1005. package/dist/types/components/ic-switch/ic-switch.d.ts +73 -73
  1006. package/dist/types/components/ic-switch/ic-switch.types.d.ts +2 -2
  1007. package/dist/types/components/ic-tab/ic-tab.d.ts +51 -51
  1008. package/dist/types/components/ic-tab/ic-tab.types.d.ts +4 -4
  1009. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +59 -59
  1010. package/dist/types/components/ic-tab-group/ic-tab-group.d.ts +19 -19
  1011. package/dist/types/components/ic-tab-panel/ic-tab-panel.d.ts +33 -33
  1012. package/dist/types/components/ic-text-field/ic-text-field.d.ts +214 -213
  1013. package/dist/types/components/ic-theme/ic-theme.d.ts +14 -14
  1014. package/dist/types/components/ic-toast/ic-toast.d.ts +58 -58
  1015. package/dist/types/components/ic-toast-region/ic-toast-region.d.ts +16 -15
  1016. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +54 -50
  1017. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +78 -72
  1018. package/dist/types/components/ic-typography/ic-typography.d.ts +54 -54
  1019. package/dist/types/components.d.ts +415 -3
  1020. package/dist/types/stencil-public-runtime.d.ts +29 -0
  1021. package/dist/types/testspec.setup.d.ts +7 -7
  1022. package/dist/types/utils/constants.d.ts +26 -26
  1023. package/dist/types/utils/helpers.d.ts +7 -7
  1024. package/dist/types/utils/types.d.ts +31 -31
  1025. package/hydrate/index.d.ts +2 -2
  1026. package/hydrate/index.js +16042 -14263
  1027. package/package.json +5 -4
  1028. package/vscode-data.json +3939 -0
  1029. package/dist/cjs/helpers-0d63359f.js.map +0 -1
  1030. package/dist/cjs/index-4f8c900f.js.map +0 -1
  1031. package/dist/cjs/types-7d67439f.js +0 -16
  1032. package/dist/core/p-03329fd0.entry.js +0 -2
  1033. package/dist/core/p-03329fd0.entry.js.map +0 -1
  1034. package/dist/core/p-0dc4f225.entry.js +0 -2
  1035. package/dist/core/p-0dc4f225.entry.js.map +0 -1
  1036. package/dist/core/p-12124e24.entry.js +0 -2
  1037. package/dist/core/p-12124e24.entry.js.map +0 -1
  1038. package/dist/core/p-1cf2a6aa.entry.js +0 -2
  1039. package/dist/core/p-1cf2a6aa.entry.js.map +0 -1
  1040. package/dist/core/p-39c8111d.entry.js +0 -2
  1041. package/dist/core/p-39c8111d.entry.js.map +0 -1
  1042. package/dist/core/p-3a15202f.entry.js.map +0 -1
  1043. package/dist/core/p-3fd897c9.entry.js +0 -2
  1044. package/dist/core/p-3fd897c9.entry.js.map +0 -1
  1045. package/dist/core/p-432f8ff0.entry.js +0 -2
  1046. package/dist/core/p-432f8ff0.entry.js.map +0 -1
  1047. package/dist/core/p-4559600a.entry.js +0 -2
  1048. package/dist/core/p-4559600a.entry.js.map +0 -1
  1049. package/dist/core/p-59bdafff.entry.js +0 -2
  1050. package/dist/core/p-59bdafff.entry.js.map +0 -1
  1051. package/dist/core/p-5b487daa.entry.js +0 -2
  1052. package/dist/core/p-5b487daa.entry.js.map +0 -1
  1053. package/dist/core/p-5ca39ed5.entry.js +0 -2
  1054. package/dist/core/p-5ca39ed5.entry.js.map +0 -1
  1055. package/dist/core/p-752f0f9a.entry.js.map +0 -1
  1056. package/dist/core/p-763d0822.entry.js +0 -2
  1057. package/dist/core/p-763d0822.entry.js.map +0 -1
  1058. package/dist/core/p-7bb3c340.entry.js +0 -2
  1059. package/dist/core/p-7bb3c340.entry.js.map +0 -1
  1060. package/dist/core/p-8b18346a.entry.js.map +0 -1
  1061. package/dist/core/p-9ccfb863.entry.js +0 -2
  1062. package/dist/core/p-9ccfb863.entry.js.map +0 -1
  1063. package/dist/core/p-9d124fc7.js +0 -3
  1064. package/dist/core/p-9d124fc7.js.map +0 -1
  1065. package/dist/core/p-a448d873.entry.js +0 -2
  1066. package/dist/core/p-a448d873.entry.js.map +0 -1
  1067. package/dist/core/p-af9f1caa.entry.js.map +0 -1
  1068. package/dist/core/p-b77ab20a.entry.js +0 -2
  1069. package/dist/core/p-b77ab20a.entry.js.map +0 -1
  1070. package/dist/core/p-c0c62df4.entry.js.map +0 -1
  1071. package/dist/core/p-c36cbd8a.entry.js +0 -2
  1072. package/dist/core/p-c36cbd8a.entry.js.map +0 -1
  1073. package/dist/core/p-e2903ce9.entry.js +0 -2
  1074. package/dist/core/p-e2903ce9.entry.js.map +0 -1
  1075. package/dist/core/p-ea6ad791.entry.js +0 -2
  1076. package/dist/core/p-ea6ad791.entry.js.map +0 -1
  1077. package/dist/core/p-eb063498.entry.js.map +0 -1
  1078. package/dist/core/p-ec82fa24.entry.js +0 -2
  1079. package/dist/core/p-ec82fa24.entry.js.map +0 -1
  1080. package/dist/core/p-f00e510b.entry.js +0 -2
  1081. package/dist/core/p-f00e510b.entry.js.map +0 -1
  1082. package/dist/core/p-f69fb26b.entry.js +0 -2
  1083. package/dist/core/p-f69fb26b.entry.js.map +0 -1
  1084. package/dist/core/p-fe6e0c0e.entry.js +0 -2
  1085. package/dist/core/p-fe6e0c0e.entry.js.map +0 -1
  1086. package/dist/esm/helpers-24f6e762.js.map +0 -1
  1087. package/dist/esm/index-813020f1.js.map +0 -1
  1088. package/dist/esm/types-b2398b37.js +0 -16
  1089. /package/dist/core/{p-08b59078.entry.js.map → p-11736fbe.entry.js.map} +0 -0
  1090. /package/dist/core/{p-5fcd202e.entry.js.map → p-15ef0674.entry.js.map} +0 -0
  1091. /package/dist/core/{p-88ea1e49.entry.js.map → p-180e36b1.entry.js.map} +0 -0
  1092. /package/dist/core/{p-613aa265.js.map → p-26b7b18f.js.map} +0 -0
  1093. /package/dist/core/{p-932fb4b7.entry.js.map → p-287ab47c.entry.js.map} +0 -0
  1094. /package/dist/core/{p-69948c3e.entry.js.map → p-2b24b4bf.entry.js.map} +0 -0
  1095. /package/dist/core/{p-475b7bd2.entry.js.map → p-335fc5e4.entry.js.map} +0 -0
  1096. /package/dist/core/{p-c9ef9f5c.entry.js.map → p-366bcb17.entry.js.map} +0 -0
  1097. /package/dist/core/{p-ed256f1d.entry.js.map → p-3a0ef91e.entry.js.map} +0 -0
  1098. /package/dist/core/{p-f019219c.entry.js.map → p-529d8955.entry.js.map} +0 -0
  1099. /package/dist/core/{p-2c30b583.entry.js.map → p-60c4604f.entry.js.map} +0 -0
  1100. /package/dist/core/{p-ccac1730.entry.js.map → p-6d3f9501.entry.js.map} +0 -0
  1101. /package/dist/core/{p-536b3c97.entry.js.map → p-6eb0421d.entry.js.map} +0 -0
  1102. /package/dist/core/{p-48525498.entry.js.map → p-765bdd98.entry.js.map} +0 -0
  1103. /package/dist/core/{p-3a814fc4.entry.js.map → p-7f887c1e.entry.js.map} +0 -0
  1104. /package/dist/core/{p-e3bffcae.entry.js.map → p-94e88827.entry.js.map} +0 -0
  1105. /package/dist/core/{p-8fb4f0c0.js.map → p-95a864bf.js.map} +0 -0
  1106. /package/dist/core/{p-0c82048e.entry.js.map → p-9c30720d.entry.js.map} +0 -0
  1107. /package/dist/core/{p-76563540.entry.js.map → p-ad36a704.entry.js.map} +0 -0
  1108. /package/dist/core/{p-2265e418.entry.js.map → p-b6a575c3.entry.js.map} +0 -0
  1109. /package/dist/core/{p-fbc8a739.entry.js.map → p-b9736cf4.entry.js.map} +0 -0
  1110. /package/dist/core/{p-025f9d2a.entry.js.map → p-b99f9e89.entry.js.map} +0 -0
  1111. /package/dist/core/{p-b0ce60a0.entry.js.map → p-c2452388.entry.js.map} +0 -0
  1112. /package/dist/core/{p-345fe84a.entry.js.map → p-c770e7a2.entry.js.map} +0 -0
  1113. /package/dist/core/{p-a4397df4.entry.js.map → p-cfc930f6.entry.js.map} +0 -0
  1114. /package/dist/core/{p-41c6eaa1.entry.js.map → p-e9738c74.entry.js.map} +0 -0
  1115. /package/dist/core/{p-e2fd542e.entry.js.map → p-edd29edc.entry.js.map} +0 -0
  1116. /package/dist/core/{p-5bb6c79b.entry.js.map → p-f2e6b9ef.entry.js.map} +0 -0
  1117. /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,452 +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
- expect(menuOptions).toHaveLength(2);
1117
- expect(menuOptions[0]).toEqualText("Cappuccino");
1118
- expect(menuOptions[1]).toEqualText("Americano");
1119
- });
1120
- it("should close menu on blur", async () => {
1121
- const page = await newE2EPage();
1122
- await page.setContent(getTestSearchableSelect(searchableOptions));
1123
- await page.waitForChanges();
1124
- const select = await page.find("ic-select >>> #ic-select-input-0");
1125
- await select.click();
1126
- await page.waitForChanges();
1127
- expect(await getMenuVisibility(page)).toBe("visible");
1128
- await select.press("Tab");
1129
- expect(await getMenuVisibility(page)).toBe("hidden");
1130
- });
1131
- it("should emit icChange on delay", async () => {
1132
- const page = await newE2EPage();
1133
- await page.setContent(`<ic-select label="IC Select Test" debounce="500" searchable></ic-select>`);
1134
- await page.waitForChanges();
1135
- const icChange = await page.spyOnEvent("icChange");
1136
- await focusAndTypeIntoInput("foo", page);
1137
- await page.waitForTimeout(600);
1138
- expect(icChange).toHaveReceivedEventDetail({
1139
- value: "foo",
1140
- });
1141
- await focusAndTypeIntoInput("bar", page);
1142
- await page.waitForChanges();
1143
- await page.waitForTimeout(100);
1144
- expect(icChange).toHaveReceivedEventDetail({
1145
- value: "foo",
1146
- });
1147
- await page.waitForTimeout(500);
1148
- expect(icChange).toHaveReceivedEventDetail({
1149
- value: "foobar",
1150
- });
1151
- });
1152
- it("should update hidden input to value typed in select searchable input", async () => {
1153
- const page = await newE2EPage();
1154
- await page.setContent(getTestSearchableSelect(searchableOptions));
1155
- await page.waitForChanges();
1156
- await focusAndTypeIntoInput("bar", page);
1157
- await page.waitForChanges();
1158
- const hiddenInput = await page.find("input[type='hidden']");
1159
- expect(hiddenInput.getAttribute("value")).toBe("bar");
1160
- });
1161
- it("should keep typed in hidden input value when highlighting menu options", async () => {
1162
- const page = await newE2EPage();
1163
- await page.setContent(getTestSearchableSelect(searchableOptions));
1164
- await page.waitForChanges();
1165
- await focusAndTypeIntoInput("cap", page);
1166
- await page.waitForChanges();
1167
- let hiddenInput = await page.find("input[type='hidden']");
1168
- expect(hiddenInput.getAttribute("value")).toBe("cap");
1169
- await page.keyboard.press("ArrowDown");
1170
- await page.waitForChanges();
1171
- const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1172
- expect(menuListItems[0]).toHaveClass("focused-option");
1173
- hiddenInput = await page.find("input[type='hidden']");
1174
- expect(hiddenInput.getAttribute("value")).toBe("cap");
1175
- });
1176
- it("should update hidden value from typed to selected", async () => {
1177
- const page = await newE2EPage();
1178
- await page.setContent(getTestSearchableSelect(searchableOptions));
1179
- await page.waitForChanges();
1180
- await focusAndTypeIntoInput("o", page);
1181
- await page.waitForChanges();
1182
- const hiddenInput = await page.find("input[type='hidden']");
1183
- expect(hiddenInput.getAttribute("value")).toBe("o");
1184
- await page.keyboard.press("ArrowDown");
1185
- await page.waitForChanges();
1186
- const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1187
- expect(menuListItems[0]).toHaveClass("focused-option");
1188
- await page.keyboard.press("Enter");
1189
- await page.waitForChanges();
1190
- expect(hiddenInput.getAttribute("value")).toBe("Cap");
1191
- });
1192
- it("should update hidden value from typed to selected to typed", async () => {
1193
- const page = await newE2EPage();
1194
- await page.setContent(getTestSearchableSelect(searchableOptions));
1195
- await page.waitForChanges();
1196
- await focusAndTypeIntoInput("o", page);
1197
- await page.waitForChanges();
1198
- const hiddenInput = await page.find("input[type='hidden']");
1199
- expect(hiddenInput.getAttribute("value")).toBe("o");
1200
- await page.keyboard.press("ArrowDown");
1201
- await page.waitForChanges();
1202
- const menuListItems = await page.findAll("ic-select >>> ic-menu > ul > li");
1203
- expect(menuListItems[0]).toHaveClass("focused-option");
1204
- await page.keyboard.press("Enter");
1205
- await page.waitForChanges();
1206
- expect(hiddenInput.getAttribute("value")).toBe("Cap");
1207
- await page.keyboard.press("1");
1208
- await page.waitForChanges();
1209
- expect(hiddenInput.getAttribute("value")).toBe("Cappuccino1");
1210
- });
1211
- it("should update the value of the input and options when passing the value directly", async () => {
1212
- const page = await newE2EPage();
1213
- await page.setContent(getTestSearchableSelect(searchableOptions));
1214
- await page.waitForChanges();
1215
- const select = await page.find("ic-select");
1216
- select.setAttribute("value", "foo");
1217
- await page.waitForChanges();
1218
- const selectInput = await page.find('ic-select >>> input[role="combobox"]');
1219
- expect(await selectInput.getProperty("value")).toBe("foo");
1220
- });
1221
- it("should trigger icChange on input for each typed value", async () => {
1222
- const page = await newE2EPage();
1223
- await page.setContent(getTestSearchableSelect(searchableOptions));
1224
- await page.waitForChanges();
1225
- const select = await page.find("ic-select");
1226
- const icChange = await select.spyOnEvent("icChange");
1227
- await focusAndTypeIntoInput("f", page);
1228
- await page.waitForChanges();
1229
- expect(icChange).toHaveReceivedEventDetail({
1230
- value: "f",
1231
- });
1232
- await focusAndTypeIntoInput("o", page);
1233
- await page.waitForChanges();
1234
- expect(icChange).toHaveReceivedEventDetail({
1235
- value: "fo",
1236
- });
1237
- await focusAndTypeIntoInput("o", page);
1238
- await page.waitForChanges();
1239
- expect(icChange).toHaveReceivedEventDetail({
1240
- value: "foo",
1241
- });
1242
- });
1243
- it("should not trigger icChange on highlighting menu items", async () => {
1244
- const page = await newE2EPage();
1245
- await page.setContent(getTestSearchableSelect(searchableOptions));
1246
- await page.waitForChanges();
1247
- const select = await page.find("ic-select");
1248
- const icChange = await select.spyOnEvent("icChange");
1249
- await page.$eval("ic-select", (el) => {
1250
- const input = el.shadowRoot.querySelector("input");
1251
- input.focus();
1252
- });
1253
- await page.waitForChanges();
1254
- await page.keyboard.press("ArrowDown");
1255
- await page.waitForChanges();
1256
- expect(icChange).not.toHaveReceivedEvent();
1257
- await page.keyboard.press("ArrowDown");
1258
- await page.waitForChanges();
1259
- expect(icChange).not.toHaveReceivedEvent();
1260
- });
1261
- it("should not select a menu option when typing into the searchable input field", async () => {
1262
- const page = await newE2EPage();
1263
- await page.setContent(getTestSearchableSelect(searchableOptions));
1264
- await page.waitForChanges();
1265
- await focusAndTypeIntoInput("Cap", page);
1266
- await page.waitForChanges();
1267
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1268
- expect(await getMenuVisibility(page)).toBe("visible");
1269
- const firstOption = await menu.findAll("li");
1270
- expect(firstOption[0]).not.toHaveClass("aria-selected");
1271
- });
1272
- it("should not selet a menu option when one has previously been set and backspace is pressed", async () => {
1273
- const page = await newE2EPage();
1274
- await page.setContent(getTestSearchableSelect(searchableOptions));
1275
- await page.waitForChanges();
1276
- await focusAndTypeIntoInput("Lat", page);
1277
- await page.waitForChanges();
1278
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1279
- expect(await getMenuVisibility(page)).toBe("visible");
1280
- await page.keyboard.press("ArrowDown");
1281
- await page.waitForChanges();
1282
- await page.keyboard.press("Enter");
1283
- await page.waitForChanges();
1284
- const inputValue = await page.$eval("ic-select", (el) => {
1285
- const input = el.shadowRoot.querySelector("input");
1286
- return input.value;
1287
- });
1288
- expect(inputValue).toBe("Latte");
1289
- await page.keyboard.press("Backspace");
1290
- await page.waitForChanges();
1291
- await page.keyboard.press("Backspace");
1292
- await page.waitForChanges();
1293
- const options = await menu.findAll("li");
1294
- options.forEach((option) => {
1295
- expect(option).not.toHaveClass("aria-selected");
1296
- });
1297
- });
1298
- it("should display selected option when selecting a menu option and then opening and closing the menu", async () => {
1299
- const page = await newE2EPage();
1300
- await page.setContent(getTestSearchableSelect(searchableOptions));
1301
- await page.waitForChanges();
1302
- await focusAndTypeIntoInput("Lat", page);
1303
- await page.waitForChanges();
1304
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1305
- expect(await getMenuVisibility(page)).toBe("visible");
1306
- await page.keyboard.press("ArrowDown");
1307
- await page.waitForChanges();
1308
- await page.keyboard.press("Enter");
1309
- await page.waitForChanges();
1310
- const inputValue = await page.$eval("ic-select", (el) => {
1311
- const input = el.shadowRoot.querySelector("input");
1312
- return input.value;
1313
- });
1314
- expect(inputValue).toBe("Latte");
1315
- await page.evaluate(() => {
1316
- const button = document.querySelector("button");
1317
- button.focus();
1318
- });
1319
- await page.waitForChanges();
1320
- expect(await getMenuVisibility(page)).toBe("hidden");
1321
- const select = await page.find("ic-select");
1322
- await select.click();
1323
- await page.keyboard.press("ArrowDown");
1324
- await page.waitForChanges();
1325
- const latteOption = await menu.find("li[data-value='Lat']");
1326
- expect(latteOption).toHaveAttribute("aria-selected");
1327
- });
1328
- it("hidden input value when on initial load with default value", async () => {
1329
- const page = await newE2EPage();
1330
- await page.setContent(getTestSelectSearchableFormReset(options));
1331
- await page.waitForChanges();
1332
- const hiddenInput = await page.find("ic-select > [name*='ic-select-input-0']");
1333
- expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1334
- });
1335
- it("should submit hidden input value when updating value, pressing reset to initial value and then submitting", async () => {
1336
- const page = await newE2EPage();
1337
- await page.setContent(getTestSelectSearchableFormReset(options));
1338
- await page.waitForChanges();
1339
- const hiddenInput = await page.find("ic-select > [name*='ic-select-input-0']");
1340
- expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1341
- const select = await page.find("ic-select >>> #ic-select-input-0");
1342
- await select.press("Backspace");
1343
- await page.waitForChanges();
1344
- expect(await getMenuVisibility(page)).toBe("visible");
1345
- await page.keyboard.press("ArrowDown");
1346
- await page.waitForChanges();
1347
- await page.keyboard.press("ArrowDown");
1348
- await page.waitForChanges();
1349
- await page.keyboard.press("Enter");
1350
- await page.waitForChanges();
1351
- expect(hiddenInput.getAttribute("value")).toBe("Test value 2");
1352
- await page.$eval("#resetButton", (el) => {
1353
- const reset = el;
1354
- reset.click();
1355
- });
1356
- await page.waitForChanges();
1357
- expect(hiddenInput.getAttribute("value")).toBe("Test value 1");
1358
- });
1359
- it("should scroll menu", async () => {
1360
- const page = await newE2EPage();
1361
- await page.setContent(getTestSearchableSelect(largeOptions));
1362
- await page.waitForChanges();
1363
- await focusAndTypeIntoInput("Test", page);
1364
- await page.waitForChanges();
1365
- expect(await getMenuVisibility(page)).toBe("visible");
1366
- await page.keyboard.press("ArrowDown");
1367
- await page.waitForChanges();
1368
- let menuScrollTop = await page.$eval("ic-select", (el) => {
1369
- const menu = el.shadowRoot.querySelector("ic-menu ul");
1370
- return menu.scrollTop;
1371
- });
1372
- expect(menuScrollTop).toBe(0);
1373
- await page.keyboard.press("Enter");
1374
- await page.waitForChanges();
1375
- const inputValue = await page.$eval("ic-select", (el) => {
1376
- const input = el.shadowRoot.querySelector("input");
1377
- return input.value;
1378
- });
1379
- expect(inputValue).toBe("Test label 1");
1380
- await page.$eval("ic-select", (el) => {
1381
- const input = el.shadowRoot.querySelector("input");
1382
- input.focus();
1383
- });
1384
- await page.waitForChanges();
1385
- await page.keyboard.press("ArrowUp");
1386
- await page.waitForChanges();
1387
- menuScrollTop = await page.$eval("ic-select", (el) => {
1388
- const menu = el.shadowRoot.querySelector("ic-menu ul");
1389
- return menu.scrollTop;
1390
- });
1391
- expect(menuScrollTop).not.toBe(0);
1392
- });
1393
- it("should only highlight and select enabled options in searchable with arrowDown", async () => {
1394
- 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 = `[
1395
1396
  { label: 'Test label 1', value: 'Test value 1', disabled: true },
1396
1397
  { label: 'Test label 2', value: 'Test value 2' },
1397
1398
  { label: 'Test label 3', value: 'Test value 3', disabled: true },
1398
1399
  { label: 'Test label 4', value: 'Test value 4', disabled: true },
1399
1400
  { label: 'Test label 5', value: 'Test value 5' },
1400
1401
  ]`;
1401
- const page = await newE2EPage();
1402
- await page.setContent(getTestSearchableSelect(optionsWithDisabled));
1403
- await page.waitForChanges();
1404
- await focusAndTypeIntoInput("Test", page);
1405
- await page.waitForChanges();
1406
- expect(await getMenuVisibility(page)).toBe("visible");
1407
- await page.keyboard.press("ArrowDown");
1408
- await page.waitForChanges();
1409
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1410
- const menuItems = await menu.findAll("li");
1411
- expect(menuItems[0]).not.toHaveClass("focused-option");
1412
- expect(menuItems[1]).toHaveClass("focused-option");
1413
- await page.keyboard.press("Enter");
1414
- await page.waitForChanges();
1415
- let inputValue = await page.$eval("ic-select", (el) => {
1416
- const input = el.shadowRoot.querySelector("input");
1417
- return input.value;
1418
- });
1419
- expect(inputValue).toBe("Test label 2");
1420
- await page.keyboard.press("ArrowDown");
1421
- await page.waitForChanges();
1422
- await page.keyboard.press("ArrowDown");
1423
- await page.waitForChanges();
1424
- await page.keyboard.press("Enter");
1425
- await page.waitForChanges();
1426
- inputValue = await page.$eval("ic-select", (el) => {
1427
- const input = el.shadowRoot.querySelector("input");
1428
- return input.value;
1429
- });
1430
- expect(inputValue).toBe("Test label 5");
1431
- });
1432
- it("should only highlight and select enabled options in searchable with arrowUp", async () => {
1433
- 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 = `[
1434
1435
  { label: 'Test label 1', value: 'Test value 1', disabled: true },
1435
1436
  { label: 'Test label 2', value: 'Test value 2' },
1436
1437
  { label: 'Test label 3', value: 'Test value 3', disabled: true },
1437
1438
  { label: 'Test label 4', value: 'Test value 4', disabled: true },
1438
1439
  { label: 'Test label 5', value: 'Test value 5' },
1439
1440
  ]`;
1440
- const page = await newE2EPage();
1441
- await page.setContent(getTestSearchableSelect(optionsWithDisabled));
1442
- await page.waitForChanges();
1443
- await focusAndTypeIntoInput("Test", page);
1444
- await page.waitForChanges();
1445
- expect(await getMenuVisibility(page)).toBe("visible");
1446
- await page.keyboard.press("ArrowUp");
1447
- await page.waitForChanges();
1448
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1449
- const menuItems = await menu.findAll("li");
1450
- expect(menuItems[menuItems.length - 1]).toHaveClass("focused-option");
1451
- expect(menuItems[menuItems.length - 2]).not.toHaveClass("focused-option");
1452
- await page.keyboard.press("Enter");
1453
- await page.waitForChanges();
1454
- let inputValue = await page.$eval("ic-select", (el) => {
1455
- const input = el.shadowRoot.querySelector("input");
1456
- return input.value;
1457
- });
1458
- expect(inputValue).toBe("Test label 5");
1459
- await page.keyboard.press("ArrowUp");
1460
- await page.waitForChanges();
1461
- await page.keyboard.press("ArrowUp");
1462
- await page.waitForChanges();
1463
- await page.keyboard.press("Enter");
1464
- await page.waitForChanges();
1465
- inputValue = await page.$eval("ic-select", (el) => {
1466
- const input = el.shadowRoot.querySelector("input");
1467
- return input.value;
1468
- });
1469
- expect(inputValue).toBe("Test label 2");
1470
- });
1471
- describe("loading", () => {
1472
- it("should retry loading and keep the menu open when retry button is pressed with Spacebar", async () => {
1473
- const page = await newE2EPage();
1474
- await page.setContent(`<ic-select label="IC Select Test" searchable="true" options="[]" loading="true" timeout="500"></ic-select>`);
1475
- await page.waitForChanges();
1476
- const icRetryLoad = await page.spyOnEvent("icRetryLoad");
1477
- await page.waitForTimeout(560);
1478
- const firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li ic-typography");
1479
- expect(firstOption).toEqualText("Loading Error");
1480
- const select = await page.find("ic-select >>> #ic-select-input-0");
1481
- await select.click();
1482
- await page.waitForChanges();
1483
- const retryButton = await page.find("ic-select >>> #retry-button");
1484
- await retryButton.press(" ");
1485
- await page.waitForChanges();
1486
- expect(icRetryLoad).toHaveReceivedEvent;
1487
- expect(await getMenuVisibility(page)).toBe("visible");
1488
- });
1489
- it("should cancel loading if the clear button is pressed mid-load", async () => {
1490
- const page = await newE2EPage();
1491
- 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>
1492
1493
  <script>
1493
1494
  var select = document.querySelector("ic-select");
1494
1495
  select.options = [];
@@ -1496,147 +1497,147 @@ describe("ic-select", () => {
1496
1497
  select.loading = "true";
1497
1498
  });
1498
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));
1499
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);
1500
1536
  const select = await page.find("ic-select >>> #ic-select-input-0");
1501
- await select.press("c");
1537
+ await select.press("Enter");
1502
1538
  await page.waitForChanges();
1503
- let firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
1504
- expect(firstOption).toEqualText("Loading...");
1505
- const clearButton = await page.find("ic-select >>> .clear-button");
1506
- await clearButton.click();
1539
+ await select.press("ArrowDown");
1507
1540
  await page.waitForChanges();
1508
- await page.waitForTimeout(560);
1509
- firstOption = await page.find("ic-select >>> #ic-select-input-0-menu li");
1510
- expect(firstOption).toBeNull;
1511
- });
1512
- 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 () => {
1513
1565
  const page = await newE2EPage();
1514
- await page.setContent(getTestSearchableSelect(`[]`));
1566
+ await page.setContent(getTestSelectSearchableFormReset(options));
1515
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");
1516
1573
  const select = await page.find("ic-select >>> #ic-select-input-0");
1517
- await select.click();
1574
+ await select.press("ArrowDown");
1518
1575
  await page.waitForChanges();
1519
- const menu = await page.find("ic-select >>> #ic-select-input-0-menu");
1520
- const menuOptions = await menu.findAll("li");
1521
- expect(menuOptions).toHaveLength(1);
1522
- expect(menuOptions[0]).toEqualText("No results found");
1523
- });
1524
- });
1525
- });
1526
- it("should reset to initial value on form reset", async () => {
1527
- const page = await newE2EPage();
1528
- await page.setContent(getTestSelectFormReset(options));
1529
- await page.waitForChanges();
1530
- let value = await page.$eval("ic-select", (el) => {
1531
- const select = el;
1532
- return select.value;
1533
- });
1534
- expect(value).toBe(undefined);
1535
- const select = await page.find("ic-select >>> #ic-select-input-0");
1536
- await select.press("Enter");
1537
- await page.waitForChanges();
1538
- await select.press("ArrowDown");
1539
- await page.waitForChanges();
1540
- value = await page.$eval("ic-select", (el) => {
1541
- const select = el;
1542
- return select.value;
1543
- });
1544
- expect(value).toBe("Test value 1");
1545
- await page.$eval("#resetButton", (el) => {
1546
- const reset = el;
1547
- reset.click();
1548
- });
1549
- await page.waitForChanges();
1550
- value = await page.$eval("ic-select", (el) => {
1551
- const select = el;
1552
- return select.value;
1553
- });
1554
- expect(value).toBe(undefined);
1555
- });
1556
- it("menu should not be visible on initial load if setting default value and disable filter is set", async () => {
1557
- const page = await newE2EPage();
1558
- await page.setContent(getTestSearchableSelectAsync());
1559
- await page.waitForChanges();
1560
- await page.waitForTimeout(900);
1561
- expect(await getMenuVisibility(page)).toBe("hidden");
1562
- });
1563
- it("should reset to initial value on form reset with searchable", async () => {
1564
- const page = await newE2EPage();
1565
- await page.setContent(getTestSelectSearchableFormReset(options));
1566
- await page.waitForChanges();
1567
- let value = await page.$eval("ic-select", (el) => {
1568
- const select = el;
1569
- return select.value;
1570
- });
1571
- expect(value).toBe("Test value 1");
1572
- const select = await page.find("ic-select >>> #ic-select-input-0");
1573
- await select.press("ArrowDown");
1574
- await page.waitForChanges();
1575
- await select.press("ArrowDown");
1576
- await page.waitForChanges();
1577
- await select.press("Enter");
1578
- await page.waitForChanges();
1579
- value = await page.$eval("ic-select", (el) => {
1580
- const select = el;
1581
- return select.value;
1582
- });
1583
- expect(value).toBe("Test value 2");
1584
- await page.$eval("#resetButton", (el) => {
1585
- const reset = el;
1586
- reset.click();
1587
- });
1588
- await page.waitForChanges();
1589
- value = await page.$eval("ic-select", (el) => {
1590
- const select = el;
1591
- return select.value;
1592
- });
1593
- expect(value).toBe("Test value 1");
1594
- });
1595
- let page;
1596
- describe("native", () => {
1597
- beforeEach(async () => {
1598
- page = await newE2EPage();
1599
- 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");
1600
- await page.setViewport({
1601
- width: 375,
1602
- height: 667,
1603
- isMobile: true,
1604
- hasTouch: true,
1605
- });
1606
- });
1607
- it("should render", async () => {
1608
- await page.setContent(getTestSelect(options));
1609
- await page.waitForChanges();
1610
- const select = await page.find("ic-select >>> select");
1611
- expect(select).not.toBeNull();
1612
- });
1613
- it("should render a native select when searchable is applied on mobile", async () => {
1614
- await page.setContent(getTestSearchableSelect(options));
1615
- await page.waitForChanges();
1616
- const select = await page.find("ic-select >>> select");
1617
- expect(select).not.toBeNull();
1618
- });
1619
- it("should render when no options are provided", async () => {
1620
- await page.setContent(`<ic-select label="IC Select Test"></ic-select>`);
1621
- await page.waitForChanges();
1622
- const select = await page.find("ic-select >>> select");
1623
- expect(select).not.toBeNull();
1624
- });
1625
- it("should disable options correctly", async () => {
1626
- 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 = `[
1627
1628
  { label: 'Test label 1', value: 'Test value 1', disabled: true },
1628
1629
  { label: 'Test label 2', value: 'Test value 2' },
1629
1630
  { label: 'Test label 3', value: 'Test value 3' },
1630
1631
  ]`;
1631
- await page.setContent(getTestSelect(optionsWithDisabled));
1632
- await page.waitForChanges();
1633
- const optionsDisabled = await page.evaluate(() => Array.from(document
1634
- .querySelector("ic-select")
1635
- .shadowRoot.querySelectorAll("option"), (option) => option.disabled));
1636
- expect(optionsDisabled[0]).toBe(true);
1637
- });
1638
- it("should render options as <optgroup>s if they have children", async () => {
1639
- 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 = `[
1640
1641
  {
1641
1642
  label: 'Test group',
1642
1643
  children: [
@@ -1646,179 +1647,179 @@ describe("ic-select", () => {
1646
1647
  ],
1647
1648
  },
1648
1649
  ]`;
1649
- await page.setContent(getTestSelect(groupedOptions));
1650
- await page.waitForChanges();
1651
- const optGroup = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("optgroup"));
1652
- expect(optGroup).toBeTruthy();
1653
- });
1654
- it("should render a required <select> when required", async () => {
1655
- await page.setContent(getTestSelect(options));
1656
- const icSelect = await page.find("ic-select");
1657
- icSelect.setAttribute("required", true);
1658
- await page.waitForChanges();
1659
- const select = await page.find("ic-select >>> select");
1660
- expect(select).toHaveAttribute("required");
1661
- });
1662
- it("should not render a label when the 'hide-label' prop is supplied", async () => {
1663
- await page.setContent(getTestSelect(options));
1664
- const icSelect = await page.find("ic-select");
1665
- icSelect.setAttribute("hide-label", true);
1666
- await page.waitForChanges();
1667
- const label = await page.find("ic-select >>> ic-input-label");
1668
- expect(label).toBeNull();
1669
- });
1670
- it("should render a disabled <select> when the 'disabled' prop is supplied", async () => {
1671
- await page.setContent(getTestSelect(options));
1672
- const icSelect = await page.find("ic-select");
1673
- icSelect.setAttribute("disabled", true);
1674
- await page.waitForChanges();
1675
- const select = await page.find("ic-select >>> select");
1676
- expect(select).toHaveAttribute("disabled");
1677
- });
1678
- it("should render the selected value as text instead of rendering a <select> when read-only", async () => {
1679
- await page.setContent(getTestSelect(options));
1680
- const icSelect = await page.find("ic-select");
1681
- icSelect.setAttribute("value", "Test value 1");
1682
- icSelect.setAttribute("readonly", true);
1683
- await page.waitForChanges();
1684
- const select = await page.find("ic-select >>> select");
1685
- const typography = await page.evaluate(() => Array.from(document
1686
- .querySelector("ic-select")
1687
- .shadowRoot.querySelectorAll("ic-typography"), (typography) => typography.innerText));
1688
- expect(select).toBe(null);
1689
- expect(typography[1]).toBe("Test label 1");
1690
- });
1691
- it("should render the correct placeholder", async () => {
1692
- await page.setContent(getTestSelect(options));
1693
- const icSelect = await page.find("ic-select");
1694
- icSelect.setAttribute("placeholder", "Test placeholder");
1695
- await page.waitForChanges();
1696
- const optionLabels = await page.evaluate(() => Array.from(document
1697
- .querySelector("ic-select")
1698
- .shadowRoot.querySelectorAll("option"), (option) => option.innerText));
1699
- expect(optionLabels[0]).toEqual("Test placeholder");
1700
- });
1701
- it("should set aria-invalid if validation status is 'error'", async () => {
1702
- await page.setContent(getTestSelect(options));
1703
- const icSelect = await page.find("ic-select");
1704
- icSelect.setAttribute("validation-status", "error");
1705
- await page.waitForChanges();
1706
- const select = await page.find("ic-select >>> select");
1707
- expect(select).toHaveAttribute("aria-invalid");
1708
- });
1709
- it("should display the value passed in using the 'value' prop as the selected option", async () => {
1710
- await page.setContent(getTestSelect(options));
1711
- const icSelect = await page.find("ic-select");
1712
- icSelect.setAttribute("value", "Test value 1");
1713
- await page.waitForChanges();
1714
- const optionsSelected = await page.evaluate(() => Array.from(document
1715
- .querySelector("ic-select")
1716
- .shadowRoot.querySelectorAll("option"), (option) => option.selected));
1717
- expect(optionsSelected[1]).toBe(true);
1718
- });
1719
- it("should set the correct name on the hidden input", async () => {
1720
- await page.setContent(getTestSelect(options));
1721
- const icSelect = await page.find("ic-select");
1722
- icSelect.setAttribute("name", "Test name");
1723
- await page.waitForChanges();
1724
- const hiddenInput = await page.find("input");
1725
- const hiddenInputName = await hiddenInput.getProperty("name");
1726
- expect(hiddenInputName).toEqual("Test name");
1727
- });
1728
- it("should call icChange when the selected option is changed", async () => {
1729
- await page.setContent(getTestSelect(options));
1730
- await page.waitForChanges();
1731
- const icChange = await page.spyOnEvent("icChange");
1732
- const select = await page.find("ic-select >>> select");
1733
- await select.press("ArrowDown");
1734
- await select.press("Enter");
1735
- await page.waitForChanges();
1736
- expect(icChange).toHaveReceivedEventDetail({
1737
- value: "Test value 1",
1738
- });
1739
- });
1740
- it("should call icFocus when focused", async () => {
1741
- await page.setContent(getTestSelect(options));
1742
- await page.waitForChanges();
1743
- const icFocus = await page.spyOnEvent("icFocus");
1744
- await page.keyboard.down("Tab");
1745
- await page.waitForChanges();
1746
- expect(icFocus).toHaveReceivedEvent();
1747
- });
1748
- it("should call icBlur when it loses focus", async () => {
1749
- await page.setContent(getTestSelect(options));
1750
- await page.waitForChanges();
1751
- const icBlur = await page.spyOnEvent("icBlur");
1752
- await page.keyboard.down("Tab");
1753
- await page.keyboard.down("Tab");
1754
- await page.waitForChanges();
1755
- expect(icBlur).toHaveReceivedEvent();
1756
- });
1757
- it("should set the 'placeholder' class name if no option is selected", async () => {
1758
- await page.setContent(getTestSelect(options));
1759
- await page.waitForChanges();
1760
- const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1761
- .className);
1762
- expect(selectClassName).toBe("placeholder");
1763
- });
1764
- it("should set the text colour to the primary text colour if an option is selected", async () => {
1765
- await page.setContent(getTestSelect(options));
1766
- const icSelect = await page.find("ic-select");
1767
- icSelect.setAttribute("value", "Test value 1");
1768
- await page.waitForChanges();
1769
- const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1770
- .className);
1771
- expect(selectClassName).toBe("select-option-selected");
1772
- });
1773
- it("should change the text colour to the primary text colour when an option is selected", async () => {
1774
- await page.setContent(getTestSelect(options));
1775
- await page.waitForChanges();
1776
- const select = await page.find("ic-select >>> select");
1777
- await select.press("ArrowDown");
1778
- await select.press("Enter");
1779
- await page.waitForChanges();
1780
- const selectClassName = await page.evaluate(() => document.querySelector("ic-select").shadowRoot.querySelector("select")
1781
- .className);
1782
- expect(selectClassName).toBe("select-option-selected");
1783
- });
1784
- it("should add .menu-scroll to menu components when options height is over 320", async () => {
1785
- const page = await newE2EPage();
1786
- await page.setContent(getTestSelect(largeOptions));
1787
- await page.waitForChanges();
1788
- const select = await page.find("ic-select >>> button.select-input");
1789
- await select.click();
1790
- await page.waitForChanges();
1791
- const menuClasses = await page.evaluate(() => {
1792
- const menu = document
1793
- .querySelector("ic-select")
1794
- .shadowRoot.querySelector("ic-menu .menu");
1795
- return menu.classList;
1796
- });
1797
- expect(Object.values(menuClasses).includes("menu-scroll")).toBeTruthy();
1798
- });
1799
- it("should add .menu-scroll to menu components when options are initially set and then populated with large data set", async () => {
1800
- const page = await newE2EPage();
1801
- await page.setContent(getTestSelectAsync(options, largeOptions));
1802
- await page.waitForChanges();
1803
- const select = await page.find("ic-select >>> button.select-input");
1804
- await select.click();
1805
- await page.waitForChanges();
1806
- let menuClasses = await page.evaluate(() => {
1807
- const menu = document
1808
- .querySelector("ic-select")
1809
- .shadowRoot.querySelector("ic-menu .menu");
1810
- return menu.classList;
1811
- });
1812
- expect(Object.values(menuClasses).includes("menu-scroll")).toBeFalsy();
1813
- await page.waitForTimeout(1200);
1814
- menuClasses = await page.evaluate(() => {
1815
- const menu = document
1816
- .querySelector("ic-select")
1817
- .shadowRoot.querySelector("ic-menu .menu");
1818
- return menu.classList;
1819
- });
1820
- 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
+ });
1821
1823
  });
1822
- });
1823
1824
  });
1824
1825
  //# sourceMappingURL=ic-select.e2e.js.map