@ukic/web-components 2.1.0-beta.12 → 2.1.0-beta.13

Sign up to get free protection for your applications and to get access to all the features.
Files changed (376) hide show
  1. package/dist/cjs/core.cjs.js +2 -2
  2. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  3. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  4. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-button_3.cjs.entry.js +16 -5
  7. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-card.cjs.entry.js +2 -2
  9. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-checkbox-group.cjs.entry.js +14 -16
  11. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-checkbox.cjs.entry.js +9 -3
  13. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-chip.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-data-entity.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  20. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  22. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +145 -64
  25. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-menu-item.cjs.entry.js +2 -2
  30. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  33. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  35. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  36. package/dist/cjs/ic-pagination-item.cjs.entry.js +51 -0
  37. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -0
  38. package/dist/cjs/ic-pagination.cjs.entry.js +206 -0
  39. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -0
  40. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-search-bar.cjs.entry.js +79 -12
  45. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-section-container.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-select.cjs.entry.js +152 -44
  48. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-side-navigation.cjs.entry.js +11 -3
  50. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-skeleton.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-context.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  58. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  59. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  60. package/dist/cjs/ic-text-field.cjs.entry.js +18 -7
  61. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  64. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-top-navigation.cjs.entry.js +3 -5
  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-f79a4e53.js → index-a62312a7.js} +11 -1
  69. package/dist/cjs/index-a62312a7.js.map +1 -0
  70. package/dist/cjs/loader.cjs.js +2 -2
  71. package/dist/cjs/types-3eb02246.js.map +1 -1
  72. package/dist/collection/assets/pagination-first-last.svg +3 -0
  73. package/dist/collection/assets/pagination-next-previous.svg +3 -0
  74. package/dist/collection/collection-manifest.json +2 -0
  75. package/dist/collection/components/ic-button/ic-button.css +5 -1
  76. package/dist/collection/components/ic-card/ic-card.css +3 -0
  77. package/dist/collection/components/ic-checkbox/ic-checkbox.css +4 -1
  78. package/dist/collection/components/ic-checkbox/ic-checkbox.js +8 -1
  79. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  80. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +14 -20
  81. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  82. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.types.js.map +1 -1
  83. package/dist/collection/components/ic-menu/ic-menu.css +30 -1
  84. package/dist/collection/components/ic-menu/ic-menu.js +188 -63
  85. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  86. package/dist/collection/components/ic-menu-item/ic-menu-item.css +1 -6
  87. package/dist/collection/components/ic-pagination/ic-pagination.css +490 -0
  88. package/dist/collection/components/ic-pagination/ic-pagination.js +435 -0
  89. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -0
  90. package/dist/collection/components/ic-pagination/ic-pagination.test.a11y.js +11 -0
  91. package/dist/collection/components/ic-pagination/ic-pagination.test.a11y.js.map +1 -0
  92. package/dist/collection/components/ic-pagination/ic-pagination.types.js +2 -0
  93. package/dist/collection/components/ic-pagination/ic-pagination.types.js.map +1 -0
  94. package/dist/collection/components/ic-pagination-item/ic-pagination-item.css +581 -0
  95. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +225 -0
  96. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -0
  97. package/dist/collection/components/ic-pagination-item/ic-pagination-item.types.js +2 -0
  98. package/dist/collection/components/ic-pagination-item/ic-pagination-item.types.js.map +1 -0
  99. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +2 -1
  100. package/dist/collection/components/ic-search-bar/ic-search-bar.css +0 -4
  101. package/dist/collection/components/ic-search-bar/ic-search-bar.js +172 -11
  102. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  103. package/dist/collection/components/ic-select/ic-select.js +247 -44
  104. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  105. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +36 -16
  106. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +9 -1
  107. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  108. package/dist/collection/components/ic-text-field/ic-text-field.js +66 -12
  109. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  110. package/dist/collection/components/ic-tooltip/ic-tooltip.js +53 -4
  111. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  112. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +9 -0
  113. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +1 -3
  114. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  115. package/dist/collection/utils/types.js.map +1 -1
  116. package/dist/components/ic-button2.js +1 -1
  117. package/dist/components/ic-button2.js.map +1 -1
  118. package/dist/components/ic-card.js +1 -1
  119. package/dist/components/ic-card.js.map +1 -1
  120. package/dist/components/ic-checkbox-group.js +14 -17
  121. package/dist/components/ic-checkbox-group.js.map +1 -1
  122. package/dist/components/ic-checkbox.js +8 -2
  123. package/dist/components/ic-checkbox.js.map +1 -1
  124. package/dist/components/ic-menu-item2.js +1 -1
  125. package/dist/components/ic-menu-item2.js.map +1 -1
  126. package/dist/components/ic-menu2.js +164 -66
  127. package/dist/components/ic-menu2.js.map +1 -1
  128. package/dist/components/ic-pagination-item.d.ts +11 -0
  129. package/dist/components/ic-pagination-item.js +8 -0
  130. package/dist/components/ic-pagination-item.js.map +1 -0
  131. package/dist/components/ic-pagination-item2.js +77 -0
  132. package/dist/components/ic-pagination-item2.js.map +1 -0
  133. package/dist/components/ic-pagination.d.ts +11 -0
  134. package/dist/components/ic-pagination.js +266 -0
  135. package/dist/components/ic-pagination.js.map +1 -0
  136. package/dist/components/ic-popover-menu.js +1 -2
  137. package/dist/components/ic-popover-menu.js.map +1 -1
  138. package/dist/components/ic-search-bar.js +82 -12
  139. package/dist/components/ic-search-bar.js.map +1 -1
  140. package/dist/components/ic-select.js +157 -43
  141. package/dist/components/ic-select.js.map +1 -1
  142. package/dist/components/ic-side-navigation.js +10 -2
  143. package/dist/components/ic-side-navigation.js.map +1 -1
  144. package/dist/components/ic-text-field2.js +20 -8
  145. package/dist/components/ic-text-field2.js.map +1 -1
  146. package/dist/components/ic-tooltip2.js +1817 -8
  147. package/dist/components/ic-tooltip2.js.map +1 -1
  148. package/dist/components/ic-top-navigation.js +2 -4
  149. package/dist/components/ic-top-navigation.js.map +1 -1
  150. package/dist/components/index.d.ts +2 -0
  151. package/dist/components/index.js +2 -0
  152. package/dist/components/index.js.map +1 -1
  153. package/dist/components/types.js.map +1 -1
  154. package/dist/core/core.esm.js +1 -1
  155. package/dist/core/core.esm.js.map +1 -1
  156. package/dist/core/{p-0f0dfa16.entry.js → p-002a63e9.entry.js} +2 -2
  157. package/dist/core/{p-759c80a3.entry.js → p-0575a77f.entry.js} +2 -2
  158. package/dist/core/{p-3453aa9c.entry.js → p-0a41c3cb.entry.js} +2 -2
  159. package/dist/core/{p-b7fc1f35.entry.js → p-100dbcec.entry.js} +2 -2
  160. package/dist/core/{p-1bd4d07e.entry.js → p-14835d6f.entry.js} +2 -2
  161. package/dist/core/{p-28b2158b.entry.js → p-1eb0992b.entry.js} +2 -2
  162. package/dist/core/{p-62b3516e.entry.js → p-223a214f.entry.js} +2 -2
  163. package/dist/core/{p-dd71a986.entry.js → p-276f7ecb.entry.js} +2 -2
  164. package/dist/core/{p-3d84a743.entry.js → p-28bc3bf0.entry.js} +2 -2
  165. package/dist/core/{p-8ffa00c9.entry.js → p-312c10b0.entry.js} +2 -2
  166. package/dist/core/p-3845b769.entry.js +2 -0
  167. package/dist/core/p-3845b769.entry.js.map +1 -0
  168. package/dist/core/{p-cc62d065.entry.js → p-3a67718c.entry.js} +2 -2
  169. package/dist/core/p-3c23f963.entry.js +2 -0
  170. package/dist/core/p-3c23f963.entry.js.map +1 -0
  171. package/dist/core/{p-74a768bc.entry.js → p-3dc2ff7b.entry.js} +2 -2
  172. package/dist/core/p-3e5eb873.entry.js +2 -0
  173. package/dist/core/p-3e5eb873.entry.js.map +1 -0
  174. package/dist/core/{p-58ff516f.entry.js → p-3fb307e6.entry.js} +2 -2
  175. package/dist/core/{p-d2508752.entry.js → p-454b1ecd.entry.js} +2 -2
  176. package/dist/core/{p-7e309c50.entry.js → p-47b0ed42.entry.js} +2 -2
  177. package/dist/core/{p-68c84039.entry.js → p-4b87445b.entry.js} +2 -2
  178. package/dist/core/p-4c8fcfe6.entry.js +2 -0
  179. package/dist/core/p-4c8fcfe6.entry.js.map +1 -0
  180. package/dist/core/p-52fd3533.entry.js +2 -0
  181. package/dist/core/p-52fd3533.entry.js.map +1 -0
  182. package/dist/core/{p-0a463a65.entry.js → p-546b620e.entry.js} +2 -2
  183. package/dist/core/p-56fe91ad.entry.js +2 -0
  184. package/dist/core/p-56fe91ad.entry.js.map +1 -0
  185. package/dist/core/{p-5450cebf.js → p-589f6dd3.js} +3 -3
  186. package/dist/core/p-589f6dd3.js.map +1 -0
  187. package/dist/core/{p-dc4ba6a0.entry.js → p-5d077cf7.entry.js} +2 -2
  188. package/dist/core/{p-8c9cc4d5.entry.js → p-6a77992e.entry.js} +2 -2
  189. package/dist/core/{p-d27dbb63.entry.js → p-6b39f8b4.entry.js} +2 -2
  190. package/dist/core/p-6f57b13c.js.map +1 -1
  191. package/dist/core/p-80eff050.entry.js +2 -0
  192. package/dist/core/p-80eff050.entry.js.map +1 -0
  193. package/dist/core/p-864b46bf.entry.js +2 -0
  194. package/dist/core/p-864b46bf.entry.js.map +1 -0
  195. package/dist/core/{p-9e578e82.entry.js → p-8780890e.entry.js} +2 -2
  196. package/dist/core/{p-ff15c756.entry.js → p-895bda21.entry.js} +2 -2
  197. package/dist/core/{p-08535d97.entry.js → p-92c4fa7f.entry.js} +2 -2
  198. package/dist/core/{p-41459307.entry.js → p-9413d639.entry.js} +2 -2
  199. package/dist/core/{p-e17eea34.entry.js → p-a0f4e641.entry.js} +2 -2
  200. package/dist/core/{p-4d8392fe.entry.js → p-a33a04b2.entry.js} +2 -2
  201. package/dist/core/{p-65b94ddb.entry.js → p-a5bee11f.entry.js} +2 -2
  202. package/dist/core/{p-eeefddb5.entry.js → p-b61e76e2.entry.js} +2 -2
  203. package/dist/core/p-b61e76e2.entry.js.map +1 -0
  204. package/dist/core/p-c0813424.entry.js +2 -0
  205. package/dist/core/p-c0813424.entry.js.map +1 -0
  206. package/dist/core/{p-b5b03f86.entry.js → p-cb437317.entry.js} +2 -2
  207. package/dist/core/p-d5d9923a.entry.js +2 -0
  208. package/dist/core/p-d5d9923a.entry.js.map +1 -0
  209. package/dist/core/{p-f777679c.entry.js → p-db7131b6.entry.js} +2 -2
  210. package/dist/core/{p-6c9ce0ec.entry.js → p-dc0b9e80.entry.js} +2 -2
  211. package/dist/core/{p-1e0174dc.entry.js → p-de45134c.entry.js} +2 -2
  212. package/dist/core/{p-9daae2ae.entry.js → p-de891d3d.entry.js} +2 -2
  213. package/dist/core/p-e0f24ccd.entry.js +2 -0
  214. package/dist/core/p-e0f24ccd.entry.js.map +1 -0
  215. package/dist/core/{p-741b4ea3.entry.js → p-e384aaee.entry.js} +2 -2
  216. package/dist/core/{p-977af213.entry.js → p-e41e701a.entry.js} +2 -2
  217. package/dist/core/{p-deada16f.entry.js → p-e839e5dc.entry.js} +2 -2
  218. package/dist/core/{p-186ecccd.entry.js → p-ea526b54.entry.js} +2 -2
  219. package/dist/core/{p-eb7599cc.entry.js → p-ec8b228c.entry.js} +2 -2
  220. package/dist/core/{p-eb7599cc.entry.js.map → p-ec8b228c.entry.js.map} +1 -1
  221. package/dist/core/{p-4269584a.entry.js → p-f3e10149.entry.js} +2 -2
  222. package/dist/core/{p-ad2477d8.entry.js → p-fc7dce3d.entry.js} +2 -2
  223. package/dist/core/p-ff6583e6.entry.js +2 -0
  224. package/dist/core/p-ff6583e6.entry.js.map +1 -0
  225. package/dist/esm/core.js +2 -2
  226. package/dist/esm/ic-alert.entry.js +1 -1
  227. package/dist/esm/ic-back-to-top.entry.js +1 -1
  228. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  229. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  230. package/dist/esm/ic-button_3.entry.js +16 -5
  231. package/dist/esm/ic-button_3.entry.js.map +1 -1
  232. package/dist/esm/ic-card.entry.js +2 -2
  233. package/dist/esm/ic-card.entry.js.map +1 -1
  234. package/dist/esm/ic-checkbox-group.entry.js +14 -16
  235. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  236. package/dist/esm/ic-checkbox.entry.js +9 -3
  237. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  238. package/dist/esm/ic-chip.entry.js +1 -1
  239. package/dist/esm/ic-classification-banner.entry.js +1 -1
  240. package/dist/esm/ic-data-entity.entry.js +1 -1
  241. package/dist/esm/ic-data-row.entry.js +1 -1
  242. package/dist/esm/ic-divider.entry.js +1 -1
  243. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  244. package/dist/esm/ic-footer-link.entry.js +1 -1
  245. package/dist/esm/ic-footer.entry.js +1 -1
  246. package/dist/esm/ic-hero.entry.js +1 -1
  247. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  248. package/dist/esm/ic-input-component-container_3.entry.js +145 -64
  249. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  250. package/dist/esm/ic-input-label_2.entry.js +1 -1
  251. package/dist/esm/ic-link.entry.js +1 -1
  252. package/dist/esm/ic-menu-group.entry.js +1 -1
  253. package/dist/esm/ic-menu-item.entry.js +2 -2
  254. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  255. package/dist/esm/ic-navigation-button.entry.js +1 -1
  256. package/dist/esm/ic-navigation-group.entry.js +1 -1
  257. package/dist/esm/ic-navigation-item.entry.js +1 -1
  258. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  259. package/dist/esm/ic-page-header.entry.js +1 -1
  260. package/dist/esm/ic-pagination-item.entry.js +47 -0
  261. package/dist/esm/ic-pagination-item.entry.js.map +1 -0
  262. package/dist/esm/ic-pagination.entry.js +202 -0
  263. package/dist/esm/ic-pagination.entry.js.map +1 -0
  264. package/dist/esm/ic-popover-menu.entry.js +1 -1
  265. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  266. package/dist/esm/ic-radio-group.entry.js +1 -1
  267. package/dist/esm/ic-radio-option.entry.js +1 -1
  268. package/dist/esm/ic-search-bar.entry.js +79 -12
  269. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  270. package/dist/esm/ic-section-container.entry.js +1 -1
  271. package/dist/esm/ic-select.entry.js +152 -44
  272. package/dist/esm/ic-select.entry.js.map +1 -1
  273. package/dist/esm/ic-side-navigation.entry.js +11 -3
  274. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  275. package/dist/esm/ic-skeleton.entry.js +1 -1
  276. package/dist/esm/ic-status-tag.entry.js +1 -1
  277. package/dist/esm/ic-step.entry.js +1 -1
  278. package/dist/esm/ic-stepper.entry.js +1 -1
  279. package/dist/esm/ic-switch.entry.js +1 -1
  280. package/dist/esm/ic-tab-context.entry.js +1 -1
  281. package/dist/esm/ic-tab-group.entry.js +1 -1
  282. package/dist/esm/ic-tab-panel.entry.js +1 -1
  283. package/dist/esm/ic-tab.entry.js +1 -1
  284. package/dist/esm/ic-text-field.entry.js +18 -7
  285. package/dist/esm/ic-text-field.entry.js.map +1 -1
  286. package/dist/esm/ic-theme.entry.js +1 -1
  287. package/dist/esm/ic-toast-region.entry.js +1 -1
  288. package/dist/esm/ic-toast.entry.js +1 -1
  289. package/dist/esm/ic-top-navigation.entry.js +3 -5
  290. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  291. package/dist/esm/ic-typography.entry.js +1 -1
  292. package/dist/esm/{index-90721b3c.js → index-3b144b17.js} +11 -2
  293. package/dist/esm/index-3b144b17.js.map +1 -0
  294. package/dist/esm/loader.js +2 -2
  295. package/dist/esm/types-dd515332.js.map +1 -1
  296. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +1 -3
  297. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.types.d.ts +5 -0
  298. package/dist/types/components/ic-menu/ic-menu.d.ts +26 -7
  299. package/dist/types/components/ic-pagination/ic-pagination.d.ts +74 -0
  300. package/dist/types/components/ic-pagination/ic-pagination.test.a11y.d.ts +1 -0
  301. package/dist/types/components/ic-pagination/ic-pagination.types.d.ts +4 -0
  302. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +46 -0
  303. package/dist/types/components/ic-pagination-item/ic-pagination-item.types.d.ts +1 -0
  304. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +30 -1
  305. package/dist/types/components/ic-select/ic-select.d.ts +31 -1
  306. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +2 -1
  307. package/dist/types/components/ic-text-field/ic-text-field.d.ts +11 -2
  308. package/dist/types/components/ic-tooltip/ic-tooltip.d.ts +7 -0
  309. package/dist/types/components.d.ts +282 -19
  310. package/dist/types/utils/types.d.ts +3 -0
  311. package/hydrate/index.js +743 -159
  312. package/package.json +3 -3
  313. package/dist/cjs/index-f79a4e53.js.map +0 -1
  314. package/dist/components/popper.js +0 -1801
  315. package/dist/components/popper.js.map +0 -1
  316. package/dist/core/p-0d4ccf6a.entry.js +0 -2
  317. package/dist/core/p-0d4ccf6a.entry.js.map +0 -1
  318. package/dist/core/p-5450cebf.js.map +0 -1
  319. package/dist/core/p-6e1f5022.entry.js +0 -2
  320. package/dist/core/p-6e1f5022.entry.js.map +0 -1
  321. package/dist/core/p-7c2b09c8.entry.js +0 -2
  322. package/dist/core/p-7c2b09c8.entry.js.map +0 -1
  323. package/dist/core/p-8959dd7d.entry.js +0 -2
  324. package/dist/core/p-8959dd7d.entry.js.map +0 -1
  325. package/dist/core/p-90d6dbd6.entry.js +0 -2
  326. package/dist/core/p-90d6dbd6.entry.js.map +0 -1
  327. package/dist/core/p-a8e969ea.entry.js +0 -2
  328. package/dist/core/p-a8e969ea.entry.js.map +0 -1
  329. package/dist/core/p-bb505d2a.entry.js +0 -2
  330. package/dist/core/p-bb505d2a.entry.js.map +0 -1
  331. package/dist/core/p-ce96a494.entry.js +0 -2
  332. package/dist/core/p-ce96a494.entry.js.map +0 -1
  333. package/dist/core/p-e4390415.entry.js +0 -2
  334. package/dist/core/p-e4390415.entry.js.map +0 -1
  335. package/dist/core/p-eeefddb5.entry.js.map +0 -1
  336. package/dist/core/p-f0244b5a.entry.js +0 -2
  337. package/dist/core/p-f0244b5a.entry.js.map +0 -1
  338. package/dist/esm/index-90721b3c.js.map +0 -1
  339. /package/dist/core/{p-0f0dfa16.entry.js.map → p-002a63e9.entry.js.map} +0 -0
  340. /package/dist/core/{p-759c80a3.entry.js.map → p-0575a77f.entry.js.map} +0 -0
  341. /package/dist/core/{p-3453aa9c.entry.js.map → p-0a41c3cb.entry.js.map} +0 -0
  342. /package/dist/core/{p-b7fc1f35.entry.js.map → p-100dbcec.entry.js.map} +0 -0
  343. /package/dist/core/{p-1bd4d07e.entry.js.map → p-14835d6f.entry.js.map} +0 -0
  344. /package/dist/core/{p-28b2158b.entry.js.map → p-1eb0992b.entry.js.map} +0 -0
  345. /package/dist/core/{p-62b3516e.entry.js.map → p-223a214f.entry.js.map} +0 -0
  346. /package/dist/core/{p-dd71a986.entry.js.map → p-276f7ecb.entry.js.map} +0 -0
  347. /package/dist/core/{p-3d84a743.entry.js.map → p-28bc3bf0.entry.js.map} +0 -0
  348. /package/dist/core/{p-8ffa00c9.entry.js.map → p-312c10b0.entry.js.map} +0 -0
  349. /package/dist/core/{p-cc62d065.entry.js.map → p-3a67718c.entry.js.map} +0 -0
  350. /package/dist/core/{p-74a768bc.entry.js.map → p-3dc2ff7b.entry.js.map} +0 -0
  351. /package/dist/core/{p-58ff516f.entry.js.map → p-3fb307e6.entry.js.map} +0 -0
  352. /package/dist/core/{p-d2508752.entry.js.map → p-454b1ecd.entry.js.map} +0 -0
  353. /package/dist/core/{p-7e309c50.entry.js.map → p-47b0ed42.entry.js.map} +0 -0
  354. /package/dist/core/{p-68c84039.entry.js.map → p-4b87445b.entry.js.map} +0 -0
  355. /package/dist/core/{p-0a463a65.entry.js.map → p-546b620e.entry.js.map} +0 -0
  356. /package/dist/core/{p-dc4ba6a0.entry.js.map → p-5d077cf7.entry.js.map} +0 -0
  357. /package/dist/core/{p-8c9cc4d5.entry.js.map → p-6a77992e.entry.js.map} +0 -0
  358. /package/dist/core/{p-d27dbb63.entry.js.map → p-6b39f8b4.entry.js.map} +0 -0
  359. /package/dist/core/{p-9e578e82.entry.js.map → p-8780890e.entry.js.map} +0 -0
  360. /package/dist/core/{p-ff15c756.entry.js.map → p-895bda21.entry.js.map} +0 -0
  361. /package/dist/core/{p-08535d97.entry.js.map → p-92c4fa7f.entry.js.map} +0 -0
  362. /package/dist/core/{p-41459307.entry.js.map → p-9413d639.entry.js.map} +0 -0
  363. /package/dist/core/{p-e17eea34.entry.js.map → p-a0f4e641.entry.js.map} +0 -0
  364. /package/dist/core/{p-4d8392fe.entry.js.map → p-a33a04b2.entry.js.map} +0 -0
  365. /package/dist/core/{p-65b94ddb.entry.js.map → p-a5bee11f.entry.js.map} +0 -0
  366. /package/dist/core/{p-b5b03f86.entry.js.map → p-cb437317.entry.js.map} +0 -0
  367. /package/dist/core/{p-f777679c.entry.js.map → p-db7131b6.entry.js.map} +0 -0
  368. /package/dist/core/{p-6c9ce0ec.entry.js.map → p-dc0b9e80.entry.js.map} +0 -0
  369. /package/dist/core/{p-1e0174dc.entry.js.map → p-de45134c.entry.js.map} +0 -0
  370. /package/dist/core/{p-9daae2ae.entry.js.map → p-de891d3d.entry.js.map} +0 -0
  371. /package/dist/core/{p-741b4ea3.entry.js.map → p-e384aaee.entry.js.map} +0 -0
  372. /package/dist/core/{p-977af213.entry.js.map → p-e41e701a.entry.js.map} +0 -0
  373. /package/dist/core/{p-deada16f.entry.js.map → p-e839e5dc.entry.js.map} +0 -0
  374. /package/dist/core/{p-186ecccd.entry.js.map → p-ea526b54.entry.js.map} +0 -0
  375. /package/dist/core/{p-4269584a.entry.js.map → p-f3e10149.entry.js.map} +0 -0
  376. /package/dist/core/{p-ad2477d8.entry.js.map → p-fc7dce3d.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"file":"ic-search-bar.entry.cjs.js","mappings":"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","names":["handleHiddenFormButtonClick","getFilteredMenuOptions","getLabelFromValue","onComponentRequiredPropUndefined","getInputDescribedByText","renderHiddenInput","h","Host","IcThemeForegroundEnum"],"sources":["./src/components/ic-search-bar/ic-search-bar.css?tag=ic-search-bar&encapsulation=shadow","./src/components/ic-search-bar/ic-search-bar.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-menu: z-index of search bar menu\n */\n\n:host(.search) {\n --divider-height: 1.5rem;\n}\n\n:host(.search.small) {\n --divider-height: 1rem;\n}\n\n:host(.fullwidth) {\n width: 100%;\n}\n\n:host(.search) .disabled:hover {\n border-color: var(--ic-architectural-200);\n}\n\n:host(.search.disabled) .disabled svg {\n color: var(--ic-architectural-200);\n}\n\n:host(.search) .disabled svg {\n color: var(--ic-architectural-400);\n}\n\n/* CLEAR */\n\n.clear-button-container {\n align-items: center;\n margin-right: var(--ic-space-1px);\n display: none;\n visibility: hidden;\n}\n\n.clear-button {\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus,\n.clear-button:active {\n background-color: var(--ic-focus-blue);\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.clear-button:active * {\n fill: white;\n}\n\n.clear-button-visible {\n visibility: visible;\n display: flex;\n}\n\n.search-submit-button-container {\n display: flex;\n align-items: center;\n}\n\n.search-submit-button-disabled .ic-tooltip-container {\n display: none !important;\n}\n\n.search-submit-button:focus,\n.search-submit-button:active {\n background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow) !important;\n border-radius: var(--ic-space-xxs);\n}\n\n.search-submit-button:focus,\n.search-submit-button:active * {\n fill: white;\n}\n\n.divider {\n width: var(--ic-space-1px);\n background-color: var(--ic-action-dark-active);\n height: var(--divider-height);\n}\n\n:host(.dark) .divider {\n background-color: var(--ic-architectural-200);\n}\n\n.menu-container {\n width: var(--input-width, 20rem);\n position: relative;\n top: var(--ic-space-xxxs);\n}\n\n.menu-container.fullwidth {\n width: 100%;\n}\n\nic-menu {\n transition: var(--ic-easing-transition-slow);\n}\n\n.no-results {\n cursor: not-allowed;\n}\n\n.search-results-status {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n margin-bottom: calc(-1 * var(--ic-space-1px));\n margin-right: calc(-1 * 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","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n Method,\n h,\n} from \"@stencil/core\";\n\nimport {\n IcAutocompleteTypes,\n IcAutocorrectStates,\n IcThemeForegroundEnum,\n IcMenuOption,\n} from \"../../utils/types\";\nimport {\n getInputDescribedByText,\n renderHiddenInput,\n handleHiddenFormButtonClick,\n getLabelFromValue,\n onComponentRequiredPropUndefined,\n getFilteredMenuOptions,\n} from \"../../utils/helpers\";\nimport { IcSearchBarBlurEventDetail } from \"./ic-search-bar.types\";\nimport { IcValueEventDetail, IcBlurEventDetail } from \"../../interface\";\nimport {\n IcMenuChangeEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\n\nimport clearIcon from \"../../assets/clear-icon.svg\";\nimport searchIcon from \"../../assets/search-icon.svg\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-search-bar\",\n styleUrl: \"ic-search-bar.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class SearchBar {\n @Element() el: HTMLIcSearchBarElement;\n\n private inputId = `ic-search-bar-input-${inputIds++}`;\n private inputEl: HTMLIcTextFieldElement;\n\n private menuId = `${this.inputId}-menu`;\n private searchSubmitButton: HTMLIcButtonElement;\n private menu: HTMLIcMenuElement;\n private menuCloseFromMenuChangeEvent: boolean = false;\n\n private anchorEl: HTMLElement;\n private truncateValue = false;\n\n private assistiveHintEl: HTMLSpanElement = null;\n private preventSubmit: boolean = false;\n private debounceAriaLive: number;\n\n /**\n * The label for the search bar.\n */\n @Prop() label!: string;\n\n /**\n * If `true`, the search bar will require a value.\n */\n @Prop() required?: boolean = false;\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * The placeholder value to display.\n */\n @Prop() placeholder?: string = \"Search\";\n\n /**\n * Specify whether the search bar fills the full width of the container.\n * If `true`, this overrides the --input-width CSS variable.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * Specify whether to disable the built in filtering. For example, if options will already be filtered from external source.\n * If `true`, all options provided will be displayed.\n */\n @Prop() disableFilter?: boolean = false;\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 * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * If `true`, the small styling will be applied to the search bar.\n */\n @Prop() small?: boolean = false;\n\n /**\n * The value of the search input.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n\n /**\n * The automatic capitalisation of the text value as it is entered/edited by the user.\n * Available options: \"off\", \"none\", \"on\", \"sentences\", \"words\", \"characters\".\n */\n @Prop() autocapitalize = \"off\";\n\n /**\n * The state of autocompletion the browser can apply on the text value.\n */\n @Prop() autocomplete?: IcAutocompleteTypes = \"off\";\n\n /**\n * The state of autocorrection the browser can apply when the user is entering/editing the text value.\n */\n @Prop() autocorrect?: IcAutocorrectStates = \"off\";\n\n /**\n * If `true`, the form control will have input focus when the page loads.\n */\n @Prop() autofocus = false;\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\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * If `true`, the value of the search will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n /**\n * The suggested search options.\n */\n @Prop() options?: IcMenuOption[] = [];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n if (this.disableFilter) {\n if (newOptions.length > 0) {\n this.filteredOptions = newOptions;\n } else {\n if (this.hadNoOptions()) {\n return;\n }\n this.setMenuChange(true);\n this.filteredOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n }\n }\n this.debounceAriaLiveUpdate();\n }\n\n /**\n * If `true`, the search bar will be focused when component loaded.\n */\n @Prop() focusOnLoad?: boolean = false;\n\n /**\n * The hint text for the hidden assistive description element.\n */\n @Prop() hintText?: string =\n \"When autocomplete results are available use the up and down arrows to choose and press enter to select\";\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 number of characters until suggestions appear.\n */\n @Prop() charactersUntilSuggestion: number = 2;\n\n @Watch(\"value\")\n watchValueHandler(newValue: string): void {\n if (\n this.inputEl &&\n this.options &&\n !!getLabelFromValue(newValue, this.options)\n ) {\n this.inputEl.value = getLabelFromValue(newValue, this.options);\n } else if (this.inputEl && this.inputEl.value !== newValue) {\n this.inputEl.value = newValue;\n }\n }\n\n /**\n * Sets focus on the native `input`.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.inputEl) {\n this.inputEl.setFocus();\n }\n }\n\n @Listen(\"icKeydown\", {})\n handleKeyDown(ev: CustomEvent): void {\n const keyEv: KeyboardEvent = ev.detail.event;\n if (this.menu && this.open) {\n this.menu.handleKeyboardOpen(keyEv);\n }\n }\n\n @Listen(\"keyup\", {})\n handleKeyUp(ev: KeyboardEvent): void {\n if (ev.key === \"Enter\") {\n if (this.preventSubmit || this.isSubmitDisabled()) {\n return;\n }\n\n this.handleSubmitSearch();\n this.setMenuChange(false);\n }\n\n if (ev.key === \"Escape\") {\n this.setMenuChange(false);\n }\n\n if (this.preventSubmit) {\n this.preventSubmit = false;\n }\n }\n\n private handleSubmitSearch = () => {\n this.highlightedValue && (this.value = this.highlightedValue);\n this.highlightedValue = undefined;\n this.icSubmitSearch.emit({ value: this.value });\n\n const form: HTMLFormElement = this.el.closest(\"FORM\");\n\n if (this.searchSubmitButton && !!form && !this.preventSubmit) {\n handleHiddenFormButtonClick(form, this.searchSubmitButton);\n }\n };\n\n private handleSubmitSearchKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === \" \") {\n ev.preventDefault();\n this.handleSubmitSearch();\n }\n };\n\n // The icInput event is defined here so that it appears as an event for search bar\n // The actual event is emitted from the child ic-text-field\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n private onInput = (ev: Event) => {\n this.value = (ev.target as HTMLInputElement).value;\n\n const noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n\n if (this.options.length > 0) {\n this.setMenuChange(true);\n\n if (this.disableFilter === false) {\n const rawFilteredOptions = getFilteredMenuOptions(\n this.options,\n false,\n this.value,\n \"anywhere\"\n );\n\n this.filteredOptions =\n rawFilteredOptions.length > 0 ? rawFilteredOptions : noOptions;\n }\n }\n\n if (!this.showClearButton) {\n this.handleShowClearButton(true);\n }\n\n this.debounceAriaLiveUpdate();\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAriaLive);\n\n this.debounceAriaLive = window.setTimeout(() => {\n this.updateSearchResultAriaLive();\n }, 500);\n }\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarBlur instead.\n */\n @Event() icInputBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n private onInputBlur = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icInputBlur.emit({ value: value, relatedTarget: nextFocus });\n };\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarFocus instead.\n */\n @Event() icInputFocus: EventEmitter<IcValueEventDetail>;\n private onInputFocus = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n this.icInputFocus.emit({ value: value });\n\n this.handleShowClearButton(true);\n };\n\n // The icChange event is defined here so that it appears as an event for search bar\n // The actual event is emitted from the child ic-text-field\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when value is cleared with clear button\n */\n @Event() icClear: EventEmitter<void>;\n private handleClear = (ev: Event) => {\n const keyboardEvent = ev as KeyboardEvent;\n const mouseEvent = ev as MouseEvent;\n\n if (\n mouseEvent.type === \"click\" ||\n keyboardEvent.code === \"Enter\" ||\n keyboardEvent.code === \"Space\"\n ) {\n this.value = \"\";\n this.inputEl.value = \"\";\n this.el.setFocus();\n\n this.icClear.emit();\n ev.preventDefault();\n\n this.preventSubmit = true;\n }\n };\n\n private handleMouseDown = (ev: Event) => {\n ev.preventDefault();\n };\n\n /**\n * Emitted when the search value has been submitted\n */\n @Event() icSubmitSearch: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when option is highlighted within the menu\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the state of the menu changes (i.e. open or close)\n */\n @Event() icMenuChange: EventEmitter<IcMenuChangeEventDetail>;\n /**\n * @internal - Emitted when blur is invoked from clear button\n */\n @Event() icClearBlur: EventEmitter<IcBlurEventDetail>;\n private handleClearBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icClearBlur.emit({ relatedTarget: nextFocus });\n\n this.clearButtonFocused = false;\n };\n\n /**\n * @internal - Emitted when blur is invoked from search submit button\n */\n @Event() icSubmitSearchBlur: EventEmitter<IcBlurEventDetail>;\n private handleSubmitSearchBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icSubmitSearchBlur.emit({ relatedTarget: nextFocus });\n\n this.searchSubmitFocused = false;\n };\n\n private handleSubmitSearchFocus = () => {\n this.handleMenuCloseFromMenuChange(true);\n this.searchSubmitFocused = true;\n };\n\n /**\n * Emitted when blur is invoked from ic-search-bar\n */\n @Event() icSearchBarBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n\n /**\n * Emitted when focus is invoked from ic-search-bar\n */\n @Event() icSearchBarFocus: EventEmitter<void>;\n\n @State() open: boolean = false;\n @State() filteredOptions: IcMenuOption[] = [];\n @State() ariaActiveDescendant: string;\n @State() showClearButton: boolean = false;\n @State() clearButtonFocused: boolean = false;\n @State() searchSubmitFocused: boolean = false;\n @State() prevNoOption: boolean = false;\n @State() highlightedValue: string;\n\n private handleOptionSelect = (ev: CustomEvent) => {\n if (ev.detail.label === this.emptyOptionListText) {\n this.el.setFocus();\n return;\n }\n\n this.value = ev.detail.value;\n this.icOptionSelect.emit({ value: this.value });\n };\n\n private handleMenuOptionHighlight = (ev: CustomEvent) => {\n const optionValue = ev.detail.optionId?.replace(`${this.menuId}-`, \"\");\n optionValue && (this.highlightedValue = optionValue);\n if (ev.detail.optionId) {\n this.ariaActiveDescendant = ev.detail.optionId;\n } else {\n this.ariaActiveDescendant = undefined;\n }\n };\n\n private handleMenuChange = (ev: CustomEvent) => {\n this.setMenuChange(ev.detail.open);\n if (!ev.detail.open) {\n this.handleMenuCloseFromMenuChange(true);\n if (ev.detail.focusInput === undefined || ev.detail.focusInput) {\n this.el.setFocus();\n }\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n this.icMenuChange.emit({ open });\n }\n };\n\n private handleHostFocus = () => {\n if (this.options && this.value && !this.menuCloseFromMenuChangeEvent) {\n this.setMenuChange(true);\n }\n this.handleTruncateValue(false);\n\n this.icSearchBarFocus.emit();\n };\n\n private handleHostBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n if (this.open && this.options && nextFocus !== this.menu) {\n this.setMenuChange(false);\n }\n\n this.handleShowClearButton(false);\n this.handleMenuCloseFromMenuChange(false);\n this.handleTruncateValue(true);\n this.icSearchBarBlur.emit({ relatedTarget: nextFocus, value: this.value });\n };\n\n private handleShowClearButton = (visible: boolean): void => {\n this.showClearButton = visible;\n };\n\n private handleFocusClearButton = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleMenuCloseFromMenuChange = (fromEvent: boolean): void => {\n this.menuCloseFromMenuChangeEvent = fromEvent;\n };\n\n private handleTruncateValue = (truncate: boolean): void => {\n this.truncateValue = truncate;\n };\n\n private renderAssistiveHintEl = (): void => {\n const input = this.el.shadowRoot\n .querySelector(\"ic-text-field\")\n ?.shadowRoot?.querySelector(`#${this.inputId}`);\n\n if (\n input &&\n Object.keys(input).length > 0 &&\n this.hasOptionsOrFilterDisabled()\n ) {\n this.assistiveHintEl = document.createElement(\"span\");\n this.assistiveHintEl.innerText = this.hintText;\n this.assistiveHintEl.id = `${this.inputId}-assistive-hint`;\n this.assistiveHintEl.style.display = \"none\";\n if (input.after !== undefined) {\n input.after(this.assistiveHintEl);\n }\n }\n };\n\n private updateSearchResultAriaLive = (): void => {\n const searchResultsStatusEl = this.el.shadowRoot.querySelector(\n \".search-results-status\"\n ) as HTMLParagraphElement;\n\n if (\n !this.open ||\n this.value === \"\" ||\n this.value.length < this.charactersUntilSuggestion\n ) {\n searchResultsStatusEl.innerText = \"\";\n } else if (\n this.hasOptionsOrFilterDisabled() &&\n this.filteredOptions.length > 0 &&\n this.open &&\n searchResultsStatusEl\n ) {\n if (this.hadNoOptions()) {\n searchResultsStatusEl.innerText = this.emptyOptionListText;\n } else {\n searchResultsStatusEl.innerText = `${\n this.filteredOptions.length\n } result${this.filteredOptions.length > 1 ? \"s\" : \"\"} available`;\n }\n }\n };\n\n private hasOptionsOrFilterDisabled = (): boolean =>\n this.options.length > 0 || this.disableFilter;\n\n private hadNoOptions = (): boolean =>\n this.filteredOptions.length === 1 &&\n this.filteredOptions[0].label === this.emptyOptionListText;\n\n private isSubmitDisabled = (): boolean => {\n const valueNotSet =\n this.value === undefined || this.value === null || this.value === \"\";\n const valueLengthLess = this.value.length < this.charactersUntilSuggestion;\n return (\n valueNotSet || valueLengthLess || this.disabled || this.hadNoOptions()\n );\n };\n\n private highlightFirstOptionAfterNoResults = () => {\n if (this.prevNoOption && this.menu) {\n this.menu.handleSetFirstOption();\n this.prevNoOption = false;\n }\n const prevNoOptionsList = this.filteredOptions.find(\n (filteredOption) => filteredOption.label === this.emptyOptionListText\n );\n if (prevNoOptionsList) {\n this.prevNoOption = true;\n }\n };\n\n componentWillRender(): void {\n this.highlightFirstOptionAfterNoResults();\n }\n\n componentWillLoad(): void {\n this.watchValueHandler(this.value);\n }\n\n componentDidLoad(): void {\n if (this.focusOnLoad) {\n this.el.setFocus();\n }\n\n if (this.hasOptionsOrFilterDisabled()) {\n this.renderAssistiveHintEl();\n if (this.disableFilter) {\n this.filteredOptions = this.options;\n }\n }\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Search Bar\"\n );\n\n if (this.inputEl !== undefined) {\n this.anchorEl = this.inputEl.shadowRoot.querySelector(\n \"ic-input-component-container\"\n );\n }\n }\n\n disconnectedCallback(): void {\n if (this.assistiveHintEl) {\n this.assistiveHintEl.remove();\n }\n }\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n small,\n placeholder,\n helperText,\n disabled,\n value,\n readonly,\n spellcheck,\n fullWidth,\n options,\n open,\n hideLabel,\n menuId,\n ariaActiveDescendant,\n truncateValue,\n autofocus,\n autocapitalize,\n autocomplete,\n filteredOptions,\n } = this;\n\n const disabledMode = readonly || disabled ? true : false;\n\n const describedBy = getInputDescribedByText(\n inputId,\n helperText !== \"\",\n false\n ).trim();\n\n let describedById;\n\n if (describedBy !== \"\" && this.hasOptionsOrFilterDisabled()) {\n describedById = `${describedBy} ${this.inputId}-assistive-hint`;\n } else if (this.hasOptionsOrFilterDisabled()) {\n describedById = `${this.inputId}-assistive-hint`;\n } else if (describedBy !== \"\") {\n describedById = describedBy;\n } else {\n describedById = undefined;\n }\n\n const disabledText = disabledMode && !readonly;\n const hasSuggestedSearch = value && this.hasOptionsOrFilterDisabled();\n const menuOpen = hasSuggestedSearch && open && filteredOptions.length > 0;\n\n let expanded;\n\n if (options.length > 0) {\n if (menuOpen) {\n expanded = \"true\";\n } else {\n expanded = \"false\";\n }\n } else {\n expanded = undefined;\n }\n\n renderHiddenInput(true, this.el, name, value, disabledMode);\n\n return (\n <Host\n class={{\n [\"search\"]: true,\n [\"fullwidth\"]: fullWidth,\n [\"disabled\"]: disabled,\n [\"small\"]: small,\n }}\n onFocus={this.handleHostFocus}\n onBlur={this.handleHostBlur}\n >\n <ic-text-field\n ref={(el) => (this.inputEl = el)}\n inputId={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabledText}\n readonly={readonly}\n small={small}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n name={name}\n truncateValue={truncateValue}\n value={\n options && !!getLabelFromValue(value, options)\n ? getLabelFromValue(value, options)\n : value\n }\n placeholder={placeholder}\n onInput={this.onInput}\n onBlur={this.onInputBlur}\n onFocus={this.onInputFocus}\n aria-label={hideLabel ? label : \"\"}\n aria-describedby={describedById}\n aria-owns={hasSuggestedSearch ? menuId : undefined}\n aria-haspopup={options.length > 0 ? \"listbox\" : undefined}\n ariaExpanded={expanded}\n ariaActiveDescendant={ariaActiveDescendant}\n aria-autocomplete={hasSuggestedSearch ? \"list\" : undefined}\n role={hasSuggestedSearch ? \"combobox\" : undefined}\n autocomplete={autocomplete}\n autocapitalize={autocapitalize}\n autoFocus={autofocus}\n spellcheck={spellcheck}\n inputmode=\"search\"\n debounce={this.debounce}\n >\n <div\n class={{\n \"clear-button-container\": true,\n \"clear-button-visible\":\n value && !disabledMode && this.showClearButton,\n }}\n slot=\"clear-button\"\n >\n <ic-button\n id=\"clear-button\"\n class=\"clear-button\"\n aria-label=\"Clear\"\n innerHTML={clearIcon}\n onClick={this.handleClear}\n onMouseDown={this.handleMouseDown}\n size={small ? \"small\" : \"default\"}\n onFocus={this.handleFocusClearButton}\n onBlur={this.handleClearBlur}\n onKeyDown={this.handleClear}\n type=\"submit\"\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n <div\n class={{\n \"search-submit-button-container\": true,\n \"search-submit-button-disabled\": this.isSubmitDisabled(),\n }}\n slot=\"search-submit-button\"\n >\n <ic-button\n id=\"search-submit-button\"\n aria-label=\"Search\"\n ref={(el) => (this.searchSubmitButton = el)}\n class={{\n [\"search-submit-button\"]: true,\n [\"search-submit-button-small\"]: !!small,\n }}\n disabled={this.isSubmitDisabled()}\n innerHTML={searchIcon}\n size={small ? \"small\" : \"default\"}\n onClick={this.handleSubmitSearch}\n onMouseDown={this.handleMouseDown}\n onBlur={this.handleSubmitSearchBlur}\n onFocus={this.handleSubmitSearchFocus}\n onKeyDown={this.handleSubmitSearchKeyDown}\n type=\"submit\"\n variant=\"icon\"\n appearance={\n this.searchSubmitFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Default\n }\n ></ic-button>\n </div>\n <div\n class={{\n \"menu-container\": true,\n fullwidth: fullWidth,\n }}\n slot=\"menu\"\n >\n {menuOpen && value.length >= this.charactersUntilSuggestion && (\n <ic-menu\n class={{\n \"no-results\": this.hadNoOptions(),\n }}\n activationType=\"manual\"\n anchorEl={this.anchorEl}\n autoFocusOnSelected={false}\n inputEl={this.inputEl}\n inputLabel={label}\n ref={(el) => (this.menu = el)}\n small={small}\n fullWidth={fullWidth}\n menuId={menuId}\n open={true}\n options={filteredOptions}\n onMenuOptionSelect={this.handleOptionSelect}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionId={this.handleMenuOptionHighlight}\n parentEl={this.el}\n value={value}\n ></ic-menu>\n )}\n </div>\n </ic-text-field>\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"search-results-status\"\n ></div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"ic-search-bar.entry.cjs.js","mappings":"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","names":["handleHiddenFormButtonClick","getFilteredMenuOptions","getLabelFromValue","onComponentRequiredPropUndefined","getInputDescribedByText","renderHiddenInput","h","Host","IcThemeForegroundEnum"],"sources":["./src/components/ic-search-bar/ic-search-bar.css?tag=ic-search-bar&encapsulation=shadow","./src/components/ic-search-bar/ic-search-bar.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --ic-z-index-menu: z-index of search bar menu\n */\n\n:host(.search) {\n --divider-height: 1.5rem;\n}\n\n:host(.search.small) {\n --divider-height: 1rem;\n}\n\n:host(.fullwidth) {\n width: 100%;\n}\n\n:host(.search) .disabled:hover {\n border-color: var(--ic-architectural-200);\n}\n\n:host(.search.disabled) .disabled svg {\n color: var(--ic-architectural-200);\n}\n\n:host(.search) .disabled svg {\n color: var(--ic-architectural-400);\n}\n\n/* CLEAR */\n\n.clear-button-container {\n align-items: center;\n margin-right: var(--ic-space-1px);\n display: none;\n visibility: hidden;\n}\n\n.clear-button {\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus,\n.clear-button:active {\n background-color: var(--ic-focus-blue);\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.clear-button:active * {\n fill: white;\n}\n\n.clear-button-visible {\n visibility: visible;\n display: flex;\n}\n\n.search-submit-button-container {\n display: flex;\n align-items: center;\n}\n\n.search-submit-button-disabled .ic-tooltip-container {\n display: none !important;\n}\n\n.search-submit-button:focus,\n.search-submit-button:active {\n background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 0.125rem var(--ic-focus-glow) !important;\n border-radius: var(--ic-space-xxs);\n}\n\n.search-submit-button:focus,\n.search-submit-button:active * {\n fill: white;\n}\n\n.divider {\n width: var(--ic-space-1px);\n background-color: var(--ic-action-dark-active);\n height: var(--divider-height);\n}\n\n:host(.dark) .divider {\n background-color: var(--ic-architectural-200);\n}\n\n.menu-container {\n width: var(--input-width, 20rem);\n position: relative;\n top: var(--ic-space-xxxs);\n}\n\n.menu-container.fullwidth {\n width: 100%;\n}\n\n.no-results {\n cursor: not-allowed;\n}\n\n.search-results-status {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n margin-bottom: calc(-1 * var(--ic-space-1px));\n margin-right: calc(-1 * 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","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n Method,\n h,\n} from \"@stencil/core\";\n\nimport {\n IcAutocompleteTypes,\n IcAutocorrectStates,\n IcThemeForegroundEnum,\n IcMenuOption,\n} from \"../../utils/types\";\nimport {\n getInputDescribedByText,\n renderHiddenInput,\n handleHiddenFormButtonClick,\n getLabelFromValue,\n onComponentRequiredPropUndefined,\n getFilteredMenuOptions,\n} from \"../../utils/helpers\";\nimport { IcSearchBarBlurEventDetail } from \"./ic-search-bar.types\";\nimport { IcValueEventDetail, IcBlurEventDetail } from \"../../interface\";\nimport {\n IcMenuChangeEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\n\nimport clearIcon from \"../../assets/clear-icon.svg\";\nimport searchIcon from \"../../assets/search-icon.svg\";\n\nlet inputIds = 0;\n\n@Component({\n tag: \"ic-search-bar\",\n styleUrl: \"ic-search-bar.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class SearchBar {\n @Element() el: HTMLIcSearchBarElement;\n\n private inputId = `ic-search-bar-input-${inputIds++}`;\n private inputEl: HTMLIcTextFieldElement;\n\n private menuId = `${this.inputId}-menu`;\n private searchSubmitButton: HTMLIcButtonElement;\n private menu: HTMLIcMenuElement;\n private menuCloseFromMenuChangeEvent: boolean = false;\n\n private anchorEl: HTMLElement;\n private truncateValue = false;\n\n private assistiveHintEl: HTMLSpanElement = null;\n private preventSubmit: boolean = false;\n private debounceAriaLive: number;\n\n private timeoutTimer: number;\n private prevNoOption: boolean = false;\n private hasTimedOut = false;\n private preLoad = true;\n private retryViaKeyPress: boolean;\n private retryButtonClick: boolean = false;\n\n /**\n * The label for the search bar.\n */\n @Prop() label!: string;\n\n /**\n * If `true`, the search bar will require a value.\n */\n @Prop() required?: boolean = false;\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * The placeholder value to display.\n */\n @Prop() placeholder?: string = \"Search\";\n\n /**\n * Specify whether the search bar fills the full width of the container.\n * If `true`, this overrides the --input-width CSS variable.\n */\n @Prop() fullWidth?: boolean = false;\n\n /**\n * Specify whether to disable the built in filtering. For example, if options will already be filtered from external source.\n * If `true`, all options provided will be displayed.\n */\n @Prop() disableFilter?: boolean = false;\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 * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * If `true`, the small styling will be applied to the search bar.\n */\n @Prop() small?: boolean = false;\n\n /**\n * The value of the search input.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n\n /**\n * The automatic capitalisation of the text value as it is entered/edited by the user.\n * Available options: \"off\", \"none\", \"on\", \"sentences\", \"words\", \"characters\".\n */\n @Prop() autocapitalize = \"off\";\n\n /**\n * The state of autocompletion the browser can apply on the text value.\n */\n @Prop() autocomplete?: IcAutocompleteTypes = \"off\";\n\n /**\n * The state of autocorrection the browser can apply when the user is entering/editing the text value.\n */\n @Prop() autocorrect?: IcAutocorrectStates = \"off\";\n\n /**\n * If `true`, the form control will have input focus when the page loads.\n */\n @Prop() autofocus = false;\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\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * If `true`, the value of the search will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n /**\n * The suggested search options.\n */\n @Prop() options?: IcMenuOption[] = [];\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * Change the message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel?: string = \"Loading...\";\n\n /**\n * Change the message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel?: string = \"Loading Error\";\n\n /**\n * Trigger loading state when fetching options asyncronously\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n if (newValue && !this.hasTimedOut) {\n this.preLoad = false;\n this.triggerLoading();\n }\n }\n\n @Watch(\"filteredOptions\")\n filteredOptionsHandler(newOptions: IcMenuOption[]): void {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n }\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n if (this.disableFilter && !this.hasTimedOut) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n if (newOptions.length > 0) {\n this.filteredOptions = newOptions;\n } else {\n if (this.hadNoOptions()) {\n return;\n }\n this.setMenuChange(true);\n !this.preLoad &&\n (this.filteredOptions = [\n { label: this.emptyOptionListText, value: \"\" },\n ]);\n this.preLoad = true;\n }\n }\n this.debounceAriaLiveUpdate();\n }\n\n /**\n * If `true`, the search bar will be focused when component loaded.\n */\n @Prop() focusOnLoad?: boolean = false;\n\n /**\n * The hint text for the hidden assistive description element.\n */\n @Prop() hintText?: string =\n \"When autocomplete results are available use the up and down arrows to choose and press enter to select\";\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 number of characters until suggestions appear.\n */\n @Prop() charactersUntilSuggestion: number = 2;\n\n @Watch(\"value\")\n watchValueHandler(newValue: string): void {\n if (\n this.inputEl &&\n this.options &&\n !!getLabelFromValue(newValue, this.options)\n ) {\n this.inputEl.value = getLabelFromValue(newValue, this.options);\n } else if (this.inputEl && this.inputEl.value !== newValue) {\n this.inputEl.value = newValue;\n }\n }\n\n /**\n * Sets focus on the native `input`.\n */\n @Method()\n async setFocus(): Promise<void> {\n this.retryViaKeyPress = false;\n this.retryButtonClick = false;\n if (this.inputEl) {\n this.inputEl.setFocus();\n }\n }\n\n @Listen(\"icKeydown\", {})\n handleKeyDown(ev: CustomEvent): void {\n const keyEv: KeyboardEvent = ev.detail.event;\n if (this.menu && this.open) {\n this.menu.handleKeyboardOpen(keyEv);\n }\n }\n\n @Listen(\"keyup\", {})\n handleKeyUp(ev: KeyboardEvent): void {\n if (ev.key === \"Enter\") {\n if (this.preventSubmit || this.isSubmitDisabled()) {\n return;\n }\n\n this.handleSubmitSearch();\n this.setMenuChange(false);\n }\n\n if (ev.key === \"Escape\") {\n this.setMenuChange(false);\n }\n\n if (this.preventSubmit) {\n this.preventSubmit = false;\n }\n }\n\n private handleSubmitSearch = () => {\n this.highlightedValue && (this.value = this.highlightedValue);\n this.highlightedValue = undefined;\n this.icSubmitSearch.emit({ value: this.value });\n\n const form: HTMLFormElement = this.el.closest(\"FORM\");\n\n if (this.searchSubmitButton && !!form && !this.preventSubmit) {\n handleHiddenFormButtonClick(form, this.searchSubmitButton);\n }\n };\n\n private handleSubmitSearchKeyDown = (ev: KeyboardEvent) => {\n if (ev.key === \" \") {\n ev.preventDefault();\n this.handleSubmitSearch();\n }\n };\n\n private handleRetry = (ev: CustomEvent<IcValueEventDetail>) => {\n this.retryViaKeyPress = ev.detail.keyPressed === \"Enter\";\n this.icRetryLoad.emit({ value: ev.detail.value });\n this.triggerLoading();\n this.retryButtonClick = true;\n };\n\n private triggerLoading = () => {\n const loadingOption: IcMenuOption[] = [\n { label: this.loadingLabel, value: \"\", loading: true },\n ];\n if (this.filteredOptions !== loadingOption)\n this.filteredOptions = loadingOption;\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.filteredOptions = [\n { label: this.loadingErrorLabel, value: \"\", timedOut: true },\n ];\n }, this.timeout);\n }\n };\n\n // The icInput event is defined here so that it appears as an event for search bar\n // The actual event is emitted from the child ic-text-field\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n private onInput = (ev: Event) => {\n this.value = (ev.target as HTMLInputElement).value;\n\n const noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n\n if (this.options.length > 0) {\n this.setMenuChange(true);\n\n if (this.disableFilter === false) {\n const rawFilteredOptions = getFilteredMenuOptions(\n this.options,\n false,\n this.value,\n \"anywhere\"\n );\n\n this.filteredOptions =\n rawFilteredOptions.length > 0 ? rawFilteredOptions : noOptions;\n }\n }\n\n if (!this.showClearButton) {\n this.handleShowClearButton(true);\n }\n\n this.debounceAriaLiveUpdate();\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAriaLive);\n\n this.debounceAriaLive = window.setTimeout(() => {\n this.updateSearchResultAriaLive();\n }, 500);\n }\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarBlur instead.\n */\n @Event() icInputBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n private onInputBlur = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icInputBlur.emit({ value: value, relatedTarget: nextFocus });\n };\n\n /**\n * @deprecated This event should not be used anymore. Use icSearchBarFocus instead.\n */\n @Event() icInputFocus: EventEmitter<IcValueEventDetail>;\n private onInputFocus = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n this.icInputFocus.emit({ value: value });\n\n this.handleShowClearButton(true);\n };\n\n // The icChange event is defined here so that it appears as an event for search bar\n // The actual event is emitted from the child ic-text-field\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when value is cleared with clear button\n */\n @Event() icClear: EventEmitter<void>;\n private handleClear = (ev: Event) => {\n const keyboardEvent = ev as KeyboardEvent;\n const mouseEvent = ev as MouseEvent;\n\n if (\n mouseEvent.type === \"click\" ||\n keyboardEvent.code === \"Enter\" ||\n keyboardEvent.code === \"Space\"\n ) {\n this.value = \"\";\n this.inputEl.value = \"\";\n this.el.setFocus();\n\n this.icClear.emit();\n ev.preventDefault();\n\n this.preventSubmit = true;\n }\n };\n\n private handleMouseDown = (ev: Event) => {\n ev.preventDefault();\n };\n\n /**\n * Emitted when the search value has been submitted\n */\n @Event() icSubmitSearch: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when option is highlighted within the menu\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the state of the menu changes (i.e. open or close)\n */\n @Event() icMenuChange: EventEmitter<IcMenuChangeEventDetail>;\n /**\n * @internal - Emitted when blur is invoked from clear button\n */\n @Event() icClearBlur: EventEmitter<IcBlurEventDetail>;\n private handleClearBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icClearBlur.emit({ relatedTarget: nextFocus });\n\n this.clearButtonFocused = false;\n };\n\n /**\n * @internal - Emitted when blur is invoked from search submit button\n */\n @Event() icSubmitSearchBlur: EventEmitter<IcBlurEventDetail>;\n private handleSubmitSearchBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icSubmitSearchBlur.emit({ relatedTarget: nextFocus });\n\n this.searchSubmitFocused = false;\n };\n\n private handleSubmitSearchFocus = () => {\n this.handleMenuCloseFromMenuChange(true);\n this.searchSubmitFocused = true;\n };\n\n /**\n * Emitted when blur is invoked from ic-search-bar\n */\n @Event() icSearchBarBlur: EventEmitter<IcSearchBarBlurEventDetail>;\n\n /**\n * Emitted when focus is invoked from ic-search-bar\n */\n @Event() icSearchBarFocus: EventEmitter<void>;\n\n /**\n * Emitted when the 'retry loading' button is clicked\n */\n @Event() icRetryLoad: EventEmitter<IcValueEventDetail>;\n\n @State() open: boolean = false;\n @State() filteredOptions: IcMenuOption[] = [];\n @State() ariaActiveDescendant: string;\n @State() showClearButton: boolean = false;\n @State() clearButtonFocused: boolean = false;\n @State() searchSubmitFocused: boolean = false;\n @State() highlightedValue: string;\n\n private handleOptionSelect = (ev: CustomEvent) => {\n if (ev.detail.label === this.emptyOptionListText) {\n this.el.setFocus();\n return;\n }\n\n this.value = ev.detail.value;\n this.icOptionSelect.emit({ value: this.value });\n };\n\n private handleMenuOptionHighlight = (ev: CustomEvent) => {\n const optionValue = ev.detail.optionId?.replace(`${this.menuId}-`, \"\");\n optionValue && (this.highlightedValue = optionValue);\n if (ev.detail.optionId) {\n this.ariaActiveDescendant = ev.detail.optionId;\n } else {\n this.ariaActiveDescendant = undefined;\n }\n };\n\n private handleMenuChange = (ev: CustomEvent) => {\n this.setMenuChange(ev.detail.open);\n if (!ev.detail.open) {\n this.handleMenuCloseFromMenuChange(true);\n if (ev.detail.focusInput === undefined || ev.detail.focusInput) {\n this.el.setFocus();\n }\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n this.icMenuChange.emit({ open });\n }\n };\n\n private handleHostFocus = () => {\n if (this.options && this.value && !this.menuCloseFromMenuChangeEvent) {\n this.setMenuChange(true);\n }\n this.handleTruncateValue(false);\n\n this.icSearchBarFocus.emit();\n };\n\n private handleHostBlur = (ev: Event) => {\n const nextFocus = (ev as FocusEvent).relatedTarget;\n if (\n this.open &&\n this.options &&\n nextFocus !== this.menu &&\n !this.retryViaKeyPress &&\n !this.retryButtonClick\n ) {\n this.setMenuChange(false);\n }\n\n if (this.retryButtonClick || this.retryViaKeyPress) {\n this.inputEl.setFocus();\n }\n\n this.handleShowClearButton(false);\n this.handleMenuCloseFromMenuChange(false);\n this.handleTruncateValue(true);\n this.icSearchBarBlur.emit({ relatedTarget: nextFocus, value: this.value });\n this.retryViaKeyPress = false;\n this.retryButtonClick = false;\n };\n\n private handleShowClearButton = (visible: boolean): void => {\n this.showClearButton = visible;\n };\n\n private handleFocusClearButton = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleMenuCloseFromMenuChange = (fromEvent: boolean): void => {\n this.menuCloseFromMenuChangeEvent = fromEvent;\n };\n\n private handleTruncateValue = (truncate: boolean): void => {\n this.truncateValue = truncate;\n };\n\n private renderAssistiveHintEl = (): void => {\n const input = this.el.shadowRoot\n .querySelector(\"ic-text-field\")\n ?.shadowRoot?.querySelector(`#${this.inputId}`);\n\n if (\n input &&\n Object.keys(input).length > 0 &&\n this.hasOptionsOrFilterDisabled()\n ) {\n this.assistiveHintEl = document.createElement(\"span\");\n this.assistiveHintEl.innerText = this.hintText;\n this.assistiveHintEl.id = `${this.inputId}-assistive-hint`;\n this.assistiveHintEl.style.display = \"none\";\n if (input.after !== undefined) {\n input.after(this.assistiveHintEl);\n }\n }\n };\n\n private updateSearchResultAriaLive = (): void => {\n const searchResultsStatusEl = this.el.shadowRoot.querySelector(\n \".search-results-status\"\n ) as HTMLParagraphElement;\n\n if (\n !this.open ||\n this.value === \"\" ||\n this.value.length < this.charactersUntilSuggestion\n ) {\n searchResultsStatusEl.innerText = \"\";\n } else if (\n this.hasOptionsOrFilterDisabled() &&\n this.filteredOptions.length > 0 &&\n this.open &&\n searchResultsStatusEl &&\n !this.filteredOptions[0].loading\n ) {\n if (this.hadNoOptions()) {\n searchResultsStatusEl.innerText = this.emptyOptionListText;\n } else {\n searchResultsStatusEl.innerText = `${\n this.filteredOptions.length\n } result${this.filteredOptions.length > 1 ? \"s\" : \"\"} available`;\n }\n }\n };\n\n private hasOptionsOrFilterDisabled = (): boolean =>\n this.options.length > 0 || this.disableFilter;\n\n private hadNoOptions = (): boolean =>\n this.filteredOptions.length === 1 &&\n this.filteredOptions[0].label === this.emptyOptionListText;\n\n private isSubmitDisabled = (): boolean => {\n const valueNotSet =\n this.value === undefined || this.value === null || this.value === \"\";\n const valueLengthLess = this.value.length < this.charactersUntilSuggestion;\n return (\n valueNotSet ||\n valueLengthLess ||\n this.disabled ||\n this.hadNoOptions() ||\n this.hasTimedOut ||\n this.loading\n );\n };\n\n private highlightFirstOptionAfterNoResults = () => {\n if (this.prevNoOption && this.menu && !this.hasTimedOut) {\n this.menu.handleSetFirstOption();\n this.prevNoOption = false;\n }\n const prevNoOptionsList = this.filteredOptions.find(\n (filteredOption) =>\n filteredOption.label === this.emptyOptionListText ||\n filteredOption.label === this.loadingErrorLabel ||\n filteredOption.label === this.loadingLabel\n );\n if (prevNoOptionsList) {\n this.prevNoOption = true;\n }\n };\n\n componentWillRender(): void {\n this.highlightFirstOptionAfterNoResults();\n }\n\n componentWillLoad(): void {\n this.watchValueHandler(this.value);\n }\n\n componentDidLoad(): void {\n if (this.focusOnLoad) {\n this.el.setFocus();\n }\n\n if (this.hasOptionsOrFilterDisabled()) {\n this.renderAssistiveHintEl();\n if (this.disableFilter) {\n this.filteredOptions = this.options;\n }\n }\n\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Search Bar\"\n );\n\n if (this.inputEl !== undefined) {\n this.anchorEl = this.inputEl.shadowRoot.querySelector(\n \"ic-input-component-container\"\n );\n }\n }\n\n disconnectedCallback(): void {\n if (this.assistiveHintEl) {\n this.assistiveHintEl.remove();\n }\n }\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n small,\n placeholder,\n helperText,\n disabled,\n value,\n readonly,\n spellcheck,\n fullWidth,\n options,\n open,\n hideLabel,\n menuId,\n ariaActiveDescendant,\n truncateValue,\n autofocus,\n autocapitalize,\n autocomplete,\n filteredOptions,\n } = this;\n\n const disabledMode = readonly || disabled ? true : false;\n\n const describedBy = getInputDescribedByText(\n inputId,\n helperText !== \"\",\n false\n ).trim();\n\n let describedById;\n\n if (describedBy !== \"\" && this.hasOptionsOrFilterDisabled()) {\n describedById = `${describedBy} ${this.inputId}-assistive-hint`;\n } else if (this.hasOptionsOrFilterDisabled()) {\n describedById = `${this.inputId}-assistive-hint`;\n } else if (describedBy !== \"\") {\n describedById = describedBy;\n } else {\n describedById = undefined;\n }\n\n const disabledText = disabledMode && !readonly;\n const hasSuggestedSearch = value && this.hasOptionsOrFilterDisabled();\n const menuOpen = hasSuggestedSearch && open && filteredOptions.length > 0;\n const isOrHasLoaded =\n this.filteredOptions.length === 1 &&\n (this.filteredOptions[0].label === this.loadingLabel ||\n filteredOptions[0].label === this.loadingErrorLabel);\n\n let expanded;\n\n if (options.length > 0) {\n if (menuOpen) {\n expanded = \"true\";\n } else {\n expanded = \"false\";\n }\n } else {\n expanded = undefined;\n }\n\n renderHiddenInput(true, this.el, name, value, disabledMode);\n\n return (\n <Host\n class={{\n [\"search\"]: true,\n [\"fullwidth\"]: fullWidth,\n [\"disabled\"]: disabled,\n [\"small\"]: small,\n }}\n onFocus={this.handleHostFocus}\n onBlur={this.handleHostBlur}\n >\n <ic-text-field\n ref={(el) => (this.inputEl = el)}\n inputId={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabledText}\n readonly={readonly}\n small={small}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n name={name}\n truncateValue={truncateValue}\n value={\n options && !!getLabelFromValue(value, options)\n ? getLabelFromValue(value, options)\n : value\n }\n placeholder={placeholder}\n onInput={this.onInput}\n onBlur={this.onInputBlur}\n onFocus={this.onInputFocus}\n aria-label={hideLabel ? label : \"\"}\n aria-describedby={describedById}\n aria-owns={hasSuggestedSearch ? menuId : undefined}\n aria-haspopup={options.length > 0 ? \"listbox\" : undefined}\n ariaExpanded={expanded}\n ariaActiveDescendant={ariaActiveDescendant}\n aria-autocomplete={hasSuggestedSearch ? \"list\" : undefined}\n role={hasSuggestedSearch ? \"combobox\" : undefined}\n autocomplete={autocomplete}\n autocapitalize={autocapitalize}\n autoFocus={autofocus}\n spellcheck={spellcheck}\n inputmode=\"search\"\n debounce={this.debounce}\n >\n <div\n class={{\n \"clear-button-container\": true,\n \"clear-button-visible\":\n value && !disabledMode && this.showClearButton,\n }}\n slot=\"clear-button\"\n >\n <ic-button\n id=\"clear-button\"\n class=\"clear-button\"\n aria-label=\"Clear\"\n innerHTML={clearIcon}\n onClick={this.handleClear}\n onMouseDown={this.handleMouseDown}\n size={small ? \"small\" : \"default\"}\n onFocus={this.handleFocusClearButton}\n onBlur={this.handleClearBlur}\n onKeyDown={this.handleClear}\n type=\"submit\"\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n <div\n class={{\n \"search-submit-button-container\": true,\n \"search-submit-button-disabled\": this.isSubmitDisabled(),\n }}\n slot=\"search-submit-button\"\n >\n <ic-button\n id=\"search-submit-button\"\n aria-label=\"Search\"\n ref={(el) => (this.searchSubmitButton = el)}\n class={{\n [\"search-submit-button\"]: true,\n [\"search-submit-button-small\"]: !!small,\n }}\n disabled={this.isSubmitDisabled()}\n innerHTML={searchIcon}\n size={small ? \"small\" : \"default\"}\n onClick={this.handleSubmitSearch}\n onMouseDown={this.handleMouseDown}\n onBlur={this.handleSubmitSearchBlur}\n onFocus={this.handleSubmitSearchFocus}\n onKeyDown={this.handleSubmitSearchKeyDown}\n type=\"submit\"\n variant=\"icon\"\n appearance={\n this.searchSubmitFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Default\n }\n ></ic-button>\n </div>\n <div\n class={{\n \"menu-container\": true,\n fullwidth: fullWidth,\n }}\n slot=\"menu\"\n >\n {menuOpen && value.length >= this.charactersUntilSuggestion && (\n <ic-menu\n class={{\n \"no-results\": this.hadNoOptions() || isOrHasLoaded,\n }}\n activationType=\"manual\"\n anchorEl={this.anchorEl}\n autoFocusOnSelected={false}\n inputEl={this.inputEl}\n inputLabel={label}\n ref={(el) => (this.menu = el)}\n small={small}\n fullWidth={fullWidth}\n menuId={menuId}\n open={true}\n options={filteredOptions}\n onMenuOptionSelect={this.handleOptionSelect}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionId={this.handleMenuOptionHighlight}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n value={value}\n ></ic-menu>\n )}\n </div>\n </ic-text-field>\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"search-results-status\"\n ></div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-f79a4e53.js');
5
+ const index = require('./index-a62312a7.js');
6
6
 
7
7
  const icSectionContainerCss = "/*! 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}@media only screen and (max-width: 576px){:host{--section-container-margin:var(--ic-space-xs);--section-container-max-width:var(--ic-breakpoint-sm)}}@media only screen and (min-width: 577px){:host{--section-container-margin:var(--ic-space-md);--section-container-max-width:var(--ic-breakpoint-md)}}@media only screen and (min-width: 769px){:host{--section-container-margin:var(--ic-space-md);--section-container-max-width:var(--ic-breakpoint-lg)}}@media only screen and (min-width: 993px){:host{--section-container-margin:var(--ic-space-md);--section-container-max-width:var(--ic-breakpoint-xl)}}@media only screen and (min-width: 1201px){:host{--section-container-margin:var(--ic-space-lg);--section-container-max-width:var(--ic-breakpoint-xl)}}:host{display:block;padding-top:var(--ic-space-md);padding-bottom:var(--ic-space-md);box-sizing:border-box}:host(.aligned-center){max-width:var(--section-container-max-width);margin-left:auto;margin-right:auto;padding-left:var(--section-container-margin);padding-right:var(--section-container-margin)}:host(.aligned-left){max-width:var(--section-container-max-width);margin-left:var(--section-container-margin);margin-right:auto;padding-right:var(--section-container-margin)}:host(.aligned-full-width){margin-left:var(--section-container-margin);margin-right:var(--section-container-margin)}:host(.vertical-padding){padding-top:var(--ic-space-md);padding-bottom:var(--ic-space-md)}:host(.no-vertical-padding){padding-top:0;padding-bottom:0}";
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- const index = require('./index-f79a4e53.js');
5
+ const index = require('./index-a62312a7.js');
6
6
  const helpers = require('./helpers-2021e212.js');
7
7
  const types = require('./types-3eb02246.js');
8
8
 
@@ -28,14 +28,26 @@ const Select = class {
28
28
  this.icBlur = index.createEvent(this, "icBlur", 7);
29
29
  this.icOptionSelect = index.createEvent(this, "icOptionSelect", 7);
30
30
  this.icInput = index.createEvent(this, "icInput", 7);
31
+ this.icRetryLoad = index.createEvent(this, "icRetryLoad", 7);
31
32
  this.inputId = `ic-select-input-${inputIds++}`;
32
33
  this.menuId = `${this.inputId}-menu`;
33
34
  this.ungroupedOptions = [];
34
35
  this.inheritedAttributes = {};
35
36
  this.hasSetDefaultValue = false;
36
37
  this.initialOptionsEmpty = false;
38
+ this.handleRetry = (ev) => {
39
+ var _a;
40
+ if (ev.detail.keyPressed)
41
+ (_a = this.searchableSelectElement) === null || _a === void 0 ? void 0 : _a.focus();
42
+ this.blurredBecauseButtonPressed = true;
43
+ this.retryButtonClick = true;
44
+ this.hasSetDefaultValue = true;
45
+ this.icRetryLoad.emit({ value: this.hiddenInputValue });
46
+ };
37
47
  this.emitIcChange = (value) => {
38
- this.value = value;
48
+ if (!this.searchable) {
49
+ this.value = value;
50
+ }
39
51
  clearTimeout(this.debounceIcChange);
40
52
  this.debounceIcChange = window.setTimeout(() => {
41
53
  this.icChange.emit({ value: value });
@@ -78,11 +90,6 @@ const Select = class {
78
90
  this.getLabelFromValue = (value) => {
79
91
  return helpers.getLabelFromValue(value, this.options);
80
92
  };
81
- this.getValueFromLabel = (label) => {
82
- var _a;
83
- const value = (_a = this.options.find((option) => option.label === label)) === null || _a === void 0 ? void 0 : _a.value;
84
- return value;
85
- };
86
93
  this.getFilteredChildMenuOptions = (option) => {
87
94
  let children = option.children;
88
95
  if (this.searchable) {
@@ -106,7 +113,13 @@ const Select = class {
106
113
  return;
107
114
  }
108
115
  if (this.searchable) {
109
- this.searchableSelectInputValue = this.getLabelFromValue(event.detail.value);
116
+ this.value = event.detail.value;
117
+ // After editing the input, if selecting the same option as before, set the input value to label again
118
+ if (this.value === this.currValue) {
119
+ this.searchableSelectInputValue = this.getLabelFromValue(this.value);
120
+ }
121
+ this.inputValueToFilter = null;
122
+ this.hiddenInputValue = this.getValueFromLabel(this.searchableSelectInputValue);
110
123
  }
111
124
  this.ariaActiveDescendant = event.detail.optionId;
112
125
  this.icOptionSelect.emit({ value: event.detail.value });
@@ -143,8 +156,10 @@ const Select = class {
143
156
  this.menu.options = this.filteredOptions;
144
157
  }
145
158
  else {
146
- this.noOptions = null;
147
- this.menu.options = this.options;
159
+ if (!this.hasTimedOut && !this.loading) {
160
+ this.noOptions = null;
161
+ this.menu.options = this.options;
162
+ }
148
163
  }
149
164
  if (event.detail !== 0 && this.isMenuEnabled()) {
150
165
  this.menu.handleClickOpen();
@@ -159,13 +174,15 @@ const Select = class {
159
174
  };
160
175
  this.handleClear = (event) => {
161
176
  event.stopPropagation();
177
+ this.hasTimedOut = false;
162
178
  this.noOptions = null;
163
179
  this.emitImmediateIcChange(null);
164
180
  this.icClear.emit();
165
181
  if (this.searchable) {
166
182
  this.searchableSelectElement.value = null;
167
183
  this.searchableSelectInputValue = null;
168
- this.menu.options = this.options;
184
+ this.filteredOptions = this.options;
185
+ this.hiddenInputValue = null;
169
186
  this.searchableSelectElement.focus();
170
187
  if (!this.isMenuEnabled()) {
171
188
  this.setMenuChange(false);
@@ -177,7 +194,11 @@ const Select = class {
177
194
  };
178
195
  this.handleCharacterKeyDown = (key) => {
179
196
  // Only close menu when space is pressed if not being used alongside character keys to quickly select options
180
- if (this.open && key === " " && this.pressedCharacters.length === 0) {
197
+ if (this.open &&
198
+ key === " " &&
199
+ this.pressedCharacters.length === 0 &&
200
+ !this.hasTimedOut &&
201
+ !this.loading) {
181
202
  this.setMenuChange(false);
182
203
  }
183
204
  if (key.length === 1 && !this.searchable) {
@@ -205,8 +226,10 @@ const Select = class {
205
226
  this.menu.options = this.filteredOptions;
206
227
  }
207
228
  else {
208
- this.noOptions = null;
209
- this.menu.options = this.options;
229
+ if (!this.hasTimedOut) {
230
+ this.noOptions = null;
231
+ this.menu.options = this.options;
232
+ }
210
233
  }
211
234
  }
212
235
  if (this.open && event.key === "Enter") {
@@ -215,6 +238,7 @@ const Select = class {
215
238
  else {
216
239
  if (!(isArrowKey && this.noOptions !== null) && this.isMenuEnabled()) {
217
240
  if (!(event.key === " " && this.pressedCharacters.length > 0)) {
241
+ // Keyboard events get passed onto ic-menu
218
242
  this.menu.handleKeyboardOpen(event);
219
243
  }
220
244
  this.handleCharacterKeyDown(event.key);
@@ -224,7 +248,15 @@ const Select = class {
224
248
  this.handleClearButtonFocus = () => {
225
249
  this.clearButtonFocused = true;
226
250
  };
227
- this.handleClearButtonBlur = () => {
251
+ this.handleClearButtonBlur = (ev) => {
252
+ var _a;
253
+ const retryButton = (_a = this.menu) === null || _a === void 0 ? void 0 : _a.querySelector("#retry-button");
254
+ if (!(this.searchableSelectElement &&
255
+ ev.relatedTarget === this.searchableSelectElement) &&
256
+ !(retryButton && ev.relatedTarget === retryButton)) {
257
+ this.setMenuChange(false);
258
+ this.handleFocusIndicatorDisplay();
259
+ }
228
260
  this.clearButtonFocused = false;
229
261
  };
230
262
  this.handleFilter = () => {
@@ -237,7 +269,7 @@ const Select = class {
237
269
  });
238
270
  let menuOptionsFiltered;
239
271
  if (this.searchable) {
240
- menuOptionsFiltered = helpers.getFilteredMenuOptions(options, this.includeDescriptionsInSearch, this.searchableSelectInputValue, this.searchMatchPosition);
272
+ menuOptionsFiltered = helpers.getFilteredMenuOptions(options, this.includeDescriptionsInSearch, this.inputValueToFilter, this.searchMatchPosition);
241
273
  }
242
274
  else {
243
275
  menuOptionsFiltered = helpers.getFilteredMenuOptions(options, false, this.pressedCharacters, "start");
@@ -279,15 +311,37 @@ const Select = class {
279
311
  this.filteredOptions = this.noOptions;
280
312
  }
281
313
  };
314
+ this.triggerLoading = () => {
315
+ this.hasTimedOut = false;
316
+ this.noOptions = [{ label: this.loadingLabel, value: "", loading: true }];
317
+ if (this.filteredOptions !== this.noOptions && this.searchable)
318
+ this.filteredOptions = this.noOptions;
319
+ else if (!this.searchable && this.options !== this.noOptions)
320
+ this.options = this.noOptions;
321
+ if (this.timeout) {
322
+ this.timeoutTimer = window.setTimeout(() => {
323
+ this.loading = false;
324
+ this.hasTimedOut = true;
325
+ this.noOptions = [
326
+ { label: this.loadingErrorLabel, value: "", timedOut: true },
327
+ ];
328
+ this.filteredOptions = this.noOptions;
329
+ if (!this.searchable)
330
+ this.options = this.noOptions;
331
+ }, this.timeout);
332
+ }
333
+ };
334
+ this.getValueFromLabel = (label) => {
335
+ var _a;
336
+ const value = (_a = this.options.find((option) => option.label === label)) === null || _a === void 0 ? void 0 : _a.value;
337
+ return value;
338
+ };
282
339
  this.handleSearchableSelectInput = (event) => {
283
340
  this.searchableSelectInputValue = event.target.value;
284
341
  this.icInput.emit({ value: this.searchableSelectInputValue });
285
- if (this.disableFilter) {
286
- this.emitIcChange(this.searchableSelectInputValue);
287
- }
288
- else if (this.getValueFromLabel(this.searchableSelectInputValue) === undefined) {
289
- this.emitIcChange(null);
290
- }
342
+ this.emitIcChange(this.searchableSelectInputValue);
343
+ this.hiddenInputValue = this.searchableSelectInputValue;
344
+ this.inputValueToFilter = this.searchableSelectInputValue;
291
345
  if (this.isMenuEnabled()) {
292
346
  this.setMenuChange(true);
293
347
  }
@@ -315,20 +369,43 @@ const Select = class {
315
369
  this.icFocus.emit();
316
370
  };
317
371
  this.onBlur = (event) => {
372
+ var _a;
373
+ const target = event.relatedTarget;
374
+ if (target !== null &&
375
+ target.tagName === "UL" &&
376
+ target.className.includes("menu")) {
377
+ return;
378
+ }
379
+ const retryButton = (_a = this.menu) === null || _a === void 0 ? void 0 : _a.querySelector("#retry-button");
318
380
  const isSearchableAndNoFocusedInternalElements = this.searchable &&
319
381
  event.relatedTarget !== this.menu &&
320
382
  !Array.from(this.menu.querySelectorAll("[role='option']")).includes(event.relatedTarget) &&
321
- !(this.clearButton && event.relatedTarget === this.clearButton);
383
+ !(this.clearButton && event.relatedTarget === this.clearButton) &&
384
+ !(retryButton && event.relatedTarget === retryButton);
322
385
  if (isSearchableAndNoFocusedInternalElements) {
323
- this.setMenuChange(false);
386
+ if (!this.retryButtonClick) {
387
+ this.setMenuChange(false);
388
+ }
324
389
  this.handleFocusIndicatorDisplay();
325
390
  }
391
+ this.retryButtonClick = false;
326
392
  this.icBlur.emit();
327
393
  };
394
+ this.onTimeoutBlur = (ev) => {
395
+ if (ev.detail.ev.relatedTarget !==
396
+ this.searchableSelectElement &&
397
+ !this.blurredBecauseButtonPressed) {
398
+ this.setMenuChange(false);
399
+ this.handleFocusIndicatorDisplay();
400
+ this.icBlur.emit();
401
+ }
402
+ this.blurredBecauseButtonPressed = false;
403
+ };
328
404
  this.handleFormReset = () => {
329
405
  this.value = this.initialValue;
330
406
  if (this.searchable) {
331
407
  this.searchableSelectInputValue = this.getDefaultValue(this.value);
408
+ this.hiddenInputValue = this.value;
332
409
  }
333
410
  };
334
411
  this.label = undefined;
@@ -354,6 +431,10 @@ const Select = class {
354
431
  this.charactersUntilSuggestions = 0;
355
432
  this.emptyOptionListText = "No results found";
356
433
  this.disableFilter = false;
434
+ this.timeout = undefined;
435
+ this.loadingLabel = "Loading...";
436
+ this.loadingErrorLabel = "Loading Error";
437
+ this.loading = false;
357
438
  this.open = false;
358
439
  this.clearButtonFocused = false;
359
440
  this.searchableSelectInputValue = null;
@@ -365,28 +446,41 @@ const Select = class {
365
446
  this.currValue = this.value;
366
447
  this.debounceIcChange = undefined;
367
448
  this.pressedCharacters = "";
449
+ this.hiddenInputValue = undefined;
450
+ this.inputValueToFilter = this.value;
451
+ }
452
+ loadingHandler(newValue) {
453
+ newValue && this.triggerLoading();
368
454
  }
369
455
  watchOptionsHandler() {
370
- if (this.isExternalFiltering()) {
371
- if (this.options.length > 0) {
456
+ if (!this.hasTimedOut) {
457
+ this.loading = false;
458
+ clearTimeout(this.timeoutTimer);
459
+ if (this.isExternalFiltering()) {
460
+ if (this.options.length > 0) {
461
+ this.setOptionsValuesFromLabels();
462
+ this.noOptions = null;
463
+ this.filteredOptions = this.options;
464
+ }
465
+ else if (this.isMenuEnabled()) {
466
+ this.noOptions = [{ label: this.emptyOptionListText, value: "" }];
467
+ this.filteredOptions = this.noOptions;
468
+ }
469
+ this.updateSearchableSelectResultAriaLive();
470
+ this.setDefaultValue();
471
+ }
472
+ else {
372
473
  this.setOptionsValuesFromLabels();
373
- this.noOptions = null;
374
474
  this.filteredOptions = this.options;
475
+ if (this.initialOptionsEmpty) {
476
+ this.setDefaultValue();
477
+ this.initialOptionsEmpty = false;
478
+ }
375
479
  }
376
- else if (this.isMenuEnabled()) {
377
- this.noOptions = [{ label: this.emptyOptionListText, value: "" }];
378
- this.filteredOptions = this.noOptions;
379
- }
380
- this.updateSearchableSelectResultAriaLive();
381
- this.setDefaultValue();
382
480
  }
383
481
  else {
384
- this.setOptionsValuesFromLabels();
385
- this.filteredOptions = this.options;
386
- if (this.initialOptionsEmpty) {
387
- this.setDefaultValue();
388
- this.initialOptionsEmpty = false;
389
- }
482
+ if (!this.searchable)
483
+ this.options = this.noOptions;
390
484
  }
391
485
  }
392
486
  debounceChangedHandler(newValue) {
@@ -396,6 +490,10 @@ const Select = class {
396
490
  if (this.value !== this.currValue) {
397
491
  this.currValue = this.value;
398
492
  }
493
+ if (this.searchable && !!this.currValue) {
494
+ this.searchableSelectInputValue =
495
+ this.getLabelFromValue(this.currValue) || this.currValue;
496
+ }
399
497
  }
400
498
  /**
401
499
  * Sets focus on the input box.
@@ -440,7 +538,7 @@ const Select = class {
440
538
  if (!this.options.length) {
441
539
  this.initialOptionsEmpty = true;
442
540
  }
443
- else if (!this.disableFilter) {
541
+ else {
444
542
  this.setDefaultValue();
445
543
  }
446
544
  }
@@ -451,13 +549,22 @@ const Select = class {
451
549
  }
452
550
  componentDidLoad() {
453
551
  helpers.onComponentRequiredPropUndefined([{ prop: this.label, propName: "label" }], "Select");
552
+ if (this.loading)
553
+ this.triggerLoading();
554
+ this.hiddenInputValue = this.searchable && this.currValue;
454
555
  }
455
556
  disconnectedCallback() {
456
557
  helpers.removeFormResetListener(this.host, this.handleFormReset);
457
558
  }
458
559
  render() {
560
+ var _a, _b;
459
561
  const { small, disabled, fullWidth, helperText, hideLabel, label, menuId, name, options, placeholder, readonly, required, searchable, showClearButton, validationStatus, validationText, currValue, } = this;
460
- helpers.renderHiddenInput(true, this.host, name, currValue, disabled);
562
+ const isOrHasLoaded = ((_a = (searchable ? this.filteredOptions : options)[0]) === null || _a === void 0 ? void 0 : _a.label) ===
563
+ this.loadingLabel ||
564
+ ((_b = (searchable ? this.filteredOptions : options)[0]) === null || _b === void 0 ? void 0 : _b.label) ===
565
+ this.loadingErrorLabel;
566
+ const inputValue = this.searchable ? this.hiddenInputValue : currValue;
567
+ helpers.renderHiddenInput(true, this.host, name, inputValue, disabled);
461
568
  const invalid = validationStatus === types.IcInformationStatus.Error ? "true" : "false";
462
569
  const describedBy = helpers.getInputDescribedByText(this.inputId, helperText !== "", helpers.hasValidationStatus(this.validationStatus, this.disabled)).trim();
463
570
  return (index.h(index.Host, { class: {
@@ -465,7 +572,7 @@ const Select = class {
465
572
  searchable: searchable,
466
573
  small: small,
467
574
  "full-width": fullWidth,
468
- } }, index.h("ic-input-container", { readonly: readonly }, !hideLabel && (index.h("ic-input-label", { for: this.inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly })), index.h("ic-input-component-container", { ref: (el) => (this.anchorEl = el), class: { "menu-open": this.open }, small: small, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, readonly ? (index.h("ic-typography", null, index.h("p", null, this.getLabelFromValue(currValue)))) : helpers.isMobileOrTablet() ? (index.h("select", Object.assign({ ref: (el) => (this.nativeSelectElement = el), disabled: disabled, onChange: this.handleNativeSelectChange, required: required, id: this.inputId, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.handleNativeSelectKeyDown }, this.inheritedAttributes), index.h("option", { value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => {
575
+ }, onBlur: this.onBlur }, index.h("ic-input-container", { readonly: readonly }, !hideLabel && (index.h("ic-input-label", { for: this.inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly })), index.h("ic-input-component-container", { ref: (el) => (this.anchorEl = el), class: { "menu-open": this.open }, small: small, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, readonly ? (index.h("ic-typography", null, index.h("p", null, this.getLabelFromValue(currValue)))) : helpers.isMobileOrTablet() ? (index.h("select", Object.assign({ ref: (el) => (this.nativeSelectElement = el), disabled: disabled, onChange: this.handleNativeSelectChange, required: required, id: this.inputId, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, onBlur: this.onBlur, onFocus: this.onFocus, onKeyDown: this.handleNativeSelectKeyDown }, this.inheritedAttributes), index.h("option", { value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => {
469
576
  if (option.children) {
470
577
  return (index.h("optgroup", { label: option.label }, option.children.map((option) => (index.h("option", { value: option.value, disabled: option.disabled, selected: option.value === currValue }, option.label)))));
471
578
  }
@@ -491,14 +598,15 @@ const Select = class {
491
598
  }, innerHTML: Expand, "aria-hidden": "true" }))), currValue && showClearButton && (index.h("ic-button", { id: "clear-button", "aria-label": "Clear selection", class: "clear-button", innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearButtonFocus, onBlur: this.handleClearButtonBlur, size: small ? "small" : "default", variant: "icon", appearance: this.clearButtonFocused
492
599
  ? types.IcThemeForegroundEnum.Light
493
600
  : types.IcThemeForegroundEnum.Dark }))))), !helpers.isMobileOrTablet() && (index.h("ic-menu", { class: {
494
- "no-results": this.noOptions !== null && this.searchable,
601
+ "no-results": this.noOptions !== null || isOrHasLoaded,
495
602
  }, ref: (el) => (this.menu = el), inputEl: searchable
496
603
  ? this.searchableSelectElement
497
- : this.customSelectElement, inputLabel: label, anchorEl: this.anchorEl, small: small, menuId: menuId, open: this.open, options: searchable ? this.filteredOptions : options, value: currValue, fullWidth: fullWidth, onMenuStateChange: this.handleMenuChange, onMenuOptionSelect: this.handleCustomSelectChange, onMenuKeyPress: this.handleMenuKeyPress, onUngroupedOptionsSet: this.setUngroupedOptions, parentEl: this.host })), helpers.hasValidationStatus(this.validationStatus, this.disabled) && (index.h("ic-input-validation", { class: { "menu-open": this.open }, ariaLiveMode: "polite", status: validationStatus, message: validationText, for: this.inputId })))));
604
+ : this.customSelectElement, inputLabel: label, anchorEl: this.anchorEl, small: small, menuId: menuId, open: this.open, options: searchable ? this.filteredOptions : options, value: currValue, fullWidth: fullWidth, onMenuStateChange: this.handleMenuChange, onMenuOptionSelect: this.handleCustomSelectChange, onMenuKeyPress: this.handleMenuKeyPress, onUngroupedOptionsSet: this.setUngroupedOptions, onRetryButtonClicked: this.handleRetry, parentEl: this.host, onTimeoutBlur: this.onTimeoutBlur, activationType: this.searchable ? "manual" : "automatic" })), helpers.hasValidationStatus(this.validationStatus, this.disabled) && (index.h("ic-input-validation", { class: { "menu-open": this.open }, ariaLiveMode: "polite", status: validationStatus, message: validationText, for: this.inputId })))));
498
605
  }
499
606
  static get delegatesFocus() { return true; }
500
607
  get host() { return index.getElement(this); }
501
608
  static get watchers() { return {
609
+ "loading": ["loadingHandler"],
502
610
  "options": ["watchOptionsHandler"],
503
611
  "debounce": ["debounceChangedHandler"],
504
612
  "value": ["valueChangedHandler"]