@ukic/web-components 3.0.0-alpha.6 → 3.0.0-alpha.7

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 (364) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/core.cjs.js +1 -1
  3. package/dist/cjs/{helpers-dd569d97.js → helpers-50fa27f6.js} +14 -1
  4. package/dist/cjs/helpers-50fa27f6.js.map +1 -0
  5. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-alert.cjs.entry.js +2 -9
  8. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  12. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-button_3.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-card-vertical.cjs.entry.js +12 -19
  15. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-empty-state.cjs.entry.js +2 -12
  23. package/dist/cjs/ic-empty-state.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-footer.cjs.entry.js +18 -7
  27. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-hero.cjs.entry.js +2 -9
  29. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  30. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +27 -21
  32. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-search-bar.cjs.entry.js +32 -28
  48. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-select.cjs.entry.js +44 -32
  50. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  53. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  54. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-text-field.cjs.entry.js +9 -7
  60. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-top-navigation.cjs.entry.js +2 -2
  66. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  68. package/dist/cjs/index-f982899d.js +4 -4
  69. package/dist/cjs/loader.cjs.js +1 -1
  70. package/dist/collection/ag-theme-icds.css +32 -31
  71. package/dist/collection/components/ic-alert/ic-alert.js +3 -10
  72. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  73. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js +21 -3
  74. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js.map +1 -1
  75. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js +13 -20
  76. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js.map +1 -1
  77. package/dist/collection/components/ic-card-vertical/test/basic/ic-card-vertical.spec.js +34 -3
  78. package/dist/collection/components/ic-card-vertical/test/basic/ic-card-vertical.spec.js.map +1 -1
  79. package/dist/collection/components/ic-empty-state/ic-empty-state.js +3 -13
  80. package/dist/collection/components/ic-empty-state/ic-empty-state.js.map +1 -1
  81. package/dist/collection/components/ic-footer/ic-footer.js +18 -7
  82. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  83. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js +41 -0
  84. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js.map +1 -1
  85. package/dist/collection/components/ic-hero/ic-hero.js +3 -10
  86. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  87. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +21 -3
  88. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  89. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -10
  90. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  91. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +21 -3
  92. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
  93. package/dist/collection/components/ic-menu/ic-menu.css +6 -0
  94. package/dist/collection/components/ic-menu/ic-menu.js +38 -11
  95. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  96. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +9 -9
  97. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  98. package/dist/collection/components/ic-search-bar/ic-search-bar.css +66 -4
  99. package/dist/collection/components/ic-search-bar/ic-search-bar.js +53 -28
  100. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  101. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js +59 -93
  102. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js.map +1 -1
  103. package/dist/collection/components/ic-select/ic-select.js +46 -34
  104. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  105. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +64 -0
  106. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  107. package/dist/collection/components/ic-text-field/ic-text-field.js +15 -8
  108. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  109. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +4 -0
  110. package/dist/collection/testspec.setup.js +14 -0
  111. package/dist/collection/testspec.setup.js.map +1 -1
  112. package/dist/collection/utils/helpers.js +11 -0
  113. package/dist/collection/utils/helpers.js.map +1 -1
  114. package/dist/components/helpers.js +13 -1
  115. package/dist/components/helpers.js.map +1 -1
  116. package/dist/components/ic-alert.js +3 -10
  117. package/dist/components/ic-alert.js.map +1 -1
  118. package/dist/components/ic-card-vertical.js +13 -20
  119. package/dist/components/ic-card-vertical.js.map +1 -1
  120. package/dist/components/ic-empty-state.js +3 -13
  121. package/dist/components/ic-empty-state.js.map +1 -1
  122. package/dist/components/ic-footer.js +18 -7
  123. package/dist/components/ic-footer.js.map +1 -1
  124. package/dist/components/ic-hero.js +3 -10
  125. package/dist/components/ic-hero.js.map +1 -1
  126. package/dist/components/ic-input-component-container2.js +3 -10
  127. package/dist/components/ic-input-component-container2.js.map +1 -1
  128. package/dist/components/ic-menu2.js +25 -12
  129. package/dist/components/ic-menu2.js.map +1 -1
  130. package/dist/components/ic-search-bar.js +46 -53
  131. package/dist/components/ic-search-bar.js.map +1 -1
  132. package/dist/components/ic-select.js +45 -33
  133. package/dist/components/ic-select.js.map +1 -1
  134. package/dist/components/ic-side-navigation.js +1 -1
  135. package/dist/components/ic-stepper.js +1 -1
  136. package/dist/components/ic-text-field.js +371 -1
  137. package/dist/components/ic-text-field.js.map +1 -1
  138. package/dist/components/ic-theme.js +1 -1
  139. package/dist/components/ic-top-navigation.js +2 -2
  140. package/dist/components/ic-top-navigation.js.map +1 -1
  141. package/dist/core/ag-theme-icds.css +32 -31
  142. package/dist/core/core.css +15 -3
  143. package/dist/core/core.esm.js +1 -1
  144. package/dist/core/core.esm.js.map +1 -1
  145. package/dist/core/p-050e3e36.entry.js +2 -0
  146. package/dist/core/p-050e3e36.entry.js.map +1 -0
  147. package/dist/core/{p-5ba8e679.entry.js → p-08a82b71.entry.js} +2 -2
  148. package/dist/core/{p-5d417fc0.entry.js → p-12bd8ade.entry.js} +2 -2
  149. package/dist/core/{p-ded2dbed.entry.js → p-13637d3f.entry.js} +2 -2
  150. package/dist/core/{p-406e58af.entry.js → p-1425c78b.entry.js} +2 -2
  151. package/dist/core/{p-4af52174.entry.js → p-16df8bcf.entry.js} +2 -2
  152. package/dist/core/{p-1234f7a5.entry.js → p-1b1f7523.entry.js} +2 -2
  153. package/dist/core/{p-bc7b8a1e.entry.js → p-2179e015.entry.js} +2 -2
  154. package/dist/core/{p-810f5a2d.entry.js → p-273f9b03.entry.js} +2 -2
  155. package/dist/core/p-273f9b03.entry.js.map +1 -0
  156. package/dist/core/{p-b5439baa.entry.js → p-27933dfe.entry.js} +2 -2
  157. package/dist/core/{p-c83e933c.entry.js → p-2aca1bac.entry.js} +2 -2
  158. package/dist/core/{p-a24bcf5f.entry.js → p-30f91e2e.entry.js} +2 -2
  159. package/dist/core/p-3361ac8f.entry.js +2 -0
  160. package/dist/core/p-3361ac8f.entry.js.map +1 -0
  161. package/dist/core/{p-98dbbb34.entry.js → p-34e89ebf.entry.js} +2 -2
  162. package/dist/core/{p-b9aa801f.entry.js → p-353893b7.entry.js} +2 -2
  163. package/dist/core/{p-0821fc5b.entry.js → p-3645c4e6.entry.js} +2 -2
  164. package/dist/core/p-369ff74c.entry.js +2 -0
  165. package/dist/core/p-369ff74c.entry.js.map +1 -0
  166. package/dist/core/p-46dd7413.entry.js +2 -0
  167. package/dist/core/p-46dd7413.entry.js.map +1 -0
  168. package/dist/core/{p-225384ab.entry.js → p-4e57c7ba.entry.js} +2 -2
  169. package/dist/core/{p-0b8c3770.entry.js → p-51990f23.entry.js} +2 -2
  170. package/dist/core/{p-4dc48606.entry.js → p-5347f687.entry.js} +2 -2
  171. package/dist/core/{p-6859019c.entry.js → p-538f1bb9.entry.js} +2 -2
  172. package/dist/core/{p-07cd8a50.entry.js → p-5479be2b.entry.js} +2 -2
  173. package/dist/core/{p-b51e378c.entry.js → p-5801598f.entry.js} +2 -2
  174. package/dist/core/{p-c2b359d9.entry.js → p-5b118dec.entry.js} +2 -2
  175. package/dist/core/p-5d89525e.entry.js +2 -0
  176. package/dist/core/p-5d89525e.entry.js.map +1 -0
  177. package/dist/core/{p-f42c0469.entry.js → p-5dcafe90.entry.js} +2 -2
  178. package/dist/core/{p-705db6a5.entry.js → p-5e694b17.entry.js} +2 -2
  179. package/dist/core/{p-b27dfa1b.entry.js → p-6331782f.entry.js} +2 -2
  180. package/dist/core/{p-5d653608.entry.js → p-6a5d58bc.entry.js} +2 -2
  181. package/dist/core/p-6d0c5a77.entry.js +2 -0
  182. package/dist/core/{p-cfe32b37.entry.js.map → p-6d0c5a77.entry.js.map} +1 -1
  183. package/dist/core/p-6f16a69e.entry.js +2 -0
  184. package/dist/core/{p-dcb2073d.entry.js.map → p-6f16a69e.entry.js.map} +1 -1
  185. package/dist/core/{p-9c1d4f72.entry.js → p-7a16046a.entry.js} +2 -2
  186. package/dist/core/p-7c0ff8cf.entry.js +2 -0
  187. package/dist/core/p-7c0ff8cf.entry.js.map +1 -0
  188. package/dist/core/{p-3cfef37a.entry.js → p-7c39afb5.entry.js} +2 -2
  189. package/dist/core/{p-a23c515d.entry.js → p-7e546e88.entry.js} +2 -2
  190. package/dist/core/{p-520c6089.entry.js → p-8dda6121.entry.js} +2 -2
  191. package/dist/core/{p-518ea375.entry.js → p-9505b0f1.entry.js} +2 -2
  192. package/dist/core/{p-b2a41070.entry.js → p-a25d535a.entry.js} +2 -2
  193. package/dist/core/p-a519e9a6.entry.js +2 -0
  194. package/dist/core/p-a519e9a6.entry.js.map +1 -0
  195. package/dist/core/p-b052e67a.entry.js +2 -0
  196. package/dist/core/{p-3420a999.entry.js.map → p-b052e67a.entry.js.map} +1 -1
  197. package/dist/core/{p-580b1593.entry.js → p-bafcbecc.entry.js} +2 -2
  198. package/dist/core/{p-61510f00.entry.js → p-bdbce1a0.entry.js} +2 -2
  199. package/dist/core/p-c68d98f8.entry.js +2 -0
  200. package/dist/core/p-c68d98f8.entry.js.map +1 -0
  201. package/dist/core/{p-4f72a02a.entry.js → p-cae08ac2.entry.js} +2 -2
  202. package/dist/core/{p-7124b387.entry.js → p-d6ce4473.entry.js} +2 -2
  203. package/dist/core/{p-193582d4.entry.js → p-dcdfe5f9.entry.js} +2 -2
  204. package/dist/core/{p-3994d86d.entry.js → p-e9c078fa.entry.js} +2 -2
  205. package/dist/core/p-eafa4df2.js +2 -0
  206. package/dist/core/p-eafa4df2.js.map +1 -0
  207. package/dist/core/{p-da85eaf6.entry.js → p-eb132c44.entry.js} +2 -2
  208. package/dist/core/p-ebf2b874.entry.js +2 -0
  209. package/dist/core/p-ebf2b874.entry.js.map +1 -0
  210. package/dist/core/{p-0d505c1f.entry.js → p-eec110a7.entry.js} +2 -2
  211. package/dist/core/{p-91c1327d.entry.js → p-f1b7e4f4.entry.js} +2 -2
  212. package/dist/core/{p-d2909711.entry.js → p-f8890135.entry.js} +2 -2
  213. package/dist/esm/core.js +1 -1
  214. package/dist/esm/{helpers-e594bfc6.js → helpers-8565b5c5.js} +14 -2
  215. package/dist/esm/helpers-8565b5c5.js.map +1 -0
  216. package/dist/esm/ic-accordion-group.entry.js +1 -1
  217. package/dist/esm/ic-accordion.entry.js +1 -1
  218. package/dist/esm/ic-alert.entry.js +3 -10
  219. package/dist/esm/ic-alert.entry.js.map +1 -1
  220. package/dist/esm/ic-back-to-top.entry.js +1 -1
  221. package/dist/esm/ic-badge.entry.js +1 -1
  222. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  223. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  224. package/dist/esm/ic-button_3.entry.js +1 -1
  225. package/dist/esm/ic-card-vertical.entry.js +13 -20
  226. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  227. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  228. package/dist/esm/ic-checkbox.entry.js +1 -1
  229. package/dist/esm/ic-chip.entry.js +1 -1
  230. package/dist/esm/ic-data-row.entry.js +1 -1
  231. package/dist/esm/ic-dialog.entry.js +1 -1
  232. package/dist/esm/ic-divider.entry.js +1 -1
  233. package/dist/esm/ic-empty-state.entry.js +3 -13
  234. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  235. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  236. package/dist/esm/ic-footer-link.entry.js +1 -1
  237. package/dist/esm/ic-footer.entry.js +18 -7
  238. package/dist/esm/ic-footer.entry.js.map +1 -1
  239. package/dist/esm/ic-hero.entry.js +3 -10
  240. package/dist/esm/ic-hero.entry.js.map +1 -1
  241. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  242. package/dist/esm/ic-input-component-container_3.entry.js +28 -22
  243. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  244. package/dist/esm/ic-input-label_2.entry.js +1 -1
  245. package/dist/esm/ic-link.entry.js +1 -1
  246. package/dist/esm/ic-menu-group.entry.js +1 -1
  247. package/dist/esm/ic-menu-item.entry.js +1 -1
  248. package/dist/esm/ic-navigation-button.entry.js +1 -1
  249. package/dist/esm/ic-navigation-group.entry.js +1 -1
  250. package/dist/esm/ic-navigation-item.entry.js +1 -1
  251. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  252. package/dist/esm/ic-page-header.entry.js +1 -1
  253. package/dist/esm/ic-pagination-item.entry.js +1 -1
  254. package/dist/esm/ic-pagination.entry.js +1 -1
  255. package/dist/esm/ic-popover-menu.entry.js +1 -1
  256. package/dist/esm/ic-radio-group.entry.js +1 -1
  257. package/dist/esm/ic-radio-option.entry.js +1 -1
  258. package/dist/esm/ic-search-bar.entry.js +32 -28
  259. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  260. package/dist/esm/ic-select.entry.js +44 -32
  261. package/dist/esm/ic-select.entry.js.map +1 -1
  262. package/dist/esm/ic-side-navigation.entry.js +1 -1
  263. package/dist/esm/ic-status-tag.entry.js +1 -1
  264. package/dist/esm/ic-step.entry.js +1 -1
  265. package/dist/esm/ic-stepper.entry.js +1 -1
  266. package/dist/esm/ic-switch.entry.js +1 -1
  267. package/dist/esm/ic-tab-group.entry.js +1 -1
  268. package/dist/esm/ic-tab-panel.entry.js +1 -1
  269. package/dist/esm/ic-tab.entry.js +1 -1
  270. package/dist/esm/ic-text-field.entry.js +9 -7
  271. package/dist/esm/ic-text-field.entry.js.map +1 -1
  272. package/dist/esm/ic-theme.entry.js +1 -1
  273. package/dist/esm/ic-toast.entry.js +1 -1
  274. package/dist/esm/ic-toggle-button-group.entry.js +1 -1
  275. package/dist/esm/ic-toggle-button.entry.js +1 -1
  276. package/dist/esm/ic-top-navigation.entry.js +2 -2
  277. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  278. package/dist/esm/ic-typography.entry.js +1 -1
  279. package/dist/esm/index-d1d2c456.js +4 -4
  280. package/dist/esm/loader.js +1 -1
  281. package/dist/types/components/ic-alert/ic-alert.d.ts +0 -1
  282. package/dist/types/components/ic-card-vertical/ic-card-vertical.d.ts +0 -1
  283. package/dist/types/components/ic-empty-state/ic-empty-state.d.ts +0 -1
  284. package/dist/types/components/ic-footer/ic-footer.d.ts +1 -0
  285. package/dist/types/components/ic-hero/ic-hero.d.ts +0 -1
  286. package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +0 -1
  287. package/dist/types/components/ic-menu/ic-menu.d.ts +6 -1
  288. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +9 -2
  289. package/dist/types/components/ic-select/ic-select.d.ts +5 -4
  290. package/dist/types/components/ic-text-field/ic-text-field.d.ts +2 -1
  291. package/dist/types/components.d.ts +13 -3
  292. package/dist/types/testspec.setup.d.ts +9 -0
  293. package/dist/types/utils/helpers.d.ts +2 -0
  294. package/hydrate/index.js +150 -128
  295. package/package.json +2 -9
  296. package/vscode-data.json +1 -1
  297. package/dist/cjs/helpers-dd569d97.js.map +0 -1
  298. package/dist/components/ic-text-field2.js +0 -373
  299. package/dist/components/ic-text-field2.js.map +0 -1
  300. package/dist/core/p-3420a999.entry.js +0 -2
  301. package/dist/core/p-3bfc4a52.entry.js +0 -2
  302. package/dist/core/p-3bfc4a52.entry.js.map +0 -1
  303. package/dist/core/p-48e98730.js +0 -2
  304. package/dist/core/p-48e98730.js.map +0 -1
  305. package/dist/core/p-59800237.entry.js +0 -2
  306. package/dist/core/p-59800237.entry.js.map +0 -1
  307. package/dist/core/p-6159b077.entry.js +0 -2
  308. package/dist/core/p-6159b077.entry.js.map +0 -1
  309. package/dist/core/p-810744b5.entry.js +0 -2
  310. package/dist/core/p-810744b5.entry.js.map +0 -1
  311. package/dist/core/p-810f5a2d.entry.js.map +0 -1
  312. package/dist/core/p-8a2670c1.entry.js +0 -2
  313. package/dist/core/p-8a2670c1.entry.js.map +0 -1
  314. package/dist/core/p-aefebee9.entry.js +0 -2
  315. package/dist/core/p-aefebee9.entry.js.map +0 -1
  316. package/dist/core/p-c67f7603.entry.js +0 -2
  317. package/dist/core/p-c67f7603.entry.js.map +0 -1
  318. package/dist/core/p-c6e91e13.entry.js +0 -2
  319. package/dist/core/p-c6e91e13.entry.js.map +0 -1
  320. package/dist/core/p-ca27ab19.entry.js +0 -2
  321. package/dist/core/p-ca27ab19.entry.js.map +0 -1
  322. package/dist/core/p-cfe32b37.entry.js +0 -2
  323. package/dist/core/p-dcb2073d.entry.js +0 -2
  324. package/dist/esm/helpers-e594bfc6.js.map +0 -1
  325. /package/dist/core/{p-5ba8e679.entry.js.map → p-08a82b71.entry.js.map} +0 -0
  326. /package/dist/core/{p-5d417fc0.entry.js.map → p-12bd8ade.entry.js.map} +0 -0
  327. /package/dist/core/{p-ded2dbed.entry.js.map → p-13637d3f.entry.js.map} +0 -0
  328. /package/dist/core/{p-406e58af.entry.js.map → p-1425c78b.entry.js.map} +0 -0
  329. /package/dist/core/{p-4af52174.entry.js.map → p-16df8bcf.entry.js.map} +0 -0
  330. /package/dist/core/{p-1234f7a5.entry.js.map → p-1b1f7523.entry.js.map} +0 -0
  331. /package/dist/core/{p-bc7b8a1e.entry.js.map → p-2179e015.entry.js.map} +0 -0
  332. /package/dist/core/{p-b5439baa.entry.js.map → p-27933dfe.entry.js.map} +0 -0
  333. /package/dist/core/{p-c83e933c.entry.js.map → p-2aca1bac.entry.js.map} +0 -0
  334. /package/dist/core/{p-a24bcf5f.entry.js.map → p-30f91e2e.entry.js.map} +0 -0
  335. /package/dist/core/{p-98dbbb34.entry.js.map → p-34e89ebf.entry.js.map} +0 -0
  336. /package/dist/core/{p-b9aa801f.entry.js.map → p-353893b7.entry.js.map} +0 -0
  337. /package/dist/core/{p-0821fc5b.entry.js.map → p-3645c4e6.entry.js.map} +0 -0
  338. /package/dist/core/{p-225384ab.entry.js.map → p-4e57c7ba.entry.js.map} +0 -0
  339. /package/dist/core/{p-0b8c3770.entry.js.map → p-51990f23.entry.js.map} +0 -0
  340. /package/dist/core/{p-4dc48606.entry.js.map → p-5347f687.entry.js.map} +0 -0
  341. /package/dist/core/{p-6859019c.entry.js.map → p-538f1bb9.entry.js.map} +0 -0
  342. /package/dist/core/{p-07cd8a50.entry.js.map → p-5479be2b.entry.js.map} +0 -0
  343. /package/dist/core/{p-b51e378c.entry.js.map → p-5801598f.entry.js.map} +0 -0
  344. /package/dist/core/{p-c2b359d9.entry.js.map → p-5b118dec.entry.js.map} +0 -0
  345. /package/dist/core/{p-f42c0469.entry.js.map → p-5dcafe90.entry.js.map} +0 -0
  346. /package/dist/core/{p-705db6a5.entry.js.map → p-5e694b17.entry.js.map} +0 -0
  347. /package/dist/core/{p-b27dfa1b.entry.js.map → p-6331782f.entry.js.map} +0 -0
  348. /package/dist/core/{p-5d653608.entry.js.map → p-6a5d58bc.entry.js.map} +0 -0
  349. /package/dist/core/{p-9c1d4f72.entry.js.map → p-7a16046a.entry.js.map} +0 -0
  350. /package/dist/core/{p-3cfef37a.entry.js.map → p-7c39afb5.entry.js.map} +0 -0
  351. /package/dist/core/{p-a23c515d.entry.js.map → p-7e546e88.entry.js.map} +0 -0
  352. /package/dist/core/{p-520c6089.entry.js.map → p-8dda6121.entry.js.map} +0 -0
  353. /package/dist/core/{p-518ea375.entry.js.map → p-9505b0f1.entry.js.map} +0 -0
  354. /package/dist/core/{p-b2a41070.entry.js.map → p-a25d535a.entry.js.map} +0 -0
  355. /package/dist/core/{p-580b1593.entry.js.map → p-bafcbecc.entry.js.map} +0 -0
  356. /package/dist/core/{p-61510f00.entry.js.map → p-bdbce1a0.entry.js.map} +0 -0
  357. /package/dist/core/{p-4f72a02a.entry.js.map → p-cae08ac2.entry.js.map} +0 -0
  358. /package/dist/core/{p-7124b387.entry.js.map → p-d6ce4473.entry.js.map} +0 -0
  359. /package/dist/core/{p-193582d4.entry.js.map → p-dcdfe5f9.entry.js.map} +0 -0
  360. /package/dist/core/{p-3994d86d.entry.js.map → p-e9c078fa.entry.js.map} +0 -0
  361. /package/dist/core/{p-da85eaf6.entry.js.map → p-eb132c44.entry.js.map} +0 -0
  362. /package/dist/core/{p-0d505c1f.entry.js.map → p-eec110a7.entry.js.map} +0 -0
  363. /package/dist/core/{p-91c1327d.entry.js.map → p-f1b7e4f4.entry.js.map} +0 -0
  364. /package/dist/core/{p-d2909711.entry.js.map → p-f8890135.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-f982899d.js');
6
- const helpers = require('./helpers-dd569d97.js');
6
+ const helpers = require('./helpers-50fa27f6.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" />
@@ -64,28 +64,26 @@ const Select = class {
64
64
  this.blurredBecauseButtonPressed = true;
65
65
  this.retryButtonClick = true;
66
66
  this.hasSetDefaultValue = true;
67
- this.icRetryLoad.emit({ value: this.hiddenInputValue });
67
+ this.icRetryLoad.emit({
68
+ value: this.searchable
69
+ ? this.searchableSelectInputValue
70
+ : this.hiddenInputValue,
71
+ });
68
72
  };
69
73
  this.emitIcChange = (value) => {
70
- if (!this.searchable) {
71
- // If "Select all" button clicked, replace value with new value (array of all option values)
72
- if (this.multiple && !Array.isArray(value) && value !== null) {
73
- this.handleMultipleSelectChange(value);
74
- }
75
- else {
76
- this.value = value;
77
- }
74
+ // If "Select all" button clicked, replace value with new value (array of all option values)
75
+ if (this.multiple && !Array.isArray(value) && value !== null) {
76
+ this.handleMultipleSelectChange(String(value));
78
77
  }
79
- clearTimeout(this.debounceIcChange);
80
- this.debounceIcChange = window.setTimeout(() => {
81
- const valueToEmit = this.multiple ? this.value : value;
82
- this.icChange.emit({ value: valueToEmit });
83
- }, this.currDebounce);
78
+ else {
79
+ this.value = value;
80
+ }
81
+ const valueToEmit = this.multiple ? this.value : value;
82
+ this.icChange.emit({ value: valueToEmit });
84
83
  };
85
- this.emitImmediateIcChange = (value) => {
86
- this.value = value;
87
- clearTimeout(this.debounceIcChange);
88
- this.icChange.emit({ value });
84
+ this.emitIcInput = (value) => {
85
+ clearTimeout(this.debounceIcInput);
86
+ this.debounceIcInput = window.setTimeout(() => this.icInput.emit({ value }), this.currDebounce);
89
87
  };
90
88
  /**
91
89
  * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn
@@ -183,7 +181,7 @@ const Select = class {
183
181
  };
184
182
  this.handleNativeSelectChange = () => {
185
183
  this.icOptionSelect.emit({ value: this.nativeSelectElement.value });
186
- this.emitImmediateIcChange(this.nativeSelectElement.value);
184
+ this.emitIcChange(this.nativeSelectElement.value);
187
185
  this.setTextColor();
188
186
  };
189
187
  // Handle option select for when a custom input box and menu is rendered
@@ -318,13 +316,10 @@ const Select = class {
318
316
  event.stopPropagation();
319
317
  this.hasTimedOut = false;
320
318
  clearTimeout(this.timeoutTimer);
321
- this.noOptions = null;
322
- this.emitImmediateIcChange(null);
319
+ this.clearInput();
320
+ this.emitIcChange(null);
323
321
  this.icClear.emit();
324
322
  if (this.searchable) {
325
- this.searchableSelectElement.value = null;
326
- this.searchableSelectInputValue = null;
327
- this.filteredOptions = this.uniqueOptions;
328
323
  this.hiddenInputValue = null;
329
324
  this.searchableSelectElement.focus();
330
325
  }
@@ -348,7 +343,7 @@ const Select = class {
348
343
  this.pressedCharacters += key;
349
344
  this.handleFilter();
350
345
  if (!this.noOptions) {
351
- this.emitImmediateIcChange(this.filteredOptions[0].value);
346
+ this.emitIcChange(this.filteredOptions[0].value);
352
347
  }
353
348
  }
354
349
  }
@@ -493,9 +488,13 @@ const Select = class {
493
488
  };
494
489
  this.handleSearchableSelectInput = (event) => {
495
490
  this.searchableSelectInputValue = event.target.value;
496
- this.icInput.emit({ value: this.searchableSelectInputValue });
497
- this.emitIcChange(this.searchableSelectInputValue);
498
- this.hiddenInputValue = this.searchableSelectInputValue;
491
+ this.emitIcInput(this.searchableSelectInputValue);
492
+ // De-select previous selection when input is edited
493
+ // Only emit icChange once when editing input
494
+ if (this.value != null) {
495
+ this.emitIcChange(null);
496
+ }
497
+ this.hiddenInputValue = null;
499
498
  this.inputValueToFilter = this.searchableSelectInputValue;
500
499
  this.setMenuChange(true);
501
500
  if (!this.disableAutoFiltering) {
@@ -553,6 +552,10 @@ const Select = class {
553
552
  if (isSearchableAndNoFocusedInternalElements) {
554
553
  if (!this.retryButtonClick) {
555
554
  this.setMenuChange(false);
555
+ // Clear input field on blur when searchable if no option is selected
556
+ if (!this.value) {
557
+ this.clearInput();
558
+ }
556
559
  }
557
560
  this.handleFocusIndicatorDisplay();
558
561
  }
@@ -576,9 +579,17 @@ const Select = class {
576
579
  this.hiddenInputValue = this.value;
577
580
  }
578
581
  };
582
+ this.clearInput = () => {
583
+ this.noOptions = null;
584
+ if (this.searchable) {
585
+ this.searchableSelectElement.value = null;
586
+ this.searchableSelectInputValue = null;
587
+ this.filteredOptions = this.uniqueOptions;
588
+ }
589
+ };
579
590
  this.ariaActiveDescendant = undefined;
580
591
  this.clearButtonFocused = false;
581
- this.debounceIcChange = undefined;
592
+ this.debounceIcInput = undefined;
582
593
  this.hiddenInputValue = undefined;
583
594
  this.noOptions = null;
584
595
  this.open = false;
@@ -677,9 +688,10 @@ const Select = class {
677
688
  this.currValue = this.value;
678
689
  }
679
690
  }
680
- if (this.searchable) {
691
+ if (this.searchable && this.value) {
692
+ // Only set if value not null - prevents whole input value being cleared when edited
681
693
  this.searchableSelectInputValue =
682
- this.getLabelFromValue(this.currValue) ||
694
+ this.getLabelFromValue(String(this.currValue)) ||
683
695
  this.currValue;
684
696
  }
685
697
  }
@@ -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: var(--ic-hc-focus-outline);\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:host(.ic-select-disabled) .value-text,\n.placeholder {\n color: var(--ic-select-content-placeholder-text);\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 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.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 IcValueEventDetail,\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;\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() debounceIcChange: number;\n @State() hiddenInputValue: string;\n @State() noOptions: IcMenuOption[] = null;\n @State() open: boolean = false;\n @State() pressedCharacters: string = \"\";\n @State() searchableSelectInputValue: string = 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 = \"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 `icChange` 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[];\n @State() initialValue = this.value;\n @State() inputValueToFilter = this.value as string;\n @State() currValue = this.value;\n\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n if (this.value && this.multiple) {\n this.currValue = this.getValueSortedByOptions(this.value as string[]);\n this.updateMultiSelectedCountAriaLive();\n } else {\n this.currValue = this.value;\n }\n }\n\n if (this.searchable) {\n this.searchableSelectInputValue =\n this.getLabelFromValue(this.currValue as string) ||\n (this.currValue as string);\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<IcValueEventDetail>;\n\n /**\n * Emitted when the clear 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<IcValueEventDetail>;\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<IcValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\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 this.hiddenInputValue = this.searchable && (this.currValue as string);\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 (MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] =\n this.el.getAttribute(attributeName);\n forceComponentUpdate = true;\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<IcValueEventDetail>) => {\n if (ev.detail.keyPressed) this.searchableSelectElement?.focus();\n this.blurredBecauseButtonPressed = true;\n this.retryButtonClick = true;\n this.hasSetDefaultValue = true;\n this.icRetryLoad.emit({ value: this.hiddenInputValue });\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 (!this.searchable) {\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(value as string);\n } else {\n this.value = value;\n }\n }\n\n clearTimeout(this.debounceIcChange);\n this.debounceIcChange = window.setTimeout(() => {\n const valueToEmit = this.multiple ? this.value : value;\n this.icChange.emit({ value: valueToEmit });\n }, this.currDebounce);\n };\n\n private emitImmediateIcChange = (value: string) => {\n this.value = value;\n clearTimeout(this.debounceIcChange);\n this.icChange.emit({ value });\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 && this.options.map) {\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.selectedIndex === 0) {\n this.nativeSelectElement.className = \"placeholder\";\n } else {\n this.nativeSelectElement.className = \"select-option-selected\";\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?.map((value) =>\n this.getLabelFromValue(value)\n );\n return selectedLabels?.join(\", \");\n };\n\n private getFilteredChildMenuOptions = (option: IcMenuOption) => {\n let children = option.children;\n\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 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 this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitImmediateIcChange(this.nativeSelectElement.value);\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 if (this.searchable) {\n this.searchableSelectElement.focus();\n }\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 = this.getLabelFromValue(\n this.value as string\n );\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue = this.getValueFromLabel(\n this.searchableSelectInputValue\n );\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[];\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 = this.el.shadowRoot.querySelector(\".focus-indicator\");\n\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\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) {\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.noOptions = null;\n this.emitImmediateIcChange(null);\n this.icClear.emit();\n\n if (this.searchable) {\n this.searchableSelectElement.value = null;\n this.searchableSelectInputValue = null;\n this.filteredOptions = this.uniqueOptions;\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.emitImmediateIcChange(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.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.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): string | undefined => {\n return this.uniqueOptions.find((option) => option.label === label)?.value;\n };\n\n private handleSearchableSelectInput = (event: Event): void => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n this.icInput.emit({ value: this.searchableSelectInputValue });\n this.emitIcChange(this.searchableSelectInputValue);\n\n this.hiddenInputValue = this.searchableSelectInputValue;\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) || value || null;\n\n private setDefaultValue = (): void => {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue =\n this.searchable && this.getDefaultValue(this.currValue as string);\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 }\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 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,\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 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: HTMLElement) => (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>\n {multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string)}\n </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}\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 {this.searchableSelectInputValue &&\n (showClearButton || searchable) && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el: HTMLIcButtonElement) =>\n (this.clearButton = el)\n }\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}, ${this.getMultipleOptionsString(\n currValue as string[]\n )}`\n : this.getLabelFromValue(currValue as string)) ||\n 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\": currValue && showClearButton,\n placeholder:\n !this.value || (multiple && this.value.length < 1),\n }}\n >\n {(multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string)) ||\n placeholder}\n </ic-typography>\n <div class=\"select-input-end\">\n {currValue && showClearButton && (\n <div class=\"divider\"></div>\n )}\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 {currValue && showClearButton && (\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: HTMLIcMenuElement) => (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: var(--ic-hc-focus-outline);\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:host(.ic-select-disabled) .value-text,\n.placeholder {\n color: var(--ic-select-content-placeholder-text);\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 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.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 IcValueEventDetail,\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;\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() debounceIcInput: number;\n @State() hiddenInputValue: string;\n @State() noOptions: IcMenuOption[] = null;\n @State() open: boolean = false;\n @State() pressedCharacters: string = \"\";\n @State() searchableSelectInputValue: string = 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 = \"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[];\n @State() initialValue = this.value;\n @State() inputValueToFilter = this.value as string;\n @State() currValue = this.value;\n\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n if (this.value && this.multiple) {\n this.currValue = this.getValueSortedByOptions(this.value as string[]);\n this.updateMultiSelectedCountAriaLive();\n } else {\n this.currValue = this.value;\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)) ||\n (this.currValue as string);\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<IcValueEventDetail>;\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<IcValueEventDetail>;\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<IcValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\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 this.hiddenInputValue = this.searchable && (this.currValue as string);\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 (MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] =\n this.el.getAttribute(attributeName);\n forceComponentUpdate = true;\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<IcValueEventDetail>) => {\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 });\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 && this.options.map) {\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.selectedIndex === 0) {\n this.nativeSelectElement.className = \"placeholder\";\n } else {\n this.nativeSelectElement.className = \"select-option-selected\";\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?.map((value) =>\n this.getLabelFromValue(value)\n );\n return selectedLabels?.join(\", \");\n };\n\n private getFilteredChildMenuOptions = (option: IcMenuOption) => {\n let children = option.children;\n\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 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 this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitIcChange(this.nativeSelectElement.value);\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 if (this.searchable) {\n this.searchableSelectElement.focus();\n }\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 = this.getLabelFromValue(\n this.value as string\n );\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue = this.getValueFromLabel(\n this.searchableSelectInputValue\n );\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[];\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 = this.el.shadowRoot.querySelector(\".focus-indicator\");\n\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\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) {\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.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.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): string | undefined => {\n return this.uniqueOptions.find((option) => option.label === label)?.value;\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) || value || null;\n\n private setDefaultValue = (): void => {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue =\n this.searchable && this.getDefaultValue(this.currValue as string);\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.value = null;\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,\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 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: HTMLElement) => (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>\n {multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string)}\n </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}\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 {this.searchableSelectInputValue &&\n (showClearButton || searchable) && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el: HTMLIcButtonElement) =>\n (this.clearButton = el)\n }\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}, ${this.getMultipleOptionsString(\n currValue as string[]\n )}`\n : this.getLabelFromValue(currValue as string)) ||\n 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\": currValue && showClearButton,\n placeholder:\n !this.value || (multiple && this.value.length < 1),\n }}\n >\n {(multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string)) ||\n placeholder}\n </ic-typography>\n <div class=\"select-input-end\">\n {currValue && showClearButton && (\n <div class=\"divider\"></div>\n )}\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 {currValue && showClearButton && (\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: HTMLIcMenuElement) => (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}
@@ -5,7 +5,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  const index = require('./index-f982899d.js');
6
6
  const closeIcon = require('./close-icon-7f6ef8e4.js');
7
7
  const chevronIcon = require('./chevron-icon-3bf07531.js');
8
- const helpers = require('./helpers-dd569d97.js');
8
+ const helpers = require('./helpers-50fa27f6.js');
9
9
 
10
10
  const menuIcon = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
11
11
  <path d="M0 0h24v24H0V0z" fill="none" />
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-f982899d.js');
6
- const helpers = require('./helpers-dd569d97.js');
6
+ const helpers = require('./helpers-50fa27f6.js');
7
7
 
8
8
  const icStatusTagCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\"button\"]::-moz-focus-inner,[type=\"reset\"]::-moz-focus-inner,[type=\"submit\"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=\"button\"]:-moz-focusring,[type=\"reset\"]:-moz-focusring,[type=\"submit\"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=\"checkbox\"],[type=\"radio\"]{box-sizing:border-box;padding:0;}[type=\"number\"]::-webkit-inner-spin-button,[type=\"number\"]::-webkit-outer-spin-button{height:auto}[type=\"search\"]{-webkit-appearance:textfield;outline-offset:-2px;}[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}.tag{padding:var(--ic-space-xxs) var(--ic-space-sm);font-size:0.875rem;border-radius:var(--ic-space-md);display:inline-block;min-width:2.5rem;text-align:center;--ic-typography-color:var(--ic-status-tag-text)}.small{padding:var(--ic-space-xxxs) var(--ic-space-sm);border-radius:calc(var(--ic-space-md) - var(--ic-space-xxxs))}.large{padding:var(--ic-space-xs) var(--ic-space-sm);border-radius:calc(var(--ic-space-md) + var(--ic-space-xxs))}.filled-neutral{background-color:var(--ic-status-tag-neutral)}.filled-success{background-color:var(--ic-status-tag-success)}.filled-warning{background-color:var(--ic-status-tag-warning);--ic-typography-color:var(--ic-status-tag-text-inverted)}.filled-danger{background-color:var(--ic-status-tag-error)}.outlined{padding:calc(var(--ic-space-xxxs) + var(--ic-space-1px))\n calc(var(--ic-space-sm) - var(--ic-space-1px))}.outlined.small{padding:var(--ic-space-1px) calc(var(--ic-space-sm) - var(--ic-space-1px))}.outlined.large{padding:calc(var(--ic-space-xs) - var(--ic-space-1px))\n calc(var(--ic-space-sm) - var(--ic-space-1px))}.outlined-neutral{background-color:var(--ic-status-tag-outlined-background-neutral);border:var(--ic-border-width) solid var(--ic-status-tag-outlined-neutral);--ic-typography-color:var(--ic-status-tag-text-inverted)}.outlined-success{background-color:var(--ic-status-tag-outlined-background-success);border:var(--ic-border-width) solid var(--ic-status-tag-outlined-success);--ic-typography-color:var(--ic-status-tag-text-inverted)}.outlined-warning{background-color:var(--ic-status-tag-outlined-background-warning);border:var(--ic-border-width) solid var(--ic-status-tag-outlined-warning);--ic-typography-color:var(--ic-status-tag-text-inverted)}.outlined-danger{background-color:var(--ic-status-tag-outlined-background-error);border:var(--ic-border-width) solid var(--ic-status-tag-outlined-error);--ic-typography-color:var(--ic-status-tag-text-inverted)}@media (forced-colors: active){.tag{border:var(--ic-border-hc);-ms-high-contrast-adjust:none;forced-color-adjust:none}}";
9
9
 
@@ -4,7 +4,7 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-f982899d.js');
6
6
  const checkIcon = require('./check-icon-7225d79b.js');
7
- const helpers = require('./helpers-dd569d97.js');
7
+ const helpers = require('./helpers-50fa27f6.js');
8
8
 
9
9
  const warningIcon = `<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
10
10
  <path d="M7.99935 4.32666L13.0193 13H2.97935L7.99935 4.32666ZM7.99935 1.66666L0.666016 14.3333H15.3327L7.99935 1.66666ZM8.66602 11H7.33268V12.3333H8.66602V11ZM8.66602 6.99999H7.33268V9.66666H8.66602V6.99999Z" fill="currentColor"/>
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  const index = require('./index-f982899d.js');
6
- const helpers = require('./helpers-dd569d97.js');
6
+ const helpers = require('./helpers-50fa27f6.js');
7
7
 
8
8
  const icStepperCss = ":host{display:flex;width:100%}.step-item-list{display:flex;margin:0;padding:0}:host(.ic-stepper-default:not(.ic-stepper-aligned-left)) .step-item-list{flex:auto}:host(.ic-stepper-compact) ul ::slotted(ic-step){display:none}:host(.ic-stepper-compact) ul ::slotted(ic-step.show){display:flex}:host(.ic-stepper-compact) ul ::slotted(ic-step.hide){display:none;opacity:0;visibility:hidden}";
9
9