@ukic/canary-web-components 2.0.0-canary.7 → 2.0.0-canary.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (449) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/date-helpers-c9551119.js +150 -0
  3. package/dist/cjs/date-helpers-c9551119.js.map +1 -0
  4. package/dist/cjs/{helpers-00b08718.js → helpers-7a069459.js} +8 -3
  5. package/dist/cjs/helpers-7a069459.js.map +1 -0
  6. package/dist/cjs/helpers-f75cf7cf.js +280 -0
  7. package/dist/cjs/helpers-f75cf7cf.js.map +1 -0
  8. package/dist/cjs/ic-accordion-group.cjs.entry.js +6 -2
  9. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-badge.cjs.entry.js +4 -3
  14. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-button_3.cjs.entry.js +29 -12
  18. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-card.cjs.entry.js +5 -6
  20. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-data-entity.cjs.entry.js +3 -6
  25. package/dist/cjs/ic-data-entity.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-data-row.cjs.entry.js +21 -35
  27. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-date-input.cjs.entry.js +1073 -0
  29. package/dist/cjs/ic-date-input.cjs.entry.js.map +1 -0
  30. package/dist/cjs/ic-date-picker.cjs.entry.js +1043 -0
  31. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -0
  32. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +150 -0
  41. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +1 -0
  42. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +2599 -0
  46. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +1 -0
  47. package/dist/cjs/{ic-input-component-container_3.cjs.entry.js → ic-menu.cjs.entry.js} +8 -70
  48. package/dist/cjs/ic-menu.cjs.entry.js.map +1 -0
  49. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  50. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  51. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-pagination-bar.cjs.entry.js +2 -18
  55. package/dist/cjs/ic-pagination-bar.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-pagination_4.cjs.entry.js +21 -13
  57. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-search-bar.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-select-with-multi.cjs.entry.js +824 -0
  65. package/dist/cjs/ic-select-with-multi.cjs.entry.js.map +1 -0
  66. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  67. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  69. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  70. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  74. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  75. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  76. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +184 -0
  77. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -0
  78. package/dist/cjs/ic-toggle-button.cjs.entry.js +6 -3
  79. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  81. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  82. package/dist/cjs/index-4cf27b16.js +24 -4
  83. package/dist/cjs/loader.cjs.js +1 -1
  84. package/dist/collection/assets/calendar.svg +3 -0
  85. package/dist/collection/collection-manifest.json +6 -1
  86. package/dist/collection/components/ic-date-input/ic-date-input.css +560 -0
  87. package/dist/collection/components/ic-date-input/ic-date-input.js +1668 -0
  88. package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -0
  89. package/dist/collection/components/ic-date-input/story-data.js +28 -0
  90. package/dist/collection/components/ic-date-input/story-data.js.map +1 -0
  91. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js +1156 -0
  92. package/dist/collection/components/ic-date-input/test/basic/ic-date-input.spec.js.map +1 -0
  93. package/dist/collection/components/ic-date-input/test/helpers/ic-date-input.js +42 -0
  94. package/dist/collection/components/ic-date-input/test/helpers/ic-date-input.js.map +1 -0
  95. package/dist/collection/components/ic-date-picker/ic-date-picker.css +878 -0
  96. package/dist/collection/components/ic-date-picker/ic-date-picker.js +1499 -0
  97. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -0
  98. package/dist/collection/components/ic-date-picker/ic-day-button.js +36 -0
  99. package/dist/collection/components/ic-date-picker/ic-day-button.js.map +1 -0
  100. package/dist/collection/components/ic-date-picker/ic-month-picker.js +29 -0
  101. package/dist/collection/components/ic-date-picker/ic-month-picker.js.map +1 -0
  102. package/dist/collection/components/ic-date-picker/ic-year-picker.js +39 -0
  103. package/dist/collection/components/ic-date-picker/ic-year-picker.js.map +1 -0
  104. package/dist/collection/components/ic-date-picker/story-data.js +143 -0
  105. package/dist/collection/components/ic-date-picker/story-data.js.map +1 -0
  106. package/dist/collection/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.js +13 -0
  107. package/dist/collection/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.js.map +1 -0
  108. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker-utils.spec.js +207 -0
  109. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker-utils.spec.js.map +1 -0
  110. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker.spec.js +962 -0
  111. package/dist/collection/components/ic-date-picker/test/basic/ic-date-picker.spec.js.map +1 -0
  112. package/dist/collection/components/ic-menu-with-multi/ic-menu.css +701 -0
  113. package/dist/collection/components/ic-menu-with-multi/ic-menu.js +1458 -0
  114. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +1 -0
  115. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js +880 -0
  116. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js.map +1 -0
  117. package/dist/collection/components/ic-select-with-multi/assets/Check.svg +3 -0
  118. package/dist/collection/components/ic-select-with-multi/assets/Clear.svg +3 -0
  119. package/dist/collection/components/ic-select-with-multi/assets/Expand.svg +3 -0
  120. package/dist/collection/components/ic-select-with-multi/ic-select.css +693 -0
  121. package/dist/collection/components/ic-select-with-multi/ic-select.js +1649 -0
  122. package/dist/collection/components/ic-select-with-multi/ic-select.js.map +1 -0
  123. package/dist/collection/components/ic-select-with-multi/story-data.js +216 -0
  124. package/dist/collection/components/ic-select-with-multi/story-data.js.map +1 -0
  125. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js +146 -0
  126. package/dist/collection/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.js.map +1 -0
  127. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js +2040 -0
  128. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.e2e.js.map +1 -0
  129. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js +1518 -0
  130. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js.map +1 -0
  131. package/dist/collection/utils/constants.js +83 -0
  132. package/dist/collection/utils/constants.js.map +1 -0
  133. package/dist/collection/utils/date-helpers.js +133 -0
  134. package/dist/collection/utils/date-helpers.js.map +1 -0
  135. package/dist/collection/utils/helpers.js +417 -5
  136. package/dist/collection/utils/helpers.js.map +1 -1
  137. package/dist/collection/utils/types.js +58 -0
  138. package/dist/collection/utils/types.js.map +1 -0
  139. package/dist/components/helpers.js +8 -3
  140. package/dist/components/helpers.js.map +1 -1
  141. package/dist/components/helpers2.js +262 -0
  142. package/dist/components/helpers2.js.map +1 -0
  143. package/dist/components/ic-accordion-group.js +7 -2
  144. package/dist/components/ic-accordion-group.js.map +1 -1
  145. package/dist/components/ic-badge.js +3 -2
  146. package/dist/components/ic-badge.js.map +1 -1
  147. package/dist/components/ic-button2.js +32 -13
  148. package/dist/components/ic-button2.js.map +1 -1
  149. package/dist/components/ic-card.js +6 -19
  150. package/dist/components/ic-card.js.map +1 -1
  151. package/dist/components/ic-checkbox-group.js +1 -1
  152. package/dist/components/ic-checkbox.js +1 -1
  153. package/dist/components/ic-chip.js +1 -1
  154. package/dist/components/ic-data-entity.js +3 -6
  155. package/dist/components/ic-data-entity.js.map +1 -1
  156. package/dist/components/ic-data-row.js +20 -34
  157. package/dist/components/ic-data-row.js.map +1 -1
  158. package/dist/components/ic-date-input.d.ts +11 -0
  159. package/dist/components/ic-date-input.js +8 -0
  160. package/dist/components/ic-date-input.js.map +1 -0
  161. package/dist/components/ic-date-input2.js +1301 -0
  162. package/dist/components/ic-date-input2.js.map +1 -0
  163. package/dist/components/ic-date-picker.d.ts +11 -0
  164. package/dist/components/ic-date-picker.js +1164 -0
  165. package/dist/components/ic-date-picker.js.map +1 -0
  166. package/dist/components/ic-input-component-container2.js +7 -6
  167. package/dist/components/ic-input-component-container2.js.map +1 -1
  168. package/dist/components/ic-link2.js +1 -1
  169. package/dist/components/ic-menu-item2.js +1 -1
  170. package/dist/components/ic-menu-with-multi.d.ts +11 -0
  171. package/dist/components/ic-menu-with-multi.js +8 -0
  172. package/dist/components/ic-menu-with-multi.js.map +1 -0
  173. package/dist/components/ic-menu2.js +5 -4
  174. package/dist/components/ic-menu2.js.map +1 -1
  175. package/dist/components/ic-menu3.js +2665 -0
  176. package/dist/components/ic-menu3.js.map +1 -0
  177. package/dist/components/ic-navigation-button.js +1 -1
  178. package/dist/components/ic-pagination-bar2.js +1 -17
  179. package/dist/components/ic-pagination-bar2.js.map +1 -1
  180. package/dist/components/ic-pagination-item2.js +1 -1
  181. package/dist/components/ic-pagination2.js +1 -1
  182. package/dist/components/ic-popover-menu.js +1 -1
  183. package/dist/components/ic-popover-menu.js.map +1 -1
  184. package/dist/components/ic-radio-group.js +1 -1
  185. package/dist/components/ic-radio-option.js +1 -1
  186. package/dist/components/ic-search-bar.js +1 -1
  187. package/dist/components/ic-search-bar.js.map +1 -1
  188. package/dist/components/ic-select-with-multi.d.ts +11 -0
  189. package/dist/components/ic-select-with-multi.js +949 -0
  190. package/dist/components/ic-select-with-multi.js.map +1 -0
  191. package/dist/components/ic-select2.js +23 -14
  192. package/dist/components/ic-select2.js.map +1 -1
  193. package/dist/components/ic-switch.js +1 -1
  194. package/dist/components/ic-tab.js +1 -1
  195. package/dist/components/ic-text-field2.js +1 -1
  196. package/dist/components/ic-toggle-button-group.js +210 -0
  197. package/dist/components/ic-toggle-button-group.js.map +1 -0
  198. package/dist/components/ic-toggle-button.js +6 -3
  199. package/dist/components/ic-toggle-button.js.map +1 -1
  200. package/dist/core/core.css +8 -5
  201. package/dist/core/core.esm.js +1 -1
  202. package/dist/core/core.esm.js.map +1 -1
  203. package/dist/core/{p-5e94fae8.entry.js → p-06ae5bec.entry.js} +2 -2
  204. package/dist/core/p-06ae5bec.entry.js.map +1 -0
  205. package/dist/core/{p-d5cc084b.entry.js → p-0939ce92.entry.js} +2 -2
  206. package/dist/core/{p-d5cc084b.entry.js.map → p-0939ce92.entry.js.map} +1 -1
  207. package/dist/core/{p-6de46cb7.entry.js → p-16f67397.entry.js} +2 -2
  208. package/dist/core/p-16f67397.entry.js.map +1 -0
  209. package/dist/core/{p-a2f366c7.entry.js → p-1832f4b5.entry.js} +2 -2
  210. package/dist/core/{p-28fb7cca.entry.js → p-1b7d426b.entry.js} +2 -2
  211. package/dist/core/p-1b7d426b.entry.js.map +1 -0
  212. package/dist/core/{p-ff1d23cd.entry.js → p-1ce75941.entry.js} +2 -2
  213. package/dist/core/{p-5746577f.entry.js → p-2e2e0099.entry.js} +2 -2
  214. package/dist/core/p-33679c06.entry.js +2 -0
  215. package/dist/core/p-33679c06.entry.js.map +1 -0
  216. package/dist/core/{p-ca262cdc.entry.js → p-36508aad.entry.js} +2 -2
  217. package/dist/core/{p-7276339a.entry.js → p-3745da83.entry.js} +2 -2
  218. package/dist/core/{p-b43bd4f3.entry.js → p-3f2e77c3.entry.js} +2 -2
  219. package/dist/core/{p-24945ee5.entry.js → p-452985d9.entry.js} +2 -2
  220. package/dist/core/p-452985d9.entry.js.map +1 -0
  221. package/dist/core/{p-3c859b9e.entry.js → p-47ac6838.entry.js} +2 -2
  222. package/dist/core/{p-3d2fcf84.entry.js → p-4f1ffa39.entry.js} +2 -2
  223. package/dist/core/{p-4df42c76.entry.js → p-5759d771.entry.js} +2 -2
  224. package/dist/core/{p-32f18701.entry.js → p-5e2e6c3b.entry.js} +2 -2
  225. package/dist/core/{p-f436630b.entry.js → p-5fe96107.entry.js} +2 -2
  226. package/dist/core/{p-7dfd61bb.entry.js → p-62e22508.entry.js} +2 -2
  227. package/dist/core/{p-d49660e0.entry.js → p-6690bc04.entry.js} +2 -2
  228. package/dist/core/{p-f827e4c0.entry.js → p-6c0e2ceb.entry.js} +2 -2
  229. package/dist/core/{p-a3ab9f4c.entry.js → p-76915584.entry.js} +2 -2
  230. package/dist/core/p-76915584.entry.js.map +1 -0
  231. package/dist/core/{p-966ab920.entry.js → p-76d26018.entry.js} +2 -2
  232. package/dist/core/{p-79b71c18.entry.js → p-776671cf.entry.js} +2 -2
  233. package/dist/core/{p-434780c8.entry.js → p-7cecf5d5.entry.js} +2 -2
  234. package/dist/core/{p-88971cea.entry.js → p-85609bdd.entry.js} +2 -2
  235. package/dist/core/{p-95d3cd52.entry.js → p-86012178.entry.js} +2 -2
  236. package/dist/core/{p-2094c844.entry.js → p-8a7e7d23.entry.js} +2 -2
  237. package/dist/core/{p-aafb2c79.entry.js → p-8c90110a.entry.js} +2 -2
  238. package/dist/core/{p-9ce5f082.entry.js → p-8ea47d42.entry.js} +2 -2
  239. package/dist/core/{p-0d181ac8.entry.js → p-982a6e88.entry.js} +2 -2
  240. package/dist/core/{p-3b9f3a07.entry.js → p-98448bdb.entry.js} +2 -2
  241. package/dist/core/{p-c263542a.entry.js → p-9d01a7ad.entry.js} +2 -2
  242. package/dist/core/{p-051b8266.entry.js → p-9d540656.entry.js} +2 -2
  243. package/dist/core/p-9e3178e8.entry.js +2 -0
  244. package/dist/core/p-9e3178e8.entry.js.map +1 -0
  245. package/dist/core/{p-9fd84c69.entry.js → p-a0f9b259.entry.js} +2 -2
  246. package/dist/core/{p-7632acc6.entry.js → p-a42c2f37.entry.js} +2 -2
  247. package/dist/core/{p-fbb1fba0.entry.js → p-a6447b13.entry.js} +2 -2
  248. package/dist/core/p-aabab75f.entry.js +2 -0
  249. package/dist/core/p-aabab75f.entry.js.map +1 -0
  250. package/dist/core/{p-116b18fe.entry.js → p-ae422058.entry.js} +2 -2
  251. package/dist/core/{p-a7d52bd1.entry.js → p-b306cbc8.entry.js} +2 -2
  252. package/dist/core/p-c7590421.entry.js +2 -0
  253. package/dist/core/p-c7590421.entry.js.map +1 -0
  254. package/dist/core/{p-a162744e.entry.js → p-c7820c23.entry.js} +2 -2
  255. package/dist/core/{p-a162744e.entry.js.map → p-c7820c23.entry.js.map} +1 -1
  256. package/dist/core/{p-d78fd9f3.entry.js → p-ca8cbd6a.entry.js} +2 -2
  257. package/dist/core/{p-da4f0a58.entry.js → p-caf857de.entry.js} +2 -2
  258. package/dist/core/p-cc7bc438.entry.js +2 -0
  259. package/dist/core/p-cc7bc438.entry.js.map +1 -0
  260. package/dist/core/p-cd799087.js +2 -0
  261. package/dist/core/p-cd799087.js.map +1 -0
  262. package/dist/core/p-d32692e2.entry.js +2 -0
  263. package/dist/core/p-d32692e2.entry.js.map +1 -0
  264. package/dist/core/p-d35c7c18.js +2 -0
  265. package/dist/core/p-d35c7c18.js.map +1 -0
  266. package/dist/core/{p-27aa95e7.entry.js → p-d3856ed3.entry.js} +2 -2
  267. package/dist/core/{p-c345a874.entry.js → p-d4fdd8c1.entry.js} +2 -2
  268. package/dist/core/{p-337b6e05.entry.js → p-d5c99ec3.entry.js} +2 -2
  269. package/dist/core/p-e473bbf8.entry.js +2 -0
  270. package/dist/core/p-e473bbf8.entry.js.map +1 -0
  271. package/dist/core/p-e74f1d09.entry.js +2 -0
  272. package/dist/core/p-e74f1d09.entry.js.map +1 -0
  273. package/dist/core/p-e79e0292.entry.js +2 -0
  274. package/dist/core/p-e79e0292.entry.js.map +1 -0
  275. package/dist/core/{p-0f0509ee.entry.js → p-e84b0310.entry.js} +2 -2
  276. package/dist/core/p-e84b0310.entry.js.map +1 -0
  277. package/dist/core/{p-93c5b849.entry.js → p-f55ad6ae.entry.js} +2 -2
  278. package/dist/core/p-f8cf2978.js +2 -0
  279. package/dist/core/p-f8cf2978.js.map +1 -0
  280. package/dist/core/p-f91527a0.entry.js +2 -0
  281. package/dist/core/p-f91527a0.entry.js.map +1 -0
  282. package/dist/core/{p-d9342548.entry.js → p-fbf4e9b7.entry.js} +2 -2
  283. package/dist/esm/core.js +1 -1
  284. package/dist/esm/date-helpers-4f432e92.js +136 -0
  285. package/dist/esm/date-helpers-4f432e92.js.map +1 -0
  286. package/dist/esm/{helpers-d06dc4ed.js → helpers-7aa21b0a.js} +8 -3
  287. package/dist/esm/helpers-7aa21b0a.js.map +1 -0
  288. package/dist/esm/helpers-f328a7b6.js +262 -0
  289. package/dist/esm/helpers-f328a7b6.js.map +1 -0
  290. package/dist/esm/ic-accordion-group.entry.js +6 -2
  291. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  292. package/dist/esm/ic-accordion.entry.js +1 -1
  293. package/dist/esm/ic-alert.entry.js +1 -1
  294. package/dist/esm/ic-back-to-top.entry.js +1 -1
  295. package/dist/esm/ic-badge.entry.js +4 -3
  296. package/dist/esm/ic-badge.entry.js.map +1 -1
  297. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  298. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  299. package/dist/esm/ic-button_3.entry.js +29 -12
  300. package/dist/esm/ic-button_3.entry.js.map +1 -1
  301. package/dist/esm/ic-card.entry.js +5 -6
  302. package/dist/esm/ic-card.entry.js.map +1 -1
  303. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  304. package/dist/esm/ic-checkbox.entry.js +1 -1
  305. package/dist/esm/ic-chip.entry.js +1 -1
  306. package/dist/esm/ic-data-entity.entry.js +3 -6
  307. package/dist/esm/ic-data-entity.entry.js.map +1 -1
  308. package/dist/esm/ic-data-row.entry.js +21 -35
  309. package/dist/esm/ic-data-row.entry.js.map +1 -1
  310. package/dist/esm/ic-date-input.entry.js +1069 -0
  311. package/dist/esm/ic-date-input.entry.js.map +1 -0
  312. package/dist/esm/ic-date-picker.entry.js +1039 -0
  313. package/dist/esm/ic-date-picker.entry.js.map +1 -0
  314. package/dist/esm/ic-dialog.entry.js +1 -1
  315. package/dist/esm/ic-divider.entry.js +1 -1
  316. package/dist/esm/ic-empty-state.entry.js +1 -1
  317. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  318. package/dist/esm/ic-footer-link.entry.js +1 -1
  319. package/dist/esm/ic-footer.entry.js +1 -1
  320. package/dist/esm/ic-hero.entry.js +1 -1
  321. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  322. package/dist/esm/ic-input-component-container_4.entry.js +143 -0
  323. package/dist/esm/ic-input-component-container_4.entry.js.map +1 -0
  324. package/dist/esm/ic-link.entry.js +1 -1
  325. package/dist/esm/ic-menu-group.entry.js +1 -1
  326. package/dist/esm/ic-menu-item.entry.js +1 -1
  327. package/dist/esm/ic-menu-with-multi.entry.js +2595 -0
  328. package/dist/esm/ic-menu-with-multi.entry.js.map +1 -0
  329. package/dist/esm/{ic-input-component-container_3.entry.js → ic-menu.entry.js} +10 -70
  330. package/dist/esm/ic-menu.entry.js.map +1 -0
  331. package/dist/esm/ic-navigation-button.entry.js +1 -1
  332. package/dist/esm/ic-navigation-group.entry.js +1 -1
  333. package/dist/esm/ic-navigation-item.entry.js +1 -1
  334. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  335. package/dist/esm/ic-page-header.entry.js +1 -1
  336. package/dist/esm/ic-pagination-bar.entry.js +1 -17
  337. package/dist/esm/ic-pagination-bar.entry.js.map +1 -1
  338. package/dist/esm/ic-pagination_4.entry.js +21 -13
  339. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  340. package/dist/esm/ic-popover-menu.entry.js +1 -1
  341. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  342. package/dist/esm/ic-radio-group.entry.js +1 -1
  343. package/dist/esm/ic-radio-option.entry.js +1 -1
  344. package/dist/esm/ic-search-bar.entry.js +1 -1
  345. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  346. package/dist/esm/ic-select-with-multi.entry.js +820 -0
  347. package/dist/esm/ic-select-with-multi.entry.js.map +1 -0
  348. package/dist/esm/ic-side-navigation.entry.js +1 -1
  349. package/dist/esm/ic-status-tag.entry.js +1 -1
  350. package/dist/esm/ic-step.entry.js +1 -1
  351. package/dist/esm/ic-stepper.entry.js +1 -1
  352. package/dist/esm/ic-switch.entry.js +1 -1
  353. package/dist/esm/ic-tab-group.entry.js +1 -1
  354. package/dist/esm/ic-tab-panel.entry.js +1 -1
  355. package/dist/esm/ic-tab.entry.js +1 -1
  356. package/dist/esm/ic-theme.entry.js +1 -1
  357. package/dist/esm/ic-toast.entry.js +1 -1
  358. package/dist/esm/ic-toggle-button-group.entry.js +180 -0
  359. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -0
  360. package/dist/esm/ic-toggle-button.entry.js +6 -3
  361. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  362. package/dist/esm/ic-top-navigation.entry.js +1 -1
  363. package/dist/esm/ic-typography.entry.js +1 -1
  364. package/dist/esm/index-93509377.js +24 -4
  365. package/dist/esm/loader.js +1 -1
  366. package/dist/types/components/ic-date-input/ic-date-input.d.ts +242 -0
  367. package/dist/types/components/ic-date-input/story-data.d.ts +1 -0
  368. package/dist/types/components/ic-date-input/test/helpers/ic-date-input.d.ts +23 -0
  369. package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +251 -0
  370. package/dist/types/components/ic-date-picker/ic-day-button.d.ts +16 -0
  371. package/dist/types/components/ic-date-picker/ic-month-picker.d.ts +14 -0
  372. package/dist/types/components/ic-date-picker/ic-year-picker.d.ts +16 -0
  373. package/dist/types/components/ic-date-picker/story-data.d.ts +22 -0
  374. package/dist/types/components/ic-date-picker/test/a11y/ic-date-picker.test.a11y.d.ts +1 -0
  375. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +208 -0
  376. package/dist/types/components/ic-select-with-multi/ic-select.d.ts +289 -0
  377. package/dist/types/components/ic-select-with-multi/story-data.d.ts +32 -0
  378. package/dist/types/components/ic-select-with-multi/test/a11y/ic-select.test.a11y.d.ts +1 -0
  379. package/dist/types/components.d.ts +966 -0
  380. package/dist/types/utils/constants.d.ts +38 -0
  381. package/dist/types/utils/date-helpers.d.ts +22 -0
  382. package/dist/types/utils/helpers.d.ts +133 -2
  383. package/dist/types/utils/types.d.ts +107 -0
  384. package/hydrate/index.js +12358 -6070
  385. package/package.json +3 -3
  386. package/dist/cjs/helpers-00b08718.js.map +0 -1
  387. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +0 -1
  388. package/dist/cjs/ic-input-label_2.cjs.entry.js +0 -86
  389. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +0 -1
  390. package/dist/core/p-0f0509ee.entry.js.map +0 -1
  391. package/dist/core/p-24945ee5.entry.js.map +0 -1
  392. package/dist/core/p-28fb7cca.entry.js.map +0 -1
  393. package/dist/core/p-2aad58b6.js +0 -2
  394. package/dist/core/p-2aad58b6.js.map +0 -1
  395. package/dist/core/p-38314d45.entry.js +0 -2
  396. package/dist/core/p-38314d45.entry.js.map +0 -1
  397. package/dist/core/p-5e94fae8.entry.js.map +0 -1
  398. package/dist/core/p-6de46cb7.entry.js.map +0 -1
  399. package/dist/core/p-7b849cb5.entry.js +0 -2
  400. package/dist/core/p-7b849cb5.entry.js.map +0 -1
  401. package/dist/core/p-9fdd7d73.entry.js +0 -2
  402. package/dist/core/p-9fdd7d73.entry.js.map +0 -1
  403. package/dist/core/p-a3ab9f4c.entry.js.map +0 -1
  404. package/dist/core/p-c9b11488.entry.js +0 -2
  405. package/dist/core/p-c9b11488.entry.js.map +0 -1
  406. package/dist/core/p-f163a406.entry.js +0 -2
  407. package/dist/core/p-f163a406.entry.js.map +0 -1
  408. package/dist/esm/helpers-d06dc4ed.js.map +0 -1
  409. package/dist/esm/ic-input-component-container_3.entry.js.map +0 -1
  410. package/dist/esm/ic-input-label_2.entry.js +0 -81
  411. package/dist/esm/ic-input-label_2.entry.js.map +0 -1
  412. /package/dist/core/{p-a2f366c7.entry.js.map → p-1832f4b5.entry.js.map} +0 -0
  413. /package/dist/core/{p-ff1d23cd.entry.js.map → p-1ce75941.entry.js.map} +0 -0
  414. /package/dist/core/{p-5746577f.entry.js.map → p-2e2e0099.entry.js.map} +0 -0
  415. /package/dist/core/{p-ca262cdc.entry.js.map → p-36508aad.entry.js.map} +0 -0
  416. /package/dist/core/{p-7276339a.entry.js.map → p-3745da83.entry.js.map} +0 -0
  417. /package/dist/core/{p-b43bd4f3.entry.js.map → p-3f2e77c3.entry.js.map} +0 -0
  418. /package/dist/core/{p-3c859b9e.entry.js.map → p-47ac6838.entry.js.map} +0 -0
  419. /package/dist/core/{p-3d2fcf84.entry.js.map → p-4f1ffa39.entry.js.map} +0 -0
  420. /package/dist/core/{p-4df42c76.entry.js.map → p-5759d771.entry.js.map} +0 -0
  421. /package/dist/core/{p-32f18701.entry.js.map → p-5e2e6c3b.entry.js.map} +0 -0
  422. /package/dist/core/{p-f436630b.entry.js.map → p-5fe96107.entry.js.map} +0 -0
  423. /package/dist/core/{p-7dfd61bb.entry.js.map → p-62e22508.entry.js.map} +0 -0
  424. /package/dist/core/{p-d49660e0.entry.js.map → p-6690bc04.entry.js.map} +0 -0
  425. /package/dist/core/{p-f827e4c0.entry.js.map → p-6c0e2ceb.entry.js.map} +0 -0
  426. /package/dist/core/{p-966ab920.entry.js.map → p-76d26018.entry.js.map} +0 -0
  427. /package/dist/core/{p-79b71c18.entry.js.map → p-776671cf.entry.js.map} +0 -0
  428. /package/dist/core/{p-434780c8.entry.js.map → p-7cecf5d5.entry.js.map} +0 -0
  429. /package/dist/core/{p-88971cea.entry.js.map → p-85609bdd.entry.js.map} +0 -0
  430. /package/dist/core/{p-95d3cd52.entry.js.map → p-86012178.entry.js.map} +0 -0
  431. /package/dist/core/{p-2094c844.entry.js.map → p-8a7e7d23.entry.js.map} +0 -0
  432. /package/dist/core/{p-aafb2c79.entry.js.map → p-8c90110a.entry.js.map} +0 -0
  433. /package/dist/core/{p-9ce5f082.entry.js.map → p-8ea47d42.entry.js.map} +0 -0
  434. /package/dist/core/{p-0d181ac8.entry.js.map → p-982a6e88.entry.js.map} +0 -0
  435. /package/dist/core/{p-3b9f3a07.entry.js.map → p-98448bdb.entry.js.map} +0 -0
  436. /package/dist/core/{p-c263542a.entry.js.map → p-9d01a7ad.entry.js.map} +0 -0
  437. /package/dist/core/{p-051b8266.entry.js.map → p-9d540656.entry.js.map} +0 -0
  438. /package/dist/core/{p-9fd84c69.entry.js.map → p-a0f9b259.entry.js.map} +0 -0
  439. /package/dist/core/{p-7632acc6.entry.js.map → p-a42c2f37.entry.js.map} +0 -0
  440. /package/dist/core/{p-fbb1fba0.entry.js.map → p-a6447b13.entry.js.map} +0 -0
  441. /package/dist/core/{p-116b18fe.entry.js.map → p-ae422058.entry.js.map} +0 -0
  442. /package/dist/core/{p-a7d52bd1.entry.js.map → p-b306cbc8.entry.js.map} +0 -0
  443. /package/dist/core/{p-d78fd9f3.entry.js.map → p-ca8cbd6a.entry.js.map} +0 -0
  444. /package/dist/core/{p-da4f0a58.entry.js.map → p-caf857de.entry.js.map} +0 -0
  445. /package/dist/core/{p-27aa95e7.entry.js.map → p-d3856ed3.entry.js.map} +0 -0
  446. /package/dist/core/{p-c345a874.entry.js.map → p-d4fdd8c1.entry.js.map} +0 -0
  447. /package/dist/core/{p-337b6e05.entry.js.map → p-d5c99ec3.entry.js.map} +0 -0
  448. /package/dist/core/{p-93c5b849.entry.js.map → p-f55ad6ae.entry.js.map} +0 -0
  449. /package/dist/core/{p-d9342548.entry.js.map → p-fbf4e9b7.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