@ukic/canary-web-components 2.0.0-canary.6 → 2.0.0-canary.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (412) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/helpers-93c5fc92.js +198 -0
  3. package/dist/cjs/helpers-93c5fc92.js.map +1 -0
  4. package/dist/cjs/{helpers-86375e76.js → helpers-b525d45a.js} +45 -4
  5. package/dist/cjs/helpers-b525d45a.js.map +1 -0
  6. package/dist/cjs/ic-accordion-group.cjs.entry.js +6 -2
  7. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  10. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-badge.cjs.entry.js +4 -3
  13. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-button_3.cjs.entry.js +34 -10
  17. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-card.cjs.entry.js +7 -7
  19. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-data-entity.cjs.entry.js +3 -6
  24. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-data-row.cjs.entry.js +21 -35
  26. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-dialog.cjs.entry.js +4 -2
  28. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +12 -10
  37. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +2599 -0
  43. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +1 -0
  44. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  48. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-pagination-bar.cjs.entry.js +2 -18
  50. package/dist/cjs/ic-pagination-bar.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-pagination_4.cjs.entry.js +21 -13
  52. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-select-with-multi.cjs.entry.js +837 -0
  60. package/dist/cjs/ic-select-with-multi.cjs.entry.js.map +1 -0
  61. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -5
  62. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  66. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  69. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  70. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +184 -0
  73. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -0
  74. package/dist/cjs/ic-toggle-button.cjs.entry.js +6 -3
  75. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  76. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  77. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  78. package/dist/cjs/index-4cf27b16.js +12 -0
  79. package/dist/cjs/loader.cjs.js +1 -1
  80. package/dist/collection/collection-manifest.json +4 -1
  81. package/dist/collection/components/ic-menu-with-multi/ic-menu.css +701 -0
  82. package/dist/collection/components/ic-menu-with-multi/ic-menu.js +1458 -0
  83. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +1 -0
  84. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js +880 -0
  85. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js.map +1 -0
  86. package/dist/collection/components/ic-select-with-multi/assets/Check.svg +3 -0
  87. package/dist/collection/components/ic-select-with-multi/assets/Clear.svg +3 -0
  88. package/dist/collection/components/ic-select-with-multi/assets/Expand.svg +3 -0
  89. package/dist/collection/components/ic-select-with-multi/ic-select.css +693 -0
  90. package/dist/collection/components/ic-select-with-multi/ic-select.js +1649 -0
  91. package/dist/collection/components/ic-select-with-multi/ic-select.js.map +1 -0
  92. package/dist/collection/components/ic-select-with-multi/story-data.js +216 -0
  93. package/dist/collection/components/ic-select-with-multi/story-data.js.map +1 -0
  94. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js +146 -0
  95. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js.map +1 -0
  96. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js +2040 -0
  97. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js.map +1 -0
  98. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js +1518 -0
  99. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js.map +1 -0
  100. package/dist/collection/utils/constants.js +28 -0
  101. package/dist/collection/utils/constants.js.map +1 -0
  102. package/dist/collection/utils/helpers.js +168 -5
  103. package/dist/collection/utils/helpers.js.map +1 -1
  104. package/dist/collection/utils/types.js +13 -0
  105. package/dist/collection/utils/types.js.map +1 -0
  106. package/dist/components/helpers.js +44 -4
  107. package/dist/components/helpers.js.map +1 -1
  108. package/dist/components/helpers2.js +183 -0
  109. package/dist/components/helpers2.js.map +1 -0
  110. package/dist/components/ic-accordion-group.js +7 -2
  111. package/dist/components/ic-accordion-group.js.map +1 -1
  112. package/dist/components/ic-alert2.js +1 -1
  113. package/dist/components/ic-alert2.js.map +1 -1
  114. package/dist/components/ic-back-to-top.js +1 -1
  115. package/dist/components/ic-badge.js +4 -3
  116. package/dist/components/ic-badge.js.map +1 -1
  117. package/dist/components/ic-breadcrumb-group.js +1 -1
  118. package/dist/components/ic-breadcrumb2.js +1 -1
  119. package/dist/components/ic-button2.js +38 -9
  120. package/dist/components/ic-button2.js.map +1 -1
  121. package/dist/components/ic-card.js +8 -20
  122. package/dist/components/ic-card.js.map +1 -1
  123. package/dist/components/ic-checkbox-group.js +1 -1
  124. package/dist/components/ic-checkbox.js +1 -1
  125. package/dist/components/ic-chip.js +1 -1
  126. package/dist/components/ic-data-entity.js +3 -6
  127. package/dist/components/ic-data-entity.js.map +1 -1
  128. package/dist/components/ic-data-row.js +21 -35
  129. package/dist/components/ic-data-row.js.map +1 -1
  130. package/dist/components/ic-dialog.js +5 -2
  131. package/dist/components/ic-dialog.js.map +1 -1
  132. package/dist/components/ic-divider2.js +1 -1
  133. package/dist/components/ic-footer-link-group.js +1 -1
  134. package/dist/components/ic-footer-link.js +1 -1
  135. package/dist/components/ic-footer.js +1 -1
  136. package/dist/components/ic-hero.js +1 -1
  137. package/dist/components/ic-horizontal-scroll2.js +1 -1
  138. package/dist/components/ic-input-component-container2.js +7 -6
  139. package/dist/components/ic-input-component-container2.js.map +1 -1
  140. package/dist/components/ic-input-label2.js +1 -1
  141. package/dist/components/ic-input-validation2.js +1 -1
  142. package/dist/components/ic-loading-indicator2.js +1 -1
  143. package/dist/components/ic-menu-group.js +1 -1
  144. package/dist/components/ic-menu-item2.js +1 -1
  145. package/dist/components/ic-menu-with-multi.d.ts +11 -0
  146. package/dist/components/ic-menu-with-multi.js +8 -0
  147. package/dist/components/ic-menu-with-multi.js.map +1 -0
  148. package/dist/components/ic-menu2.js +5 -4
  149. package/dist/components/ic-menu2.js.map +1 -1
  150. package/dist/components/ic-menu3.js +2665 -0
  151. package/dist/components/ic-menu3.js.map +1 -0
  152. package/dist/components/ic-navigation-button.js +1 -1
  153. package/dist/components/ic-navigation-group.js +1 -1
  154. package/dist/components/ic-navigation-item.js +1 -1
  155. package/dist/components/ic-navigation-menu2.js +1 -1
  156. package/dist/components/ic-page-header.js +1 -1
  157. package/dist/components/ic-pagination-bar2.js +1 -17
  158. package/dist/components/ic-pagination-bar2.js.map +1 -1
  159. package/dist/components/ic-pagination-item2.js +1 -1
  160. package/dist/components/ic-pagination2.js +1 -1
  161. package/dist/components/ic-popover-menu.js +2 -2
  162. package/dist/components/ic-popover-menu.js.map +1 -1
  163. package/dist/components/ic-radio-group.js +1 -1
  164. package/dist/components/ic-radio-option.js +1 -1
  165. package/dist/components/ic-search-bar.js +1 -1
  166. package/dist/components/ic-search-bar.js.map +1 -1
  167. package/dist/components/ic-select-with-multi.d.ts +11 -0
  168. package/dist/components/ic-select-with-multi.js +962 -0
  169. package/dist/components/ic-select-with-multi.js.map +1 -0
  170. package/dist/components/ic-select2.js +23 -14
  171. package/dist/components/ic-select2.js.map +1 -1
  172. package/dist/components/ic-side-navigation.js +1 -5
  173. package/dist/components/ic-side-navigation.js.map +1 -1
  174. package/dist/components/ic-step.js +1 -1
  175. package/dist/components/ic-stepper.js +1 -1
  176. package/dist/components/ic-switch.js +1 -1
  177. package/dist/components/ic-tab-panel.js +1 -1
  178. package/dist/components/ic-tab.js +1 -1
  179. package/dist/components/ic-text-field2.js +1 -1
  180. package/dist/components/ic-theme.js +1 -1
  181. package/dist/components/ic-toast.js +1 -1
  182. package/dist/components/ic-toggle-button-group.js +210 -0
  183. package/dist/components/ic-toggle-button-group.js.map +1 -0
  184. package/dist/components/ic-toggle-button.js +6 -3
  185. package/dist/components/ic-toggle-button.js.map +1 -1
  186. package/dist/components/ic-tooltip2.js +1 -1
  187. package/dist/components/ic-tooltip2.js.map +1 -1
  188. package/dist/components/ic-top-navigation.js +1 -1
  189. package/dist/core/core.css +8 -5
  190. package/dist/core/core.esm.js +1 -1
  191. package/dist/core/core.esm.js.map +1 -1
  192. package/dist/core/{p-4119a26b.entry.js → p-045359e1.entry.js} +2 -2
  193. package/dist/core/{p-cae71c32.entry.js → p-10fb4c46.entry.js} +2 -2
  194. package/dist/core/{p-7a0790e4.entry.js → p-169bfa51.entry.js} +2 -2
  195. package/dist/core/{p-56645c00.entry.js → p-1ca332ca.entry.js} +2 -2
  196. package/dist/core/{p-fddc7254.entry.js → p-204ace96.entry.js} +2 -2
  197. package/dist/core/p-21150122.entry.js +2 -0
  198. package/dist/core/p-21150122.entry.js.map +1 -0
  199. package/dist/core/{p-5332a426.entry.js → p-2eac7dcc.entry.js} +2 -2
  200. package/dist/core/{p-3294eba4.entry.js → p-3803a5b5.entry.js} +2 -2
  201. package/dist/core/{p-24945ee5.entry.js → p-452985d9.entry.js} +2 -2
  202. package/dist/core/p-452985d9.entry.js.map +1 -0
  203. package/dist/core/p-4753bac8.entry.js +2 -0
  204. package/dist/core/p-4753bac8.entry.js.map +1 -0
  205. package/dist/core/{p-a048beab.entry.js → p-4baa0916.entry.js} +2 -2
  206. package/dist/core/{p-7e0197a4.entry.js → p-4f413fc0.entry.js} +2 -2
  207. package/dist/core/{p-a6a90c56.entry.js → p-595be57d.entry.js} +2 -2
  208. package/dist/core/{p-5f8c4c83.entry.js → p-5ae93c16.entry.js} +2 -2
  209. package/dist/core/{p-03fdee20.entry.js → p-5e0c830b.entry.js} +2 -2
  210. package/dist/core/{p-03fdee20.entry.js.map → p-5e0c830b.entry.js.map} +1 -1
  211. package/dist/core/p-624d4f5f.entry.js +2 -0
  212. package/dist/core/p-624d4f5f.entry.js.map +1 -0
  213. package/dist/core/{p-fff91bd9.entry.js → p-6933f8e9.entry.js} +2 -2
  214. package/dist/core/{p-043e4073.entry.js → p-6c3044b6.entry.js} +2 -2
  215. package/dist/core/{p-7b17f3ce.entry.js → p-73be1251.entry.js} +2 -2
  216. package/dist/core/{p-e0d8d7a5.entry.js → p-75dac3d1.entry.js} +2 -2
  217. package/dist/core/{p-a3ab9f4c.entry.js → p-76915584.entry.js} +2 -2
  218. package/dist/core/p-76915584.entry.js.map +1 -0
  219. package/dist/core/{p-78ad0c34.entry.js → p-7ef8d616.entry.js} +2 -2
  220. package/dist/core/{p-78ad0c34.entry.js.map → p-7ef8d616.entry.js.map} +1 -1
  221. package/dist/core/{p-f2318ddc.entry.js → p-81ddc39d.entry.js} +2 -2
  222. package/dist/core/{p-3e36c9e4.entry.js → p-869954a2.entry.js} +2 -2
  223. package/dist/core/{p-a561980f.entry.js → p-88d54b72.entry.js} +2 -2
  224. package/dist/core/{p-f4c11be0.entry.js → p-8b08d8fe.entry.js} +2 -2
  225. package/dist/core/p-8b08d8fe.entry.js.map +1 -0
  226. package/dist/core/{p-c2884fcd.entry.js → p-917c5721.entry.js} +2 -2
  227. package/dist/core/{p-217db3af.entry.js → p-942282cd.entry.js} +2 -2
  228. package/dist/core/p-99cad6c2.js +2 -0
  229. package/dist/core/p-99cad6c2.js.map +1 -0
  230. package/dist/core/p-9caf19eb.js +2 -0
  231. package/dist/core/p-9caf19eb.js.map +1 -0
  232. package/dist/core/{p-99a9ce86.entry.js → p-a0f8efb2.entry.js} +2 -2
  233. package/dist/core/{p-234edce6.entry.js → p-a31031a5.entry.js} +2 -2
  234. package/dist/core/{p-faaa06d7.entry.js → p-a434c3d4.entry.js} +2 -2
  235. package/dist/core/{p-ae337896.entry.js → p-a43c12cd.entry.js} +2 -2
  236. package/dist/core/{p-010053ab.entry.js → p-a50c3b9e.entry.js} +2 -2
  237. package/dist/core/{p-b4591bfe.entry.js → p-ab09986c.entry.js} +2 -2
  238. package/dist/core/p-ab09986c.entry.js.map +1 -0
  239. package/dist/core/p-ac4e40a7.entry.js +2 -0
  240. package/dist/core/p-ac4e40a7.entry.js.map +1 -0
  241. package/dist/core/{p-cedabab7.entry.js → p-b82dcc29.entry.js} +2 -2
  242. package/dist/core/{p-8eaed5b7.entry.js → p-ba86928c.entry.js} +2 -2
  243. package/dist/core/{p-9c6e48fb.entry.js → p-c125b65a.entry.js} +2 -2
  244. package/dist/core/{p-452be32a.entry.js → p-c34848da.entry.js} +2 -2
  245. package/dist/core/{p-1e9f689b.entry.js → p-d8469ac0.entry.js} +2 -2
  246. package/dist/core/{p-79b39c8a.entry.js → p-db9c03c0.entry.js} +2 -2
  247. package/dist/core/{p-dd0a5ef0.entry.js → p-e0462b23.entry.js} +2 -2
  248. package/dist/core/p-e0462b23.entry.js.map +1 -0
  249. package/dist/core/p-e0a94f2d.entry.js +2 -0
  250. package/dist/core/p-e0a94f2d.entry.js.map +1 -0
  251. package/dist/core/{p-eb922333.entry.js → p-e3997d60.entry.js} +2 -2
  252. package/dist/core/p-e79e0292.entry.js +2 -0
  253. package/dist/core/p-e79e0292.entry.js.map +1 -0
  254. package/dist/core/{p-26ca8030.entry.js → p-e834344e.entry.js} +2 -2
  255. package/dist/core/{p-2addb040.entry.js → p-f14454b1.entry.js} +2 -2
  256. package/dist/core/{p-e9bc9ee2.entry.js → p-f3c840cd.entry.js} +2 -2
  257. package/dist/core/{p-e9bc9ee2.entry.js.map → p-f3c840cd.entry.js.map} +1 -1
  258. package/dist/core/{p-fc406db5.entry.js → p-f6888309.entry.js} +2 -2
  259. package/dist/core/p-f74a8752.entry.js +2 -0
  260. package/dist/core/p-f74a8752.entry.js.map +1 -0
  261. package/dist/core/{p-e31125df.entry.js → p-f7a14c01.entry.js} +2 -2
  262. package/dist/core/{p-da1f0a53.entry.js → p-f843da01.entry.js} +2 -2
  263. package/dist/core/{p-da1f0a53.entry.js.map → p-f843da01.entry.js.map} +1 -1
  264. package/dist/core/{p-b7d5ced3.entry.js → p-fc5611e2.entry.js} +2 -2
  265. package/dist/core/p-fc5611e2.entry.js.map +1 -0
  266. package/dist/core/p-fde45b29.entry.js +2 -0
  267. package/dist/core/p-fde45b29.entry.js.map +1 -0
  268. package/dist/esm/core.js +1 -1
  269. package/dist/esm/{helpers-229a5574.js → helpers-12b4266a.js} +45 -5
  270. package/dist/esm/helpers-12b4266a.js.map +1 -0
  271. package/dist/esm/helpers-5271897c.js +183 -0
  272. package/dist/esm/helpers-5271897c.js.map +1 -0
  273. package/dist/esm/ic-accordion-group.entry.js +6 -2
  274. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  275. package/dist/esm/ic-accordion.entry.js +1 -1
  276. package/dist/esm/ic-alert.entry.js +2 -2
  277. package/dist/esm/ic-alert.entry.js.map +1 -1
  278. package/dist/esm/ic-back-to-top.entry.js +1 -1
  279. package/dist/esm/ic-badge.entry.js +4 -3
  280. package/dist/esm/ic-badge.entry.js.map +1 -1
  281. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  282. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  283. package/dist/esm/ic-button_3.entry.js +34 -10
  284. package/dist/esm/ic-button_3.entry.js.map +1 -1
  285. package/dist/esm/ic-card.entry.js +7 -7
  286. package/dist/esm/ic-card.entry.js.map +1 -1
  287. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  288. package/dist/esm/ic-checkbox.entry.js +1 -1
  289. package/dist/esm/ic-chip.entry.js +1 -1
  290. package/dist/esm/ic-data-entity.entry.js +3 -6
  291. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  292. package/dist/esm/ic-data-row.entry.js +21 -35
  293. package/dist/esm/ic-data-row.entry.js.map +1 -1
  294. package/dist/esm/ic-dialog.entry.js +4 -2
  295. package/dist/esm/ic-dialog.entry.js.map +1 -1
  296. package/dist/esm/ic-divider.entry.js +1 -1
  297. package/dist/esm/ic-empty-state.entry.js +1 -1
  298. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  299. package/dist/esm/ic-footer-link.entry.js +1 -1
  300. package/dist/esm/ic-footer.entry.js +1 -1
  301. package/dist/esm/ic-hero.entry.js +1 -1
  302. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  303. package/dist/esm/ic-input-component-container_3.entry.js +12 -10
  304. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  305. package/dist/esm/ic-input-label_2.entry.js +1 -1
  306. package/dist/esm/ic-link.entry.js +1 -1
  307. package/dist/esm/ic-menu-group.entry.js +1 -1
  308. package/dist/esm/ic-menu-item.entry.js +1 -1
  309. package/dist/esm/ic-menu-with-multi.entry.js +2595 -0
  310. package/dist/esm/ic-menu-with-multi.entry.js.map +1 -0
  311. package/dist/esm/ic-navigation-button.entry.js +1 -1
  312. package/dist/esm/ic-navigation-group.entry.js +1 -1
  313. package/dist/esm/ic-navigation-item.entry.js +1 -1
  314. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  315. package/dist/esm/ic-page-header.entry.js +1 -1
  316. package/dist/esm/ic-pagination-bar.entry.js +1 -17
  317. package/dist/esm/ic-pagination-bar.entry.js.map +1 -1
  318. package/dist/esm/ic-pagination_4.entry.js +21 -13
  319. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  320. package/dist/esm/ic-popover-menu.entry.js +1 -1
  321. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  322. package/dist/esm/ic-radio-group.entry.js +1 -1
  323. package/dist/esm/ic-radio-option.entry.js +1 -1
  324. package/dist/esm/ic-search-bar.entry.js +1 -1
  325. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  326. package/dist/esm/ic-select-with-multi.entry.js +833 -0
  327. package/dist/esm/ic-select-with-multi.entry.js.map +1 -0
  328. package/dist/esm/ic-side-navigation.entry.js +1 -5
  329. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  330. package/dist/esm/ic-status-tag.entry.js +1 -1
  331. package/dist/esm/ic-step.entry.js +1 -1
  332. package/dist/esm/ic-stepper.entry.js +1 -1
  333. package/dist/esm/ic-switch.entry.js +1 -1
  334. package/dist/esm/ic-tab-group.entry.js +1 -1
  335. package/dist/esm/ic-tab-panel.entry.js +1 -1
  336. package/dist/esm/ic-tab.entry.js +1 -1
  337. package/dist/esm/ic-theme.entry.js +1 -1
  338. package/dist/esm/ic-toast.entry.js +1 -1
  339. package/dist/esm/ic-toggle-button-group.entry.js +180 -0
  340. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -0
  341. package/dist/esm/ic-toggle-button.entry.js +6 -3
  342. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  343. package/dist/esm/ic-top-navigation.entry.js +1 -1
  344. package/dist/esm/ic-typography.entry.js +1 -1
  345. package/dist/esm/index-93509377.js +12 -0
  346. package/dist/esm/loader.js +1 -1
  347. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +208 -0
  348. package/dist/types/components/ic-select-with-multi/ic-select.d.ts +289 -0
  349. package/dist/types/components/ic-select-with-multi/story-data.d.ts +32 -0
  350. package/dist/types/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.d.ts +1 -0
  351. package/dist/types/components.d.ts +531 -0
  352. package/dist/types/utils/constants.d.ts +1 -0
  353. package/dist/types/utils/helpers.d.ts +61 -2
  354. package/dist/types/utils/types.d.ts +16 -0
  355. package/hydrate/index.js +6853 -2907
  356. package/package.json +3 -3
  357. package/dist/cjs/helpers-86375e76.js.map +0 -1
  358. package/dist/core/p-0aa1fe4e.entry.js +0 -2
  359. package/dist/core/p-0aa1fe4e.entry.js.map +0 -1
  360. package/dist/core/p-24945ee5.entry.js.map +0 -1
  361. package/dist/core/p-8cde58bf.entry.js +0 -2
  362. package/dist/core/p-8cde58bf.entry.js.map +0 -1
  363. package/dist/core/p-93828f0e.entry.js +0 -2
  364. package/dist/core/p-93828f0e.entry.js.map +0 -1
  365. package/dist/core/p-9fdd7d73.entry.js +0 -2
  366. package/dist/core/p-9fdd7d73.entry.js.map +0 -1
  367. package/dist/core/p-a3ab9f4c.entry.js.map +0 -1
  368. package/dist/core/p-b4591bfe.entry.js.map +0 -1
  369. package/dist/core/p-b7d5ced3.entry.js.map +0 -1
  370. package/dist/core/p-dd0a5ef0.entry.js.map +0 -1
  371. package/dist/core/p-e0102744.js +0 -2
  372. package/dist/core/p-e0102744.js.map +0 -1
  373. package/dist/core/p-e2ccb52b.entry.js +0 -2
  374. package/dist/core/p-e2ccb52b.entry.js.map +0 -1
  375. package/dist/core/p-f4c11be0.entry.js.map +0 -1
  376. package/dist/esm/helpers-229a5574.js.map +0 -1
  377. /package/dist/core/{p-4119a26b.entry.js.map → p-045359e1.entry.js.map} +0 -0
  378. /package/dist/core/{p-cae71c32.entry.js.map → p-10fb4c46.entry.js.map} +0 -0
  379. /package/dist/core/{p-7a0790e4.entry.js.map → p-169bfa51.entry.js.map} +0 -0
  380. /package/dist/core/{p-56645c00.entry.js.map → p-1ca332ca.entry.js.map} +0 -0
  381. /package/dist/core/{p-fddc7254.entry.js.map → p-204ace96.entry.js.map} +0 -0
  382. /package/dist/core/{p-5332a426.entry.js.map → p-2eac7dcc.entry.js.map} +0 -0
  383. /package/dist/core/{p-3294eba4.entry.js.map → p-3803a5b5.entry.js.map} +0 -0
  384. /package/dist/core/{p-a048beab.entry.js.map → p-4baa0916.entry.js.map} +0 -0
  385. /package/dist/core/{p-7e0197a4.entry.js.map → p-4f413fc0.entry.js.map} +0 -0
  386. /package/dist/core/{p-a6a90c56.entry.js.map → p-595be57d.entry.js.map} +0 -0
  387. /package/dist/core/{p-5f8c4c83.entry.js.map → p-5ae93c16.entry.js.map} +0 -0
  388. /package/dist/core/{p-fff91bd9.entry.js.map → p-6933f8e9.entry.js.map} +0 -0
  389. /package/dist/core/{p-043e4073.entry.js.map → p-6c3044b6.entry.js.map} +0 -0
  390. /package/dist/core/{p-7b17f3ce.entry.js.map → p-73be1251.entry.js.map} +0 -0
  391. /package/dist/core/{p-e0d8d7a5.entry.js.map → p-75dac3d1.entry.js.map} +0 -0
  392. /package/dist/core/{p-f2318ddc.entry.js.map → p-81ddc39d.entry.js.map} +0 -0
  393. /package/dist/core/{p-3e36c9e4.entry.js.map → p-869954a2.entry.js.map} +0 -0
  394. /package/dist/core/{p-a561980f.entry.js.map → p-88d54b72.entry.js.map} +0 -0
  395. /package/dist/core/{p-c2884fcd.entry.js.map → p-917c5721.entry.js.map} +0 -0
  396. /package/dist/core/{p-217db3af.entry.js.map → p-942282cd.entry.js.map} +0 -0
  397. /package/dist/core/{p-99a9ce86.entry.js.map → p-a0f8efb2.entry.js.map} +0 -0
  398. /package/dist/core/{p-234edce6.entry.js.map → p-a31031a5.entry.js.map} +0 -0
  399. /package/dist/core/{p-faaa06d7.entry.js.map → p-a434c3d4.entry.js.map} +0 -0
  400. /package/dist/core/{p-ae337896.entry.js.map → p-a43c12cd.entry.js.map} +0 -0
  401. /package/dist/core/{p-010053ab.entry.js.map → p-a50c3b9e.entry.js.map} +0 -0
  402. /package/dist/core/{p-cedabab7.entry.js.map → p-b82dcc29.entry.js.map} +0 -0
  403. /package/dist/core/{p-8eaed5b7.entry.js.map → p-ba86928c.entry.js.map} +0 -0
  404. /package/dist/core/{p-9c6e48fb.entry.js.map → p-c125b65a.entry.js.map} +0 -0
  405. /package/dist/core/{p-452be32a.entry.js.map → p-c34848da.entry.js.map} +0 -0
  406. /package/dist/core/{p-1e9f689b.entry.js.map → p-d8469ac0.entry.js.map} +0 -0
  407. /package/dist/core/{p-79b39c8a.entry.js.map → p-db9c03c0.entry.js.map} +0 -0
  408. /package/dist/core/{p-eb922333.entry.js.map → p-e3997d60.entry.js.map} +0 -0
  409. /package/dist/core/{p-26ca8030.entry.js.map → p-e834344e.entry.js.map} +0 -0
  410. /package/dist/core/{p-2addb040.entry.js.map → p-f14454b1.entry.js.map} +0 -0
  411. /package/dist/core/{p-fc406db5.entry.js.map → p-f6888309.entry.js.map} +0 -0
  412. /package/dist/core/{p-e31125df.entry.js.map → p-f7a14c01.entry.js.map} +0 -0
@@ -0,0 +1,880 @@
1
+ import { newSpecPage } from "@stencil/core/testing";
2
+ import { Menu } from "../../ic-menu";
3
+ import { IcInputComponentContainer } from "@ukic/web-components/dist/components/ic-input-component-container";
4
+ import { testKeyboardEvent as keyboardEvent } from "@ukic/web-components/dist/types/testspec.setup";
5
+ import { h } from "@stencil/core";
6
+ import * as helpers from "@ukic/web-components/dist/types/utils/helpers";
7
+ // These tests still use 'ic-select' and not 'ic-select-with-multi'
8
+ // It does not matter as unit tests in the canary branch do not run anyway
9
+ // And it saves converting them back when the multi-select is merged into the main branch
10
+ // (Check the original multi-select branch, i.e. where the changes were added straight to the web-components folder, to see the tests working)
11
+ const menuOptions = [
12
+ { label: "Espresso", value: "espresso" },
13
+ { label: "Double Espresso", value: "doubleespresso" },
14
+ { label: "Flat White", value: "flatwhite" },
15
+ {
16
+ label: "Cappuccino",
17
+ value: "cappucino",
18
+ description: "with chocolate is best!",
19
+ },
20
+ { label: "Americano", value: "americano" },
21
+ { label: "Ameno", value: "ameno" },
22
+ {
23
+ label: "Tea",
24
+ value: "tea",
25
+ children: [{ label: "green", value: "green" }],
26
+ },
27
+ {
28
+ label: "Aicano",
29
+ value: "acano",
30
+ icon: `<svg aria-labelledby="warning-title" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="#000000"><g id="warning"><path id="Vector" d="M4.47 20.5037H19.53C21.07 20.5037 22.03 18.8337 21.26 17.5037L13.73 4.49375C12.96 3.16375 11.04 3.16375 10.27 4.49375L2.74 17.5037C1.97 18.8337 2.93 20.5037 4.47 20.5037ZM12 13.5037C11.45 13.5037 11 13.0537 11 12.5037V10.5037C11 9.95375 11.45 9.50375 12 9.50375C12.55 9.50375 13 9.95375 13 10.5037V12.5037C13 13.0537 12.55 13.5037 12 13.5037ZM13 17.5037H11V15.5037H13V17.5037Z" /></g></svg>`,
31
+ },
32
+ {
33
+ label: "Mocha",
34
+ value: "mocha",
35
+ element: {
36
+ component: `<ic-status-tag label="Neutral status"></ic-status-tag>`,
37
+ ariaLabel: "Neutral status tag",
38
+ },
39
+ },
40
+ ];
41
+ const menuIdEspresso = "menu-id-espresso";
42
+ const menuIdMocha = "menu-id-mocha";
43
+ const IcSearchBar = "IC-SEARCH-BAR";
44
+ const createMenu = () => {
45
+ // create necessary elements before the page is created
46
+ const div = window.document.createElement("div");
47
+ const input = window.document.createElement("input");
48
+ return newSpecPage({
49
+ components: [Menu, IcInputComponentContainer],
50
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: div, value: menuOptions[0].value, parentEl: div })),
51
+ });
52
+ };
53
+ beforeAll(() => {
54
+ jest.spyOn(console, "warn").mockImplementation(jest.fn());
55
+ });
56
+ describe("ic-menu in isolation", () => {
57
+ it("should render", async () => {
58
+ const page = await createMenu();
59
+ expect(page).toMatchSnapshot();
60
+ });
61
+ it("sets open prop to true by default", async () => {
62
+ const page = await createMenu();
63
+ expect(page.root.open).toBe(true);
64
+ });
65
+ it("tests ungroupedOptionsSet emitter", async () => {
66
+ const page = await createMenu();
67
+ const eventSpy = jest.fn();
68
+ page.root.addEventListener("ungroupedOptionsSet", eventSpy);
69
+ page.root.options = [];
70
+ await page.waitForChanges();
71
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
72
+ detail: expect.objectContaining({
73
+ options: [],
74
+ }),
75
+ }));
76
+ });
77
+ it("tests menuOptionSelect emitter", async () => {
78
+ const page = await createMenu();
79
+ const eventSpy = jest.fn();
80
+ page.root.addEventListener("menuOptionSelect", eventSpy);
81
+ await page.waitForChanges();
82
+ page.rootInstance.setInputValue(2);
83
+ await page.waitForChanges();
84
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
85
+ detail: expect.objectContaining({
86
+ value: "flatwhite",
87
+ }),
88
+ }));
89
+ });
90
+ it("tests menuStateChange emitter", async () => {
91
+ const page = await createMenu();
92
+ const eventSpy = jest.fn();
93
+ page.root.addEventListener("menuStateChange", eventSpy);
94
+ await page.waitForChanges();
95
+ const click = new MouseEvent("click", {
96
+ bubbles: true,
97
+ cancelable: true,
98
+ });
99
+ page.rootInstance.arrowBehaviour(click);
100
+ await page.waitForChanges();
101
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
102
+ detail: expect.objectContaining({
103
+ open: true,
104
+ }),
105
+ }));
106
+ });
107
+ it("tests menuOptionId emitter", async () => {
108
+ const page = await createMenu();
109
+ const eventSpy = jest.fn();
110
+ page.root.addEventListener("menuOptionId", eventSpy);
111
+ await page.waitForChanges();
112
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowDown"));
113
+ await page.waitForChanges();
114
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
115
+ detail: expect.objectContaining({
116
+ optionId: menuIdEspresso,
117
+ }),
118
+ }));
119
+ });
120
+ it("tests menuKeyPress emitter", async () => {
121
+ const page = await createMenu();
122
+ const eventSpy = jest.fn();
123
+ page.root.addEventListener("menuKeyPress", eventSpy);
124
+ await page.waitForChanges();
125
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("Home"));
126
+ await page.waitForChanges();
127
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
128
+ detail: expect.objectContaining({
129
+ isNavKey: true,
130
+ key: "Home",
131
+ }),
132
+ }));
133
+ });
134
+ it("tests setNextOptionValue function", async () => {
135
+ const page = await createMenu();
136
+ const eventSpy = jest.fn();
137
+ page.root.addEventListener("menuOptionSelect", eventSpy);
138
+ page.rootInstance.setNextOptionValue(15);
139
+ await page.waitForChanges();
140
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
141
+ detail: expect.objectContaining({
142
+ value: "espresso",
143
+ }),
144
+ }));
145
+ });
146
+ it("tests setPreviousOptionValue function", async () => {
147
+ const page = await createMenu();
148
+ const eventSpy = jest.fn();
149
+ page.root.addEventListener("menuOptionSelect", eventSpy);
150
+ await page.waitForChanges();
151
+ page.rootInstance.setPreviousOptionValue(4);
152
+ await page.waitForChanges();
153
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
154
+ detail: expect.objectContaining({
155
+ value: "cappucino",
156
+ }),
157
+ }));
158
+ });
159
+ it("tests handleClickOpen function", async () => {
160
+ const page = await createMenu();
161
+ const eventSpy = jest.fn();
162
+ page.root.addEventListener("menuStateChange", eventSpy);
163
+ page.root.open = false;
164
+ await page.waitForChanges();
165
+ await page.rootInstance.handleClickOpen();
166
+ await page.waitForChanges();
167
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
168
+ detail: expect.objectContaining({
169
+ open: true,
170
+ }),
171
+ }));
172
+ });
173
+ it("tests handleKeyboardOpen function", async () => {
174
+ const page = await createMenu();
175
+ page.root.open = false;
176
+ const eventSpy = jest.fn();
177
+ page.root.addEventListener("menuStateChange", eventSpy);
178
+ page.root.addEventListener("menuOptionId", eventSpy);
179
+ await page.waitForChanges();
180
+ await page.rootInstance.handleKeyboardOpen(keyboardEvent("ArrowDown"));
181
+ await page.waitForChanges();
182
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
183
+ detail: expect.objectContaining({
184
+ open: true,
185
+ }),
186
+ }));
187
+ page.root.open = false;
188
+ page.root.activationType = "manual";
189
+ await page.waitForChanges();
190
+ await page.rootInstance.handleKeyboardOpen(keyboardEvent("ArrowDown"));
191
+ await page.waitForChanges();
192
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
193
+ detail: expect.objectContaining({
194
+ optionId: menuIdEspresso,
195
+ }),
196
+ }));
197
+ });
198
+ it("tests autoSetInputValueKeyboardOpen function", async () => {
199
+ const page = await createMenu();
200
+ const eventSpy = jest.fn();
201
+ const inputEl = page.rootInstance.inputEl;
202
+ page.root.addEventListener("menuOptionSelect", eventSpy);
203
+ page.root.addEventListener("menuStateChange", eventSpy);
204
+ inputEl.addEventListener("focus", eventSpy);
205
+ page.root.open = false;
206
+ await page.waitForChanges();
207
+ await page.rootInstance.autoSetInputValueKeyboardOpen(keyboardEvent("ArrowUp"));
208
+ await page.waitForChanges();
209
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
210
+ detail: expect.objectContaining({
211
+ optionId: menuIdMocha,
212
+ }),
213
+ }));
214
+ page.rootInstance.open = false;
215
+ await page.waitForChanges();
216
+ await page.rootInstance.autoSetInputValueKeyboardOpen(keyboardEvent("Enter"));
217
+ await page.waitForChanges();
218
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
219
+ detail: expect.objectContaining({
220
+ open: true,
221
+ focusInput: undefined,
222
+ }),
223
+ }));
224
+ page.rootInstance.open = false;
225
+ await page.waitForChanges();
226
+ await page.rootInstance.autoSetInputValueKeyboardOpen(keyboardEvent(" "));
227
+ await page.waitForChanges();
228
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
229
+ detail: expect.objectContaining({
230
+ open: true,
231
+ focusInput: undefined,
232
+ }),
233
+ }));
234
+ });
235
+ it("tests autoSetInputValueKeyboardOpen function with character keys", async () => {
236
+ const page = await createMenu();
237
+ page.root.options = menuOptions;
238
+ await page.waitForChanges();
239
+ page.rootInstance.autoSetInputValueKeyboardOpen(keyboardEvent("e"));
240
+ page.rootInstance.autoSetInputValueKeyboardOpen(keyboardEvent("s"));
241
+ await page.waitForChanges();
242
+ expect(page.root.value).toBe("espresso");
243
+ });
244
+ it("tests manualSetInputValueKeyboardOpen function", async () => {
245
+ const searchBar = window.document.createElement(IcSearchBar);
246
+ const input = window.document.createElement("input");
247
+ const searchMenuOptions = JSON.parse(JSON.stringify(menuOptions));
248
+ searchMenuOptions[3].disabled = true;
249
+ searchBar.setFocus = jest.fn();
250
+ const page = await newSpecPage({
251
+ components: [Menu, IcInputComponentContainer],
252
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: searchMenuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: searchBar, value: searchMenuOptions[0].value, parentEl: searchBar })),
253
+ });
254
+ const eventSpy = jest.fn();
255
+ page.root.addEventListener("menuOptionId", eventSpy);
256
+ page.root.addEventListener("menuOptionSelect", eventSpy);
257
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowUp"));
258
+ await page.waitForChanges();
259
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
260
+ detail: expect.objectContaining({
261
+ optionId: menuIdMocha,
262
+ }),
263
+ }));
264
+ page.rootInstance.setHighlightedOption(3);
265
+ await page.waitForChanges();
266
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowUp"));
267
+ await page.waitForChanges();
268
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
269
+ detail: expect.objectContaining({
270
+ optionId: "menu-id-flatwhite",
271
+ }),
272
+ }));
273
+ page.rootInstance.setHighlightedOption(0);
274
+ await page.waitForChanges();
275
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowDown"));
276
+ await page.waitForChanges();
277
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
278
+ detail: expect.objectContaining({
279
+ optionId: "menu-id-doubleespresso",
280
+ }),
281
+ }));
282
+ page.rootInstance.setHighlightedOption(8);
283
+ await page.waitForChanges();
284
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowDown"));
285
+ await page.waitForChanges();
286
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
287
+ detail: expect.objectContaining({
288
+ optionId: menuIdEspresso,
289
+ }),
290
+ }));
291
+ page.rootInstance.setHighlightedOption(2);
292
+ await page.waitForChanges();
293
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Enter"));
294
+ await page.waitForChanges();
295
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
296
+ detail: expect.objectContaining({
297
+ value: "flatwhite",
298
+ }),
299
+ }));
300
+ page.rootInstance.setHighlightedOption(2);
301
+ await page.waitForChanges();
302
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowDown"));
303
+ await page.waitForChanges();
304
+ expect(page.rootInstance.value).toBe(searchMenuOptions[2].value);
305
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Enter"));
306
+ await page.waitForChanges();
307
+ expect(page.rootInstance.disabledOptionSelected).toBe(true);
308
+ expect(page.rootInstance.value).toBe(searchMenuOptions[2].value);
309
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Escape"));
310
+ await page.waitForChanges();
311
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
312
+ detail: expect.objectContaining({
313
+ optionId: undefined,
314
+ }),
315
+ }));
316
+ page.rootInstance.preventIncorrectTabOrder = false;
317
+ await page.waitForChanges();
318
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Shift"));
319
+ await page.waitForChanges();
320
+ expect(page.rootInstance.preventIncorrectTabOrder).toBe(true);
321
+ page.rootInstance.preventIncorrectTabOrder = false;
322
+ await page.waitForChanges();
323
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Tab"));
324
+ await page.waitForChanges();
325
+ expect(page.rootInstance.preventIncorrectTabOrder).toBe(true);
326
+ page.rootInstance.preventIncorrectTabOrder = false;
327
+ page.rootInstance.isSearchBar = true;
328
+ page.rootInstance.setHighlightedOption(4);
329
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Backspace"));
330
+ await page.waitForChanges();
331
+ expect(page.rootInstance.optionHighlighted).toBe("espresso");
332
+ page.rootInstance.setHighlightedOption(6);
333
+ await page.waitForChanges();
334
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("KeyF"));
335
+ await page.waitForChanges();
336
+ expect(page.rootInstance.optionHighlighted).toBe("espresso");
337
+ page.rootInstance.setHighlightedOption(2);
338
+ await page.waitForChanges();
339
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Home"));
340
+ await page.waitForChanges();
341
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
342
+ detail: expect.objectContaining({
343
+ optionId: menuIdEspresso,
344
+ }),
345
+ }));
346
+ await page.waitForChanges();
347
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("End"));
348
+ await page.waitForChanges();
349
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
350
+ detail: expect.objectContaining({
351
+ optionId: menuIdMocha,
352
+ }),
353
+ }));
354
+ });
355
+ it("tests manualSetInputValueKeyboardOpen function when searchable select", async () => {
356
+ const searchableSelect = window.document.createElement("IC-SELECT");
357
+ const input = window.document.createElement("input");
358
+ searchableSelect.setFocus = jest.fn();
359
+ searchableSelect.searchable = true;
360
+ const page = await newSpecPage({
361
+ components: [Menu, IcInputComponentContainer],
362
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: searchableSelect, value: menuOptions[0].value, parentEl: searchableSelect })),
363
+ });
364
+ page.rootInstance.isSearchableSelect = true;
365
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Backspace"));
366
+ await page.waitForChanges();
367
+ expect(searchableSelect.setFocus).toHaveBeenCalled();
368
+ });
369
+ it("tests manualSetInputValueKeyboardOpen function when searchbar", async () => {
370
+ const select = window.document.createElement("IC-SELECT");
371
+ const input = window.document.createElement("input");
372
+ select.setFocus = jest.fn();
373
+ const page = await newSpecPage({
374
+ components: [Menu, IcInputComponentContainer],
375
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: select, value: menuOptions[0].value, parentEl: select })),
376
+ });
377
+ page.rootInstance.isSearchBar = true;
378
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Backspace"));
379
+ await page.waitForChanges();
380
+ expect(select.setFocus).toHaveBeenCalled();
381
+ });
382
+ it("tests manualSetInputValueKeyboardOpen function when default parameter passed", async () => {
383
+ const select = window.document.createElement("IC-SELECT");
384
+ const input = window.document.createElement("input");
385
+ select.setFocus = jest.fn();
386
+ const page = await newSpecPage({
387
+ components: [Menu, IcInputComponentContainer],
388
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: select, value: menuOptions[0].value, parentEl: select })),
389
+ });
390
+ page.rootInstance.isSearchBar = false;
391
+ page.rootInstance.isSearchableSelect = true;
392
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("KeyR"));
393
+ await page.waitForChanges();
394
+ expect(page.rootInstance.value).toBe(menuOptions[0].value);
395
+ });
396
+ it("tests manualSetInputValueKeyboardOpen function when multi-select", async () => {
397
+ const multiSelect = window.document.createElement("IC-SELECT");
398
+ const input = window.document.createElement("input");
399
+ const page = await newSpecPage({
400
+ components: [Menu, IcInputComponentContainer],
401
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: multiSelect, value: menuOptions[0].value, parentEl: multiSelect })),
402
+ });
403
+ jest
404
+ .spyOn(page.rootInstance, "selectHighlightedOption")
405
+ .mockImplementation();
406
+ jest
407
+ .spyOn(page.rootInstance, "getMenuOptions")
408
+ .mockImplementation(() => menuOptions);
409
+ page.rootInstance.isMultiSelect = true;
410
+ await page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent(" "));
411
+ await page.waitForChanges();
412
+ expect(page.rootInstance.selectHighlightedOption).toHaveBeenCalledWith({
413
+ id: "key-id",
414
+ }, menuOptions, -1);
415
+ jest.spyOn(page.rootInstance, "setHighlightedOption").mockImplementation();
416
+ page.rootInstance.multiOptionClicked = menuOptions[0].value;
417
+ await page.waitForChanges();
418
+ await page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowDown"));
419
+ await page.waitForChanges();
420
+ expect(page.rootInstance.setHighlightedOption).toHaveBeenCalledWith(0);
421
+ expect(page.rootInstance.multiOptionClicked).toBe(null);
422
+ page.rootInstance.multiOptionClicked = menuOptions[0].value;
423
+ await page.waitForChanges();
424
+ await page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowUp"));
425
+ await page.waitForChanges();
426
+ expect(page.rootInstance.setHighlightedOption).toHaveBeenCalledWith(0);
427
+ expect(page.rootInstance.multiOptionClicked).toBe(null);
428
+ jest.spyOn(page.rootInstance, "emitSelectAll").mockImplementation();
429
+ jest.spyOn(helpers, "isMacDevice").mockImplementation(() => true);
430
+ await page.rootInstance.manualSetInputValueKeyboardOpen({
431
+ key: "a",
432
+ preventDefault: () => null,
433
+ stopImmediatePropagation: () => null,
434
+ metaKey: true,
435
+ target: {
436
+ id: "key-id",
437
+ },
438
+ });
439
+ await page.waitForChanges();
440
+ expect(page.rootInstance.emitSelectAll).toHaveBeenCalled();
441
+ jest.spyOn(helpers, "isMacDevice").mockImplementation(() => false);
442
+ await page.rootInstance.manualSetInputValueKeyboardOpen({
443
+ key: "a",
444
+ preventDefault: () => null,
445
+ stopImmediatePropagation: () => null,
446
+ ctrlKey: true,
447
+ target: {
448
+ id: "key-id",
449
+ },
450
+ });
451
+ await page.waitForChanges();
452
+ expect(page.rootInstance.emitSelectAll).toHaveBeenCalledTimes(2);
453
+ const eventSpy = jest.fn();
454
+ page.rootInstance.selectAllButton.addEventListener("focus", eventSpy);
455
+ await page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Tab"));
456
+ await page.waitForChanges();
457
+ expect(eventSpy).toHaveBeenCalled();
458
+ expect(page.rootInstance.menu.tabIndex).toBe(-1);
459
+ expect(page.rootInstance.preventClickOpen).toBe(true);
460
+ expect(page.rootInstance.optionHighlighted).toBe(undefined);
461
+ });
462
+ it("tests manualSetInputValueKeyboardOpen function when select on enter", async () => {
463
+ const select = window.document.createElement("IC-SELECT");
464
+ const input = window.document.createElement("input");
465
+ select.selectOnEnter = true;
466
+ const page = await newSpecPage({
467
+ components: [Menu, IcInputComponentContainer],
468
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: select, value: menuOptions[0].value, parentEl: select })),
469
+ });
470
+ const eventSpy = jest.fn();
471
+ page.root.addEventListener("menuOptionSelect", eventSpy);
472
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("ArrowDown"));
473
+ await page.waitForChanges();
474
+ expect(eventSpy).not.toHaveBeenCalled();
475
+ page.rootInstance.manualSetInputValueKeyboardOpen(keyboardEvent("Enter"));
476
+ await page.waitForChanges();
477
+ expect(eventSpy).toHaveBeenCalled();
478
+ });
479
+ it("tests setInputValue function when default parameter passed", async () => {
480
+ const select = window.document.createElement("IC-SELECT");
481
+ const input = window.document.createElement("input");
482
+ select.setFocus = jest.fn();
483
+ const page = await newSpecPage({
484
+ components: [Menu, IcInputComponentContainer],
485
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: select, value: menuOptions[0].value, parentEl: select })),
486
+ });
487
+ page.rootInstance.hasTimedOut = true;
488
+ page.rootInstance.setInputValue(35);
489
+ await page.waitForChanges();
490
+ expect(select.setFocus).toHaveBeenCalled();
491
+ });
492
+ it("tests handleSubmitSearch function", async () => {
493
+ const page = await createMenu();
494
+ const eventSpy = jest.fn();
495
+ page.root.addEventListener("menuOptionSelect", eventSpy);
496
+ page.rootInstance.optionHighlighted = "americano";
497
+ await page.waitForChanges();
498
+ const event = new CustomEvent("icSubmitSearch", {
499
+ detail: {
500
+ value: "americano",
501
+ },
502
+ });
503
+ page.root.parentEl.dispatchEvent(event);
504
+ await page.waitForChanges();
505
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("Enter"));
506
+ await page.waitForChanges();
507
+ expect(eventSpy).toHaveBeenCalled();
508
+ });
509
+ it("tests handleSetFirstOption function", async () => {
510
+ const page = await createMenu();
511
+ const eventSpy = jest.fn();
512
+ page.root.addEventListener("menuOptionSelect", eventSpy);
513
+ page.root.options = menuOptions;
514
+ await page.waitForChanges();
515
+ page.rootInstance.optionHighlighted = "americano";
516
+ await page.waitForChanges();
517
+ await page.rootInstance.handleSetFirstOption();
518
+ await page.waitForChanges();
519
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("Enter"));
520
+ await page.waitForChanges();
521
+ expect(page.rootInstance.optionHighlighted).toBe("espresso");
522
+ });
523
+ it("tests handleClearListener function", async () => {
524
+ const page = await createMenu();
525
+ const eventSpy = jest.fn();
526
+ page.root.addEventListener("menuOptionSelect", eventSpy);
527
+ page.rootInstance.optionHighlighted = "americano";
528
+ await page.waitForChanges();
529
+ await page.rootInstance.handleClearListener();
530
+ await page.waitForChanges();
531
+ expect(page.rootInstance.optionHighlighted).toBe("");
532
+ });
533
+ it("tests handleOptionClick function", async () => {
534
+ const page = await createMenu();
535
+ const eventSpy = jest.fn();
536
+ page.root.addEventListener("menuOptionSelect", eventSpy);
537
+ const el = page.rootInstance.menu.childNodes[1];
538
+ const event = { target: el };
539
+ await page.waitForChanges();
540
+ page.rootInstance.handleOptionClick(event);
541
+ await page.waitForChanges();
542
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
543
+ detail: {
544
+ value: "doubleespresso",
545
+ label: "Double Espresso",
546
+ },
547
+ }));
548
+ page.rootInstance.isMultiSelect = true;
549
+ await page.waitForChanges();
550
+ await page.rootInstance.handleOptionClick(event);
551
+ expect(page.rootInstance.multiOptionClicked).toBe("doubleespresso");
552
+ });
553
+ it("tests handleBlur function", async () => {
554
+ const page = await createMenu();
555
+ const eventSpy = jest.fn();
556
+ const event = new FocusEvent("blur");
557
+ page.root.addEventListener("menuStateChange", eventSpy);
558
+ page.rootInstance.handleBlur(event);
559
+ await page.waitForChanges();
560
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
561
+ detail: {
562
+ open: false,
563
+ focusInput: false,
564
+ },
565
+ }));
566
+ const inputEl = page.root.inputEl;
567
+ const eventTwo = new FocusEvent("blur", { relatedTarget: inputEl });
568
+ page.rootInstance.handleBlur(eventTwo);
569
+ await page.waitForChanges();
570
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
571
+ detail: {
572
+ open: false,
573
+ focusInput: undefined,
574
+ },
575
+ }));
576
+ });
577
+ it("tests handleMouseDown function", async () => {
578
+ const page = await createMenu();
579
+ const eventSpy = jest.fn();
580
+ page.root.addEventListener("preventDefault", eventSpy);
581
+ const event = new Event("click");
582
+ event.preventDefault = eventSpy;
583
+ await page.waitForChanges();
584
+ page.rootInstance.handleMouseDown(event);
585
+ await page.waitForChanges();
586
+ expect(eventSpy).toHaveBeenCalled();
587
+ });
588
+ it("tests handleMenuKeyDown function", async () => {
589
+ const page = await createMenu();
590
+ const eventSpy = jest.fn();
591
+ page.root.addEventListener("menuOptionSelect", eventSpy);
592
+ page.rootInstance.handleMenuKeyDown(keyboardEvent("ArrowDown"));
593
+ await page.waitForChanges();
594
+ page.rootInstance.handleMenuKeyDown(keyboardEvent("ArrowDown"));
595
+ await page.waitForChanges();
596
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
597
+ detail: expect.objectContaining({
598
+ value: "doubleespresso",
599
+ }),
600
+ }));
601
+ });
602
+ it("tests searchMode=`query", async () => {
603
+ const page = await createMenu();
604
+ page.rootInstance.searchMode = "query";
605
+ await page.waitForChanges();
606
+ page.rootInstance.handleMenuKeyDown(keyboardEvent("F"));
607
+ expect(page.rootInstance.optionHighlighted).toBeUndefined;
608
+ });
609
+ it("tests handleMenuKeyDown function as searchableSelect", async () => {
610
+ const page = await createMenu();
611
+ page.rootInstance.activationType = "manual";
612
+ page.rootInstance.isSearchableSelect = true;
613
+ const eventSpy = jest.fn();
614
+ page.root.addEventListener("menuOptionId", eventSpy);
615
+ page.rootInstance.handleMenuKeyDown(keyboardEvent("ArrowDown"));
616
+ await page.waitForChanges();
617
+ expect(eventSpy).toHaveBeenCalled();
618
+ });
619
+ it("tests handleRetry function", async () => {
620
+ const page = await createMenu();
621
+ const eventSpy = jest.fn();
622
+ page.root.addEventListener("retryButtonClicked", eventSpy);
623
+ page.rootInstance.handleRetry();
624
+ await page.waitForChanges();
625
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
626
+ detail: expect.objectContaining({
627
+ value: "espresso",
628
+ }),
629
+ }));
630
+ });
631
+ it("tests handleRetryKeyDown function", async () => {
632
+ const page = await createMenu();
633
+ const eventSpy = jest.fn();
634
+ page.root.addEventListener("retryButtonClicked", eventSpy);
635
+ page.rootInstance.handleRetryKeyDown(keyboardEvent("Enter"));
636
+ await page.waitForChanges();
637
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
638
+ detail: expect.objectContaining({
639
+ value: "espresso",
640
+ keyPressed: "Enter",
641
+ }),
642
+ }));
643
+ });
644
+ it("tests autoSetValueOnMenuKeyDown - Shift - function", async () => {
645
+ const page = await createMenu();
646
+ const inputEl = page.rootInstance.inputEl;
647
+ const eventSpy = jest.fn();
648
+ page.root.addEventListener("menuOptionSelect", eventSpy);
649
+ inputEl.addEventListener("focus", eventSpy);
650
+ await page.waitForChanges();
651
+ await page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("Shift"));
652
+ await page.waitForChanges();
653
+ expect(eventSpy).not.toHaveBeenCalled();
654
+ });
655
+ it("tests autoSetValueOnMenuKeyDown function", async () => {
656
+ const page = await createMenu();
657
+ const inputEl = page.rootInstance.inputEl;
658
+ const eventSpy = jest.fn();
659
+ page.root.addEventListener("menuOptionSelect", eventSpy);
660
+ inputEl.addEventListener("focus", eventSpy);
661
+ page.root.addEventListener("menuStateChange", eventSpy);
662
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("ArrowUp"));
663
+ await page.waitForChanges();
664
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
665
+ detail: expect.objectContaining({
666
+ value: "mocha",
667
+ }),
668
+ }));
669
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("End"));
670
+ await page.waitForChanges();
671
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
672
+ detail: expect.objectContaining({
673
+ value: "mocha",
674
+ }),
675
+ }));
676
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("Backspace"));
677
+ await page.waitForChanges();
678
+ expect(eventSpy).toHaveBeenCalled();
679
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("d"));
680
+ await page.waitForChanges();
681
+ expect(eventSpy).toHaveBeenCalledTimes(4);
682
+ const preDef = jest.fn();
683
+ const spaceKey = {
684
+ key: ` `,
685
+ preventDefault: preDef,
686
+ shiftKey: false,
687
+ target: {
688
+ id: "key-id",
689
+ },
690
+ };
691
+ await page.rootInstance.autoSetValueOnMenuKeyDown(spaceKey);
692
+ await page.waitForChanges();
693
+ expect(spaceKey.preventDefault).toHaveBeenCalled();
694
+ page.rootInstance.autoSetValueOnMenuKeyDown(keyboardEvent("Escape"));
695
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
696
+ detail: expect.objectContaining({
697
+ open: false,
698
+ focusInput: undefined,
699
+ }),
700
+ }));
701
+ });
702
+ it("tests handleMenukeyUp function", async () => {
703
+ const page = await createMenu();
704
+ page.rootInstance.preventClickOpen = true;
705
+ let key = keyboardEvent("Tab");
706
+ key.shiftKey = true;
707
+ await page.waitForChanges();
708
+ page.rootInstance.handleMenuKeyUp(key);
709
+ await page.waitForChanges();
710
+ expect(page.rootInstance.preventClickOpen).toBe(false);
711
+ page.rootInstance.disabledOptionSelected = true;
712
+ key = keyboardEvent("Enter");
713
+ await page.waitForChanges();
714
+ page.rootInstance.handleMenuKeyUp(key);
715
+ await page.waitForChanges();
716
+ expect(page.rootInstance.disabledOptionSelected).toBe(false);
717
+ });
718
+ it("tests connectedCallback function", async () => {
719
+ const searchBar = window.document.createElement(IcSearchBar);
720
+ const input = window.document.createElement("input");
721
+ const page = await newSpecPage({
722
+ components: [Menu, IcInputComponentContainer],
723
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: searchBar, value: menuOptions[0].value, parentEl: searchBar })),
724
+ });
725
+ expect(page.rootInstance.optionHighlighted).toBe("espresso");
726
+ });
727
+ it("tests disconnectedCallback function", async () => {
728
+ const page = await createMenu();
729
+ await page.waitForChanges();
730
+ expect(page.rootInstance.parentEl.__listeners[1].type).toBe("icSubmitSearch");
731
+ page.rootInstance.disconnectedCallback();
732
+ await page.waitForChanges();
733
+ expect(page.rootInstance.parentEl.__listeners.length).toBe(0);
734
+ });
735
+ it("tests componentDidLoad function", async () => {
736
+ const searchBar = window.document.createElement(IcSearchBar);
737
+ const input = window.document.createElement("input");
738
+ searchBar.disableFilter = true;
739
+ const page = await newSpecPage({
740
+ components: [Menu, IcInputComponentContainer],
741
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: searchBar, value: menuOptions[0].value, parentEl: searchBar })),
742
+ });
743
+ page.rootInstance.focusFromSearchKeypress = false;
744
+ page.rootInstance.componentDidLoad();
745
+ await page.waitForChanges();
746
+ expect(page.rootInstance.focusFromSearchKeypress).toBe(true);
747
+ });
748
+ it("tests getParentEl function", async () => {
749
+ const select = window.document.createElement("ic-select");
750
+ select.searchable = true;
751
+ select.setAttribute("searchable", "true");
752
+ const page = await createMenu();
753
+ page.rootInstance.getParentEl(select);
754
+ await page.waitForChanges();
755
+ expect(page.rootInstance.isSearchableSelect).toBe(true);
756
+ });
757
+ it("tests handleTimeoutBlur function", async () => {
758
+ const page = await createMenu();
759
+ const eventSpy = jest.fn();
760
+ page.root.addEventListener("timeoutBlur", eventSpy);
761
+ const event = new FocusEvent("blur");
762
+ page.rootInstance.handleTimeoutBlur(event);
763
+ await page.waitForChanges();
764
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
765
+ detail: expect.objectContaining({
766
+ ev: expect.objectContaining({
767
+ type: "blur",
768
+ }),
769
+ }),
770
+ }));
771
+ });
772
+ it("tests handleMenuChange function when multi-select", async () => {
773
+ const page = await createMenu();
774
+ page.rootInstance.optionHighlighted = "espresso";
775
+ page.rootInstance.isMultiSelect = true;
776
+ await page.waitForChanges();
777
+ expect(page.rootInstance.optionHighlighted).toBe("espresso");
778
+ await page.rootInstance.handleMenuChange(false);
779
+ await page.waitForChanges();
780
+ expect(page.rootInstance.optionHighlighted).toBe(undefined);
781
+ });
782
+ it("tests selectHighlightedOption function when multi-select", async () => {
783
+ const page = await createMenu();
784
+ page.rootInstance.open = false;
785
+ page.rootInstance.isMultiSelect = true;
786
+ jest.spyOn(page.rootInstance, "handleMenuChange").mockImplementation();
787
+ await page.waitForChanges();
788
+ await page.rootInstance.selectHighlightedOption({ target: "test-id" }, menuOptions, 0);
789
+ await page.waitForChanges();
790
+ expect(page.rootInstance.handleMenuChange).toHaveBeenCalledWith(true);
791
+ });
792
+ it("tests selectHighlightedOption function when multi-select", async () => {
793
+ const page = await createMenu();
794
+ page.rootInstance.open = false;
795
+ page.rootInstance.isMultiSelect = true;
796
+ jest.spyOn(page.rootInstance, "handleMenuChange").mockImplementation();
797
+ await page.waitForChanges();
798
+ await page.rootInstance.selectHighlightedOption({ target: "test-id" }, menuOptions, 0);
799
+ await page.waitForChanges();
800
+ expect(page.rootInstance.handleMenuChange).toHaveBeenCalledWith(true);
801
+ });
802
+ it("tests handleSelectAllClick function", async () => {
803
+ const page = await createMenu();
804
+ page.rootInstance.menu.tabIndex = -1;
805
+ const eventSpy = jest.fn();
806
+ page.rootInstance.menu.addEventListener("focus", eventSpy);
807
+ jest.spyOn(page.rootInstance, "emitSelectAll").mockImplementation();
808
+ await page.rootInstance.handleSelectAllClick();
809
+ expect(eventSpy).toHaveBeenCalled();
810
+ expect(page.rootInstance.emitSelectAll).toHaveBeenCalled();
811
+ });
812
+ it("tests handleSelectAllBlur function", async () => {
813
+ const multiSelect = window.document.createElement("IC-SELECT");
814
+ const input = window.document.createElement("input");
815
+ const page = await newSpecPage({
816
+ components: [Menu, IcInputComponentContainer],
817
+ template: () => (h("ic-menu", { open: true, activationType: "automatic", options: menuOptions, menuId: "menu-id", inputLabel: "input-label", inputEl: input, anchorEl: multiSelect, value: menuOptions[0].value, parentEl: multiSelect })),
818
+ });
819
+ jest.spyOn(page.rootInstance, "handleMenuChange").mockImplementation();
820
+ const option = await page.root.querySelector("li");
821
+ await page.rootInstance.handleSelectAllBlur({ relatedTarget: option });
822
+ await page.waitForChanges();
823
+ expect(page.rootInstance.handleMenuChange).not.toHaveBeenCalled();
824
+ await page.rootInstance.handleSelectAllBlur({ relatedTarget: input });
825
+ await page.waitForChanges();
826
+ expect(page.rootInstance.handleMenuChange).toHaveBeenCalledWith(false, false);
827
+ });
828
+ it("tests handleSelectAllFocus function", async () => {
829
+ const page = await createMenu();
830
+ await page.rootInstance.handleSelectAllFocus();
831
+ expect(page.root).toMatchSnapshot();
832
+ });
833
+ it("tests emitSelectAll function", async () => {
834
+ const page = await createMenu();
835
+ const eventSpy = jest.fn();
836
+ page.root.addEventListener("menuOptionSelectAll", eventSpy);
837
+ await page.rootInstance.emitSelectAll();
838
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
839
+ detail: expect.objectContaining({
840
+ select: true,
841
+ }),
842
+ }));
843
+ page.rootInstance.value = ["espresso"];
844
+ await page.waitForChanges();
845
+ await page.rootInstance.emitSelectAll();
846
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
847
+ detail: expect.objectContaining({
848
+ select: true,
849
+ }),
850
+ }));
851
+ page.rootInstance.value = [
852
+ "espresso",
853
+ "doubleespresso",
854
+ "flatwhite",
855
+ "cappuccino",
856
+ "americano",
857
+ "ameno",
858
+ "green",
859
+ "acano",
860
+ "mocha",
861
+ ];
862
+ await page.waitForChanges();
863
+ await page.rootInstance.emitSelectAll();
864
+ expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
865
+ detail: expect.objectContaining({
866
+ select: false,
867
+ }),
868
+ }));
869
+ });
870
+ it("tests handleSelectAllMouseDown", async () => {
871
+ const page = await createMenu();
872
+ const eventSpy = jest.fn();
873
+ page.root.addEventListener("preventDefault", eventSpy);
874
+ const event = new Event("click");
875
+ event.preventDefault = eventSpy;
876
+ await page.rootInstance.handleSelectAllMouseDown(event);
877
+ expect(eventSpy).toHaveBeenCalled();
878
+ });
879
+ });
880
+ //# sourceMappingURL=ic-menu.spec.js.map