@ukic/web-components 2.8.0 → 2.9.0

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