@ukic/web-components 2.8.0 → 2.10.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 (1085) 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 +636 -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 +670 -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 +96 -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 +233 -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 +640 -640
  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/assets/arrow-dropdown.svg +3 -0
  125. package/dist/collection/collection-manifest.json +2 -2
  126. package/dist/collection/components/ic-accordion/ic-accordion.js +276 -276
  127. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  128. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +215 -215
  129. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -1
  130. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js +200 -200
  131. package/dist/collection/components/ic-accordion-group/ic-accordion-group.js.map +1 -1
  132. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js +71 -71
  133. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.spec.js.map +1 -1
  134. package/dist/collection/components/ic-alert/ic-alert.js +231 -231
  135. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  136. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js +44 -44
  137. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js.map +1 -1
  138. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js +159 -159
  139. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js.map +1 -1
  140. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js +102 -102
  141. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.spec.js.map +1 -1
  142. package/dist/collection/components/ic-badge/ic-badge.js +385 -385
  143. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  144. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js +172 -172
  145. package/dist/collection/components/ic-badge/test/basic/ic-badge.spec.js.map +1 -1
  146. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +9 -1
  147. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +186 -157
  148. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  149. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js +43 -43
  150. package/dist/collection/components/ic-breadcrumb/test/basic/ic-breadcrumb.spec.js.map +1 -1
  151. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +250 -220
  152. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  153. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js +10 -10
  154. package/dist/collection/components/ic-breadcrumb-group/test/a11y/ic-breadcrumb-group.test.a11y.js.map +1 -1
  155. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js +34 -34
  156. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.e2e.js.map +1 -1
  157. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.spec.js +156 -118
  158. package/dist/collection/components/ic-breadcrumb-group/test/basic/ic-breadcrumb-group.spec.js.map +1 -1
  159. package/dist/collection/components/ic-button/ic-button.css +34 -1
  160. package/dist/collection/components/ic-button/ic-button.js +849 -773
  161. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  162. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js +5 -5
  163. package/dist/collection/components/ic-button/test/a11y/ic-button.test.a11y.js.map +1 -1
  164. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js +114 -114
  165. package/dist/collection/components/ic-button/test/basic/ic-button.e2e.js.map +1 -1
  166. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js +249 -236
  167. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js.map +1 -1
  168. package/dist/collection/components/ic-card/ic-card.js +375 -375
  169. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  170. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js +15 -15
  171. package/dist/collection/components/ic-card/test/a11y/ic-card.test.a11y.js.map +1 -1
  172. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js +19 -19
  173. package/dist/collection/components/ic-card/test/basic/ic-card.e2e.js.map +1 -1
  174. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js +147 -147
  175. package/dist/collection/components/ic-card/test/basic/ic-card.spec.js.map +1 -1
  176. package/dist/collection/components/ic-checkbox/ic-checkbox.css +6 -6
  177. package/dist/collection/components/ic-checkbox/ic-checkbox.js +474 -474
  178. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  179. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +302 -302
  180. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  181. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js +5 -5
  182. package/dist/collection/components/ic-checkbox-group/test/a11y/ic-checkbox-group.test.a11y.js.map +1 -1
  183. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js +124 -124
  184. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.e2e.js.map +1 -1
  185. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js +148 -148
  186. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js.map +1 -1
  187. package/dist/collection/components/ic-chip/ic-chip.css +8 -0
  188. package/dist/collection/components/ic-chip/ic-chip.js +291 -271
  189. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  190. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js +5 -5
  191. package/dist/collection/components/ic-chip/test/a11y/ic-chip.test.a11y.js.map +1 -1
  192. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +81 -81
  193. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  194. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js +132 -132
  195. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js.map +1 -1
  196. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js +55 -55
  197. package/dist/collection/components/ic-classification-banner/test/basic/ic-classification-banner.spec.js.map +1 -1
  198. package/dist/collection/components/ic-data-entity/ic-data-entity.js +92 -92
  199. package/dist/collection/components/ic-data-entity/ic-data-entity.js.map +1 -1
  200. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js +5 -5
  201. package/dist/collection/components/ic-data-entity/test/a11y/ic-data-entity.test.a11y.js.map +1 -1
  202. package/dist/collection/components/ic-data-entity/test/basic/ic-data-entity.spec.js +28 -28
  203. package/dist/collection/components/ic-data-entity/test/basic/ic-data-entity.spec.js.map +1 -1
  204. package/dist/collection/components/ic-data-row/ic-data-row.js +170 -170
  205. package/dist/collection/components/ic-data-row/ic-data-row.js.map +1 -1
  206. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js +14 -14
  207. package/dist/collection/components/ic-data-row/test/a11y/ic-data-row.test.a11y.js.map +1 -1
  208. package/dist/collection/components/ic-data-row/test/basic/ic-data-row.spec.js +61 -61
  209. package/dist/collection/components/ic-data-row/test/basic/ic-data-row.spec.js.map +1 -1
  210. package/dist/collection/components/ic-dialog/ic-dialog.js +765 -765
  211. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  212. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js +5 -5
  213. package/dist/collection/components/ic-dialog/test/a11y/ic-dialog.test.a11y.js.map +1 -1
  214. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js +155 -155
  215. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.e2e.js.map +1 -1
  216. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js +573 -573
  217. package/dist/collection/components/ic-dialog/test/basic/ic-dialog.spec.js.map +1 -1
  218. package/dist/collection/components/ic-divider/ic-divider.js +38 -38
  219. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  220. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js +17 -17
  221. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js.map +1 -1
  222. package/dist/collection/components/ic-empty-state/ic-empty-state.js +151 -151
  223. package/dist/collection/components/ic-empty-state/ic-empty-state.js.map +1 -1
  224. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js +5 -5
  225. package/dist/collection/components/ic-empty-state/test/a11y/ic-empty-state.test.a11y.js.map +1 -1
  226. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js +52 -52
  227. package/dist/collection/components/ic-empty-state/test/basic/ic-empty-state.spec.js.map +1 -1
  228. package/dist/collection/components/ic-footer/ic-footer.js +242 -242
  229. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  230. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js +15 -15
  231. package/dist/collection/components/ic-footer/test/a11y/ic-footer.test.a11y.js.map +1 -1
  232. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js +25 -25
  233. package/dist/collection/components/ic-footer/test/basic/ic-footer.e2e.js.map +1 -1
  234. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js +108 -108
  235. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js.map +1 -1
  236. package/dist/collection/components/ic-footer-link/ic-footer-link.js +190 -190
  237. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  238. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js +13 -13
  239. package/dist/collection/components/ic-footer-link/test/a11y/ic-footer-link.test.a11y.js.map +1 -1
  240. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js +36 -36
  241. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js.map +1 -1
  242. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +107 -107
  243. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  244. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js +13 -13
  245. package/dist/collection/components/ic-footer-link-group/test/a11y/ic-footer-link-group.test.a11y.js.map +1 -1
  246. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js +52 -52
  247. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js.map +1 -1
  248. package/dist/collection/components/ic-hero/ic-hero.js +292 -292
  249. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  250. package/dist/collection/components/ic-hero/test/a11y/ic-hero.test.a11y.js +5 -5
  251. package/dist/collection/components/ic-hero/test/a11y/ic-hero.test.a11y.js.map +1 -1
  252. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +62 -62
  253. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  254. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +241 -240
  255. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  256. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js +17 -17
  257. package/dist/collection/components/ic-horizontal-scroll/test/a11y/ic-horizontal-scroll.test.a11y.js.map +1 -1
  258. package/dist/collection/components/ic-horizontal-scroll/test/basic/ic-horizontal-scroll.spec.js +145 -145
  259. package/dist/collection/components/ic-horizontal-scroll/test/basic/ic-horizontal-scroll.spec.js.map +1 -1
  260. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +248 -248
  261. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  262. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +49 -49
  263. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
  264. package/dist/collection/components/ic-input-container/ic-input-container.js +62 -62
  265. package/dist/collection/components/ic-input-container/ic-input-container.js.map +1 -1
  266. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js +19 -19
  267. package/dist/collection/components/ic-input-container/test/basic/ic-input-container.spec.js.map +1 -1
  268. package/dist/collection/components/ic-input-label/ic-input-label.js +211 -211
  269. package/dist/collection/components/ic-input-label/ic-input-label.js.map +1 -1
  270. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js +37 -37
  271. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js.map +1 -1
  272. package/dist/collection/components/ic-input-validation/ic-input-validation.js +139 -139
  273. package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
  274. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js +31 -31
  275. package/dist/collection/components/ic-input-validation/test/basic/ic-input-validation.spec.js.map +1 -1
  276. package/dist/collection/components/ic-link/ic-link.js +248 -248
  277. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  278. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js +5 -5
  279. package/dist/collection/components/ic-link/test/a11y/ic-link.test.a11y.js.map +1 -1
  280. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js +92 -92
  281. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js.map +1 -1
  282. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +416 -415
  283. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  284. package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js +5 -5
  285. package/dist/collection/components/ic-loading-indicator/test/a11y/ic-loading-indicator.test.a11y.js.map +1 -1
  286. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js +25 -25
  287. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.e2e.js.map +1 -1
  288. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js +114 -114
  289. package/dist/collection/components/ic-loading-indicator/test/basic/ic-loading-indicator.spec.js.map +1 -1
  290. package/dist/collection/components/ic-menu/ic-menu.js +1258 -1267
  291. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  292. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +742 -684
  293. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  294. package/dist/collection/components/ic-menu-group/ic-menu-group.js +41 -41
  295. package/dist/collection/components/ic-menu-group/ic-menu-group.js.map +1 -1
  296. package/dist/collection/components/ic-menu-group/test/basic/ic-menu-group.spec.js +16 -16
  297. package/dist/collection/components/ic-menu-group/test/basic/ic-menu-group.spec.js.map +1 -1
  298. package/dist/collection/components/ic-menu-item/ic-menu-item.js +378 -378
  299. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  300. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js +67 -67
  301. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js.map +1 -1
  302. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +262 -259
  303. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  304. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js +41 -41
  305. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js.map +1 -1
  306. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +380 -380
  307. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  308. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js +14 -14
  309. package/dist/collection/components/ic-navigation-group/test/a11y/ic-navigation-group.test.a11y.js.map +1 -1
  310. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js +242 -242
  311. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js.map +1 -1
  312. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +446 -446
  313. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  314. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js +14 -14
  315. package/dist/collection/components/ic-navigation-item/test/a11y/ic-navigation-item.test.a11y.js.map +1 -1
  316. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +78 -78
  317. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  318. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +187 -187
  319. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  320. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js +25 -25
  321. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.e2e.js.map +1 -1
  322. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.spec.js +104 -104
  323. package/dist/collection/components/ic-navigation-menu/test/basic/ic-navigation-menu.spec.js.map +1 -1
  324. package/dist/collection/components/ic-page-header/ic-page-header.js +289 -286
  325. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  326. package/dist/collection/components/ic-page-header/test/a11y/ic-page-header.test.a11y.js +5 -5
  327. package/dist/collection/components/ic-page-header/test/a11y/ic-page-header.test.a11y.js.map +1 -1
  328. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.e2e.js +66 -66
  329. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.e2e.js.map +1 -1
  330. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js +82 -82
  331. package/dist/collection/components/ic-page-header/test/basic/ic-page-header.spec.js.map +1 -1
  332. package/dist/collection/components/ic-pagination/ic-pagination.js +487 -482
  333. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  334. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js +5 -5
  335. package/dist/collection/components/ic-pagination/test/a11y/ic-pagination.test.a11y.js.map +1 -1
  336. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.e2e.js +103 -103
  337. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.e2e.js.map +1 -1
  338. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +303 -303
  339. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  340. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +225 -225
  341. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  342. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +456 -437
  343. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  344. package/dist/collection/components/ic-popover-menu/test/a11y/ic-popover-menu.test.a11y.js +5 -5
  345. package/dist/collection/components/ic-popover-menu/test/a11y/ic-popover-menu.test.a11y.js.map +1 -1
  346. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js +27 -27
  347. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.e2e.js.map +1 -1
  348. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js +283 -283
  349. package/dist/collection/components/ic-popover-menu/test/basic/ic-popover-menu.spec.js.map +1 -1
  350. package/dist/collection/components/ic-radio-group/ic-radio-group.js +429 -429
  351. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  352. package/dist/collection/components/ic-radio-group/test/a11y/ic-radio-group.test.a11y.js +5 -5
  353. package/dist/collection/components/ic-radio-group/test/a11y/ic-radio-group.test.a11y.js.map +1 -1
  354. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js +218 -218
  355. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js.map +1 -1
  356. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +238 -238
  357. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  358. package/dist/collection/components/ic-radio-option/ic-radio-option.css +5 -5
  359. package/dist/collection/components/ic-radio-option/ic-radio-option.js +479 -479
  360. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  361. package/dist/collection/components/ic-search-bar/ic-search-bar.js +1381 -1381
  362. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  363. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js +5 -5
  364. package/dist/collection/components/ic-search-bar/test/a11y/ic-search-bar.test.a11y.js.map +1 -1
  365. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +992 -992
  366. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +1 -1
  367. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js +568 -568
  368. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js.map +1 -1
  369. package/dist/collection/components/ic-section-container/ic-section-container.js +70 -70
  370. package/dist/collection/components/ic-section-container/ic-section-container.js.map +1 -1
  371. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js +28 -28
  372. package/dist/collection/components/ic-section-container/test/basic/ic-section-container.spec.js.map +1 -1
  373. package/dist/collection/components/ic-select/ic-select.css +1 -0
  374. package/dist/collection/components/ic-select/ic-select.js +1466 -1466
  375. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  376. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js +5 -5
  377. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js.map +1 -1
  378. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js +1563 -1563
  379. package/dist/collection/components/ic-select/test/basic/ic-select.e2e.js.map +1 -1
  380. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +1299 -1299
  381. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  382. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +675 -654
  383. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  384. package/dist/collection/components/ic-side-navigation/ic-side-navigation.types.js.map +1 -1
  385. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js +5 -5
  386. package/dist/collection/components/ic-side-navigation/test/a11y/ic-side-navigation.test.a11y.js.map +1 -1
  387. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js +463 -463
  388. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.e2e.js.map +1 -1
  389. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js +143 -143
  390. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js.map +1 -1
  391. package/dist/collection/components/ic-skeleton/ic-skeleton.js +127 -127
  392. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  393. package/dist/collection/components/ic-skeleton/test/a11y/ic-skeleton.test.a11y.js +5 -5
  394. package/dist/collection/components/ic-skeleton/test/a11y/ic-skeleton.test.a11y.js.map +1 -1
  395. package/dist/collection/components/ic-skeleton/test/basic/ic-skeleton.spec.js +38 -38
  396. package/dist/collection/components/ic-skeleton/test/basic/ic-skeleton.spec.js.map +1 -1
  397. package/dist/collection/components/ic-status-tag/ic-status-tag.js +194 -194
  398. package/dist/collection/components/ic-status-tag/ic-status-tag.js.map +1 -1
  399. package/dist/collection/components/ic-status-tag/test/a11y/ic-status-tag.test.a11y.js +5 -5
  400. package/dist/collection/components/ic-status-tag/test/a11y/ic-status-tag.test.a11y.js.map +1 -1
  401. package/dist/collection/components/ic-status-tag/test/basic/ic-status-tag.spec.js +14 -14
  402. package/dist/collection/components/ic-status-tag/test/basic/ic-status-tag.spec.js.map +1 -1
  403. package/dist/collection/components/ic-step/ic-step.css +6 -0
  404. package/dist/collection/components/ic-step/ic-step.js +385 -385
  405. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  406. package/dist/collection/components/ic-step/test/basic/ic-step.spec.js +87 -87
  407. package/dist/collection/components/ic-step/test/basic/ic-step.spec.js.map +1 -1
  408. package/dist/collection/components/ic-stepper/ic-stepper.js +306 -306
  409. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  410. package/dist/collection/components/ic-stepper/test/a11y/ic-stepper.test.a11y.js +10 -10
  411. package/dist/collection/components/ic-stepper/test/a11y/ic-stepper.test.a11y.js.map +1 -1
  412. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js +36 -36
  413. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js.map +1 -1
  414. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js +350 -350
  415. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js.map +1 -1
  416. package/dist/collection/components/ic-switch/ic-switch.js +355 -355
  417. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  418. package/dist/collection/components/ic-switch/test/a11y/ic-switch.test.a11y.js +5 -5
  419. package/dist/collection/components/ic-switch/test/a11y/ic-switch.test.a11y.js.map +1 -1
  420. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js +88 -88
  421. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js.map +1 -1
  422. package/dist/collection/components/ic-tab/ic-tab.js +350 -350
  423. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  424. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js +26 -26
  425. package/dist/collection/components/ic-tab/test/basic/ic-tab.e2e.js.map +1 -1
  426. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js +93 -93
  427. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js.map +1 -1
  428. package/dist/collection/components/ic-tab-context/ic-tab-context.js +442 -441
  429. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  430. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js +5 -5
  431. package/dist/collection/components/ic-tab-context/test/a11y/ic-tab-context.test.a11y.js.map +1 -1
  432. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js +213 -213
  433. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.e2e.js.map +1 -1
  434. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js +250 -250
  435. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js.map +1 -1
  436. package/dist/collection/components/ic-tab-group/ic-tab-group.js +117 -117
  437. package/dist/collection/components/ic-tab-group/ic-tab-group.js.map +1 -1
  438. package/dist/collection/components/ic-tab-panel/ic-tab-panel.css +444 -1
  439. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +191 -191
  440. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js.map +1 -1
  441. package/dist/collection/components/ic-tab-panel/test/basic/ic-tab-panel.spec.js +29 -29
  442. package/dist/collection/components/ic-tab-panel/test/basic/ic-tab-panel.spec.js.map +1 -1
  443. package/dist/collection/components/ic-text-field/ic-text-field.js +1115 -1115
  444. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  445. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js +5 -5
  446. package/dist/collection/components/ic-text-field/test/a11y/ic-text-field.test.a11y.js.map +1 -1
  447. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js +94 -94
  448. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.e2e.js.map +1 -1
  449. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js +194 -194
  450. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js.map +1 -1
  451. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js +92 -92
  452. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.textarea.spec.js.map +1 -1
  453. package/dist/collection/components/ic-theme/ic-theme.js +99 -99
  454. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  455. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js +65 -65
  456. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js.map +1 -1
  457. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js +53 -53
  458. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js.map +1 -1
  459. package/dist/collection/components/ic-toast/ic-toast.js +368 -368
  460. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  461. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +180 -180
  462. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  463. package/dist/collection/components/ic-toast-region/ic-toast-region.js +115 -110
  464. package/dist/collection/components/ic-toast-region/ic-toast-region.js.map +1 -1
  465. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js +58 -58
  466. package/dist/collection/components/ic-toast-region/test/basic/ic-toast-region.spec.js.map +1 -1
  467. package/dist/collection/components/ic-tooltip/ic-tooltip.js +371 -329
  468. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  469. package/dist/collection/components/ic-tooltip/test/a11y/ic-tooltip.test.a11y.js +5 -5
  470. package/dist/collection/components/ic-tooltip/test/a11y/ic-tooltip.test.a11y.js.map +1 -1
  471. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js +105 -105
  472. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js.map +1 -1
  473. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js +276 -276
  474. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.spec.js.map +1 -1
  475. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +0 -4
  476. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +431 -418
  477. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  478. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js +20 -20
  479. package/dist/collection/components/ic-top-navigation/test/a11y/ic-top-navigation.test.a11y.js.map +1 -1
  480. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js +43 -43
  481. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.e2e.js.map +1 -1
  482. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js +191 -191
  483. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.mobile.e2e.js.map +1 -1
  484. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js +180 -180
  485. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js.map +1 -1
  486. package/dist/collection/components/ic-typography/ic-typography.js +270 -270
  487. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  488. package/dist/collection/components/ic-typography/test/a11y/ic-typography.test.a11y.js +5 -5
  489. package/dist/collection/components/ic-typography/test/a11y/ic-typography.test.a11y.js.map +1 -1
  490. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js +25 -25
  491. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js.map +1 -1
  492. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js +276 -276
  493. package/dist/collection/components/ic-typography/test/basic/ic-typography.spec.js.map +1 -1
  494. package/dist/collection/testspec.setup.js +32 -32
  495. package/dist/collection/testspec.setup.js.map +1 -1
  496. package/dist/collection/utils/constants.js +55 -55
  497. package/dist/collection/utils/constants.js.map +1 -1
  498. package/dist/collection/utils/helpers.js +235 -235
  499. package/dist/collection/utils/helpers.js.map +1 -1
  500. package/dist/collection/utils/testa11y.helpers.js +2 -2
  501. package/dist/collection/utils/testa11y.helpers.js.map +1 -1
  502. package/dist/collection/utils/types.js +6 -6
  503. package/dist/collection/utils/types.js.map +1 -1
  504. package/dist/components/helpers.js +290 -290
  505. package/dist/components/helpers.js.map +1 -1
  506. package/dist/components/ic-accordion-group.d.ts +2 -2
  507. package/dist/components/ic-accordion-group.js +112 -112
  508. package/dist/components/ic-accordion-group.js.map +1 -1
  509. package/dist/components/ic-accordion.d.ts +2 -2
  510. package/dist/components/ic-accordion.js +125 -125
  511. package/dist/components/ic-accordion.js.map +1 -1
  512. package/dist/components/ic-alert.d.ts +2 -2
  513. package/dist/components/ic-alert2.js +98 -98
  514. package/dist/components/ic-alert2.js.map +1 -1
  515. package/dist/components/ic-back-to-top.d.ts +2 -2
  516. package/dist/components/ic-back-to-top.js +143 -143
  517. package/dist/components/ic-back-to-top.js.map +1 -1
  518. package/dist/components/ic-badge.d.ts +2 -2
  519. package/dist/components/ic-badge.js +174 -174
  520. package/dist/components/ic-badge.js.map +1 -1
  521. package/dist/components/ic-breadcrumb-group.d.ts +2 -2
  522. package/dist/components/ic-breadcrumb-group.js +199 -192
  523. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  524. package/dist/components/ic-breadcrumb.d.ts +2 -2
  525. package/dist/components/ic-breadcrumb2.js +78 -75
  526. package/dist/components/ic-breadcrumb2.js.map +1 -1
  527. package/dist/components/ic-button.d.ts +2 -2
  528. package/dist/components/ic-button2.js +332 -304
  529. package/dist/components/ic-button2.js.map +1 -1
  530. package/dist/components/ic-card.d.ts +2 -2
  531. package/dist/components/ic-card.js +155 -155
  532. package/dist/components/ic-card.js.map +1 -1
  533. package/dist/components/ic-checkbox-group.d.ts +2 -2
  534. package/dist/components/ic-checkbox-group.js +97 -97
  535. package/dist/components/ic-checkbox-group.js.map +1 -1
  536. package/dist/components/ic-checkbox.d.ts +2 -2
  537. package/dist/components/ic-checkbox.js +131 -131
  538. package/dist/components/ic-checkbox.js.map +1 -1
  539. package/dist/components/ic-chip.d.ts +2 -2
  540. package/dist/components/ic-chip.js +99 -96
  541. package/dist/components/ic-chip.js.map +1 -1
  542. package/dist/components/ic-classification-banner.d.ts +2 -2
  543. package/dist/components/ic-classification-banner.js +47 -47
  544. package/dist/components/ic-classification-banner.js.map +1 -1
  545. package/dist/components/ic-data-entity.d.ts +2 -2
  546. package/dist/components/ic-data-entity.js +39 -39
  547. package/dist/components/ic-data-entity.js.map +1 -1
  548. package/dist/components/ic-data-row.d.ts +2 -2
  549. package/dist/components/ic-data-row.js +97 -97
  550. package/dist/components/ic-data-row.js.map +1 -1
  551. package/dist/components/ic-dialog.d.ts +2 -2
  552. package/dist/components/ic-dialog.js +399 -399
  553. package/dist/components/ic-dialog.js.map +1 -1
  554. package/dist/components/ic-divider.d.ts +2 -2
  555. package/dist/components/ic-divider2.js +28 -28
  556. package/dist/components/ic-divider2.js.map +1 -1
  557. package/dist/components/ic-empty-state.d.ts +2 -2
  558. package/dist/components/ic-empty-state.js +47 -47
  559. package/dist/components/ic-empty-state.js.map +1 -1
  560. package/dist/components/ic-footer-link-group.d.ts +2 -2
  561. package/dist/components/ic-footer-link-group.js +82 -82
  562. package/dist/components/ic-footer-link-group.js.map +1 -1
  563. package/dist/components/ic-footer-link.d.ts +2 -2
  564. package/dist/components/ic-footer-link.js +71 -71
  565. package/dist/components/ic-footer-link.js.map +1 -1
  566. package/dist/components/ic-footer.d.ts +2 -2
  567. package/dist/components/ic-footer.js +108 -108
  568. package/dist/components/ic-footer.js.map +1 -1
  569. package/dist/components/ic-hero.d.ts +2 -2
  570. package/dist/components/ic-hero.js +98 -98
  571. package/dist/components/ic-hero.js.map +1 -1
  572. package/dist/components/ic-horizontal-scroll.d.ts +2 -2
  573. package/dist/components/ic-horizontal-scroll2.js +189 -189
  574. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  575. package/dist/components/ic-input-component-container.d.ts +2 -2
  576. package/dist/components/ic-input-component-container2.js +61 -61
  577. package/dist/components/ic-input-component-container2.js.map +1 -1
  578. package/dist/components/ic-input-container.d.ts +2 -2
  579. package/dist/components/ic-input-container2.js +28 -28
  580. package/dist/components/ic-input-container2.js.map +1 -1
  581. package/dist/components/ic-input-label.d.ts +2 -2
  582. package/dist/components/ic-input-label2.js +62 -62
  583. package/dist/components/ic-input-label2.js.map +1 -1
  584. package/dist/components/ic-input-validation.d.ts +2 -2
  585. package/dist/components/ic-input-validation2.js +50 -50
  586. package/dist/components/ic-input-validation2.js.map +1 -1
  587. package/dist/components/ic-link.d.ts +2 -2
  588. package/dist/components/ic-link2.js +76 -76
  589. package/dist/components/ic-link2.js.map +1 -1
  590. package/dist/components/ic-loading-indicator.d.ts +2 -2
  591. package/dist/components/ic-loading-indicator2.js +211 -210
  592. package/dist/components/ic-loading-indicator2.js.map +1 -1
  593. package/dist/components/ic-menu-group.d.ts +2 -2
  594. package/dist/components/ic-menu-group.js +30 -30
  595. package/dist/components/ic-menu-group.js.map +1 -1
  596. package/dist/components/ic-menu-item.d.ts +2 -2
  597. package/dist/components/ic-menu-item2.js +144 -144
  598. package/dist/components/ic-menu-item2.js.map +1 -1
  599. package/dist/components/ic-menu.d.ts +2 -2
  600. package/dist/components/ic-menu2.js +683 -691
  601. package/dist/components/ic-menu2.js.map +1 -1
  602. package/dist/components/ic-navigation-button.d.ts +2 -2
  603. package/dist/components/ic-navigation-button.js +121 -118
  604. package/dist/components/ic-navigation-button.js.map +1 -1
  605. package/dist/components/ic-navigation-group.d.ts +2 -2
  606. package/dist/components/ic-navigation-group.js +310 -310
  607. package/dist/components/ic-navigation-group.js.map +1 -1
  608. package/dist/components/ic-navigation-item.d.ts +2 -2
  609. package/dist/components/ic-navigation-item.js +194 -194
  610. package/dist/components/ic-navigation-item.js.map +1 -1
  611. package/dist/components/ic-navigation-menu.d.ts +2 -2
  612. package/dist/components/ic-navigation-menu2.js +139 -139
  613. package/dist/components/ic-navigation-menu2.js.map +1 -1
  614. package/dist/components/ic-page-header.d.ts +2 -2
  615. package/dist/components/ic-page-header.js +150 -147
  616. package/dist/components/ic-page-header.js.map +1 -1
  617. package/dist/components/ic-pagination-item.d.ts +2 -2
  618. package/dist/components/ic-pagination-item2.js +67 -67
  619. package/dist/components/ic-pagination-item2.js.map +1 -1
  620. package/dist/components/ic-pagination.d.ts +2 -2
  621. package/dist/components/ic-pagination.js +253 -252
  622. package/dist/components/ic-pagination.js.map +1 -1
  623. package/dist/components/ic-popover-menu.d.ts +2 -2
  624. package/dist/components/ic-popover-menu.js +283 -281
  625. package/dist/components/ic-popover-menu.js.map +1 -1
  626. package/dist/components/ic-radio-group.d.ts +2 -2
  627. package/dist/components/ic-radio-group.js +200 -200
  628. package/dist/components/ic-radio-group.js.map +1 -1
  629. package/dist/components/ic-radio-option.d.ts +2 -2
  630. package/dist/components/ic-radio-option.js +163 -163
  631. package/dist/components/ic-radio-option.js.map +1 -1
  632. package/dist/components/ic-search-bar.d.ts +2 -2
  633. package/dist/components/ic-search-bar.js +580 -580
  634. package/dist/components/ic-search-bar.js.map +1 -1
  635. package/dist/components/ic-section-container.d.ts +2 -2
  636. package/dist/components/ic-section-container2.js +31 -31
  637. package/dist/components/ic-section-container2.js.map +1 -1
  638. package/dist/components/ic-select.d.ts +2 -2
  639. package/dist/components/ic-select.js +752 -752
  640. package/dist/components/ic-select.js.map +1 -1
  641. package/dist/components/ic-side-navigation.d.ts +2 -2
  642. package/dist/components/ic-side-navigation.js +479 -481
  643. package/dist/components/ic-side-navigation.js.map +1 -1
  644. package/dist/components/ic-skeleton.d.ts +2 -2
  645. package/dist/components/ic-skeleton.js +64 -64
  646. package/dist/components/ic-skeleton.js.map +1 -1
  647. package/dist/components/ic-status-tag.d.ts +2 -2
  648. package/dist/components/ic-status-tag.js +53 -53
  649. package/dist/components/ic-status-tag.js.map +1 -1
  650. package/dist/components/ic-step.d.ts +2 -2
  651. package/dist/components/ic-step.js +157 -157
  652. package/dist/components/ic-step.js.map +1 -1
  653. package/dist/components/ic-stepper.d.ts +2 -2
  654. package/dist/components/ic-stepper.js +223 -223
  655. package/dist/components/ic-stepper.js.map +1 -1
  656. package/dist/components/ic-switch.d.ts +2 -2
  657. package/dist/components/ic-switch.js +114 -114
  658. package/dist/components/ic-switch.js.map +1 -1
  659. package/dist/components/ic-tab-context.d.ts +2 -2
  660. package/dist/components/ic-tab-context.js +271 -271
  661. package/dist/components/ic-tab-context.js.map +1 -1
  662. package/dist/components/ic-tab-group.d.ts +2 -2
  663. package/dist/components/ic-tab-group.js +64 -64
  664. package/dist/components/ic-tab-group.js.map +1 -1
  665. package/dist/components/ic-tab-panel.d.ts +2 -2
  666. package/dist/components/ic-tab-panel.js +48 -48
  667. package/dist/components/ic-tab-panel.js.map +1 -1
  668. package/dist/components/ic-tab.d.ts +2 -2
  669. package/dist/components/ic-tab.js +112 -112
  670. package/dist/components/ic-tab.js.map +1 -1
  671. package/dist/components/ic-text-field.d.ts +2 -2
  672. package/dist/components/ic-text-field2.js +293 -293
  673. package/dist/components/ic-text-field2.js.map +1 -1
  674. package/dist/components/ic-theme.d.ts +2 -2
  675. package/dist/components/ic-theme.js +65 -65
  676. package/dist/components/ic-theme.js.map +1 -1
  677. package/dist/components/ic-toast-region.d.ts +2 -2
  678. package/dist/components/ic-toast-region.js +63 -62
  679. package/dist/components/ic-toast-region.js.map +1 -1
  680. package/dist/components/ic-toast.d.ts +2 -2
  681. package/dist/components/ic-toast.js +187 -187
  682. package/dist/components/ic-toast.js.map +1 -1
  683. package/dist/components/ic-tooltip.d.ts +2 -2
  684. package/dist/components/ic-tooltip2.js +217 -211
  685. package/dist/components/ic-tooltip2.js.map +1 -1
  686. package/dist/components/ic-top-navigation.d.ts +2 -2
  687. package/dist/components/ic-top-navigation.js +263 -264
  688. package/dist/components/ic-top-navigation.js.map +1 -1
  689. package/dist/components/ic-typography.d.ts +2 -2
  690. package/dist/components/ic-typography2.js +142 -142
  691. package/dist/components/ic-typography2.js.map +1 -1
  692. package/dist/components/types.js +6 -6
  693. package/dist/components/types.js.map +1 -1
  694. package/dist/core/core.css +2 -2
  695. package/dist/core/core.esm.js +1 -1
  696. package/dist/core/core.esm.js.map +1 -1
  697. package/dist/core/{p-7ce86152.entry.js → p-056f8a67.entry.js} +2 -2
  698. package/dist/core/{p-08b59078.entry.js → p-11736fbe.entry.js} +2 -2
  699. package/dist/core/{p-657513b5.entry.js → p-1338c9df.entry.js} +2 -2
  700. package/dist/core/p-1338c9df.entry.js.map +1 -0
  701. package/dist/core/{p-ba495175.entry.js → p-15466b42.entry.js} +2 -2
  702. package/dist/core/{p-ba495175.entry.js.map → p-15466b42.entry.js.map} +1 -1
  703. package/dist/core/{p-5ccbb042.entry.js → p-15624e08.entry.js} +2 -2
  704. package/dist/core/{p-5fcd202e.entry.js → p-15ef0674.entry.js} +2 -2
  705. package/dist/core/{p-88ea1e49.entry.js → p-180e36b1.entry.js} +2 -2
  706. package/dist/core/{p-43af3cf6.entry.js → p-22c024ee.entry.js} +2 -2
  707. package/dist/core/{p-613aa265.js → p-26b7b18f.js} +1 -1
  708. package/dist/core/{p-932fb4b7.entry.js → p-287ab47c.entry.js} +2 -2
  709. package/dist/core/{p-69948c3e.entry.js → p-2b24b4bf.entry.js} +2 -2
  710. package/dist/core/{p-9f6ffced.entry.js → p-31969be6.entry.js} +2 -2
  711. package/dist/core/{p-475b7bd2.entry.js → p-335fc5e4.entry.js} +2 -2
  712. package/dist/core/{p-c9ef9f5c.entry.js → p-366bcb17.entry.js} +2 -2
  713. package/dist/core/{p-ed256f1d.entry.js → p-3a0ef91e.entry.js} +2 -2
  714. package/dist/core/{p-ca6073be.entry.js → p-498eb7ad.entry.js} +2 -2
  715. package/dist/core/p-498eb7ad.entry.js.map +1 -0
  716. package/dist/core/{p-3a814fc4.entry.js → p-4d413a72.entry.js} +2 -2
  717. package/dist/core/p-4d413a72.entry.js.map +1 -0
  718. package/dist/core/{p-cb5f19ea.entry.js → p-51f9f329.entry.js} +2 -2
  719. package/dist/core/{p-f019219c.entry.js → p-529d8955.entry.js} +2 -2
  720. package/dist/core/p-52e063d3.js +3 -0
  721. package/dist/core/p-52e063d3.js.map +1 -0
  722. package/dist/core/{p-4bc35224.entry.js → p-592c783e.entry.js} +2 -2
  723. package/dist/core/p-592c783e.entry.js.map +1 -0
  724. package/dist/core/{p-b879fa3e.entry.js → p-5c7e339f.entry.js} +2 -2
  725. package/dist/core/p-5f9d69ef.entry.js +2 -0
  726. package/dist/core/p-5f9d69ef.entry.js.map +1 -0
  727. package/dist/core/{p-2c30b583.entry.js → p-60c4604f.entry.js} +2 -2
  728. package/dist/core/{p-ccac1730.entry.js → p-6d3f9501.entry.js} +2 -2
  729. package/dist/core/{p-536b3c97.entry.js → p-6eb0421d.entry.js} +2 -2
  730. package/dist/core/{p-48525498.entry.js → p-765bdd98.entry.js} +2 -2
  731. package/dist/core/p-776232f4.entry.js +2 -0
  732. package/dist/core/p-776232f4.entry.js.map +1 -0
  733. package/dist/core/p-85026377.entry.js +2 -0
  734. package/dist/core/p-85026377.entry.js.map +1 -0
  735. package/dist/core/{p-752f0f9a.entry.js → p-8a83f391.entry.js} +2 -2
  736. package/dist/core/p-8a83f391.entry.js.map +1 -0
  737. package/dist/core/{p-e3bffcae.entry.js → p-94e88827.entry.js} +2 -2
  738. package/dist/core/{p-8fb4f0c0.js → p-95a864bf.js} +2 -2
  739. package/dist/core/{p-c0c62df4.entry.js → p-9639e33f.entry.js} +2 -2
  740. package/dist/core/p-9639e33f.entry.js.map +1 -0
  741. package/dist/core/{p-eb4641a9.entry.js → p-96da1e85.entry.js} +2 -2
  742. package/dist/core/{p-0c82048e.entry.js → p-9c30720d.entry.js} +2 -2
  743. package/dist/core/p-a46130c8.entry.js +2 -0
  744. package/dist/core/p-a46130c8.entry.js.map +1 -0
  745. package/dist/core/p-a908e7a9.entry.js +2 -0
  746. package/dist/core/p-a908e7a9.entry.js.map +1 -0
  747. package/dist/core/{p-a76912b0.entry.js → p-aa0a9870.entry.js} +2 -2
  748. package/dist/core/{p-76563540.entry.js → p-ad36a704.entry.js} +2 -2
  749. package/dist/core/{p-d80f99e0.entry.js → p-b0088956.entry.js} +2 -2
  750. package/dist/core/p-b39ecae2.entry.js +2 -0
  751. package/dist/core/p-b39ecae2.entry.js.map +1 -0
  752. package/dist/core/{p-2265e418.entry.js → p-b6a575c3.entry.js} +2 -2
  753. package/dist/core/{p-fbc8a739.entry.js → p-b9736cf4.entry.js} +2 -2
  754. package/dist/core/{p-025f9d2a.entry.js → p-b99f9e89.entry.js} +2 -2
  755. package/dist/core/{p-b0ce60a0.entry.js → p-c2452388.entry.js} +2 -2
  756. package/dist/core/{p-345fe84a.entry.js → p-c770e7a2.entry.js} +2 -2
  757. package/dist/core/{p-748159fe.entry.js → p-ca48e97a.entry.js} +2 -2
  758. package/dist/core/{p-5a3ca50a.entry.js → p-cd8de4c5.entry.js} +2 -2
  759. package/dist/core/{p-a4397df4.entry.js → p-cfc930f6.entry.js} +2 -2
  760. package/dist/core/{p-3a15202f.entry.js → p-d18450f9.entry.js} +2 -2
  761. package/dist/core/p-d18450f9.entry.js.map +1 -0
  762. package/dist/core/p-daebb58a.entry.js +2 -0
  763. package/dist/core/p-daebb58a.entry.js.map +1 -0
  764. package/dist/core/p-dbb5b008.entry.js +2 -0
  765. package/dist/core/p-dbb5b008.entry.js.map +1 -0
  766. package/dist/core/{p-9ff57f09.entry.js → p-e5abfadd.entry.js} +2 -2
  767. package/dist/core/{p-41c6eaa1.entry.js → p-e9738c74.entry.js} +2 -2
  768. package/dist/core/p-ea17e371.entry.js +2 -0
  769. package/dist/core/p-ea17e371.entry.js.map +1 -0
  770. package/dist/core/{p-e2fd542e.entry.js → p-edd29edc.entry.js} +2 -2
  771. package/dist/core/p-edec0936.entry.js +2 -0
  772. package/dist/core/p-edec0936.entry.js.map +1 -0
  773. package/dist/core/{p-8b18346a.entry.js → p-f0809037.entry.js} +2 -2
  774. package/dist/core/{p-5bb6c79b.entry.js → p-f2e6b9ef.entry.js} +2 -2
  775. package/dist/core/{p-cf4bacee.entry.js → p-fdb4b48f.entry.js} +2 -2
  776. package/dist/esm/core.js +4 -4
  777. package/dist/esm/core.js.map +1 -1
  778. package/dist/esm/{helpers-24f6e762.js → helpers-c597f246.js} +292 -292
  779. package/dist/esm/helpers-c597f246.js.map +1 -0
  780. package/dist/esm/ic-accordion-group.entry.js +71 -71
  781. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  782. package/dist/esm/ic-accordion.entry.js +99 -99
  783. package/dist/esm/ic-accordion.entry.js.map +1 -1
  784. package/dist/esm/ic-alert.entry.js +58 -58
  785. package/dist/esm/ic-alert.entry.js.map +1 -1
  786. package/dist/esm/ic-back-to-top.entry.js +120 -120
  787. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  788. package/dist/esm/ic-badge.entry.js +146 -146
  789. package/dist/esm/ic-badge.entry.js.map +1 -1
  790. package/dist/esm/ic-breadcrumb-group.entry.js +172 -166
  791. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  792. package/dist/esm/ic-breadcrumb.entry.js +55 -53
  793. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  794. package/dist/esm/ic-button_3.entry.js +636 -606
  795. package/dist/esm/ic-button_3.entry.js.map +1 -1
  796. package/dist/esm/ic-card.entry.js +105 -105
  797. package/dist/esm/ic-card.entry.js.map +1 -1
  798. package/dist/esm/ic-checkbox-group.entry.js +60 -60
  799. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  800. package/dist/esm/ic-checkbox.entry.js +95 -95
  801. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  802. package/dist/esm/ic-chip.entry.js +67 -65
  803. package/dist/esm/ic-chip.entry.js.map +1 -1
  804. package/dist/esm/ic-classification-banner.entry.js +23 -23
  805. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  806. package/dist/esm/ic-data-entity.entry.js +17 -17
  807. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  808. package/dist/esm/ic-data-row.entry.js +74 -74
  809. package/dist/esm/ic-data-row.entry.js.map +1 -1
  810. package/dist/esm/ic-dialog.entry.js +339 -339
  811. package/dist/esm/ic-dialog.entry.js.map +1 -1
  812. package/dist/esm/ic-divider.entry.js +16 -16
  813. package/dist/esm/ic-divider.entry.js.map +1 -1
  814. package/dist/esm/ic-empty-state.entry.js +24 -24
  815. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  816. package/dist/esm/ic-footer-link-group.entry.js +55 -55
  817. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  818. package/dist/esm/ic-footer-link.entry.js +50 -50
  819. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  820. package/dist/esm/ic-footer.entry.js +78 -78
  821. package/dist/esm/ic-footer.entry.js.map +1 -1
  822. package/dist/esm/ic-hero.entry.js +62 -62
  823. package/dist/esm/ic-hero.entry.js.map +1 -1
  824. package/dist/esm/ic-horizontal-scroll.entry.js +151 -151
  825. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  826. package/dist/esm/ic-input-component-container_3.entry.js +670 -678
  827. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  828. package/dist/esm/ic-input-label_2.entry.js +63 -63
  829. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  830. package/dist/esm/ic-link.entry.js +55 -55
  831. package/dist/esm/ic-link.entry.js.map +1 -1
  832. package/dist/esm/ic-menu-group.entry.js +12 -12
  833. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  834. package/dist/esm/ic-menu-item.entry.js +100 -100
  835. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  836. package/dist/esm/ic-navigation-button.entry.js +79 -76
  837. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  838. package/dist/esm/ic-navigation-group.entry.js +283 -283
  839. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  840. package/dist/esm/ic-navigation-item.entry.js +152 -152
  841. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  842. package/dist/esm/ic-navigation-menu.entry.js +105 -105
  843. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  844. package/dist/esm/ic-page-header.entry.js +96 -93
  845. package/dist/esm/ic-page-header.entry.js.map +1 -1
  846. package/dist/esm/ic-pagination-item.entry.js +42 -42
  847. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  848. package/dist/esm/ic-pagination.entry.js +196 -195
  849. package/dist/esm/ic-pagination.entry.js.map +1 -1
  850. package/dist/esm/ic-popover-menu.entry.js +233 -231
  851. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  852. package/dist/esm/ic-radio-group.entry.js +156 -156
  853. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  854. package/dist/esm/ic-radio-option.entry.js +128 -128
  855. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  856. package/dist/esm/ic-search-bar.entry.js +474 -474
  857. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  858. package/dist/esm/ic-section-container.entry.js +15 -15
  859. package/dist/esm/ic-section-container.entry.js.map +1 -1
  860. package/dist/esm/ic-select.entry.js +640 -640
  861. package/dist/esm/ic-select.entry.js.map +1 -1
  862. package/dist/esm/ic-side-navigation.entry.js +424 -426
  863. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  864. package/dist/esm/ic-skeleton.entry.js +43 -43
  865. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  866. package/dist/esm/ic-status-tag.entry.js +29 -29
  867. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  868. package/dist/esm/ic-step.entry.js +121 -121
  869. package/dist/esm/ic-step.entry.js.map +1 -1
  870. package/dist/esm/ic-stepper.entry.js +200 -200
  871. package/dist/esm/ic-stepper.entry.js.map +1 -1
  872. package/dist/esm/ic-switch.entry.js +77 -77
  873. package/dist/esm/ic-switch.entry.js.map +1 -1
  874. package/dist/esm/ic-tab-context.entry.js +252 -252
  875. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  876. package/dist/esm/ic-tab-group.entry.js +23 -23
  877. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  878. package/dist/esm/ic-tab-panel.entry.js +31 -31
  879. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  880. package/dist/esm/ic-tab.entry.js +86 -86
  881. package/dist/esm/ic-tab.entry.js.map +1 -1
  882. package/dist/esm/ic-text-field.entry.js +210 -210
  883. package/dist/esm/ic-text-field.entry.js.map +1 -1
  884. package/dist/esm/ic-theme.entry.js +51 -51
  885. package/dist/esm/ic-theme.entry.js.map +1 -1
  886. package/dist/esm/ic-toast-region.entry.js +47 -46
  887. package/dist/esm/ic-toast-region.entry.js.map +1 -1
  888. package/dist/esm/ic-toast.entry.js +145 -145
  889. package/dist/esm/ic-toast.entry.js.map +1 -1
  890. package/dist/esm/ic-top-navigation.entry.js +198 -199
  891. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  892. package/dist/esm/ic-typography.entry.js +118 -118
  893. package/dist/esm/ic-typography.entry.js.map +1 -1
  894. package/dist/{cjs/index-4f8c900f.js → esm/index-05003e1c.js} +603 -407
  895. package/dist/esm/index-05003e1c.js.map +1 -0
  896. package/dist/esm/loader.js +3 -3
  897. package/dist/esm/types-6f6b41a5.js +16 -0
  898. package/dist/esm/{types-b2398b37.js.map → types-6f6b41a5.js.map} +1 -1
  899. package/dist/node.d.ts +12 -0
  900. package/dist/types/components/ic-accordion/ic-accordion.d.ts +48 -48
  901. package/dist/types/components/ic-accordion-group/ic-accordion-group.d.ts +30 -30
  902. package/dist/types/components/ic-alert/ic-alert.d.ts +40 -40
  903. package/dist/types/components/ic-back-to-top/ic-back-to-top.d.ts +23 -23
  904. package/dist/types/components/ic-badge/ic-badge.d.ts +57 -57
  905. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.d.ts +30 -25
  906. package/dist/types/components/ic-breadcrumb-group/ic-breadcrumb-group.d.ts +43 -38
  907. package/dist/types/components/ic-button/ic-button.d.ts +150 -137
  908. package/dist/types/components/ic-card/ic-card.d.ts +68 -68
  909. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +91 -91
  910. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +50 -50
  911. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.types.d.ts +6 -6
  912. package/dist/types/components/ic-chip/ic-chip.d.ts +50 -46
  913. package/dist/types/components/ic-classification-banner/ic-classification-banner.d.ts +21 -21
  914. package/dist/types/components/ic-data-entity/ic-data-entity.d.ts +14 -14
  915. package/dist/types/components/ic-data-row/ic-data-row.d.ts +34 -34
  916. package/dist/types/components/ic-dialog/ic-dialog.d.ts +139 -139
  917. package/dist/types/components/ic-divider/ic-divider.d.ts +3 -3
  918. package/dist/types/components/ic-empty-state/ic-empty-state.d.ts +27 -27
  919. package/dist/types/components/ic-footer/ic-footer.d.ts +41 -41
  920. package/dist/types/components/ic-footer-link/ic-footer-link.d.ts +35 -35
  921. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +17 -17
  922. package/dist/types/components/ic-hero/ic-hero.d.ts +51 -51
  923. package/dist/types/components/ic-horizontal-scroll/ic-horizontal-scroll.d.ts +41 -41
  924. package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +42 -42
  925. package/dist/types/components/ic-input-container/ic-input-container.d.ts +9 -9
  926. package/dist/types/components/ic-input-label/ic-input-label.d.ts +38 -38
  927. package/dist/types/components/ic-input-validation/ic-input-validation.d.ts +23 -23
  928. package/dist/types/components/ic-link/ic-link.d.ts +44 -44
  929. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +76 -76
  930. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.types.d.ts +3 -3
  931. package/dist/types/components/ic-menu/ic-menu.d.ts +184 -183
  932. package/dist/types/components/ic-menu/ic-menu.types.d.ts +6 -6
  933. package/dist/types/components/ic-menu-group/ic-menu-group.d.ts +6 -6
  934. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +66 -66
  935. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +47 -47
  936. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +62 -62
  937. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +80 -80
  938. package/dist/types/components/ic-navigation-menu/ic-navigation-menu.d.ts +29 -29
  939. package/dist/types/components/ic-page-header/ic-page-header.d.ts +48 -48
  940. package/dist/types/components/ic-pagination/ic-pagination.d.ts +78 -77
  941. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +1 -1
  942. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +42 -42
  943. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +65 -60
  944. package/dist/types/components/ic-radio-group/ic-radio-group.d.ts +67 -67
  945. package/dist/types/components/ic-radio-group/ic-radio-group.types.d.ts +5 -5
  946. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +89 -89
  947. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +248 -248
  948. package/dist/types/components/ic-search-bar/ic-search-bar.types.d.ts +1 -1
  949. package/dist/types/components/ic-section-container/ic-section-container.d.ts +9 -9
  950. package/dist/types/components/ic-select/ic-select.d.ts +269 -269
  951. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +103 -97
  952. package/dist/types/components/ic-side-navigation/ic-side-navigation.types.d.ts +10 -6
  953. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +19 -19
  954. package/dist/types/components/ic-status-tag/ic-status-tag.d.ts +31 -31
  955. package/dist/types/components/ic-step/ic-step.d.ts +51 -51
  956. package/dist/types/components/ic-stepper/ic-stepper.d.ts +40 -40
  957. package/dist/types/components/ic-switch/ic-switch.d.ts +73 -73
  958. package/dist/types/components/ic-switch/ic-switch.types.d.ts +2 -2
  959. package/dist/types/components/ic-tab/ic-tab.d.ts +51 -51
  960. package/dist/types/components/ic-tab/ic-tab.types.d.ts +4 -4
  961. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +59 -59
  962. package/dist/types/components/ic-tab-group/ic-tab-group.d.ts +19 -19
  963. package/dist/types/components/ic-tab-panel/ic-tab-panel.d.ts +33 -33
  964. package/dist/types/components/ic-text-field/ic-text-field.d.ts +214 -214
  965. package/dist/types/components/ic-theme/ic-theme.d.ts +14 -14
  966. package/dist/types/components/ic-toast/ic-toast.d.ts +58 -58
  967. package/dist/types/components/ic-toast-region/ic-toast-region.d.ts +16 -15
  968. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +58 -50
  969. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +77 -72
  970. package/dist/types/components/ic-typography/ic-typography.d.ts +54 -54
  971. package/dist/types/components.d.ts +433 -3
  972. package/dist/types/interface.d.ts +3 -0
  973. package/dist/types/stencil-public-runtime.d.ts +29 -0
  974. package/dist/types/testspec.setup.d.ts +7 -7
  975. package/dist/types/utils/constants.d.ts +26 -26
  976. package/dist/types/utils/helpers.d.ts +7 -7
  977. package/dist/types/utils/types.d.ts +31 -31
  978. package/hydrate/index.d.ts +2 -2
  979. package/hydrate/index.js +15888 -14092
  980. package/package.json +8 -5
  981. package/vscode-data.json +3947 -0
  982. package/dist/cjs/helpers-0d63359f.js.map +0 -1
  983. package/dist/cjs/index-4f8c900f.js.map +0 -1
  984. package/dist/cjs/types-7d67439f.js +0 -16
  985. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.e2e.js +0 -57
  986. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.e2e.js.map +0 -1
  987. package/dist/collection/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.js +0 -31
  988. package/dist/collection/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.js.map +0 -1
  989. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js +0 -117
  990. package/dist/collection/components/ic-accordion-group/test/basic/ic-accordion-group.e2e.js.map +0 -1
  991. package/dist/collection/components/ic-alert/test/a11y/ic-alert.test.a11y.js +0 -11
  992. package/dist/collection/components/ic-alert/test/a11y/ic-alert.test.a11y.js.map +0 -1
  993. package/dist/collection/components/ic-alert/test/basic/ic-alert.e2e.js +0 -16
  994. package/dist/collection/components/ic-alert/test/basic/ic-alert.e2e.js.map +0 -1
  995. package/dist/collection/components/ic-back-to-top/test/a11y/ic-back-to-top.test.a11y.js +0 -28
  996. package/dist/collection/components/ic-back-to-top/test/a11y/ic-back-to-top.test.a11y.js.map +0 -1
  997. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.e2e.js +0 -68
  998. package/dist/collection/components/ic-back-to-top/test/basic/ic-back-to-top.e2e.js.map +0 -1
  999. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js +0 -16
  1000. package/dist/collection/components/ic-badge/test/a11y/ic-badge.test.a11y.js.map +0 -1
  1001. package/dist/collection/components/ic-classification-banner/test/a11y/ic-classification-banner.test.a11y.js +0 -11
  1002. package/dist/collection/components/ic-classification-banner/test/a11y/ic-classification-banner.test.a11y.js.map +0 -1
  1003. package/dist/collection/components/ic-toast/test/a11y/ic-toast.test.a11y.js +0 -16
  1004. package/dist/collection/components/ic-toast/test/a11y/ic-toast.test.a11y.js.map +0 -1
  1005. package/dist/collection/components/ic-toast/test/basic/ic-toast.e2e.js +0 -82
  1006. package/dist/collection/components/ic-toast/test/basic/ic-toast.e2e.js.map +0 -1
  1007. package/dist/core/p-03329fd0.entry.js +0 -2
  1008. package/dist/core/p-03329fd0.entry.js.map +0 -1
  1009. package/dist/core/p-24da56e7.entry.js +0 -2
  1010. package/dist/core/p-24da56e7.entry.js.map +0 -1
  1011. package/dist/core/p-39c8111d.entry.js +0 -2
  1012. package/dist/core/p-39c8111d.entry.js.map +0 -1
  1013. package/dist/core/p-3a15202f.entry.js.map +0 -1
  1014. package/dist/core/p-3a814fc4.entry.js.map +0 -1
  1015. package/dist/core/p-4bc35224.entry.js.map +0 -1
  1016. package/dist/core/p-59bdafff.entry.js +0 -2
  1017. package/dist/core/p-59bdafff.entry.js.map +0 -1
  1018. package/dist/core/p-657513b5.entry.js.map +0 -1
  1019. package/dist/core/p-69d15528.entry.js +0 -2
  1020. package/dist/core/p-69d15528.entry.js.map +0 -1
  1021. package/dist/core/p-6c376756.entry.js +0 -2
  1022. package/dist/core/p-6c376756.entry.js.map +0 -1
  1023. package/dist/core/p-717907de.entry.js +0 -2
  1024. package/dist/core/p-717907de.entry.js.map +0 -1
  1025. package/dist/core/p-752f0f9a.entry.js.map +0 -1
  1026. package/dist/core/p-99fad66b.entry.js +0 -2
  1027. package/dist/core/p-99fad66b.entry.js.map +0 -1
  1028. package/dist/core/p-9d124fc7.js +0 -3
  1029. package/dist/core/p-9d124fc7.js.map +0 -1
  1030. package/dist/core/p-c0719bf4.entry.js +0 -2
  1031. package/dist/core/p-c0719bf4.entry.js.map +0 -1
  1032. package/dist/core/p-c0c62df4.entry.js.map +0 -1
  1033. package/dist/core/p-ca6073be.entry.js.map +0 -1
  1034. package/dist/core/p-e9ddb8cd.entry.js +0 -2
  1035. package/dist/core/p-e9ddb8cd.entry.js.map +0 -1
  1036. package/dist/esm/helpers-24f6e762.js.map +0 -1
  1037. package/dist/esm/index-813020f1.js.map +0 -1
  1038. package/dist/esm/types-b2398b37.js +0 -16
  1039. package/dist/types/components/ic-accordion-group/test/a11y/ic-accordion-group.test.a11y.d.ts +0 -1
  1040. package/dist/types/components/ic-alert/test/a11y/ic-alert.test.a11y.d.ts +0 -1
  1041. package/dist/types/components/ic-back-to-top/test/a11y/ic-back-to-top.test.a11y.d.ts +0 -1
  1042. package/dist/types/components/ic-badge/test/a11y/ic-badge.test.a11y.d.ts +0 -1
  1043. package/dist/types/components/ic-classification-banner/test/a11y/ic-classification-banner.test.a11y.d.ts +0 -1
  1044. package/dist/types/components/ic-toast/test/a11y/ic-toast.test.a11y.d.ts +0 -1
  1045. /package/dist/core/{p-7ce86152.entry.js.map → p-056f8a67.entry.js.map} +0 -0
  1046. /package/dist/core/{p-08b59078.entry.js.map → p-11736fbe.entry.js.map} +0 -0
  1047. /package/dist/core/{p-5ccbb042.entry.js.map → p-15624e08.entry.js.map} +0 -0
  1048. /package/dist/core/{p-5fcd202e.entry.js.map → p-15ef0674.entry.js.map} +0 -0
  1049. /package/dist/core/{p-88ea1e49.entry.js.map → p-180e36b1.entry.js.map} +0 -0
  1050. /package/dist/core/{p-43af3cf6.entry.js.map → p-22c024ee.entry.js.map} +0 -0
  1051. /package/dist/core/{p-613aa265.js.map → p-26b7b18f.js.map} +0 -0
  1052. /package/dist/core/{p-932fb4b7.entry.js.map → p-287ab47c.entry.js.map} +0 -0
  1053. /package/dist/core/{p-69948c3e.entry.js.map → p-2b24b4bf.entry.js.map} +0 -0
  1054. /package/dist/core/{p-9f6ffced.entry.js.map → p-31969be6.entry.js.map} +0 -0
  1055. /package/dist/core/{p-475b7bd2.entry.js.map → p-335fc5e4.entry.js.map} +0 -0
  1056. /package/dist/core/{p-c9ef9f5c.entry.js.map → p-366bcb17.entry.js.map} +0 -0
  1057. /package/dist/core/{p-ed256f1d.entry.js.map → p-3a0ef91e.entry.js.map} +0 -0
  1058. /package/dist/core/{p-cb5f19ea.entry.js.map → p-51f9f329.entry.js.map} +0 -0
  1059. /package/dist/core/{p-f019219c.entry.js.map → p-529d8955.entry.js.map} +0 -0
  1060. /package/dist/core/{p-b879fa3e.entry.js.map → p-5c7e339f.entry.js.map} +0 -0
  1061. /package/dist/core/{p-2c30b583.entry.js.map → p-60c4604f.entry.js.map} +0 -0
  1062. /package/dist/core/{p-ccac1730.entry.js.map → p-6d3f9501.entry.js.map} +0 -0
  1063. /package/dist/core/{p-536b3c97.entry.js.map → p-6eb0421d.entry.js.map} +0 -0
  1064. /package/dist/core/{p-48525498.entry.js.map → p-765bdd98.entry.js.map} +0 -0
  1065. /package/dist/core/{p-e3bffcae.entry.js.map → p-94e88827.entry.js.map} +0 -0
  1066. /package/dist/core/{p-8fb4f0c0.js.map → p-95a864bf.js.map} +0 -0
  1067. /package/dist/core/{p-eb4641a9.entry.js.map → p-96da1e85.entry.js.map} +0 -0
  1068. /package/dist/core/{p-0c82048e.entry.js.map → p-9c30720d.entry.js.map} +0 -0
  1069. /package/dist/core/{p-a76912b0.entry.js.map → p-aa0a9870.entry.js.map} +0 -0
  1070. /package/dist/core/{p-76563540.entry.js.map → p-ad36a704.entry.js.map} +0 -0
  1071. /package/dist/core/{p-d80f99e0.entry.js.map → p-b0088956.entry.js.map} +0 -0
  1072. /package/dist/core/{p-2265e418.entry.js.map → p-b6a575c3.entry.js.map} +0 -0
  1073. /package/dist/core/{p-fbc8a739.entry.js.map → p-b9736cf4.entry.js.map} +0 -0
  1074. /package/dist/core/{p-025f9d2a.entry.js.map → p-b99f9e89.entry.js.map} +0 -0
  1075. /package/dist/core/{p-b0ce60a0.entry.js.map → p-c2452388.entry.js.map} +0 -0
  1076. /package/dist/core/{p-345fe84a.entry.js.map → p-c770e7a2.entry.js.map} +0 -0
  1077. /package/dist/core/{p-748159fe.entry.js.map → p-ca48e97a.entry.js.map} +0 -0
  1078. /package/dist/core/{p-5a3ca50a.entry.js.map → p-cd8de4c5.entry.js.map} +0 -0
  1079. /package/dist/core/{p-a4397df4.entry.js.map → p-cfc930f6.entry.js.map} +0 -0
  1080. /package/dist/core/{p-9ff57f09.entry.js.map → p-e5abfadd.entry.js.map} +0 -0
  1081. /package/dist/core/{p-41c6eaa1.entry.js.map → p-e9738c74.entry.js.map} +0 -0
  1082. /package/dist/core/{p-e2fd542e.entry.js.map → p-edd29edc.entry.js.map} +0 -0
  1083. /package/dist/core/{p-8b18346a.entry.js.map → p-f0809037.entry.js.map} +0 -0
  1084. /package/dist/core/{p-5bb6c79b.entry.js.map → p-f2e6b9ef.entry.js.map} +0 -0
  1085. /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