@ukic/web-components 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (536) hide show
  1. package/README.md +28 -0
  2. package/dist/cjs/core.cjs.js +1 -1
  3. package/dist/cjs/{helpers-a0a128bd.js → helpers-789082d4.js} +16 -37
  4. package/dist/cjs/helpers-789082d4.js.map +1 -0
  5. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-alert.cjs.entry.js +63 -36
  10. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  11. package/dist/cjs/ic-back-to-top.cjs.entry.js +4 -4
  12. package/dist/cjs/ic-badge.cjs.entry.js +40 -16
  13. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +3 -3
  15. package/dist/cjs/ic-breadcrumb.cjs.entry.js +3 -3
  16. package/dist/cjs/ic-button_3.cjs.entry.js +32 -7
  17. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-card-vertical.cjs.entry.js +6 -6
  19. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-checkbox-group.cjs.entry.js +4 -4
  21. package/dist/cjs/ic-checkbox.cjs.entry.js +6 -6
  22. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-chip.cjs.entry.js +4 -4
  24. package/dist/cjs/ic-classification-banner.cjs.entry.js +2 -2
  25. package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
  26. package/dist/cjs/ic-data-row.cjs.entry.js +3 -3
  27. package/dist/cjs/ic-dialog.cjs.entry.js +3 -3
  28. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-divider.cjs.entry.js +2 -2
  30. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-empty-state.cjs.entry.js +3 -3
  32. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  33. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  34. package/dist/cjs/ic-footer-link.cjs.entry.js +3 -3
  35. package/dist/cjs/ic-footer.cjs.entry.js +4 -4
  36. package/dist/cjs/ic-hero.cjs.entry.js +5 -5
  37. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +6 -6
  38. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +9 -9
  39. package/dist/cjs/ic-input-label_2.cjs.entry.js +8 -8
  40. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  41. package/dist/cjs/ic-menu-group.cjs.entry.js +2 -2
  42. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-navigation-button.cjs.entry.js +3 -3
  45. package/dist/cjs/ic-navigation-group.cjs.entry.js +3 -3
  46. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-navigation-item.cjs.entry.js +12 -7
  48. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-navigation-menu.cjs.entry.js +5 -5
  50. package/dist/cjs/ic-page-header.cjs.entry.js +7 -7
  51. package/dist/cjs/ic-pagination-item.cjs.entry.js +2 -2
  52. package/dist/cjs/ic-pagination.cjs.entry.js +5 -5
  53. package/dist/cjs/ic-popover-menu.cjs.entry.js +5 -5
  54. package/dist/cjs/ic-radio-group.cjs.entry.js +5 -5
  55. package/dist/cjs/ic-radio-option.cjs.entry.js +6 -6
  56. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  57. package/dist/cjs/ic-search-bar.cjs.entry.js +10 -10
  58. package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
  59. package/dist/cjs/ic-select.cjs.entry.js +46 -49
  60. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-side-navigation.cjs.entry.js +5 -5
  62. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
  64. package/dist/cjs/ic-skip-link.cjs.entry.js +10 -3
  65. package/dist/cjs/ic-skip-link.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-status-tag.cjs.entry.js +3 -3
  67. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  68. package/dist/cjs/ic-step.cjs.entry.js +15 -15
  69. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-stepper.cjs.entry.js +3 -3
  71. package/dist/cjs/ic-switch.cjs.entry.js +5 -5
  72. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -3
  74. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  75. package/dist/cjs/ic-tab.cjs.entry.js +3 -3
  76. package/dist/cjs/ic-text-field.cjs.entry.js +7 -7
  77. package/dist/cjs/ic-theme.cjs.entry.js +4 -2
  78. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  80. package/dist/cjs/ic-toast.cjs.entry.js +4 -4
  81. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +3 -3
  82. package/dist/cjs/ic-toggle-button.cjs.entry.js +4 -4
  83. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  84. package/dist/cjs/ic-top-navigation.cjs.entry.js +5 -5
  85. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  86. package/dist/cjs/ic-typography.cjs.entry.js +4 -4
  87. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  88. package/dist/cjs/loader.cjs.js +1 -1
  89. package/dist/collection/components/ic-accordion/ic-accordion.css +3 -0
  90. package/dist/collection/components/ic-accordion-group/ic-accordion-group.css +1 -0
  91. package/dist/collection/components/ic-alert/ic-alert.css +3 -1
  92. package/dist/collection/components/ic-alert/ic-alert.js +85 -50
  93. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  94. package/dist/collection/components/ic-back-to-top/ic-back-to-top.js +3 -3
  95. package/dist/collection/components/ic-badge/ic-badge.js +39 -15
  96. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  97. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +2 -2
  98. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +2 -2
  99. package/dist/collection/components/ic-button/ic-button.css +18 -5
  100. package/dist/collection/components/ic-button/ic-button.stories.js +29 -52
  101. package/dist/collection/components/ic-card-vertical/ic-card-vertical.css +20 -4
  102. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js +4 -4
  103. package/dist/collection/components/ic-checkbox/ic-checkbox.css +3 -1
  104. package/dist/collection/components/ic-checkbox/ic-checkbox.js +4 -4
  105. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +3 -3
  106. package/dist/collection/components/ic-chip/ic-chip.js +3 -3
  107. package/dist/collection/components/ic-classification-banner/ic-classification-banner.js +2 -2
  108. package/dist/collection/components/ic-data-list/ic-data-list.js +2 -2
  109. package/dist/collection/components/ic-data-row/ic-data-row.js +2 -2
  110. package/dist/collection/components/ic-dialog/ic-dialog.css +2 -1
  111. package/dist/collection/components/ic-dialog/ic-dialog.js +1 -1
  112. package/dist/collection/components/ic-divider/ic-divider.css +7 -4
  113. package/dist/collection/components/ic-empty-state/ic-empty-state.js +2 -2
  114. package/dist/collection/components/ic-footer/ic-footer.js +3 -3
  115. package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
  116. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.css +0 -3
  117. package/dist/collection/components/ic-hero/ic-hero.js +4 -4
  118. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +5 -5
  119. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -3
  120. package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
  121. package/dist/collection/components/ic-input-label/ic-input-label.js +4 -4
  122. package/dist/collection/components/ic-input-validation/ic-input-validation.js +3 -3
  123. package/dist/collection/components/ic-link/ic-link.js +1 -1
  124. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +3 -3
  125. package/dist/collection/components/ic-menu/ic-menu.js +3 -3
  126. package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
  127. package/dist/collection/components/ic-menu-item/ic-menu-item.css +2 -0
  128. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +2 -2
  129. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +0 -4
  130. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +1 -1
  131. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +20 -1
  132. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +11 -6
  133. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  134. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -4
  135. package/dist/collection/components/ic-page-header/ic-page-header.js +6 -6
  136. package/dist/collection/components/ic-pagination/ic-pagination.js +4 -4
  137. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +1 -1
  138. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +4 -4
  139. package/dist/collection/components/ic-radio-group/ic-radio-group.js +4 -4
  140. package/dist/collection/components/ic-radio-option/ic-radio-option.css +2 -1
  141. package/dist/collection/components/ic-radio-option/ic-radio-option.js +4 -4
  142. package/dist/collection/components/ic-search-bar/ic-search-bar.js +9 -9
  143. package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
  144. package/dist/collection/components/ic-select/ic-select.js +45 -48
  145. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  146. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +2 -1
  147. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +4 -4
  148. package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
  149. package/dist/collection/components/ic-skip-link/ic-skip-link.js +31 -3
  150. package/dist/collection/components/ic-skip-link/ic-skip-link.js.map +1 -1
  151. package/dist/collection/components/ic-status-tag/ic-status-tag.css +6 -0
  152. package/dist/collection/components/ic-status-tag/ic-status-tag.js +2 -2
  153. package/dist/collection/components/ic-step/ic-step.css +0 -3
  154. package/dist/collection/components/ic-step/ic-step.js +13 -13
  155. package/dist/collection/components/ic-stepper/ic-stepper.js +2 -2
  156. package/dist/collection/components/ic-switch/ic-switch.js +4 -4
  157. package/dist/collection/components/ic-tab/ic-tab.js +2 -2
  158. package/dist/collection/components/ic-tab-context/ic-tab-context.js +1 -1
  159. package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -2
  160. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
  161. package/dist/collection/components/ic-text-field/ic-text-field.js +6 -6
  162. package/dist/collection/components/ic-theme/ic-theme.js +31 -3
  163. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  164. package/dist/collection/components/ic-toast/ic-toast.js +3 -3
  165. package/dist/collection/components/ic-toast-region/ic-toast-region.js +1 -1
  166. package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +6 -8
  167. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +2 -2
  168. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +2 -2
  169. package/dist/collection/components/ic-tooltip/ic-tooltip.js +32 -2
  170. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  171. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +3 -1
  172. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +4 -4
  173. package/dist/collection/components/ic-typography/ic-typography.css +2 -2
  174. package/dist/collection/components/ic-typography/ic-typography.js +2 -2
  175. package/dist/collection/utils/helpers.js +15 -36
  176. package/dist/collection/utils/helpers.js.map +1 -1
  177. package/dist/collection/utils/types.js.map +1 -1
  178. package/dist/components/helpers.js +16 -37
  179. package/dist/components/helpers.js.map +1 -1
  180. package/dist/components/ic-accordion-group.js.map +1 -1
  181. package/dist/components/ic-accordion.js.map +1 -1
  182. package/dist/components/ic-alert.js +66 -37
  183. package/dist/components/ic-alert.js.map +1 -1
  184. package/dist/components/ic-back-to-top.js +3 -3
  185. package/dist/components/ic-badge.js +39 -15
  186. package/dist/components/ic-badge.js.map +1 -1
  187. package/dist/components/ic-breadcrumb-group.js +2 -2
  188. package/dist/components/ic-breadcrumb2.js +2 -2
  189. package/dist/components/ic-button2.js +1 -1
  190. package/dist/components/ic-button2.js.map +1 -1
  191. package/dist/components/ic-card-vertical.js +5 -5
  192. package/dist/components/ic-card-vertical.js.map +1 -1
  193. package/dist/components/ic-checkbox-group.js +4 -4
  194. package/dist/components/ic-checkbox.js +6 -6
  195. package/dist/components/ic-checkbox.js.map +1 -1
  196. package/dist/components/ic-chip.js +3 -3
  197. package/dist/components/ic-classification-banner.js +2 -2
  198. package/dist/components/ic-data-list.js +2 -2
  199. package/dist/components/ic-data-row.js +3 -3
  200. package/dist/components/ic-dialog.js +2 -2
  201. package/dist/components/ic-dialog.js.map +1 -1
  202. package/dist/components/ic-divider2.js +2 -2
  203. package/dist/components/ic-divider2.js.map +1 -1
  204. package/dist/components/ic-empty-state.js +2 -2
  205. package/dist/components/ic-footer-link-group.js +1 -1
  206. package/dist/components/ic-footer-link-group.js.map +1 -1
  207. package/dist/components/ic-footer-link.js +2 -2
  208. package/dist/components/ic-footer.js +4 -4
  209. package/dist/components/ic-hero.js +5 -5
  210. package/dist/components/ic-horizontal-scroll2.js +6 -6
  211. package/dist/components/ic-input-component-container2.js +4 -4
  212. package/dist/components/ic-input-container2.js +2 -2
  213. package/dist/components/ic-input-label2.js +5 -5
  214. package/dist/components/ic-input-validation2.js +4 -4
  215. package/dist/components/ic-link2.js +1 -1
  216. package/dist/components/ic-loading-indicator2.js +3 -3
  217. package/dist/components/ic-menu-group.js +1 -1
  218. package/dist/components/ic-menu-item2.js.map +1 -1
  219. package/dist/components/ic-menu2.js +4 -4
  220. package/dist/components/ic-navigation-button.js +2 -2
  221. package/dist/components/ic-navigation-group.js +3 -3
  222. package/dist/components/ic-navigation-group.js.map +1 -1
  223. package/dist/components/ic-navigation-item.js +12 -7
  224. package/dist/components/ic-navigation-item.js.map +1 -1
  225. package/dist/components/ic-navigation-menu2.js +5 -5
  226. package/dist/components/ic-page-header.js +6 -6
  227. package/dist/components/ic-pagination-item2.js +2 -2
  228. package/dist/components/ic-pagination.js +4 -4
  229. package/dist/components/ic-popover-menu.js +4 -4
  230. package/dist/components/ic-popover-menu.js.map +1 -1
  231. package/dist/components/ic-radio-group.js +5 -5
  232. package/dist/components/ic-radio-option.js +6 -6
  233. package/dist/components/ic-radio-option.js.map +1 -1
  234. package/dist/components/ic-search-bar.js +10 -10
  235. package/dist/components/ic-section-container2.js +2 -2
  236. package/dist/components/ic-select.js +46 -49
  237. package/dist/components/ic-select.js.map +1 -1
  238. package/dist/components/ic-side-navigation.js +5 -5
  239. package/dist/components/ic-side-navigation.js.map +1 -1
  240. package/dist/components/ic-skeleton.js +2 -2
  241. package/dist/components/ic-skip-link.js +12 -4
  242. package/dist/components/ic-skip-link.js.map +1 -1
  243. package/dist/components/ic-status-tag.js +2 -2
  244. package/dist/components/ic-status-tag.js.map +1 -1
  245. package/dist/components/ic-step.js +14 -14
  246. package/dist/components/ic-step.js.map +1 -1
  247. package/dist/components/ic-stepper.js +3 -3
  248. package/dist/components/ic-switch.js +5 -5
  249. package/dist/components/ic-tab-context.js +1 -1
  250. package/dist/components/ic-tab-group.js +2 -2
  251. package/dist/components/ic-tab-panel.js +2 -2
  252. package/dist/components/ic-tab-panel.js.map +1 -1
  253. package/dist/components/ic-tab.js +2 -2
  254. package/dist/components/ic-text-field.js +7 -7
  255. package/dist/components/ic-theme.js +3 -1
  256. package/dist/components/ic-theme.js.map +1 -1
  257. package/dist/components/ic-toast-region.js +1 -1
  258. package/dist/components/ic-toast.js +4 -4
  259. package/dist/components/ic-toggle-button-group.js +2 -2
  260. package/dist/components/ic-toggle-button.js +3 -3
  261. package/dist/components/ic-toggle-button.js.map +1 -1
  262. package/dist/components/ic-tooltip2.js +30 -2
  263. package/dist/components/ic-tooltip2.js.map +1 -1
  264. package/dist/components/ic-top-navigation.js +5 -5
  265. package/dist/components/ic-top-navigation.js.map +1 -1
  266. package/dist/components/ic-typography2.js +3 -3
  267. package/dist/components/ic-typography2.js.map +1 -1
  268. package/dist/core/core.css +1 -1
  269. package/dist/core/core.esm.js +1 -1
  270. package/dist/core/core.esm.js.map +1 -1
  271. package/dist/core/{p-c9726fbd.entry.js → p-005cd8a8.entry.js} +2 -2
  272. package/dist/core/p-005cd8a8.entry.js.map +1 -0
  273. package/dist/core/p-0631c3ab.entry.js +2 -0
  274. package/dist/core/p-0631c3ab.entry.js.map +1 -0
  275. package/dist/core/{p-5e1fd097.entry.js → p-0a8b3967.entry.js} +2 -2
  276. package/dist/core/{p-f43f411a.entry.js → p-0b4350df.entry.js} +2 -2
  277. package/dist/core/p-0e618fc5.entry.js +2 -0
  278. package/dist/core/{p-811d447b.entry.js.map → p-0e618fc5.entry.js.map} +1 -1
  279. package/dist/core/p-18ecba80.entry.js +2 -0
  280. package/dist/core/{p-a794b724.entry.js.map → p-18ecba80.entry.js.map} +1 -1
  281. package/dist/core/{p-f34efc17.entry.js → p-1e4cdd2d.entry.js} +2 -2
  282. package/dist/core/{p-a71055c9.entry.js → p-23d059ff.entry.js} +2 -2
  283. package/dist/core/{p-071f4748.entry.js → p-23ed8b99.entry.js} +2 -2
  284. package/dist/core/{p-ed8957da.js → p-281ce313.js} +2 -2
  285. package/dist/core/p-281ce313.js.map +1 -0
  286. package/dist/core/{p-49768069.entry.js → p-30abe545.entry.js} +2 -2
  287. package/dist/core/p-3132270d.entry.js +2 -0
  288. package/dist/core/p-3132270d.entry.js.map +1 -0
  289. package/dist/core/{p-1ac08e6d.entry.js → p-33c86ba6.entry.js} +2 -2
  290. package/dist/core/p-3675c4b4.entry.js +2 -0
  291. package/dist/core/p-3675c4b4.entry.js.map +1 -0
  292. package/dist/core/{p-a20a7cd3.entry.js → p-3b5d3e24.entry.js} +2 -2
  293. package/dist/core/{p-972671ea.entry.js → p-3eb7ef1d.entry.js} +2 -2
  294. package/dist/core/{p-110486f0.entry.js → p-40f2f58e.entry.js} +2 -2
  295. package/dist/core/p-4245a976.entry.js +2 -0
  296. package/dist/core/p-4245a976.entry.js.map +1 -0
  297. package/dist/core/{p-264ce7a0.entry.js → p-44e4e8c1.entry.js} +2 -2
  298. package/dist/core/p-44e4e8c1.entry.js.map +1 -0
  299. package/dist/core/{p-5c349c9d.entry.js → p-45432bf5.entry.js} +2 -2
  300. package/dist/core/p-45432bf5.entry.js.map +1 -0
  301. package/dist/core/p-4b601e06.entry.js +2 -0
  302. package/dist/core/p-4b601e06.entry.js.map +1 -0
  303. package/dist/core/{p-fa02a267.entry.js → p-4b6818d9.entry.js} +2 -2
  304. package/dist/core/p-517d7afb.entry.js +2 -0
  305. package/dist/core/p-517d7afb.entry.js.map +1 -0
  306. package/dist/core/{p-a103068b.entry.js → p-5206a978.entry.js} +2 -2
  307. package/dist/core/p-5d4b0480.entry.js +2 -0
  308. package/dist/core/p-5d4b0480.entry.js.map +1 -0
  309. package/dist/core/{p-1f455336.entry.js → p-5e18b899.entry.js} +2 -2
  310. package/dist/core/{p-0e96d4d8.entry.js → p-6337fe1f.entry.js} +2 -2
  311. package/dist/core/p-6337fe1f.entry.js.map +1 -0
  312. package/dist/core/p-63fe83ad.entry.js +2 -0
  313. package/dist/core/p-63fe83ad.entry.js.map +1 -0
  314. package/dist/core/{p-7e79bd0e.entry.js → p-6de6b6b7.entry.js} +2 -2
  315. package/dist/core/p-70700c7a.entry.js +2 -0
  316. package/dist/core/{p-20c4d90b.entry.js → p-7a0d238b.entry.js} +2 -2
  317. package/dist/core/{p-10cd26dc.entry.js → p-7afc71d0.entry.js} +2 -2
  318. package/dist/core/{p-10cd26dc.entry.js.map → p-7afc71d0.entry.js.map} +1 -1
  319. package/dist/core/{p-69e4daec.entry.js → p-7c0914e7.entry.js} +2 -2
  320. package/dist/core/{p-0d016565.entry.js → p-7dfe0284.entry.js} +2 -2
  321. package/dist/core/p-81a12e36.entry.js +2 -0
  322. package/dist/core/p-81a12e36.entry.js.map +1 -0
  323. package/dist/core/p-88924aef.entry.js +2 -0
  324. package/dist/core/p-88924aef.entry.js.map +1 -0
  325. package/dist/core/p-8ba129fc.entry.js +2 -0
  326. package/dist/core/p-8ba129fc.entry.js.map +1 -0
  327. package/dist/core/{p-85734ebf.entry.js → p-950db960.entry.js} +2 -2
  328. package/dist/core/p-950db960.entry.js.map +1 -0
  329. package/dist/core/{p-44e32417.entry.js → p-959a9cdf.entry.js} +2 -2
  330. package/dist/core/p-9ea9a4ce.entry.js +2 -0
  331. package/dist/core/p-9ea9a4ce.entry.js.map +1 -0
  332. package/dist/core/p-a9c96e3e.entry.js +2 -0
  333. package/dist/core/p-a9c96e3e.entry.js.map +1 -0
  334. package/dist/core/{p-74600ed8.entry.js → p-abaea607.entry.js} +2 -2
  335. package/dist/core/{p-85b7d931.entry.js → p-ac7db165.entry.js} +2 -2
  336. package/dist/core/p-ac7db165.entry.js.map +1 -0
  337. package/dist/core/p-acebb05c.entry.js +2 -0
  338. package/dist/core/p-acebb05c.entry.js.map +1 -0
  339. package/dist/core/{p-37df68fe.entry.js → p-b3ac38c5.entry.js} +2 -2
  340. package/dist/core/{p-17cf7b50.entry.js → p-b3d6d5be.entry.js} +2 -2
  341. package/dist/core/{p-729745d3.entry.js → p-bbe5596b.entry.js} +2 -2
  342. package/dist/core/p-c04f36c5.entry.js +2 -0
  343. package/dist/core/{p-4f2a1950.entry.js → p-c2ca6274.entry.js} +2 -2
  344. package/dist/core/p-c62318a8.entry.js +2 -0
  345. package/dist/core/{p-2537f33e.entry.js.map → p-c62318a8.entry.js.map} +1 -1
  346. package/dist/core/{p-701696aa.entry.js → p-de43d375.entry.js} +2 -2
  347. package/dist/core/{p-2b1a331b.entry.js → p-e2f893f0.entry.js} +2 -2
  348. package/dist/core/{p-d9aec0dd.entry.js → p-e56d0db2.entry.js} +2 -2
  349. package/dist/core/{p-33243fff.entry.js → p-e586ae7b.entry.js} +2 -2
  350. package/dist/core/{p-45595f98.entry.js → p-ef09b450.entry.js} +2 -2
  351. package/dist/core/p-ef09b450.entry.js.map +1 -0
  352. package/dist/core/{p-50f4d151.entry.js → p-f34eee68.entry.js} +2 -2
  353. package/dist/core/{p-8b268274.entry.js → p-f3c72ffb.entry.js} +2 -2
  354. package/dist/core/{p-8856dff4.entry.js → p-f815f8c9.entry.js} +2 -2
  355. package/dist/core/{p-a55e7988.entry.js → p-fbde763c.entry.js} +2 -2
  356. package/dist/core/p-fc50d582.entry.js +2 -0
  357. package/dist/core/p-fc50d582.entry.js.map +1 -0
  358. package/dist/core/{p-78e7a859.entry.js → p-fe833509.entry.js} +2 -2
  359. package/dist/esm/core.js +1 -1
  360. package/dist/esm/{helpers-dd035d0d.js → helpers-46a2d1fd.js} +17 -38
  361. package/dist/esm/helpers-46a2d1fd.js.map +1 -0
  362. package/dist/esm/ic-accordion-group.entry.js +1 -1
  363. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  364. package/dist/esm/ic-accordion.entry.js +1 -1
  365. package/dist/esm/ic-accordion.entry.js.map +1 -1
  366. package/dist/esm/ic-alert.entry.js +63 -36
  367. package/dist/esm/ic-alert.entry.js.map +1 -1
  368. package/dist/esm/ic-back-to-top.entry.js +4 -4
  369. package/dist/esm/ic-badge.entry.js +40 -16
  370. package/dist/esm/ic-badge.entry.js.map +1 -1
  371. package/dist/esm/ic-breadcrumb-group.entry.js +3 -3
  372. package/dist/esm/ic-breadcrumb.entry.js +3 -3
  373. package/dist/esm/ic-button_3.entry.js +32 -7
  374. package/dist/esm/ic-button_3.entry.js.map +1 -1
  375. package/dist/esm/ic-card-vertical.entry.js +6 -6
  376. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  377. package/dist/esm/ic-checkbox-group.entry.js +4 -4
  378. package/dist/esm/ic-checkbox.entry.js +6 -6
  379. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  380. package/dist/esm/ic-chip.entry.js +4 -4
  381. package/dist/esm/ic-classification-banner.entry.js +2 -2
  382. package/dist/esm/ic-data-list.entry.js +2 -2
  383. package/dist/esm/ic-data-row.entry.js +3 -3
  384. package/dist/esm/ic-dialog.entry.js +3 -3
  385. package/dist/esm/ic-dialog.entry.js.map +1 -1
  386. package/dist/esm/ic-divider.entry.js +2 -2
  387. package/dist/esm/ic-divider.entry.js.map +1 -1
  388. package/dist/esm/ic-empty-state.entry.js +3 -3
  389. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  390. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  391. package/dist/esm/ic-footer-link.entry.js +3 -3
  392. package/dist/esm/ic-footer.entry.js +4 -4
  393. package/dist/esm/ic-hero.entry.js +5 -5
  394. package/dist/esm/ic-horizontal-scroll.entry.js +6 -6
  395. package/dist/esm/ic-input-component-container_3.entry.js +9 -9
  396. package/dist/esm/ic-input-label_2.entry.js +8 -8
  397. package/dist/esm/ic-link.entry.js +2 -2
  398. package/dist/esm/ic-menu-group.entry.js +2 -2
  399. package/dist/esm/ic-menu-item.entry.js +1 -1
  400. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  401. package/dist/esm/ic-navigation-button.entry.js +3 -3
  402. package/dist/esm/ic-navigation-group.entry.js +3 -3
  403. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  404. package/dist/esm/ic-navigation-item.entry.js +12 -7
  405. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  406. package/dist/esm/ic-navigation-menu.entry.js +5 -5
  407. package/dist/esm/ic-page-header.entry.js +7 -7
  408. package/dist/esm/ic-pagination-item.entry.js +2 -2
  409. package/dist/esm/ic-pagination.entry.js +5 -5
  410. package/dist/esm/ic-popover-menu.entry.js +5 -5
  411. package/dist/esm/ic-radio-group.entry.js +5 -5
  412. package/dist/esm/ic-radio-option.entry.js +6 -6
  413. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  414. package/dist/esm/ic-search-bar.entry.js +10 -10
  415. package/dist/esm/ic-section-container.entry.js +2 -2
  416. package/dist/esm/ic-select.entry.js +46 -49
  417. package/dist/esm/ic-select.entry.js.map +1 -1
  418. package/dist/esm/ic-side-navigation.entry.js +5 -5
  419. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  420. package/dist/esm/ic-skeleton.entry.js +2 -2
  421. package/dist/esm/ic-skip-link.entry.js +10 -3
  422. package/dist/esm/ic-skip-link.entry.js.map +1 -1
  423. package/dist/esm/ic-status-tag.entry.js +3 -3
  424. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  425. package/dist/esm/ic-step.entry.js +15 -15
  426. package/dist/esm/ic-step.entry.js.map +1 -1
  427. package/dist/esm/ic-stepper.entry.js +3 -3
  428. package/dist/esm/ic-switch.entry.js +5 -5
  429. package/dist/esm/ic-tab-context.entry.js +1 -1
  430. package/dist/esm/ic-tab-group.entry.js +3 -3
  431. package/dist/esm/ic-tab-panel.entry.js +2 -2
  432. package/dist/esm/ic-tab.entry.js +3 -3
  433. package/dist/esm/ic-text-field.entry.js +7 -7
  434. package/dist/esm/ic-theme.entry.js +4 -2
  435. package/dist/esm/ic-theme.entry.js.map +1 -1
  436. package/dist/esm/ic-toast-region.entry.js +1 -1
  437. package/dist/esm/ic-toast.entry.js +4 -4
  438. package/dist/esm/ic-toggle-button-group.entry.js +3 -3
  439. package/dist/esm/ic-toggle-button.entry.js +4 -4
  440. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  441. package/dist/esm/ic-top-navigation.entry.js +5 -5
  442. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  443. package/dist/esm/ic-typography.entry.js +4 -4
  444. package/dist/esm/ic-typography.entry.js.map +1 -1
  445. package/dist/esm/loader.js +1 -1
  446. package/dist/types/components/ic-alert/ic-alert.d.ts +17 -9
  447. package/dist/types/components/ic-badge/ic-badge.d.ts +4 -0
  448. package/dist/types/components/ic-select/ic-select.d.ts +1 -0
  449. package/dist/types/components/ic-skip-link/ic-skip-link.d.ts +5 -0
  450. package/dist/types/components/ic-theme/ic-theme.d.ts +6 -2
  451. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +3 -0
  452. package/dist/types/components.d.ts +20 -11
  453. package/dist/types/utils/helpers.d.ts +5 -1
  454. package/dist/types/utils/types.d.ts +1 -0
  455. package/hydrate/index.js +385 -318
  456. package/hydrate/index.mjs +385 -318
  457. package/package.json +3 -3
  458. package/dist/cjs/helpers-a0a128bd.js.map +0 -1
  459. package/dist/core/p-06d97789.entry.js +0 -2
  460. package/dist/core/p-06d97789.entry.js.map +0 -1
  461. package/dist/core/p-09070f61.entry.js +0 -2
  462. package/dist/core/p-0c0ac69d.entry.js +0 -2
  463. package/dist/core/p-0c0ac69d.entry.js.map +0 -1
  464. package/dist/core/p-0e96d4d8.entry.js.map +0 -1
  465. package/dist/core/p-116ad73d.entry.js +0 -2
  466. package/dist/core/p-116ad73d.entry.js.map +0 -1
  467. package/dist/core/p-1171a945.entry.js +0 -2
  468. package/dist/core/p-1171a945.entry.js.map +0 -1
  469. package/dist/core/p-2537f33e.entry.js +0 -2
  470. package/dist/core/p-264ce7a0.entry.js.map +0 -1
  471. package/dist/core/p-28656111.entry.js +0 -2
  472. package/dist/core/p-28656111.entry.js.map +0 -1
  473. package/dist/core/p-45595f98.entry.js.map +0 -1
  474. package/dist/core/p-4c68494c.entry.js +0 -2
  475. package/dist/core/p-4c68494c.entry.js.map +0 -1
  476. package/dist/core/p-55a37101.entry.js +0 -2
  477. package/dist/core/p-55a37101.entry.js.map +0 -1
  478. package/dist/core/p-5c349c9d.entry.js.map +0 -1
  479. package/dist/core/p-73fc198f.entry.js +0 -2
  480. package/dist/core/p-73fc198f.entry.js.map +0 -1
  481. package/dist/core/p-7eaf8da8.entry.js +0 -2
  482. package/dist/core/p-811d447b.entry.js +0 -2
  483. package/dist/core/p-85734ebf.entry.js.map +0 -1
  484. package/dist/core/p-85b7d931.entry.js.map +0 -1
  485. package/dist/core/p-98328cb9.entry.js +0 -2
  486. package/dist/core/p-98328cb9.entry.js.map +0 -1
  487. package/dist/core/p-a22658fb.entry.js +0 -2
  488. package/dist/core/p-a22658fb.entry.js.map +0 -1
  489. package/dist/core/p-a794b724.entry.js +0 -2
  490. package/dist/core/p-b21b4fea.entry.js +0 -2
  491. package/dist/core/p-b21b4fea.entry.js.map +0 -1
  492. package/dist/core/p-b953b22f.entry.js +0 -2
  493. package/dist/core/p-b953b22f.entry.js.map +0 -1
  494. package/dist/core/p-c9726fbd.entry.js.map +0 -1
  495. package/dist/core/p-d981598e.entry.js +0 -2
  496. package/dist/core/p-d981598e.entry.js.map +0 -1
  497. package/dist/core/p-ed8957da.js.map +0 -1
  498. package/dist/core/p-f3315216.entry.js +0 -2
  499. package/dist/core/p-f3315216.entry.js.map +0 -1
  500. package/dist/core/p-ff995eb8.entry.js +0 -2
  501. package/dist/core/p-ff995eb8.entry.js.map +0 -1
  502. package/dist/esm/helpers-dd035d0d.js.map +0 -1
  503. /package/dist/core/{p-5e1fd097.entry.js.map → p-0a8b3967.entry.js.map} +0 -0
  504. /package/dist/core/{p-f43f411a.entry.js.map → p-0b4350df.entry.js.map} +0 -0
  505. /package/dist/core/{p-f34efc17.entry.js.map → p-1e4cdd2d.entry.js.map} +0 -0
  506. /package/dist/core/{p-a71055c9.entry.js.map → p-23d059ff.entry.js.map} +0 -0
  507. /package/dist/core/{p-071f4748.entry.js.map → p-23ed8b99.entry.js.map} +0 -0
  508. /package/dist/core/{p-49768069.entry.js.map → p-30abe545.entry.js.map} +0 -0
  509. /package/dist/core/{p-1ac08e6d.entry.js.map → p-33c86ba6.entry.js.map} +0 -0
  510. /package/dist/core/{p-a20a7cd3.entry.js.map → p-3b5d3e24.entry.js.map} +0 -0
  511. /package/dist/core/{p-972671ea.entry.js.map → p-3eb7ef1d.entry.js.map} +0 -0
  512. /package/dist/core/{p-110486f0.entry.js.map → p-40f2f58e.entry.js.map} +0 -0
  513. /package/dist/core/{p-fa02a267.entry.js.map → p-4b6818d9.entry.js.map} +0 -0
  514. /package/dist/core/{p-a103068b.entry.js.map → p-5206a978.entry.js.map} +0 -0
  515. /package/dist/core/{p-1f455336.entry.js.map → p-5e18b899.entry.js.map} +0 -0
  516. /package/dist/core/{p-7e79bd0e.entry.js.map → p-6de6b6b7.entry.js.map} +0 -0
  517. /package/dist/core/{p-09070f61.entry.js.map → p-70700c7a.entry.js.map} +0 -0
  518. /package/dist/core/{p-20c4d90b.entry.js.map → p-7a0d238b.entry.js.map} +0 -0
  519. /package/dist/core/{p-69e4daec.entry.js.map → p-7c0914e7.entry.js.map} +0 -0
  520. /package/dist/core/{p-0d016565.entry.js.map → p-7dfe0284.entry.js.map} +0 -0
  521. /package/dist/core/{p-44e32417.entry.js.map → p-959a9cdf.entry.js.map} +0 -0
  522. /package/dist/core/{p-74600ed8.entry.js.map → p-abaea607.entry.js.map} +0 -0
  523. /package/dist/core/{p-37df68fe.entry.js.map → p-b3ac38c5.entry.js.map} +0 -0
  524. /package/dist/core/{p-17cf7b50.entry.js.map → p-b3d6d5be.entry.js.map} +0 -0
  525. /package/dist/core/{p-729745d3.entry.js.map → p-bbe5596b.entry.js.map} +0 -0
  526. /package/dist/core/{p-7eaf8da8.entry.js.map → p-c04f36c5.entry.js.map} +0 -0
  527. /package/dist/core/{p-4f2a1950.entry.js.map → p-c2ca6274.entry.js.map} +0 -0
  528. /package/dist/core/{p-701696aa.entry.js.map → p-de43d375.entry.js.map} +0 -0
  529. /package/dist/core/{p-2b1a331b.entry.js.map → p-e2f893f0.entry.js.map} +0 -0
  530. /package/dist/core/{p-d9aec0dd.entry.js.map → p-e56d0db2.entry.js.map} +0 -0
  531. /package/dist/core/{p-33243fff.entry.js.map → p-e586ae7b.entry.js.map} +0 -0
  532. /package/dist/core/{p-50f4d151.entry.js.map → p-f34eee68.entry.js.map} +0 -0
  533. /package/dist/core/{p-8b268274.entry.js.map → p-f3c72ffb.entry.js.map} +0 -0
  534. /package/dist/core/{p-8856dff4.entry.js.map → p-f815f8c9.entry.js.map} +0 -0
  535. /package/dist/core/{p-a55e7988.entry.js.map → p-fbde763c.entry.js.map} +0 -0
  536. /package/dist/core/{p-78e7a859.entry.js.map → p-fe833509.entry.js.map} +0 -0
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-d337cd8a.js');
6
- const helpers = require('./helpers-a0a128bd.js');
6
+ const helpers = require('./helpers-789082d4.js');
7
7
 
8
8
  const Expand = `<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
9
9
  <path d="M7 9.5L12 14.5L17 9.5H7Z" fill="currentColor" />
@@ -202,6 +202,39 @@ const Select = class {
202
202
  clearTimeout(this.debounceIcInput);
203
203
  this.debounceIcInput = window.setTimeout(() => this.icInput.emit({ value }), this.currDebounce);
204
204
  };
205
+ this.setOptions = () => {
206
+ if (!this.hasTimedOut && this.options !== this.noOptions) {
207
+ this.loading = false;
208
+ clearTimeout(this.timeoutTimer);
209
+ if (this.options.length > 0) {
210
+ this.setOptionsValuesFromLabels();
211
+ this.uniqueOptions = this.deduplicateOptions(this.options);
212
+ this.filteredOptions = this.uniqueOptions;
213
+ }
214
+ else {
215
+ this.noOptions = [{ label: this.emptyOptionListText, value: "" }];
216
+ this.uniqueOptions = this.noOptions;
217
+ this.filteredOptions = this.noOptions;
218
+ }
219
+ if (this.isExternalFiltering()) {
220
+ // When searchable select
221
+ this.noOptions = null;
222
+ this.updateSearchableSelectResultAriaLive();
223
+ this.setDefaultValue();
224
+ }
225
+ else {
226
+ if (this.initialOptionsEmpty) {
227
+ this.setDefaultValue();
228
+ this.initialOptionsEmpty = false;
229
+ }
230
+ }
231
+ }
232
+ else {
233
+ if (!this.searchable) {
234
+ this.options = this.noOptions || [];
235
+ }
236
+ }
237
+ };
205
238
  /**
206
239
  * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn
207
240
  * @param options array of IcMenuOptions
@@ -456,11 +489,7 @@ const Select = class {
456
489
  };
457
490
  this.handleCharacterKeyDown = (key) => {
458
491
  // Only close menu when space is pressed if not being used alongside character keys to quickly select options
459
- if (this.open &&
460
- key === " " &&
461
- this.pressedCharacters.length === 0 &&
462
- !this.hasTimedOut &&
463
- !this.loading) {
492
+ if (this.open && key === " " && this.pressedCharacters.length === 0) {
464
493
  this.setMenuChange(false);
465
494
  }
466
495
  if (key.length === 1 && !this.searchable) {
@@ -724,43 +753,10 @@ const Select = class {
724
753
  helpers.removeDisabledFalse(this.disabled, this.el);
725
754
  }
726
755
  loadingHandler(newValue) {
727
- newValue && this.triggerLoading();
756
+ newValue ? this.triggerLoading() : this.setOptions();
728
757
  }
729
758
  watchOptionsHandler() {
730
- if (!this.hasTimedOut && this.options !== this.noOptions) {
731
- this.loading = false;
732
- clearTimeout(this.timeoutTimer);
733
- if (this.isExternalFiltering()) {
734
- // When searchable select
735
- if (this.options.length > 0) {
736
- this.setOptionsValuesFromLabels();
737
- this.noOptions = null;
738
- this.uniqueOptions = this.deduplicateOptions(this.options);
739
- this.filteredOptions = this.uniqueOptions;
740
- }
741
- else {
742
- this.noOptions = [{ label: this.emptyOptionListText, value: "" }];
743
- this.uniqueOptions = this.noOptions;
744
- this.filteredOptions = this.noOptions;
745
- }
746
- this.updateSearchableSelectResultAriaLive();
747
- this.setDefaultValue();
748
- }
749
- else {
750
- this.setOptionsValuesFromLabels();
751
- this.uniqueOptions = this.deduplicateOptions(this.options);
752
- this.filteredOptions = this.uniqueOptions;
753
- if (this.initialOptionsEmpty) {
754
- this.setDefaultValue();
755
- this.initialOptionsEmpty = false;
756
- }
757
- }
758
- }
759
- else {
760
- if (!this.searchable) {
761
- this.options = this.noOptions || [];
762
- }
763
- }
759
+ this.setOptions();
764
760
  }
765
761
  debounceChangedHandler(newValue) {
766
762
  this.updateOnChangeDebounce(newValue);
@@ -875,17 +871,17 @@ const Select = class {
875
871
  const isClearable = !disabled &&
876
872
  (searchable
877
873
  ? this.searchableSelectInputValue
878
- : currValue && showClearButton);
879
- return (index.h(index.Host, { key: '0c1e3c9c3f0f02e6c90f477a92227645bbb383be', class: {
874
+ : currValue && !this.loading && showClearButton);
875
+ return (index.h(index.Host, { key: '75cf0d014983dd89d440f68080f01333e6c265ee', class: {
880
876
  "ic-select-disabled": !!disabled,
881
877
  "ic-select-searchable": !!searchable,
882
878
  [`ic-select-${size}`]: size !== "medium",
883
879
  "ic-select-full-width": !!fullWidth,
884
880
  [`ic-theme-${theme}`]: theme !== "inherit",
885
- }, onBlur: this.onBlur }, index.h("ic-input-container", { key: 'd5717cb6d0f74236066e5d21979d19a52d39afcd', readonly: readonly }, !hideLabel && (index.h("ic-input-label", { key: '1bcbd58fcdad81bc02911dc405b554aa03552b6b', for: this.inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly })), index.h("ic-input-component-container", { key: '72401753a0b711ba9ff7f5b574085fd5fc3e2215', ref: (el) => (this.anchorEl = el), class: { "menu-open": this.open }, size: size, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, showLeftIcon && (index.h("span", { key: 'b1d8d94dddea38195ca54d546e894aef314698ee', slot: "left-icon", class: {
881
+ }, onBlur: this.onBlur }, index.h("ic-input-container", { key: 'eb714cd9445894ca8fd3be546308f19f32d1b54c', readonly: readonly }, !hideLabel && (index.h("ic-input-label", { key: 'b458a202cdce6dcfad3d92da57714aa44f73d886', for: this.inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly })), index.h("ic-input-component-container", { key: '4ac767a175604d7e4f86fa46945fc028be835ff2', ref: (el) => (this.anchorEl = el), class: { "menu-open": this.open }, size: size, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, showLeftIcon && (index.h("span", { key: '7ac05ef11cda6c03db0b1b9f4573a704581524e0', slot: "left-icon", class: {
886
882
  ["readonly"]: !!readonly,
887
883
  ["has-value"]: !!this.value,
888
- } }, index.h("slot", { key: '47c722f6b782b628a33c05bad04613ba0ffa17e9', name: "icon" }))), readonly ? (index.h("ic-typography", null, index.h("p", null, valueLabelString))) : helpers.isMobileOrTablet() && !multiple ? (index.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), index.h("option", { value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => {
884
+ } }, index.h("slot", { key: 'f09cffc377cfe7eb76d1b8bc4c83ec632a99b2df', name: "icon" }))), readonly ? (index.h("ic-typography", null, index.h("p", null, valueLabelString))) : helpers.isMobileOrTablet() && !multiple ? (index.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), index.h("option", { value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => {
889
885
  if (option.children) {
890
886
  return (index.h("optgroup", { label: option.label }, option.children.map((option) => (index.h("option", { value: option.value, disabled: option.disabled, selected: option.value === currValue }, option.label)))));
891
887
  }
@@ -895,7 +891,8 @@ const Select = class {
895
891
  }))) : searchable ? (index.h("div", { class: "searchable-select-container" }, index.h("input", { class: {
896
892
  "select-input": true,
897
893
  "with-clear-button": !!this.searchableSelectInputValue,
898
- }, 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 || undefined, placeholder: placeholder, disabled: disabled, onInput: this.handleSearchableSelectInput, onClick: this.handleClick, onKeyDown: this.handleKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, form: this.form }), isClearable && (index.h("div", { class: "clear-button-container" }, index.h("ic-button", { id: "clear-button", ref: (el) => (this.clearButton = el), "aria-label": this.searchableSelectInputValue && currValue === null
894
+ }, 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 || undefined, placeholder: placeholder, disabled: disabled, onInput: this.handleSearchableSelectInput, onClick: this.handleClick, onKeyDown: this.handleKeyDown, onFocus: this.onFocus, onBlur: this.onBlur, form: this.form }), isClearable && (index.h("div", { class: "clear-button-container" }, index.h("ic-button", { id: "clear-button", ref: (el) => (this.clearButton = el), "aria-label": this.searchableSelectInputValue &&
895
+ (currValue === null || this.loading)
899
896
  ? "Clear input"
900
897
  : "Clear selection", class: "clear-button", innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearButtonFocus, onBlur: this.handleClearButtonBlur, size: size, variant: "icon", theme: this.clearButtonFocused ? "light" : "dark" }), index.h("div", { class: "divider" }))), index.h("span", { onMouseDown: this.handleExpandIconMouseDown, class: {
901
898
  "expand-icon": true,
@@ -905,13 +902,13 @@ const Select = class {
905
902
  : valueLabelString) || 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 }, index.h("ic-typography", { variant: "body", class: {
906
903
  "value-text": true,
907
904
  "with-clear-button": !!isClearable,
908
- placeholder: multiple
905
+ placeholder: !this.loading && multiple
909
906
  ? !this.value || this.value.length < 1
910
907
  : !this.getLabelFromValue(currValue),
911
908
  } }, valueLabelString || placeholder), index.h("div", { class: "select-input-end" }, isClearable && index.h("div", { class: "divider" }), index.h("span", { class: {
912
909
  "expand-icon": true,
913
910
  "expand-icon-open": this.open,
914
- }, innerHTML: Expand, "aria-hidden": "true" }))), isClearable && (index.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", theme: this.clearButtonFocused ? "light" : "dark" }))))), (!helpers.isMobileOrTablet() || multiple) && (index.h("ic-menu", { key: 'f34f8aeca465e1f2cf7b721c06f58e4a0bab4ac3', class: {
911
+ }, innerHTML: Expand, "aria-hidden": "true" }))), isClearable && (index.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", theme: this.clearButtonFocused ? "light" : "dark" }))))), (!helpers.isMobileOrTablet() || multiple) && (index.h("ic-menu", { key: '60dac9f71d9787ae401f439dbcd013365c33b713', class: {
915
912
  "no-results": this.loading ||
916
913
  this.hasTimedOut ||
917
914
  (this.noOptions !== null &&
@@ -921,7 +918,7 @@ const Select = class {
921
918
  ? this.searchableSelectElement
922
919
  : 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
923
920
  ? "manual"
924
- : "automatic", closeOnSelect: !multiple })), this.multiple && (index.h("div", { key: '4f7d83b5ce52b334acf98de594c02ad34a58f2f6', "aria-live": "polite", role: "status", class: "multi-select-selected-count" })), helpers.hasValidationStatus(this.validationStatus, !!this.disabled) && (index.h("ic-input-validation", { key: '3405974e038368a51105ba901a499e4234df5944', class: { "menu-open": this.open }, ariaLiveMode: "polite", status: validationStatus, message: validationText || "", for: this.inputId })))));
921
+ : "automatic", closeOnSelect: !multiple })), this.multiple && (index.h("div", { key: '876f1da870c48b21130b246afa988c4fccefdfc6', "aria-live": "polite", role: "status", class: "multi-select-selected-count" })), helpers.hasValidationStatus(this.validationStatus, !!this.disabled) && (index.h("ic-input-validation", { key: '657c2433a3ab425432356227e931cafe4268dd8b', class: { "menu-open": this.open }, ariaLiveMode: "polite", status: validationStatus, message: validationText || "", for: this.inputId })))));
925
922
  }
926
923
  static get delegatesFocus() { return true; }
927
924
  get el() { return index.getElement(this); }
@@ -1 +1 @@
1
- {"file":"ic-select.entry.cjs.js","mappings":"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","names":["IC_INHERITED_ARIA","checkSlotInChildMutations","forceUpdate","getLabelFromValue","getFilteredMenuOptions","getOptionsWithoutGroupTitlesCount","removeDisabledFalse","removeFormResetListener","inheritAttributes","addFormResetListener","onComponentRequiredPropUndefined","renderHiddenInput","IcInformationStatus","getInputDescribedByText","hasValidationStatus","h","Host","isMobileOrTablet"],"sources":["src/components/ic-select/ic-select.css?tag=ic-select&encapsulation=shadow","src/components/ic-select/ic-select.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --input-width: Width of the input field\n * @prop --menu-width: Width of the dropdown menu\n * @prop --ic-z-index-menu: z-index of select menu\n */\n\n:host {\n display: block;\n position: relative;\n\n --ic-input-label-helpertext-padding: var(--ic-space-xxs);\n --menu-max-height: 100px;\n --border-color: var(--ic-select-field-border);\n --border-color-hover: var(--ic-select-field-border-hover);\n --border-color-pressed: var(--ic-select-field-border-pressed);\n --border-color-disabled: var(--ic-select-field-border-disabled);\n --border-color-error: var(--ic-select-field-border-error);\n --border-color-error-hover: var(--ic-select-field-border-error-hover);\n --border-color-error-pressed: var(--ic-select-field-border-error-pressed);\n --border-color-success: var(--ic-select-field-border-success);\n --border-color-success-hover: var(--ic-select-field-border-success-hover);\n --border-color-success-pressed: var(--ic-select-field-border-success-pressed);\n --border-color-warning: var(--ic-select-field-border-warning);\n --border-color-warning-hover: var(--ic-select-field-border-warning-hover);\n --border-color-warning-pressed: var(--ic-select-field-border-warning-pressed);\n --ic-input-label-text-color: var(--ic-select-field-labe);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle\n );\n --ic-input-validation-status-text-color: var(--ic-select-state-text);\n --ic-input-validation-error: var(--ic-select-state-icon-error);\n --ic-input-validation-warning-icon-color: var(--ic-select-state-icon-warning);\n --ic-input-validation-success-icon-color: var(--ic-select-state-icon-success);\n --menu-item-text-color: var(--ic-select-list-option-text);\n --menu-bg-color: var(--ic-select-list-option-background);\n --menu-border-color: var(--ic-select-dropdown-list-border);\n}\n\n:host(.ic-select-disabled) {\n --ic-input-label-text-color: var(--ic-select-field-label-disabled);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle-disabled\n );\n}\n\n:host(.ic-select-full-width) {\n width: 100%;\n}\n\nic-input-component-container.menu-open {\n --border-color: var(--ic-select-field-border-pressed);\n}\n\nic-input-validation .status-icon,\nic-input-validation .statustext {\n visibility: visible;\n}\n\nic-input-validation.menu-open .status-icon,\nic-input-validation.menu-open .statustext {\n visibility: hidden;\n transition: visibility 0s;\n}\n\nic-input-label {\n margin-bottom: var(--ic-space-xs) !important;\n}\n\nselect {\n border: 0;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n height: 100%;\n padding-left: 0.375rem;\n appearance: none;\n background-repeat: no-repeat;\n background-position: right 0.375rem center;\n background-image: var(--ic-select-mobile-dropdown-icon);\n caret-color: var(--ic-select-input-field-text-cursor);\n}\n\nselect option,\n.select-option-selected {\n color: var(--ic-select-list-option-text);\n}\n\nselect:disabled {\n color: var(--ic-select-content-text-disabled);\n background-image: var(--ic-select-mobile-dropdown-icon-disabled);\n}\n\nselect:focus {\n border: 0;\n outline: 0;\n}\n\nselect:not([disabled]) {\n cursor: pointer;\n}\n\n.select-container {\n width: 100%;\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.select-input {\n width: 100%;\n height: 100%;\n padding: 0 0.375rem;\n display: flex;\n cursor: pointer;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n}\n\n.select-input:focus {\n outline: none;\n}\n\n.select-input[disabled] {\n pointer-events: none;\n}\n\n:host(.ic-select-searchable) .select-input {\n cursor: auto;\n}\n\n.select-input.with-clear-button {\n padding-right: 0;\n}\n\n.value-text {\n max-width: calc(100% - (var(--ic-space-lg) + var(--ic-space-xxs)));\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n margin-bottom: 0 !important;\n}\n\n.value-text.with-clear-button {\n padding-right: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n.searchable-select-container {\n align-items: center;\n display: flex;\n width: 100%;\n position: relative;\n}\n\n.expand-icon {\n height: var(--ic-space-lg);\n padding-left: var(--ic-space-xxs);\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon > svg {\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-disabled) .expand-icon,\n:host(.ic-select-disabled) .expand-icon > svg > path {\n color: var(--ic-select-disabled-expand-icon-color);\n}\n\n:host(.ic-select-searchable) .expand-icon {\n padding-left: 0;\n height: 2.25rem;\n}\n\n:host(.ic-select-searchable) .expand-icon > svg {\n height: 2.25rem;\n padding: 0 calc(var(--ic-space-xxxs) + var(--ic-space-xxs)) 0\n var(--ic-space-xxs);\n}\n\n:host(.ic-select-searchable:not(.ic-select-disabled)) .expand-icon > svg {\n cursor: pointer;\n}\n\n.expand-icon-open {\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon-open,\n:host(.ic-select-searchable) .expand-icon-open {\n transform: rotateX(180deg);\n}\n\n.placeholder {\n color: var(--ic-select-content-placeholder-text);\n}\n\n:host(.ic-select-disabled) .value-text,\n:host(.ic-select-disabled) .select-input,\n:host(.ic-select-disabled) .placeholder,\n:host(.ic-select-disabled.ic-select-searchable) .select-input::placeholder {\n color: var(--ic-select-content-text-disabled);\n}\n\n.select-input-end {\n display: flex;\n align-items: center;\n}\n\n.clear-button-container {\n display: flex;\n align-items: center;\n}\n\n.divider {\n width: var(--ic-space-1px);\n background-color: var(--ic-select-content-divider);\n margin: var(--ic-space-xxs) 0;\n border-radius: var(--ic-space-1px);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-small) .divider {\n height: var(--ic-space-md);\n}\n\n:host(.ic-select-large) .divider {\n height: var(--ic-space-xl);\n}\n\n.clear-button {\n color: var(--ic-select-clear-button);\n position: absolute;\n right: calc(var(--ic-space-xl) + var(--ic-space-xxs) - var(--ic-space-1px));\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus,\n.clear-button:active {\n background-color: var(--ic-color-focus-inner);\n box-shadow: inset 0 0 0 0.125rem var(--ic-color-focus-outer);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.clear-button:active * {\n fill: var(--ic-atoms-input-clear-button-focus);\n}\n\n.clear-button.searchable {\n position: static;\n}\n\n.searchable-select-results-status,\n.multi-select-selected-count {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: var(--ic-space-1px);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-placeholder-text);\n}\n\n.has-value ::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-text);\n}\n\n.readonly ::slotted([slot=\"icon\"]) {\n padding: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n@media (forced-colors: active) {\n .has-value ::slotted([slot=\"icon\"]) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n h,\n State,\n Watch,\n forceUpdate,\n} from \"@stencil/core\";\n\nimport {\n getInputDescribedByText,\n getLabelFromValue,\n hasValidationStatus,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n isMobileOrTablet,\n getFilteredMenuOptions,\n getOptionsWithoutGroupTitlesCount,\n addFormResetListener,\n removeFormResetListener,\n removeDisabledFalse,\n checkSlotInChildMutations,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcMenuOption,\n IcSearchMatchPositions,\n IcMultiValueEventDetail,\n IcSizes,\n IcThemeMode,\n} from \"../../utils/types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport { IcOptionSelectEventDetail } from \"../ic-menu/ic-menu.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"tabindex\", \"title\"];\n\n/**\n * @slot icon - Content will be placed to the left of the select text input.\n */\n@Component({\n tag: \"ic-select\",\n styleUrl: \"ic-select.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Select {\n private anchorEl?: HTMLElement;\n private blurredBecauseButtonPressed: boolean;\n private characterKeyPressTimer: number;\n private clearButton?: HTMLIcButtonElement;\n private customSelectElement?: HTMLButtonElement;\n private debounceAria: number;\n private hasSetDefaultValue = false;\n private hasTimedOut: boolean;\n private inheritedAttributes: { [k: string]: string } = {};\n private initialOptionsEmpty = false;\n private inputId = `ic-select-input-${inputIds++}`;\n private menu?: HTMLIcMenuElement;\n private menuId = `${this.inputId}-menu`;\n private nativeSelectElement?: HTMLSelectElement;\n private retryButtonClick: boolean;\n private searchableMenuItemSelected: boolean = false;\n private searchableSelectElement?: HTMLInputElement;\n private timeoutTimer: number;\n private ungroupedOptions: IcMenuOption[] = [];\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() debounceIcInput: number;\n @State() hiddenInputValue: string | null;\n @State() noOptions: IcMenuOption[] | null = null;\n @State() open: boolean = false;\n @State() pressedCharacters: string = \"\";\n @State() searchableSelectInputValue: string | null = null;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableAutoFiltering?: boolean = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText?: string = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * If `true`, the select will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * If `true`, descriptions of options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeDescriptionsInSearch?: boolean = false;\n\n /**\n * If `true`, group titles of grouped options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeGroupTitlesInSearch?: boolean = false;\n\n /**\n * The label for the select.\n */\n @Prop() label!: string;\n\n /**\n * The message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel?: string = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel?: string = \"Loading...\";\n\n /**\n * If `true`, multiple options can be selected.\n */\n @Prop() multiple?: boolean = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name?: string = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder?: string = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options. This functionality is only available on the single-select variant of the select component.\n */\n @Prop() searchable?: boolean = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition?: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown on the single select.\n */\n @Prop() selectOnEnter?: boolean = false;\n\n /**\n * If `true`, a button which clears the select input when clicked will be displayed. The button will always appear on the searchable select.\n */\n @Prop() showClearButton?: boolean = false;\n\n /**\n * The size of the select.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * If `true`, the loading state will be triggered when fetching options asynchronously.\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n newValue && this.triggerLoading();\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options?: IcMenuOption[] = [];\n @State() filteredOptions: IcMenuOption[] = this.options!;\n @State() uniqueOptions: IcMenuOption[] = this.options!;\n\n @Watch(\"options\")\n watchOptionsHandler(): void {\n if (!this.hasTimedOut && this.options !== this.noOptions) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n if (this.isExternalFiltering()) {\n // When searchable select\n if (this.options!.length > 0) {\n this.setOptionsValuesFromLabels();\n this.noOptions = null;\n this.uniqueOptions = this.deduplicateOptions(this.options!);\n this.filteredOptions = this.uniqueOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n }\n this.updateSearchableSelectResultAriaLive();\n this.setDefaultValue();\n } else {\n this.setOptionsValuesFromLabels();\n this.uniqueOptions = this.deduplicateOptions(this.options!);\n this.filteredOptions = this.uniqueOptions;\n if (this.initialOptionsEmpty) {\n this.setDefaultValue();\n this.initialOptionsEmpty = false;\n }\n }\n } else {\n if (!this.searchable) {\n this.options = this.noOptions || [];\n }\n }\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icInput` event after each keystroke.\n */\n @Prop() debounce?: number = 0;\n @State() currDebounce = this.debounce;\n\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n this.updateOnChangeDebounce(newValue);\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option.\n * For the searchable variant, the value is also reflected by the user input.\n * For the multi-select variant, the value must be an array of option values.\n */\n @Prop({ mutable: true }) value?: string | string[] | null;\n @State() initialValue = this.value;\n @State() inputValueToFilter: string | null = this.value as string;\n @State() currValue?: string | string[] | null;\n\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n if (this.value && this.multiple) {\n this.currValue = this.getMultipleOptionsString(this.value as string[])\n ? this.getValueSortedByOptions(this.value as string[])\n : null;\n this.updateMultiSelectedCountAriaLive();\n } else {\n this.currValue = this.getLabelFromValue(this.value as string)\n ? this.value\n : null;\n }\n }\n\n if (this.searchable && this.value) {\n // Only set if value not null - prevents whole input value being cleared when edited\n this.searchableSelectInputValue =\n this.getLabelFromValue(String(this.currValue)) || null;\n }\n }\n\n @Watch(\"open\")\n openChangedHandler(): void {\n this.open ? this.icOpen.emit() : this.icClose.emit();\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the clear or clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * Emitted when the select options menu is closed.\n */\n @Event() icClose: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the select options menu is opened.\n */\n @Event() icOpen: EventEmitter<void>;\n\n /**\n * Emitted when an option is selected.\n * Selecting an option will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when `multiple` is `true` and an option is deselected.\n */\n @Event() icOptionDeselect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcMultiValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n const valueInOptions = this.multiple\n ? this.getMultipleOptionsString(this.value as string[])\n : this.getLabelFromValue(this.value as string);\n this.currValue = valueInOptions ? this.value : null;\n this.inheritedAttributes = inheritAttributes(this.el, MUTABLE_ATTRIBUTES);\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.setOptionsValuesFromLabels();\n\n addFormResetListener(this.el, this.handleFormReset);\n\n if (!this.options!.length) {\n this.initialOptionsEmpty = true;\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n } else {\n this.setDefaultValue();\n this.uniqueOptions = this.deduplicateOptions(this.options!);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Select\"\n );\n\n if (this.loading) {\n this.triggerLoading();\n }\n\n if (this.searchable) {\n this.hiddenInputValue = this.currValue as string;\n }\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n }\n\n /**\n * Sets focus on the input box.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.customSelectElement) {\n this.customSelectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (attributeName) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute && MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private handleRetry = (ev: CustomEvent<IcMultiValueEventDetail>) => {\n if (ev.detail.keyPressed) this.searchableSelectElement?.focus();\n this.blurredBecauseButtonPressed = true;\n this.retryButtonClick = true;\n this.hasSetDefaultValue = true;\n this.icRetryLoad.emit({\n value: this.searchable\n ? this.searchableSelectInputValue\n : this.hiddenInputValue,\n });\n };\n\n private updateOnChangeDebounce(newValue: number) {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n private emitIcChange = (value: string | string[] | null) => {\n // If \"Select all\" button clicked, replace value with new value (array of all option values)\n if (this.multiple && !Array.isArray(value) && value !== null) {\n this.handleMultipleSelectChange(String(value));\n } else {\n this.value = value;\n }\n\n const valueToEmit = this.multiple ? this.value : value;\n this.icChange.emit({ value: valueToEmit || null });\n };\n\n private emitIcInput = (value: string) => {\n clearTimeout(this.debounceIcInput);\n this.debounceIcInput = window.setTimeout(\n () => this.icInput.emit({ value }),\n this.currDebounce\n );\n };\n\n /**\n * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn\n * @param options array of IcMenuOptions\n * @returns a new options object, with all entries possessing a duplicate 'value' field removed\n */\n private deduplicateOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n const uniqueValues: string[] = [];\n const dedupedOptions: IcMenuOption[] = [];\n let dedupedChildren: IcMenuOption[];\n\n options.forEach((option: IcMenuOption) => {\n if (option.children) {\n //If an option has children, we will loop through them\n dedupedChildren = [];\n option.children.forEach((child) => {\n if (uniqueValues.includes(child.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${child.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(child.value);\n dedupedChildren.push(child);\n }\n });\n // construct a modified option, inserting the deduplicated children alongside the original information\n const modifiedParent: IcMenuOption = {\n ...option,\n children: dedupedChildren,\n };\n dedupedOptions.push(modifiedParent);\n } else {\n // If an option does not have children, assess to see if it's value has been included already\n if (uniqueValues.includes(option.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${option.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(option.value);\n dedupedOptions.push(option);\n }\n }\n });\n return dedupedOptions;\n };\n\n /**\n * Loop through options array and for all options with no value, infer it from the label\n */\n private setOptionsValuesFromLabels = (): void => {\n if (this.options!.length > 0) {\n this.options!.map((option) => {\n if (!option.value) {\n option.value = option.label;\n }\n });\n }\n };\n\n private setUngroupedOptions = (event: CustomEvent): void => {\n this.ungroupedOptions = event.detail.options;\n };\n\n private setTextColor = (): void => {\n if (this.nativeSelectElement) {\n if (this.nativeSelectElement.selectedIndex === 0) {\n this.nativeSelectElement.className = \"placeholder\";\n } else {\n this.nativeSelectElement.className = \"select-option-selected\";\n }\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n }\n };\n\n private getLabelFromValue = (value: string): string | undefined => {\n return getLabelFromValue(value, this.uniqueOptions);\n };\n\n private getMultipleOptionsString = (selectedValues: string[]) => {\n const selectedLabels = selectedValues\n ?.map((value) => this.getLabelFromValue(value))\n .filter((label) => !!label);\n return selectedLabels?.join(\", \");\n };\n\n private getFilteredChildMenuOptions = (option: IcMenuOption) => {\n let children = option.children;\n\n if (option.children) {\n if (this.searchable) {\n children = getFilteredMenuOptions(\n option.children,\n !!this.includeDescriptionsInSearch,\n this.searchableSelectInputValue || \"\",\n this.searchMatchPosition\n );\n } else {\n children = getFilteredMenuOptions(\n option.children,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n }\n\n const newOption = { ...option };\n newOption.children = children;\n return newOption;\n };\n\n // (For multi-select) get value array, i.e. selected option values, in order they appear in option list\n private getValueSortedByOptions = (value: string[]) => {\n const valueArray = value;\n const valuesFromAllOptions = this.ungroupedOptions.map(\n (option) => option.value\n );\n\n valueArray.sort(\n (a, b) =>\n valuesFromAllOptions.indexOf(a) - valuesFromAllOptions.indexOf(b)\n );\n\n return valueArray;\n };\n\n private handleNativeSelectChange = (): void => {\n if (this.nativeSelectElement) {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitIcChange(this.nativeSelectElement.value);\n }\n this.setTextColor();\n };\n\n // Handle option select for when a custom input box and menu is rendered\n // (rather than native <select> - rendered when viewed on a mobile / tablet screen)\n private handleCustomSelectChange = (event: CustomEvent): void => {\n const value = event.detail.value;\n\n if (event.detail.label === this.emptyOptionListText) {\n this.searchableSelectElement?.focus();\n return;\n }\n\n if (this.searchable) {\n this.value = value;\n this.searchableMenuItemSelected = true;\n\n // After editing the input, if selecting the same option as before, set the input value to label again\n if (this.value === this.currValue) {\n this.searchableSelectInputValue =\n this.getLabelFromValue(this.value as string) || null;\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue =\n this.getValueFromLabel(this.searchableSelectInputValue) || null;\n }\n\n if (this.multiple && this.value?.includes(value)) {\n this.icOptionDeselect.emit({ value });\n } else {\n this.icOptionSelect.emit({ value });\n }\n\n this.ariaActiveDescendant = event.detail.optionId;\n this.emitIcChange(value);\n };\n\n // Update selected options - adds / removes them, in order of option list\n // Create new array if value prop is undefined\n private handleMultipleSelectChange = (value: string) => {\n if (this.value) {\n let valueArray = (this.value as string[]).slice();\n\n if (this.value.includes(value)) {\n const valueIndex = valueArray.indexOf(value);\n valueArray.splice(valueIndex, 1);\n } else {\n valueArray.push(value);\n valueArray = this.getValueSortedByOptions(valueArray);\n }\n\n this.value = valueArray.length === 0 ? null : valueArray;\n } else {\n const valueArray = [];\n valueArray.push(value);\n this.value = valueArray;\n }\n };\n\n private handleSelectAllChange = (event: CustomEvent) => {\n const selectAllOptions = event.detail.select;\n const allEnabledOptions = this.ungroupedOptions.filter(\n (option) => !option.disabled\n );\n const allValues = allEnabledOptions.map((option) => option.value);\n let newValue: string[] | null;\n\n if (selectAllOptions) {\n let unselectedValues;\n\n // Only emit icOptionSelect for all values that are newly selected\n if (this.value) {\n unselectedValues = allValues.filter(\n (value) => this.value && !(this.value as string[]).includes(value)\n );\n } else {\n unselectedValues = allValues;\n }\n\n unselectedValues.forEach((value) => this.icOptionSelect.emit({ value }));\n newValue = allValues;\n } else {\n // Only emit icOptionDeselect for values that were selected\n (this.value as string[]).forEach((value) =>\n this.icOptionDeselect.emit({ value })\n );\n newValue = null;\n }\n\n this.emitIcChange(newValue);\n };\n\n private handleMenuChange = (event: CustomEvent): void => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n\n this.searchable && this.handleFocusIndicatorDisplay();\n };\n\n // clears the debounce delay when navigating the menu with arrow keys etc\n // to prevent delay in change event, which should only occur when typing in input\n private handleMenuKeyPress = (ev: CustomEvent): void => {\n ev.cancelBubble = true;\n if (!this.multiple) {\n this.handleCharacterKeyDown(ev.detail.key);\n }\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator =\n this.el.shadowRoot?.querySelector(\".focus-indicator\");\n\n if (focusIndicator) {\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n }\n };\n\n private handleMouseDown = (event: Event): void => {\n if (!this.open) {\n event.preventDefault();\n }\n };\n\n private isExternalFiltering = (): boolean =>\n this.searchable! && !!this.disableAutoFiltering;\n\n private handleClick = (event: MouseEvent): void => {\n if (!this.open && this.menu) {\n if (this.isExternalFiltering()) {\n this.menu.options = this.filteredOptions;\n } else if (\n !this.hasTimedOut &&\n !this.loading &&\n !this.noOptions?.length &&\n (!this.searchable || this.searchableMenuItemSelected)\n ) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (event.detail !== 0) {\n this.menu?.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement?.focus();\n this.handleClick(event);\n }\n };\n\n private handleClear = (event: Event): void => {\n event.stopPropagation();\n this.hasTimedOut = false;\n clearTimeout(this.timeoutTimer);\n this.clearInput();\n this.emitIcChange(null);\n this.icClear.emit();\n\n if (this.searchable) {\n this.hiddenInputValue = null;\n this.searchableSelectElement?.focus();\n } else {\n this.customSelectElement?.focus();\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (\n this.open &&\n key === \" \" &&\n this.pressedCharacters.length === 0 &&\n !this.hasTimedOut &&\n !this.loading\n ) {\n this.setMenuChange(false);\n }\n\n if (key.length === 1 && !this.searchable) {\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n if (!(key === \" \" && !this.pressedCharacters)) {\n this.pressedCharacters += key;\n this.handleFilter();\n\n if (!this.noOptions) {\n this.emitIcChange(this.filteredOptions[0].value);\n }\n }\n } else {\n this.pressedCharacters = \"\";\n }\n };\n\n private handleNativeSelectKeyDown = (event: KeyboardEvent) => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n this.handleCharacterKeyDown(event.key);\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n const isArrowKey = event.key === \"ArrowDown\" || event.key === \"ArrowUp\";\n\n if (this.menu && !this.open) {\n if (this.isExternalFiltering() && (event.key === \"Enter\" || isArrowKey)) {\n this.menu.options = this.filteredOptions;\n } else {\n if (!this.hasTimedOut) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n }\n\n if (this.open && event.key === \"Enter\") {\n this.setMenuChange(false);\n } else {\n if (!(isArrowKey && this.noOptions !== null)) {\n if (!(event.key === \" \" && this.pressedCharacters.length > 0)) {\n // Keyboard events get passed onto ic-menu\n this.menu?.handleKeyboardOpen(event);\n }\n if (!this.multiple) {\n this.handleCharacterKeyDown(event.key);\n }\n }\n }\n };\n\n private handleClearButtonFocus = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleClearButtonBlur = (ev: FocusEvent): void => {\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n if (\n !(\n this.searchableSelectElement &&\n ev.relatedTarget === this.searchableSelectElement\n ) &&\n !(retryButton && ev.relatedTarget === retryButton)\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n }\n this.clearButtonFocused = false;\n };\n\n private handleFilter = (): void => {\n const options = this.deduplicateOptions(\n this.searchable ? [...this.uniqueOptions] : this.ungroupedOptions\n );\n\n let isGrouped = false;\n let newFilteredOptions: IcMenuOption[] = [];\n\n options.map((option) => {\n if (option.children) isGrouped = true;\n });\n\n let menuOptionsFiltered: IcMenuOption[];\n\n if (this.searchable) {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n !!this.includeDescriptionsInSearch,\n this.inputValueToFilter || \"\",\n this.searchMatchPosition\n );\n this.searchableMenuItemSelected = false;\n } else {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n\n if (\n !isGrouped &&\n menuOptionsFiltered[0]?.label !== this.emptyOptionListText\n ) {\n newFilteredOptions = menuOptionsFiltered;\n } else if (isGrouped) {\n options.map((option) => {\n if (this.includeGroupTitlesInSearch) {\n if (menuOptionsFiltered.indexOf(option) !== -1) {\n newFilteredOptions.push(option);\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n });\n }\n\n let noChildOptionsWhenFiltered = false;\n\n if (isGrouped) {\n noChildOptionsWhenFiltered = true;\n newFilteredOptions.map((option) => {\n if (option.children && option.children.length > 0) {\n noChildOptionsWhenFiltered = false;\n }\n });\n }\n\n if (newFilteredOptions.length > 0 && !noChildOptionsWhenFiltered) {\n this.noOptions = null;\n this.filteredOptions = newFilteredOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.filteredOptions = this.noOptions;\n }\n };\n\n /**\n * Put the select component into loading state.\n * Replace options with the loading message. If timeout is enabled, set the timeout and once passed, replace options with the loading error message\n */\n private triggerLoading = () => {\n this.hasTimedOut = false;\n this.noOptions = [{ label: this.loadingLabel, value: \"\", loading: true }];\n if (this.filteredOptions !== this.noOptions && this.searchable) {\n this.filteredOptions = this.noOptions;\n } else if (this.uniqueOptions !== this.noOptions && !this.searchable) {\n this.uniqueOptions = this.noOptions;\n }\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n this.noOptions = [\n { label: this.loadingErrorLabel, value: \"\", timedOut: true },\n ];\n this.filteredOptions = this.noOptions;\n if (!this.searchable) this.uniqueOptions = this.noOptions;\n }, this.timeout);\n }\n };\n\n private getValueFromLabel = (label: string | null): string | undefined => {\n return (\n label &&\n this.uniqueOptions.find((option) => option.label === label)?.value\n );\n };\n\n private handleSearchableSelectInput = (event: Event): void => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n this.emitIcInput(this.searchableSelectInputValue);\n\n // De-select previous selection when input is edited\n // Only emit icChange once when editing input\n if (this.value != null) {\n this.emitIcChange(null);\n }\n\n this.hiddenInputValue = null;\n this.inputValueToFilter = this.searchableSelectInputValue;\n this.setMenuChange(true);\n\n if (!this.disableAutoFiltering) {\n this.handleFilter();\n this.debounceAriaLiveUpdate();\n }\n };\n\n private updateSearchableSelectResultAriaLive = (): void => {\n const searchableSelectResultsStatusEl = this.el.shadowRoot?.querySelector(\n \".searchable-select-results-status\"\n ) as HTMLDivElement;\n\n if (searchableSelectResultsStatusEl) {\n if (this.noOptions !== null) {\n searchableSelectResultsStatusEl.innerText = this.emptyOptionListText!;\n } else {\n searchableSelectResultsStatusEl.innerText = \"\";\n }\n }\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAria);\n\n window.setTimeout(() => {\n this.updateSearchableSelectResultAriaLive();\n }, 800);\n }\n\n private updateMultiSelectedCountAriaLive = (): void => {\n const multiSelectSelectedCountEl = this.el.shadowRoot?.querySelector(\n \".multi-select-selected-count\"\n ) as HTMLDivElement;\n\n const selectedCount = `${\n this.currValue?.length\n } of ${getOptionsWithoutGroupTitlesCount(this.options!)} selected`;\n\n if (\n multiSelectSelectedCountEl &&\n multiSelectSelectedCountEl.innerText !== selectedCount\n ) {\n multiSelectSelectedCountEl.innerText = selectedCount;\n }\n };\n\n private getDefaultValue = (value: string): string | null =>\n this.getLabelFromValue(value) || null;\n\n private setDefaultValue = (): void => {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue = this.searchable\n ? this.getDefaultValue(this.currValue as string)\n : null;\n\n this.initialValue = this.currValue;\n this.hasSetDefaultValue = true;\n }\n };\n\n private onFocus = (): void => {\n this.icFocus.emit();\n };\n\n private onBlur = ({ relatedTarget }: FocusEvent): void => {\n const target = relatedTarget as HTMLElement;\n if (\n target !== null &&\n ((target.tagName === \"UL\" && target.className.includes(\"menu\")) ||\n (target.tagName === \"LI\" && target.className.includes(\"option\")))\n ) {\n return;\n }\n\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n const isSearchableAndNoFocusedInternalElements =\n this.searchable &&\n !!this.menu &&\n target !== this.menu &&\n !Array.from(this.menu.querySelectorAll(\"[role='option']\")).includes(\n target\n ) &&\n !(this.clearButton && target === this.clearButton) &&\n !(retryButton && target === retryButton);\n\n if (isSearchableAndNoFocusedInternalElements) {\n if (!this.retryButtonClick) {\n this.setMenuChange(false);\n // Clear input field on blur when searchable if no option is selected\n if (!this.value) {\n this.clearInput();\n }\n }\n this.handleFocusIndicatorDisplay();\n }\n\n this.retryButtonClick = false;\n this.icBlur.emit();\n };\n\n private onTimeoutBlur = (ev: CustomEvent) => {\n if (\n (ev.detail.ev as FocusEvent).relatedTarget !==\n this.searchableSelectElement &&\n !this.blurredBecauseButtonPressed\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n this.icBlur.emit();\n }\n this.blurredBecauseButtonPressed = false;\n };\n\n private handleFormReset = (): void => {\n this.value = this.initialValue;\n if (this.searchable) {\n this.searchableSelectInputValue = this.getDefaultValue(\n this.value as string\n );\n this.hiddenInputValue = this.value as string;\n }\n };\n\n private clearInput = (): void => {\n this.noOptions = null;\n\n if (this.searchable) {\n this.searchableSelectElement?.setAttribute(\"value\", \"\");\n this.searchableSelectInputValue = null;\n this.filteredOptions = this.uniqueOptions;\n }\n };\n\n render() {\n const {\n size,\n disabled,\n fullWidth,\n helperText,\n hideLabel,\n label,\n menuId,\n multiple,\n name,\n options,\n placeholder,\n readonly,\n required,\n searchable,\n showClearButton,\n validationStatus,\n validationText,\n currValue,\n theme,\n } = this;\n\n // HTML inputs only accept 'string' for their value\n // Does not cause errors when it is a multi-select - sets value correctly, to a comma-separated string\n renderHiddenInput(\n true,\n this.el,\n name || this.inputId,\n this.searchable ? this.hiddenInputValue : (currValue as string),\n disabled\n );\n\n const invalid = `${validationStatus === IcInformationStatus.Error}`;\n\n const describedBy = getInputDescribedByText(\n this.inputId,\n helperText !== \"\",\n hasValidationStatus(this.validationStatus, !!this.disabled)\n ).trim();\n\n let showLeftIcon = !!this.el.querySelector(`[slot=\"icon\"]`);\n if (showLeftIcon && (disabled || (readonly && !this.value))) {\n showLeftIcon = false;\n }\n\n const optionsSelectedCount = `${\n currValue?.length\n } of ${getOptionsWithoutGroupTitlesCount(this.options!)} selected`;\n\n const valueLabelString = multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string);\n\n const isClearable =\n !disabled &&\n (searchable\n ? this.searchableSelectInputValue\n : currValue && showClearButton);\n\n return (\n <Host\n class={{\n \"ic-select-disabled\": !!disabled,\n \"ic-select-searchable\": !!searchable,\n [`ic-select-${size}`]: size !== \"medium\",\n \"ic-select-full-width\": !!fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n onBlur={this.onBlur}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={this.inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n ></ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": this.open }}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {showLeftIcon && (\n <span\n slot=\"left-icon\"\n class={{\n [\"readonly\"]: !!readonly,\n [\"has-value\"]: !!this.value,\n }}\n >\n <slot name=\"icon\" />\n </span>\n )}\n {readonly ? (\n <ic-typography>\n <p>{valueLabelString}</p>\n </ic-typography>\n ) : isMobileOrTablet() && !multiple ? (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={this.inputId}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onKeyDown={this.handleNativeSelectKeyDown}\n form={this.form}\n {...this.inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options!.map((option) => {\n if (option.children) {\n return (\n <optgroup label={option.label}>\n {option.children.map((option) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n ))}\n </optgroup>\n );\n } else {\n return (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n );\n }\n })}\n </select>\n ) : searchable ? (\n <div class=\"searchable-select-container\">\n <input\n class={{\n \"select-input\": true,\n \"with-clear-button\": !!this.searchableSelectInputValue,\n }}\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={this.ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={`${this.open}`}\n aria-invalid={invalid}\n aria-required={`${required}`}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={this.inputId}\n value={this.searchableSelectInputValue || undefined}\n placeholder={placeholder}\n disabled={disabled}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n form={this.form}\n ></input>\n {isClearable && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el) => (this.clearButton = el)}\n aria-label={\n this.searchableSelectInputValue && currValue === null\n ? \"Clear input\"\n : \"Clear selection\"\n }\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n theme={this.clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"searchable-select-results-status\"\n ></div>\n </div>\n ) : (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n ref={(el) => (this.customSelectElement = el)}\n id={this.inputId}\n aria-label={`${label}, ${\n (multiple && currValue\n ? `${optionsSelectedCount}, ${valueLabelString}`\n : valueLabelString) || placeholder\n }${required ? \", required\" : \"\"}`}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-owns={menuId}\n aria-controls={menuId}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.handleClick}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleKeyDown}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n \"with-clear-button\": !!isClearable,\n placeholder: multiple\n ? !this.value || this.value.length < 1\n : !this.getLabelFromValue(currValue as string),\n }}\n >\n {valueLabelString || placeholder}\n </ic-typography>\n <div class=\"select-input-end\">\n {isClearable && <div class=\"divider\"></div>}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {isClearable && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear selection\"\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n theme={this.clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n )}\n </div>\n )}\n </ic-input-component-container>\n {(!isMobileOrTablet() || multiple) && (\n <ic-menu\n class={{\n \"no-results\":\n this.loading ||\n this.hasTimedOut ||\n (this.noOptions !== null &&\n this.noOptions[0] &&\n this.noOptions[0].label === this.emptyOptionListText),\n }}\n ref={(el) => (this.menu = el)}\n inputEl={\n (searchable\n ? this.searchableSelectElement\n : this.customSelectElement)!\n }\n inputLabel={label}\n anchorEl={this.anchorEl!}\n size={size}\n menuId={menuId}\n open={this.open}\n options={searchable ? this.filteredOptions : this.uniqueOptions}\n value={multiple ? (currValue as string[]) : (currValue as string)}\n fullWidth={fullWidth}\n selectOnEnter={this.selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleCustomSelectChange}\n onMenuOptionSelectAll={this.handleSelectAllChange}\n onMenuKeyPress={this.handleMenuKeyPress}\n onUngroupedOptionsSet={this.setUngroupedOptions}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n onTimeoutBlur={this.onTimeoutBlur}\n activationType={\n this.searchable || multiple || this.selectOnEnter\n ? \"manual\"\n : \"automatic\"\n }\n closeOnSelect={!multiple}\n ></ic-menu>\n )}\n {this.multiple && (\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"multi-select-selected-count\"\n ></div>\n )}\n {hasValidationStatus(this.validationStatus, !!this.disabled) && (\n <ic-input-validation\n class={{ \"menu-open\": this.open }}\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText || \"\"}\n for={this.inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"ic-select.entry.cjs.js","mappings":"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","names":["IC_INHERITED_ARIA","checkSlotInChildMutations","forceUpdate","getLabelFromValue","getFilteredMenuOptions","getOptionsWithoutGroupTitlesCount","removeDisabledFalse","removeFormResetListener","inheritAttributes","addFormResetListener","onComponentRequiredPropUndefined","renderHiddenInput","IcInformationStatus","getInputDescribedByText","hasValidationStatus","h","Host","isMobileOrTablet"],"sources":["src/components/ic-select/ic-select.css?tag=ic-select&encapsulation=shadow","src/components/ic-select/ic-select.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --input-width: Width of the input field\n * @prop --menu-width: Width of the dropdown menu\n * @prop --ic-z-index-menu: z-index of select menu\n */\n\n:host {\n display: block;\n position: relative;\n\n --ic-input-label-helpertext-padding: var(--ic-space-xxs);\n --menu-max-height: 100px;\n --border-color: var(--ic-select-field-border);\n --border-color-hover: var(--ic-select-field-border-hover);\n --border-color-pressed: var(--ic-select-field-border-pressed);\n --border-color-disabled: var(--ic-select-field-border-disabled);\n --border-color-error: var(--ic-select-field-border-error);\n --border-color-error-hover: var(--ic-select-field-border-error-hover);\n --border-color-error-pressed: var(--ic-select-field-border-error-pressed);\n --border-color-success: var(--ic-select-field-border-success);\n --border-color-success-hover: var(--ic-select-field-border-success-hover);\n --border-color-success-pressed: var(--ic-select-field-border-success-pressed);\n --border-color-warning: var(--ic-select-field-border-warning);\n --border-color-warning-hover: var(--ic-select-field-border-warning-hover);\n --border-color-warning-pressed: var(--ic-select-field-border-warning-pressed);\n --ic-input-label-text-color: var(--ic-select-field-labe);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle\n );\n --ic-input-validation-status-text-color: var(--ic-select-state-text);\n --ic-input-validation-error: var(--ic-select-state-icon-error);\n --ic-input-validation-warning-icon-color: var(--ic-select-state-icon-warning);\n --ic-input-validation-success-icon-color: var(--ic-select-state-icon-success);\n --menu-item-text-color: var(--ic-select-list-option-text);\n --menu-bg-color: var(--ic-select-list-option-background);\n --menu-border-color: var(--ic-select-dropdown-list-border);\n}\n\n:host(.ic-select-disabled) {\n --ic-input-label-text-color: var(--ic-select-field-label-disabled);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle-disabled\n );\n}\n\n:host(.ic-select-full-width) {\n width: 100%;\n}\n\nic-input-component-container.menu-open {\n --border-color: var(--ic-select-field-border-pressed);\n}\n\nic-input-validation .status-icon,\nic-input-validation .statustext {\n visibility: visible;\n}\n\nic-input-validation.menu-open .status-icon,\nic-input-validation.menu-open .statustext {\n visibility: hidden;\n transition: visibility 0s;\n}\n\nic-input-label {\n margin-bottom: var(--ic-space-xs) !important;\n}\n\nselect {\n border: 0;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n height: 100%;\n padding-left: 0.375rem;\n appearance: none;\n background-repeat: no-repeat;\n background-position: right 0.375rem center;\n background-image: var(--ic-select-mobile-dropdown-icon);\n caret-color: var(--ic-select-input-field-text-cursor);\n}\n\nselect option,\n.select-option-selected {\n color: var(--ic-select-list-option-text);\n}\n\nselect:disabled {\n color: var(--ic-select-content-text-disabled);\n background-image: var(--ic-select-mobile-dropdown-icon-disabled);\n}\n\nselect:focus {\n border: 0;\n outline: 0;\n}\n\nselect:not([disabled]) {\n cursor: pointer;\n}\n\n.select-container {\n width: 100%;\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.select-input {\n width: 100%;\n height: 100%;\n padding: 0 0.375rem;\n display: flex;\n cursor: pointer;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n}\n\n.select-input:focus {\n outline: none;\n}\n\n.select-input[disabled] {\n pointer-events: none;\n}\n\n:host(.ic-select-searchable) .select-input {\n cursor: auto;\n}\n\n.select-input.with-clear-button {\n padding-right: 0;\n}\n\n.value-text {\n max-width: calc(100% - (var(--ic-space-lg) + var(--ic-space-xxs)));\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n margin-bottom: 0 !important;\n}\n\n.value-text.with-clear-button {\n padding-right: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n.searchable-select-container {\n align-items: center;\n display: flex;\n width: 100%;\n position: relative;\n}\n\n.expand-icon {\n height: var(--ic-space-lg);\n padding-left: var(--ic-space-xxs);\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon > svg {\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-disabled) .expand-icon,\n:host(.ic-select-disabled) .expand-icon > svg > path {\n color: var(--ic-select-disabled-expand-icon-color);\n}\n\n:host(.ic-select-searchable) .expand-icon {\n padding-left: 0;\n height: 2.25rem;\n}\n\n:host(.ic-select-searchable) .expand-icon > svg {\n height: 2.25rem;\n padding: 0 calc(var(--ic-space-xxxs) + var(--ic-space-xxs)) 0\n var(--ic-space-xxs);\n}\n\n:host(.ic-select-searchable:not(.ic-select-disabled)) .expand-icon > svg {\n cursor: pointer;\n}\n\n.expand-icon-open {\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon-open,\n:host(.ic-select-searchable) .expand-icon-open {\n transform: rotateX(180deg);\n}\n\n.placeholder {\n color: var(--ic-select-content-placeholder-text);\n}\n\n:host(.ic-select-disabled) .value-text,\n:host(.ic-select-disabled) .select-input,\n:host(.ic-select-disabled) .placeholder,\n:host(.ic-select-disabled.ic-select-searchable) .select-input::placeholder {\n color: var(--ic-select-content-text-disabled);\n}\n\n.select-input-end {\n display: flex;\n align-items: center;\n}\n\n.clear-button-container {\n display: flex;\n align-items: center;\n}\n\n.divider {\n width: var(--ic-space-1px);\n background-color: var(--ic-select-content-divider);\n margin: var(--ic-space-xxs) 0;\n border-radius: var(--ic-space-1px);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-small) .divider {\n height: var(--ic-space-md);\n}\n\n:host(.ic-select-large) .divider {\n height: var(--ic-space-xl);\n}\n\n.clear-button {\n color: var(--ic-select-clear-button);\n position: absolute;\n right: calc(var(--ic-space-xl) + var(--ic-space-xxs) - var(--ic-space-1px));\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus,\n.clear-button:active {\n background-color: var(--ic-color-focus-inner);\n box-shadow: inset 0 0 0 0.125rem var(--ic-color-focus-outer);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.clear-button:active * {\n fill: var(--ic-atoms-input-clear-button-focus);\n}\n\n.clear-button.searchable {\n position: static;\n}\n\n.searchable-select-results-status,\n.multi-select-selected-count {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: var(--ic-space-1px);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-placeholder-text);\n}\n\n.has-value ::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-text);\n}\n\n.readonly ::slotted([slot=\"icon\"]) {\n padding: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n@media (forced-colors: active) {\n .has-value ::slotted([slot=\"icon\"]) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n h,\n State,\n Watch,\n forceUpdate,\n} from \"@stencil/core\";\n\nimport {\n getInputDescribedByText,\n getLabelFromValue,\n hasValidationStatus,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n isMobileOrTablet,\n getFilteredMenuOptions,\n getOptionsWithoutGroupTitlesCount,\n addFormResetListener,\n removeFormResetListener,\n removeDisabledFalse,\n checkSlotInChildMutations,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcMenuOption,\n IcSearchMatchPositions,\n IcMultiValueEventDetail,\n IcSizes,\n IcThemeMode,\n} from \"../../utils/types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport { IcOptionSelectEventDetail } from \"../ic-menu/ic-menu.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"tabindex\", \"title\"];\n\n/**\n * @slot icon - Content will be placed to the left of the select text input.\n */\n@Component({\n tag: \"ic-select\",\n styleUrl: \"ic-select.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Select {\n private anchorEl?: HTMLElement;\n private blurredBecauseButtonPressed: boolean;\n private characterKeyPressTimer: number;\n private clearButton?: HTMLIcButtonElement;\n private customSelectElement?: HTMLButtonElement;\n private debounceAria: number;\n private hasSetDefaultValue = false;\n private hasTimedOut: boolean;\n private inheritedAttributes: { [k: string]: string } = {};\n private initialOptionsEmpty = false;\n private inputId = `ic-select-input-${inputIds++}`;\n private menu?: HTMLIcMenuElement;\n private menuId = `${this.inputId}-menu`;\n private nativeSelectElement?: HTMLSelectElement;\n private retryButtonClick: boolean;\n private searchableMenuItemSelected: boolean = false;\n private searchableSelectElement?: HTMLInputElement;\n private timeoutTimer: number;\n private ungroupedOptions: IcMenuOption[] = [];\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() debounceIcInput: number;\n @State() hiddenInputValue: string | null;\n @State() noOptions: IcMenuOption[] | null = null;\n @State() open: boolean = false;\n @State() pressedCharacters: string = \"\";\n @State() searchableSelectInputValue: string | null = null;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled?: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableAutoFiltering?: boolean = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText?: string = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * If `true`, the select will fill the width of the container.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * If `true`, descriptions of options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeDescriptionsInSearch?: boolean = false;\n\n /**\n * If `true`, group titles of grouped options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeGroupTitlesInSearch?: boolean = false;\n\n /**\n * The label for the select.\n */\n @Prop() label!: string;\n\n /**\n * The message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel?: string = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel?: string = \"Loading...\";\n\n /**\n * If `true`, multiple options can be selected.\n */\n @Prop() multiple?: boolean = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name?: string = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder?: string = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options. This functionality is only available on the single-select variant of the select component.\n */\n @Prop() searchable?: boolean = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition?: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown on the single select.\n */\n @Prop() selectOnEnter?: boolean = false;\n\n /**\n * If `true`, a button which clears the select input when clicked will be displayed. The button will always appear on the searchable select.\n */\n @Prop() showClearButton?: boolean = false;\n\n /**\n * The size of the select.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * If `true`, the loading state will be triggered when fetching options asynchronously.\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n newValue ? this.triggerLoading() : this.setOptions();\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options?: IcMenuOption[] = [];\n @State() filteredOptions: IcMenuOption[] = this.options!;\n @State() uniqueOptions: IcMenuOption[] = this.options!;\n\n @Watch(\"options\")\n watchOptionsHandler(): void {\n this.setOptions();\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icInput` event after each keystroke.\n */\n @Prop() debounce?: number = 0;\n @State() currDebounce = this.debounce;\n\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n this.updateOnChangeDebounce(newValue);\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option.\n * For the searchable variant, the value is also reflected by the user input.\n * For the multi-select variant, the value must be an array of option values.\n */\n @Prop({ mutable: true }) value?: string | string[] | null;\n @State() initialValue = this.value;\n @State() inputValueToFilter: string | null = this.value as string;\n @State() currValue?: string | string[] | null;\n\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n if (this.value && this.multiple) {\n this.currValue = this.getMultipleOptionsString(this.value as string[])\n ? this.getValueSortedByOptions(this.value as string[])\n : null;\n this.updateMultiSelectedCountAriaLive();\n } else {\n this.currValue = this.getLabelFromValue(this.value as string)\n ? this.value\n : null;\n }\n }\n\n if (this.searchable && this.value) {\n // Only set if value not null - prevents whole input value being cleared when edited\n this.searchableSelectInputValue =\n this.getLabelFromValue(String(this.currValue)) || null;\n }\n }\n\n @Watch(\"open\")\n openChangedHandler(): void {\n this.open ? this.icOpen.emit() : this.icClose.emit();\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the clear or clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * Emitted when the select options menu is closed.\n */\n @Event() icClose: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the select options menu is opened.\n */\n @Event() icOpen: EventEmitter<void>;\n\n /**\n * Emitted when an option is selected.\n * Selecting an option will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when `multiple` is `true` and an option is deselected.\n */\n @Event() icOptionDeselect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcMultiValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n const valueInOptions = this.multiple\n ? this.getMultipleOptionsString(this.value as string[])\n : this.getLabelFromValue(this.value as string);\n this.currValue = valueInOptions ? this.value : null;\n this.inheritedAttributes = inheritAttributes(this.el, MUTABLE_ATTRIBUTES);\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.setOptionsValuesFromLabels();\n\n addFormResetListener(this.el, this.handleFormReset);\n\n if (!this.options!.length) {\n this.initialOptionsEmpty = true;\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n } else {\n this.setDefaultValue();\n this.uniqueOptions = this.deduplicateOptions(this.options!);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Select\"\n );\n\n if (this.loading) {\n this.triggerLoading();\n }\n\n if (this.searchable) {\n this.hiddenInputValue = this.currValue as string;\n }\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n }\n\n /**\n * Sets focus on the input box.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.customSelectElement) {\n this.customSelectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (attributeName) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute && MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private handleRetry = (ev: CustomEvent<IcMultiValueEventDetail>) => {\n if (ev.detail.keyPressed) this.searchableSelectElement?.focus();\n this.blurredBecauseButtonPressed = true;\n this.retryButtonClick = true;\n this.hasSetDefaultValue = true;\n this.icRetryLoad.emit({\n value: this.searchable\n ? this.searchableSelectInputValue\n : this.hiddenInputValue,\n });\n };\n\n private updateOnChangeDebounce(newValue: number) {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n private emitIcChange = (value: string | string[] | null) => {\n // If \"Select all\" button clicked, replace value with new value (array of all option values)\n if (this.multiple && !Array.isArray(value) && value !== null) {\n this.handleMultipleSelectChange(String(value));\n } else {\n this.value = value;\n }\n\n const valueToEmit = this.multiple ? this.value : value;\n this.icChange.emit({ value: valueToEmit || null });\n };\n\n private emitIcInput = (value: string) => {\n clearTimeout(this.debounceIcInput);\n this.debounceIcInput = window.setTimeout(\n () => this.icInput.emit({ value }),\n this.currDebounce\n );\n };\n\n private setOptions = () => {\n if (!this.hasTimedOut && this.options !== this.noOptions) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n if (this.options!.length > 0) {\n this.setOptionsValuesFromLabels();\n this.uniqueOptions = this.deduplicateOptions(this.options!);\n this.filteredOptions = this.uniqueOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n }\n if (this.isExternalFiltering()) {\n // When searchable select\n this.noOptions = null;\n this.updateSearchableSelectResultAriaLive();\n this.setDefaultValue();\n } else {\n if (this.initialOptionsEmpty) {\n this.setDefaultValue();\n this.initialOptionsEmpty = false;\n }\n }\n } else {\n if (!this.searchable) {\n this.options = this.noOptions || [];\n }\n }\n };\n\n /**\n * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn\n * @param options array of IcMenuOptions\n * @returns a new options object, with all entries possessing a duplicate 'value' field removed\n */\n private deduplicateOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n const uniqueValues: string[] = [];\n const dedupedOptions: IcMenuOption[] = [];\n let dedupedChildren: IcMenuOption[];\n\n options.forEach((option: IcMenuOption) => {\n if (option.children) {\n //If an option has children, we will loop through them\n dedupedChildren = [];\n option.children.forEach((child) => {\n if (uniqueValues.includes(child.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${child.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(child.value);\n dedupedChildren.push(child);\n }\n });\n // construct a modified option, inserting the deduplicated children alongside the original information\n const modifiedParent: IcMenuOption = {\n ...option,\n children: dedupedChildren,\n };\n dedupedOptions.push(modifiedParent);\n } else {\n // If an option does not have children, assess to see if it's value has been included already\n if (uniqueValues.includes(option.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${option.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(option.value);\n dedupedOptions.push(option);\n }\n }\n });\n return dedupedOptions;\n };\n\n /**\n * Loop through options array and for all options with no value, infer it from the label\n */\n private setOptionsValuesFromLabels = (): void => {\n if (this.options!.length > 0) {\n this.options!.map((option) => {\n if (!option.value) {\n option.value = option.label;\n }\n });\n }\n };\n\n private setUngroupedOptions = (event: CustomEvent): void => {\n this.ungroupedOptions = event.detail.options;\n };\n\n private setTextColor = (): void => {\n if (this.nativeSelectElement) {\n if (this.nativeSelectElement.selectedIndex === 0) {\n this.nativeSelectElement.className = \"placeholder\";\n } else {\n this.nativeSelectElement.className = \"select-option-selected\";\n }\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n }\n };\n\n private getLabelFromValue = (value: string): string | undefined => {\n return getLabelFromValue(value, this.uniqueOptions);\n };\n\n private getMultipleOptionsString = (selectedValues: string[]) => {\n const selectedLabels = selectedValues\n ?.map((value) => this.getLabelFromValue(value))\n .filter((label) => !!label);\n return selectedLabels?.join(\", \");\n };\n\n private getFilteredChildMenuOptions = (option: IcMenuOption) => {\n let children = option.children;\n\n if (option.children) {\n if (this.searchable) {\n children = getFilteredMenuOptions(\n option.children,\n !!this.includeDescriptionsInSearch,\n this.searchableSelectInputValue || \"\",\n this.searchMatchPosition\n );\n } else {\n children = getFilteredMenuOptions(\n option.children,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n }\n\n const newOption = { ...option };\n newOption.children = children;\n return newOption;\n };\n\n // (For multi-select) get value array, i.e. selected option values, in order they appear in option list\n private getValueSortedByOptions = (value: string[]) => {\n const valueArray = value;\n const valuesFromAllOptions = this.ungroupedOptions.map(\n (option) => option.value\n );\n\n valueArray.sort(\n (a, b) =>\n valuesFromAllOptions.indexOf(a) - valuesFromAllOptions.indexOf(b)\n );\n\n return valueArray;\n };\n\n private handleNativeSelectChange = (): void => {\n if (this.nativeSelectElement) {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitIcChange(this.nativeSelectElement.value);\n }\n this.setTextColor();\n };\n\n // Handle option select for when a custom input box and menu is rendered\n // (rather than native <select> - rendered when viewed on a mobile / tablet screen)\n private handleCustomSelectChange = (event: CustomEvent): void => {\n const value = event.detail.value;\n\n if (event.detail.label === this.emptyOptionListText) {\n this.searchableSelectElement?.focus();\n return;\n }\n\n if (this.searchable) {\n this.value = value;\n this.searchableMenuItemSelected = true;\n\n // After editing the input, if selecting the same option as before, set the input value to label again\n if (this.value === this.currValue) {\n this.searchableSelectInputValue =\n this.getLabelFromValue(this.value as string) || null;\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue =\n this.getValueFromLabel(this.searchableSelectInputValue) || null;\n }\n\n if (this.multiple && this.value?.includes(value)) {\n this.icOptionDeselect.emit({ value });\n } else {\n this.icOptionSelect.emit({ value });\n }\n\n this.ariaActiveDescendant = event.detail.optionId;\n this.emitIcChange(value);\n };\n\n // Update selected options - adds / removes them, in order of option list\n // Create new array if value prop is undefined\n private handleMultipleSelectChange = (value: string) => {\n if (this.value) {\n let valueArray = (this.value as string[]).slice();\n\n if (this.value.includes(value)) {\n const valueIndex = valueArray.indexOf(value);\n valueArray.splice(valueIndex, 1);\n } else {\n valueArray.push(value);\n valueArray = this.getValueSortedByOptions(valueArray);\n }\n\n this.value = valueArray.length === 0 ? null : valueArray;\n } else {\n const valueArray = [];\n valueArray.push(value);\n this.value = valueArray;\n }\n };\n\n private handleSelectAllChange = (event: CustomEvent) => {\n const selectAllOptions = event.detail.select;\n const allEnabledOptions = this.ungroupedOptions.filter(\n (option) => !option.disabled\n );\n const allValues = allEnabledOptions.map((option) => option.value);\n let newValue: string[] | null;\n\n if (selectAllOptions) {\n let unselectedValues;\n\n // Only emit icOptionSelect for all values that are newly selected\n if (this.value) {\n unselectedValues = allValues.filter(\n (value) => this.value && !(this.value as string[]).includes(value)\n );\n } else {\n unselectedValues = allValues;\n }\n\n unselectedValues.forEach((value) => this.icOptionSelect.emit({ value }));\n newValue = allValues;\n } else {\n // Only emit icOptionDeselect for values that were selected\n (this.value as string[]).forEach((value) =>\n this.icOptionDeselect.emit({ value })\n );\n newValue = null;\n }\n\n this.emitIcChange(newValue);\n };\n\n private handleMenuChange = (event: CustomEvent): void => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n\n this.searchable && this.handleFocusIndicatorDisplay();\n };\n\n // clears the debounce delay when navigating the menu with arrow keys etc\n // to prevent delay in change event, which should only occur when typing in input\n private handleMenuKeyPress = (ev: CustomEvent): void => {\n ev.cancelBubble = true;\n if (!this.multiple) {\n this.handleCharacterKeyDown(ev.detail.key);\n }\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator =\n this.el.shadowRoot?.querySelector(\".focus-indicator\");\n\n if (focusIndicator) {\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n }\n };\n\n private handleMouseDown = (event: Event): void => {\n if (!this.open) {\n event.preventDefault();\n }\n };\n\n private isExternalFiltering = (): boolean =>\n this.searchable! && !!this.disableAutoFiltering;\n\n private handleClick = (event: MouseEvent): void => {\n if (!this.open && this.menu) {\n if (this.isExternalFiltering()) {\n this.menu.options = this.filteredOptions;\n } else if (\n !this.hasTimedOut &&\n !this.loading &&\n !this.noOptions?.length &&\n (!this.searchable || this.searchableMenuItemSelected)\n ) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (event.detail !== 0) {\n this.menu?.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement?.focus();\n this.handleClick(event);\n }\n };\n\n private handleClear = (event: Event): void => {\n event.stopPropagation();\n this.hasTimedOut = false;\n clearTimeout(this.timeoutTimer);\n this.clearInput();\n this.emitIcChange(null);\n this.icClear.emit();\n\n if (this.searchable) {\n this.hiddenInputValue = null;\n this.searchableSelectElement?.focus();\n } else {\n this.customSelectElement?.focus();\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (this.open && key === \" \" && this.pressedCharacters.length === 0) {\n this.setMenuChange(false);\n }\n\n if (key.length === 1 && !this.searchable) {\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n if (!(key === \" \" && !this.pressedCharacters)) {\n this.pressedCharacters += key;\n this.handleFilter();\n\n if (!this.noOptions) {\n this.emitIcChange(this.filteredOptions[0].value);\n }\n }\n } else {\n this.pressedCharacters = \"\";\n }\n };\n\n private handleNativeSelectKeyDown = (event: KeyboardEvent) => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n this.handleCharacterKeyDown(event.key);\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n const isArrowKey = event.key === \"ArrowDown\" || event.key === \"ArrowUp\";\n\n if (this.menu && !this.open) {\n if (this.isExternalFiltering() && (event.key === \"Enter\" || isArrowKey)) {\n this.menu.options = this.filteredOptions;\n } else {\n if (!this.hasTimedOut) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n }\n\n if (this.open && event.key === \"Enter\") {\n this.setMenuChange(false);\n } else {\n if (!(isArrowKey && this.noOptions !== null)) {\n if (!(event.key === \" \" && this.pressedCharacters.length > 0)) {\n // Keyboard events get passed onto ic-menu\n this.menu?.handleKeyboardOpen(event);\n }\n if (!this.multiple) {\n this.handleCharacterKeyDown(event.key);\n }\n }\n }\n };\n\n private handleClearButtonFocus = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleClearButtonBlur = (ev: FocusEvent): void => {\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n if (\n !(\n this.searchableSelectElement &&\n ev.relatedTarget === this.searchableSelectElement\n ) &&\n !(retryButton && ev.relatedTarget === retryButton)\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n }\n this.clearButtonFocused = false;\n };\n\n private handleFilter = (): void => {\n const options = this.deduplicateOptions(\n this.searchable ? [...this.uniqueOptions] : this.ungroupedOptions\n );\n\n let isGrouped = false;\n let newFilteredOptions: IcMenuOption[] = [];\n\n options.map((option) => {\n if (option.children) isGrouped = true;\n });\n\n let menuOptionsFiltered: IcMenuOption[];\n\n if (this.searchable) {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n !!this.includeDescriptionsInSearch,\n this.inputValueToFilter || \"\",\n this.searchMatchPosition\n );\n this.searchableMenuItemSelected = false;\n } else {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n\n if (\n !isGrouped &&\n menuOptionsFiltered[0]?.label !== this.emptyOptionListText\n ) {\n newFilteredOptions = menuOptionsFiltered;\n } else if (isGrouped) {\n options.map((option) => {\n if (this.includeGroupTitlesInSearch) {\n if (menuOptionsFiltered.indexOf(option) !== -1) {\n newFilteredOptions.push(option);\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n });\n }\n\n let noChildOptionsWhenFiltered = false;\n\n if (isGrouped) {\n noChildOptionsWhenFiltered = true;\n newFilteredOptions.map((option) => {\n if (option.children && option.children.length > 0) {\n noChildOptionsWhenFiltered = false;\n }\n });\n }\n\n if (newFilteredOptions.length > 0 && !noChildOptionsWhenFiltered) {\n this.noOptions = null;\n this.filteredOptions = newFilteredOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.filteredOptions = this.noOptions;\n }\n };\n\n /**\n * Put the select component into loading state.\n * Replace options with the loading message. If timeout is enabled, set the timeout and once passed, replace options with the loading error message\n */\n private triggerLoading = () => {\n this.hasTimedOut = false;\n this.noOptions = [{ label: this.loadingLabel, value: \"\", loading: true }];\n if (this.filteredOptions !== this.noOptions && this.searchable) {\n this.filteredOptions = this.noOptions;\n } else if (this.uniqueOptions !== this.noOptions && !this.searchable) {\n this.uniqueOptions = this.noOptions;\n }\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n this.noOptions = [\n { label: this.loadingErrorLabel, value: \"\", timedOut: true },\n ];\n this.filteredOptions = this.noOptions;\n if (!this.searchable) this.uniqueOptions = this.noOptions;\n }, this.timeout);\n }\n };\n\n private getValueFromLabel = (label: string | null): string | undefined => {\n return (\n label &&\n this.uniqueOptions.find((option) => option.label === label)?.value\n );\n };\n\n private handleSearchableSelectInput = (event: Event): void => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n this.emitIcInput(this.searchableSelectInputValue);\n\n // De-select previous selection when input is edited\n // Only emit icChange once when editing input\n if (this.value != null) {\n this.emitIcChange(null);\n }\n\n this.hiddenInputValue = null;\n this.inputValueToFilter = this.searchableSelectInputValue;\n this.setMenuChange(true);\n\n if (!this.disableAutoFiltering) {\n this.handleFilter();\n this.debounceAriaLiveUpdate();\n }\n };\n\n private updateSearchableSelectResultAriaLive = (): void => {\n const searchableSelectResultsStatusEl = this.el.shadowRoot?.querySelector(\n \".searchable-select-results-status\"\n ) as HTMLDivElement;\n\n if (searchableSelectResultsStatusEl) {\n if (this.noOptions !== null) {\n searchableSelectResultsStatusEl.innerText = this.emptyOptionListText!;\n } else {\n searchableSelectResultsStatusEl.innerText = \"\";\n }\n }\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAria);\n\n window.setTimeout(() => {\n this.updateSearchableSelectResultAriaLive();\n }, 800);\n }\n\n private updateMultiSelectedCountAriaLive = (): void => {\n const multiSelectSelectedCountEl = this.el.shadowRoot?.querySelector(\n \".multi-select-selected-count\"\n ) as HTMLDivElement;\n\n const selectedCount = `${\n this.currValue?.length\n } of ${getOptionsWithoutGroupTitlesCount(this.options!)} selected`;\n\n if (\n multiSelectSelectedCountEl &&\n multiSelectSelectedCountEl.innerText !== selectedCount\n ) {\n multiSelectSelectedCountEl.innerText = selectedCount;\n }\n };\n\n private getDefaultValue = (value: string): string | null =>\n this.getLabelFromValue(value) || null;\n\n private setDefaultValue = (): void => {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue = this.searchable\n ? this.getDefaultValue(this.currValue as string)\n : null;\n\n this.initialValue = this.currValue;\n this.hasSetDefaultValue = true;\n }\n };\n\n private onFocus = (): void => {\n this.icFocus.emit();\n };\n\n private onBlur = ({ relatedTarget }: FocusEvent): void => {\n const target = relatedTarget as HTMLElement;\n if (\n target !== null &&\n ((target.tagName === \"UL\" && target.className.includes(\"menu\")) ||\n (target.tagName === \"LI\" && target.className.includes(\"option\")))\n ) {\n return;\n }\n\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n const isSearchableAndNoFocusedInternalElements =\n this.searchable &&\n !!this.menu &&\n target !== this.menu &&\n !Array.from(this.menu.querySelectorAll(\"[role='option']\")).includes(\n target\n ) &&\n !(this.clearButton && target === this.clearButton) &&\n !(retryButton && target === retryButton);\n\n if (isSearchableAndNoFocusedInternalElements) {\n if (!this.retryButtonClick) {\n this.setMenuChange(false);\n // Clear input field on blur when searchable if no option is selected\n if (!this.value) {\n this.clearInput();\n }\n }\n this.handleFocusIndicatorDisplay();\n }\n\n this.retryButtonClick = false;\n this.icBlur.emit();\n };\n\n private onTimeoutBlur = (ev: CustomEvent) => {\n if (\n (ev.detail.ev as FocusEvent).relatedTarget !==\n this.searchableSelectElement &&\n !this.blurredBecauseButtonPressed\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n this.icBlur.emit();\n }\n this.blurredBecauseButtonPressed = false;\n };\n\n private handleFormReset = (): void => {\n this.value = this.initialValue;\n if (this.searchable) {\n this.searchableSelectInputValue = this.getDefaultValue(\n this.value as string\n );\n this.hiddenInputValue = this.value as string;\n }\n };\n\n private clearInput = (): void => {\n this.noOptions = null;\n\n if (this.searchable) {\n this.searchableSelectElement?.setAttribute(\"value\", \"\");\n this.searchableSelectInputValue = null;\n this.filteredOptions = this.uniqueOptions;\n }\n };\n\n render() {\n const {\n size,\n disabled,\n fullWidth,\n helperText,\n hideLabel,\n label,\n menuId,\n multiple,\n name,\n options,\n placeholder,\n readonly,\n required,\n searchable,\n showClearButton,\n validationStatus,\n validationText,\n currValue,\n theme,\n } = this;\n\n // HTML inputs only accept 'string' for their value\n // Does not cause errors when it is a multi-select - sets value correctly, to a comma-separated string\n renderHiddenInput(\n true,\n this.el,\n name || this.inputId,\n this.searchable ? this.hiddenInputValue : (currValue as string),\n disabled\n );\n\n const invalid = `${validationStatus === IcInformationStatus.Error}`;\n\n const describedBy = getInputDescribedByText(\n this.inputId,\n helperText !== \"\",\n hasValidationStatus(this.validationStatus, !!this.disabled)\n ).trim();\n\n let showLeftIcon = !!this.el.querySelector(`[slot=\"icon\"]`);\n if (showLeftIcon && (disabled || (readonly && !this.value))) {\n showLeftIcon = false;\n }\n\n const optionsSelectedCount = `${\n currValue?.length\n } of ${getOptionsWithoutGroupTitlesCount(this.options!)} selected`;\n\n const valueLabelString = multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string);\n\n const isClearable =\n !disabled &&\n (searchable\n ? this.searchableSelectInputValue\n : currValue && !this.loading && showClearButton);\n\n return (\n <Host\n class={{\n \"ic-select-disabled\": !!disabled,\n \"ic-select-searchable\": !!searchable,\n [`ic-select-${size}`]: size !== \"medium\",\n \"ic-select-full-width\": !!fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n onBlur={this.onBlur}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={this.inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n ></ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": this.open }}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {showLeftIcon && (\n <span\n slot=\"left-icon\"\n class={{\n [\"readonly\"]: !!readonly,\n [\"has-value\"]: !!this.value,\n }}\n >\n <slot name=\"icon\" />\n </span>\n )}\n {readonly ? (\n <ic-typography>\n <p>{valueLabelString}</p>\n </ic-typography>\n ) : isMobileOrTablet() && !multiple ? (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={this.inputId}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onKeyDown={this.handleNativeSelectKeyDown}\n form={this.form}\n {...this.inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options!.map((option) => {\n if (option.children) {\n return (\n <optgroup label={option.label}>\n {option.children.map((option) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n ))}\n </optgroup>\n );\n } else {\n return (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n );\n }\n })}\n </select>\n ) : searchable ? (\n <div class=\"searchable-select-container\">\n <input\n class={{\n \"select-input\": true,\n \"with-clear-button\": !!this.searchableSelectInputValue,\n }}\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={this.ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={`${this.open}`}\n aria-invalid={invalid}\n aria-required={`${required}`}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={this.inputId}\n value={this.searchableSelectInputValue || undefined}\n placeholder={placeholder}\n disabled={disabled}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n form={this.form}\n ></input>\n {isClearable && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el) => (this.clearButton = el)}\n aria-label={\n this.searchableSelectInputValue &&\n (currValue === null || this.loading)\n ? \"Clear input\"\n : \"Clear selection\"\n }\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n theme={this.clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"searchable-select-results-status\"\n ></div>\n </div>\n ) : (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n ref={(el) => (this.customSelectElement = el)}\n id={this.inputId}\n aria-label={`${label}, ${\n (multiple && currValue\n ? `${optionsSelectedCount}, ${valueLabelString}`\n : valueLabelString) || placeholder\n }${required ? \", required\" : \"\"}`}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-owns={menuId}\n aria-controls={menuId}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.handleClick}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleKeyDown}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n \"with-clear-button\": !!isClearable,\n placeholder:\n !this.loading && multiple\n ? !this.value || this.value.length < 1\n : !this.getLabelFromValue(currValue as string),\n }}\n >\n {valueLabelString || placeholder}\n </ic-typography>\n <div class=\"select-input-end\">\n {isClearable && <div class=\"divider\"></div>}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {isClearable && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear selection\"\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n theme={this.clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n )}\n </div>\n )}\n </ic-input-component-container>\n {(!isMobileOrTablet() || multiple) && (\n <ic-menu\n class={{\n \"no-results\":\n this.loading ||\n this.hasTimedOut ||\n (this.noOptions !== null &&\n this.noOptions[0] &&\n this.noOptions[0].label === this.emptyOptionListText),\n }}\n ref={(el) => (this.menu = el)}\n inputEl={\n (searchable\n ? this.searchableSelectElement\n : this.customSelectElement)!\n }\n inputLabel={label}\n anchorEl={this.anchorEl!}\n size={size}\n menuId={menuId}\n open={this.open}\n options={searchable ? this.filteredOptions : this.uniqueOptions}\n value={multiple ? (currValue as string[]) : (currValue as string)}\n fullWidth={fullWidth}\n selectOnEnter={this.selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleCustomSelectChange}\n onMenuOptionSelectAll={this.handleSelectAllChange}\n onMenuKeyPress={this.handleMenuKeyPress}\n onUngroupedOptionsSet={this.setUngroupedOptions}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n onTimeoutBlur={this.onTimeoutBlur}\n activationType={\n this.searchable || multiple || this.selectOnEnter\n ? \"manual\"\n : \"automatic\"\n }\n closeOnSelect={!multiple}\n ></ic-menu>\n )}\n {this.multiple && (\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"multi-select-selected-count\"\n ></div>\n )}\n {hasValidationStatus(this.validationStatus, !!this.disabled) && (\n <ic-input-validation\n class={{ \"menu-open\": this.open }}\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText || \"\"}\n for={this.inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"version":3}