@ukic/web-components 3.0.0-alpha.2 → 3.0.0-alpha.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (398) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-f1cf5156.js → helpers-69219f14.js} +24 -1
  3. package/dist/cjs/helpers-69219f14.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  7. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-button_3.cjs.entry.js +2 -2
  13. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-card-vertical.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-checkbox-group.cjs.entry.js +2 -2
  16. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-checkbox.cjs.entry.js +3 -3
  18. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +446 -164
  30. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-input-label_2.cjs.entry.js +8 -6
  32. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-menu-group.cjs.entry.js +2 -2
  35. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-menu-item.cjs.entry.js +2 -2
  37. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-navigation-group.cjs.entry.js +2 -2
  40. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-page-header.cjs.entry.js +5 -5
  44. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-popover-menu.cjs.entry.js +9 -9
  48. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-radio-group.cjs.entry.js +2 -2
  50. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-radio-option.cjs.entry.js +27 -22
  52. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-search-bar.cjs.entry.js +2 -2
  54. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-select.cjs.entry.js +147 -37
  56. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-switch.cjs.entry.js +7 -4
  62. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  66. package/dist/cjs/ic-text-field.cjs.entry.js +2 -2
  67. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  68. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  69. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  70. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  72. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  74. package/dist/cjs/loader.cjs.js +1 -1
  75. package/dist/collection/components/ic-alert/ic-alert.css +3 -1
  76. package/dist/collection/components/ic-alert/ic-alert.js +1 -1
  77. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  78. package/dist/collection/components/ic-checkbox/ic-checkbox.css +5 -0
  79. package/dist/collection/components/ic-checkbox/ic-checkbox.js +1 -1
  80. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  81. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +1 -1
  82. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  83. package/dist/collection/components/ic-input-label/ic-input-label.css +1 -0
  84. package/dist/collection/components/ic-input-label/ic-input-label.js +45 -4
  85. package/dist/collection/components/ic-input-label/ic-input-label.js.map +1 -1
  86. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js +35 -49
  87. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js.map +1 -1
  88. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +1 -0
  89. package/dist/collection/components/ic-menu/ic-menu.css +70 -10
  90. package/dist/collection/components/ic-menu/ic-menu.js +485 -192
  91. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  92. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +381 -33
  93. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  94. package/dist/collection/components/ic-menu-group/ic-menu-group.css +2 -2
  95. package/dist/collection/components/ic-menu-item/ic-menu-item.css +32 -28
  96. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +1 -1
  97. package/dist/collection/components/ic-page-header/ic-page-header.css +5 -2
  98. package/dist/collection/components/ic-page-header/ic-page-header.js +3 -3
  99. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  100. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +5 -5
  101. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +31 -7
  102. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  103. package/dist/collection/components/ic-radio-group/ic-radio-group.js +1 -1
  104. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  105. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +2 -2
  106. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  107. package/dist/collection/components/ic-radio-option/ic-radio-option.css +1 -0
  108. package/dist/collection/components/ic-radio-option/ic-radio-option.js +26 -21
  109. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  110. package/dist/collection/components/ic-search-bar/ic-search-bar.css +1 -0
  111. package/dist/collection/components/ic-select/ic-select.css +36 -16
  112. package/dist/collection/components/ic-select/ic-select.js +191 -43
  113. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  114. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +160 -1
  115. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  116. package/dist/collection/components/ic-switch/ic-switch.css +27 -30
  117. package/dist/collection/components/ic-switch/ic-switch.js +29 -2
  118. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  119. package/dist/collection/components/ic-text-field/ic-text-field.css +1 -0
  120. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  121. package/dist/collection/utils/helpers.js +20 -0
  122. package/dist/collection/utils/helpers.js.map +1 -1
  123. package/dist/collection/utils/types.js.map +1 -1
  124. package/dist/components/helpers.js +22 -1
  125. package/dist/components/helpers.js.map +1 -1
  126. package/dist/components/ic-alert.js +1 -1
  127. package/dist/components/ic-alert.js.map +1 -1
  128. package/dist/components/ic-checkbox-group.js +1 -1
  129. package/dist/components/ic-checkbox-group.js.map +1 -1
  130. package/dist/components/ic-checkbox.js +2 -2
  131. package/dist/components/ic-checkbox.js.map +1 -1
  132. package/dist/components/ic-input-label2.js +10 -6
  133. package/dist/components/ic-input-label2.js.map +1 -1
  134. package/dist/components/ic-loading-indicator2.js +1 -1
  135. package/dist/components/ic-loading-indicator2.js.map +1 -1
  136. package/dist/components/ic-menu-group.js +1 -1
  137. package/dist/components/ic-menu-group.js.map +1 -1
  138. package/dist/components/ic-menu-item2.js +1 -1
  139. package/dist/components/ic-menu-item2.js.map +1 -1
  140. package/dist/components/ic-menu2.js +450 -167
  141. package/dist/components/ic-menu2.js.map +1 -1
  142. package/dist/components/ic-navigation-group.js +2 -2
  143. package/dist/components/ic-navigation-group.js.map +1 -1
  144. package/dist/components/ic-navigation-item.js +1 -1
  145. package/dist/components/ic-navigation-menu2.js +1 -1
  146. package/dist/components/ic-page-header.js +4 -4
  147. package/dist/components/ic-page-header.js.map +1 -1
  148. package/dist/components/ic-pagination-item2.js +1 -1
  149. package/dist/components/ic-popover-menu.js +9 -8
  150. package/dist/components/ic-popover-menu.js.map +1 -1
  151. package/dist/components/ic-radio-group.js +1 -1
  152. package/dist/components/ic-radio-group.js.map +1 -1
  153. package/dist/components/ic-radio-option.js +27 -22
  154. package/dist/components/ic-radio-option.js.map +1 -1
  155. package/dist/components/ic-search-bar.js +2 -2
  156. package/dist/components/ic-search-bar.js.map +1 -1
  157. package/dist/components/ic-select.js +148 -37
  158. package/dist/components/ic-select.js.map +1 -1
  159. package/dist/components/ic-side-navigation.js +1 -1
  160. package/dist/components/ic-stepper.js +1 -1
  161. package/dist/components/ic-switch.js +7 -3
  162. package/dist/components/ic-switch.js.map +1 -1
  163. package/dist/components/ic-text-field2.js +2 -2
  164. package/dist/components/ic-text-field2.js.map +1 -1
  165. package/dist/components/ic-theme.js +1 -1
  166. package/dist/components/ic-toast.js +1 -1
  167. package/dist/components/ic-top-navigation.js +1 -1
  168. package/dist/components/ic-top-navigation.js.map +1 -1
  169. package/dist/core/core.css +580 -10
  170. package/dist/core/core.esm.js +1 -1
  171. package/dist/core/core.esm.js.map +1 -1
  172. package/dist/core/{p-d2f89cb5.entry.js → p-0395442c.entry.js} +2 -2
  173. package/dist/core/{p-244d6dba.entry.js → p-0d233b0c.entry.js} +2 -2
  174. package/dist/core/{p-f38bce8d.entry.js → p-134def81.entry.js} +2 -2
  175. package/dist/core/p-134def81.entry.js.map +1 -0
  176. package/dist/core/p-14dfd8db.entry.js +2 -0
  177. package/dist/core/p-14dfd8db.entry.js.map +1 -0
  178. package/dist/core/p-1b116dd1.entry.js +2 -0
  179. package/dist/core/p-1b116dd1.entry.js.map +1 -0
  180. package/dist/core/p-21cc87c0.entry.js +2 -0
  181. package/dist/core/p-21cc87c0.entry.js.map +1 -0
  182. package/dist/core/p-2eae9b27.entry.js +2 -0
  183. package/dist/core/p-2eae9b27.entry.js.map +1 -0
  184. package/dist/core/p-3618ac34.entry.js +2 -0
  185. package/dist/core/p-3618ac34.entry.js.map +1 -0
  186. package/dist/core/{p-355acffa.entry.js → p-37dea10d.entry.js} +2 -2
  187. package/dist/core/{p-bf1f0ac7.entry.js → p-384d454d.entry.js} +2 -2
  188. package/dist/core/p-384d454d.entry.js.map +1 -0
  189. package/dist/core/p-3d417eff.entry.js +2 -0
  190. package/dist/core/p-3d417eff.entry.js.map +1 -0
  191. package/dist/core/p-3d9726a3.entry.js +2 -0
  192. package/dist/core/{p-408344d3.entry.js.map → p-3d9726a3.entry.js.map} +1 -1
  193. package/dist/core/{p-84526c3e.entry.js → p-43256b7c.entry.js} +2 -2
  194. package/dist/core/{p-93c23a35.entry.js → p-4a3b1f06.entry.js} +2 -2
  195. package/dist/core/{p-34db8aaf.entry.js → p-5cd016e1.entry.js} +2 -2
  196. package/dist/core/{p-d2f8e03f.entry.js → p-5ef8e106.entry.js} +2 -2
  197. package/dist/core/{p-0a808ec3.entry.js → p-690c5e80.entry.js} +2 -2
  198. package/dist/core/{p-43f9a711.entry.js → p-6d3e4bb1.entry.js} +2 -2
  199. package/dist/core/{p-4055f22c.entry.js → p-726673ee.entry.js} +2 -2
  200. package/dist/core/p-726673ee.entry.js.map +1 -0
  201. package/dist/core/{p-fa1b7a80.entry.js → p-72d30c8a.entry.js} +2 -2
  202. package/dist/core/{p-f30f3a3e.entry.js → p-76263187.entry.js} +2 -2
  203. package/dist/core/{p-c86d48b6.entry.js → p-7827b5cb.entry.js} +2 -2
  204. package/dist/core/p-79d0be03.entry.js +2 -0
  205. package/dist/core/p-79d0be03.entry.js.map +1 -0
  206. package/dist/core/{p-c06a3b97.entry.js → p-7b35de65.entry.js} +2 -2
  207. package/dist/core/{p-1684c8d4.entry.js → p-7fbf2d3e.entry.js} +2 -2
  208. package/dist/core/p-91cf9b2b.entry.js +2 -0
  209. package/dist/core/p-91cf9b2b.entry.js.map +1 -0
  210. package/dist/core/{p-1b573920.entry.js → p-922984cb.entry.js} +2 -2
  211. package/dist/core/{p-aab2c7aa.entry.js → p-95f603dd.entry.js} +2 -2
  212. package/dist/core/{p-e4b276b5.entry.js → p-97fb2bdf.entry.js} +2 -2
  213. package/dist/core/p-ac4b7329.entry.js +2 -0
  214. package/dist/core/p-ac4b7329.entry.js.map +1 -0
  215. package/dist/core/{p-e3ed9110.entry.js → p-acbd15ab.entry.js} +2 -2
  216. package/dist/core/{p-6d40baa9.entry.js → p-b17c94b7.entry.js} +2 -2
  217. package/dist/core/p-b78f8b8c.entry.js +2 -0
  218. package/dist/core/p-b78f8b8c.entry.js.map +1 -0
  219. package/dist/core/{p-312cacae.js → p-b7eb8ef9.js} +2 -2
  220. package/dist/core/p-b7eb8ef9.js.map +1 -0
  221. package/dist/core/{p-363d6e88.entry.js → p-b95a72a3.entry.js} +2 -2
  222. package/dist/core/{p-21e5dd29.entry.js → p-b997064c.entry.js} +2 -2
  223. package/dist/core/{p-4ff6d16f.entry.js → p-ba6ecc15.entry.js} +2 -2
  224. package/dist/core/{p-0d30ffab.entry.js → p-c0fc3d02.entry.js} +2 -2
  225. package/dist/core/p-c396bd4d.entry.js +2 -0
  226. package/dist/core/p-c396bd4d.entry.js.map +1 -0
  227. package/dist/core/{p-f828a6e1.entry.js → p-c9cf932c.entry.js} +2 -2
  228. package/dist/core/{p-aa0619ce.entry.js → p-cf7db84a.entry.js} +2 -2
  229. package/dist/core/{p-d58a10ec.entry.js → p-dd36bf1b.entry.js} +2 -2
  230. package/dist/core/p-e488de54.entry.js +2 -0
  231. package/dist/core/p-e488de54.entry.js.map +1 -0
  232. package/dist/core/{p-da14cd3c.entry.js → p-e4d1839e.entry.js} +2 -2
  233. package/dist/core/{p-0fb047e7.entry.js → p-eb3b4935.entry.js} +2 -2
  234. package/dist/core/{p-0fb047e7.entry.js.map → p-eb3b4935.entry.js.map} +1 -1
  235. package/dist/core/{p-60efd7fa.entry.js → p-ebafab37.entry.js} +2 -2
  236. package/dist/core/{p-82375dca.entry.js → p-ee6dd94c.entry.js} +2 -2
  237. package/dist/core/{p-9dba6823.entry.js → p-f0fc1bf0.entry.js} +2 -2
  238. package/dist/core/{p-49525194.entry.js → p-f24984c5.entry.js} +2 -2
  239. package/dist/core/p-f24984c5.entry.js.map +1 -0
  240. package/dist/core/{p-d8870804.entry.js → p-f5b2b26d.entry.js} +2 -2
  241. package/dist/core/p-f60dbd0e.entry.js +2 -0
  242. package/dist/core/p-f60dbd0e.entry.js.map +1 -0
  243. package/dist/core/{p-40e9e76a.entry.js → p-f71c00ce.entry.js} +2 -2
  244. package/dist/core/{p-cbcd4427.entry.js → p-ff4298b1.entry.js} +2 -2
  245. package/dist/esm/core.js +1 -1
  246. package/dist/esm/{helpers-1c9151ef.js → helpers-e8797e8d.js} +23 -2
  247. package/dist/esm/helpers-e8797e8d.js.map +1 -0
  248. package/dist/esm/ic-accordion-group.entry.js +1 -1
  249. package/dist/esm/ic-accordion.entry.js +1 -1
  250. package/dist/esm/ic-alert.entry.js +2 -2
  251. package/dist/esm/ic-alert.entry.js.map +1 -1
  252. package/dist/esm/ic-back-to-top.entry.js +1 -1
  253. package/dist/esm/ic-badge.entry.js +1 -1
  254. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  255. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  256. package/dist/esm/ic-button_3.entry.js +2 -2
  257. package/dist/esm/ic-button_3.entry.js.map +1 -1
  258. package/dist/esm/ic-card-vertical.entry.js +1 -1
  259. package/dist/esm/ic-checkbox-group.entry.js +2 -2
  260. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  261. package/dist/esm/ic-checkbox.entry.js +3 -3
  262. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  263. package/dist/esm/ic-chip.entry.js +1 -1
  264. package/dist/esm/ic-data-row.entry.js +1 -1
  265. package/dist/esm/ic-dialog.entry.js +1 -1
  266. package/dist/esm/ic-divider.entry.js +1 -1
  267. package/dist/esm/ic-empty-state.entry.js +1 -1
  268. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  269. package/dist/esm/ic-footer-link.entry.js +1 -1
  270. package/dist/esm/ic-footer.entry.js +1 -1
  271. package/dist/esm/ic-hero.entry.js +1 -1
  272. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  273. package/dist/esm/ic-input-component-container_3.entry.js +446 -164
  274. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  275. package/dist/esm/ic-input-label_2.entry.js +8 -6
  276. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  277. package/dist/esm/ic-link.entry.js +1 -1
  278. package/dist/esm/ic-menu-group.entry.js +2 -2
  279. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  280. package/dist/esm/ic-menu-item.entry.js +2 -2
  281. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  282. package/dist/esm/ic-navigation-button.entry.js +1 -1
  283. package/dist/esm/ic-navigation-group.entry.js +2 -2
  284. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  285. package/dist/esm/ic-navigation-item.entry.js +1 -1
  286. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  287. package/dist/esm/ic-page-header.entry.js +5 -5
  288. package/dist/esm/ic-page-header.entry.js.map +1 -1
  289. package/dist/esm/ic-pagination-item.entry.js +1 -1
  290. package/dist/esm/ic-pagination.entry.js +1 -1
  291. package/dist/esm/ic-popover-menu.entry.js +9 -9
  292. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  293. package/dist/esm/ic-radio-group.entry.js +2 -2
  294. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  295. package/dist/esm/ic-radio-option.entry.js +27 -22
  296. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  297. package/dist/esm/ic-search-bar.entry.js +2 -2
  298. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  299. package/dist/esm/ic-select.entry.js +147 -37
  300. package/dist/esm/ic-select.entry.js.map +1 -1
  301. package/dist/esm/ic-side-navigation.entry.js +1 -1
  302. package/dist/esm/ic-status-tag.entry.js +1 -1
  303. package/dist/esm/ic-step.entry.js +1 -1
  304. package/dist/esm/ic-stepper.entry.js +1 -1
  305. package/dist/esm/ic-switch.entry.js +7 -4
  306. package/dist/esm/ic-switch.entry.js.map +1 -1
  307. package/dist/esm/ic-tab-group.entry.js +1 -1
  308. package/dist/esm/ic-tab-panel.entry.js +1 -1
  309. package/dist/esm/ic-tab.entry.js +1 -1
  310. package/dist/esm/ic-text-field.entry.js +2 -2
  311. package/dist/esm/ic-text-field.entry.js.map +1 -1
  312. package/dist/esm/ic-theme.entry.js +1 -1
  313. package/dist/esm/ic-toast.entry.js +1 -1
  314. package/dist/esm/ic-toggle-button.entry.js +1 -1
  315. package/dist/esm/ic-top-navigation.entry.js +1 -1
  316. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  317. package/dist/esm/ic-typography.entry.js +1 -1
  318. package/dist/esm/loader.js +1 -1
  319. package/dist/types/components/ic-alert/ic-alert.d.ts +1 -1
  320. package/dist/types/components/ic-input-label/ic-input-label.d.ts +8 -0
  321. package/dist/types/components/ic-menu/ic-menu.d.ts +43 -15
  322. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +5 -0
  323. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +3 -2
  324. package/dist/types/components/ic-select/ic-select.d.ts +24 -10
  325. package/dist/types/components/ic-switch/ic-switch.d.ts +5 -1
  326. package/dist/types/components.d.ts +66 -20
  327. package/dist/types/utils/helpers.d.ts +7 -0
  328. package/dist/types/utils/types.d.ts +1 -1
  329. package/hydrate/index.js +685 -255
  330. package/package.json +2 -2
  331. package/vscode-data.json +49 -7
  332. package/dist/cjs/helpers-f1cf5156.js.map +0 -1
  333. package/dist/core/p-0c872824.entry.js +0 -2
  334. package/dist/core/p-0c872824.entry.js.map +0 -1
  335. package/dist/core/p-1f1758a9.entry.js +0 -2
  336. package/dist/core/p-1f1758a9.entry.js.map +0 -1
  337. package/dist/core/p-312cacae.js.map +0 -1
  338. package/dist/core/p-322edabc.entry.js +0 -2
  339. package/dist/core/p-322edabc.entry.js.map +0 -1
  340. package/dist/core/p-4055f22c.entry.js.map +0 -1
  341. package/dist/core/p-408344d3.entry.js +0 -2
  342. package/dist/core/p-4502d3c1.entry.js +0 -2
  343. package/dist/core/p-4502d3c1.entry.js.map +0 -1
  344. package/dist/core/p-49525194.entry.js.map +0 -1
  345. package/dist/core/p-5deb9730.entry.js +0 -2
  346. package/dist/core/p-5deb9730.entry.js.map +0 -1
  347. package/dist/core/p-6bd2e938.entry.js +0 -2
  348. package/dist/core/p-6bd2e938.entry.js.map +0 -1
  349. package/dist/core/p-7c89fc86.entry.js +0 -2
  350. package/dist/core/p-7c89fc86.entry.js.map +0 -1
  351. package/dist/core/p-af20322c.entry.js +0 -2
  352. package/dist/core/p-af20322c.entry.js.map +0 -1
  353. package/dist/core/p-bf1f0ac7.entry.js.map +0 -1
  354. package/dist/core/p-d1c9c32b.entry.js +0 -2
  355. package/dist/core/p-d1c9c32b.entry.js.map +0 -1
  356. package/dist/core/p-dc83a0e9.entry.js +0 -2
  357. package/dist/core/p-dc83a0e9.entry.js.map +0 -1
  358. package/dist/core/p-de3a5423.entry.js +0 -2
  359. package/dist/core/p-de3a5423.entry.js.map +0 -1
  360. package/dist/core/p-e53309b0.entry.js +0 -2
  361. package/dist/core/p-e53309b0.entry.js.map +0 -1
  362. package/dist/core/p-f38bce8d.entry.js.map +0 -1
  363. package/dist/core/p-fa587e6d.entry.js +0 -2
  364. package/dist/core/p-fa587e6d.entry.js.map +0 -1
  365. package/dist/esm/helpers-1c9151ef.js.map +0 -1
  366. /package/dist/core/{p-d2f89cb5.entry.js.map → p-0395442c.entry.js.map} +0 -0
  367. /package/dist/core/{p-244d6dba.entry.js.map → p-0d233b0c.entry.js.map} +0 -0
  368. /package/dist/core/{p-355acffa.entry.js.map → p-37dea10d.entry.js.map} +0 -0
  369. /package/dist/core/{p-84526c3e.entry.js.map → p-43256b7c.entry.js.map} +0 -0
  370. /package/dist/core/{p-93c23a35.entry.js.map → p-4a3b1f06.entry.js.map} +0 -0
  371. /package/dist/core/{p-34db8aaf.entry.js.map → p-5cd016e1.entry.js.map} +0 -0
  372. /package/dist/core/{p-d2f8e03f.entry.js.map → p-5ef8e106.entry.js.map} +0 -0
  373. /package/dist/core/{p-0a808ec3.entry.js.map → p-690c5e80.entry.js.map} +0 -0
  374. /package/dist/core/{p-43f9a711.entry.js.map → p-6d3e4bb1.entry.js.map} +0 -0
  375. /package/dist/core/{p-fa1b7a80.entry.js.map → p-72d30c8a.entry.js.map} +0 -0
  376. /package/dist/core/{p-f30f3a3e.entry.js.map → p-76263187.entry.js.map} +0 -0
  377. /package/dist/core/{p-c86d48b6.entry.js.map → p-7827b5cb.entry.js.map} +0 -0
  378. /package/dist/core/{p-c06a3b97.entry.js.map → p-7b35de65.entry.js.map} +0 -0
  379. /package/dist/core/{p-1684c8d4.entry.js.map → p-7fbf2d3e.entry.js.map} +0 -0
  380. /package/dist/core/{p-1b573920.entry.js.map → p-922984cb.entry.js.map} +0 -0
  381. /package/dist/core/{p-aab2c7aa.entry.js.map → p-95f603dd.entry.js.map} +0 -0
  382. /package/dist/core/{p-e4b276b5.entry.js.map → p-97fb2bdf.entry.js.map} +0 -0
  383. /package/dist/core/{p-e3ed9110.entry.js.map → p-acbd15ab.entry.js.map} +0 -0
  384. /package/dist/core/{p-6d40baa9.entry.js.map → p-b17c94b7.entry.js.map} +0 -0
  385. /package/dist/core/{p-363d6e88.entry.js.map → p-b95a72a3.entry.js.map} +0 -0
  386. /package/dist/core/{p-21e5dd29.entry.js.map → p-b997064c.entry.js.map} +0 -0
  387. /package/dist/core/{p-4ff6d16f.entry.js.map → p-ba6ecc15.entry.js.map} +0 -0
  388. /package/dist/core/{p-0d30ffab.entry.js.map → p-c0fc3d02.entry.js.map} +0 -0
  389. /package/dist/core/{p-f828a6e1.entry.js.map → p-c9cf932c.entry.js.map} +0 -0
  390. /package/dist/core/{p-aa0619ce.entry.js.map → p-cf7db84a.entry.js.map} +0 -0
  391. /package/dist/core/{p-d58a10ec.entry.js.map → p-dd36bf1b.entry.js.map} +0 -0
  392. /package/dist/core/{p-da14cd3c.entry.js.map → p-e4d1839e.entry.js.map} +0 -0
  393. /package/dist/core/{p-60efd7fa.entry.js.map → p-ebafab37.entry.js.map} +0 -0
  394. /package/dist/core/{p-82375dca.entry.js.map → p-ee6dd94c.entry.js.map} +0 -0
  395. /package/dist/core/{p-9dba6823.entry.js.map → p-f0fc1bf0.entry.js.map} +0 -0
  396. /package/dist/core/{p-d8870804.entry.js.map → p-f5b2b26d.entry.js.map} +0 -0
  397. /package/dist/core/{p-40e9e76a.entry.js.map → p-f71c00ce.entry.js.map} +0 -0
  398. /package/dist/core/{p-cbcd4427.entry.js.map → p-ff4298b1.entry.js.map} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { Host, h, forceUpdate, } from "@stencil/core";
2
- import { getInputDescribedByText, getLabelFromValue, hasValidationStatus, inheritAttributes, onComponentRequiredPropUndefined, renderHiddenInput, isMobileOrTablet, getFilteredMenuOptions, addFormResetListener, removeFormResetListener, removeDisabledFalse, checkSlotInChildMutations, } from "../../utils/helpers";
2
+ import { getInputDescribedByText, getLabelFromValue, hasValidationStatus, inheritAttributes, onComponentRequiredPropUndefined, renderHiddenInput, isMobileOrTablet, getFilteredMenuOptions, getOptionsWithoutGroupTitlesCount, addFormResetListener, removeFormResetListener, removeDisabledFalse, checkSlotInChildMutations, } from "../../utils/helpers";
3
3
  import { IC_INHERITED_ARIA } from "../../utils/constants";
4
4
  import { IcInformationStatus, IcThemeForegroundEnum, } from "../../utils/types";
5
5
  import Expand from "./assets/Expand.svg";
@@ -47,17 +47,24 @@ export class Select {
47
47
  };
48
48
  this.emitIcChange = (value) => {
49
49
  if (!this.searchable) {
50
- this.value = value;
50
+ // If "Select all" button clicked, replace value with new value (array of all option values)
51
+ if (this.multiple && !Array.isArray(value) && value !== null) {
52
+ this.handleMultipleSelectChange(value);
53
+ }
54
+ else {
55
+ this.value = value;
56
+ }
51
57
  }
52
58
  clearTimeout(this.debounceIcChange);
53
59
  this.debounceIcChange = window.setTimeout(() => {
54
- this.icChange.emit({ value: value });
60
+ const valueToEmit = this.multiple ? this.value : value;
61
+ this.icChange.emit({ value: valueToEmit });
55
62
  }, this.currDebounce);
56
63
  };
57
64
  this.emitImmediateIcChange = (value) => {
58
65
  this.value = value;
59
66
  clearTimeout(this.debounceIcChange);
60
- this.icChange.emit({ value: value });
67
+ this.icChange.emit({ value });
61
68
  };
62
69
  /**
63
70
  * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn
@@ -130,6 +137,10 @@ export class Select {
130
137
  this.getLabelFromValue = (value) => {
131
138
  return getLabelFromValue(value, this.uniqueOptions);
132
139
  };
140
+ this.getMultipleOptionsString = (selectedValues) => {
141
+ const selectedLabels = selectedValues === null || selectedValues === void 0 ? void 0 : selectedValues.map((value) => this.getLabelFromValue(value));
142
+ return selectedLabels === null || selectedLabels === void 0 ? void 0 : selectedLabels.join(", ");
143
+ };
133
144
  this.getFilteredChildMenuOptions = (option) => {
134
145
  let children = option.children;
135
146
  if (this.searchable) {
@@ -142,18 +153,29 @@ export class Select {
142
153
  newOption.children = children;
143
154
  return newOption;
144
155
  };
156
+ // (For multi-select) get value array, i.e. selected option values, in order they appear in option list
157
+ this.getValueSortedByOptions = (value) => {
158
+ const valueArray = value;
159
+ const valuesFromAllOptions = this.ungroupedOptions.map((option) => option.value);
160
+ valueArray.sort((a, b) => valuesFromAllOptions.indexOf(a) - valuesFromAllOptions.indexOf(b));
161
+ return valueArray;
162
+ };
145
163
  this.handleNativeSelectChange = () => {
146
164
  this.icOptionSelect.emit({ value: this.nativeSelectElement.value });
147
165
  this.emitImmediateIcChange(this.nativeSelectElement.value);
148
166
  this.setTextColor();
149
167
  };
168
+ // Handle option select for when a custom input box and menu is rendered
169
+ // (rather than native <select> - rendered when viewed on a mobile / tablet screen)
150
170
  this.handleCustomSelectChange = (event) => {
171
+ var _a;
172
+ const value = event.detail.value;
151
173
  if (this.searchable && event.detail.label === this.emptyOptionListText) {
152
174
  this.searchableSelectElement.focus();
153
175
  return;
154
176
  }
155
177
  if (this.searchable) {
156
- this.value = event.detail.value;
178
+ this.value = value;
157
179
  this.searchableMenuItemSelected = true;
158
180
  // After editing the input, if selecting the same option as before, set the input value to label again
159
181
  if (this.value === this.currValue) {
@@ -162,9 +184,59 @@ export class Select {
162
184
  this.inputValueToFilter = null;
163
185
  this.hiddenInputValue = this.getValueFromLabel(this.searchableSelectInputValue);
164
186
  }
187
+ if (this.multiple && ((_a = this.value) === null || _a === void 0 ? void 0 : _a.includes(value))) {
188
+ this.icOptionDeselect.emit({ value });
189
+ }
190
+ else {
191
+ this.icOptionSelect.emit({ value });
192
+ }
165
193
  this.ariaActiveDescendant = event.detail.optionId;
166
- this.icOptionSelect.emit({ value: event.detail.value });
167
- this.emitIcChange(event.detail.value);
194
+ this.emitIcChange(value);
195
+ };
196
+ // Update selected options - adds / removes them, in order of option list
197
+ // Create new array if value prop is undefined
198
+ this.handleMultipleSelectChange = (value) => {
199
+ if (this.value) {
200
+ let valueArray = this.value.slice();
201
+ if (this.value.includes(value)) {
202
+ const valueIndex = valueArray.indexOf(value);
203
+ valueArray.splice(valueIndex, 1);
204
+ }
205
+ else {
206
+ valueArray.push(value);
207
+ valueArray = this.getValueSortedByOptions(valueArray);
208
+ }
209
+ this.value = valueArray.length === 0 ? null : valueArray;
210
+ }
211
+ else {
212
+ const valueArray = [];
213
+ valueArray.push(value);
214
+ this.value = valueArray;
215
+ }
216
+ };
217
+ this.handleSelectAllChange = (event) => {
218
+ const selectAllOptions = event.detail.select;
219
+ const allEnabledOptions = this.ungroupedOptions.filter((option) => !option.disabled);
220
+ const allValues = allEnabledOptions.map((option) => option.value);
221
+ let newValue;
222
+ if (selectAllOptions) {
223
+ let unselectedValues;
224
+ // Only emit icOptionSelect for all values that are newly selected
225
+ if (this.value) {
226
+ unselectedValues = allValues.filter((value) => this.value && !this.value.includes(value));
227
+ }
228
+ else {
229
+ unselectedValues = allValues;
230
+ }
231
+ unselectedValues.forEach((value) => this.icOptionSelect.emit({ value }));
232
+ newValue = allValues;
233
+ }
234
+ else {
235
+ // Only emit icOptionDeselect for values that were selected
236
+ this.value.forEach((value) => this.icOptionDeselect.emit({ value }));
237
+ newValue = null;
238
+ }
239
+ this.emitIcChange(newValue);
168
240
  };
169
241
  this.handleMenuChange = (event) => {
170
242
  this.open = event.detail.open;
@@ -175,10 +247,9 @@ export class Select {
175
247
  // to prevent delay in change event, which should only occur when typing in input
176
248
  this.handleMenuKeyPress = (ev) => {
177
249
  ev.cancelBubble = true;
178
- this.handleCharacterKeyDown(ev.detail.key);
179
- };
180
- this.handleMenuValueChange = (ev) => {
181
- this.value = ev.detail.value;
250
+ if (!this.multiple) {
251
+ this.handleCharacterKeyDown(ev.detail.key);
252
+ }
182
253
  };
183
254
  this.handleFocusIndicatorDisplay = () => {
184
255
  const focusIndicator = this.el.shadowRoot.querySelector(".focus-indicator");
@@ -250,10 +321,12 @@ export class Select {
250
321
  if (key.length === 1 && !this.searchable) {
251
322
  window.clearTimeout(this.characterKeyPressTimer);
252
323
  this.characterKeyPressTimer = window.setTimeout(() => (this.pressedCharacters = ""), 1000);
253
- this.pressedCharacters += key;
254
- this.handleFilter();
255
- if (!this.noOptions) {
256
- this.emitImmediateIcChange(this.filteredOptions[0].value);
324
+ if (!(key === " " && !this.pressedCharacters)) {
325
+ this.pressedCharacters += key;
326
+ this.handleFilter();
327
+ if (!this.noOptions) {
328
+ this.emitImmediateIcChange(this.filteredOptions[0].value);
329
+ }
257
330
  }
258
331
  }
259
332
  else {
@@ -291,7 +364,9 @@ export class Select {
291
364
  // Keyboard events get passed onto ic-menu
292
365
  this.menu.handleKeyboardOpen(event);
293
366
  }
294
- this.handleCharacterKeyDown(event.key);
367
+ if (!this.multiple) {
368
+ this.handleCharacterKeyDown(event.key);
369
+ }
295
370
  }
296
371
  }
297
372
  };
@@ -416,7 +491,24 @@ export class Select {
416
491
  }
417
492
  }
418
493
  };
494
+ this.updateMultiSelectedCountAriaLive = () => {
495
+ var _a;
496
+ const multiSelectSelectedCountEl = this.el.shadowRoot.querySelector(".multi-select-selected-count");
497
+ const selectedCount = `${(_a = this.currValue) === null || _a === void 0 ? void 0 : _a.length} of ${getOptionsWithoutGroupTitlesCount(this.options)} selected`;
498
+ if (multiSelectSelectedCountEl &&
499
+ multiSelectSelectedCountEl.innerText !== selectedCount) {
500
+ multiSelectSelectedCountEl.innerText = selectedCount;
501
+ }
502
+ };
419
503
  this.getDefaultValue = (value) => this.getLabelFromValue(value) || value || null;
504
+ this.setDefaultValue = () => {
505
+ if (!this.hasSetDefaultValue && this.currValue) {
506
+ this.searchableSelectInputValue =
507
+ this.searchable && this.getDefaultValue(this.currValue);
508
+ this.initialValue = this.currValue;
509
+ this.hasSetDefaultValue = true;
510
+ }
511
+ };
420
512
  this.onFocus = () => {
421
513
  this.icFocus.emit();
422
514
  };
@@ -481,6 +573,7 @@ export class Select {
481
573
  this.label = undefined;
482
574
  this.loadingErrorLabel = "Loading Error";
483
575
  this.loadingLabel = "Loading...";
576
+ this.multiple = false;
484
577
  this.name = this.inputId;
485
578
  this.placeholder = "Select an option";
486
579
  this.readonly = false;
@@ -509,10 +602,11 @@ export class Select {
509
602
  }
510
603
  watchOptionsHandler() {
511
604
  var _a;
512
- if (!this.hasTimedOut) {
605
+ if (!this.hasTimedOut && this.options !== this.noOptions) {
513
606
  this.loading = false;
514
607
  clearTimeout(this.timeoutTimer);
515
608
  if (this.isExternalFiltering()) {
609
+ // When searchable select
516
610
  if (((_a = this.options) === null || _a === void 0 ? void 0 : _a.length) > 0) {
517
611
  this.setOptionsValuesFromLabels();
518
612
  this.noOptions = null;
@@ -548,11 +642,18 @@ export class Select {
548
642
  }
549
643
  valueChangedHandler() {
550
644
  if (this.value !== this.currValue) {
551
- this.currValue = this.value;
645
+ if (this.value && this.multiple) {
646
+ this.currValue = this.getValueSortedByOptions(this.value);
647
+ this.updateMultiSelectedCountAriaLive();
648
+ }
649
+ else {
650
+ this.currValue = this.value;
651
+ }
552
652
  }
553
653
  if (this.searchable) {
554
654
  this.searchableSelectInputValue =
555
- this.getLabelFromValue(this.currValue) || this.currValue;
655
+ this.getLabelFromValue(this.currValue) ||
656
+ this.currValue;
556
657
  }
557
658
  }
558
659
  openChangedHandler() {
@@ -622,15 +723,10 @@ export class Select {
622
723
  this.updateSearchableSelectResultAriaLive();
623
724
  }, 800);
624
725
  }
625
- setDefaultValue() {
626
- if (!this.hasSetDefaultValue && this.currValue) {
627
- this.searchableSelectInputValue = this.getDefaultValue(this.currValue);
628
- this.initialValue = this.currValue;
629
- this.hasSetDefaultValue = true;
630
- }
631
- }
632
726
  render() {
633
- const { size, disabled, fullWidth, helperText, hideLabel, label, menuId, name, options, placeholder, readonly, required, searchable, showClearButton, validationStatus, validationText, currValue, } = this;
727
+ const { size, disabled, fullWidth, helperText, hideLabel, label, menuId, multiple, name, options, placeholder, readonly, required, searchable, showClearButton, validationStatus, validationText, currValue, } = this;
728
+ // HTML inputs only accept 'string' for their value
729
+ // Does not cause errors when it is a multi-select - sets value correctly, to a comma-separated string
634
730
  renderHiddenInput(true, this.el, name, this.searchable ? this.hiddenInputValue : currValue, disabled);
635
731
  const invalid = `${validationStatus === IcInformationStatus.Error}`;
636
732
  const describedBy = getInputDescribedByText(this.inputId, helperText !== "", hasValidationStatus(this.validationStatus, this.disabled)).trim();
@@ -638,6 +734,7 @@ export class Select {
638
734
  if (showLeftIcon && (disabled || (readonly && !this.value))) {
639
735
  showLeftIcon = false;
640
736
  }
737
+ const optionsSelectedCount = `${currValue === null || currValue === void 0 ? void 0 : currValue.length} of ${getOptionsWithoutGroupTitlesCount(this.options)} selected`;
641
738
  return (h(Host, { class: {
642
739
  ["ic-select-disabled"]: disabled,
643
740
  ["ic-select-searchable"]: searchable,
@@ -646,14 +743,19 @@ export class Select {
646
743
  }, onBlur: this.onBlur }, h("ic-input-container", { readonly: readonly }, !hideLabel && (h("ic-input-label", { for: this.inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly })), h("ic-input-component-container", { ref: (el) => (this.anchorEl = el), class: { "menu-open": this.open }, size: size, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, showLeftIcon && (h("span", { slot: "left-icon", class: {
647
744
  ["readonly"]: readonly,
648
745
  ["has-value"]: !!this.value,
649
- } }, h("slot", { name: "icon" }))), readonly ? (h("ic-typography", null, h("p", null, this.getLabelFromValue(currValue)))) : isMobileOrTablet() ? (h("select", Object.assign({ ref: (el) => (this.nativeSelectElement = el), disabled: disabled, onChange: this.handleNativeSelectChange, required: required, id: this.inputId, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.handleNativeSelectKeyDown, form: this.form }, this.inheritedAttributes), h("option", { value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => {
746
+ } }, h("slot", { name: "icon" }))), readonly ? (h("ic-typography", null, h("p", null, multiple
747
+ ? this.getMultipleOptionsString(currValue)
748
+ : this.getLabelFromValue(currValue)))) : isMobileOrTablet() && !multiple ? (h("select", Object.assign({ ref: (el) => (this.nativeSelectElement = el), disabled: disabled, onChange: this.handleNativeSelectChange, required: required, id: this.inputId, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.handleNativeSelectKeyDown, form: this.form }, this.inheritedAttributes), h("option", { value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => {
650
749
  if (option.children) {
651
750
  return (h("optgroup", { label: option.label }, option.children.map((option) => (h("option", { value: option.value, disabled: option.disabled, selected: option.value === currValue }, option.label)))));
652
751
  }
653
752
  else {
654
753
  return (h("option", { value: option.value, disabled: option.disabled, selected: option.value === currValue }, option.label));
655
754
  }
656
- }))) : searchable ? (h("div", { class: "searchable-select-container" }, h("input", { class: "select-input", role: "combobox", autocomplete: "off", "aria-label": label, "aria-describedby": describedBy, "aria-activedescendant": this.ariaActiveDescendant, "aria-autocomplete": "list", "aria-expanded": `${this.open}`, "aria-invalid": invalid, "aria-required": `${required}`, "aria-controls": menuId, ref: (el) => (this.searchableSelectElement = el), id: this.inputId, value: this.searchableSelectInputValue, placeholder: placeholder, disabled: disabled, onInput: this.handleSearchableSelectInput, onClick: this.handleClick, onKeyDown: this.handleKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, form: this.form }), this.searchableSelectInputValue &&
755
+ }))) : searchable ? (h("div", { class: "searchable-select-container" }, h("input", { class: {
756
+ "select-input": true,
757
+ "with-clear-button": !!this.searchableSelectInputValue,
758
+ }, role: "combobox", autocomplete: "off", "aria-label": label, "aria-describedby": describedBy, "aria-activedescendant": this.ariaActiveDescendant, "aria-autocomplete": "list", "aria-expanded": `${this.open}`, "aria-invalid": invalid, "aria-required": `${required}`, "aria-controls": menuId, ref: (el) => (this.searchableSelectElement = el), id: this.inputId, value: this.searchableSelectInputValue, placeholder: placeholder, disabled: disabled, onInput: this.handleSearchableSelectInput, onClick: this.handleClick, onKeyDown: this.handleKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, form: this.form }), this.searchableSelectInputValue &&
657
759
  (showClearButton || searchable) && (h("div", { class: "clear-button-container" }, h("ic-button", { id: "clear-button", ref: (el) => (this.clearButton = el), "aria-label": this.searchableSelectInputValue && currValue === null
658
760
  ? "Clear input"
659
761
  : "Clear selection", class: "clear-button", innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearButtonFocus, onBlur: this.handleClearButtonBlur, size: size, variant: "icon", appearance: this.clearButtonFocused
@@ -661,17 +763,22 @@ export class Select {
661
763
  : IcThemeForegroundEnum.Dark }), h("div", { class: "divider" }))), h("span", { onMouseDown: this.handleExpandIconMouseDown, class: {
662
764
  "expand-icon": true,
663
765
  "expand-icon-open": this.open,
664
- "expand-icon-filled": !(currValue == null || currValue === ""),
665
- }, innerHTML: Expand, "aria-hidden": "true" }), h("div", { "aria-live": "polite", role: "status", class: "searchable-select-results-status" }))) : (h("div", { class: "select-container" }, h("button", { class: "select-input", ref: (el) => (this.customSelectElement = el), id: this.inputId, "aria-label": `${label}, ${this.getLabelFromValue(currValue) || placeholder}${required ? ", required" : ""}`, "aria-describedby": describedBy, "aria-invalid": invalid, "aria-haspopup": "listbox", "aria-expanded": this.open ? "true" : "false", "aria-owns": menuId, "aria-controls": menuId, disabled: disabled, onBlur: this.onBlur, onFocus: this.onFocus, onClick: this.handleClick, onMouseDown: this.handleMouseDown, onKeyDown: this.handleKeyDown }, h("ic-typography", { variant: "body", class: {
766
+ }, innerHTML: Expand, "aria-hidden": "true" }), h("div", { "aria-live": "polite", role: "status", class: "searchable-select-results-status" }))) : (h("div", { class: "select-container" }, h("button", { class: "select-input", ref: (el) => (this.customSelectElement = el), id: this.inputId, "aria-label": `${label}, ${(multiple && currValue
767
+ ? `${optionsSelectedCount}, ${this.getMultipleOptionsString(currValue)}`
768
+ : this.getLabelFromValue(currValue)) ||
769
+ placeholder}${required ? ", required" : ""}`, "aria-describedby": describedBy, "aria-invalid": invalid, "aria-haspopup": "listbox", "aria-expanded": this.open ? "true" : "false", "aria-owns": menuId, "aria-controls": menuId, disabled: disabled, onBlur: this.onBlur, onFocus: this.onFocus, onClick: this.handleClick, onMouseDown: this.handleMouseDown, onKeyDown: this.handleKeyDown }, h("ic-typography", { variant: "body", class: {
666
770
  "value-text": true,
667
- placeholder: this.getLabelFromValue(currValue) === undefined,
668
- } }, this.getLabelFromValue(currValue) || placeholder), h("div", { class: "select-input-end" }, currValue && showClearButton && (h("div", { class: "divider" })), h("span", { class: {
771
+ "with-clear-button": currValue && showClearButton,
772
+ placeholder: !this.value || (multiple && this.value.length < 1),
773
+ } }, (multiple
774
+ ? this.getMultipleOptionsString(currValue)
775
+ : this.getLabelFromValue(currValue)) ||
776
+ placeholder), h("div", { class: "select-input-end" }, currValue && showClearButton && (h("div", { class: "divider" })), h("span", { class: {
669
777
  "expand-icon": true,
670
778
  "expand-icon-open": this.open,
671
- "expand-icon-filled": !(currValue == null || currValue === ""),
672
779
  }, innerHTML: Expand, "aria-hidden": "true" }))), currValue && showClearButton && (h("ic-button", { id: "clear-button", "aria-label": "Clear selection", class: "clear-button", innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearButtonFocus, onBlur: this.handleClearButtonBlur, size: size, variant: "icon", appearance: this.clearButtonFocused
673
780
  ? IcThemeForegroundEnum.Light
674
- : IcThemeForegroundEnum.Dark }))))), !isMobileOrTablet() && (h("ic-menu", { class: {
781
+ : IcThemeForegroundEnum.Dark }))))), (!isMobileOrTablet() || multiple) && (h("ic-menu", { class: {
675
782
  "no-results": this.loading ||
676
783
  this.hasTimedOut ||
677
784
  (this.noOptions !== null &&
@@ -679,7 +786,9 @@ export class Select {
679
786
  this.noOptions[0].label === this.emptyOptionListText),
680
787
  }, ref: (el) => (this.menu = el), inputEl: searchable
681
788
  ? this.searchableSelectElement
682
- : this.customSelectElement, inputLabel: label, anchorEl: this.anchorEl, size: size, menuId: menuId, open: this.open, options: searchable ? this.filteredOptions : this.uniqueOptions, value: currValue, fullWidth: fullWidth, selectOnEnter: this.selectOnEnter, onMenuStateChange: this.handleMenuChange, onMenuOptionSelect: this.handleCustomSelectChange, onMenuKeyPress: this.handleMenuKeyPress, onMenuValueChange: this.handleMenuValueChange, onUngroupedOptionsSet: this.setUngroupedOptions, onRetryButtonClicked: this.handleRetry, parentEl: this.el, onTimeoutBlur: this.onTimeoutBlur, activationType: this.searchable || this.selectOnEnter ? "manual" : "automatic" })), hasValidationStatus(this.validationStatus, this.disabled) && (h("ic-input-validation", { class: { "menu-open": this.open }, ariaLiveMode: "polite", status: validationStatus, message: validationText, for: this.inputId })))));
789
+ : this.customSelectElement, inputLabel: label, anchorEl: this.anchorEl, size: size, menuId: menuId, open: this.open, options: searchable ? this.filteredOptions : this.uniqueOptions, value: multiple ? currValue : currValue, fullWidth: fullWidth, selectOnEnter: this.selectOnEnter, onMenuStateChange: this.handleMenuChange, onMenuOptionSelect: this.handleCustomSelectChange, onMenuOptionSelectAll: this.handleSelectAllChange, onMenuKeyPress: this.handleMenuKeyPress, onUngroupedOptionsSet: this.setUngroupedOptions, onRetryButtonClicked: this.handleRetry, parentEl: this.el, onTimeoutBlur: this.onTimeoutBlur, activationType: this.searchable || multiple || this.selectOnEnter
790
+ ? "manual"
791
+ : "automatic", closeOnSelect: !multiple })), this.multiple && (h("div", { "aria-live": "polite", role: "status", class: "multi-select-selected-count" })), hasValidationStatus(this.validationStatus, this.disabled) && (h("ic-input-validation", { class: { "menu-open": this.open }, ariaLiveMode: "polite", status: validationStatus, message: validationText, for: this.inputId })))));
683
792
  }
684
793
  static get is() { return "ic-select"; }
685
794
  static get encapsulation() { return "shadow"; }
@@ -779,7 +888,7 @@ export class Select {
779
888
  "optional": false,
780
889
  "docs": {
781
890
  "tags": [],
782
- "text": "If `true`, the select element will fill the width of the container. This prop should only be used with searchable select and will only be applied if searchable is true."
891
+ "text": "If `true`, the select will fill the width of the container."
783
892
  },
784
893
  "attribute": "full-width",
785
894
  "reflect": false,
@@ -910,6 +1019,24 @@ export class Select {
910
1019
  "reflect": false,
911
1020
  "defaultValue": "\"Loading...\""
912
1021
  },
1022
+ "multiple": {
1023
+ "type": "boolean",
1024
+ "mutable": false,
1025
+ "complexType": {
1026
+ "original": "boolean",
1027
+ "resolved": "boolean",
1028
+ "references": {}
1029
+ },
1030
+ "required": false,
1031
+ "optional": true,
1032
+ "docs": {
1033
+ "tags": [],
1034
+ "text": "If `true`, multiple options can be selected."
1035
+ },
1036
+ "attribute": "multiple",
1037
+ "reflect": false,
1038
+ "defaultValue": "false"
1039
+ },
913
1040
  "name": {
914
1041
  "type": "string",
915
1042
  "mutable": false,
@@ -1036,7 +1163,7 @@ export class Select {
1036
1163
  "optional": true,
1037
1164
  "docs": {
1038
1165
  "tags": [],
1039
- "text": "If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown."
1166
+ "text": "If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown on the single select."
1040
1167
  },
1041
1168
  "attribute": "select-on-enter",
1042
1169
  "reflect": false,
@@ -1078,7 +1205,7 @@ export class Select {
1078
1205
  "optional": true,
1079
1206
  "docs": {
1080
1207
  "tags": [],
1081
- "text": "The size of the select component."
1208
+ "text": "The size of the select."
1082
1209
  },
1083
1210
  "attribute": "size",
1084
1211
  "reflect": false,
@@ -1205,15 +1332,15 @@ export class Select {
1205
1332
  "type": "string",
1206
1333
  "mutable": true,
1207
1334
  "complexType": {
1208
- "original": "string",
1209
- "resolved": "string",
1335
+ "original": "string | string[]",
1336
+ "resolved": "string | string[]",
1210
1337
  "references": {}
1211
1338
  },
1212
1339
  "required": false,
1213
1340
  "optional": true,
1214
1341
  "docs": {
1215
1342
  "tags": [],
1216
- "text": "The value of the select, reflected by the value of the currently selected option. For the searchable variant, the value is also reflected by the user input."
1343
+ "text": "The value of the select, reflected by the value of the currently selected option.\nFor the searchable variant, the value is also reflected by the user input.\nFor the multi-select variant, the value must be an array of option values."
1217
1344
  },
1218
1345
  "attribute": "value",
1219
1346
  "reflect": false
@@ -1364,7 +1491,28 @@ export class Select {
1364
1491
  "composed": true,
1365
1492
  "docs": {
1366
1493
  "tags": [],
1367
- "text": "Emitted when an option is highlighted within the menu.\nHighlighting a menu item will also trigger an `icChange/onIcChange` due to the value being updated."
1494
+ "text": "Emitted when an option is selected.\nSelecting an option will also trigger an `icChange/onIcChange` due to the value being updated."
1495
+ },
1496
+ "complexType": {
1497
+ "original": "IcOptionSelectEventDetail",
1498
+ "resolved": "IcOptionSelectEventDetail",
1499
+ "references": {
1500
+ "IcOptionSelectEventDetail": {
1501
+ "location": "import",
1502
+ "path": "../ic-menu/ic-menu.types",
1503
+ "id": "src/components/ic-menu/ic-menu.types.ts::IcOptionSelectEventDetail"
1504
+ }
1505
+ }
1506
+ }
1507
+ }, {
1508
+ "method": "icOptionDeselect",
1509
+ "name": "icOptionDeselect",
1510
+ "bubbles": true,
1511
+ "cancelable": true,
1512
+ "composed": true,
1513
+ "docs": {
1514
+ "tags": [],
1515
+ "text": "Emitted when `multiple` is `true` and an option is deselected."
1368
1516
  },
1369
1517
  "complexType": {
1370
1518
  "original": "IcOptionSelectEventDetail",