@ukic/canary-web-components 3.0.0-canary.2 → 3.0.0-canary.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (592) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-33b42cd6.js → helpers-36cdc6cb.js} +24 -1
  3. package/dist/cjs/helpers-36cdc6cb.js.map +1 -0
  4. package/dist/cjs/{helpers-6817cfbb.js → helpers-a67ad3a4.js} +15 -129
  5. package/dist/cjs/helpers-a67ad3a4.js.map +1 -0
  6. package/dist/cjs/ic-accordion-group.cjs.entry.js +10 -10
  7. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-accordion.cjs.entry.js +5 -5
  9. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-alert.cjs.entry.js +7 -5
  11. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-badge.cjs.entry.js +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 +2 -2
  17. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-card-horizontal.cjs.entry.js +21 -26
  19. package/dist/cjs/ic-card-horizontal.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-card-vertical.cjs.entry.js +22 -24
  21. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-checkbox-group.cjs.entry.js +17 -6
  23. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-checkbox.cjs.entry.js +6 -4
  25. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-data-table-title-bar.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-data-table.cjs.entry.js +86 -10
  32. package/dist/cjs/ic-data-table.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-date-input.cjs.entry.js +13 -11
  34. package/dist/cjs/ic-date-input.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-date-picker.cjs.entry.js +4 -2
  36. package/dist/cjs/ic-date-picker.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-dialog.cjs.entry.js +4 -2
  38. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-divider.cjs.entry.js +71 -7
  40. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-empty-state_2.cjs.entry.js +31 -16
  42. package/dist/cjs/ic-empty-state_2.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  44. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  46. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  48. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-hero.cjs.entry.js +2 -2
  50. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +4 -3
  52. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +1013 -0
  54. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -0
  55. package/dist/cjs/ic-input-label_2.cjs.entry.js +86 -0
  56. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -0
  57. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-menu-group.cjs.entry.js +3 -3
  59. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-menu-item.cjs.entry.js +11 -11
  61. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-navigation-group.cjs.entry.js +5 -4
  64. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-navigation-item.cjs.entry.js +29 -2
  66. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  68. package/dist/cjs/ic-page-header.cjs.entry.js +5 -5
  69. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-pagination_4.cjs.entry.js +191 -62
  71. package/dist/cjs/ic-pagination_4.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-popover-menu.cjs.entry.js +11 -11
  73. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  74. package/dist/cjs/ic-radio-group.cjs.entry.js +15 -6
  75. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  76. package/dist/cjs/ic-radio-option.cjs.entry.js +31 -22
  77. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  78. package/dist/cjs/ic-search-bar.cjs.entry.js +12 -9
  79. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-side-navigation.cjs.entry.js +4 -3
  81. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  83. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  84. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  85. package/dist/cjs/ic-switch.cjs.entry.js +7 -4
  86. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ic-tab-context.cjs.entry.js +2 -1
  88. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  89. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  90. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  91. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  92. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  93. package/dist/cjs/ic-toast.cjs.entry.js +3 -3
  94. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  95. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +1 -1
  96. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  97. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  98. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  99. package/dist/cjs/ic-tree-item.cjs.entry.js +10 -6
  100. package/dist/cjs/ic-tree-item.cjs.entry.js.map +1 -1
  101. package/dist/cjs/ic-tree-view.cjs.entry.js +19 -11
  102. package/dist/cjs/ic-tree-view.cjs.entry.js.map +1 -1
  103. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  104. package/dist/cjs/index-4cf27b16.js +4 -12
  105. package/dist/cjs/loader.cjs.js +1 -1
  106. package/dist/collection/collection-manifest.json +0 -2
  107. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.css +18 -21
  108. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js +44 -25
  109. package/dist/collection/components/ic-card-horizontal/ic-card-horizontal.js.map +1 -1
  110. package/dist/collection/components/ic-data-table/ic-data-table.css +20 -0
  111. package/dist/collection/components/ic-data-table/ic-data-table.js +106 -10
  112. package/dist/collection/components/ic-data-table/ic-data-table.js.map +1 -1
  113. package/dist/collection/components/ic-data-table/story-data.js +7 -0
  114. package/dist/collection/components/ic-data-table/story-data.js.map +1 -1
  115. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js +17 -0
  116. package/dist/collection/components/ic-data-table/test/basic/ic-data-table.spec.js.map +1 -1
  117. package/dist/collection/components/ic-date-input/ic-date-input.css +8 -0
  118. package/dist/collection/components/ic-date-input/ic-date-input.js +29 -9
  119. package/dist/collection/components/ic-date-input/ic-date-input.js.map +1 -1
  120. package/dist/collection/components/ic-date-picker/ic-date-picker.css +1 -0
  121. package/dist/collection/components/ic-date-picker/ic-date-picker.js +20 -0
  122. package/dist/collection/components/ic-date-picker/ic-date-picker.js.map +1 -1
  123. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.css +8 -7
  124. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js +87 -36
  125. package/dist/collection/components/ic-pagination-bar/ic-pagination-bar.js.map +1 -1
  126. package/dist/collection/components/ic-tree-item/ic-tree-item.css +25 -21
  127. package/dist/collection/components/ic-tree-item/ic-tree-item.js +51 -32
  128. package/dist/collection/components/ic-tree-item/ic-tree-item.js.map +1 -1
  129. package/dist/collection/components/ic-tree-view/ic-tree-view.css +8 -9
  130. package/dist/collection/components/ic-tree-view/ic-tree-view.js +51 -23
  131. package/dist/collection/components/ic-tree-view/ic-tree-view.js.map +1 -1
  132. package/dist/collection/utils/helpers.js +1 -1
  133. package/dist/collection/utils/helpers.js.map +1 -1
  134. package/dist/collection/utils/types.js.map +1 -1
  135. package/dist/components/helpers.js +22 -1
  136. package/dist/components/helpers.js.map +1 -1
  137. package/dist/components/helpers2.js +14 -121
  138. package/dist/components/helpers2.js.map +1 -1
  139. package/dist/components/ic-accordion-group.js +11 -11
  140. package/dist/components/ic-accordion-group.js.map +1 -1
  141. package/dist/components/ic-accordion.js +5 -5
  142. package/dist/components/ic-accordion.js.map +1 -1
  143. package/dist/components/ic-alert.js +8 -5
  144. package/dist/components/ic-alert.js.map +1 -1
  145. package/dist/components/ic-card-horizontal.js +22 -26
  146. package/dist/components/ic-card-horizontal.js.map +1 -1
  147. package/dist/components/ic-card-vertical.js +23 -24
  148. package/dist/components/ic-card-vertical.js.map +1 -1
  149. package/dist/components/ic-checkbox-group.js +19 -6
  150. package/dist/components/ic-checkbox-group.js.map +1 -1
  151. package/dist/components/ic-checkbox.js +6 -3
  152. package/dist/components/ic-checkbox.js.map +1 -1
  153. package/dist/components/ic-classification-banner.js +1 -1
  154. package/dist/components/ic-classification-banner.js.map +1 -1
  155. package/dist/components/ic-data-table.js +88 -10
  156. package/dist/components/ic-data-table.js.map +1 -1
  157. package/dist/components/ic-date-input2.js +14 -11
  158. package/dist/components/ic-date-input2.js.map +1 -1
  159. package/dist/components/ic-date-picker.js +5 -2
  160. package/dist/components/ic-date-picker.js.map +1 -1
  161. package/dist/components/ic-dialog.js +4 -1
  162. package/dist/components/ic-dialog.js.map +1 -1
  163. package/dist/components/ic-divider2.js +86 -9
  164. package/dist/components/ic-divider2.js.map +1 -1
  165. package/dist/components/ic-footer-link-group.js +1 -1
  166. package/dist/components/ic-footer-link-group.js.map +1 -1
  167. package/dist/components/ic-footer-link.js +1 -1
  168. package/dist/components/ic-footer-link.js.map +1 -1
  169. package/dist/components/ic-footer.js +2 -2
  170. package/dist/components/ic-footer.js.map +1 -1
  171. package/dist/components/ic-hero.js +1 -1
  172. package/dist/components/ic-hero.js.map +1 -1
  173. package/dist/components/ic-horizontal-scroll2.js +4 -3
  174. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  175. package/dist/components/ic-input-component-container2.js +1 -1
  176. package/dist/components/ic-input-component-container2.js.map +1 -1
  177. package/dist/components/ic-input-label2.js +10 -6
  178. package/dist/components/ic-input-label2.js.map +1 -1
  179. package/dist/components/ic-input-validation2.js +1 -1
  180. package/dist/components/ic-input-validation2.js.map +1 -1
  181. package/dist/components/ic-loading-indicator2.js +1 -1
  182. package/dist/components/ic-loading-indicator2.js.map +1 -1
  183. package/dist/components/ic-menu-group.js +2 -2
  184. package/dist/components/ic-menu-group.js.map +1 -1
  185. package/dist/components/ic-menu-item2.js +11 -11
  186. package/dist/components/ic-menu-item2.js.map +1 -1
  187. package/dist/components/ic-menu2.js +453 -169
  188. package/dist/components/ic-menu2.js.map +1 -1
  189. package/dist/components/ic-navigation-group.js +5 -4
  190. package/dist/components/ic-navigation-group.js.map +1 -1
  191. package/dist/components/ic-navigation-item.js +31 -3
  192. package/dist/components/ic-navigation-item.js.map +1 -1
  193. package/dist/components/ic-navigation-menu2.js +1 -1
  194. package/dist/components/ic-page-header.js +4 -4
  195. package/dist/components/ic-page-header.js.map +1 -1
  196. package/dist/components/ic-pagination-bar2.js +34 -17
  197. package/dist/components/ic-pagination-bar2.js.map +1 -1
  198. package/dist/components/ic-pagination-item2.js +10 -12
  199. package/dist/components/ic-pagination-item2.js.map +1 -1
  200. package/dist/components/ic-pagination2.js +38 -15
  201. package/dist/components/ic-pagination2.js.map +1 -1
  202. package/dist/components/ic-popover-menu.js +12 -11
  203. package/dist/components/ic-popover-menu.js.map +1 -1
  204. package/dist/components/ic-radio-group.js +17 -6
  205. package/dist/components/ic-radio-group.js.map +1 -1
  206. package/dist/components/ic-radio-option.js +32 -22
  207. package/dist/components/ic-radio-option.js.map +1 -1
  208. package/dist/components/ic-search-bar.js +13 -9
  209. package/dist/components/ic-search-bar.js.map +1 -1
  210. package/dist/components/ic-select2.js +148 -37
  211. package/dist/components/ic-select2.js.map +1 -1
  212. package/dist/components/ic-side-navigation.js +4 -3
  213. package/dist/components/ic-side-navigation.js.map +1 -1
  214. package/dist/components/ic-stepper.js +1 -1
  215. package/dist/components/ic-switch.js +7 -3
  216. package/dist/components/ic-switch.js.map +1 -1
  217. package/dist/components/ic-tab-context.js +2 -1
  218. package/dist/components/ic-tab-context.js.map +1 -1
  219. package/dist/components/ic-text-field2.js +2 -2
  220. package/dist/components/ic-text-field2.js.map +1 -1
  221. package/dist/components/ic-theme.js +1 -1
  222. package/dist/components/ic-toast.js +3 -3
  223. package/dist/components/ic-toast.js.map +1 -1
  224. package/dist/components/ic-toggle-button-group.js +1 -1
  225. package/dist/components/ic-toggle-button-group.js.map +1 -1
  226. package/dist/components/ic-top-navigation.js +1 -1
  227. package/dist/components/ic-tree-item.js +11 -6
  228. package/dist/components/ic-tree-item.js.map +1 -1
  229. package/dist/components/ic-tree-view.js +24 -14
  230. package/dist/components/ic-tree-view.js.map +1 -1
  231. package/dist/core/core.css +692 -10
  232. package/dist/core/core.esm.js +1 -1
  233. package/dist/core/core.esm.js.map +1 -1
  234. package/dist/core/p-00ff3a06.entry.js +2 -0
  235. package/dist/core/p-00ff3a06.entry.js.map +1 -0
  236. package/dist/core/{p-7e1603cc.entry.js → p-01ab3a15.entry.js} +2 -2
  237. package/dist/core/p-01ab3a15.entry.js.map +1 -0
  238. package/dist/core/{p-c033e7d6.entry.js → p-036d251b.entry.js} +2 -2
  239. package/dist/core/{p-9397b15b.js → p-043cf5de.js} +2 -2
  240. package/dist/core/p-043cf5de.js.map +1 -0
  241. package/dist/core/{p-d2e7a256.entry.js → p-13d2db9b.entry.js} +2 -2
  242. package/dist/core/p-1d24a02a.entry.js +2 -0
  243. package/dist/core/{p-7c80d79c.entry.js.map → p-1d24a02a.entry.js.map} +1 -1
  244. package/dist/core/p-235b461f.entry.js +2 -0
  245. package/dist/core/p-235b461f.entry.js.map +1 -0
  246. package/dist/core/{p-897b8d16.entry.js → p-24d03bbd.entry.js} +2 -2
  247. package/dist/core/{p-bb1252fa.entry.js → p-26613dbd.entry.js} +2 -2
  248. package/dist/core/p-2873f871.entry.js +2 -0
  249. package/dist/core/p-2873f871.entry.js.map +1 -0
  250. package/dist/core/{p-77a32de5.entry.js → p-2a3bd99a.entry.js} +2 -2
  251. package/dist/core/p-2f4bec06.entry.js +2 -0
  252. package/dist/core/p-2f4bec06.entry.js.map +1 -0
  253. package/dist/core/p-350074d4.entry.js +2 -0
  254. package/dist/core/p-350074d4.entry.js.map +1 -0
  255. package/dist/core/{p-5cfb5821.entry.js → p-39101ffc.entry.js} +2 -2
  256. package/dist/core/{p-5cfb5821.entry.js.map → p-39101ffc.entry.js.map} +1 -1
  257. package/dist/core/p-3b0fae40.entry.js +2 -0
  258. package/dist/core/p-3b0fae40.entry.js.map +1 -0
  259. package/dist/core/p-42f1b9cc.entry.js +2 -0
  260. package/dist/core/p-42f1b9cc.entry.js.map +1 -0
  261. package/dist/core/p-50dd2744.entry.js +2 -0
  262. package/dist/core/p-50dd2744.entry.js.map +1 -0
  263. package/dist/core/p-53228014.entry.js +2 -0
  264. package/dist/core/p-53228014.entry.js.map +1 -0
  265. package/dist/core/p-574355c9.entry.js +2 -0
  266. package/dist/core/p-574355c9.entry.js.map +1 -0
  267. package/dist/core/p-5af1273f.entry.js +2 -0
  268. package/dist/core/p-5af1273f.entry.js.map +1 -0
  269. package/dist/core/p-5eecd3fc.entry.js +2 -0
  270. package/dist/core/p-5eecd3fc.entry.js.map +1 -0
  271. package/dist/core/{p-4e28ef60.entry.js → p-606ad46f.entry.js} +2 -2
  272. package/dist/core/p-606ad46f.entry.js.map +1 -0
  273. package/dist/core/{p-4dcc37e7.entry.js → p-620b758c.entry.js} +2 -2
  274. package/dist/core/p-637035c3.entry.js +2 -0
  275. package/dist/core/p-637035c3.entry.js.map +1 -0
  276. package/dist/core/{p-6beffd0e.entry.js → p-6727166b.entry.js} +2 -2
  277. package/dist/core/{p-8ca2e329.entry.js → p-6dc00a8f.entry.js} +2 -2
  278. package/dist/core/{p-aeb6016c.entry.js → p-6dffaac0.entry.js} +2 -2
  279. package/dist/core/{p-aeb6016c.entry.js.map → p-6dffaac0.entry.js.map} +1 -1
  280. package/dist/core/p-72210cd4.entry.js +2 -0
  281. package/dist/core/p-72210cd4.entry.js.map +1 -0
  282. package/dist/core/{p-d5ca3bcb.entry.js → p-7aa6b76e.entry.js} +2 -2
  283. package/dist/core/{p-e5d99316.entry.js → p-7b90f0ae.entry.js} +2 -2
  284. package/dist/core/p-7c3c080a.entry.js +2 -0
  285. package/dist/core/p-7c3c080a.entry.js.map +1 -0
  286. package/dist/core/p-7c663d4a.entry.js +2 -0
  287. package/dist/core/p-7c663d4a.entry.js.map +1 -0
  288. package/dist/core/p-7c6710f8.entry.js +2 -0
  289. package/dist/core/p-7c6710f8.entry.js.map +1 -0
  290. package/dist/core/{p-50019ede.entry.js → p-80b296cd.entry.js} +2 -2
  291. package/dist/core/{p-b0751bd9.entry.js → p-80dee118.entry.js} +2 -2
  292. package/dist/core/p-80dee118.entry.js.map +1 -0
  293. package/dist/core/{p-eb65e556.entry.js → p-82aa8136.entry.js} +2 -2
  294. package/dist/core/{p-2e49fb22.entry.js → p-83b4efe2.entry.js} +2 -2
  295. package/dist/core/p-83e4d955.entry.js +2 -0
  296. package/dist/core/p-83e4d955.entry.js.map +1 -0
  297. package/dist/core/p-85d51975.entry.js +2 -0
  298. package/dist/core/p-85d51975.entry.js.map +1 -0
  299. package/dist/core/{p-5accf0bb.entry.js → p-878df16f.entry.js} +2 -2
  300. package/dist/core/{p-1fe35de1.entry.js → p-8bec76d1.entry.js} +2 -2
  301. package/dist/core/p-8ffdd236.entry.js +2 -0
  302. package/dist/core/p-8ffdd236.entry.js.map +1 -0
  303. package/dist/core/p-97953d8b.entry.js +2 -0
  304. package/dist/core/p-97953d8b.entry.js.map +1 -0
  305. package/dist/core/p-9a62c3b8.entry.js +2 -0
  306. package/dist/core/p-9a62c3b8.entry.js.map +1 -0
  307. package/dist/core/p-a22d335b.entry.js +2 -0
  308. package/dist/core/p-a22d335b.entry.js.map +1 -0
  309. package/dist/core/p-a22e5356.entry.js +2 -0
  310. package/dist/core/p-a22e5356.entry.js.map +1 -0
  311. package/dist/core/p-b03218df.entry.js +2 -0
  312. package/dist/core/p-b03218df.entry.js.map +1 -0
  313. package/dist/core/{p-486d8d43.entry.js → p-b3d93bc1.entry.js} +2 -2
  314. package/dist/core/p-c1feb2b2.entry.js +2 -0
  315. package/dist/core/p-c1feb2b2.entry.js.map +1 -0
  316. package/dist/core/{p-ed4cde5a.entry.js → p-c40c57ee.entry.js} +2 -2
  317. package/dist/core/p-c883b5c1.entry.js +2 -0
  318. package/dist/core/p-c883b5c1.entry.js.map +1 -0
  319. package/dist/core/{p-0ab10600.entry.js → p-cc22644d.entry.js} +2 -2
  320. package/dist/core/{p-505250cf.entry.js → p-d7632baf.entry.js} +2 -2
  321. package/dist/core/p-dcbfc485.entry.js +2 -0
  322. package/dist/core/p-dcbfc485.entry.js.map +1 -0
  323. package/dist/core/{p-44ee5375.entry.js → p-e3e0cf46.entry.js} +2 -2
  324. package/dist/core/p-e3e0cf46.entry.js.map +1 -0
  325. package/dist/core/p-e6a330e4.js +2 -0
  326. package/dist/core/p-e6a330e4.js.map +1 -0
  327. package/dist/core/{p-1109636a.entry.js → p-e7b6d9c5.entry.js} +2 -2
  328. package/dist/core/{p-1109636a.entry.js.map → p-e7b6d9c5.entry.js.map} +1 -1
  329. package/dist/core/p-ea3e2419.entry.js +2 -0
  330. package/dist/core/p-ea3e2419.entry.js.map +1 -0
  331. package/dist/core/p-f32ab3de.entry.js +2 -0
  332. package/dist/core/p-f32ab3de.entry.js.map +1 -0
  333. package/dist/core/p-f3f9acbb.entry.js +2 -0
  334. package/dist/core/p-f3f9acbb.entry.js.map +1 -0
  335. package/dist/core/{p-d03374fc.entry.js → p-fbb5c8f2.entry.js} +2 -2
  336. package/dist/esm/core.js +1 -1
  337. package/dist/esm/{helpers-5bd2012a.js → helpers-1e2516ae.js} +15 -122
  338. package/dist/esm/helpers-1e2516ae.js.map +1 -0
  339. package/dist/esm/{helpers-dab8ddfe.js → helpers-c326255f.js} +23 -2
  340. package/dist/esm/helpers-c326255f.js.map +1 -0
  341. package/dist/esm/ic-accordion-group.entry.js +10 -10
  342. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  343. package/dist/esm/ic-accordion.entry.js +5 -5
  344. package/dist/esm/ic-accordion.entry.js.map +1 -1
  345. package/dist/esm/ic-alert.entry.js +7 -5
  346. package/dist/esm/ic-alert.entry.js.map +1 -1
  347. package/dist/esm/ic-back-to-top.entry.js +1 -1
  348. package/dist/esm/ic-badge.entry.js +1 -1
  349. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  350. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  351. package/dist/esm/ic-button_3.entry.js +2 -2
  352. package/dist/esm/ic-button_3.entry.js.map +1 -1
  353. package/dist/esm/ic-card-horizontal.entry.js +22 -27
  354. package/dist/esm/ic-card-horizontal.entry.js.map +1 -1
  355. package/dist/esm/ic-card-vertical.entry.js +23 -25
  356. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  357. package/dist/esm/ic-checkbox-group.entry.js +17 -6
  358. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  359. package/dist/esm/ic-checkbox.entry.js +6 -4
  360. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  361. package/dist/esm/ic-chip.entry.js +1 -1
  362. package/dist/esm/ic-classification-banner.entry.js +1 -1
  363. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  364. package/dist/esm/ic-data-row.entry.js +1 -1
  365. package/dist/esm/ic-data-table-title-bar.entry.js +1 -1
  366. package/dist/esm/ic-data-table.entry.js +86 -10
  367. package/dist/esm/ic-data-table.entry.js.map +1 -1
  368. package/dist/esm/ic-date-input.entry.js +13 -11
  369. package/dist/esm/ic-date-input.entry.js.map +1 -1
  370. package/dist/esm/ic-date-picker.entry.js +4 -2
  371. package/dist/esm/ic-date-picker.entry.js.map +1 -1
  372. package/dist/esm/ic-dialog.entry.js +4 -2
  373. package/dist/esm/ic-dialog.entry.js.map +1 -1
  374. package/dist/esm/ic-divider.entry.js +72 -8
  375. package/dist/esm/ic-divider.entry.js.map +1 -1
  376. package/dist/esm/ic-empty-state_2.entry.js +31 -16
  377. package/dist/esm/ic-empty-state_2.entry.js.map +1 -1
  378. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  379. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  380. package/dist/esm/ic-footer-link.entry.js +2 -2
  381. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  382. package/dist/esm/ic-footer.entry.js +2 -2
  383. package/dist/esm/ic-footer.entry.js.map +1 -1
  384. package/dist/esm/ic-hero.entry.js +2 -2
  385. package/dist/esm/ic-hero.entry.js.map +1 -1
  386. package/dist/esm/ic-horizontal-scroll.entry.js +4 -3
  387. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  388. package/dist/{collection/components/ic-menu-with-multi/ic-menu.js → esm/ic-input-component-container_3.entry.js} +160 -729
  389. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -0
  390. package/dist/esm/ic-input-label_2.entry.js +81 -0
  391. package/dist/esm/ic-input-label_2.entry.js.map +1 -0
  392. package/dist/esm/ic-link.entry.js +1 -1
  393. package/dist/esm/ic-menu-group.entry.js +3 -3
  394. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  395. package/dist/esm/ic-menu-item.entry.js +11 -11
  396. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  397. package/dist/esm/ic-navigation-button.entry.js +1 -1
  398. package/dist/esm/ic-navigation-group.entry.js +5 -4
  399. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  400. package/dist/esm/ic-navigation-item.entry.js +30 -3
  401. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  402. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  403. package/dist/esm/ic-page-header.entry.js +5 -5
  404. package/dist/esm/ic-page-header.entry.js.map +1 -1
  405. package/dist/esm/ic-pagination_4.entry.js +191 -62
  406. package/dist/esm/ic-pagination_4.entry.js.map +1 -1
  407. package/dist/esm/ic-popover-menu.entry.js +11 -11
  408. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  409. package/dist/esm/ic-radio-group.entry.js +15 -6
  410. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  411. package/dist/esm/ic-radio-option.entry.js +31 -22
  412. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  413. package/dist/esm/ic-search-bar.entry.js +12 -9
  414. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  415. package/dist/esm/ic-side-navigation.entry.js +4 -3
  416. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  417. package/dist/esm/ic-status-tag.entry.js +1 -1
  418. package/dist/esm/ic-step.entry.js +1 -1
  419. package/dist/esm/ic-stepper.entry.js +1 -1
  420. package/dist/esm/ic-switch.entry.js +7 -4
  421. package/dist/esm/ic-switch.entry.js.map +1 -1
  422. package/dist/esm/ic-tab-context.entry.js +2 -1
  423. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  424. package/dist/esm/ic-tab-group.entry.js +1 -1
  425. package/dist/esm/ic-tab-panel.entry.js +1 -1
  426. package/dist/esm/ic-tab.entry.js +1 -1
  427. package/dist/esm/ic-theme.entry.js +1 -1
  428. package/dist/esm/ic-toast.entry.js +3 -3
  429. package/dist/esm/ic-toast.entry.js.map +1 -1
  430. package/dist/esm/ic-toggle-button-group.entry.js +1 -1
  431. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  432. package/dist/esm/ic-toggle-button.entry.js +1 -1
  433. package/dist/esm/ic-top-navigation.entry.js +1 -1
  434. package/dist/esm/ic-tree-item.entry.js +10 -6
  435. package/dist/esm/ic-tree-item.entry.js.map +1 -1
  436. package/dist/esm/ic-tree-view.entry.js +19 -11
  437. package/dist/esm/ic-tree-view.entry.js.map +1 -1
  438. package/dist/esm/ic-typography.entry.js +1 -1
  439. package/dist/esm/index-93509377.js +4 -12
  440. package/dist/esm/loader.js +1 -1
  441. package/dist/types/components/ic-card-horizontal/ic-card-horizontal.d.ts +6 -2
  442. package/dist/types/components/ic-data-table/ic-data-table.d.ts +13 -0
  443. package/dist/types/components/ic-data-table/story-data.d.ts +1 -0
  444. package/dist/types/components/ic-date-input/ic-date-input.d.ts +4 -0
  445. package/dist/types/components/ic-date-picker/ic-date-picker.d.ts +4 -0
  446. package/dist/types/components/ic-pagination-bar/ic-pagination-bar.d.ts +15 -6
  447. package/dist/types/components/ic-tree-item/ic-tree-item.d.ts +11 -6
  448. package/dist/types/components/ic-tree-view/ic-tree-view.d.ts +10 -4
  449. package/dist/types/components.d.ts +94 -484
  450. package/dist/types/utils/helpers.d.ts +1 -1
  451. package/dist/types/utils/types.d.ts +4 -1
  452. package/hydrate/index.js +3373 -6380
  453. package/package.json +3 -3
  454. package/dist/cjs/helpers-33b42cd6.js.map +0 -1
  455. package/dist/cjs/helpers-6817cfbb.js.map +0 -1
  456. package/dist/cjs/ic-input-component-container_4.cjs.entry.js +0 -156
  457. package/dist/cjs/ic-input-component-container_4.cjs.entry.js.map +0 -1
  458. package/dist/cjs/ic-menu-with-multi.cjs.entry.js +0 -2738
  459. package/dist/cjs/ic-menu-with-multi.cjs.entry.js.map +0 -1
  460. package/dist/cjs/ic-menu.cjs.entry.js +0 -658
  461. package/dist/cjs/ic-menu.cjs.entry.js.map +0 -1
  462. package/dist/cjs/ic-select-with-multi.cjs.entry.js +0 -788
  463. package/dist/cjs/ic-select-with-multi.cjs.entry.js.map +0 -1
  464. package/dist/collection/components/ic-menu-with-multi/ic-menu.css +0 -712
  465. package/dist/collection/components/ic-menu-with-multi/ic-menu.js.map +0 -1
  466. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js +0 -1057
  467. package/dist/collection/components/ic-menu-with-multi/test/basic/ic-menu.spec.js.map +0 -1
  468. package/dist/collection/components/ic-select-with-multi/assets/Check.svg +0 -3
  469. package/dist/collection/components/ic-select-with-multi/assets/Clear.svg +0 -3
  470. package/dist/collection/components/ic-select-with-multi/assets/Expand.svg +0 -3
  471. package/dist/collection/components/ic-select-with-multi/ic-select.css +0 -695
  472. package/dist/collection/components/ic-select-with-multi/ic-select.js +0 -1520
  473. package/dist/collection/components/ic-select-with-multi/ic-select.js.map +0 -1
  474. package/dist/collection/components/ic-select-with-multi/story-data.js +0 -216
  475. package/dist/collection/components/ic-select-with-multi/story-data.js.map +0 -1
  476. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js +0 -1518
  477. package/dist/collection/components/ic-select-with-multi/test/basic/ic-select.spec.js.map +0 -1
  478. package/dist/components/ic-menu-with-multi.d.ts +0 -11
  479. package/dist/components/ic-menu-with-multi.js +0 -8
  480. package/dist/components/ic-menu-with-multi.js.map +0 -1
  481. package/dist/components/ic-menu3.js +0 -2803
  482. package/dist/components/ic-menu3.js.map +0 -1
  483. package/dist/components/ic-select-with-multi.d.ts +0 -11
  484. package/dist/components/ic-select-with-multi.js +0 -906
  485. package/dist/components/ic-select-with-multi.js.map +0 -1
  486. package/dist/core/p-0894cab1.entry.js +0 -2
  487. package/dist/core/p-0894cab1.entry.js.map +0 -1
  488. package/dist/core/p-130a05cf.entry.js +0 -2
  489. package/dist/core/p-130a05cf.entry.js.map +0 -1
  490. package/dist/core/p-1e2aa8a6.entry.js +0 -2
  491. package/dist/core/p-1e2aa8a6.entry.js.map +0 -1
  492. package/dist/core/p-202bc922.entry.js +0 -2
  493. package/dist/core/p-202bc922.entry.js.map +0 -1
  494. package/dist/core/p-28323849.entry.js +0 -2
  495. package/dist/core/p-28323849.entry.js.map +0 -1
  496. package/dist/core/p-297e99cf.js +0 -2
  497. package/dist/core/p-297e99cf.js.map +0 -1
  498. package/dist/core/p-2ff4e283.entry.js +0 -2
  499. package/dist/core/p-2ff4e283.entry.js.map +0 -1
  500. package/dist/core/p-30b046b2.entry.js +0 -2
  501. package/dist/core/p-30b046b2.entry.js.map +0 -1
  502. package/dist/core/p-3db785f0.entry.js +0 -2
  503. package/dist/core/p-3db785f0.entry.js.map +0 -1
  504. package/dist/core/p-42883e4c.entry.js +0 -2
  505. package/dist/core/p-42883e4c.entry.js.map +0 -1
  506. package/dist/core/p-42e0f3bd.entry.js +0 -2
  507. package/dist/core/p-42e0f3bd.entry.js.map +0 -1
  508. package/dist/core/p-44ee5375.entry.js.map +0 -1
  509. package/dist/core/p-4e28ef60.entry.js.map +0 -1
  510. package/dist/core/p-53e00a8a.entry.js +0 -2
  511. package/dist/core/p-53e00a8a.entry.js.map +0 -1
  512. package/dist/core/p-59028160.entry.js +0 -2
  513. package/dist/core/p-59028160.entry.js.map +0 -1
  514. package/dist/core/p-5b7dfe57.entry.js +0 -2
  515. package/dist/core/p-5b7dfe57.entry.js.map +0 -1
  516. package/dist/core/p-603fea14.entry.js +0 -2
  517. package/dist/core/p-603fea14.entry.js.map +0 -1
  518. package/dist/core/p-64933069.entry.js +0 -2
  519. package/dist/core/p-64933069.entry.js.map +0 -1
  520. package/dist/core/p-7c268030.entry.js +0 -2
  521. package/dist/core/p-7c268030.entry.js.map +0 -1
  522. package/dist/core/p-7c78f6c6.entry.js +0 -2
  523. package/dist/core/p-7c78f6c6.entry.js.map +0 -1
  524. package/dist/core/p-7c80d79c.entry.js +0 -2
  525. package/dist/core/p-7e1603cc.entry.js.map +0 -1
  526. package/dist/core/p-8df49808.entry.js +0 -2
  527. package/dist/core/p-8df49808.entry.js.map +0 -1
  528. package/dist/core/p-8f12659d.entry.js +0 -2
  529. package/dist/core/p-8f12659d.entry.js.map +0 -1
  530. package/dist/core/p-903ee57e.entry.js +0 -2
  531. package/dist/core/p-903ee57e.entry.js.map +0 -1
  532. package/dist/core/p-92e3ccb9.entry.js +0 -2
  533. package/dist/core/p-92e3ccb9.entry.js.map +0 -1
  534. package/dist/core/p-9397b15b.js.map +0 -1
  535. package/dist/core/p-9b54feca.entry.js +0 -2
  536. package/dist/core/p-9b54feca.entry.js.map +0 -1
  537. package/dist/core/p-a78cf2cb.entry.js +0 -2
  538. package/dist/core/p-a78cf2cb.entry.js.map +0 -1
  539. package/dist/core/p-a9151d0b.entry.js +0 -2
  540. package/dist/core/p-a9151d0b.entry.js.map +0 -1
  541. package/dist/core/p-acc76b80.entry.js +0 -2
  542. package/dist/core/p-acc76b80.entry.js.map +0 -1
  543. package/dist/core/p-b0751bd9.entry.js.map +0 -1
  544. package/dist/core/p-c1698936.entry.js +0 -2
  545. package/dist/core/p-c1698936.entry.js.map +0 -1
  546. package/dist/core/p-c1e90c85.entry.js +0 -2
  547. package/dist/core/p-c1e90c85.entry.js.map +0 -1
  548. package/dist/core/p-cb63e656.entry.js +0 -2
  549. package/dist/core/p-cb63e656.entry.js.map +0 -1
  550. package/dist/core/p-d3c0bffb.entry.js +0 -2
  551. package/dist/core/p-d3c0bffb.entry.js.map +0 -1
  552. package/dist/core/p-da3e8c54.entry.js +0 -2
  553. package/dist/core/p-da3e8c54.entry.js.map +0 -1
  554. package/dist/core/p-ec53b435.entry.js +0 -2
  555. package/dist/core/p-ec53b435.entry.js.map +0 -1
  556. package/dist/core/p-f9810621.entry.js +0 -2
  557. package/dist/core/p-f9810621.entry.js.map +0 -1
  558. package/dist/core/p-fb7b99dd.entry.js +0 -2
  559. package/dist/core/p-fb7b99dd.entry.js.map +0 -1
  560. package/dist/esm/helpers-5bd2012a.js.map +0 -1
  561. package/dist/esm/helpers-dab8ddfe.js.map +0 -1
  562. package/dist/esm/ic-input-component-container_4.entry.js +0 -149
  563. package/dist/esm/ic-input-component-container_4.entry.js.map +0 -1
  564. package/dist/esm/ic-menu-with-multi.entry.js +0 -2734
  565. package/dist/esm/ic-menu-with-multi.entry.js.map +0 -1
  566. package/dist/esm/ic-menu.entry.js +0 -654
  567. package/dist/esm/ic-menu.entry.js.map +0 -1
  568. package/dist/esm/ic-select-with-multi.entry.js +0 -784
  569. package/dist/esm/ic-select-with-multi.entry.js.map +0 -1
  570. package/dist/types/components/ic-menu-with-multi/ic-menu.d.ts +0 -214
  571. package/dist/types/components/ic-select-with-multi/ic-select.d.ts +0 -259
  572. package/dist/types/components/ic-select-with-multi/story-data.d.ts +0 -32
  573. /package/dist/core/{p-c033e7d6.entry.js.map → p-036d251b.entry.js.map} +0 -0
  574. /package/dist/core/{p-d2e7a256.entry.js.map → p-13d2db9b.entry.js.map} +0 -0
  575. /package/dist/core/{p-897b8d16.entry.js.map → p-24d03bbd.entry.js.map} +0 -0
  576. /package/dist/core/{p-bb1252fa.entry.js.map → p-26613dbd.entry.js.map} +0 -0
  577. /package/dist/core/{p-77a32de5.entry.js.map → p-2a3bd99a.entry.js.map} +0 -0
  578. /package/dist/core/{p-4dcc37e7.entry.js.map → p-620b758c.entry.js.map} +0 -0
  579. /package/dist/core/{p-6beffd0e.entry.js.map → p-6727166b.entry.js.map} +0 -0
  580. /package/dist/core/{p-8ca2e329.entry.js.map → p-6dc00a8f.entry.js.map} +0 -0
  581. /package/dist/core/{p-d5ca3bcb.entry.js.map → p-7aa6b76e.entry.js.map} +0 -0
  582. /package/dist/core/{p-e5d99316.entry.js.map → p-7b90f0ae.entry.js.map} +0 -0
  583. /package/dist/core/{p-50019ede.entry.js.map → p-80b296cd.entry.js.map} +0 -0
  584. /package/dist/core/{p-eb65e556.entry.js.map → p-82aa8136.entry.js.map} +0 -0
  585. /package/dist/core/{p-2e49fb22.entry.js.map → p-83b4efe2.entry.js.map} +0 -0
  586. /package/dist/core/{p-5accf0bb.entry.js.map → p-878df16f.entry.js.map} +0 -0
  587. /package/dist/core/{p-1fe35de1.entry.js.map → p-8bec76d1.entry.js.map} +0 -0
  588. /package/dist/core/{p-486d8d43.entry.js.map → p-b3d93bc1.entry.js.map} +0 -0
  589. /package/dist/core/{p-ed4cde5a.entry.js.map → p-c40c57ee.entry.js.map} +0 -0
  590. /package/dist/core/{p-0ab10600.entry.js.map → p-cc22644d.entry.js.map} +0 -0
  591. /package/dist/core/{p-505250cf.entry.js.map → p-d7632baf.entry.js.map} +0 -0
  592. /package/dist/core/{p-d03374fc.entry.js.map → p-fbb5c8f2.entry.js.map} +0 -0
@@ -1,1518 +0,0 @@
1
- import { h } from "@stencil/core";
2
- import { newSpecPage } from "@stencil/core/testing";
3
- import { Menu } from "../../../ic-menu-with-multi/ic-menu";
4
- import { Select } from "../../ic-select";
5
- import * as helpers from "@ukic/web-components/dist/types/utils/helpers";
6
- import { IcButton } from "@ukic/web-components/dist/components/ic-button";
7
- import { waitForTimeout } from "../../../../testspec.setup";
8
- import { IcInputComponentContainer } from "@ukic/web-components/dist/components/ic-input-component-container";
9
- beforeAll(() => {
10
- jest.spyOn(console, "warn").mockImplementation(jest.fn());
11
- });
12
- const label1 = "Test label 1";
13
- const value1 = "Test value 1";
14
- const label2 = "Test label 2";
15
- const value2 = "Test value 2";
16
- const label3 = "Test label 3";
17
- const value3 = "Test value 3";
18
- const label4 = "Test label 4";
19
- const value4 = "Test value 4";
20
- const groupLabel = "Test Group Label";
21
- const testValue = "Test value";
22
- const menuUl = "ic-menu ul";
23
- const noResults = "No results found";
24
- const clearButtonId = "#clear-button";
25
- const loadingLabel = "Loading...";
26
- const loadingErrorLabel = "Loading Error";
27
- const retryButtonId = "#retry-button";
28
- const menuOptions = [
29
- { label: label1, value: value1 },
30
- { label: label2, value: value2 },
31
- { label: label3, value: value3 },
32
- ];
33
- const menuOptionsWithDescriptions = [
34
- {
35
- label: "Cappuccino",
36
- value: "Cap",
37
- description: "Coffee frothed up with pressurised steam",
38
- },
39
- {
40
- label: "Latte",
41
- value: "Lat",
42
- description: "A milkier coffee than a cappuccino",
43
- },
44
- {
45
- label: "Americano",
46
- value: "Ame",
47
- description: "Espresso coffee diluted with hot water",
48
- },
49
- ];
50
- const menuOptionsNoValues = [
51
- { label: label1 },
52
- { label: label2 },
53
- { label: label3 },
54
- ];
55
- const menuOptionsWithDuplicates = [
56
- { label: label1, value: value1 },
57
- { label: label2, value: value2 },
58
- { label: label3, value: value3 },
59
- { label: label3, value: value3 },
60
- {
61
- label: groupLabel,
62
- children: [
63
- { label: label1, value: value1 },
64
- { label: label4, value: value4 },
65
- ],
66
- },
67
- ];
68
- const menuOptionsWithDisabled = [
69
- { label: label1, value: value1 },
70
- { label: label2, value: value2 },
71
- { label: label3, value: value3, disabled: true },
72
- { label: label4, value: value4 },
73
- ];
74
- const menuOptionsWithGroups = [
75
- {
76
- label: "Fancy",
77
- children: [
78
- { label: "Cappuccino", value: "Cap" },
79
- { label: "Flat white", value: "Flat" },
80
- ],
81
- },
82
- {
83
- label: "Boring",
84
- children: [
85
- { label: "Filter", value: "Fil" },
86
- { label: "Latte", value: "Lat" },
87
- ],
88
- },
89
- ];
90
- const getTestSelect = (props) => `<ic-select label="IC Select Test" ${props}></ic-select>
91
- <script>
92
- var select = document.querySelector('ic-select');
93
- var option = 'Test value 1';
94
- select.options = ${menuOptions}
95
- select.addEventListener('icChange', function (event) {
96
- option = event.detail.value;
97
- select.value = option;
98
- });
99
- </script>`;
100
- describe("ic-select single", () => {
101
- it("should not render a label when the 'hide-label' prop is supplied", async () => {
102
- const page = await newSpecPage({
103
- components: [Select, Menu, IcInputComponentContainer],
104
- html: getTestSelect("hide-label"),
105
- });
106
- expect(page.root).toMatchSnapshot("hide-label-set");
107
- });
108
- it("should test select as submit on form", async () => {
109
- const page = await newSpecPage({
110
- components: [Select, Menu, IcInputComponentContainer, IcButton],
111
- html: `<form id="new-form"></form><ic-select id="ic-select" form="new-form" label="IC Select Test" value="test-value"></ic-select>`,
112
- });
113
- expect(page.root).toMatchSnapshot();
114
- });
115
- it("should render readonly", async () => {
116
- const page = await newSpecPage({
117
- components: [Select, Menu, IcInputComponentContainer],
118
- html: getTestSelect('readonly="true"'),
119
- });
120
- expect(page.root).toMatchSnapshot("readonly");
121
- });
122
- it("should have correct validation status", async () => {
123
- const page = await newSpecPage({
124
- components: [Select, Menu, IcInputComponentContainer],
125
- html: getTestSelect('validation-status="error"'),
126
- });
127
- expect(page.root).toMatchSnapshot("with-validation-status-error");
128
- });
129
- it("should not have a validation status if disabled", async () => {
130
- const page = await newSpecPage({
131
- components: [Select, Menu, IcInputComponentContainer],
132
- html: getTestSelect('disabled validation-status="error"'),
133
- });
134
- expect(page.root).toMatchSnapshot("no-validation-status-if-disabled");
135
- });
136
- it("should render correct validation text", async () => {
137
- const page = await newSpecPage({
138
- components: [Select, Menu, IcInputComponentContainer],
139
- html: getTestSelect('validation-status="error" validation-text="Test validation text"'),
140
- });
141
- expect(page.root).toMatchSnapshot("with-validation-text");
142
- });
143
- it("should not render validation text if no validation status has been supplied", async () => {
144
- const page = await newSpecPage({
145
- components: [Select, Menu, IcInputComponentContainer],
146
- html: getTestSelect('validation-text="Test validation text"'),
147
- });
148
- expect(page.root).toMatchSnapshot("no-validation-text-if-no-status");
149
- });
150
- it("should test with clear button", async () => {
151
- const eventSpy = jest.fn();
152
- const page = await newSpecPage({
153
- components: [Select, Menu, IcInputComponentContainer, IcButton],
154
- html: `<ic-select label="IC Select Test" show-clear-button="true" value="test-value"></ic-select>`,
155
- });
156
- page.root.addEventListener("icClear", eventSpy);
157
- page.root.options = menuOptions;
158
- await page.waitForChanges();
159
- expect(page.root).toMatchSnapshot("with-clear-button");
160
- page.root.setFocus();
161
- await page.waitForChanges();
162
- const clearButton = page.root.shadowRoot.querySelector(clearButtonId);
163
- clearButton.focus();
164
- await page.waitForChanges();
165
- expect(page.rootInstance.clearButtonFocused).toBe(true);
166
- clearButton.blur();
167
- await page.waitForChanges();
168
- expect(page.rootInstance.clearButtonFocused).toBe(false);
169
- clearButton.click();
170
- await page.waitForChanges();
171
- expect(eventSpy).toHaveBeenCalled;
172
- });
173
- it("should test menu handleKeyboardOpen method - arrow down (custom select)", async () => {
174
- const page = await newSpecPage({
175
- components: [Select, Menu, IcInputComponentContainer],
176
- html: `<ic-select label="IC Select Test"></ic-select>`,
177
- });
178
- page.root.options = menuOptions;
179
- await page.waitForChanges();
180
- const menu = page.root.shadowRoot.querySelector("ic-menu");
181
- const KeyEvent = {
182
- key: "ArrowDown",
183
- preventDefault: () => null,
184
- };
185
- await menu.handleKeyboardOpen(KeyEvent);
186
- await page.waitForChanges();
187
- expect(page.rootInstance.open).toBeTruthy;
188
- expect(page.rootInstance.value).toBe(value1);
189
- await menu.handleKeyboardOpen(KeyEvent);
190
- await page.waitForChanges();
191
- await menu.handleKeyboardOpen(KeyEvent);
192
- await page.waitForChanges();
193
- await menu.handleKeyboardOpen(KeyEvent);
194
- await page.waitForChanges();
195
- expect(page.rootInstance.value).toBe(value1);
196
- });
197
- it("should test menu handleKeyboardOpen method - arrow up (custom select)", async () => {
198
- const page = await newSpecPage({
199
- components: [Select, Menu, IcInputComponentContainer],
200
- html: `<ic-select label="IC Select Test"></ic-select>`,
201
- });
202
- page.root.options = menuOptions;
203
- await page.waitForChanges();
204
- const menu = page.root.shadowRoot.querySelector("ic-menu");
205
- const KeyEvent = {
206
- key: "ArrowUp",
207
- preventDefault: () => null,
208
- };
209
- await menu.handleKeyboardOpen(KeyEvent);
210
- await page.waitForChanges();
211
- expect(page.rootInstance.open).toBeTruthy;
212
- expect(page.rootInstance.value).toBe(value3);
213
- await menu.handleKeyboardOpen(KeyEvent);
214
- await page.waitForChanges();
215
- await menu.handleKeyboardOpen(KeyEvent);
216
- await page.waitForChanges();
217
- await menu.handleKeyboardOpen(KeyEvent);
218
- await page.waitForChanges();
219
- expect(page.rootInstance.value).toBe(value3);
220
- });
221
- it("should test keydown on menu - space key (custom)", async () => {
222
- const page = await newSpecPage({
223
- components: [Select, Menu, IcInputComponentContainer],
224
- html: `<ic-select label="IC Select Test"></ic-select>`,
225
- });
226
- page.root.options = menuOptions;
227
- page.rootInstance.open = true;
228
- await page.waitForChanges();
229
- const list = page.root.shadowRoot.querySelector("ic-menu ul");
230
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
231
- key: " ",
232
- bubbles: true,
233
- cancelable: true,
234
- }));
235
- await page.waitForChanges();
236
- expect(page.rootInstance.open).toBe(false);
237
- });
238
- it("should test mousedown handler", async () => {
239
- const page = await newSpecPage({
240
- components: [Select, Menu, IcInputComponentContainer],
241
- html: `<ic-select label="IC Select Test"></ic-select>`,
242
- });
243
- page.root.options = menuOptions;
244
- const button = page.root.shadowRoot.querySelector("button.select-input");
245
- const event = new Event("mousedown", {
246
- bubbles: true,
247
- cancelable: true,
248
- });
249
- button.dispatchEvent(event);
250
- await page.waitForChanges();
251
- expect(page.rootInstance.open).toBe(false);
252
- });
253
- it("should use option labels if no values", async () => {
254
- const page = await newSpecPage({
255
- components: [Select, Menu, IcInputComponentContainer],
256
- html: `<ic-select label="IC Select Test"></ic-select>`,
257
- });
258
- page.root.options = menuOptionsNoValues;
259
- await page.waitForChanges();
260
- expect(page.root.options[0].value).toBe(label1);
261
- expect(page.root.options[1].value).toBe(label2);
262
- expect(page.root.options[2].value).toBe(label3);
263
- });
264
- it("should select the option that matches the pressed character key", async () => {
265
- const page = await newSpecPage({
266
- components: [Select, Menu, IcInputComponentContainer],
267
- html: `<ic-select label="IC Select Test"></ic-select>`,
268
- });
269
- page.root.options = menuOptionsWithDescriptions;
270
- await page.waitForChanges();
271
- const eventSpy = jest.fn();
272
- page.win.addEventListener("icChange", eventSpy);
273
- await page.rootInstance.handleKeyDown({
274
- key: "A",
275
- preventDefault: () => null,
276
- });
277
- await page.waitForChanges();
278
- expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
279
- detail: expect.objectContaining({
280
- value: "Ame",
281
- }),
282
- }));
283
- await waitForTimeout(1000);
284
- await page.rootInstance.handleKeyDown({
285
- key: "C",
286
- preventDefault: () => null,
287
- });
288
- await page.waitForChanges();
289
- expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
290
- detail: expect.objectContaining({
291
- value: "Cap",
292
- }),
293
- }));
294
- });
295
- it("should select the option that matches the pressed character key - grouped options", async () => {
296
- const page = await newSpecPage({
297
- components: [Select, Menu, IcInputComponentContainer],
298
- html: `<ic-select label="IC Select Test"></ic-select>`,
299
- });
300
- page.root.options = menuOptionsWithGroups;
301
- await page.waitForChanges();
302
- const eventSpy = jest.fn();
303
- page.win.addEventListener("icChange", eventSpy);
304
- await page.rootInstance.handleKeyDown({
305
- key: "F",
306
- preventDefault: () => null,
307
- });
308
- await page.waitForChanges();
309
- expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
310
- detail: expect.objectContaining({
311
- value: "Flat",
312
- }),
313
- }));
314
- });
315
- it("should test getFilteredChildMenuOptions for custom select", async () => {
316
- const page = await newSpecPage({
317
- components: [Select, Menu, IcInputComponentContainer],
318
- html: `<ic-select label="IC Select Test"></ic-select>`,
319
- });
320
- page.root.options = menuOptionsWithGroups;
321
- await page.waitForChanges();
322
- const result = await page.rootInstance.getFilteredChildMenuOptions(menuOptionsWithGroups[0]);
323
- await page.waitForChanges();
324
- expect(result).toEqual(page.root.options[0]);
325
- });
326
- it("should select the option that matches the character key pressed when menu is open", async () => {
327
- const page = await newSpecPage({
328
- components: [Select, Menu, IcInputComponentContainer],
329
- html: `<ic-select label="IC Select Test"></ic-select>`,
330
- });
331
- page.root.options = menuOptionsWithDescriptions;
332
- page.rootInstance.open = true;
333
- await page.waitForChanges();
334
- const eventSpy = jest.fn();
335
- page.win.addEventListener("icChange", eventSpy);
336
- const list = page.root.shadowRoot.querySelector(menuUl);
337
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
338
- key: "C",
339
- bubbles: true,
340
- cancelable: true,
341
- }));
342
- await page.waitForChanges();
343
- expect(eventSpy).toHaveBeenCalledWith(expect.objectContaining({
344
- detail: expect.objectContaining({
345
- value: "Cap",
346
- }),
347
- }));
348
- });
349
- it("should add to pressedCharacters as characters are pressed and then reset it after 1 second", async () => {
350
- const page = await newSpecPage({
351
- components: [Select, Menu, IcInputComponentContainer],
352
- html: `<ic-select label="IC Select Test"></ic-select>`,
353
- });
354
- page.root.options = menuOptionsWithDescriptions;
355
- await page.waitForChanges();
356
- await page.rootInstance.handleKeyDown({
357
- key: "A",
358
- preventDefault: () => null,
359
- });
360
- await page.waitForChanges();
361
- expect(page.rootInstance.pressedCharacters).toBe("A");
362
- await page.rootInstance.handleKeyDown({
363
- key: "B",
364
- preventDefault: () => null,
365
- });
366
- await page.waitForChanges();
367
- expect(page.rootInstance.pressedCharacters).toBe("AB");
368
- await page.rootInstance.handleKeyDown({
369
- key: "C",
370
- preventDefault: () => null,
371
- });
372
- await page.waitForChanges();
373
- await waitForTimeout(1000);
374
- await page.waitForChanges();
375
- expect(page.rootInstance.pressedCharacters).toBe("");
376
- });
377
- it("should not open the menu when space key is used as a character key", async () => {
378
- const page = await newSpecPage({
379
- components: [Select, Menu, IcInputComponentContainer],
380
- html: `<ic-select label="IC Select Test"></ic-select>`,
381
- });
382
- page.root.options = menuOptionsWithDescriptions;
383
- await page.waitForChanges();
384
- await page.rootInstance.handleKeyDown({
385
- key: "A",
386
- preventDefault: () => null,
387
- });
388
- await page.rootInstance.handleKeyDown({
389
- key: " ",
390
- preventDefault: () => null,
391
- });
392
- await page.waitForChanges();
393
- expect(page.rootInstance.pressedCharacters).toBe("A ");
394
- expect(page.rootInstance.open).toBe(false);
395
- });
396
- it("should not close the menu when space key is used as a character key", async () => {
397
- const page = await newSpecPage({
398
- components: [Select, Menu, IcInputComponentContainer],
399
- html: `<ic-select label="IC Select Test"></ic-select>`,
400
- });
401
- page.root.options = menuOptionsWithDescriptions;
402
- page.rootInstance.open = true;
403
- await page.waitForChanges();
404
- const eventSpy = jest.fn();
405
- page.win.addEventListener("icChange", eventSpy);
406
- const list = page.root.shadowRoot.querySelector(menuUl);
407
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
408
- key: "C",
409
- bubbles: true,
410
- cancelable: true,
411
- }));
412
- await page.waitForChanges();
413
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
414
- key: " ",
415
- bubbles: true,
416
- cancelable: true,
417
- }));
418
- await page.waitForChanges();
419
- expect(page.rootInstance.pressedCharacters).toBe("C ");
420
- expect(page.rootInstance.open).toBe(true);
421
- });
422
- it("should test loading state and timeout for custom select", async () => {
423
- const page = await newSpecPage({
424
- components: [Select, Menu, IcInputComponentContainer],
425
- html: `<ic-select label="IC Select Test" timeout="1000"></ic-select>`,
426
- });
427
- const eventSpy = jest.fn();
428
- page.win.addEventListener("icBlur", eventSpy);
429
- page.rootInstance.loading = true;
430
- page.rootInstance.open = true;
431
- await page.waitForChanges();
432
- expect(page.rootInstance.uniqueOptions[0].label).toEqual(loadingLabel);
433
- await waitForTimeout(1000);
434
- expect(page.rootInstance.uniqueOptions[0].label).toEqual(loadingErrorLabel);
435
- await page.waitForChanges();
436
- const retryButton = page.root.shadowRoot
437
- .querySelector("ic-menu")
438
- .querySelector(retryButtonId);
439
- retryButton.blur();
440
- expect(page.rootInstance.open).toBeFalsy;
441
- expect(eventSpy).toHaveBeenCalled;
442
- page.root.options = [];
443
- await page.waitForChanges();
444
- expect(page.rootInstance.uniqueOptions[0].label).toEqual(loadingErrorLabel);
445
- });
446
- it("should focus the input when escape is pressed whilst the menu is focused", async () => {
447
- const spy = jest.spyOn(HTMLButtonElement.prototype, "focus");
448
- const page = await newSpecPage({
449
- components: [Select, Menu, IcInputComponentContainer],
450
- html: `<ic-select label="IC Select Test"></ic-select>`,
451
- });
452
- page.root.options = menuOptions;
453
- page.rootInstance.open = true;
454
- await page.waitForChanges();
455
- const list = page.root.shadowRoot.querySelector(menuUl);
456
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
457
- key: "Escape",
458
- bubbles: true,
459
- cancelable: true,
460
- }));
461
- await page.waitForChanges();
462
- expect(page.rootInstance.open).toBeFalsy();
463
- expect(spy).toHaveBeenCalled();
464
- });
465
- it("should deduplicateOptions and log a console warning about the offending items", async () => {
466
- const page = await newSpecPage({
467
- components: [Select, Menu, IcInputComponentContainer],
468
- html: `<ic-select label="IC Select Test"></ic-select>`,
469
- });
470
- page.rootInstance.options = menuOptionsWithDuplicates;
471
- await page.waitForChanges();
472
- expect(page.rootInstance.uniqueOptions).toEqual([
473
- {
474
- label: label1,
475
- value: value1,
476
- },
477
- {
478
- label: label2,
479
- value: value2,
480
- },
481
- {
482
- label: label3,
483
- value: value3,
484
- },
485
- {
486
- label: groupLabel,
487
- value: groupLabel,
488
- children: [
489
- {
490
- label: label4,
491
- value: value4,
492
- },
493
- ],
494
- },
495
- ]);
496
- });
497
- });
498
- describe("ic-select single native", () => {
499
- beforeEach(() => {
500
- Object.defineProperty(helpers, "isMobileOrTablet", {
501
- value: jest.fn().mockReturnValue(true),
502
- });
503
- });
504
- afterEach(() => {
505
- Object.defineProperty(helpers, "isMobileOrTablet", {
506
- value: jest.fn().mockReturnValue(false),
507
- });
508
- });
509
- it("should test native select", async () => {
510
- const page = await newSpecPage({
511
- components: [Select],
512
- html: `<ic-select label="IC Select Test"></ic-select>`,
513
- });
514
- page.root.options = menuOptions;
515
- page.root.label = "New label";
516
- await page.waitForChanges();
517
- page.root.setFocus();
518
- await page.waitForChanges();
519
- expect(page.root).toMatchSnapshot("native-select");
520
- });
521
- it("should test native select with groups", async () => {
522
- const page = await newSpecPage({
523
- components: [Select],
524
- html: `<ic-select label="IC Select Test"></ic-select>`,
525
- });
526
- page.root.options = menuOptionsWithGroups;
527
- page.root.label = "New label";
528
- await page.waitForChanges();
529
- page.root.setFocus();
530
- await page.waitForChanges();
531
- expect(page.root).toMatchSnapshot("native-select-with-groups");
532
- let eventSpy = jest.fn();
533
- page.win.addEventListener("icBlur", eventSpy);
534
- const select = page.root.shadowRoot.querySelector("select");
535
- select.blur();
536
- await page.waitForChanges();
537
- expect(eventSpy).toHaveBeenCalled();
538
- eventSpy = jest.fn();
539
- page.win.addEventListener("icChange", eventSpy);
540
- const event = new Event("change", {
541
- bubbles: true,
542
- cancelable: true,
543
- });
544
- page.rootInstance.nativeSelectElement.selectedIndex = 0;
545
- select.dispatchEvent(event);
546
- await page.waitForChanges();
547
- //delay to wait for aria live update
548
- await waitForTimeout(900);
549
- expect(eventSpy).toHaveBeenCalled();
550
- });
551
- it("should test native select keydown", async () => {
552
- const page = await newSpecPage({
553
- components: [Select],
554
- html: `<ic-select label="IC Select Test"></ic-select>`,
555
- });
556
- page.root.options = menuOptions;
557
- page.root.setFocus();
558
- await page.waitForChanges();
559
- await page.rootInstance.handleNativeSelectKeyDown({
560
- key: "ArrowDown",
561
- preventDefault: () => null,
562
- });
563
- await page.waitForChanges();
564
- expect(page.rootInstance.open).toBeFalsy;
565
- });
566
- });
567
- describe("ic-select searchable", () => {
568
- it("should render as required", async () => {
569
- const page = await newSpecPage({
570
- components: [Select, Menu, IcInputComponentContainer],
571
- html: getTestSelect('required="true" searchable="true"'),
572
- });
573
- expect(page.root).toMatchSnapshot("required-searchable");
574
- });
575
- it("should test with clear button with searchable", async () => {
576
- const page = await newSpecPage({
577
- components: [Select, Menu, IcInputComponentContainer, IcButton],
578
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
579
- });
580
- page.root.options = menuOptions;
581
- page.rootInstance.searchableSelectInputValue = "test value";
582
- await page.waitForChanges();
583
- const clearButton = page.root.shadowRoot.querySelector(clearButtonId);
584
- clearButton.focus();
585
- await page.waitForChanges();
586
- expect(page.rootInstance.clearButtonFocused).toBe(true);
587
- clearButton.blur();
588
- await page.waitForChanges();
589
- expect(page.rootInstance.clearButtonFocused).toBe(false);
590
- clearButton.click();
591
- await page.waitForChanges();
592
- expect(page.rootInstance.searchableSelectInputValue).toBeNull;
593
- });
594
- it("should test keydown handler searchable", async () => {
595
- const page = await newSpecPage({
596
- components: [Select, Menu, IcInputComponentContainer],
597
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
598
- });
599
- jest.spyOn(page.rootInstance, "setFocus").mockImplementation();
600
- page.root.options = menuOptions;
601
- await page.waitForChanges();
602
- await page.root.setFocus();
603
- await page.waitForChanges();
604
- await page.rootInstance.handleKeyDown({
605
- key: "ArrowDown",
606
- preventDefault: () => null,
607
- });
608
- await page.waitForChanges();
609
- const menu = page.root.shadowRoot.querySelector("ic-menu");
610
- expect(menu.options).toEqual(menuOptions);
611
- expect(page.rootInstance.open).toBeTruthy;
612
- await page.waitForChanges();
613
- await page.rootInstance.handleKeyDown({
614
- key: "Enter",
615
- preventDefault: () => null,
616
- });
617
- await page.waitForChanges();
618
- expect(page.rootInstance.open).toBeFalsy;
619
- page.rootInstance.open = true;
620
- page.rootInstance.noOptions = true;
621
- await page.waitForChanges();
622
- await page.rootInstance.handleKeyDown({
623
- key: "Ctrl",
624
- preventDefault: () => null,
625
- });
626
- await page.waitForChanges();
627
- expect(page.rootInstance.setFocus).toHaveBeenCalledTimes(2);
628
- page.rootInstance.open = true;
629
- page.rootInstance.noOptions = true;
630
- await page.waitForChanges();
631
- await page.rootInstance.handleKeyDown({
632
- key: "Backspace",
633
- preventDefault: () => null,
634
- });
635
- await page.waitForChanges();
636
- expect(page.rootInstance.setFocus).toHaveBeenCalledTimes(3);
637
- });
638
- it("should test keydown on menu - arrow up (searchable)", async () => {
639
- const page = await newSpecPage({
640
- components: [Select, Menu, IcInputComponentContainer],
641
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
642
- });
643
- page.root.options = menuOptions;
644
- page.root.value = value2;
645
- await page.waitForChanges();
646
- const list = page.root.shadowRoot.querySelector(menuUl);
647
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
648
- key: "ArrowUp",
649
- bubbles: true,
650
- cancelable: true,
651
- }));
652
- await page.waitForChanges();
653
- const input = page.root.shadowRoot.querySelector("input");
654
- expect(input.value).toBe(label2);
655
- expect(page.rootInstance.open).toBeTruthy;
656
- });
657
- it("should test keydown on menu - arrow up wrap around (searchable)", async () => {
658
- const page = await newSpecPage({
659
- components: [Select, Menu, IcInputComponentContainer],
660
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
661
- });
662
- page.root.options = menuOptions;
663
- page.rootInstance.open = true;
664
- await page.waitForChanges();
665
- page.root.value = value1;
666
- await page.waitForChanges();
667
- const list = page.root.shadowRoot.querySelector(menuUl);
668
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
669
- key: "ArrowUp",
670
- bubbles: true,
671
- cancelable: true,
672
- }));
673
- await page.waitForChanges();
674
- const input = page.root.shadowRoot.querySelector("input");
675
- expect(input.value).toBe(label1);
676
- });
677
- it("should test keydown on menu - arrow down", async () => {
678
- const page = await newSpecPage({
679
- components: [Select, Menu, IcInputComponentContainer],
680
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
681
- });
682
- page.root.options = menuOptions;
683
- page.rootInstance.open = true;
684
- await page.waitForChanges();
685
- page.root.value = value1;
686
- await page.waitForChanges();
687
- const list = page.root.shadowRoot.querySelector(menuUl);
688
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
689
- key: "ArrowDown",
690
- bubbles: true,
691
- cancelable: true,
692
- }));
693
- await page.waitForChanges();
694
- const input = page.root.shadowRoot.querySelector("input");
695
- expect(input.value).toBe(label1);
696
- });
697
- it("should test keydown on menu - arrow down wrap around", async () => {
698
- const page = await newSpecPage({
699
- components: [Select, Menu, IcInputComponentContainer],
700
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
701
- });
702
- page.root.options = menuOptions;
703
- page.rootInstance.open = true;
704
- await page.waitForChanges();
705
- page.root.value = value3;
706
- await page.waitForChanges();
707
- const list = page.root.shadowRoot.querySelector(menuUl);
708
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
709
- key: "ArrowDown",
710
- bubbles: true,
711
- cancelable: true,
712
- }));
713
- await page.waitForChanges();
714
- const input = page.root.shadowRoot.querySelector("input");
715
- expect(input.value).toBe(label3);
716
- });
717
- it("should test keydown on menu - home key", async () => {
718
- const page = await newSpecPage({
719
- components: [Select, Menu, IcInputComponentContainer],
720
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
721
- });
722
- page.root.options = menuOptions;
723
- page.rootInstance.open = true;
724
- await page.waitForChanges();
725
- page.root.value = value3;
726
- await page.waitForChanges();
727
- const list = page.root.shadowRoot.querySelector(menuUl);
728
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
729
- key: "Home",
730
- bubbles: true,
731
- cancelable: true,
732
- }));
733
- expect(page.rootInstance.open).toBeTruthy;
734
- });
735
- it("should test keydown on menu - end key", async () => {
736
- const page = await newSpecPage({
737
- components: [Select, Menu, IcInputComponentContainer],
738
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
739
- });
740
- page.root.options = menuOptions;
741
- page.root.value = value1;
742
- await page.waitForChanges();
743
- const list = page.root.shadowRoot.querySelector(menuUl);
744
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
745
- key: "End",
746
- bubbles: true,
747
- cancelable: true,
748
- }));
749
- await page.waitForChanges();
750
- const input = page.root.shadowRoot.querySelector("input");
751
- expect(input.value).toBe(label1);
752
- expect(page.rootInstance.open).toBeTruthy;
753
- });
754
- it("should test keydown on menu - backspace key", async () => {
755
- const page = await newSpecPage({
756
- components: [Select, Menu, IcInputComponentContainer],
757
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
758
- });
759
- page.root.options = menuOptions;
760
- page.rootInstance.open = true;
761
- await page.waitForChanges();
762
- page.root.value = value3;
763
- await page.waitForChanges();
764
- const list = page.root.shadowRoot.querySelector(menuUl);
765
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
766
- key: "Backspace",
767
- bubbles: true,
768
- cancelable: true,
769
- }));
770
- await page.waitForChanges();
771
- const input = page.root.shadowRoot.querySelector("input");
772
- expect(input.value).toBe(label3);
773
- });
774
- it("should test keydown on menu - enter key", async () => {
775
- const page = await newSpecPage({
776
- components: [Select, Menu, IcInputComponentContainer],
777
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
778
- });
779
- page.root.options = menuOptions;
780
- page.rootInstance.open = true;
781
- await page.waitForChanges();
782
- page.root.value = value3;
783
- await page.waitForChanges();
784
- const list = page.root.shadowRoot.querySelector(menuUl);
785
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
786
- key: "ArrowDown",
787
- bubbles: true,
788
- cancelable: true,
789
- }));
790
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
791
- key: "Enter",
792
- bubbles: true,
793
- cancelable: true,
794
- }));
795
- await page.waitForChanges();
796
- const input = page.root.shadowRoot.querySelector("input");
797
- expect(input.value).toBe(label1);
798
- input.click();
799
- await page.waitForChanges();
800
- expect(page.rootInstance.filteredOptions).toHaveLength(3);
801
- });
802
- it("should test keydown on menu - space key", async () => {
803
- const page = await newSpecPage({
804
- components: [Select, Menu, IcInputComponentContainer],
805
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
806
- });
807
- page.root.options = menuOptions;
808
- page.rootInstance.open = true;
809
- await page.waitForChanges();
810
- const list = page.root.shadowRoot.querySelector(menuUl);
811
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
812
- key: " ",
813
- bubbles: true,
814
- cancelable: true,
815
- }));
816
- await page.waitForChanges();
817
- expect(page.rootInstance.open).toBe(true);
818
- });
819
- it("should test keydown on menu - other key", async () => {
820
- const page = await newSpecPage({
821
- components: [Select, Menu, IcInputComponentContainer],
822
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
823
- });
824
- page.root.options = menuOptions;
825
- page.rootInstance.open = true;
826
- await page.waitForChanges();
827
- page.root.value = value2;
828
- await page.waitForChanges();
829
- const list = page.root.shadowRoot.querySelector(menuUl);
830
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
831
- key: "Ctrl",
832
- bubbles: true,
833
- cancelable: true,
834
- }));
835
- await page.waitForChanges();
836
- const input = page.root.shadowRoot.querySelector("input");
837
- expect(input.value).toBe(label2);
838
- });
839
- it("should test keyup on menu list", async () => {
840
- const page = await newSpecPage({
841
- components: [Select, Menu, IcInputComponentContainer],
842
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
843
- });
844
- page.root.options = menuOptions;
845
- page.rootInstance.open = true;
846
- await page.waitForChanges();
847
- page.root.value = value2;
848
- await page.waitForChanges();
849
- const list = page.root.shadowRoot.querySelector(menuUl);
850
- list.dispatchEvent(new window.window.KeyboardEvent("keyup", {
851
- key: "Tab",
852
- shiftKey: true,
853
- bubbles: true,
854
- cancelable: true,
855
- }));
856
- await page.waitForChanges();
857
- const input = page.root.shadowRoot.querySelector("input");
858
- expect(input.value).toBe(label2);
859
- });
860
- it("should test click on input", async () => {
861
- const page = await newSpecPage({
862
- components: [Select, Menu, IcInputComponentContainer],
863
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
864
- });
865
- page.root.options = menuOptions;
866
- await page.waitForChanges();
867
- const input = page.root.shadowRoot.querySelector("input");
868
- input.click();
869
- await page.waitForChanges();
870
- expect(page.rootInstance.open).toBe(true);
871
- });
872
- it("should test click on input with external filtering", async () => {
873
- const page = await newSpecPage({
874
- components: [Select, Menu, IcInputComponentContainer],
875
- html: `<ic-select label="IC Select Test" searchable="true" disable-auto-filtering="true"></ic-select>`,
876
- });
877
- page.root.options = menuOptions;
878
- await page.waitForChanges();
879
- const input = page.root.shadowRoot.querySelector("input");
880
- input.click();
881
- await page.waitForChanges();
882
- expect(page.rootInstance.open).toBe(true);
883
- });
884
- it("should test blur on searchable input", async () => {
885
- const page = await newSpecPage({
886
- components: [Select, Menu, IcInputComponentContainer],
887
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
888
- });
889
- page.root.options = menuOptions;
890
- await page.waitForChanges();
891
- const eventSpy = jest.fn();
892
- page.win.addEventListener("icBlur", eventSpy);
893
- const input = page.root.shadowRoot.querySelector("input");
894
- input.blur();
895
- await page.waitForChanges();
896
- expect(eventSpy).toHaveBeenCalled();
897
- });
898
- it("should test blur on searchable input where target is an element of the menu but not a menu option", async () => {
899
- const page = await newSpecPage({
900
- components: [Select, Menu, IcInputComponentContainer],
901
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
902
- });
903
- page.root.options = menuOptions;
904
- await page.waitForChanges();
905
- const target = page.root.shadowRoot.querySelector("ul.menu");
906
- const event = new FocusEvent("blur", {
907
- bubbles: true,
908
- cancelable: true,
909
- relatedTarget: target,
910
- });
911
- const eventSpy = jest.fn();
912
- page.win.addEventListener("icBlur", eventSpy);
913
- await page.rootInstance.onBlur(event);
914
- await page.waitForChanges();
915
- expect(eventSpy).not.toHaveBeenCalled();
916
- });
917
- it("should test searchable input", async () => {
918
- const page = await newSpecPage({
919
- components: [Select, Menu, IcInputComponentContainer],
920
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
921
- });
922
- page.root.options = menuOptions;
923
- await page.waitForChanges();
924
- const event = new Event("input", {
925
- bubbles: true,
926
- cancelable: true,
927
- });
928
- const input = page.root.shadowRoot.querySelector("input");
929
- page.rootInstance.searchableSelectInputValue = testValue;
930
- input.dispatchEvent(event);
931
- await page.waitForChanges();
932
- //delay to wait for aria live update
933
- await waitForTimeout(900);
934
- expect(page.rootInstance.open).toBe(true);
935
- page.rootInstance.searchableSelectInputValue = "";
936
- await page.waitForChanges();
937
- input.dispatchEvent(event);
938
- await page.waitForChanges();
939
- //delay to wait for aria live update
940
- await waitForTimeout(900);
941
- expect(page.rootInstance.open).toBe(true);
942
- page.root.options = [];
943
- await page.waitForChanges();
944
- page.rootInstance.searchableSelectInputValue = "";
945
- input.dispatchEvent(event);
946
- await page.waitForChanges();
947
- //delay to wait for aria live update
948
- await waitForTimeout(900);
949
- expect(page.rootInstance.open).toBe(true);
950
- });
951
- it("should test searchable input filtering", async () => {
952
- const page = await newSpecPage({
953
- components: [Select, Menu, IcInputComponentContainer],
954
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
955
- });
956
- page.root.options = menuOptionsWithDescriptions;
957
- page.rootInstance.searchableSelectInputValue = "c";
958
- await page.waitForChanges();
959
- const input = page.root.shadowRoot.querySelector("input");
960
- const event = new Event("input", {
961
- bubbles: true,
962
- cancelable: true,
963
- });
964
- input.dispatchEvent(event);
965
- await page.waitForChanges();
966
- //delay to wait for aria live update
967
- await waitForTimeout(900);
968
- expect(page.rootInstance.filteredOptions.length).toBe(2);
969
- });
970
- it("should test searchable input - with search match position set to start", async () => {
971
- const page = await newSpecPage({
972
- components: [Select, Menu, IcInputComponentContainer],
973
- html: `<ic-select label="IC Select Test" searchable="true" search-match-position="start"></ic-select>`,
974
- });
975
- page.root.options = menuOptionsWithDescriptions;
976
- page.rootInstance.searchableSelectInputValue = "c";
977
- await page.waitForChanges();
978
- const input = page.root.shadowRoot.querySelector("input");
979
- const event = new Event("input", {
980
- bubbles: true,
981
- cancelable: true,
982
- });
983
- input.dispatchEvent(event);
984
- await page.waitForChanges();
985
- //delay to wait for aria live update
986
- await waitForTimeout(900);
987
- expect(page.rootInstance.filteredOptions.length).toBe(1);
988
- });
989
- it("should test searchable input - with descriptions and descriptions included in search", async () => {
990
- const page = await newSpecPage({
991
- components: [Select, Menu, IcInputComponentContainer],
992
- html: `<ic-select label="IC Select Test" searchable="true" include-descriptions-in-search="true"></ic-select>`,
993
- });
994
- page.root.options = menuOptionsWithDescriptions;
995
- page.rootInstance.searchableSelectInputValue = "Test description 2";
996
- await page.waitForChanges();
997
- const input = page.root.shadowRoot.querySelector("input");
998
- const event = new Event("input", {
999
- bubbles: true,
1000
- cancelable: true,
1001
- });
1002
- input.dispatchEvent(event);
1003
- await page.waitForChanges();
1004
- //delay to wait for aria live update
1005
- await waitForTimeout(900);
1006
- expect(page.rootInstance.filteredOptions).not.toBeNull;
1007
- });
1008
- it("should test searchable input - with search match position set to start and descriptions included in search", async () => {
1009
- const page = await newSpecPage({
1010
- components: [Select, Menu, IcInputComponentContainer],
1011
- html: `<ic-select label="IC Select Test" searchable="true" search-match-position="start" include-descriptions-in-search="true"></ic-select>`,
1012
- });
1013
- page.root.options = menuOptionsWithDescriptions;
1014
- page.rootInstance.searchableSelectInputValue = "e";
1015
- await page.waitForChanges();
1016
- const input = page.root.shadowRoot.querySelector("input");
1017
- const event = new Event("input", {
1018
- bubbles: true,
1019
- cancelable: true,
1020
- });
1021
- input.dispatchEvent(event);
1022
- await page.waitForChanges();
1023
- //delay to wait for aria live update
1024
- await waitForTimeout(900);
1025
- expect(page.rootInstance.filteredOptions.length).toBe(1);
1026
- });
1027
- it("should test searchable input - with groups", async () => {
1028
- const page = await newSpecPage({
1029
- components: [Select, Menu, IcInputComponentContainer],
1030
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
1031
- });
1032
- page.root.options = menuOptionsWithGroups;
1033
- page.rootInstance.searchableSelectInputValue = "Latte";
1034
- await page.waitForChanges();
1035
- const input = page.root.shadowRoot.querySelector("input");
1036
- const event = new Event("input", {
1037
- bubbles: true,
1038
- cancelable: true,
1039
- });
1040
- input.dispatchEvent(event);
1041
- await page.waitForChanges();
1042
- //delay to wait for aria live update
1043
- await waitForTimeout(900);
1044
- expect(page.rootInstance.filteredOptions).not.toBeNull;
1045
- });
1046
- it("should test searchable input - with groups and group titles included in search", async () => {
1047
- const page = await newSpecPage({
1048
- components: [Select, Menu, IcInputComponentContainer],
1049
- html: `<ic-select label="IC Select Test" searchable="true" include-group-titles-in-search="true"></ic-select>`,
1050
- });
1051
- page.root.options = menuOptionsWithGroups;
1052
- page.rootInstance.searchableSelectInputValue = "Fancy";
1053
- await page.waitForChanges();
1054
- const input = page.root.shadowRoot.querySelector("input");
1055
- const event = new Event("input", {
1056
- bubbles: true,
1057
- cancelable: true,
1058
- });
1059
- input.dispatchEvent(event);
1060
- await page.waitForChanges();
1061
- //delay to wait for aria live update
1062
- await waitForTimeout(900);
1063
- expect(page.rootInstance.filteredOptions).not.toBeNull;
1064
- });
1065
- it("should test selectchange on no result found entry", async () => {
1066
- const page = await newSpecPage({
1067
- components: [Select, Menu, IcInputComponentContainer],
1068
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
1069
- });
1070
- page.root.options = menuOptions;
1071
- page.rootInstance.open = true;
1072
- page.rootInstance.searchableSelectInputValue = testValue;
1073
- await page.waitForChanges();
1074
- page.rootInstance.handleCustomSelectChange({
1075
- detail: {
1076
- label: noResults,
1077
- },
1078
- });
1079
- await page.waitForChanges();
1080
- expect(page.rootInstance.searchableSelectInputValue).toBe(testValue);
1081
- });
1082
- it("should test dropdown icon mousedown handler", async () => {
1083
- const page = await newSpecPage({
1084
- components: [Select, Menu, IcInputComponentContainer],
1085
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
1086
- });
1087
- page.root.options = menuOptions;
1088
- page.rootInstance.handleExpandIconMouseDown({
1089
- detail: "some value",
1090
- preventDefault: () => null,
1091
- });
1092
- await page.waitForChanges();
1093
- expect(page.rootInstance.open).toBe(true);
1094
- });
1095
- it("should test form reset event", async () => {
1096
- const page = await newSpecPage({
1097
- components: [Select],
1098
- html: `<form>
1099
- <ic-select label="IC Select Test" searchable="true"></ic-select>
1100
- <button id="resetButton" type="reset">Reset</button>
1101
- </form>`,
1102
- });
1103
- expect(page.rootInstance.searchableSelectInputValue).toBe(null);
1104
- page.rootInstance.searchableSelectInputValue = testValue;
1105
- await page.waitForChanges();
1106
- expect(page.rootInstance.searchableSelectInputValue).toBe(testValue);
1107
- await page.rootInstance.handleFormReset();
1108
- await page.waitForChanges();
1109
- expect(page.rootInstance.searchableSelectInputValue).toBe(null);
1110
- });
1111
- it("should test debounce change", async () => {
1112
- const page = await newSpecPage({
1113
- components: [Select, Menu, IcInputComponentContainer],
1114
- html: `<ic-select label="IC Select Test" searchable="true" disable-auto-filtering="true" debounce="300"></ic-select>`,
1115
- });
1116
- await page.waitForChanges();
1117
- expect(page.rootInstance.currDebounce).toBe(300);
1118
- page.root.debounce = 500;
1119
- await page.waitForChanges();
1120
- expect(page.rootInstance.currDebounce).toBe(500);
1121
- });
1122
- it("should test no results state when no options passed and filtering disabled", async () => {
1123
- const page = await newSpecPage({
1124
- components: [Select, Menu, IcInputComponentContainer],
1125
- html: `<ic-select label="IC Select Test" searchable="true" disable-auto-filtering="true" debounce="300"></ic-select>`,
1126
- });
1127
- page.root.options = menuOptions;
1128
- page.rootInstance.searchableSelectInputValue = "test";
1129
- await page.waitForChanges();
1130
- const input = page.root.shadowRoot.querySelector("input");
1131
- const event = new Event("input", {
1132
- bubbles: true,
1133
- cancelable: true,
1134
- });
1135
- input.dispatchEvent(event);
1136
- await page.waitForChanges();
1137
- page.root.options = [];
1138
- await page.waitForChanges();
1139
- expect(page.rootInstance.filteredOptions).toHaveLength(1);
1140
- expect(page.rootInstance.filteredOptions[0].label).toEqual(noResults);
1141
- expect(page.rootInstance.open).toBe(true);
1142
- input.click();
1143
- await page.waitForChanges();
1144
- expect(page.rootInstance.open).toBe(false);
1145
- page.root.options = menuOptions;
1146
- await page.waitForChanges();
1147
- });
1148
- it("should test menu opens and closes when enter pressed - external filtering", async () => {
1149
- const page = await newSpecPage({
1150
- components: [Select, Menu, IcInputComponentContainer],
1151
- html: `<ic-select label="IC Select Test" searchable="true" disable-auto-filtering="true" debounce="300"></ic-select>`,
1152
- });
1153
- page.root.options = [];
1154
- page.rootInstance.searchableSelectInputValue = "test";
1155
- await page.waitForChanges();
1156
- const input = page.root.shadowRoot.querySelector("input");
1157
- const event = new Event("input", {
1158
- bubbles: true,
1159
- cancelable: true,
1160
- });
1161
- input.dispatchEvent(event);
1162
- await page.waitForChanges();
1163
- //test menu displays when Enter pressed
1164
- input.focus();
1165
- await page.waitForChanges();
1166
- await page.rootInstance.handleKeyDown({
1167
- key: "Enter",
1168
- preventDefault: () => null,
1169
- });
1170
- await page.waitForChanges();
1171
- expect(page.rootInstance.open).toBe(false);
1172
- await page.rootInstance.handleKeyDown({
1173
- key: "Enter",
1174
- target: { id: "test-event-id" },
1175
- preventDefault: () => null,
1176
- });
1177
- await page.waitForChanges();
1178
- expect(page.rootInstance.open).toBe(false);
1179
- });
1180
- it("should test adding and removing form reset listener on connect and disconnect", async () => {
1181
- const page = await newSpecPage({
1182
- components: [Select],
1183
- html: `<form>
1184
- <ic-select label="IC Select Test" searchable="true"></ic-select>
1185
- <button id="resetButton" type="reset">Reset</button>
1186
- </form>`,
1187
- });
1188
- const addSpy = jest.spyOn(page.root, "addEventListener");
1189
- const removeSpy = jest.spyOn(page.root, "removeEventListener");
1190
- expect(addSpy).toHaveBeenCalled;
1191
- page.setContent("");
1192
- await page.waitForChanges();
1193
- expect(removeSpy).toHaveBeenCalled;
1194
- });
1195
- it("should set the default value of searchable as custom value when not matching options", async () => {
1196
- const page = await newSpecPage({
1197
- components: [Select, Menu, IcInputComponentContainer],
1198
- html: `<ic-select label='Select test' searchable='true' value='Test value 01'></ic-select>`,
1199
- });
1200
- page.root.options = [];
1201
- await page.waitForChanges();
1202
- expect(page.rootInstance.searchableSelectInputValue).toBe("Test value 01");
1203
- const input = page.root.shadowRoot.querySelector("input");
1204
- expect(input.value).toBe("Test value 01");
1205
- });
1206
- it("should set the default value of searchable as option label if matching label/value exists", async () => {
1207
- const page = await newSpecPage({
1208
- components: [Select, Menu, IcInputComponentContainer],
1209
- template: () => (h("ic-select", { label: "select test", searchable: true, options: menuOptions, value: value1 })),
1210
- });
1211
- expect(page.rootInstance.searchableSelectInputValue).toBe(label1);
1212
- const input = page.root.shadowRoot.querySelector("input");
1213
- expect(input.value).toBe(label1);
1214
- });
1215
- it("should set the default value of searchable as option label when options initially set to [] then populated", async () => {
1216
- const page = await newSpecPage({
1217
- components: [Select, Menu, IcInputComponentContainer],
1218
- template: () => (h("ic-select", { label: "select test", searchable: true, options: [], value: value1 })),
1219
- });
1220
- page.root.options = menuOptions;
1221
- await page.waitForChanges();
1222
- expect(page.rootInstance.searchableSelectInputValue).toBe(label1);
1223
- const input = page.root.shadowRoot.querySelector("input");
1224
- expect(input.value).toBe(label1);
1225
- });
1226
- it("should set the default value to custom value when options initially set to [] then set to [] again", async () => {
1227
- const page = await newSpecPage({
1228
- components: [Select, Menu, IcInputComponentContainer],
1229
- template: () => (h("ic-select", { label: "select test", searchable: true, options: [], value: value1 })),
1230
- });
1231
- page.root.options = [];
1232
- await page.waitForChanges();
1233
- expect(page.rootInstance.searchableSelectInputValue).toBe(value1);
1234
- const input = page.root.shadowRoot.querySelector("input");
1235
- expect(input.value).toBe(value1);
1236
- });
1237
- it("should test loading state and timeout for searchable select with external filtering", async () => {
1238
- const page = await newSpecPage({
1239
- components: [Select, Menu, IcInputComponentContainer],
1240
- html: `<ic-select label="IC Select Test" searchable="true" disable-auto-filtering="true" debounce="300" timeout="1000"></ic-select>`,
1241
- });
1242
- page.rootInstance.searchableSelectInputValue = "test";
1243
- await page.waitForChanges();
1244
- const input = page.root.shadowRoot.querySelector("input");
1245
- const event = new Event("input", {
1246
- bubbles: true,
1247
- cancelable: true,
1248
- });
1249
- input.dispatchEvent(event);
1250
- page.rootInstance.loading = true;
1251
- await page.waitForChanges();
1252
- expect(page.rootInstance.filteredOptions[0].label).toEqual(loadingLabel);
1253
- await waitForTimeout(1000);
1254
- expect(page.rootInstance.filteredOptions[0].label).toEqual(loadingErrorLabel);
1255
- await page.waitForChanges();
1256
- const retryButton = page.root.shadowRoot
1257
- .querySelector("ic-menu")
1258
- .querySelector(retryButtonId);
1259
- retryButton.click();
1260
- page.rootInstance.loading = true;
1261
- await page.waitForChanges();
1262
- expect(page.rootInstance.filteredOptions[0].label).toEqual(loadingLabel);
1263
- page.root.options = [];
1264
- await page.waitForChanges();
1265
- expect(page.rootInstance.filteredOptions[0].label).toEqual(noResults);
1266
- });
1267
- it("should focus the input when escape is pressed whilst the menu is focused (searchable)", async () => {
1268
- const spy = jest.spyOn(HTMLInputElement.prototype, "focus");
1269
- const page = await newSpecPage({
1270
- components: [Select, Menu, IcInputComponentContainer],
1271
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
1272
- });
1273
- page.root.options = menuOptions;
1274
- page.rootInstance.open = true;
1275
- await page.waitForChanges();
1276
- const list = page.root.shadowRoot.querySelector(menuUl);
1277
- list.dispatchEvent(new window.window.KeyboardEvent("keydown", {
1278
- key: "Escape",
1279
- bubbles: true,
1280
- cancelable: true,
1281
- }));
1282
- await page.waitForChanges();
1283
- expect(page.rootInstance.open).toBeFalsy();
1284
- expect(spy).toHaveBeenCalled();
1285
- });
1286
- it("should test keydown on loading retry button", async () => {
1287
- const page = await newSpecPage({
1288
- components: [Select, Menu, IcInputComponentContainer],
1289
- html: `<ic-select label="IC Select Test" searchable="true" disable-auto-filtering="true" debounce="300" timeout="1000"></ic-select>`,
1290
- });
1291
- const input = page.root.shadowRoot.querySelector("input");
1292
- const spy = jest.spyOn(input, "focus");
1293
- page.rootInstance.searchableSelectInputValue = "test";
1294
- await page.waitForChanges();
1295
- let event = new Event("input", {
1296
- bubbles: true,
1297
- cancelable: true,
1298
- });
1299
- input.dispatchEvent(event);
1300
- page.rootInstance.loading = true;
1301
- await page.waitForChanges();
1302
- await waitForTimeout(1000);
1303
- await page.waitForChanges();
1304
- event = new KeyboardEvent("keyDown", {
1305
- key: "Enter",
1306
- });
1307
- const retryButton = page.root.shadowRoot
1308
- .querySelector("ic-menu")
1309
- .querySelector(retryButtonId);
1310
- retryButton.dispatchEvent(event);
1311
- expect(spy).toHaveBeenCalled;
1312
- });
1313
- it("should stop the timeout if clear button is clicked before timeout", async () => {
1314
- const page = await newSpecPage({
1315
- components: [Select, Menu, IcInputComponentContainer],
1316
- html: `<ic-select label="IC Select Test" searchable="true" timeout="1000"></ic-select>`,
1317
- });
1318
- page.rootInstance.searchableSelectInputValue = "test";
1319
- await page.waitForChanges();
1320
- const event = new Event("input", {
1321
- bubbles: true,
1322
- cancelable: true,
1323
- });
1324
- const input = page.root.shadowRoot.querySelector("input");
1325
- input.dispatchEvent(event);
1326
- page.rootInstance.loading = true;
1327
- await page.waitForChanges();
1328
- expect(page.rootInstance.filteredOptions).toHaveLength(1);
1329
- const clearButton = page.root.shadowRoot.querySelector(clearButtonId);
1330
- clearButton.click();
1331
- await page.waitForChanges();
1332
- expect(page.rootInstance.filteredOptions).toHaveLength(1);
1333
- expect(page.rootInstance.filteredOptions[0]).toMatchObject({
1334
- label: noResults,
1335
- value: "",
1336
- });
1337
- await waitForTimeout(1000);
1338
- expect(page.rootInstance.filteredOptions).toHaveLength(1);
1339
- expect(page.rootInstance.filteredOptions[0]).toMatchObject({
1340
- label: noResults,
1341
- value: "",
1342
- });
1343
- });
1344
- it("should clear the searchable input if the value is programmatically set to undefined", async () => {
1345
- const page = await newSpecPage({
1346
- components: [Select, Menu, IcInputComponentContainer],
1347
- html: `<ic-select label="IC Select Test" searchable="true"></ic-select>`,
1348
- });
1349
- page.rootInstance.searchableSelectInputValue = "test";
1350
- await page.waitForChanges();
1351
- const event = new Event("input", {
1352
- bubbles: true,
1353
- cancelable: true,
1354
- });
1355
- const input = page.root.shadowRoot.querySelector("input");
1356
- input.dispatchEvent(event);
1357
- page.rootInstance.loading = true;
1358
- await page.waitForChanges();
1359
- expect(page.rootInstance.filteredOptions).toHaveLength(1);
1360
- page.rootInstance.value = undefined;
1361
- await page.waitForChanges();
1362
- expect(page.rootInstance.searchableSelectInputValue).toBeUndefined;
1363
- });
1364
- });
1365
- describe("ic-select multi", () => {
1366
- it("should not render a native select on a mobile / tablet screen", async () => {
1367
- Object.defineProperty(helpers, "isMobileOrTablet", {
1368
- value: jest.fn().mockReturnValue(true),
1369
- });
1370
- const page = await newSpecPage({
1371
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1372
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1373
- });
1374
- page.root.options = menuOptions;
1375
- await page.waitForChanges();
1376
- expect(page.root).toMatchSnapshot();
1377
- });
1378
- it("should test handleKeyboardOpen method on menu - arrow down", async () => {
1379
- const page = await newSpecPage({
1380
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1381
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1382
- });
1383
- page.root.options = menuOptions;
1384
- await page.waitForChanges();
1385
- const menu = page.root.shadowRoot.querySelector("ic-menu");
1386
- const KeyEvent = {
1387
- key: "ArrowDown",
1388
- preventDefault: () => null,
1389
- };
1390
- await menu.handleKeyboardOpen(KeyEvent);
1391
- await page.waitForChanges();
1392
- expect(page.rootInstance.open).toBeTruthy;
1393
- // Test option is not selected by automatic selection
1394
- expect(page.rootInstance.value).toBe(undefined);
1395
- });
1396
- it("should test menu handleKeyboardOpen method - arrow up", async () => {
1397
- const page = await newSpecPage({
1398
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1399
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1400
- });
1401
- page.root.options = menuOptions;
1402
- await page.waitForChanges();
1403
- const menu = page.root.shadowRoot.querySelector("ic-menu");
1404
- const KeyEvent = {
1405
- key: "ArrowUp",
1406
- preventDefault: () => null,
1407
- };
1408
- await menu.handleKeyboardOpen(KeyEvent);
1409
- await page.waitForChanges();
1410
- expect(page.rootInstance.open).toBeTruthy;
1411
- // Test option is not selected by automatic selection
1412
- expect(page.rootInstance.value).toBe(undefined);
1413
- });
1414
- it("should test keydown on menu - arrow down, up, and enter", async () => {
1415
- const page = await newSpecPage({
1416
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1417
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1418
- });
1419
- page.root.options = menuOptions;
1420
- page.rootInstance.open = true;
1421
- await page.waitForChanges();
1422
- const menu = page.root.shadowRoot.querySelector(menuUl);
1423
- menu.dispatchEvent(new window.window.KeyboardEvent("keydown", {
1424
- key: "ArrowDown",
1425
- bubbles: true,
1426
- cancelable: true,
1427
- }));
1428
- await page.waitForChanges();
1429
- menu.dispatchEvent(new window.window.KeyboardEvent("keydown", {
1430
- key: "Enter",
1431
- bubbles: true,
1432
- cancelable: true,
1433
- }));
1434
- await page.waitForChanges();
1435
- expect(page.rootInstance.value).toEqual([value1]);
1436
- expect(page.root).toMatchSnapshot();
1437
- menu.dispatchEvent(new window.window.KeyboardEvent("keydown", {
1438
- key: "ArrowDown",
1439
- bubbles: true,
1440
- cancelable: true,
1441
- }));
1442
- await page.waitForChanges();
1443
- menu.dispatchEvent(new window.window.KeyboardEvent("keydown", {
1444
- key: "Enter",
1445
- bubbles: true,
1446
- cancelable: true,
1447
- }));
1448
- await page.waitForChanges();
1449
- expect(page.rootInstance.value).toEqual([value1, value2]);
1450
- expect(page.root).toMatchSnapshot();
1451
- menu.dispatchEvent(new window.window.KeyboardEvent("keydown", {
1452
- key: "ArrowUp",
1453
- bubbles: true,
1454
- cancelable: true,
1455
- }));
1456
- await page.waitForChanges();
1457
- menu.dispatchEvent(new window.window.KeyboardEvent("keydown", {
1458
- key: "Enter",
1459
- bubbles: true,
1460
- cancelable: true,
1461
- }));
1462
- await page.waitForChanges();
1463
- expect(page.rootInstance.value).toEqual([value2]);
1464
- });
1465
- it("should select all options - handleSelectAllChange", async () => {
1466
- const page = await newSpecPage({
1467
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1468
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1469
- });
1470
- const eventSpy = jest.fn();
1471
- page.win.addEventListener("icOptionSelect", eventSpy);
1472
- page.root.options = menuOptionsWithDisabled;
1473
- await page.waitForChanges();
1474
- page.rootInstance.handleSelectAllChange({ detail: { select: true } });
1475
- // Test disabled option not selected
1476
- expect(page.rootInstance.value).toEqual([value1, value2, value4]);
1477
- expect(eventSpy).toHaveBeenCalledTimes(3);
1478
- });
1479
- it("should emit icOptionSelect only for unselected options - handleSelectAllChange", async () => {
1480
- const page = await newSpecPage({
1481
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1482
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1483
- });
1484
- const eventSpy = jest.fn();
1485
- page.win.addEventListener("icOptionSelect", eventSpy);
1486
- page.root.options = menuOptionsWithDisabled;
1487
- page.root.value = [value1];
1488
- await page.waitForChanges();
1489
- page.rootInstance.handleSelectAllChange({ detail: { select: true } });
1490
- expect(eventSpy).toHaveBeenCalledTimes(2);
1491
- });
1492
- it("should deselect all options - handleSelectAllChange", async () => {
1493
- const page = await newSpecPage({
1494
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1495
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1496
- });
1497
- page.root.options = menuOptionsWithDisabled;
1498
- page.root.value = [value1, value2, value4];
1499
- await page.waitForChanges();
1500
- page.rootInstance.handleSelectAllChange({ detail: { select: false } });
1501
- expect(page.rootInstance.value).toEqual([]);
1502
- });
1503
- it("should sort the selected options by the order of the options in the menu", async () => {
1504
- const page = await newSpecPage({
1505
- components: [Select, Menu, IcInputComponentContainer, IcButton],
1506
- html: `<ic-select label="IC Select Test" multiple="true"></ic-select>`,
1507
- });
1508
- page.root.options = menuOptions;
1509
- page.root.value = [value1];
1510
- await page.waitForChanges();
1511
- page.root.value = [value2, value1];
1512
- await page.waitForChanges();
1513
- const button = page.root.shadowRoot.querySelector("button.select-input");
1514
- expect(page.rootInstance.currValue).toEqual([value1, value2]);
1515
- expect(button.textContent).toContain(`${label1}, ${label2}`);
1516
- });
1517
- });
1518
- //# sourceMappingURL=ic-select.spec.js.map