@ukic/web-components 2.0.0-alpha.124 → 2.0.0-alpha.125

Sign up to get free protection for your applications and to get access to all the features.
Files changed (254) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-9d4961dc.js → helpers-ea79c7b0.js} +41 -2
  3. package/dist/cjs/helpers-ea79c7b0.js.map +1 -0
  4. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-breadcrumbs.cjs.entry.js +1 -1
  8. package/dist/cjs/ic-button_3.cjs.entry.js +2 -2
  9. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-card.cjs.entry.js +2 -2
  11. package/dist/cjs/ic-card.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  16. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  18. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  19. package/dist/cjs/ic-hero.cjs.entry.js +3 -3
  20. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +78 -24
  22. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  24. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-radio-group.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-search-bar.cjs.entry.js +3 -5
  33. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  34. package/dist/cjs/ic-select.cjs.entry.js +216 -23
  35. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  38. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  40. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-tab-list.cjs.entry.js +1 -1
  42. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-tab.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-text-field.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  46. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  48. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  49. package/dist/cjs/loader.cjs.js +1 -1
  50. package/dist/collection/components/ic-button/ic-button.css +0 -6
  51. package/dist/collection/components/ic-card/ic-card.js +1 -1
  52. package/dist/collection/components/ic-card/ic-card.js.map +1 -1
  53. package/dist/collection/components/ic-hero/ic-hero.css +5 -0
  54. package/dist/collection/components/ic-hero/ic-hero.js +1 -1
  55. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  56. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +4 -3
  57. package/dist/collection/components/ic-menu/ic-menu.css +3 -2
  58. package/dist/collection/components/ic-menu/ic-menu.js +78 -21
  59. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  60. package/dist/collection/components/ic-menu/ic-menu.types.js.map +1 -1
  61. package/dist/collection/components/ic-search-bar/ic-search-bar.css +6 -0
  62. package/dist/collection/components/ic-search-bar/ic-search-bar.js +2 -4
  63. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  64. package/dist/collection/components/ic-select/ic-select.css +70 -9
  65. package/dist/collection/components/ic-select/ic-select.js +337 -24
  66. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  67. package/dist/collection/components/ic-typography/ic-typography.css +11 -4
  68. package/dist/collection/components/ic-typography/ic-typography.js +1 -1
  69. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  70. package/dist/collection/utils/helpers.js +39 -1
  71. package/dist/collection/utils/helpers.js.map +1 -1
  72. package/dist/collection/utils/types.js.map +1 -1
  73. package/dist/components/helpers.js +40 -2
  74. package/dist/components/helpers.js.map +1 -1
  75. package/dist/components/ic-button2.js +2 -2
  76. package/dist/components/ic-button2.js.map +1 -1
  77. package/dist/components/ic-card.js +1 -1
  78. package/dist/components/ic-card.js.map +1 -1
  79. package/dist/components/ic-hero.js +2 -2
  80. package/dist/components/ic-hero.js.map +1 -1
  81. package/dist/components/ic-input-component-container2.js +2 -2
  82. package/dist/components/ic-input-component-container2.js.map +1 -1
  83. package/dist/components/ic-input-label2.js +1 -1
  84. package/dist/components/ic-input-validation2.js +1 -1
  85. package/dist/components/ic-link2.js +1 -1
  86. package/dist/components/ic-menu2.js +76 -22
  87. package/dist/components/ic-menu2.js.map +1 -1
  88. package/dist/components/ic-navigation-menu2.js +1 -1
  89. package/dist/components/ic-search-bar.js +3 -5
  90. package/dist/components/ic-search-bar.js.map +1 -1
  91. package/dist/components/ic-select.js +226 -23
  92. package/dist/components/ic-select.js.map +1 -1
  93. package/dist/components/ic-side-navigation.js +1 -1
  94. package/dist/components/ic-tab-list.js +1 -1
  95. package/dist/components/ic-text-field2.js +1 -1
  96. package/dist/components/ic-theme.js +1 -1
  97. package/dist/components/ic-top-navigation.js +1 -1
  98. package/dist/components/ic-typography2.js +1 -1
  99. package/dist/components/ic-typography2.js.map +1 -1
  100. package/dist/core/core.css +1 -1
  101. package/dist/core/core.esm.js +1 -1
  102. package/dist/core/core.esm.js.map +1 -1
  103. package/dist/core/{p-8af2a343.entry.js → p-01450166.entry.js} +2 -2
  104. package/dist/core/{p-8af2a343.entry.js.map → p-01450166.entry.js.map} +0 -0
  105. package/dist/core/{p-016fcce8.entry.js → p-01a17304.entry.js} +2 -2
  106. package/dist/core/{p-016fcce8.entry.js.map → p-01a17304.entry.js.map} +0 -0
  107. package/dist/core/{p-5e0b88fa.entry.js → p-08239789.entry.js} +2 -2
  108. package/dist/core/{p-5e0b88fa.entry.js.map → p-08239789.entry.js.map} +0 -0
  109. package/dist/core/{p-44af91df.entry.js → p-09c0cd28.entry.js} +2 -2
  110. package/dist/core/{p-44af91df.entry.js.map → p-09c0cd28.entry.js.map} +0 -0
  111. package/dist/core/{p-44355e34.entry.js → p-0cf51da5.entry.js} +2 -2
  112. package/dist/core/{p-44355e34.entry.js.map → p-0cf51da5.entry.js.map} +0 -0
  113. package/dist/core/{p-bbe0b521.entry.js → p-10531d9a.entry.js} +2 -2
  114. package/dist/core/{p-bbe0b521.entry.js.map → p-10531d9a.entry.js.map} +0 -0
  115. package/dist/core/p-14ba2f18.js +2 -0
  116. package/dist/core/p-14ba2f18.js.map +1 -0
  117. package/dist/core/{p-0d4ac3c9.entry.js → p-211465cf.entry.js} +2 -2
  118. package/dist/core/{p-0d4ac3c9.entry.js.map → p-211465cf.entry.js.map} +0 -0
  119. package/dist/core/{p-13854b65.entry.js → p-2c687b76.entry.js} +2 -2
  120. package/dist/core/{p-13854b65.entry.js.map → p-2c687b76.entry.js.map} +0 -0
  121. package/dist/core/p-2d5824f1.entry.js +2 -0
  122. package/dist/core/p-2d5824f1.entry.js.map +1 -0
  123. package/dist/core/{p-17420c90.entry.js → p-34e5ee10.entry.js} +2 -2
  124. package/dist/core/{p-17420c90.entry.js.map → p-34e5ee10.entry.js.map} +0 -0
  125. package/dist/core/{p-17f3a2bd.entry.js → p-35b91376.entry.js} +2 -2
  126. package/dist/core/{p-17f3a2bd.entry.js.map → p-35b91376.entry.js.map} +0 -0
  127. package/dist/core/{p-7152788d.entry.js → p-36e9f6ff.entry.js} +2 -2
  128. package/dist/core/{p-7152788d.entry.js.map → p-36e9f6ff.entry.js.map} +0 -0
  129. package/dist/core/{p-85a32ec7.entry.js → p-3a7725ed.entry.js} +2 -2
  130. package/dist/core/{p-85a32ec7.entry.js.map → p-3a7725ed.entry.js.map} +0 -0
  131. package/dist/core/{p-85436343.entry.js → p-3d95b097.entry.js} +2 -2
  132. package/dist/core/{p-85436343.entry.js.map → p-3d95b097.entry.js.map} +0 -0
  133. package/dist/core/p-40a17d61.entry.js +2 -0
  134. package/dist/core/p-40a17d61.entry.js.map +1 -0
  135. package/dist/core/{p-a3df537f.entry.js → p-41dab885.entry.js} +2 -2
  136. package/dist/core/{p-a3df537f.entry.js.map → p-41dab885.entry.js.map} +0 -0
  137. package/dist/core/{p-ed1d8712.entry.js → p-42876f02.entry.js} +2 -2
  138. package/dist/core/{p-ed1d8712.entry.js.map → p-42876f02.entry.js.map} +0 -0
  139. package/dist/core/{p-bddb885a.entry.js → p-483ba0f6.entry.js} +2 -2
  140. package/dist/core/{p-bddb885a.entry.js.map → p-483ba0f6.entry.js.map} +0 -0
  141. package/dist/core/{p-bdd2f166.entry.js → p-49831676.entry.js} +2 -2
  142. package/dist/core/{p-bdd2f166.entry.js.map → p-49831676.entry.js.map} +0 -0
  143. package/dist/core/p-55a8f5b6.entry.js +2 -0
  144. package/dist/core/p-55a8f5b6.entry.js.map +1 -0
  145. package/dist/core/{p-7ed79493.entry.js → p-5928296a.entry.js} +2 -2
  146. package/dist/core/p-5928296a.entry.js.map +1 -0
  147. package/dist/core/{p-4b1b46f5.entry.js → p-66800ec4.entry.js} +2 -2
  148. package/dist/core/p-66800ec4.entry.js.map +1 -0
  149. package/dist/core/{p-dc79694a.entry.js → p-7c207056.entry.js} +2 -2
  150. package/dist/core/{p-dc79694a.entry.js.map → p-7c207056.entry.js.map} +0 -0
  151. package/dist/core/{p-3b9d4007.entry.js → p-7f27efda.entry.js} +2 -2
  152. package/dist/core/{p-3b9d4007.entry.js.map → p-7f27efda.entry.js.map} +0 -0
  153. package/dist/core/{p-263018da.entry.js → p-87fc80f1.entry.js} +2 -2
  154. package/dist/core/{p-263018da.entry.js.map → p-87fc80f1.entry.js.map} +0 -0
  155. package/dist/core/{p-ea93611e.entry.js → p-886e7a24.entry.js} +2 -2
  156. package/dist/core/{p-ea93611e.entry.js.map → p-886e7a24.entry.js.map} +0 -0
  157. package/dist/core/{p-012dc33c.entry.js → p-889744b7.entry.js} +2 -2
  158. package/dist/core/{p-012dc33c.entry.js.map → p-889744b7.entry.js.map} +0 -0
  159. package/dist/core/{p-836c93b1.entry.js → p-92cc098f.entry.js} +2 -2
  160. package/dist/core/{p-836c93b1.entry.js.map → p-92cc098f.entry.js.map} +0 -0
  161. package/dist/core/{p-a968ff18.entry.js → p-961c9038.entry.js} +2 -2
  162. package/dist/core/{p-a968ff18.entry.js.map → p-961c9038.entry.js.map} +0 -0
  163. package/dist/core/{p-c09e9589.entry.js → p-9753e5f2.entry.js} +2 -2
  164. package/dist/core/{p-c09e9589.entry.js.map → p-9753e5f2.entry.js.map} +0 -0
  165. package/dist/core/{p-7f6ba60a.entry.js → p-a334ed34.entry.js} +2 -2
  166. package/dist/core/{p-7f6ba60a.entry.js.map → p-a334ed34.entry.js.map} +0 -0
  167. package/dist/core/p-b70f2538.entry.js +2 -0
  168. package/dist/core/p-b70f2538.entry.js.map +1 -0
  169. package/dist/core/{p-d198ae1f.entry.js → p-bbff1667.entry.js} +2 -2
  170. package/dist/core/{p-d198ae1f.entry.js.map → p-bbff1667.entry.js.map} +0 -0
  171. package/dist/core/{p-d10ce0a7.entry.js → p-c0bfb272.entry.js} +2 -2
  172. package/dist/core/{p-d10ce0a7.entry.js.map → p-c0bfb272.entry.js.map} +0 -0
  173. package/dist/core/{p-4fba6cae.entry.js → p-cd14a9dc.entry.js} +2 -2
  174. package/dist/core/{p-4fba6cae.entry.js.map → p-cd14a9dc.entry.js.map} +0 -0
  175. package/dist/core/{p-4cf60a22.entry.js → p-d7af7446.entry.js} +2 -2
  176. package/dist/core/{p-4cf60a22.entry.js.map → p-d7af7446.entry.js.map} +0 -0
  177. package/dist/core/{p-5d3dd182.entry.js → p-e2304886.entry.js} +2 -2
  178. package/dist/core/{p-5d3dd182.entry.js.map → p-e2304886.entry.js.map} +0 -0
  179. package/dist/core/p-f90ce9ca.entry.js +2 -0
  180. package/dist/core/p-f90ce9ca.entry.js.map +1 -0
  181. package/dist/esm/core.js +1 -1
  182. package/dist/esm/{helpers-db00eae1.js → helpers-63cb8828.js} +41 -3
  183. package/dist/esm/helpers-63cb8828.js.map +1 -0
  184. package/dist/esm/ic-alert.entry.js +1 -1
  185. package/dist/esm/ic-back-to-top.entry.js +1 -1
  186. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  187. package/dist/esm/ic-breadcrumbs.entry.js +1 -1
  188. package/dist/esm/ic-button_3.entry.js +2 -2
  189. package/dist/esm/ic-button_3.entry.js.map +1 -1
  190. package/dist/esm/ic-card.entry.js +2 -2
  191. package/dist/esm/ic-card.entry.js.map +1 -1
  192. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  193. package/dist/esm/ic-checkbox.entry.js +1 -1
  194. package/dist/esm/ic-data-row.entry.js +1 -1
  195. package/dist/esm/ic-divider.entry.js +1 -1
  196. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  197. package/dist/esm/ic-footer-link.entry.js +1 -1
  198. package/dist/esm/ic-footer.entry.js +1 -1
  199. package/dist/esm/ic-hero.entry.js +3 -3
  200. package/dist/esm/ic-hero.entry.js.map +1 -1
  201. package/dist/esm/ic-input-component-container_3.entry.js +78 -24
  202. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  203. package/dist/esm/ic-input-label_2.entry.js +1 -1
  204. package/dist/esm/ic-link.entry.js +1 -1
  205. package/dist/esm/ic-navigation-button.entry.js +1 -1
  206. package/dist/esm/ic-navigation-group.entry.js +1 -1
  207. package/dist/esm/ic-navigation-item.entry.js +1 -1
  208. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  209. package/dist/esm/ic-page-header.entry.js +1 -1
  210. package/dist/esm/ic-radio-group.entry.js +1 -1
  211. package/dist/esm/ic-radio-option.entry.js +1 -1
  212. package/dist/esm/ic-search-bar.entry.js +3 -5
  213. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  214. package/dist/esm/ic-select.entry.js +216 -23
  215. package/dist/esm/ic-select.entry.js.map +1 -1
  216. package/dist/esm/ic-side-navigation.entry.js +1 -1
  217. package/dist/esm/ic-status-tag.entry.js +1 -1
  218. package/dist/esm/ic-step.entry.js +1 -1
  219. package/dist/esm/ic-stepper.entry.js +1 -1
  220. package/dist/esm/ic-switch.entry.js +1 -1
  221. package/dist/esm/ic-tab-list.entry.js +1 -1
  222. package/dist/esm/ic-tab-panel.entry.js +1 -1
  223. package/dist/esm/ic-tab.entry.js +1 -1
  224. package/dist/esm/ic-text-field.entry.js +1 -1
  225. package/dist/esm/ic-theme.entry.js +1 -1
  226. package/dist/esm/ic-top-navigation.entry.js +1 -1
  227. package/dist/esm/ic-typography.entry.js +1 -1
  228. package/dist/esm/ic-typography.entry.js.map +1 -1
  229. package/dist/esm/loader.js +1 -1
  230. package/dist/types/components/ic-menu/ic-menu.d.ts +2 -0
  231. package/dist/types/components/ic-menu/ic-menu.types.d.ts +1 -0
  232. package/dist/types/components/ic-select/ic-select.d.ts +44 -2
  233. package/dist/types/components/ic-typography/ic-typography.d.ts +1 -1
  234. package/dist/types/components.d.ts +53 -5
  235. package/dist/types/utils/helpers.d.ts +11 -2
  236. package/dist/types/utils/types.d.ts +1 -0
  237. package/hydrate/index.js +348 -55
  238. package/package.json +3 -3
  239. package/dist/cjs/helpers-9d4961dc.js.map +0 -1
  240. package/dist/core/p-16a81e12.entry.js +0 -2
  241. package/dist/core/p-16a81e12.entry.js.map +0 -1
  242. package/dist/core/p-22eb7fc8.entry.js +0 -2
  243. package/dist/core/p-22eb7fc8.entry.js.map +0 -1
  244. package/dist/core/p-4b1b46f5.entry.js.map +0 -1
  245. package/dist/core/p-6238313f.entry.js +0 -2
  246. package/dist/core/p-6238313f.entry.js.map +0 -1
  247. package/dist/core/p-7ed79493.entry.js.map +0 -1
  248. package/dist/core/p-856d9516.entry.js +0 -2
  249. package/dist/core/p-856d9516.entry.js.map +0 -1
  250. package/dist/core/p-8a677ff1.entry.js +0 -2
  251. package/dist/core/p-8a677ff1.entry.js.map +0 -1
  252. package/dist/core/p-e5a09372.js +0 -2
  253. package/dist/core/p-e5a09372.js.map +0 -1
  254. package/dist/esm/helpers-db00eae1.js.map +0 -1
@@ -1 +1 @@
1
- {"file":"ic-search-bar.entry.js","mappings":"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","names":[],"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/normalise.css\";\n\n:host(.search) {\n --divider-height: 24px;\n}\n\n:host(.search.dense) {\n --divider-height: 16px;\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: 1px;\n display: none;\n visibility: hidden;\n}\n\n.clear-button:focus {\n background-color: var(--ic-focus-blue);\n box-shadow: inset 0 0 0 2px var(--ic-focus-glow);\n border-radius: 4px;\n}\n\n.clear-button:focus * {\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 background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 2px var(--ic-focus-glow) !important;\n border-radius: var(--ic-space-xxs);\n height: var(--ic-space-xl);\n margin-top: var(--ic-space-xxxs);\n}\n\n.search-submit-button:focus * {\n fill: white;\n}\n\n.divider {\n width: 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, 320px);\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: 1px;\n margin-bottom: -1px;\n margin-right: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 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 debounceEvent,\n getInputDescribedByText,\n renderHiddenInput,\n handleHiddenFormButtonClick,\n getLabelFromValue,\n onComponentRequiredPropUndefined,\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: true,\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\n /**\n * Provide a label for the input.\n */\n @Prop() label!: string;\n\n /**\n * Specify if the input requires a value.\n */\n @Prop() required?: boolean = false;\n /**\n * Specify whether the input is disabled.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * Specify whether the input is read only.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * Provide a placeholder value to display.\n */\n @Prop() placeholder?: string = \"Search\";\n\n /**\n * Specify whether the component fills the full width of the container.\n * If true, this overrides the --input-width css prop.\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 * Hides the label and applies the required label value as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Provide helper text to display additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * Specify whether dense styling is to be applied to the element.\n */\n @Prop() dense?: boolean = false;\n\n /**\n * Value of Search input.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n\n /**\n * Indicates whether and how the text value should be automatically capitalized 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 * Indicates whether the value of the control can be automatically completed by the browser.\n */\n @Prop() autocomplete?: IcAutocompleteTypes = \"off\";\n\n /**\n * Whether auto correction should be enabled when the user is entering/editing the text value.\n */\n @Prop() autocorrect?: IcAutocorrectStates = \"off\";\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop({ mutable: true }) debounce?: number = 0;\n\n @Watch(\"debounce\")\n private debounceChanged() {\n this.icChange = debounceEvent(this.icChange, this.debounce);\n }\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 element will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n /**\n * Provide the suggested search options\n */\n @Prop() options?: IcMenuOption[] = [];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n if (this.disableFilter) {\n this.filteredOptions = newOptions;\n }\n }\n\n /**\n * Specify whether the input should be focussed when component loaded.\n */\n @Prop() focusOnLoad?: boolean = false;\n\n /**\n * Determines whether the dark variant of the search bar should be displayed.\n */\n @Prop() dark?: boolean = false;\n\n /**\n * Provide hint text for 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 * Provide text for empty results list\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * 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 this.icChange.emit({ value: newValue });\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) {\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.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 /**\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 if (this.options.length > 0) {\n this.setMenuChange(true);\n\n if (this.disableFilter === false) {\n const rawFilteredOptions = this.options.filter((option) => {\n return option.label.toLowerCase().includes(this.value.toLowerCase());\n });\n\n const noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\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 this.icInput.emit({ value: this.value });\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounce);\n\n this.debounce = window.setTimeout(() => {\n this.updateSearchResultAriaLive();\n }, 500);\n }\n\n /**\n * Emitted when input loses focus.\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 * Emitted when input gains focus.\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 /**\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 /**\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\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 handleMenuChange = (ev: CustomEvent) => {\n this.setMenuChange(ev.detail.open);\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 @Listen(\"menuChange\", {})\n onMenuClose(ev: CustomEvent): void {\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 @Listen(\"menuOptionId\")\n onMenuOptionHighlighted(ev: CustomEvent): void {\n if (ev.detail.optionId) {\n this.ariaActiveDescendant = ev.detail.optionId;\n } else {\n this.ariaActiveDescendant = undefined;\n }\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 (!this.open || this.value === \"\") {\n searchResultsStatusEl.innerText = \"\";\n } else if (\n this.options.length > 0 &&\n this.filteredOptions.length > 0 &&\n this.open &&\n searchResultsStatusEl\n ) {\n searchResultsStatusEl.innerText = `${this.filteredOptions.length} result${\n this.filteredOptions.length > 1 ? \"s\" : \"\"\n } available`;\n }\n };\n\n private hasOptionsOrFilterDisabled = (): boolean =>\n this.options.length > 0 || this.disableFilter;\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 connectedCallback(): void {\n this.debounceChanged();\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 this.anchorEl = this.inputEl.shadowRoot.querySelector(\n \"ic-input-component-container\"\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 dense,\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 dark,\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 && options.length > 0;\n const valueNotSet = value === undefined || value === null || value === \"\";\n const menuOpen = hasSuggestedSearch && open && filteredOptions.length > 0;\n\n const hadNoOptions =\n filteredOptions.length > 0 &&\n filteredOptions[0].label === this.emptyOptionListText;\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 [\"dark\"]: dark,\n [\"disabled\"]: disabled,\n [\"dense\"]: dense,\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 dense={dense}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n name={name}\n truncateValue={truncateValue}\n dark={dark}\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 >\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 size={dense ? \"dense\" : \"default\"}\n onFocus={this.handleFocusClearButton}\n onBlur={this.handleClearBlur}\n onKeyDown={this.handleClear}\n type=\"submit\"\n variant=\"icon\"\n buttonStyle={\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\":\n valueNotSet || disabled || hadNoOptions,\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-dense\"]: !!dense,\n }}\n disabled={valueNotSet || disabled || hadNoOptions}\n innerHTML={searchIcon}\n size={dense ? \"dense\" : \"default\"}\n onClick={this.handleSubmitSearch}\n onBlur={this.handleSubmitSearchBlur}\n onFocus={this.handleSubmitSearchFocus}\n type=\"submit\"\n variant=\"icon\"\n buttonStyle={\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\": 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 dense={dense}\n fullWidth={fullWidth}\n menuId={menuId}\n open={true}\n options={filteredOptions}\n onOptionSelect={this.handleOptionSelect}\n onMenuChange={this.handleMenuChange}\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.js","mappings":"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","names":[],"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/normalise.css\";\n\n:host(.search) {\n --divider-height: 24px;\n}\n\n:host(.search.dense) {\n --divider-height: 16px;\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: 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 background-color: var(--ic-focus-blue);\n box-shadow: inset 0 0 0 2px var(--ic-focus-glow);\n border-radius: 4px;\n}\n\n.clear-button:focus * {\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 background-color: var(--ic-focus-blue) !important;\n box-shadow: inset 0 0 0 2px var(--ic-focus-glow) !important;\n border-radius: var(--ic-space-xxs);\n height: var(--ic-space-xl);\n margin-top: var(--ic-space-xxxs);\n}\n\n.search-submit-button:focus * {\n fill: white;\n}\n\n.divider {\n width: 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, 320px);\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: 1px;\n margin-bottom: -1px;\n margin-right: -1px;\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: 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 debounceEvent,\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: true,\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\n /**\n * Provide a label for the input.\n */\n @Prop() label!: string;\n\n /**\n * Specify if the input requires a value.\n */\n @Prop() required?: boolean = false;\n /**\n * Specify whether the input is disabled.\n */\n @Prop() disabled?: boolean = false;\n\n /**\n * Specify whether the input is read only.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * Provide a placeholder value to display.\n */\n @Prop() placeholder?: string = \"Search\";\n\n /**\n * Specify whether the component fills the full width of the container.\n * If true, this overrides the --input-width css prop.\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 * Hides the label and applies the required label value as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * Provide helper text to display additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * Specify whether dense styling is to be applied to the element.\n */\n @Prop() dense?: boolean = false;\n\n /**\n * Value of Search input.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n\n /**\n * Indicates whether and how the text value should be automatically capitalized 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 * Indicates whether the value of the control can be automatically completed by the browser.\n */\n @Prop() autocomplete?: IcAutocompleteTypes = \"off\";\n\n /**\n * Whether auto correction should be enabled when the user is entering/editing the text value.\n */\n @Prop() autocorrect?: IcAutocorrectStates = \"off\";\n\n /**\n * This Boolean attribute lets you specify that a form control should have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * Set the amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop({ mutable: true }) debounce?: number = 0;\n\n @Watch(\"debounce\")\n private debounceChanged() {\n this.icChange = debounceEvent(this.icChange, this.debounce);\n }\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 element will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n /**\n * Provide the suggested search options\n */\n @Prop() options?: IcMenuOption[] = [];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n if (this.disableFilter) {\n this.filteredOptions = newOptions;\n }\n }\n\n /**\n * Specify whether the input should be focussed when component loaded.\n */\n @Prop() focusOnLoad?: boolean = false;\n\n /**\n * Determines whether the dark variant of the search bar should be displayed.\n */\n @Prop() dark?: boolean = false;\n\n /**\n * Provide hint text for 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 * Provide text for empty results list\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * 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 this.icChange.emit({ value: newValue });\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) {\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.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 /**\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 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 const noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\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 this.icInput.emit({ value: this.value });\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounce);\n\n this.debounce = window.setTimeout(() => {\n this.updateSearchResultAriaLive();\n }, 500);\n }\n\n /**\n * Emitted when input loses focus.\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 * Emitted when input gains focus.\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 /**\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 /**\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\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 handleMenuChange = (ev: CustomEvent) => {\n this.setMenuChange(ev.detail.open);\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 @Listen(\"menuChange\", {})\n onMenuClose(ev: CustomEvent): void {\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 @Listen(\"menuOptionId\")\n onMenuOptionHighlighted(ev: CustomEvent): void {\n if (ev.detail.optionId) {\n this.ariaActiveDescendant = ev.detail.optionId;\n } else {\n this.ariaActiveDescendant = undefined;\n }\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 (!this.open || this.value === \"\") {\n searchResultsStatusEl.innerText = \"\";\n } else if (\n this.options.length > 0 &&\n this.filteredOptions.length > 0 &&\n this.open &&\n searchResultsStatusEl\n ) {\n searchResultsStatusEl.innerText = `${this.filteredOptions.length} result${\n this.filteredOptions.length > 1 ? \"s\" : \"\"\n } available`;\n }\n };\n\n private hasOptionsOrFilterDisabled = (): boolean =>\n this.options.length > 0 || this.disableFilter;\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 connectedCallback(): void {\n this.debounceChanged();\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 this.anchorEl = this.inputEl.shadowRoot.querySelector(\n \"ic-input-component-container\"\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 dense,\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 dark,\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 && options.length > 0;\n const valueNotSet = value === undefined || value === null || value === \"\";\n const menuOpen = hasSuggestedSearch && open && filteredOptions.length > 0;\n\n const hadNoOptions =\n filteredOptions.length > 0 &&\n filteredOptions[0].label === this.emptyOptionListText;\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 [\"dark\"]: dark,\n [\"disabled\"]: disabled,\n [\"dense\"]: dense,\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 dense={dense}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n name={name}\n truncateValue={truncateValue}\n dark={dark}\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 >\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 size={dense ? \"dense\" : \"default\"}\n onFocus={this.handleFocusClearButton}\n onBlur={this.handleClearBlur}\n onKeyDown={this.handleClear}\n type=\"submit\"\n variant=\"icon\"\n buttonStyle={\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\":\n valueNotSet || disabled || hadNoOptions,\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-dense\"]: !!dense,\n }}\n disabled={valueNotSet || disabled || hadNoOptions}\n innerHTML={searchIcon}\n size={dense ? \"dense\" : \"default\"}\n onClick={this.handleSubmitSearch}\n onBlur={this.handleSubmitSearchBlur}\n onFocus={this.handleSubmitSearchFocus}\n type=\"submit\"\n variant=\"icon\"\n buttonStyle={\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\": 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 dense={dense}\n fullWidth={fullWidth}\n menuId={menuId}\n open={true}\n options={filteredOptions}\n onOptionSelect={this.handleOptionSelect}\n onMenuChange={this.handleMenuChange}\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,5 +1,5 @@
1
1
  import { r as registerInstance, c as createEvent, h, H as Host, g as getElement } from './index-1500de1f.js';
2
- import { u as getLabelFromValue, k as inheritAttributes, a as onComponentRequiredPropUndefined, r as renderHiddenInput, d as getInputDescribedByText, h as hasValidationStatus, v as isMobileOrTablet, I as IcThemeForegroundEnum, l as IC_INHERITED_ARIA, w as IcInformationStatus } from './helpers-db00eae1.js';
2
+ import { v as getLabelFromValue, t as getFilteredMenuOptions, k as inheritAttributes, a as onComponentRequiredPropUndefined, r as renderHiddenInput, d as getInputDescribedByText, h as hasValidationStatus, w as isMobileOrTablet, I as IcThemeForegroundEnum, l as IC_INHERITED_ARIA, x as IcInformationStatus } from './helpers-63cb8828.js';
3
3
 
4
4
  const Expand = `<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
5
5
  <path d="M7 9.5L12 14.5L17 9.5H7Z" fill="currentColor" />
@@ -11,7 +11,7 @@ const Clear = `<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www
11
11
  </svg>
12
12
  `;
13
13
 
14
- const icSelectCss = "/*! 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}ic-input-component-container:hover{--border-color:var(--ic-action-dark-hover)}ic-input-component-container:active{--border-color:var(--ic-action-dark-active);color:var(--ic-action-dark-active)}ic-input-component-container.menu-open{--border-color:var(--ic-architectural-400);color:var(--ic-action-dark)}ic-input-validation .status-icon,ic-input-validation .statustext{visibility:visible;transition:visibility 0s 149ms}ic-input-validation.menu-open .status-icon,ic-input-validation.menu-open .statustext{visibility:hidden;transition:visibility 0s}select{border:0;border-radius:var(--ic-border-radius);background-color:var(--ic-architectural-white);color:var(--ic-color-primary-text);line-height:1.5rem;letter-spacing:0.005rem;width:100%;height:100%;padding-left:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-repeat:no-repeat;background-position:right 6px center;background-image:url(\"data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\")}select option,.select-option-selected{color:var(--ic-color-primary-text)}select:disabled{color:var(--ic-architectural-200);background-image:url(\"data:image/svg+xml;utf8,<svg fill='grey' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\")}select:focus{border:0;outline:0}select:not([disabled]){cursor:pointer}.select-input{width:100%;height:100%;padding:0 6px;display:flex;cursor:pointer;align-items:center;justify-content:space-between;background:none;border:none}.select-input:focus{outline:none}:host(:not([disabled])) ic-input-component-container:hover .select-input{background-color:var(--ic-architectural-white)}:host([disabled]) .select-input{pointer-events:none}.expand-icon{height:var(--ic-space-lg);padding-left:var(--ic-space-xs);color:var(--expand-icon-hover, var(--ic-architectural-400))}:host([disabled]) .expand-icon,:host([disabled]) .expand-icon>svg>path{color:var(--ic-architectural-200)}.expand-icon-open{transform:rotateX(180deg);color:var(--ic-action-dark)}.expand-icon-filled{padding-left:var(--ic-space-xxs);color:var(--ic-action-dark)}.placeholder{color:var(--ic-color-tertiary-text)}:host([disabled]) .value-text{color:var(--ic-architectural-200)}.select-input-end{display:flex;align-items:center}.clear-button-container{display:flex;gap:var(--ic-space-xxs);padding-left:var(--ic-space-xs)}.divider{width:1px;background-color:var(--ic-architectural-400);margin:var(--ic-space-xxs) 0;border-radius:1px}:host :focus-within .clear-button:focus{background-color:var(--ic-focus-blue);box-shadow:inset 0 0 0 2px var(--ic-focus-glow);border-radius:4px}.clear-button:focus *{fill:white}";
14
+ const icSelectCss = "/*! 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}ic-input-component-container:hover{--border-color:var(--ic-action-dark-hover)}ic-input-component-container:active{--border-color:var(--ic-action-dark-active);color:var(--ic-action-dark-active)}ic-input-component-container.menu-open{--border-color:var(--ic-architectural-400);color:var(--ic-action-dark)}ic-input-validation .status-icon,ic-input-validation .statustext{visibility:visible}ic-input-validation.menu-open .status-icon,ic-input-validation.menu-open .statustext{visibility:hidden;transition:visibility 0s}ic-input-label{margin-bottom:var(--ic-space-xs) !important}select{border:0;border-radius:var(--ic-border-radius);background-color:var(--ic-architectural-white);color:var(--ic-color-primary-text);line-height:1.5rem;letter-spacing:0.005rem;width:100%;height:100%;padding-left:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-repeat:no-repeat;background-position:right 6px center;background-image:url(\"data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\")}select option,.select-option-selected{color:var(--ic-color-primary-text)}select:disabled{color:var(--ic-architectural-200);background-image:url(\"data:image/svg+xml;utf8,<svg fill='grey' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>\")}select:focus{border:0;outline:0}select:not([disabled]){cursor:pointer}.select-container{width:100%;display:flex;align-items:center}.select-input{width:100%;height:100%;padding:0 6px;display:flex;cursor:pointer;align-items:center;justify-content:space-between;background:none;border:none}.select-input:focus{outline:none}:host(:not([disabled])) ic-input-component-container:hover .select-input{background-color:var(--ic-architectural-white)}:host([disabled]) .select-input{pointer-events:none}:host([searchable]) .select-input{cursor:auto}.searchable-select-container{align-items:center;display:flex;width:100%}.expand-icon{height:var(--ic-space-lg);padding-left:var(--ic-space-xs);color:var(--expand-icon-hover, var(--ic-architectural-400))}:host([disabled]) .expand-icon,:host([disabled]) .expand-icon>svg>path{color:var(--ic-architectural-200)}:host([searchable]) .expand-icon{padding-left:var(--ic-space-xxs);height:36px}:host([searchable]) .expand-icon>svg{height:36px;padding:0 6px}:host([searchable]:not([disabled])) .expand-icon>svg{cursor:pointer}.expand-icon-open{color:var(--ic-action-dark)}.expand-icon-filled{color:var(--ic-action-dark)}.expand-icon-open,:host([searchable]) .expand-icon-open{transform:rotateX(180deg)}:host([disabled]) .value-text,.placeholder{color:var(--ic-color-tertiary-text)}.select-input-end{display:flex;align-items:center}.clear-button-container{display:flex;gap:var(--ic-space-xxs);padding-left:38px}:host([dense]) .clear-button-container{padding-left:30px}.divider{width:1px;background-color:var(--ic-architectural-400);margin:var(--ic-space-xxs) 0;border-radius:1px;height:var(--ic-space-lg)}:host([dense]) .divider{height:var(--ic-space-md)}.clear-button{position:absolute;right:44px;border-radius:var(--ic-border-radius);transition:box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition)}.clear-button:focus{background-color:var(--ic-focus-blue);box-shadow:inset 0 0 0 2px var(--ic-focus-glow);border-radius:4px}.clear-button:focus *{fill:white}.searchable-select-results-status{border:0;clip:rect(0, 0, 0, 0, 0);height:1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}";
15
15
 
16
16
  let inputIds = 0;
17
17
  const Select = class {
@@ -23,6 +23,23 @@ const Select = class {
23
23
  this.inputId = `ic-select-input-${inputIds++}`;
24
24
  this.menuId = `${this.inputId}-menu`;
25
25
  this.inheritedAttributes = {};
26
+ this.isMenuEnabled = () => {
27
+ return (((this.searchableSelectInputValue === null ||
28
+ this.searchableSelectInputValue === "") &&
29
+ this.charactersUntilSuggestions === 0) ||
30
+ (this.searchableSelectInputValue &&
31
+ this.searchableSelectInputValue.length >=
32
+ this.charactersUntilSuggestions));
33
+ };
34
+ this.setOptionsValuesFromLabels = () => {
35
+ if (this.options.length > 0) {
36
+ this.options.map((option) => {
37
+ if (!option.value) {
38
+ option.value = option.label;
39
+ }
40
+ });
41
+ }
42
+ };
26
43
  this.setTextColor = () => {
27
44
  if (this.nativeSelectElement.selectedIndex === 0) {
28
45
  this.nativeSelectElement.className = "placeholder";
@@ -31,18 +48,53 @@ const Select = class {
31
48
  this.nativeSelectElement.className = "select-option-selected";
32
49
  }
33
50
  };
51
+ this.setMenuChange = (open) => {
52
+ if (this.open !== open) {
53
+ this.open = open;
54
+ }
55
+ };
34
56
  this.getLabelFromValue = (value) => {
35
57
  return getLabelFromValue(value, this.options);
36
58
  };
59
+ this.getValueFromLabel = (label) => {
60
+ var _a;
61
+ const value = (_a = this.options.find((option) => option.label === label)) === null || _a === void 0 ? void 0 : _a.value;
62
+ return value;
63
+ };
64
+ this.getFilteredChildMenuOptions = (option) => {
65
+ let children = option.children;
66
+ children = getFilteredMenuOptions(option.children, this.includeDescriptionsInSearch, this.searchableSelectInputValue, this.searchMatchPosition);
67
+ const newOption = Object.assign({}, option);
68
+ newOption.children = children;
69
+ return newOption;
70
+ };
37
71
  this.handleNativeSelectChange = () => {
38
72
  this.icChange.emit({ value: this.nativeSelectElement.value });
39
73
  this.setTextColor();
40
74
  };
41
75
  this.handleCustomSelectChange = (event) => {
76
+ if (this.searchable && event.detail.label === this.emptyOptionListText) {
77
+ this.searchableSelectElement.focus();
78
+ return;
79
+ }
80
+ if (this.searchable) {
81
+ this.searchableSelectInputValue = this.getLabelFromValue(event.detail.value);
82
+ }
83
+ this.ariaActiveDescendant = event.detail.optionId;
42
84
  this.icChange.emit({ value: event.detail.value });
43
85
  };
44
86
  this.handleMenuChange = (event) => {
45
87
  this.open = event.detail.open;
88
+ this.searchable && this.handleFocusIndicatorDisplay();
89
+ };
90
+ this.handleFocusIndicatorDisplay = () => {
91
+ const focusIndicator = this.host.shadowRoot.querySelector(".focus-indicator");
92
+ if (this.open) {
93
+ focusIndicator.classList.add("focus-indicator-enabled");
94
+ }
95
+ else {
96
+ focusIndicator.classList.remove("focus-indicator-enabled");
97
+ }
46
98
  };
47
99
  this.handleMouseDown = (event) => {
48
100
  if (!this.open) {
@@ -50,17 +102,52 @@ const Select = class {
50
102
  }
51
103
  };
52
104
  this.handleClick = (event) => {
53
- if (event.detail !== 0) {
105
+ this.noOptions = null;
106
+ this.menu.options = this.options;
107
+ if (event.detail !== 0 && this.isMenuEnabled()) {
54
108
  this.menu.handleClickOpen();
55
109
  }
56
110
  };
111
+ this.handleExpandIconMouseDown = (event) => {
112
+ if (!this.disabled) {
113
+ event.preventDefault();
114
+ this.searchableSelectElement.focus();
115
+ this.handleClick(event);
116
+ }
117
+ };
57
118
  this.handleClear = (event) => {
58
119
  event.stopPropagation();
120
+ this.noOptions = null;
59
121
  this.icChange.emit({ value: null });
60
- this.customSelectElement.focus();
122
+ if (this.searchable) {
123
+ this.searchableSelectElement.value = null;
124
+ this.searchableSelectInputValue = null;
125
+ this.menu.options = this.options;
126
+ this.searchableSelectElement.focus();
127
+ if (!this.isMenuEnabled()) {
128
+ this.setMenuChange(false);
129
+ }
130
+ }
131
+ else {
132
+ this.customSelectElement.focus();
133
+ }
61
134
  };
62
135
  this.handleKeyDown = (event) => {
63
- this.menu.handleKeyboardOpen(event);
136
+ event.cancelBubble = true;
137
+ if (!this.open) {
138
+ this.noOptions = null;
139
+ this.menu.options = this.options;
140
+ }
141
+ if (this.open && event.key === "Enter") {
142
+ this.setMenuChange(false);
143
+ }
144
+ else {
145
+ if (!((event.key === "ArrowDown" || event.key === "ArrowUp") &&
146
+ this.noOptions !== null) &&
147
+ this.isMenuEnabled()) {
148
+ this.menu.handleKeyboardOpen(event);
149
+ }
150
+ }
64
151
  };
65
152
  this.handleClearButtonFocus = () => {
66
153
  this.clearButtonFocused = true;
@@ -68,10 +155,82 @@ const Select = class {
68
155
  this.handleClearButtonBlur = () => {
69
156
  this.clearButtonFocused = false;
70
157
  };
158
+ this.handleSearchableSelectInput = (event) => {
159
+ this.searchableSelectInputValue = event.target.value;
160
+ if (this.getValueFromLabel(this.searchableSelectInputValue) === undefined) {
161
+ this.icChange.emit({ value: null });
162
+ }
163
+ if (this.isMenuEnabled()) {
164
+ this.setMenuChange(true);
165
+ }
166
+ else {
167
+ this.setMenuChange(false);
168
+ }
169
+ const options = [...this.options];
170
+ let isGrouped = false;
171
+ let newFilteredOptions = [];
172
+ options.map((option) => {
173
+ if (option.children)
174
+ isGrouped = true;
175
+ });
176
+ const menuOptionsFiltered = getFilteredMenuOptions(options, this.includeDescriptionsInSearch, this.searchableSelectInputValue, this.searchMatchPosition);
177
+ if (!isGrouped) {
178
+ newFilteredOptions = menuOptionsFiltered;
179
+ }
180
+ else {
181
+ options.map((option) => {
182
+ if (this.includeGroupTitlesInSearch) {
183
+ if (menuOptionsFiltered.indexOf(option) !== -1) {
184
+ newFilteredOptions.push(option);
185
+ }
186
+ else {
187
+ newFilteredOptions.push(this.getFilteredChildMenuOptions(option));
188
+ }
189
+ }
190
+ else {
191
+ newFilteredOptions.push(this.getFilteredChildMenuOptions(option));
192
+ }
193
+ });
194
+ }
195
+ let noChildOptionsWhenFiltered = false;
196
+ if (isGrouped) {
197
+ noChildOptionsWhenFiltered = true;
198
+ newFilteredOptions.map((option) => {
199
+ if (option.children.length > 0) {
200
+ noChildOptionsWhenFiltered = false;
201
+ }
202
+ });
203
+ }
204
+ const noOptions = [{ label: this.emptyOptionListText, value: "" }];
205
+ if (newFilteredOptions.length > 0 && !noChildOptionsWhenFiltered) {
206
+ this.noOptions = null;
207
+ this.filteredOptions = newFilteredOptions;
208
+ }
209
+ else {
210
+ this.noOptions = noOptions;
211
+ this.filteredOptions = this.noOptions;
212
+ }
213
+ this.debounceAriaLiveUpdate();
214
+ };
215
+ this.updateSearchableSelectResultAriaLive = () => {
216
+ const searchableSelectResultsStatusEl = this.host.shadowRoot.querySelector(".searchable-select-results-status");
217
+ if (this.noOptions !== null) {
218
+ searchableSelectResultsStatusEl.innerText = this.emptyOptionListText;
219
+ }
220
+ else {
221
+ searchableSelectResultsStatusEl.innerText = "";
222
+ }
223
+ };
71
224
  this.onFocus = () => {
72
225
  this.icFocus.emit();
73
226
  };
74
- this.onBlur = () => {
227
+ this.onBlur = (event) => {
228
+ if (this.searchable &&
229
+ event.relatedTarget !== this.menu &&
230
+ !(this.clearButton && event.relatedTarget === this.clearButton)) {
231
+ this.setMenuChange(false);
232
+ this.handleFocusIndicatorDisplay();
233
+ }
75
234
  this.icBlur.emit();
76
235
  };
77
236
  this.label = undefined;
@@ -89,8 +248,22 @@ const Select = class {
89
248
  this.value = undefined;
90
249
  this.name = this.inputId;
91
250
  this.showClearButton = false;
251
+ this.searchable = false;
252
+ this.includeDescriptionsInSearch = false;
253
+ this.includeGroupTitlesInSearch = false;
254
+ this.searchMatchPosition = "anywhere";
255
+ this.charactersUntilSuggestions = 0;
256
+ this.emptyOptionListText = "No results found";
92
257
  this.open = false;
93
258
  this.clearButtonFocused = false;
259
+ this.searchableSelectInputValue = null;
260
+ this.filteredOptions = this.options;
261
+ this.ariaActiveDescendant = undefined;
262
+ this.noOptions = null;
263
+ }
264
+ watchOptionsHandler() {
265
+ this.setOptionsValuesFromLabels();
266
+ this.filteredOptions = this.options;
94
267
  }
95
268
  /**
96
269
  * Sets focus on the input box.
@@ -102,6 +275,15 @@ const Select = class {
102
275
  else if (this.customSelectElement) {
103
276
  this.customSelectElement.focus();
104
277
  }
278
+ else if (this.searchableSelectElement) {
279
+ this.searchableSelectElement.focus();
280
+ }
281
+ }
282
+ debounceAriaLiveUpdate() {
283
+ clearTimeout(this.debounce);
284
+ window.setTimeout(() => {
285
+ this.updateSearchableSelectResultAriaLive();
286
+ }, 800);
105
287
  }
106
288
  componentWillLoad() {
107
289
  this.inheritedAttributes = inheritAttributes(this.host, [
@@ -109,13 +291,7 @@ const Select = class {
109
291
  "tabindex",
110
292
  "title",
111
293
  ]);
112
- if (this.options.length > 0) {
113
- this.options.map((option) => {
114
- if (!option.value) {
115
- option.value = option.label;
116
- }
117
- });
118
- }
294
+ this.setOptionsValuesFromLabels();
119
295
  }
120
296
  componentDidRender() {
121
297
  if (this.nativeSelectElement && !this.disabled) {
@@ -126,34 +302,51 @@ const Select = class {
126
302
  onComponentRequiredPropUndefined([{ prop: this.label, propName: "label" }], "Select");
127
303
  }
128
304
  render() {
129
- const { dense, disabled, fullWidth, helperText, hideLabel, host, inputId, label, name, open, options, menuId, placeholder, readonly, required, showClearButton, validationStatus, validationText, value, } = this;
305
+ const { dense, disabled, fullWidth, helperText, hideLabel, label, menuId, name, options, placeholder, readonly, required, searchable, showClearButton, validationStatus, validationText, value, } = this;
130
306
  renderHiddenInput(true, this.host, name, value, disabled);
131
307
  const invalid = validationStatus === IcInformationStatus.Error ? "true" : "false";
132
- const describedBy = getInputDescribedByText(inputId, helperText !== "", hasValidationStatus(this.validationStatus, this.disabled)).trim();
133
- return (h(Host, null, h("ic-input-container", { readonly: readonly }, !hideLabel && (h("ic-input-label", { for: inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly })), h("ic-input-component-container", { ref: (el) => (this.anchorEl = el), class: { "menu-open": open }, dense: dense, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, readonly ? (h("ic-typography", null, h("p", null, this.getLabelFromValue(value)))) : isMobileOrTablet() ? (h("select", Object.assign({ ref: (el) => (this.nativeSelectElement = el), disabled: disabled, onChange: this.handleNativeSelectChange, required: required, id: inputId, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, onBlur: this.onBlur, onFocus: this.onFocus }, this.inheritedAttributes), h("option", { value: "", selected: true, disabled: !this.showClearButton }, placeholder), options.map((option) => {
308
+ const describedBy = getInputDescribedByText(this.inputId, helperText !== "", hasValidationStatus(this.validationStatus, this.disabled)).trim();
309
+ return (h(Host, null, h("ic-input-container", { readonly: readonly }, !hideLabel && (h("ic-input-label", { for: this.inputId, label: label, helperText: helperText, required: required, disabled: disabled, readonly: readonly })), h("ic-input-component-container", { ref: (el) => (this.anchorEl = el), class: { "menu-open": this.open }, dense: dense, fullWidth: fullWidth, disabled: disabled, readonly: readonly, validationStatus: validationStatus }, readonly ? (h("ic-typography", null, h("p", null, this.getLabelFromValue(value)))) : isMobileOrTablet() ? (h("select", Object.assign({ ref: (el) => (this.nativeSelectElement = el), disabled: disabled, onChange: this.handleNativeSelectChange, required: required, id: this.inputId, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, onBlur: this.onBlur, onFocus: this.onFocus }, this.inheritedAttributes), h("option", { value: "", selected: true, disabled: !showClearButton }, placeholder), options.map((option) => {
134
310
  if (option.children) {
135
311
  return (h("optgroup", { label: option.label }, option.children.map((option) => (h("option", { value: option.value, disabled: option.disabled, selected: option.value === value }, option.label)))));
136
312
  }
137
313
  else {
138
314
  return (h("option", { value: option.value, disabled: option.disabled, selected: option.value === value }, option.label));
139
315
  }
140
- }))) : (h("button", { class: "select-input", ref: (el) => (this.customSelectElement = el), id: inputId, "aria-label": `${label}, ${this.getLabelFromValue(value) || placeholder}${required ? ", required" : ""}`, "aria-describedby": describedBy, "aria-invalid": invalid, "aria-haspopup": "listbox", "aria-expanded": open ? "true" : "false", "aria-owns": menuId, "aria-controls": menuId, disabled: disabled, onBlur: this.onBlur, onFocus: this.onFocus, onClick: this.handleClick, onMouseDown: this.handleMouseDown, onKeyDown: this.handleKeyDown }, h("ic-typography", { variant: "body", class: {
316
+ }))) : searchable ? (h("div", { class: "searchable-select-container" }, h("input", { class: "select-input", role: "combobox", "aria-label": label, "aria-describedby": describedBy, "aria-activedescendant": this.ariaActiveDescendant, "aria-autocomplete": "list", "aria-expanded": this.open ? "true" : "false", "aria-invalid": invalid, "aria-required": required ? "true" : "false", "aria-controls": menuId, ref: (el) => (this.searchableSelectElement = el), id: this.inputId, value: this.searchableSelectInputValue, placeholder: placeholder, disabled: disabled, onInput: this.handleSearchableSelectInput, onClick: this.handleClick, onKeyDown: this.handleKeyDown, onFocus: this.onFocus, onBlur: this.onBlur }), this.searchableSelectInputValue &&
317
+ (showClearButton || searchable) && (h("div", { class: "clear-button-container" }, h("ic-button", { id: "clear-button", ref: (el) => (this.clearButton = el), "aria-label": this.searchableSelectInputValue && value === null
318
+ ? "Clear input"
319
+ : "Clear selection", class: "clear-button", innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearButtonFocus, onBlur: this.handleClearButtonBlur, size: dense ? "dense" : "default", variant: "icon", buttonStyle: this.clearButtonFocused
320
+ ? IcThemeForegroundEnum.Light
321
+ : IcThemeForegroundEnum.Dark }), h("div", { class: "divider" }))), h("span", { onMouseDown: this.handleExpandIconMouseDown, class: {
322
+ "expand-icon": true,
323
+ "expand-icon-open": this.open,
324
+ "expand-icon-filled": !(value == null || value === ""),
325
+ "expand-icon-disabled": !this.isMenuEnabled(),
326
+ }, innerHTML: Expand, "aria-hidden": "true" }), h("div", { "aria-live": "polite", role: "status", class: "searchable-select-results-status" }))) : (h("div", { class: "select-container" }, h("button", { class: "select-input", ref: (el) => (this.customSelectElement = el), id: this.inputId, "aria-label": `${label}, ${this.getLabelFromValue(value) || placeholder}${required ? ", required" : ""}`, "aria-describedby": describedBy, "aria-invalid": invalid, "aria-haspopup": "listbox", "aria-expanded": this.open ? "true" : "false", "aria-owns": menuId, "aria-controls": menuId, disabled: disabled, onBlur: this.onBlur, onFocus: this.onFocus, onClick: this.handleClick, onMouseDown: this.handleMouseDown, onKeyDown: this.handleKeyDown }, h("ic-typography", { variant: "body", class: {
141
327
  "value-text": true,
142
328
  placeholder: this.getLabelFromValue(value) === undefined,
143
- } }, h("p", null, this.getLabelFromValue(value) || placeholder)), h("div", { class: "select-input-end" }, value && showClearButton && (h("div", { class: "clear-button-container" }, 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: dense ? "dense" : "default", variant: "icon", buttonStyle: this.clearButtonFocused
144
- ? IcThemeForegroundEnum.Light
145
- : IcThemeForegroundEnum.Dark }), h("div", { class: "divider" }))), h("span", { class: {
329
+ } }, h("p", null, this.getLabelFromValue(value) || placeholder)), h("div", { class: "select-input-end" }, value && showClearButton && h("div", { class: "divider" }), h("span", { class: {
146
330
  "expand-icon": true,
147
331
  "expand-icon-open": this.open,
148
- "expand-icon-filled": !(this.value == null || this.value === ""),
149
- }, innerHTML: Expand, "aria-hidden": "true" }))))), !isMobileOrTablet() && (h("ic-menu", { ref: (el) => (this.menu = el), inputEl: this.customSelectElement, inputLabel: label, anchorEl: this.anchorEl, dense: dense, menuId: menuId, open: open, options: options, value: value, fullWidth: fullWidth, onMenuChange: this.handleMenuChange, onOptionSelect: this.handleCustomSelectChange, parentEl: host })), h("ic-input-validation", { class: { "menu-open": open }, ariaLiveMode: "polite", status: hasValidationStatus(this.validationStatus, this.disabled) ===
332
+ "expand-icon-filled": !(value == null || value === ""),
333
+ }, innerHTML: Expand, "aria-hidden": "true" }))), value && showClearButton && (h("ic-button", { id: "clear-button", "aria-label": "Clear selection", class: "clear-button", innerHTML: Clear, onClick: this.handleClear, onFocus: this.handleClearButtonFocus, onBlur: this.handleClearButtonBlur, size: dense ? "dense" : "default", variant: "icon", buttonStyle: this.clearButtonFocused
334
+ ? IcThemeForegroundEnum.Light
335
+ : IcThemeForegroundEnum.Dark }))))), !isMobileOrTablet() && (h("ic-menu", { class: {
336
+ "no-results": this.noOptions !== null,
337
+ }, ref: (el) => (this.menu = el), inputEl: searchable
338
+ ? this.searchableSelectElement
339
+ : this.customSelectElement, inputLabel: label, anchorEl: this.anchorEl, dense: dense, menuId: menuId, open: this.open, options: searchable ? this.filteredOptions : options, value: value, fullWidth: fullWidth, onMenuChange: this.handleMenuChange, onOptionSelect: this.handleCustomSelectChange, parentEl: this.host })), h("ic-input-validation", { class: { "menu-open": this.open }, ariaLiveMode: "polite", status: hasValidationStatus(this.validationStatus, this.disabled) ===
150
340
  false
151
341
  ? ""
152
342
  : validationStatus, message: hasValidationStatus(this.validationStatus, this.disabled)
153
343
  ? validationText
154
- : "", for: inputId }))));
344
+ : "", for: this.inputId }))));
155
345
  }
156
346
  get host() { return getElement(this); }
347
+ static get watchers() { return {
348
+ "options": ["watchOptionsHandler"]
349
+ }; }
157
350
  };
158
351
  Select.style = icSelectCss;
159
352