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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (632) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-f1cf5156.js → helpers-69219f14.js} +24 -1
  3. package/dist/cjs/helpers-69219f14.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +2 -2
  6. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  8. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js +2 -2
  11. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-breadcrumb.cjs.entry.js +2 -2
  14. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  15. package/dist/cjs/ic-button_3.cjs.entry.js +17 -16
  16. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-card-vertical.cjs.entry.js +2 -2
  18. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-checkbox-group.cjs.entry.js +3 -3
  20. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-checkbox.cjs.entry.js +3 -3
  22. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-chip.cjs.entry.js +21 -14
  24. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  27. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  28. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-divider.cjs.entry.js +2 -2
  30. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-empty-state.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -2
  33. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  34. package/dist/cjs/ic-footer-link.cjs.entry.js +2 -2
  35. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-footer.cjs.entry.js +2 -2
  37. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-hero.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +2 -2
  40. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +447 -165
  42. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-input-label_2.cjs.entry.js +9 -7
  44. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-link.cjs.entry.js +2 -2
  46. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-menu-group.cjs.entry.js +2 -2
  48. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-menu-item.cjs.entry.js +2 -2
  50. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-navigation-button.cjs.entry.js +1 -1
  52. package/dist/cjs/ic-navigation-group.cjs.entry.js +2 -2
  53. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -2
  55. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-navigation-menu.cjs.entry.js +2 -2
  57. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-page-header.cjs.entry.js +5 -5
  59. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-pagination-item.cjs.entry.js +2 -2
  61. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-pagination.cjs.entry.js +1 -1
  63. package/dist/cjs/ic-popover-menu.cjs.entry.js +27 -21
  64. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-radio-group.cjs.entry.js +20 -10
  66. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-radio-option.cjs.entry.js +27 -22
  68. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-search-bar.cjs.entry.js +12 -25
  70. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-select.cjs.entry.js +148 -38
  72. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-side-navigation.cjs.entry.js +2 -2
  74. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-skeleton.cjs.entry.js +4 -4
  76. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-status-tag.cjs.entry.js +2 -2
  78. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-step.cjs.entry.js +4 -5
  80. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-stepper.cjs.entry.js +12 -2
  82. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-switch.cjs.entry.js +7 -4
  84. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-tab-context.cjs.entry.js +58 -122
  86. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  88. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  89. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-tab.cjs.entry.js +6 -7
  91. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  92. package/dist/cjs/ic-text-field.cjs.entry.js +3 -3
  93. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  94. package/dist/cjs/ic-theme.cjs.entry.js +1 -1
  95. package/dist/cjs/ic-toast.cjs.entry.js +3 -3
  96. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  97. package/dist/cjs/ic-toggle-button.cjs.entry.js +2 -2
  98. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  99. package/dist/cjs/ic-top-navigation.cjs.entry.js +2 -2
  100. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  101. package/dist/cjs/ic-typography.cjs.entry.js +5 -3
  102. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  103. package/dist/cjs/loader.cjs.js +1 -1
  104. package/dist/collection/components/ic-accordion/ic-accordion.css +3 -3
  105. package/dist/collection/components/ic-alert/ic-alert.css +19 -12
  106. package/dist/collection/components/ic-alert/ic-alert.js +1 -1
  107. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  108. package/dist/collection/components/ic-badge/ic-badge.css +2 -2
  109. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +1 -1
  110. package/dist/collection/components/ic-button/ic-button.css +30 -33
  111. package/dist/collection/components/ic-button/ic-button.js +5 -6
  112. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  113. package/dist/collection/components/ic-card-vertical/ic-card-vertical.css +9 -9
  114. package/dist/collection/components/ic-checkbox/ic-checkbox.css +9 -4
  115. package/dist/collection/components/ic-checkbox/ic-checkbox.js +1 -1
  116. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  117. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.css +2 -2
  118. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +1 -1
  119. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  120. package/dist/collection/components/ic-chip/ic-chip.css +64 -49
  121. package/dist/collection/components/ic-chip/ic-chip.js +41 -15
  122. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  123. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +16 -0
  124. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  125. package/dist/collection/components/ic-classification-banner/ic-classification-banner.css +25 -9
  126. package/dist/collection/components/ic-divider/ic-divider.css +2 -2
  127. package/dist/collection/components/ic-footer/ic-footer.css +3 -3
  128. package/dist/collection/components/ic-footer-link/ic-footer-link.css +4 -4
  129. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.css +4 -4
  130. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.css +3 -3
  131. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +9 -9
  132. package/dist/collection/components/ic-input-label/ic-input-label.css +6 -5
  133. package/dist/collection/components/ic-input-label/ic-input-label.js +45 -4
  134. package/dist/collection/components/ic-input-label/ic-input-label.js.map +1 -1
  135. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js +35 -49
  136. package/dist/collection/components/ic-input-label/test/basic/ic-input-label.spec.js.map +1 -1
  137. package/dist/collection/components/ic-input-validation/ic-input-validation.css +3 -3
  138. package/dist/collection/components/ic-link/ic-link.css +1 -1
  139. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +15 -10
  140. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +50 -31
  141. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  142. package/dist/collection/components/ic-menu/ic-menu.css +79 -19
  143. package/dist/collection/components/ic-menu/ic-menu.js +485 -192
  144. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  145. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +381 -33
  146. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  147. package/dist/collection/components/ic-menu-group/ic-menu-group.css +2 -2
  148. package/dist/collection/components/ic-menu-item/ic-menu-item.css +32 -28
  149. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +3 -3
  150. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +8 -8
  151. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.css +2 -2
  152. package/dist/collection/components/ic-page-header/ic-page-header.css +5 -2
  153. package/dist/collection/components/ic-page-header/ic-page-header.js +3 -3
  154. package/dist/collection/components/ic-page-header/ic-page-header.js.map +1 -1
  155. package/dist/collection/components/ic-pagination-item/ic-pagination-item.css +5 -5
  156. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +5 -5
  157. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +76 -19
  158. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  159. package/dist/collection/components/ic-radio-group/ic-radio-group.css +1 -1
  160. package/dist/collection/components/ic-radio-group/ic-radio-group.js +18 -8
  161. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  162. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +2 -2
  163. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  164. package/dist/collection/components/ic-radio-option/ic-radio-option.css +4 -3
  165. package/dist/collection/components/ic-radio-option/ic-radio-option.js +26 -21
  166. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  167. package/dist/collection/components/ic-search-bar/ic-search-bar.css +6 -5
  168. package/dist/collection/components/ic-search-bar/ic-search-bar.js +10 -23
  169. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  170. package/dist/collection/components/ic-select/ic-select.css +45 -25
  171. package/dist/collection/components/ic-select/ic-select.js +192 -44
  172. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  173. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +160 -1
  174. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  175. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +8 -8
  176. package/dist/collection/components/ic-skeleton/ic-skeleton.css +4 -27
  177. package/dist/collection/components/ic-skeleton/ic-skeleton.js +16 -10
  178. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  179. package/dist/collection/components/ic-status-tag/ic-status-tag.css +1 -1
  180. package/dist/collection/components/ic-step/ic-step.css +65 -98
  181. package/dist/collection/components/ic-step/ic-step.js +29 -3
  182. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  183. package/dist/collection/components/ic-stepper/ic-stepper.js +37 -19
  184. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  185. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js +4 -4
  186. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js.map +1 -1
  187. package/dist/collection/components/ic-switch/ic-switch.css +28 -31
  188. package/dist/collection/components/ic-switch/ic-switch.js +29 -2
  189. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  190. package/dist/collection/components/ic-tab/ic-tab.js +5 -6
  191. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  192. package/dist/collection/components/ic-tab-context/ic-tab-context.js +58 -122
  193. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  194. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js +2 -2
  195. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js.map +1 -1
  196. package/dist/collection/components/ic-tab-panel/ic-tab-panel.css +1 -1
  197. package/dist/collection/components/ic-text-field/ic-text-field.css +7 -6
  198. package/dist/collection/components/ic-text-field/ic-text-field.js +1 -1
  199. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  200. package/dist/collection/components/ic-toast/ic-toast.css +9 -4
  201. package/dist/collection/components/ic-toast/ic-toast.js +1 -1
  202. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  203. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +1 -1
  204. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  205. package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +8 -8
  206. package/dist/collection/components/ic-tooltip/ic-tooltip.css +7 -1
  207. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +6 -6
  208. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  209. package/dist/collection/components/ic-typography/ic-typography.css +3 -3
  210. package/dist/collection/components/ic-typography/ic-typography.js +3 -1
  211. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  212. package/dist/collection/utils/helpers.js +20 -0
  213. package/dist/collection/utils/helpers.js.map +1 -1
  214. package/dist/collection/utils/types.js.map +1 -1
  215. package/dist/components/helpers.js +22 -1
  216. package/dist/components/helpers.js.map +1 -1
  217. package/dist/components/ic-accordion.js +1 -1
  218. package/dist/components/ic-accordion.js.map +1 -1
  219. package/dist/components/ic-alert.js +1 -1
  220. package/dist/components/ic-alert.js.map +1 -1
  221. package/dist/components/ic-badge.js +1 -1
  222. package/dist/components/ic-badge.js.map +1 -1
  223. package/dist/components/ic-breadcrumb2.js +1 -1
  224. package/dist/components/ic-breadcrumb2.js.map +1 -1
  225. package/dist/components/ic-button2.js +6 -7
  226. package/dist/components/ic-button2.js.map +1 -1
  227. package/dist/components/ic-card-vertical.js +1 -1
  228. package/dist/components/ic-card-vertical.js.map +1 -1
  229. package/dist/components/ic-checkbox-group.js +2 -2
  230. package/dist/components/ic-checkbox-group.js.map +1 -1
  231. package/dist/components/ic-checkbox.js +2 -2
  232. package/dist/components/ic-checkbox.js.map +1 -1
  233. package/dist/components/ic-chip.js +23 -14
  234. package/dist/components/ic-chip.js.map +1 -1
  235. package/dist/components/ic-classification-banner.js +1 -1
  236. package/dist/components/ic-classification-banner.js.map +1 -1
  237. package/dist/components/ic-divider2.js +1 -1
  238. package/dist/components/ic-divider2.js.map +1 -1
  239. package/dist/components/ic-footer-link-group.js +1 -1
  240. package/dist/components/ic-footer-link-group.js.map +1 -1
  241. package/dist/components/ic-footer-link.js +1 -1
  242. package/dist/components/ic-footer-link.js.map +1 -1
  243. package/dist/components/ic-footer.js +1 -1
  244. package/dist/components/ic-footer.js.map +1 -1
  245. package/dist/components/ic-horizontal-scroll2.js +1 -1
  246. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  247. package/dist/components/ic-input-component-container2.js +1 -1
  248. package/dist/components/ic-input-component-container2.js.map +1 -1
  249. package/dist/components/ic-input-label2.js +10 -6
  250. package/dist/components/ic-input-label2.js.map +1 -1
  251. package/dist/components/ic-input-validation2.js +1 -1
  252. package/dist/components/ic-input-validation2.js.map +1 -1
  253. package/dist/components/ic-link2.js +1 -1
  254. package/dist/components/ic-link2.js.map +1 -1
  255. package/dist/components/ic-loading-indicator2.js +11 -9
  256. package/dist/components/ic-loading-indicator2.js.map +1 -1
  257. package/dist/components/ic-menu-group.js +1 -1
  258. package/dist/components/ic-menu-group.js.map +1 -1
  259. package/dist/components/ic-menu-item2.js +1 -1
  260. package/dist/components/ic-menu-item2.js.map +1 -1
  261. package/dist/components/ic-menu2.js +450 -167
  262. package/dist/components/ic-menu2.js.map +1 -1
  263. package/dist/components/ic-navigation-group.js +2 -2
  264. package/dist/components/ic-navigation-group.js.map +1 -1
  265. package/dist/components/ic-navigation-item.js +2 -2
  266. package/dist/components/ic-navigation-item.js.map +1 -1
  267. package/dist/components/ic-navigation-menu2.js +2 -2
  268. package/dist/components/ic-navigation-menu2.js.map +1 -1
  269. package/dist/components/ic-page-header.js +4 -4
  270. package/dist/components/ic-page-header.js.map +1 -1
  271. package/dist/components/ic-pagination-item2.js +2 -2
  272. package/dist/components/ic-pagination-item2.js.map +1 -1
  273. package/dist/components/ic-popover-menu.js +29 -21
  274. package/dist/components/ic-popover-menu.js.map +1 -1
  275. package/dist/components/ic-radio-group.js +19 -9
  276. package/dist/components/ic-radio-group.js.map +1 -1
  277. package/dist/components/ic-radio-option.js +27 -22
  278. package/dist/components/ic-radio-option.js.map +1 -1
  279. package/dist/components/ic-search-bar.js +12 -25
  280. package/dist/components/ic-search-bar.js.map +1 -1
  281. package/dist/components/ic-select.js +149 -38
  282. package/dist/components/ic-select.js.map +1 -1
  283. package/dist/components/ic-side-navigation.js +2 -2
  284. package/dist/components/ic-side-navigation.js.map +1 -1
  285. package/dist/components/ic-skeleton.js +5 -5
  286. package/dist/components/ic-skeleton.js.map +1 -1
  287. package/dist/components/ic-status-tag.js +1 -1
  288. package/dist/components/ic-status-tag.js.map +1 -1
  289. package/dist/components/ic-step.js +4 -4
  290. package/dist/components/ic-step.js.map +1 -1
  291. package/dist/components/ic-stepper.js +14 -3
  292. package/dist/components/ic-stepper.js.map +1 -1
  293. package/dist/components/ic-switch.js +7 -3
  294. package/dist/components/ic-switch.js.map +1 -1
  295. package/dist/components/ic-tab-context.js +58 -122
  296. package/dist/components/ic-tab-context.js.map +1 -1
  297. package/dist/components/ic-tab-panel.js +1 -1
  298. package/dist/components/ic-tab-panel.js.map +1 -1
  299. package/dist/components/ic-tab.js +5 -6
  300. package/dist/components/ic-tab.js.map +1 -1
  301. package/dist/components/ic-text-field2.js +3 -3
  302. package/dist/components/ic-text-field2.js.map +1 -1
  303. package/dist/components/ic-theme.js +1 -1
  304. package/dist/components/ic-toast.js +3 -3
  305. package/dist/components/ic-toast.js.map +1 -1
  306. package/dist/components/ic-toggle-button.js +1 -1
  307. package/dist/components/ic-toggle-button.js.map +1 -1
  308. package/dist/components/ic-tooltip2.js +1 -1
  309. package/dist/components/ic-tooltip2.js.map +1 -1
  310. package/dist/components/ic-top-navigation.js +2 -2
  311. package/dist/components/ic-top-navigation.js.map +1 -1
  312. package/dist/components/ic-typography2.js +4 -2
  313. package/dist/components/ic-typography2.js.map +1 -1
  314. package/dist/core/core.css +661 -37
  315. package/dist/core/core.esm.js +1 -1
  316. package/dist/core/core.esm.js.map +1 -1
  317. package/dist/core/{p-d2f89cb5.entry.js → p-0395442c.entry.js} +2 -2
  318. package/dist/core/p-0d233b0c.entry.js +2 -0
  319. package/dist/core/p-0d233b0c.entry.js.map +1 -0
  320. package/dist/core/p-134def81.entry.js +2 -0
  321. package/dist/core/p-134def81.entry.js.map +1 -0
  322. package/dist/core/p-14dfd8db.entry.js +2 -0
  323. package/dist/core/p-14dfd8db.entry.js.map +1 -0
  324. package/dist/core/p-1b116dd1.entry.js +2 -0
  325. package/dist/core/p-1b116dd1.entry.js.map +1 -0
  326. package/dist/core/p-21cc87c0.entry.js +2 -0
  327. package/dist/core/p-21cc87c0.entry.js.map +1 -0
  328. package/dist/core/{p-54238d16.entry.js → p-27274ca8.entry.js} +2 -2
  329. package/dist/core/p-27274ca8.entry.js.map +1 -0
  330. package/dist/core/p-2eae9b27.entry.js +2 -0
  331. package/dist/core/p-2eae9b27.entry.js.map +1 -0
  332. package/dist/core/p-3618ac34.entry.js +2 -0
  333. package/dist/core/p-3618ac34.entry.js.map +1 -0
  334. package/dist/core/{p-355acffa.entry.js → p-37dea10d.entry.js} +2 -2
  335. package/dist/core/p-384d454d.entry.js +2 -0
  336. package/dist/core/p-384d454d.entry.js.map +1 -0
  337. package/dist/core/p-3d417eff.entry.js +2 -0
  338. package/dist/core/p-3d417eff.entry.js.map +1 -0
  339. package/dist/core/p-3d9726a3.entry.js +2 -0
  340. package/dist/core/p-3d9726a3.entry.js.map +1 -0
  341. package/dist/core/p-43256b7c.entry.js +2 -0
  342. package/dist/core/p-43256b7c.entry.js.map +1 -0
  343. package/dist/core/{p-46ee459b.entry.js → p-4a3b1f06.entry.js} +2 -2
  344. package/dist/core/{p-46ee459b.entry.js.map → p-4a3b1f06.entry.js.map} +1 -1
  345. package/dist/core/p-50ead56c.entry.js +2 -0
  346. package/dist/core/p-50ead56c.entry.js.map +1 -0
  347. package/dist/core/{p-5a2630fb.entry.js → p-5cd016e1.entry.js} +2 -2
  348. package/dist/core/{p-5a2630fb.entry.js.map → p-5cd016e1.entry.js.map} +1 -1
  349. package/dist/core/{p-78ce4920.entry.js → p-5ef8e106.entry.js} +2 -2
  350. package/dist/core/{p-78ce4920.entry.js.map → p-5ef8e106.entry.js.map} +1 -1
  351. package/dist/core/{p-c81109da.entry.js → p-690c5e80.entry.js} +2 -2
  352. package/dist/core/p-690c5e80.entry.js.map +1 -0
  353. package/dist/core/{p-43f9a711.entry.js → p-6d3e4bb1.entry.js} +2 -2
  354. package/dist/core/{p-1e802eeb.entry.js → p-726673ee.entry.js} +2 -2
  355. package/dist/core/p-726673ee.entry.js.map +1 -0
  356. package/dist/core/p-72d30c8a.entry.js +2 -0
  357. package/dist/core/p-72d30c8a.entry.js.map +1 -0
  358. package/dist/core/{p-f30f3a3e.entry.js → p-76263187.entry.js} +2 -2
  359. package/dist/core/p-7827b5cb.entry.js +2 -0
  360. package/dist/core/p-7827b5cb.entry.js.map +1 -0
  361. package/dist/core/p-79d0be03.entry.js +2 -0
  362. package/dist/core/p-79d0be03.entry.js.map +1 -0
  363. package/dist/core/{p-bf4c61cb.entry.js → p-7b35de65.entry.js} +2 -2
  364. package/dist/core/{p-bf4c61cb.entry.js.map → p-7b35de65.entry.js.map} +1 -1
  365. package/dist/core/p-7fbf2d3e.entry.js +2 -0
  366. package/dist/core/p-7fbf2d3e.entry.js.map +1 -0
  367. package/dist/core/p-91cf9b2b.entry.js +2 -0
  368. package/dist/core/p-91cf9b2b.entry.js.map +1 -0
  369. package/dist/core/p-922984cb.entry.js +2 -0
  370. package/dist/core/p-922984cb.entry.js.map +1 -0
  371. package/dist/core/{p-e861a2b3.entry.js → p-95f603dd.entry.js} +2 -2
  372. package/dist/core/p-95f603dd.entry.js.map +1 -0
  373. package/dist/core/{p-e4b276b5.entry.js → p-97fb2bdf.entry.js} +2 -2
  374. package/dist/core/p-ac4b7329.entry.js +2 -0
  375. package/dist/core/p-ac4b7329.entry.js.map +1 -0
  376. package/dist/core/p-acbd15ab.entry.js +2 -0
  377. package/dist/core/p-acbd15ab.entry.js.map +1 -0
  378. package/dist/core/{p-e597da0e.entry.js → p-b01ffa55.entry.js} +2 -2
  379. package/dist/core/p-b01ffa55.entry.js.map +1 -0
  380. package/dist/core/p-b17c94b7.entry.js +2 -0
  381. package/dist/core/p-b17c94b7.entry.js.map +1 -0
  382. package/dist/core/p-b78f8b8c.entry.js +2 -0
  383. package/dist/core/p-b78f8b8c.entry.js.map +1 -0
  384. package/dist/core/{p-312cacae.js → p-b7eb8ef9.js} +2 -2
  385. package/dist/core/p-b7eb8ef9.js.map +1 -0
  386. package/dist/core/{p-363d6e88.entry.js → p-b95a72a3.entry.js} +2 -2
  387. package/dist/core/{p-21e5dd29.entry.js → p-b997064c.entry.js} +2 -2
  388. package/dist/core/{p-56d1828c.entry.js → p-ba6ecc15.entry.js} +2 -2
  389. package/dist/core/{p-56d1828c.entry.js.map → p-ba6ecc15.entry.js.map} +1 -1
  390. package/dist/core/p-c0fc3d02.entry.js +2 -0
  391. package/dist/core/p-c0fc3d02.entry.js.map +1 -0
  392. package/dist/core/p-c396bd4d.entry.js +2 -0
  393. package/dist/core/p-c396bd4d.entry.js.map +1 -0
  394. package/dist/core/{p-a3b6a02d.entry.js → p-c9cf932c.entry.js} +2 -2
  395. package/dist/core/{p-a3b6a02d.entry.js.map → p-c9cf932c.entry.js.map} +1 -1
  396. package/dist/core/p-cf7db84a.entry.js +2 -0
  397. package/dist/core/p-cf7db84a.entry.js.map +1 -0
  398. package/dist/core/{p-a765ad17.entry.js → p-dd36bf1b.entry.js} +2 -2
  399. package/dist/core/p-dd36bf1b.entry.js.map +1 -0
  400. package/dist/core/p-e488de54.entry.js +2 -0
  401. package/dist/core/p-e488de54.entry.js.map +1 -0
  402. package/dist/core/p-e4d1839e.entry.js +2 -0
  403. package/dist/core/p-e4d1839e.entry.js.map +1 -0
  404. package/dist/core/p-eb3b4935.entry.js +2 -0
  405. package/dist/core/p-eb3b4935.entry.js.map +1 -0
  406. package/dist/core/{p-60efd7fa.entry.js → p-ebafab37.entry.js} +2 -2
  407. package/dist/core/{p-82375dca.entry.js → p-ee6dd94c.entry.js} +2 -2
  408. package/dist/core/p-f0fc1bf0.entry.js +2 -0
  409. package/dist/core/p-f0fc1bf0.entry.js.map +1 -0
  410. package/dist/core/p-f24984c5.entry.js +2 -0
  411. package/dist/core/p-f24984c5.entry.js.map +1 -0
  412. package/dist/core/{p-d8870804.entry.js → p-f5b2b26d.entry.js} +2 -2
  413. package/dist/core/p-f60dbd0e.entry.js +2 -0
  414. package/dist/core/p-f60dbd0e.entry.js.map +1 -0
  415. package/dist/core/{p-40e9e76a.entry.js → p-f71c00ce.entry.js} +2 -2
  416. package/dist/core/{p-69f3ce5a.entry.js → p-ff4298b1.entry.js} +2 -2
  417. package/dist/core/p-ff4298b1.entry.js.map +1 -0
  418. package/dist/esm/core.js +1 -1
  419. package/dist/esm/{helpers-1c9151ef.js → helpers-e8797e8d.js} +23 -2
  420. package/dist/esm/helpers-e8797e8d.js.map +1 -0
  421. package/dist/esm/ic-accordion-group.entry.js +1 -1
  422. package/dist/esm/ic-accordion.entry.js +2 -2
  423. package/dist/esm/ic-accordion.entry.js.map +1 -1
  424. package/dist/esm/ic-alert.entry.js +2 -2
  425. package/dist/esm/ic-alert.entry.js.map +1 -1
  426. package/dist/esm/ic-back-to-top.entry.js +1 -1
  427. package/dist/esm/ic-badge.entry.js +2 -2
  428. package/dist/esm/ic-badge.entry.js.map +1 -1
  429. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  430. package/dist/esm/ic-breadcrumb.entry.js +2 -2
  431. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  432. package/dist/esm/ic-button_3.entry.js +17 -16
  433. package/dist/esm/ic-button_3.entry.js.map +1 -1
  434. package/dist/esm/ic-card-vertical.entry.js +2 -2
  435. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  436. package/dist/esm/ic-checkbox-group.entry.js +3 -3
  437. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  438. package/dist/esm/ic-checkbox.entry.js +3 -3
  439. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  440. package/dist/esm/ic-chip.entry.js +22 -15
  441. package/dist/esm/ic-chip.entry.js.map +1 -1
  442. package/dist/esm/ic-classification-banner.entry.js +1 -1
  443. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  444. package/dist/esm/ic-data-row.entry.js +1 -1
  445. package/dist/esm/ic-dialog.entry.js +1 -1
  446. package/dist/esm/ic-divider.entry.js +2 -2
  447. package/dist/esm/ic-divider.entry.js.map +1 -1
  448. package/dist/esm/ic-empty-state.entry.js +1 -1
  449. package/dist/esm/ic-footer-link-group.entry.js +2 -2
  450. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  451. package/dist/esm/ic-footer-link.entry.js +2 -2
  452. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  453. package/dist/esm/ic-footer.entry.js +2 -2
  454. package/dist/esm/ic-footer.entry.js.map +1 -1
  455. package/dist/esm/ic-hero.entry.js +1 -1
  456. package/dist/esm/ic-horizontal-scroll.entry.js +2 -2
  457. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  458. package/dist/esm/ic-input-component-container_3.entry.js +447 -165
  459. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  460. package/dist/esm/ic-input-label_2.entry.js +9 -7
  461. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  462. package/dist/esm/ic-link.entry.js +2 -2
  463. package/dist/esm/ic-link.entry.js.map +1 -1
  464. package/dist/esm/ic-menu-group.entry.js +2 -2
  465. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  466. package/dist/esm/ic-menu-item.entry.js +2 -2
  467. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  468. package/dist/esm/ic-navigation-button.entry.js +1 -1
  469. package/dist/esm/ic-navigation-group.entry.js +2 -2
  470. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  471. package/dist/esm/ic-navigation-item.entry.js +2 -2
  472. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  473. package/dist/esm/ic-navigation-menu.entry.js +2 -2
  474. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  475. package/dist/esm/ic-page-header.entry.js +5 -5
  476. package/dist/esm/ic-page-header.entry.js.map +1 -1
  477. package/dist/esm/ic-pagination-item.entry.js +2 -2
  478. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  479. package/dist/esm/ic-pagination.entry.js +1 -1
  480. package/dist/esm/ic-popover-menu.entry.js +27 -21
  481. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  482. package/dist/esm/ic-radio-group.entry.js +20 -10
  483. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  484. package/dist/esm/ic-radio-option.entry.js +27 -22
  485. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  486. package/dist/esm/ic-search-bar.entry.js +12 -25
  487. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  488. package/dist/esm/ic-select.entry.js +148 -38
  489. package/dist/esm/ic-select.entry.js.map +1 -1
  490. package/dist/esm/ic-side-navigation.entry.js +2 -2
  491. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  492. package/dist/esm/ic-skeleton.entry.js +4 -4
  493. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  494. package/dist/esm/ic-status-tag.entry.js +2 -2
  495. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  496. package/dist/esm/ic-step.entry.js +4 -5
  497. package/dist/esm/ic-step.entry.js.map +1 -1
  498. package/dist/esm/ic-stepper.entry.js +12 -2
  499. package/dist/esm/ic-stepper.entry.js.map +1 -1
  500. package/dist/esm/ic-switch.entry.js +7 -4
  501. package/dist/esm/ic-switch.entry.js.map +1 -1
  502. package/dist/esm/ic-tab-context.entry.js +58 -122
  503. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  504. package/dist/esm/ic-tab-group.entry.js +1 -1
  505. package/dist/esm/ic-tab-panel.entry.js +2 -2
  506. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  507. package/dist/esm/ic-tab.entry.js +6 -7
  508. package/dist/esm/ic-tab.entry.js.map +1 -1
  509. package/dist/esm/ic-text-field.entry.js +3 -3
  510. package/dist/esm/ic-text-field.entry.js.map +1 -1
  511. package/dist/esm/ic-theme.entry.js +1 -1
  512. package/dist/esm/ic-toast.entry.js +3 -3
  513. package/dist/esm/ic-toast.entry.js.map +1 -1
  514. package/dist/esm/ic-toggle-button.entry.js +2 -2
  515. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  516. package/dist/esm/ic-top-navigation.entry.js +2 -2
  517. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  518. package/dist/esm/ic-typography.entry.js +5 -3
  519. package/dist/esm/ic-typography.entry.js.map +1 -1
  520. package/dist/esm/loader.js +1 -1
  521. package/dist/types/components/ic-alert/ic-alert.d.ts +1 -1
  522. package/dist/types/components/ic-chip/ic-chip.d.ts +8 -2
  523. package/dist/types/components/ic-input-label/ic-input-label.d.ts +8 -0
  524. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +9 -5
  525. package/dist/types/components/ic-menu/ic-menu.d.ts +43 -15
  526. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +7 -2
  527. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +3 -2
  528. package/dist/types/components/ic-select/ic-select.d.ts +24 -10
  529. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +3 -2
  530. package/dist/types/components/ic-step/ic-step.d.ts +5 -0
  531. package/dist/types/components/ic-stepper/ic-stepper.d.ts +6 -4
  532. package/dist/types/components/ic-switch/ic-switch.d.ts +5 -1
  533. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +8 -6
  534. package/dist/types/components.d.ts +113 -46
  535. package/dist/types/utils/helpers.d.ts +7 -0
  536. package/dist/types/utils/types.d.ts +1 -1
  537. package/hydrate/index.js +886 -494
  538. package/package.json +2 -2
  539. package/vscode-data.json +105 -35
  540. package/dist/cjs/helpers-f1cf5156.js.map +0 -1
  541. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js +0 -339
  542. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js.map +0 -1
  543. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +0 -1106
  544. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +0 -1
  545. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js +0 -49
  546. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js.map +0 -1
  547. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js +0 -109
  548. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js.map +0 -1
  549. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js +0 -39
  550. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js.map +0 -1
  551. package/dist/core/p-09104e40.entry.js +0 -2
  552. package/dist/core/p-09104e40.entry.js.map +0 -1
  553. package/dist/core/p-0c0b1c74.entry.js +0 -2
  554. package/dist/core/p-0c0b1c74.entry.js.map +0 -1
  555. package/dist/core/p-0c3a0d85.entry.js +0 -2
  556. package/dist/core/p-0c3a0d85.entry.js.map +0 -1
  557. package/dist/core/p-1083a708.entry.js +0 -2
  558. package/dist/core/p-1083a708.entry.js.map +0 -1
  559. package/dist/core/p-130dd440.entry.js +0 -2
  560. package/dist/core/p-130dd440.entry.js.map +0 -1
  561. package/dist/core/p-1e802eeb.entry.js.map +0 -1
  562. package/dist/core/p-21312898.entry.js +0 -2
  563. package/dist/core/p-21312898.entry.js.map +0 -1
  564. package/dist/core/p-2ab86057.entry.js +0 -2
  565. package/dist/core/p-2ab86057.entry.js.map +0 -1
  566. package/dist/core/p-312cacae.js.map +0 -1
  567. package/dist/core/p-35b8b480.entry.js +0 -2
  568. package/dist/core/p-35b8b480.entry.js.map +0 -1
  569. package/dist/core/p-54238d16.entry.js.map +0 -1
  570. package/dist/core/p-550d7356.entry.js +0 -2
  571. package/dist/core/p-550d7356.entry.js.map +0 -1
  572. package/dist/core/p-5a52614c.entry.js +0 -2
  573. package/dist/core/p-5a52614c.entry.js.map +0 -1
  574. package/dist/core/p-69f3ce5a.entry.js.map +0 -1
  575. package/dist/core/p-79d2a33b.entry.js +0 -2
  576. package/dist/core/p-79d2a33b.entry.js.map +0 -1
  577. package/dist/core/p-80237a20.entry.js +0 -2
  578. package/dist/core/p-80237a20.entry.js.map +0 -1
  579. package/dist/core/p-804513ad.entry.js +0 -2
  580. package/dist/core/p-804513ad.entry.js.map +0 -1
  581. package/dist/core/p-8e1e25a7.entry.js +0 -2
  582. package/dist/core/p-8e1e25a7.entry.js.map +0 -1
  583. package/dist/core/p-a1a1000d.entry.js +0 -2
  584. package/dist/core/p-a1a1000d.entry.js.map +0 -1
  585. package/dist/core/p-a1b1a0ab.entry.js +0 -2
  586. package/dist/core/p-a1b1a0ab.entry.js.map +0 -1
  587. package/dist/core/p-a37bcdbe.entry.js +0 -2
  588. package/dist/core/p-a37bcdbe.entry.js.map +0 -1
  589. package/dist/core/p-a765ad17.entry.js.map +0 -1
  590. package/dist/core/p-aa2be24c.entry.js +0 -2
  591. package/dist/core/p-aa2be24c.entry.js.map +0 -1
  592. package/dist/core/p-b12a5283.entry.js +0 -2
  593. package/dist/core/p-b12a5283.entry.js.map +0 -1
  594. package/dist/core/p-b1b05979.entry.js +0 -2
  595. package/dist/core/p-b1b05979.entry.js.map +0 -1
  596. package/dist/core/p-c6795377.entry.js +0 -2
  597. package/dist/core/p-c6795377.entry.js.map +0 -1
  598. package/dist/core/p-c81109da.entry.js.map +0 -1
  599. package/dist/core/p-cb4d104e.entry.js +0 -2
  600. package/dist/core/p-cb4d104e.entry.js.map +0 -1
  601. package/dist/core/p-d43d1ec0.entry.js +0 -2
  602. package/dist/core/p-d43d1ec0.entry.js.map +0 -1
  603. package/dist/core/p-d5829a35.entry.js +0 -2
  604. package/dist/core/p-d5829a35.entry.js.map +0 -1
  605. package/dist/core/p-ddb8d280.entry.js +0 -2
  606. package/dist/core/p-ddb8d280.entry.js.map +0 -1
  607. package/dist/core/p-e0e34fa7.entry.js +0 -2
  608. package/dist/core/p-e0e34fa7.entry.js.map +0 -1
  609. package/dist/core/p-e597da0e.entry.js.map +0 -1
  610. package/dist/core/p-e861a2b3.entry.js.map +0 -1
  611. package/dist/core/p-ea277b05.entry.js +0 -2
  612. package/dist/core/p-ea277b05.entry.js.map +0 -1
  613. package/dist/core/p-ef871b8f.entry.js +0 -2
  614. package/dist/core/p-ef871b8f.entry.js.map +0 -1
  615. package/dist/core/p-f229d19e.entry.js +0 -2
  616. package/dist/core/p-f229d19e.entry.js.map +0 -1
  617. package/dist/core/p-fa587e6d.entry.js +0 -2
  618. package/dist/core/p-fa587e6d.entry.js.map +0 -1
  619. package/dist/core/p-fb6ac08d.entry.js +0 -2
  620. package/dist/core/p-fb6ac08d.entry.js.map +0 -1
  621. package/dist/esm/helpers-1c9151ef.js.map +0 -1
  622. /package/dist/core/{p-d2f89cb5.entry.js.map → p-0395442c.entry.js.map} +0 -0
  623. /package/dist/core/{p-355acffa.entry.js.map → p-37dea10d.entry.js.map} +0 -0
  624. /package/dist/core/{p-43f9a711.entry.js.map → p-6d3e4bb1.entry.js.map} +0 -0
  625. /package/dist/core/{p-f30f3a3e.entry.js.map → p-76263187.entry.js.map} +0 -0
  626. /package/dist/core/{p-e4b276b5.entry.js.map → p-97fb2bdf.entry.js.map} +0 -0
  627. /package/dist/core/{p-363d6e88.entry.js.map → p-b95a72a3.entry.js.map} +0 -0
  628. /package/dist/core/{p-21e5dd29.entry.js.map → p-b997064c.entry.js.map} +0 -0
  629. /package/dist/core/{p-60efd7fa.entry.js.map → p-ebafab37.entry.js.map} +0 -0
  630. /package/dist/core/{p-82375dca.entry.js.map → p-ee6dd94c.entry.js.map} +0 -0
  631. /package/dist/core/{p-d8870804.entry.js.map → p-f5b2b26d.entry.js.map} +0 -0
  632. /package/dist/core/{p-40e9e76a.entry.js.map → p-f71c00ce.entry.js.map} +0 -0
@@ -1 +0,0 @@
1
- {"version":3,"names":["icSearchBarCss","inputIds","SearchBar","this","assistiveHintEl","hasTimedOut","inputId","menuCloseFromMenuChangeEvent","menuId","preLoad","preventSubmit","prevNoOption","retryButtonClick","truncateValue","handleClear","ev","keyboardEvent","mouseEvent","type","code","value","inputEl","loading","clearTimeout","timeoutTimer","filteredOptions","options","el","setFocus","icClear","emit","preventDefault","onInput","target","noOptions","labelField","emptyOptionListText","valueField","length","setMenuChange","disableAutoFiltering","rawFilteredOptions","getFilteredMenuOptions","showClearButton","handleShowClearButton","debounceAriaLiveUpdate","onInputBlur","nextFocus","relatedTarget","icSearchBarBlur","onInputFocus","icSearchBarFocus","handleClearBlur","icClearBlur","clearButtonFocused","handleSubmitSearchBlur","icSubmitSearchBlur","searchSubmitFocused","handleMouseDown","handleSubmitSearchFocus","handleSubmitSearch","highlightedValue","undefined","icSubmitSearch","form","closest","searchSubmitButton","handleHiddenFormButtonClick","handleSubmitSearchKeyDown","key","handleRetry","retryViaKeyPress","detail","keyPressed","icRetryLoad","triggerLoading","loadingOption","loadingLabel","timeout","window","setTimeout","loadingErrorLabel","timedOut","handleOptionSelect","label","icOptionSelect","handleMenuOptionHighlight","optionValue","_a","optionId","replace","ariaActiveDescendant","handleMenuChange","open","handleMenuCloseFromMenuChange","focusInput","icMenuChange","handleHostFocus","handleTruncateValue","handleHostBlur","menu","visible","handleFocusClearButton","fromEvent","truncate","renderAssistiveHintEl","input","_b","shadowRoot","querySelector","Object","keys","hasOptionsOrFilterDisabled","document","createElement","innerText","assistiveHintText","id","style","display","after","updateSearchResultAriaLive","searchResultsStatusEl","charactersUntilSuggestion","hadNoOptions","searchMode","isSubmitDisabled","valueNotSet","valueLengthLess","disabled","highlightFirstOptionAfterNoResults","handleSetFirstOption","prevNoOptionsList","find","filteredOption","loadingHandler","newValue","filteredOptionsHandler","newOptions","some","opt","watchOptionsHandler","watchValueHandler","getLabelFromValue","disconnectedCallback","remove","componentWillLoad","removeDisabledFalse","componentDidLoad","focusOnLoad","onComponentRequiredPropUndefined","prop","propName","anchorEl","componentWillRender","handleKeyDown","keyEv","event","handleKeyboardOpen","handleKeyUp","debounceAriaLive","render","name","required","size","placeholder","helperText","readonly","spellcheck","fullWidth","hideLabel","autofocus","autocapitalize","autocomplete","disabledMode","describedBy","getInputDescribedByText","trim","describedById","disabledText","hasSuggestedSearch","menuOpen","menuRendered","isOrHasLoaded","expanded","renderHiddenInput","h","Host","class","onFocus","onBlur","ref","ariaExpanded","role","autoFocus","inputmode","debounce","slot","innerHTML","clearIcon","onClick","onMouseDown","onKeyDown","variant","appearance","IcThemeForegroundEnum","Light","Dark","searchIcon","Default","fullwidth","activationType","autoFocusOnSelected","inputLabel","onMenuOptionSelect","onMenuStateChange","onMenuOptionId","onRetryButtonClicked","parentEl"],"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(.ic-search-bar-search) {\n --divider-height: 1.5rem;\n}\n\n:host(.ic-search-bar-search.ic-search-bar-small) {\n --divider-height: 1rem;\n}\n\n:host(.ic-search-bar-full-width) {\n width: 100%;\n}\n\n:host(.ic-search-bar-search) .ic-button-disabled:hover {\n border-color: var(--ic-architectural-200);\n}\n\n:host(.ic-search-bar-search.ic-search-bar-disabled) .ic-button-disabled svg {\n color: var(--ic-architectural-200);\n}\n\n:host(.ic-search-bar-search) .ic-button-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-border-width);\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 IcSizesNoLarge,\n} from \"../../utils/types\";\nimport {\n getInputDescribedByText,\n renderHiddenInput,\n handleHiddenFormButtonClick,\n getLabelFromValue,\n onComponentRequiredPropUndefined,\n getFilteredMenuOptions,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport {\n IcSearchBarBlurEventDetail,\n IcSearchBarSearchModes,\n} from \"./ic-search-bar.types\";\nimport { IcValueEventDetail, IcBlurEventDetail } from \"../../utils/types\";\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 private anchorEl: HTMLElement;\n private assistiveHintEl: HTMLSpanElement = null;\n private debounceAriaLive: number;\n private hasTimedOut = false;\n private inputEl: HTMLIcTextFieldElement;\n private inputId = `ic-search-bar-input-${inputIds++}`;\n private menu: HTMLIcMenuElement;\n private menuCloseFromMenuChangeEvent: boolean = false;\n private menuId = `${this.inputId}-menu`;\n private preLoad = true;\n private preventSubmit: boolean = false;\n private prevNoOption: boolean = false;\n private retryButtonClick: boolean = false;\n private retryViaKeyPress: boolean;\n private timeoutTimer: number;\n private truncateValue = false;\n private searchSubmitButton: HTMLIcButtonElement;\n\n @Element() el: HTMLIcSearchBarElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() highlightedValue: string;\n @State() open: boolean = false;\n @State() searchSubmitFocused: boolean = false;\n @State() showClearButton: boolean = false;\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 number of characters until suggestions appear. The submit button will be disabled until the inputted value is equal to or greater than this number.\n */\n @Prop() charactersUntilSuggestion: number = 2;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: 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() disableAutoFiltering?: boolean = 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 text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * If `true`, the search bar will be focused when component loaded.\n */\n @Prop() focusOnLoad?: boolean = false;\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 * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * The hint text for the hidden assistive description element.\n */\n @Prop() assistiveHintText?: string =\n \"When autocomplete results are available use the up and down arrows to choose and press enter to select\";\n\n /**\n * The label for the search bar.\n */\n @Prop() label!: string;\n\n /**\n * The custom name for the label field to correspond with the IcMenuOption type.\n */\n @Prop() labelField?: string = \"label\";\n\n /**\n * Trigger loading state when fetching options asynchronously\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n /**\n * Change the message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel?: string = \"Loading Error\";\n\n /**\n * Change the message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel?: string = \"Loading...\";\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * The placeholder value to display.\n */\n @Prop() placeholder?: string = \"Search\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * If `true`, the search bar will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * Specify the mode search bar uses to search. `navigation` allows for quick lookups of a set of values, `query` allows for more general searches.\n */\n @Prop() searchMode?: IcSearchBarSearchModes = \"navigation\";\n\n /**\n * The size of the search bar component.\n */\n @Prop() size?: IcSizesNoLarge = \"medium\";\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 /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * The custom name for the value field to correspond with the IcMenuOption type.\n */\n @Prop() valueField?: string = \"value\";\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 @State() filteredOptions: IcMenuOption[] = [];\n\n @Watch(\"filteredOptions\")\n filteredOptionsHandler(newOptions: IcMenuOption[]): void {\n this.hasTimedOut = newOptions.some((opt) => opt.timedOut);\n }\n\n /**\n * The suggested search options.\n */\n @Prop() options?: IcMenuOption[] = [];\n\n @Watch(\"options\")\n watchOptionsHandler(newOptions: IcMenuOption[]): void {\n if (this.disableAutoFiltering && !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 {\n [this.labelField]: this.emptyOptionListText,\n [this.valueField]: \"\",\n },\n ]);\n this.preLoad = true;\n }\n }\n this.debounceAriaLiveUpdate();\n }\n\n /**\n * The value of the search input.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n\n @Watch(\"value\")\n watchValueHandler(newValue: string): void {\n if (\n this.inputEl &&\n this.options &&\n !!getLabelFromValue(\n newValue,\n this.options,\n this.valueField,\n this.labelField\n )\n ) {\n this.inputEl.value = getLabelFromValue(\n newValue,\n this.options,\n this.valueField,\n this.labelField\n );\n } else if (this.inputEl && this.inputEl.value !== newValue) {\n this.inputEl.value = newValue;\n }\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.loading = false;\n clearTimeout(this.timeoutTimer);\n this.filteredOptions = this.options;\n this.el.setFocus();\n\n this.icClear.emit();\n ev.preventDefault();\n\n this.preventSubmit = true;\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 = [\n { [this.labelField]: this.emptyOptionListText, [this.valueField]: \"\" },\n ];\n\n if (this.options.length > 0) {\n this.setMenuChange(true);\n\n this.preLoad = false;\n\n if (this.disableAutoFiltering === false) {\n const rawFilteredOptions = getFilteredMenuOptions(\n this.options,\n false,\n this.value,\n \"anywhere\",\n this.labelField\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 onInputBlur = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n const nextFocus = (ev as FocusEvent).relatedTarget;\n\n this.icSearchBarBlur.emit({ value: value, relatedTarget: nextFocus });\n };\n\n private onInputFocus = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n this.icSearchBarFocus.emit({ value: value });\n\n this.handleShowClearButton(true);\n };\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 * Emitted when the 'retry loading' button is clicked\n */\n @Event() icRetryLoad: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the search value has been submitted\n */\n @Event() icSubmitSearch: EventEmitter<IcValueEventDetail>;\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 /**\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<IcValueEventDetail>;\n\n disconnectedCallback(): void {\n if (this.assistiveHintEl) {\n this.assistiveHintEl.remove();\n }\n }\n\n componentWillLoad(): void {\n this.watchValueHandler(this.value);\n\n removeDisabledFalse(this.disabled, this.el);\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.disableAutoFiltering) {\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 componentWillRender(): void {\n this.highlightFirstOptionAfterNoResults();\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 /**\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 private handleMouseDown = (ev: Event) => {\n ev.preventDefault();\n };\n\n private handleSubmitSearchFocus = () => {\n this.searchSubmitFocused = true;\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 debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAriaLive);\n\n this.debounceAriaLive = window.setTimeout(() => {\n this.updateSearchResultAriaLive();\n }, 500);\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 {\n [this.labelField]: this.loadingLabel,\n [this.valueField]: \"\",\n loading: true,\n },\n ];\n if (this.filteredOptions !== loadingOption)\n this.filteredOptions = loadingOption;\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.filteredOptions = [\n {\n [this.labelField]: this.loadingErrorLabel,\n [this.valueField]: \"\",\n timedOut: true,\n },\n ];\n }, this.timeout);\n }\n };\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<IcMenuChangeEventDetail>) => {\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.assistiveHintText;\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 (searchResultsStatusEl) {\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 !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\n private hasOptionsOrFilterDisabled = (): boolean =>\n this.options.length > 0 || this.disableAutoFiltering;\n\n private hadNoOptions = (): boolean =>\n this.filteredOptions.length === 1 &&\n this.filteredOptions[0][this.labelField] === this.emptyOptionListText &&\n this.searchMode === \"navigation\";\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[this.labelField] === this.emptyOptionListText ||\n filteredOption[this.labelField] === this.loadingErrorLabel ||\n filteredOption[this.labelField] === this.loadingLabel\n );\n if (prevNoOptionsList) {\n this.prevNoOption = true;\n }\n };\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n size,\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 menuRendered =\n menuOpen && value.length >= this.charactersUntilSuggestion;\n const isOrHasLoaded =\n this.filteredOptions.length === 1 &&\n (this.filteredOptions[0][this.labelField] === this.loadingLabel ||\n filteredOptions[0][this.labelField] === 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 [\"ic-search-bar-search\"]: true,\n [\"ic-search-bar-full-width\"]: fullWidth,\n [\"ic-search-bar-disabled\"]: disabled,\n [\"ic-search-bar-small\"]: size === \"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 size={size}\n hideLabel={hideLabel}\n fullWidth={fullWidth}\n name={name}\n truncateValue={truncateValue}\n value={\n options &&\n !!getLabelFromValue(\n value,\n options,\n this.valueField,\n this.labelField\n )\n ? getLabelFromValue(\n value,\n options,\n this.valueField,\n this.labelField\n )\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={menuRendered ? 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={size}\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\"]: size === \"small\",\n }}\n disabled={this.isSubmitDisabled()}\n innerHTML={searchIcon}\n size={size}\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 {menuRendered && (\n <ic-menu\n class={{\n \"no-results\": this.hadNoOptions() || isOrHasLoaded,\n }}\n activationType=\"manual\"\n anchorEl={this.anchorEl}\n autoFocusOnSelected={false}\n searchMode={this.searchMode}\n inputEl={this.inputEl}\n inputLabel={label}\n ref={(el) => (this.menu = el)}\n fullWidth={fullWidth}\n menuId={menuId}\n open={!!menuRendered}\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 labelField={this.labelField}\n valueField={this.valueField}\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"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["icStepperCss","Stepper","this","resizeObserver","visuallyHidden","getChildren","steps","Array","from","el","querySelectorAll","stepsWithStepTitles","checkStepTitles","length","variantOverride","variant","noOfResizes","console","error","setStepTypes","stepTypes","i","push","setStepperWidth","alignedFullWidth","aligned","lastStep","style","maxWidth","stepperWidth","offsetWidth","pxToRem","lastStepWidth","initialiseStepStates","forEach","step","index","stepNum","lastStepNum","type","current","stepTitleArea","shadowRoot","querySelector","autoSetStepTitles","heading","setAttribute","undefined","removeAttribute","classList","remove","add","contains","nextStepHeading","progress","hideStepInfo","compactStepStyling","width","minWidth","connectorWidth","stepConnect","setHideStepInfo","_a","_b","overrideVariant","minDefaultStepperWidth","clientWidth","resizeObserverCallback","runResizeObserver","ResizeObserver","observe","document","getBoundingClientRect","handlePropChange","disconnectedCallback","disconnect","componentWillLoad","componentWillRender","componentDidLoad","checkResizeObserver","render","h","Host","class"],"sources":["src/components/ic-stepper/ic-stepper.css?tag=ic-stepper&encapsulation=shadow","src/components/ic-stepper/ic-stepper.tsx"],"sourcesContent":[":host {\n display: flex;\n width: 100%;\n}\n\n.step-item-list {\n display: flex;\n margin: 0;\n padding: 0;\n}\n\n:host(.ic-stepper-default:not(.ic-stepper-aligned-left)) .step-item-list {\n flex: auto;\n}\n\n:host(.ic-stepper-compact) ul ::slotted(ic-step) {\n display: none;\n}\n\n:host(.ic-stepper-compact) ul ::slotted(ic-step.show) {\n display: flex;\n}\n\n:host(.ic-stepper-compact) ul ::slotted(ic-step.hide) {\n display: none;\n opacity: 0;\n visibility: hidden;\n}\n","import { Component, Element, Host, Prop, h, State, Watch } from \"@stencil/core\";\nimport { checkResizeObserver, pxToRem } from \"../../utils/helpers\";\nimport { IcStepperAlignment } from \"./ic-stepper.types\";\nimport { IcStepTypes, IcStepVariants } from \"../ic-step/ic-step.types\";\n\n@Component({\n tag: \"ic-stepper\",\n styleUrl: \"ic-stepper.css\",\n shadow: true,\n})\nexport class Stepper {\n private resizeObserver: ResizeObserver = null;\n private steps: HTMLIcStepElement[];\n private stepsWithStepTitles: HTMLIcStepElement[];\n private visuallyHidden: string = \"visually-hidden\";\n\n @Element() el: HTMLIcStepperElement;\n\n @State() alignedFullWidth: boolean = true;\n @State() autoSetStepTitles: boolean = true;\n @State() lastStepWidth: number = 0;\n @State() noOfResizes?: number = 0;\n @State() stepperWidth: number = document\n .querySelector(\"ic-stepper\")\n .getBoundingClientRect().width;\n @State() stepTypes: IcStepTypes[] = [];\n @State() variantOverride?: boolean = this.variant !== \"compact\";\n\n /**\n * The alignment of the default stepper within its container.\n */\n @Prop() aligned?: IcStepperAlignment = \"full-width\";\n\n /**\n * The appearance of the stepper.\n */\n @Prop() appearance?: \"light\" | \"default\" = \"default\";\n\n /**\n * The length of the connector between each step in pixels. Minimum length is 100px.\n */\n @Prop() connectorWidth?: number = 100;\n\n /**\n * If `true`, the information about each step, i.e. step title, step subtitle and step status, will be hidden on all default steps. The information about each step will still be visible in the compact variant of the stepper.\n */\n @Prop() hideStepInfo?: boolean = false;\n\n /**\n * The variant of the stepper.\n */\n @Prop({ mutable: true }) variant?: IcStepVariants = \"default\";\n\n @Watch(\"hideStepInfo\")\n @Watch(\"variant\")\n handlePropChange(): void {\n this.setHideStepInfo();\n this.getChildren();\n }\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n }\n\n componentWillLoad(): void {\n this.setStepTypes();\n\n if (this.variant === \"compact\") {\n this.variantOverride = false;\n }\n }\n\n componentWillRender(): void {\n this.initialiseStepStates();\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n }\n\n // Get all steps currently within this stepper\n private getChildren = (): void => {\n this.steps = Array.from(this.el.querySelectorAll(\"ic-step\"));\n\n this.stepsWithStepTitles = Array.from(\n this.el.querySelectorAll(\"ic-step[heading]\")\n );\n };\n\n // Inform the user that stepTitles are required on all steps in a compact stepper\n private checkStepTitles = (): void => {\n if (\n this.stepsWithStepTitles.length < this.steps.length &&\n this.variantOverride &&\n this.variant === \"compact\"\n ) {\n this.noOfResizes = this.noOfResizes + 1;\n if (this.noOfResizes === 1) {\n console.error(\n `The prop 'heading' is required for all steps of the Stepper component (compact variant)`\n );\n }\n }\n };\n\n private setStepTypes = (): void => {\n this.getChildren();\n this.stepTypes = [];\n for (let i = 0; i < this.steps.length; i++) {\n this.stepTypes.push(\"active\");\n }\n };\n\n private setStepperWidth = (): void => {\n this.alignedFullWidth =\n this.variant === \"default\" && this.aligned === \"full-width\";\n\n const lastStep = this.steps[this.steps.length - 1];\n lastStep.style.maxWidth = \"none\";\n\n if (this.alignedFullWidth) {\n this.stepperWidth = this.el.offsetWidth;\n lastStep.style.maxWidth = pxToRem(\n `${this.stepperWidth / this.steps.length}px`\n );\n this.lastStepWidth = lastStep.offsetWidth;\n }\n };\n\n private initialiseStepStates = (): void => {\n this.steps.forEach((step, index) => {\n // Set variant\n step.variant = this.variant;\n // Assign stepNum to each step\n step.stepNum = index + 1;\n // Assign lastStep to final step\n step.lastStep = index === this.steps.length - 1;\n step.lastStepNum = this.steps.length;\n\n if (step.type !== \"current\") {\n step.current = false;\n this.stepTypes[index] = step.type;\n } else {\n step.current = true;\n }\n\n const stepTitleArea =\n step.shadowRoot &&\n step.shadowRoot.querySelector(\".step > .heading-area\");\n\n if (this.stepsWithStepTitles.length == 0 && this.variantOverride) {\n if (this.variant === \"compact\") {\n this.autoSetStepTitles = true;\n if (this.autoSetStepTitles) {\n step.heading = \"Step \" + step.stepNum;\n stepTitleArea &&\n stepTitleArea\n .querySelector(\".heading\")\n .setAttribute(\"aria-hidden\", \"true\");\n }\n }\n if (this.variant === \"default\") {\n this.autoSetStepTitles = false;\n if (!this.autoSetStepTitles) {\n step.heading = undefined;\n stepTitleArea &&\n stepTitleArea\n .querySelector(\".heading\")\n .removeAttribute(\"aria-hidden\");\n }\n }\n }\n\n if (this.variant === \"compact\") {\n if (step.current === true || step.type === \"current\") {\n step.classList.remove(\"hide\");\n step.classList.add(\"show\");\n } else if (step.classList.contains(\"show\")) {\n step.classList.remove(\"show\");\n step.classList.add(\"hide\");\n }\n\n if (!step.lastStep) {\n step.nextStepHeading = this.steps[index + 1].heading;\n step.progress = (step.stepNum / this.steps.length) * 100;\n } else if (step.lastStep && this.stepTypes[index] !== \"completed\") {\n step.progress = 95;\n } else {\n step.progress = 100;\n }\n\n if (this.hideStepInfo && stepTitleArea !== null) {\n stepTitleArea.classList.remove(this.visuallyHidden);\n }\n\n step.compactStepStyling = this.stepTypes[index];\n }\n\n if (this.variant === \"default\") {\n if (!step.lastStep) {\n if (this.alignedFullWidth) {\n step.style.width = pxToRem(\n `${\n (this.stepperWidth - this.lastStepWidth) /\n (this.steps.length - 1)\n }px`\n );\n step.style.minWidth = pxToRem(\"148px\");\n }\n } else if (step.lastStep) {\n step.classList.add(\"last-step\");\n if (this.alignedFullWidth) {\n step.style.maxWidth = `${this.lastStepWidth}px`;\n } else {\n step.style.maxWidth =\n this.connectorWidth > 100\n ? pxToRem(`${this.connectorWidth + 48}px`)\n : pxToRem(\"148px\");\n }\n }\n\n if (this.aligned === \"left\") {\n step.style.width =\n this.connectorWidth > 100\n ? pxToRem(`${this.connectorWidth + 48}px`)\n : pxToRem(\"148px\");\n const stepConnect = step.shadowRoot.querySelector(\n \".step > .step-top > .step-connect\"\n ) as HTMLElement;\n\n if (stepConnect) {\n stepConnect.style.width =\n this.connectorWidth > 100\n ? pxToRem(`${this.connectorWidth}px`)\n : pxToRem(\"100px\");\n }\n }\n\n if (this.hideStepInfo && stepTitleArea !== null) {\n stepTitleArea.classList.add(this.visuallyHidden);\n }\n }\n });\n };\n\n private setHideStepInfo = (): void => {\n this.steps.forEach((step) => {\n const stepTitleArea = step.shadowRoot.querySelector(\n \".step > .heading-area\"\n );\n\n if (stepTitleArea !== null) {\n if (this.hideStepInfo) {\n stepTitleArea.classList?.add(this.visuallyHidden);\n } else {\n stepTitleArea.classList?.remove(this.visuallyHidden);\n }\n }\n });\n };\n\n private overrideVariant = () => {\n if (this.variantOverride) {\n let minDefaultStepperWidth = 148 * this.steps.length;\n\n if (this.aligned === \"left\" && this.connectorWidth > 100) {\n minDefaultStepperWidth = (this.connectorWidth + 48) * this.steps.length;\n }\n if (this.el.clientWidth < minDefaultStepperWidth) {\n this.variant = \"compact\";\n } else {\n this.variant = \"default\";\n }\n }\n };\n\n private resizeObserverCallback = () => {\n this.getChildren();\n this.checkStepTitles();\n this.overrideVariant();\n this.setStepperWidth();\n this.initialiseStepStates();\n };\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.resizeObserverCallback();\n });\n this.resizeObserver.observe(this.el);\n };\n\n render() {\n return (\n <Host\n class={{\n [`ic-stepper-${this.variant}`]: true,\n [\"ic-stepper-aligned-left\"]:\n this.variant === \"default\" && this.aligned === \"left\",\n }}\n >\n <ul class=\"step-item-list\">\n <slot></slot>\n </ul>\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as e,c as t,h as i,H as o,g as a}from"./p-6b5e91e2.js";import{r as n,a as r,n as s,p as l}from"./p-312cacae.js";const c='/*! 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}:host{display:block}ic-input-label.error{color:var(--ic-status-error);--ic-typography-color:var(--ic-status-error)}ic-input-label ic-typography{margin-bottom:var(--ic-space-sm)}:host(.ic-checkbox-group-small) ic-input-label ic-typography{margin-bottom:calc(var(--ic-space-sm) / 2)}ic-input-validation{margin-top:var(--ic-space-sm)}:host(.ic-checkbox-group-small) ic-input-validation{margin-top:calc(var(--ic-space-sm) / 2)}.checkboxes-container{margin-bottom:calc(-1 * var(--ic-space-xxs))}:host(.ic-checkbox-group-small) .checkboxes-container{margin-bottom:calc(-1 * var(--ic-space-xxxs))}.screen-reader-only-text{position:absolute;left:-9999px;background-color:#fff;color:#000;text-transform:none}';const d=class{constructor(i){e(this,i);this.icChange=t(this,"icChange",7);this.disabled=false;this.helperText="";this.hideLabel=false;this.label=undefined;this.name=undefined;this.required=false;this.size="medium";this.validationStatus="";this.validationText=""}labelNameHandler(e,t,i){Array.from(this.el.querySelectorAll("ic-checkbox")).forEach((o=>{if(i==="label")o.groupLabel=e;else if(o.name===t){o.name=e}}))}handleChange(e){if(e.target.tagName==="IC-TEXT-FIELD"){e.stopImmediatePropagation()}}componentWillLoad(){n(this.disabled,this.el)}componentDidLoad(){r([{prop:this.label,propName:"label"},{prop:this.name,propName:"name"}],"Checkbox Group")}selectHandler({target:e}){const t=Array.from(this.el.querySelectorAll("ic-checkbox")).filter((({checked:e,disabled:t})=>e&&!t));this.icChange.emit({value:t.map((({value:e})=>e)),checkedOptions:t.map((e=>{var t;return{checkbox:e,textFieldValue:(t=e.querySelector("ic-text-field"))===null||t===void 0?void 0:t.value}})),selectedOption:e})}render(){const{disabled:e,helperText:t,hideLabel:a,label:n,name:r,required:c,size:d,validationStatus:p,validationText:b}=this;const u=s(r,t!=="",p!=="");return i(o,{class:{[`ic-checkbox-group-${d}`]:true}},(p==="error"||c||a)&&i("span",{id:"screenReaderOnlyText",class:"screen-reader-only-text","aria-hidden":"true"},n," ",p==="error"?"invalid data ":null," ",c?"required":null),i("fieldset",{id:r,"aria-labelledby":`${p==="error"||c||a?"screenReaderOnlyText":""} ${u}`.trim(),disabled:e},!a&&i("legend",null,i("ic-input-label",{class:{[`${p}`]:true},label:n,helperText:t,required:c,disabled:e,for:r})),i("div",{class:"checkboxes-container"},i("slot",null))),l(p,e)&&i("ic-input-validation",{for:r,ariaLiveMode:"polite",status:p,message:b}))}get el(){return a(this)}static get watchers(){return{label:["labelNameHandler"],name:["labelNameHandler"]}}};d.style=c;export{d as ic_checkbox_group};
2
- //# sourceMappingURL=p-cb4d104e.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icCheckboxGroupCss","CheckboxGroup","labelNameHandler","newValue","oldValue","propName","Array","from","this","el","querySelectorAll","forEach","checkbox","groupLabel","name","handleChange","ev","target","tagName","stopImmediatePropagation","componentWillLoad","removeDisabledFalse","disabled","componentDidLoad","onComponentRequiredPropUndefined","prop","label","selectHandler","checkedOptions","filter","checked","icChange","emit","value","map","opt","textFieldValue","_a","querySelector","selectedOption","render","helperText","hideLabel","required","size","validationStatus","validationText","describedBy","getInputDescribedByText","h","Host","class","id","trim","for","hasValidationStatus","ariaLiveMode","status","message"],"sources":["src/components/ic-checkbox-group/ic-checkbox-group.css?tag=ic-checkbox-group&encapsulation=shadow","src/components/ic-checkbox-group/ic-checkbox-group.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n}\n\nic-input-label.error {\n color: var(--ic-status-error);\n\n --ic-typography-color: var(--ic-status-error);\n}\n\nic-input-label ic-typography {\n margin-bottom: var(--ic-space-sm);\n}\n\n:host(.ic-checkbox-group-small) ic-input-label ic-typography {\n margin-bottom: calc(var(--ic-space-sm) / 2);\n}\n\nic-input-validation {\n margin-top: var(--ic-space-sm);\n}\n\n:host(.ic-checkbox-group-small) ic-input-validation {\n margin-top: calc(var(--ic-space-sm) / 2);\n}\n\n.checkboxes-container {\n margin-bottom: calc(-1 * var(--ic-space-xxs));\n}\n\n:host(.ic-checkbox-group-small) .checkboxes-container {\n margin-bottom: calc(-1 * var(--ic-space-xxxs));\n}\n\n.screen-reader-only-text {\n position: absolute;\n left: -9999px;\n background-color: #fff;\n color: #000;\n text-transform: none;\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n Listen,\n Element,\n Event,\n EventEmitter,\n Watch,\n} from \"@stencil/core\";\nimport {\n getInputDescribedByText,\n hasValidationStatus,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n} from \"../../utils/helpers\";\nimport { IcInformationStatusOrEmpty, IcSizes } from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-checkbox-group.types\";\n\n@Component({\n tag: \"ic-checkbox-group\",\n styleUrl: \"ic-checkbox-group.css\",\n shadow: true,\n})\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport class CheckboxGroup {\n @Element() el: HTMLIcCheckboxGroupElement;\n\n /**\n * If `true`, the checkbox group will be set to the disabled state.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string = \"\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * The label for the checkbox group to be displayed.\n */\n @Prop() label!: string;\n\n /**\n * The name for the checkbox group to differentiate from other groups.\n */\n @Prop() name!: string;\n\n @Watch(\"label\")\n @Watch(\"name\")\n labelNameHandler(\n newValue: string,\n oldValue: string,\n propName: \"label\" | \"name\"\n ): void {\n Array.from(this.el.querySelectorAll(\"ic-checkbox\")).forEach((checkbox) => {\n if (propName === \"label\") checkbox.groupLabel = newValue;\n else if (checkbox.name === oldValue) {\n // If the checkbox name has been set by the parent, then override it\n checkbox.name = newValue;\n }\n });\n }\n\n /**\n * If `true`, the checkbox group will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * The size of the checkboxes to be displayed. This does not affect the font size of the label.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The validation text - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n\n /**\n * Emitted when a checkbox is checked.\n */\n @Event() icChange: EventEmitter<IcChangeEventDetail>;\n\n @Listen(\"icChange\")\n handleChange(ev: CustomEvent): void {\n //don't pass on the event if it has come from slotted text field\n //otherwise any icChange handler bound to the checkbox group will also run\n if ((ev.target as HTMLElement).tagName === \"IC-TEXT-FIELD\") {\n ev.stopImmediatePropagation();\n }\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [\n { prop: this.label, propName: \"label\" },\n { prop: this.name, propName: \"name\" },\n ],\n \"Checkbox Group\"\n );\n }\n\n @Listen(\"icCheck\")\n selectHandler({ target }: CustomEvent): void {\n const checkedOptions = Array.from(\n this.el.querySelectorAll(\"ic-checkbox\")\n ).filter(({ checked, disabled }) => checked && !disabled);\n this.icChange.emit({\n value: checkedOptions.map(({ value }) => value),\n checkedOptions: checkedOptions.map((opt) => ({\n checkbox: opt,\n textFieldValue: opt.querySelector(\"ic-text-field\")?.value,\n })),\n selectedOption: target as HTMLIcCheckboxElement,\n });\n }\n\n render() {\n const {\n disabled,\n helperText,\n hideLabel,\n label,\n name,\n required,\n size,\n validationStatus,\n validationText,\n } = this;\n\n const describedBy = getInputDescribedByText(\n name,\n helperText !== \"\",\n validationStatus !== \"\"\n );\n\n return (\n <Host\n class={{\n [`ic-checkbox-group-${size}`]: true,\n }}\n >\n {(validationStatus === \"error\" || required || hideLabel) && (\n <span\n id=\"screenReaderOnlyText\"\n class=\"screen-reader-only-text\"\n aria-hidden=\"true\"\n >\n {label} {validationStatus === \"error\" ? \"invalid data \" : null}{\" \"}\n {required ? \"required\" : null}\n </span>\n )}\n <fieldset\n id={name}\n aria-labelledby={`${\n validationStatus === \"error\" || required || hideLabel\n ? \"screenReaderOnlyText\"\n : \"\"\n } ${describedBy}`.trim()}\n disabled={disabled}\n >\n {!hideLabel && (\n <legend>\n <ic-input-label\n class={{ [`${validationStatus}`]: true }}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n for={name}\n ></ic-input-label>\n </legend>\n )}\n <div class=\"checkboxes-container\">\n <slot></slot>\n </div>\n </fieldset>\n {hasValidationStatus(validationStatus, disabled) && (\n <ic-input-validation\n for={name}\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText}\n ></ic-input-validation>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"yHAAA,MAAMA,EAAqB,+hG,MC0BdC,EAAa,M,0EAMI,M,gBAKC,G,eAKA,M,uDA+BD,M,UAKH,S,sBAK8B,G,oBAKtB,E,CAhCjC,gBAAAC,CACEC,EACAC,EACAC,GAEAC,MAAMC,KAAKC,KAAKC,GAAGC,iBAAiB,gBAAgBC,SAASC,IAC3D,GAAIP,IAAa,QAASO,EAASC,WAAaV,OAC3C,GAAIS,EAASE,OAASV,EAAU,CAEnCQ,EAASE,KAAOX,C,KA+BtB,YAAAY,CAAaC,GAGX,GAAKA,EAAGC,OAAuBC,UAAY,gBAAiB,CAC1DF,EAAGG,0B,EAIP,iBAAAC,GACEC,EAAoBb,KAAKc,SAAUd,KAAKC,G,CAG1C,gBAAAc,GACEC,EACE,CACE,CAAEC,KAAMjB,KAAKkB,MAAOrB,SAAU,SAC9B,CAAEoB,KAAMjB,KAAKM,KAAMT,SAAU,SAE/B,iB,CAKJ,aAAAsB,EAAcV,OAAEA,IACd,MAAMW,EAAiBtB,MAAMC,KAC3BC,KAAKC,GAAGC,iBAAiB,gBACzBmB,QAAO,EAAGC,UAASR,cAAeQ,IAAYR,IAChDd,KAAKuB,SAASC,KAAK,CACjBC,MAAOL,EAAeM,KAAI,EAAGD,WAAYA,IACzCL,eAAgBA,EAAeM,KAAKC,I,MAAQ,OAC1CvB,SAAUuB,EACVC,gBAAgBC,EAAAF,EAAIG,cAAc,oBAAgB,MAAAD,SAAA,SAAAA,EAAEJ,MACrD,IACDM,eAAgBtB,G,CAIpB,MAAAuB,GACE,MAAMlB,SACJA,EAAQmB,WACRA,EAAUC,UACVA,EAAShB,MACTA,EAAKZ,KACLA,EAAI6B,SACJA,EAAQC,KACRA,EAAIC,iBACJA,EAAgBC,eAChBA,GACEtC,KAEJ,MAAMuC,EAAcC,EAClBlC,EACA2B,IAAe,GACfI,IAAqB,IAGvB,OACEI,EAACC,EAAI,CACHC,MAAO,CACL,CAAC,qBAAqBP,KAAS,QAG/BC,IAAqB,SAAWF,GAAYD,IAC5CO,EAAA,QACEG,GAAG,uBACHD,MAAM,0BAAyB,cACnB,QAEXzB,EAAK,IAAGmB,IAAqB,QAAU,gBAAkB,KAAM,IAC/DF,EAAW,WAAa,MAG7BM,EAAA,YACEG,GAAItC,EAAI,kBACS,GACf+B,IAAqB,SAAWF,GAAYD,EACxC,uBACA,MACFK,IAAcM,OAClB/B,SAAUA,IAERoB,GACAO,EAAA,cACEA,EAAA,kBACEE,MAAO,CAAE,CAAC,GAAGN,KAAqB,MAClCnB,MAAOA,EACPe,WAAYA,EACZE,SAAUA,EACVrB,SAAUA,EACVgC,IAAKxC,KAIXmC,EAAA,OAAKE,MAAM,wBACTF,EAAA,eAGHM,EAAoBV,EAAkBvB,IACrC2B,EAAA,uBACEK,IAAKxC,EACL0C,aAAa,SACbC,OAAQZ,EACRa,QAASZ,I"}
@@ -1,2 +0,0 @@
1
- import{r as t,c as i,h as e,H as s,g as o}from"./p-6b5e91e2.js";import{s as a,r as n,f as r,a as l,p as h}from"./p-312cacae.js";const d='/*! 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}:host{display:block}ic-input-label.error{--ic-typography-color:var(--ic-status-error)}ic-input-validation{margin-top:var(--ic-space-sm)}:host(.ic-radio-group-small) ic-input-validation{margin-top:calc(var(--ic-space-sm) / 2)}ic-input-label ic-typography{margin-bottom:var(--ic-space-sm)}:host(.ic-radio-group-small) ic-input-label ic-typography{margin-bottom:calc(var(--ic-space-sm) / 2)}:host .radio-buttons-container{display:flex;flex-direction:column;gap:var(--ic-space-xxs)}:host(.ic-radio-group-small) .radio-buttons-container{gap:var(--ic-space-xxxs)}:host .radio-buttons-container.horizontal{display:flex;flex-direction:row;gap:calc(var(--ic-space-xl) + var(--ic-space-xs))}:host(.ic-radio-group-small) .radio-buttons-container.horizontal{gap:var(--ic-space-xl)}';const c=class{constructor(e){t(this,e);this.icChange=i(this,"icChange",7);this.resizeObserver=null;this.ADDITIONAL_FIELD="additional-field";this.RADIO_HORIZONTAL="horizontal";this.RADIO_VERTICAL="vertical";this.runResizeObserver=()=>{this.resizeObserver=new ResizeObserver((()=>{this.checkOrientation()}));this.resizeObserver.observe(this.el)};this.handleKeyDown=t=>{switch(t.key){case"ArrowDown":case"ArrowRight":this.radioOptions[this.getNextItemToSelect(this.selectedChild,true)].click();t.preventDefault();break;case"ArrowUp":case"ArrowLeft":this.radioOptions[this.getNextItemToSelect(this.selectedChild,false)].click();t.preventDefault()}};this.getNextItemToSelect=(t,i)=>{const e=this.radioOptions.length-1;if(t<1){t=0}let s=i?t+1:t-1;if(s<0){s=e}else if(s>e){s=0}if(this.radioOptions[s].disabled){s=this.getNextItemToSelect(s,i)}return s};this.addSlotChangeListener=()=>{this.radioContainer.addEventListener("slotchange",this.setRadioOptions)};this.setFirstRadioOptionTabIndex=t=>{this.radioOptions[0].setTabIndex(t)};this.setRadioOptions=()=>{this.selectedChild=-1;this.checkedValue="";this.radioOptions=Array.from(this.el.querySelectorAll("ic-radio-option"));if(this.radioOptions.length>0){this.radioOptions.forEach(((t,i)=>{if(!t.selected){t.selected=this.checkedValue===t.value}t.name=this.name;t.groupLabel=this.label;if(t.selected){this.selectedChild=i;this.checkedValue=t.value}if(this.disabled){t.disabled=true}}));this.setFirstRadioOptionTabIndex(this.selectedChild>0?-1:0);if(this.initialOrientation===this.RADIO_HORIZONTAL&&this.radioOptions!==undefined&&(this.radioOptions.length>2||this.radioOptions.length===2&&(a(this.radioOptions[0],this.ADDITIONAL_FIELD)||a(this.radioOptions[1],this.ADDITIONAL_FIELD)))){this.currentOrientation=this.RADIO_VERTICAL}}};this.checkedValue="";this.currentOrientation=undefined;this.initialOrientation=undefined;this.selectedChild=-1;this.disabled=false;this.helperText=undefined;this.hideLabel=false;this.label=undefined;this.name=undefined;this.orientation="vertical";this.required=false;this.size="medium";this.validationStatus="";this.validationText=""}watchDisabledHandler(t){this.radioOptions.forEach((i=>i.disabled=t))}orientationChangeHandler(){this.initialOrientation=this.orientation;this.checkOrientation()}disconnectedCallback(){var t,i;(t=this.resizeObserver)===null||t===void 0?void 0:t.disconnect();(i=this.radioContainer)===null||i===void 0?void 0:i.removeEventListener("slotchange",this.setRadioOptions)}componentWillLoad(){n(this.disabled,this.el);this.orientationChangeHandler();this.currentOrientation=this.initialOrientation}componentDidLoad(){this.setRadioOptions();r(this.runResizeObserver);this.addSlotChangeListener();l([{prop:this.label,propName:"label"},{prop:this.name,propName:"name"}],"Radio Group")}selectHandler({detail:t,target:i}){var e;this.checkedValue=t.value;const s=i;this.icChange.emit({value:this.checkedValue,selectedOption:{radio:s,textFieldValue:(e=s===null||s===void 0?void 0:s.querySelector("ic-text-field"))===null||e===void 0?void 0:e.value}});if(this.radioOptions!==undefined){this.radioOptions.forEach(((t,i)=>{t.selected=this.checkedValue===t.value;if(t.selected){this.selectedChild=i}}));this.setFirstRadioOptionTabIndex(this.selectedChild>0?-1:0)}}changeHandler(){const t=this.radioOptions.findIndex((t=>t.selected));if(t<0){this.setFirstRadioOptionTabIndex(0);this.selectedChild=t}}checkOrientation(){if(this.initialOrientation===this.RADIO_HORIZONTAL){let t=0;if(Array.isArray(this.radioOptions)&&this.radioOptions.length>0){this.radioOptions.forEach((({clientWidth:i},e,s)=>{t+=i;if(e<s.length-1)t+=40}))}else{t=0}if(this.currentOrientation===this.RADIO_HORIZONTAL&&t>this.radioContainer.clientWidth){this.currentOrientation=this.RADIO_VERTICAL}else if(this.currentOrientation===this.RADIO_VERTICAL&&t<this.radioContainer.clientWidth){this.currentOrientation=this.RADIO_HORIZONTAL}}}render(){const{currentOrientation:t,disabled:i,handleKeyDown:o,helperText:a,hideLabel:n,label:r,required:l,size:d,validationStatus:c,validationText:p}=this;return e(s,{onKeyDown:o,class:{"ic-radio-group-small":d==="small"}},e("div",{role:"radiogroup","aria-label":`${r}${l?", required":""}`},!n&&e("ic-input-label",{class:{[`${c}`]:true},label:r,helperText:a,required:l,disabled:i}),e("div",{class:{"radio-buttons-container":true,horizontal:t===this.RADIO_HORIZONTAL},ref:t=>this.radioContainer=t},e("slot",null))),h(c,i)&&e("ic-input-validation",{ariaLiveMode:"polite",status:c,message:p}))}get el(){return o(this)}static get watchers(){return{disabled:["watchDisabledHandler"],orientation:["orientationChangeHandler"]}}};c.style=d;export{c as ic_radio_group};
2
- //# sourceMappingURL=p-d43d1ec0.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icRadioGroupCss","RadioGroup","this","resizeObserver","ADDITIONAL_FIELD","RADIO_HORIZONTAL","RADIO_VERTICAL","runResizeObserver","ResizeObserver","checkOrientation","observe","el","handleKeyDown","event","key","radioOptions","getNextItemToSelect","selectedChild","click","preventDefault","currentItem","movingDown","numRadios","length","nextItem","disabled","addSlotChangeListener","radioContainer","addEventListener","setRadioOptions","setFirstRadioOptionTabIndex","value","setTabIndex","checkedValue","Array","from","querySelectorAll","forEach","radioOption","index","selected","name","groupLabel","label","initialOrientation","undefined","slotHasContent","currentOrientation","watchDisabledHandler","newValue","orientationChangeHandler","orientation","disconnectedCallback","_a","disconnect","_b","removeEventListener","componentWillLoad","removeDisabledFalse","componentDidLoad","checkResizeObserver","onComponentRequiredPropUndefined","prop","propName","selectHandler","detail","target","selectedOption","icChange","emit","radio","textFieldValue","querySelector","changeHandler","findIndex","totalWidth","isArray","clientWidth","i","arr","render","helperText","hideLabel","required","size","validationStatus","validationText","h","Host","onKeyDown","class","role","horizontal","ref","hasValidationStatus","ariaLiveMode","status","message"],"sources":["src/components/ic-radio-group/ic-radio-group.css?tag=ic-radio-group&encapsulation=shadow","src/components/ic-radio-group/ic-radio-group.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n}\n\nic-input-label.error {\n --ic-typography-color: var(--ic-status-error);\n}\n\nic-input-validation {\n margin-top: var(--ic-space-sm);\n}\n\n:host(.ic-radio-group-small) ic-input-validation {\n margin-top: calc(var(--ic-space-sm) / 2);\n}\n\nic-input-label ic-typography {\n margin-bottom: var(--ic-space-sm);\n}\n\n:host(.ic-radio-group-small) ic-input-label ic-typography {\n margin-bottom: calc(var(--ic-space-sm) / 2);\n}\n\n:host .radio-buttons-container {\n display: flex;\n flex-direction: column;\n gap: var(--ic-space-xxs);\n}\n\n:host(.ic-radio-group-small) .radio-buttons-container {\n gap: var(--ic-space-xxxs);\n}\n\n:host .radio-buttons-container.horizontal {\n display: flex;\n flex-direction: row;\n gap: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n:host(.ic-radio-group-small) .radio-buttons-container.horizontal {\n gap: var(--ic-space-xl);\n}\n","import {\n Component,\n Host,\n h,\n Prop,\n State,\n Listen,\n Element,\n Event,\n EventEmitter,\n Watch,\n} from \"@stencil/core\";\nimport {\n hasValidationStatus,\n slotHasContent,\n onComponentRequiredPropUndefined,\n removeDisabledFalse,\n checkResizeObserver,\n} from \"../../utils/helpers\";\nimport {\n IcInformationStatusOrEmpty,\n IcOrientation,\n IcSizesNoLarge,\n IcValueEventDetail,\n} from \"../../utils/types\";\nimport { IcChangeEventDetail } from \"./ic-radio-group.types\";\n\n@Component({\n tag: \"ic-radio-group\",\n styleUrl: \"ic-radio-group.css\",\n shadow: true,\n})\nexport class RadioGroup {\n private radioContainer: HTMLDivElement;\n private radioOptions: HTMLIcRadioOptionElement[];\n private resizeObserver: ResizeObserver = null;\n private ADDITIONAL_FIELD = \"additional-field\";\n private RADIO_HORIZONTAL: IcOrientation = \"horizontal\";\n private RADIO_VERTICAL: IcOrientation = \"vertical\";\n\n @Element() el: HTMLIcRadioGroupElement;\n\n @State() checkedValue: string = \"\";\n @State() currentOrientation: IcOrientation;\n @State() initialOrientation: IcOrientation;\n @State() selectedChild: number = -1;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n\n @Watch(\"disabled\")\n watchDisabledHandler(newValue: boolean): void {\n this.radioOptions.forEach(\n (radioOption) => (radioOption.disabled = newValue)\n );\n }\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string;\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * The label for the radio group to be displayed.\n */\n @Prop() label!: string;\n\n /**\n * The name for the radio group to differentiate from other groups.\n */\n @Prop() name!: string;\n\n /**\n * The orientation of the radio buttons in the radio group. If there are more than two radio buttons in a radio group or either of the radio buttons use the `additional-field` slot, then the orientation will always be vertical.\n */\n @Prop() orientation: IcOrientation = \"vertical\";\n\n /**\n * If `true`, the radio group will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * The size of the radio group component.\n */\n @Prop() size?: IcSizesNoLarge = \"medium\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n /**\n * The validation text - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n\n @Watch(\"orientation\")\n orientationChangeHandler(): void {\n this.initialOrientation = this.orientation;\n this.checkOrientation();\n }\n\n /**\n * Emitted when a user selects a radio.\n */\n @Event() icChange: EventEmitter<IcChangeEventDetail>;\n\n disconnectedCallback(): void {\n this.resizeObserver?.disconnect();\n this.radioContainer?.removeEventListener(\n \"slotchange\",\n this.setRadioOptions\n );\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n\n this.orientationChangeHandler();\n this.currentOrientation = this.initialOrientation;\n }\n\n componentDidLoad(): void {\n this.setRadioOptions();\n checkResizeObserver(this.runResizeObserver);\n this.addSlotChangeListener();\n\n onComponentRequiredPropUndefined(\n [\n { prop: this.label, propName: \"label\" },\n { prop: this.name, propName: \"name\" },\n ],\n \"Radio Group\"\n );\n }\n\n @Listen(\"icCheck\")\n selectHandler({ detail, target }: CustomEvent<IcValueEventDetail>): void {\n this.checkedValue = detail.value;\n const selectedOption = target as HTMLIcRadioOptionElement;\n this.icChange.emit({\n value: this.checkedValue,\n selectedOption: {\n radio: selectedOption,\n textFieldValue: selectedOption?.querySelector(\"ic-text-field\")?.value,\n },\n });\n\n if (this.radioOptions !== undefined) {\n this.radioOptions.forEach((radioOption, index) => {\n radioOption.selected = this.checkedValue === radioOption.value;\n if (radioOption.selected) {\n this.selectedChild = index;\n }\n });\n this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);\n }\n }\n\n @Listen(\"icSelectedChange\")\n changeHandler(): void {\n const selectedOption = this.radioOptions.findIndex(\n (radioOption) => radioOption.selected\n );\n if (selectedOption < 0) {\n this.setFirstRadioOptionTabIndex(0);\n this.selectedChild = selectedOption;\n }\n }\n\n private runResizeObserver = () => {\n this.resizeObserver = new ResizeObserver(() => {\n this.checkOrientation();\n });\n\n this.resizeObserver.observe(this.el);\n };\n\n private checkOrientation() {\n if (this.initialOrientation === this.RADIO_HORIZONTAL) {\n let totalWidth = 0;\n if (Array.isArray(this.radioOptions) && this.radioOptions.length > 0) {\n this.radioOptions.forEach(({ clientWidth }, i, arr) => {\n totalWidth += clientWidth;\n if (i < arr.length - 1) totalWidth += 40;\n });\n } else {\n totalWidth = 0;\n }\n\n if (\n this.currentOrientation === this.RADIO_HORIZONTAL &&\n totalWidth > this.radioContainer.clientWidth\n ) {\n this.currentOrientation = this.RADIO_VERTICAL;\n } else if (\n this.currentOrientation === this.RADIO_VERTICAL &&\n totalWidth < this.radioContainer.clientWidth\n ) {\n this.currentOrientation = this.RADIO_HORIZONTAL;\n }\n }\n }\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n switch (event.key) {\n case \"ArrowDown\":\n case \"ArrowRight\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, true)\n ].click();\n event.preventDefault();\n break;\n case \"ArrowUp\":\n case \"ArrowLeft\":\n this.radioOptions[\n this.getNextItemToSelect(this.selectedChild, false)\n ].click();\n event.preventDefault();\n }\n };\n\n private getNextItemToSelect = (\n currentItem: number,\n movingDown: boolean\n ): number => {\n const numRadios = this.radioOptions.length - 1;\n\n if (currentItem < 1) {\n currentItem = 0;\n }\n\n let nextItem = movingDown ? currentItem + 1 : currentItem - 1;\n\n //check if wrap around necessary\n if (nextItem < 0) {\n nextItem = numRadios;\n } else if (nextItem > numRadios) {\n nextItem = 0;\n }\n\n //if next item is disabled then find next\n if (this.radioOptions[nextItem].disabled) {\n nextItem = this.getNextItemToSelect(nextItem, movingDown);\n }\n\n return nextItem;\n };\n\n private addSlotChangeListener = () => {\n this.radioContainer.addEventListener(\"slotchange\", this.setRadioOptions);\n };\n\n private setFirstRadioOptionTabIndex = (value: number) => {\n this.radioOptions[0].setTabIndex(value);\n };\n\n private setRadioOptions = () => {\n this.selectedChild = -1;\n this.checkedValue = \"\";\n this.radioOptions = Array.from(this.el.querySelectorAll(\"ic-radio-option\"));\n if (this.radioOptions.length > 0) {\n this.radioOptions.forEach((radioOption, index) => {\n if (!radioOption.selected) {\n radioOption.selected = this.checkedValue === radioOption.value;\n }\n radioOption.name = this.name;\n radioOption.groupLabel = this.label;\n if (radioOption.selected) {\n this.selectedChild = index;\n this.checkedValue = radioOption.value;\n }\n if (this.disabled) {\n radioOption.disabled = true;\n }\n });\n this.setFirstRadioOptionTabIndex(this.selectedChild > 0 ? -1 : 0);\n\n if (\n this.initialOrientation === this.RADIO_HORIZONTAL &&\n this.radioOptions !== undefined &&\n (this.radioOptions.length > 2 ||\n (this.radioOptions.length === 2 &&\n (slotHasContent(this.radioOptions[0], this.ADDITIONAL_FIELD) ||\n slotHasContent(this.radioOptions[1], this.ADDITIONAL_FIELD))))\n ) {\n this.currentOrientation = this.RADIO_VERTICAL;\n }\n }\n };\n\n render() {\n const {\n currentOrientation,\n disabled,\n handleKeyDown,\n helperText,\n hideLabel,\n label,\n required,\n size,\n validationStatus,\n validationText,\n } = this;\n\n return (\n <Host\n onKeyDown={handleKeyDown}\n class={{ \"ic-radio-group-small\": size === \"small\" }}\n >\n <div\n role=\"radiogroup\"\n aria-label={`${label}${required ? \", required\" : \"\"}`}\n >\n {!hideLabel && (\n <ic-input-label\n class={{ [`${validationStatus}`]: true }}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n ></ic-input-label>\n )}\n <div\n class={{\n \"radio-buttons-container\": true,\n horizontal: currentOrientation === this.RADIO_HORIZONTAL,\n }}\n ref={(el) => (this.radioContainer = el)}\n >\n <slot></slot>\n </div>\n </div>\n {hasValidationStatus(validationStatus, disabled) && (\n <ic-input-validation\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText}\n ></ic-input-validation>\n )}\n </Host>\n );\n }\n}\n"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import{r as i,c as t,f as e,h as s,H as a,g as h}from"./p-6b5e91e2.js";import{c as n,B as o,z as l,k as r,v as c,r as d,j as u,a as p,l as f,n as b,p as v,C as m,I as g,w,E as x}from"./p-312cacae.js";const y=`<svg viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">\n<path d="M7 9.5L12 14.5L17 9.5H7Z" fill="currentColor" />\n</svg>\n`;const k=`<svg width="16" height="16" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg">\n<path d="M12.6666 4.27334L11.7266 3.33334L7.99998 7.06001L4.27331 3.33334L3.33331 4.27334L7.05998 8.00001L3.33331 11.7267L4.27331 12.6667L7.99998 8.94001L11.7266 12.6667L12.6666 11.7267L8.93998 8.00001L12.6666 4.27334Z" fill="currentColor" />\n</svg>\n`;const z='/*! 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}:host{display:block;position:relative}:host(.ic-select-full-width){width:100%}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:0.375rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-repeat:no-repeat;background-position:right 0.375rem 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;position:relative}.select-input{width:100%;height:100%;padding:0 0.375rem;display:flex;cursor:pointer;align-items:center;justify-content:space-between;background:none;border:none}.select-input:focus{outline:var(--ic-hc-focus-outline)}:host(:not(.ic-select-disabled)) ic-input-component-container:hover .select-input{background-color:var(--ic-architectural-white)}.select-input[disabled]{pointer-events:none}:host(.ic-select-searchable) .select-input{cursor:auto}.searchable-select-container{align-items:center;display:flex;width:100%;position:relative}.expand-icon{height:var(--ic-space-lg);padding-left:var(--ic-space-xs);color:var(--ic-action-dark)}.expand-icon>svg{display:inline-block;width:var(--ic-space-lg);height:var(--ic-space-lg)}:host(.ic-select-disabled) .expand-icon,:host(.ic-select-disabled) .expand-icon>svg>path{color:var(--ic-architectural-200)}:host(.ic-select-searchable) .expand-icon{padding-left:var(--ic-space-xxs);height:2.25rem}:host(.ic-select-searchable) .expand-icon>svg{height:2.25rem;padding:0 0.375rem}:host(.ic-select-searchable:not(.ic-select-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(.ic-select-searchable) .expand-icon-open{transform:rotateX(180deg)}:host(.ic-select-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:2.375rem;align-items:center}:host(.ic-select-small) .clear-button-container{padding-left:1.875rem}.divider{width:var(--ic-border-width);background-color:var(--ic-architectural-400);margin:var(--ic-space-xxs) 0;border-radius:var(--ic-space-1px);height:var(--ic-space-lg)}:host(.ic-select-small) .divider{height:var(--ic-space-md)}.clear-button{position:absolute;right:2.75rem;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 0.125rem var(--ic-focus-glow);border-radius:0.25rem}.clear-button:focus *{fill:white}.searchable-select-results-status{border:0;clip:rect(0, 0, 0, 0, 0);height:var(--ic-space-1px);overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:var(--ic-space-1px)}::slotted([slot="icon"]){fill:var(--ic-color-tertiary-text)}.has-value ::slotted([slot="icon"]){fill:var(--ic-color-primary-text)}.readonly ::slotted([slot="icon"]){padding:0.375rem;margin-bottom:0.75rem}@media (forced-colors: active){.has-value ::slotted([slot="icon"]){fill:currentcolor}}';let L=0;const C=[...w,"tabindex","title"];const M=class{constructor(s){i(this,s);this.icBlur=t(this,"icBlur",7);this.icChange=t(this,"icChange",7);this.icClear=t(this,"icClear",7);this.icClose=t(this,"icClose",7);this.icFocus=t(this,"icFocus",7);this.icInput=t(this,"icInput",7);this.icOpen=t(this,"icOpen",7);this.icOptionSelect=t(this,"icOptionSelect",7);this.icRetryLoad=t(this,"icRetryLoad",7);this.hasSetDefaultValue=false;this.inheritedAttributes={};this.initialOptionsEmpty=false;this.inputId=`ic-select-input-${L++}`;this.menuId=`${this.inputId}-menu`;this.searchableMenuItemSelected=false;this.ungroupedOptions=[];this.hostMutationObserver=null;this.hostMutationCallback=i=>{let t=false;i.forEach((({attributeName:i,type:e,addedNodes:s,removedNodes:a})=>{if(C.includes(i)){this.inheritedAttributes[i]=this.el.getAttribute(i);t=true}else if(e==="childList"){t=n(s,a,"icon")}}));if(t){e(this)}};this.handleRetry=i=>{var t;if(i.detail.keyPressed)(t=this.searchableSelectElement)===null||t===void 0?void 0:t.focus();this.blurredBecauseButtonPressed=true;this.retryButtonClick=true;this.hasSetDefaultValue=true;this.icRetryLoad.emit({value:this.hiddenInputValue})};this.emitIcChange=i=>{if(!this.searchable){this.value=i}clearTimeout(this.debounceIcChange);this.debounceIcChange=window.setTimeout((()=>{this.icChange.emit({value:i})}),this.currDebounce)};this.emitImmediateIcChange=i=>{this.value=i;clearTimeout(this.debounceIcChange);this.icChange.emit({value:i})};this.deduplicateOptions=i=>{const t=[];const e=[];let s;i.forEach((i=>{if(i.children){s=[];i.children.forEach((i=>{if(t.includes(i.value)){console.warn(`ic-select with label ${this.label} was populated with duplicate option (value: ${i.value}) which has been removed.`)}else{t.push(i.value);s.push(i)}}));const a=Object.assign(Object.assign({},i),{children:s});e.push(a)}else{if(t.includes(i.value)){console.warn(`ic-select with label ${this.label} was populated with duplicate option (value: ${i.value}) which has been removed.`)}else{t.push(i.value);e.push(i)}}}));return e};this.setOptionsValuesFromLabels=()=>{var i;if(((i=this.options)===null||i===void 0?void 0:i.length)>0&&this.options.map){this.options.map((i=>{if(!i.value){i.value=i.label}}))}};this.setUngroupedOptions=i=>{this.ungroupedOptions=i.detail.options};this.setTextColor=()=>{if(this.nativeSelectElement.selectedIndex===0){this.nativeSelectElement.className="placeholder"}else{this.nativeSelectElement.className="select-option-selected"}};this.setMenuChange=i=>{if(this.open!==i){this.open=i}};this.getLabelFromValue=i=>o(i,this.uniqueOptions);this.getFilteredChildMenuOptions=i=>{let t=i.children;if(this.searchable){t=l(i.children,this.includeDescriptionsInSearch,this.searchableSelectInputValue,this.searchMatchPosition)}else{t=l(i.children,false,this.pressedCharacters,"start")}const e=Object.assign({},i);e.children=t;return e};this.handleNativeSelectChange=()=>{this.icOptionSelect.emit({value:this.nativeSelectElement.value});this.emitImmediateIcChange(this.nativeSelectElement.value);this.setTextColor()};this.handleCustomSelectChange=i=>{if(this.searchable&&i.detail.label===this.emptyOptionListText){this.searchableSelectElement.focus();return}if(this.searchable){this.value=i.detail.value;this.searchableMenuItemSelected=true;if(this.value===this.currValue){this.searchableSelectInputValue=this.getLabelFromValue(this.value)}this.inputValueToFilter=null;this.hiddenInputValue=this.getValueFromLabel(this.searchableSelectInputValue)}this.ariaActiveDescendant=i.detail.optionId;this.icOptionSelect.emit({value:i.detail.value});this.emitIcChange(i.detail.value)};this.handleMenuChange=i=>{this.open=i.detail.open;this.pressedCharacters="";this.searchable&&this.handleFocusIndicatorDisplay()};this.handleMenuKeyPress=i=>{i.cancelBubble=true;this.handleCharacterKeyDown(i.detail.key)};this.handleMenuValueChange=i=>{this.value=i.detail.value};this.handleFocusIndicatorDisplay=()=>{const i=this.el.shadowRoot.querySelector(".focus-indicator");if(this.open){i.classList.add("focus-indicator-enabled")}else{i.classList.remove("focus-indicator-enabled")}};this.handleMouseDown=i=>{if(!this.open){i.preventDefault()}};this.isExternalFiltering=()=>this.searchable&&this.disableAutoFiltering;this.handleClick=i=>{var t;if(!this.open){if(this.isExternalFiltering()){this.menu.options=this.filteredOptions}else if(!this.hasTimedOut&&!this.loading&&!((t=this.noOptions)===null||t===void 0?void 0:t.length)&&(!this.searchable||this.searchableMenuItemSelected)){this.noOptions=null;this.menu.options=this.uniqueOptions}}if(i.detail!==0){this.menu.handleClickOpen()}};this.handleExpandIconMouseDown=i=>{if(!this.disabled){i.preventDefault();this.searchableSelectElement.focus();this.handleClick(i)}};this.handleClear=i=>{i.stopPropagation();this.hasTimedOut=false;clearTimeout(this.timeoutTimer);this.noOptions=null;this.emitImmediateIcChange(null);this.icClear.emit();if(this.searchable){this.searchableSelectElement.value=null;this.searchableSelectInputValue=null;this.filteredOptions=this.uniqueOptions;this.hiddenInputValue=null;this.searchableSelectElement.focus()}else{this.customSelectElement.focus()}};this.handleCharacterKeyDown=i=>{if(this.open&&i===" "&&this.pressedCharacters.length===0&&!this.hasTimedOut&&!this.loading){this.setMenuChange(false)}if(i.length===1&&!this.searchable){window.clearTimeout(this.characterKeyPressTimer);this.characterKeyPressTimer=window.setTimeout((()=>this.pressedCharacters=""),1e3);this.pressedCharacters+=i;this.handleFilter();if(!this.noOptions){this.emitImmediateIcChange(this.filteredOptions[0].value)}}else{this.pressedCharacters=""}};this.handleNativeSelectKeyDown=i=>{if(i.key!=="Escape"&&i.key!=="Tab"||this.open){i.cancelBubble=true}this.handleCharacterKeyDown(i.key)};this.handleKeyDown=i=>{if(i.key!=="Escape"&&i.key!=="Tab"||this.open){i.cancelBubble=true}const t=i.key==="ArrowDown"||i.key==="ArrowUp";if(!this.open){if(this.isExternalFiltering()&&(i.key==="Enter"||t)){this.menu.options=this.filteredOptions}else{if(!this.hasTimedOut){this.noOptions=null;this.menu.options=this.uniqueOptions}}}if(this.open&&i.key==="Enter"){this.setMenuChange(false)}else{if(!(t&&this.noOptions!==null)){if(!(i.key===" "&&this.pressedCharacters.length>0)){this.menu.handleKeyboardOpen(i)}this.handleCharacterKeyDown(i.key)}}};this.handleClearButtonFocus=()=>{this.clearButtonFocused=true};this.handleClearButtonBlur=i=>{var t;const e=(t=this.menu)===null||t===void 0?void 0:t.querySelector("#retry-button");if(!(this.searchableSelectElement&&i.relatedTarget===this.searchableSelectElement)&&!(e&&i.relatedTarget===e)){this.setMenuChange(false);this.handleFocusIndicatorDisplay()}this.clearButtonFocused=false};this.handleFilter=()=>{var i;const t=this.deduplicateOptions(this.searchable?[...this.uniqueOptions]:this.ungroupedOptions);let e=false;let s=[];t.map((i=>{if(i.children)e=true}));let a;if(this.searchable){a=l(t,this.includeDescriptionsInSearch,this.inputValueToFilter,this.searchMatchPosition);this.searchableMenuItemSelected=false}else{a=l(t,false,this.pressedCharacters,"start")}if(!e&&((i=a[0])===null||i===void 0?void 0:i.label)!==this.emptyOptionListText){s=a}else if(e){t.map((i=>{if(this.includeGroupTitlesInSearch){if(a.indexOf(i)!==-1){s.push(i)}else{s.push(this.getFilteredChildMenuOptions(i))}}else{s.push(this.getFilteredChildMenuOptions(i))}}))}let h=false;if(e){h=true;s.map((i=>{if(i.children.length>0){h=false}}))}if(s.length>0&&!h){this.noOptions=null;this.filteredOptions=s}else{this.noOptions=[{label:this.emptyOptionListText,value:""}];this.filteredOptions=this.noOptions}};this.triggerLoading=()=>{this.hasTimedOut=false;this.noOptions=[{label:this.loadingLabel,value:"",loading:true}];if(this.filteredOptions!==this.noOptions&&this.searchable){this.filteredOptions=this.noOptions}else if(this.uniqueOptions!==this.noOptions&&!this.searchable){this.uniqueOptions=this.noOptions}if(this.timeout){this.timeoutTimer=window.setTimeout((()=>{this.loading=false;this.hasTimedOut=true;this.noOptions=[{label:this.loadingErrorLabel,value:"",timedOut:true}];this.filteredOptions=this.noOptions;if(!this.searchable)this.uniqueOptions=this.noOptions}),this.timeout)}};this.getValueFromLabel=i=>{var t;return(t=this.uniqueOptions.find((t=>t.label===i)))===null||t===void 0?void 0:t.value};this.handleSearchableSelectInput=i=>{this.searchableSelectInputValue=i.target.value;this.icInput.emit({value:this.searchableSelectInputValue});this.emitIcChange(this.searchableSelectInputValue);this.hiddenInputValue=this.searchableSelectInputValue;this.inputValueToFilter=this.searchableSelectInputValue;this.setMenuChange(true);if(!this.disableAutoFiltering){this.handleFilter();this.debounceAriaLiveUpdate()}};this.updateSearchableSelectResultAriaLive=()=>{const i=this.el.shadowRoot.querySelector(".searchable-select-results-status");if(i){if(this.noOptions!==null){i.innerText=this.emptyOptionListText}else{i.innerText=""}}};this.getDefaultValue=i=>this.getLabelFromValue(i)||i||null;this.onFocus=()=>{this.icFocus.emit()};this.onBlur=({relatedTarget:i})=>{var t;const e=i;if(e!==null&&(e.tagName==="UL"&&e.className.includes("menu")||e.tagName==="LI"&&e.className.includes("option"))){return}const s=(t=this.menu)===null||t===void 0?void 0:t.querySelector("#retry-button");const a=this.searchable&&!!this.menu&&e!==this.menu&&!Array.from(this.menu.querySelectorAll("[role='option']")).includes(e)&&!(this.clearButton&&e===this.clearButton)&&!(s&&e===s);if(a){if(!this.retryButtonClick){this.setMenuChange(false)}this.handleFocusIndicatorDisplay()}this.retryButtonClick=false;this.icBlur.emit()};this.onTimeoutBlur=i=>{if(i.detail.ev.relatedTarget!==this.searchableSelectElement&&!this.blurredBecauseButtonPressed){this.setMenuChange(false);this.handleFocusIndicatorDisplay();this.icBlur.emit()}this.blurredBecauseButtonPressed=false};this.handleFormReset=()=>{this.value=this.initialValue;if(this.searchable){this.searchableSelectInputValue=this.getDefaultValue(this.value);this.hiddenInputValue=this.value}};this.ariaActiveDescendant=undefined;this.clearButtonFocused=false;this.debounceIcChange=undefined;this.hiddenInputValue=undefined;this.noOptions=null;this.open=false;this.pressedCharacters="";this.searchableSelectInputValue=null;this.disabled=false;this.disableAutoFiltering=false;this.emptyOptionListText="No results found";this.form=undefined;this.fullWidth=false;this.helperText="";this.hideLabel=false;this.includeDescriptionsInSearch=false;this.includeGroupTitlesInSearch=false;this.label=undefined;this.loadingErrorLabel="Loading Error";this.loadingLabel="Loading...";this.name=this.inputId;this.placeholder="Select an option";this.readonly=false;this.required=false;this.searchable=false;this.searchMatchPosition="anywhere";this.selectOnEnter=false;this.showClearButton=false;this.size="medium";this.timeout=undefined;this.validationStatus="";this.validationText="";this.loading=false;this.options=[];this.filteredOptions=this.options;this.uniqueOptions=this.options;this.debounce=0;this.currDebounce=this.debounce;this.value=undefined;this.initialValue=this.value;this.inputValueToFilter=this.value;this.currValue=this.value}loadingHandler(i){i&&this.triggerLoading()}watchOptionsHandler(){var i;if(!this.hasTimedOut){this.loading=false;clearTimeout(this.timeoutTimer);if(this.isExternalFiltering()){if(((i=this.options)===null||i===void 0?void 0:i.length)>0){this.setOptionsValuesFromLabels();this.noOptions=null;this.uniqueOptions=this.deduplicateOptions(this.options);this.filteredOptions=this.uniqueOptions}else{this.noOptions=[{label:this.emptyOptionListText,value:""}];this.uniqueOptions=this.noOptions;this.filteredOptions=this.noOptions}this.updateSearchableSelectResultAriaLive();this.setDefaultValue()}else{this.setOptionsValuesFromLabels();this.uniqueOptions=this.deduplicateOptions(this.options);this.filteredOptions=this.uniqueOptions;if(this.initialOptionsEmpty){this.setDefaultValue();this.initialOptionsEmpty=false}}}else{if(!this.searchable){this.options=this.noOptions}}}debounceChangedHandler(i){this.updateOnChangeDebounce(i)}valueChangedHandler(){if(this.value!==this.currValue){this.currValue=this.value}if(this.searchable){this.searchableSelectInputValue=this.getLabelFromValue(this.currValue)||this.currValue}}openChangedHandler(){this.open?this.icOpen.emit():this.icClose.emit()}disconnectedCallback(){var i;r(this.el,this.handleFormReset);(i=this.hostMutationObserver)===null||i===void 0?void 0:i.disconnect()}componentWillLoad(){var i;this.inheritedAttributes=c(this.el,C);d(this.disabled,this.el);this.setOptionsValuesFromLabels();u(this.el,this.handleFormReset);if(!((i=this.options)===null||i===void 0?void 0:i.length)){this.initialOptionsEmpty=true;this.noOptions=[{label:this.emptyOptionListText,value:""}];this.uniqueOptions=this.noOptions;this.filteredOptions=this.noOptions}else{this.setDefaultValue();this.uniqueOptions=this.deduplicateOptions(this.options)}}componentDidLoad(){p([{prop:this.label,propName:"label"}],"Select");if(this.loading){this.triggerLoading()}this.hiddenInputValue=this.searchable&&this.currValue;this.hostMutationObserver=new MutationObserver(this.hostMutationCallback);this.hostMutationObserver.observe(this.el,{attributes:true,childList:true})}componentDidRender(){if(this.nativeSelectElement&&!this.disabled){this.setTextColor()}}async setFocus(){if(this.nativeSelectElement){this.nativeSelectElement.focus()}else if(this.customSelectElement){this.customSelectElement.focus()}else if(this.searchableSelectElement){this.searchableSelectElement.focus()}}updateOnChangeDebounce(i){if(this.currDebounce!==i){this.currDebounce=i}}debounceAriaLiveUpdate(){clearTimeout(this.debounceAria);window.setTimeout((()=>{this.updateSearchableSelectResultAriaLive()}),800)}setDefaultValue(){if(!this.hasSetDefaultValue&&this.currValue){this.searchableSelectInputValue=this.getDefaultValue(this.currValue);this.initialValue=this.currValue;this.hasSetDefaultValue=true}}render(){const{size:i,disabled:t,fullWidth:e,helperText:h,hideLabel:n,label:o,menuId:l,name:r,options:c,placeholder:d,readonly:u,required:p,searchable:w,showClearButton:z,validationStatus:L,validationText:C,currValue:M}=this;f(true,this.el,r,this.searchable?this.hiddenInputValue:M,t);const T=L===x.Error?"true":"false";const H=b(this.inputId,h!=="",v(this.validationStatus,this.disabled)).trim();let B=!!this.el.querySelector(`[slot="icon"]`);if(B&&(t||u&&!this.value)){B=false}return s(a,{class:{["ic-select-disabled"]:t,["ic-select-searchable"]:w,[`ic-select-${i}`]:i!=="medium",["ic-select-full-width"]:e},onBlur:this.onBlur},s("ic-input-container",{readonly:u},!n&&s("ic-input-label",{for:this.inputId,label:o,helperText:h,required:p,disabled:t,readonly:u}),s("ic-input-component-container",{ref:i=>this.anchorEl=i,class:{"menu-open":this.open},size:i,fullWidth:e,disabled:t,readonly:u,validationStatus:L},B&&s("span",{slot:"left-icon",class:{["readonly"]:u,["has-value"]:!!this.value}},s("slot",{name:"icon"})),u?s("ic-typography",null,s("p",null,this.getLabelFromValue(M))):m()?s("select",Object.assign({ref:i=>this.nativeSelectElement=i,disabled:t,onChange:this.handleNativeSelectChange,required:p,id:this.inputId,"aria-label":o,"aria-describedby":H,"aria-invalid":T,onBlur:this.onBlur,onFocus:this.onFocus,onKeyDown:this.handleNativeSelectKeyDown,form:this.form},this.inheritedAttributes),s("option",{value:"",selected:true,disabled:!z},d),c.map((i=>{if(i.children){return s("optgroup",{label:i.label},i.children.map((i=>s("option",{value:i.value,disabled:i.disabled,selected:i.value===M},i.label))))}else{return s("option",{value:i.value,disabled:i.disabled,selected:i.value===M},i.label)}}))):w?s("div",{class:"searchable-select-container"},s("input",{class:"select-input",role:"combobox",autocomplete:"off","aria-label":o,"aria-describedby":H,"aria-activedescendant":this.ariaActiveDescendant,"aria-autocomplete":"list","aria-expanded":this.open?"true":"false","aria-invalid":T,"aria-required":p?"true":"false","aria-controls":l,ref:i=>this.searchableSelectElement=i,id:this.inputId,value:this.searchableSelectInputValue,placeholder:d,disabled:t,onInput:this.handleSearchableSelectInput,onClick:this.handleClick,onKeyDown:this.handleKeyDown,onFocus:this.onFocus,onBlur:this.onBlur,form:this.form}),this.searchableSelectInputValue&&(z||w)&&s("div",{class:"clear-button-container"},s("ic-button",{id:"clear-button",ref:i=>this.clearButton=i,"aria-label":this.searchableSelectInputValue&&M===null?"Clear input":"Clear selection",class:"clear-button",innerHTML:k,onClick:this.handleClear,onFocus:this.handleClearButtonFocus,onBlur:this.handleClearButtonBlur,size:i,variant:"icon",appearance:this.clearButtonFocused?g.Light:g.Dark}),s("div",{class:"divider"})),s("span",{onMouseDown:this.handleExpandIconMouseDown,class:{"expand-icon":true,"expand-icon-open":this.open,"expand-icon-filled":!(M==null||M==="")},innerHTML:y,"aria-hidden":"true"}),s("div",{"aria-live":"polite",role:"status",class:"searchable-select-results-status"})):s("div",{class:"select-container"},s("button",{class:"select-input",ref:i=>this.customSelectElement=i,id:this.inputId,"aria-label":`${o}, ${this.getLabelFromValue(M)||d}${p?", required":""}`,"aria-describedby":H,"aria-invalid":T,"aria-haspopup":"listbox","aria-expanded":this.open?"true":"false","aria-owns":l,"aria-controls":l,disabled:t,onBlur:this.onBlur,onFocus:this.onFocus,onClick:this.handleClick,onMouseDown:this.handleMouseDown,onKeyDown:this.handleKeyDown},s("ic-typography",{variant:"body",class:{"value-text":true,placeholder:this.getLabelFromValue(M)===undefined}},this.getLabelFromValue(M)||d),s("div",{class:"select-input-end"},M&&z&&s("div",{class:"divider"}),s("span",{class:{"expand-icon":true,"expand-icon-open":this.open,"expand-icon-filled":!(M==null||M==="")},innerHTML:y,"aria-hidden":"true"}))),M&&z&&s("ic-button",{id:"clear-button","aria-label":"Clear selection",class:"clear-button",innerHTML:k,onClick:this.handleClear,onFocus:this.handleClearButtonFocus,onBlur:this.handleClearButtonBlur,size:i,variant:"icon",appearance:this.clearButtonFocused?g.Light:g.Dark}))),!m()&&s("ic-menu",{class:{"no-results":this.loading||this.hasTimedOut||this.noOptions!==null&&this.noOptions[0]&&this.noOptions[0].label===this.emptyOptionListText},ref:i=>this.menu=i,inputEl:w?this.searchableSelectElement:this.customSelectElement,inputLabel:o,anchorEl:this.anchorEl,size:i,menuId:l,open:this.open,options:w?this.filteredOptions:this.uniqueOptions,value:M,fullWidth:e,selectOnEnter:this.selectOnEnter,onMenuStateChange:this.handleMenuChange,onMenuOptionSelect:this.handleCustomSelectChange,onMenuKeyPress:this.handleMenuKeyPress,onMenuValueChange:this.handleMenuValueChange,onUngroupedOptionsSet:this.setUngroupedOptions,onRetryButtonClicked:this.handleRetry,parentEl:this.el,onTimeoutBlur:this.onTimeoutBlur,activationType:this.searchable||this.selectOnEnter?"manual":"automatic"}),v(this.validationStatus,this.disabled)&&s("ic-input-validation",{class:{"menu-open":this.open},ariaLiveMode:"polite",status:L,message:C,for:this.inputId})))}static get delegatesFocus(){return true}get el(){return h(this)}static get watchers(){return{loading:["loadingHandler"],options:["watchOptionsHandler"],debounce:["debounceChangedHandler"],value:["valueChangedHandler"],open:["openChangedHandler"]}}};M.style=z;export{M as ic_select};
2
- //# sourceMappingURL=p-d5829a35.entry.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["icSelectCss","inputIds","MUTABLE_ATTRIBUTES","IC_INHERITED_ARIA","Select","this","hasSetDefaultValue","inheritedAttributes","initialOptionsEmpty","inputId","menuId","searchableMenuItemSelected","ungroupedOptions","hostMutationObserver","hostMutationCallback","mutationList","forceComponentUpdate","forEach","attributeName","type","addedNodes","removedNodes","includes","el","getAttribute","checkSlotInChildMutations","forceUpdate","handleRetry","ev","detail","keyPressed","_a","searchableSelectElement","focus","blurredBecauseButtonPressed","retryButtonClick","icRetryLoad","emit","value","hiddenInputValue","emitIcChange","searchable","clearTimeout","debounceIcChange","window","setTimeout","icChange","currDebounce","emitImmediateIcChange","deduplicateOptions","options","uniqueValues","dedupedOptions","dedupedChildren","option","children","child","console","warn","label","push","modifiedParent","Object","assign","setOptionsValuesFromLabels","length","map","setUngroupedOptions","event","setTextColor","nativeSelectElement","selectedIndex","className","setMenuChange","open","getLabelFromValue","uniqueOptions","getFilteredChildMenuOptions","getFilteredMenuOptions","includeDescriptionsInSearch","searchableSelectInputValue","searchMatchPosition","pressedCharacters","newOption","handleNativeSelectChange","icOptionSelect","handleCustomSelectChange","emptyOptionListText","currValue","inputValueToFilter","getValueFromLabel","ariaActiveDescendant","optionId","handleMenuChange","handleFocusIndicatorDisplay","handleMenuKeyPress","cancelBubble","handleCharacterKeyDown","key","handleMenuValueChange","focusIndicator","shadowRoot","querySelector","classList","add","remove","handleMouseDown","preventDefault","isExternalFiltering","disableAutoFiltering","handleClick","menu","filteredOptions","hasTimedOut","loading","noOptions","handleClickOpen","handleExpandIconMouseDown","disabled","handleClear","stopPropagation","timeoutTimer","icClear","customSelectElement","characterKeyPressTimer","handleFilter","handleNativeSelectKeyDown","handleKeyDown","isArrowKey","handleKeyboardOpen","handleClearButtonFocus","clearButtonFocused","handleClearButtonBlur","retryButton","relatedTarget","isGrouped","newFilteredOptions","menuOptionsFiltered","includeGroupTitlesInSearch","indexOf","noChildOptionsWhenFiltered","triggerLoading","loadingLabel","timeout","loadingErrorLabel","timedOut","find","handleSearchableSelectInput","target","icInput","debounceAriaLiveUpdate","updateSearchableSelectResultAriaLive","searchableSelectResultsStatusEl","innerText","getDefaultValue","onFocus","icFocus","onBlur","tagName","isSearchableAndNoFocusedInternalElements","Array","from","querySelectorAll","clearButton","icBlur","onTimeoutBlur","handleFormReset","initialValue","debounce","loadingHandler","newValue","watchOptionsHandler","setDefaultValue","debounceChangedHandler","updateOnChangeDebounce","valueChangedHandler","openChangedHandler","icOpen","icClose","disconnectedCallback","removeFormResetListener","disconnect","componentWillLoad","inheritAttributes","removeDisabledFalse","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","MutationObserver","observe","attributes","childList","componentDidRender","setFocus","debounceAria","render","size","fullWidth","helperText","hideLabel","name","placeholder","readonly","required","showClearButton","validationStatus","validationText","renderHiddenInput","invalid","IcInformationStatus","Error","describedBy","getInputDescribedByText","hasValidationStatus","trim","showLeftIcon","h","Host","class","for","ref","anchorEl","slot","isMobileOrTablet","onChange","id","onKeyDown","form","selected","role","autocomplete","onInput","onClick","innerHTML","Clear","variant","appearance","IcThemeForegroundEnum","Light","Dark","onMouseDown","Expand","undefined","inputEl","inputLabel","selectOnEnter","onMenuStateChange","onMenuOptionSelect","onMenuKeyPress","onMenuValueChange","onUngroupedOptionsSet","onRetryButtonClicked","parentEl","activationType","ariaLiveMode","status","message"],"sources":["src/components/ic-select/ic-select.css?tag=ic-select&encapsulation=shadow","src/components/ic-select/ic-select.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n/**\n * @prop --input-width: Width of the input field\n * @prop --ic-z-index-menu: z-index of select menu\n */\n\n:host {\n display: block;\n position: relative;\n}\n\n:host(.ic-select-full-width) {\n width: 100%;\n}\n\nic-input-component-container:hover {\n --border-color: var(--ic-action-dark-hover);\n}\n\nic-input-component-container:active {\n --border-color: var(--ic-action-dark-active);\n\n color: var(--ic-action-dark-active);\n}\n\nic-input-component-container.menu-open {\n --border-color: var(--ic-architectural-400);\n\n color: var(--ic-action-dark);\n}\n\nic-input-validation .status-icon,\nic-input-validation .statustext {\n visibility: visible;\n}\n\nic-input-validation.menu-open .status-icon,\nic-input-validation.menu-open .statustext {\n visibility: hidden;\n transition: visibility 0s;\n}\n\nic-input-label {\n margin-bottom: var(--ic-space-xs) !important;\n}\n\nselect {\n border: 0;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-architectural-white);\n color: var(--ic-color-primary-text);\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n height: 100%;\n padding-left: 0.375rem;\n appearance: none;\n background-repeat: no-repeat;\n background-position: right 0.375rem center;\n background-image: 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>\");\n}\n\nselect option,\n.select-option-selected {\n color: var(--ic-color-primary-text);\n}\n\nselect:disabled {\n color: var(--ic-architectural-200);\n 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>\");\n}\n\nselect:focus {\n border: 0;\n outline: 0;\n}\n\nselect:not([disabled]) {\n cursor: pointer;\n}\n\n.select-container {\n width: 100%;\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.select-input {\n width: 100%;\n height: 100%;\n padding: 0 0.375rem;\n display: flex;\n cursor: pointer;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n}\n\n.select-input:focus {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:not(.ic-select-disabled))\n ic-input-component-container:hover\n .select-input {\n background-color: var(--ic-architectural-white);\n}\n\n.select-input[disabled] {\n pointer-events: none;\n}\n\n:host(.ic-select-searchable) .select-input {\n cursor: auto;\n}\n\n.searchable-select-container {\n align-items: center;\n display: flex;\n width: 100%;\n position: relative;\n}\n\n.expand-icon {\n height: var(--ic-space-lg);\n padding-left: var(--ic-space-xs);\n color: var(--ic-action-dark);\n}\n\n.expand-icon > svg {\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-disabled) .expand-icon,\n:host(.ic-select-disabled) .expand-icon > svg > path {\n color: var(--ic-architectural-200);\n}\n\n:host(.ic-select-searchable) .expand-icon {\n padding-left: var(--ic-space-xxs);\n height: 2.25rem;\n}\n\n:host(.ic-select-searchable) .expand-icon > svg {\n height: 2.25rem;\n padding: 0 0.375rem;\n}\n\n:host(.ic-select-searchable:not(.ic-select-disabled)) .expand-icon > svg {\n cursor: pointer;\n}\n\n.expand-icon-open {\n color: var(--ic-action-dark);\n}\n\n.expand-icon-filled {\n color: var(--ic-action-dark);\n}\n\n.expand-icon-open,\n:host(.ic-select-searchable) .expand-icon-open {\n transform: rotateX(180deg);\n}\n\n:host(.ic-select-disabled) .value-text,\n.placeholder {\n color: var(--ic-color-tertiary-text);\n}\n\n.select-input-end {\n display: flex;\n align-items: center;\n}\n\n.clear-button-container {\n display: flex;\n gap: var(--ic-space-xxs);\n padding-left: 2.375rem;\n align-items: center;\n}\n\n:host(.ic-select-small) .clear-button-container {\n padding-left: 1.875rem;\n}\n\n.divider {\n width: var(--ic-border-width);\n background-color: var(--ic-architectural-400);\n margin: var(--ic-space-xxs) 0;\n border-radius: var(--ic-space-1px);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-small) .divider {\n height: var(--ic-space-md);\n}\n\n.clear-button {\n position: absolute;\n right: 2.75rem;\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 0.125rem var(--ic-focus-glow);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus * {\n fill: white;\n}\n\n.searchable-select-results-status {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: var(--ic-space-1px);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-color-tertiary-text);\n}\n\n.has-value ::slotted([slot=\"icon\"]) {\n fill: var(--ic-color-primary-text);\n}\n\n.readonly ::slotted([slot=\"icon\"]) {\n padding: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n@media (forced-colors: active) {\n .has-value ::slotted([slot=\"icon\"]) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n h,\n State,\n Watch,\n forceUpdate,\n} from \"@stencil/core\";\n\nimport {\n getInputDescribedByText,\n getLabelFromValue,\n hasValidationStatus,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n isMobileOrTablet,\n getFilteredMenuOptions,\n addFormResetListener,\n removeFormResetListener,\n removeDisabledFalse,\n checkSlotInChildMutations,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcThemeForegroundEnum,\n IcMenuOption,\n IcSearchMatchPositions,\n IcValueEventDetail,\n IcSizes,\n} from \"../../utils/types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport { IcOptionSelectEventDetail } from \"../ic-menu/ic-menu.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"tabindex\", \"title\"];\n\n/**\n * @slot icon - Content will be placed to the left of the select text input.\n */\n@Component({\n tag: \"ic-select\",\n styleUrl: \"ic-select.css\",\n shadow: {\n delegatesFocus: true,\n },\n})\nexport class Select {\n private anchorEl: HTMLElement;\n private blurredBecauseButtonPressed: boolean;\n private characterKeyPressTimer: number;\n private clearButton: HTMLIcButtonElement;\n private customSelectElement: HTMLButtonElement;\n private debounceAria: number;\n private hasSetDefaultValue = false;\n private hasTimedOut: boolean;\n private inheritedAttributes: { [k: string]: string } = {};\n private initialOptionsEmpty = false;\n private inputId = `ic-select-input-${inputIds++}`;\n private menu: HTMLIcMenuElement;\n private menuId = `${this.inputId}-menu`;\n private nativeSelectElement: HTMLSelectElement;\n private retryButtonClick: boolean;\n private searchableMenuItemSelected: boolean = false;\n private searchableSelectElement: HTMLInputElement;\n private timeoutTimer: number;\n private ungroupedOptions: IcMenuOption[] = [];\n private hostMutationObserver: MutationObserver = null;\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant: string;\n @State() clearButtonFocused: boolean = false;\n @State() debounceIcChange: number;\n @State() hiddenInputValue: string;\n @State() noOptions: IcMenuOption[] = null;\n @State() open: boolean = false;\n @State() pressedCharacters: string = \"\";\n @State() searchableSelectInputValue: string = null;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled?: boolean = false;\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableAutoFiltering?: boolean = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * If `true`, the select element will fill the width of the container. This prop should only be used with searchable select and will only be applied if searchable is true.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText?: string = \"\";\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel?: boolean = false;\n\n /**\n * If `true`, descriptions of options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeDescriptionsInSearch?: boolean = false;\n\n /**\n * If `true`, group titles of grouped options will be included when filtering options in a searchable select. Only applies to built in filtering.\n */\n @Prop() includeGroupTitlesInSearch?: boolean = false;\n\n /**\n * The label for the select.\n */\n @Prop() label!: string;\n\n /**\n * The message displayed when external loading times out.\n */\n @Prop() loadingErrorLabel?: string = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel?: string = \"Loading...\";\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name?: string = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder?: string = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly?: boolean = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required?: boolean = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options.\n */\n @Prop() searchable?: boolean = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition?: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown.\n */\n @Prop() selectOnEnter?: boolean = false;\n\n /**\n * If `true`, a button which clears the select input when clicked will be displayed. The button will always appear on the searchable select.\n */\n @Prop() showClearButton?: boolean = false;\n\n /**\n * The size of the select component.\n */\n @Prop() size?: IcSizes = \"medium\";\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus?: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText?: string = \"\";\n\n /**\n * If `true`, the loading state will be triggered when fetching options asynchronously.\n */\n @Prop({ mutable: true }) loading?: boolean = false;\n\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n newValue && this.triggerLoading();\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options?: IcMenuOption[] = [];\n @State() filteredOptions: IcMenuOption[] = this.options;\n @State() uniqueOptions: IcMenuOption[] = this.options;\n\n @Watch(\"options\")\n watchOptionsHandler(): void {\n if (!this.hasTimedOut) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n if (this.isExternalFiltering()) {\n if (this.options?.length > 0) {\n this.setOptionsValuesFromLabels();\n this.noOptions = null;\n this.uniqueOptions = this.deduplicateOptions(this.options);\n this.filteredOptions = this.uniqueOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n }\n this.updateSearchableSelectResultAriaLive();\n this.setDefaultValue();\n } else {\n this.setOptionsValuesFromLabels();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n this.filteredOptions = this.uniqueOptions;\n if (this.initialOptionsEmpty) {\n this.setDefaultValue();\n this.initialOptionsEmpty = false;\n }\n }\n } else {\n if (!this.searchable) {\n this.options = this.noOptions;\n }\n }\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop() debounce?: number = 0;\n @State() currDebounce = this.debounce;\n\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n this.updateOnChangeDebounce(newValue);\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option. For the searchable variant, the value is also reflected by the user input.\n */\n @Prop({ mutable: true }) value?: string;\n @State() initialValue = this.value;\n @State() inputValueToFilter = this.value;\n @State() currValue = this.value;\n\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n this.currValue = this.value;\n }\n\n if (this.searchable) {\n this.searchableSelectInputValue =\n this.getLabelFromValue(this.currValue) || this.currValue;\n }\n }\n\n @Watch(\"open\")\n openChangedHandler(): void {\n this.open ? this.icOpen.emit() : this.icClose.emit();\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the clear button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * Emitted when the select options menu is closed.\n */\n @Event() icClose: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the select options menu is opened.\n */\n @Event() icOpen: EventEmitter<void>;\n\n /**\n * Emitted when an option is highlighted within the menu.\n * Highlighting a menu item will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.inheritedAttributes = inheritAttributes(this.el, MUTABLE_ATTRIBUTES);\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.setOptionsValuesFromLabels();\n\n addFormResetListener(this.el, this.handleFormReset);\n\n if (!this.options?.length) {\n this.initialOptionsEmpty = true;\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n } else {\n this.setDefaultValue();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Select\"\n );\n\n if (this.loading) {\n this.triggerLoading();\n }\n this.hiddenInputValue = this.searchable && this.currValue;\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n }\n\n /**\n * Sets focus on the input box.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.customSelectElement) {\n this.customSelectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] =\n this.el.getAttribute(attributeName);\n forceComponentUpdate = true;\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private handleRetry = (ev: CustomEvent<IcValueEventDetail>) => {\n if (ev.detail.keyPressed) this.searchableSelectElement?.focus();\n this.blurredBecauseButtonPressed = true;\n this.retryButtonClick = true;\n this.hasSetDefaultValue = true;\n this.icRetryLoad.emit({ value: this.hiddenInputValue });\n };\n\n private updateOnChangeDebounce(newValue: number) {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n private emitIcChange = (value: string) => {\n if (!this.searchable) {\n this.value = value;\n }\n\n clearTimeout(this.debounceIcChange);\n this.debounceIcChange = window.setTimeout(() => {\n this.icChange.emit({ value: value });\n }, this.currDebounce);\n };\n\n private emitImmediateIcChange = (value: string) => {\n this.value = value;\n clearTimeout(this.debounceIcChange);\n this.icChange.emit({ value: value });\n };\n\n /**\n * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn\n * @param options array of IcMenuOptions\n * @returns a new options object, with all entries possessing a duplicate 'value' field removed\n */\n private deduplicateOptions = (options: IcMenuOption[]): IcMenuOption[] => {\n const uniqueValues: string[] = [];\n const dedupedOptions: IcMenuOption[] = [];\n let dedupedChildren: IcMenuOption[];\n\n options.forEach((option: IcMenuOption) => {\n if (option.children) {\n //If an option has children, we will loop through them\n dedupedChildren = [];\n option.children.forEach((child) => {\n if (uniqueValues.includes(child.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${child.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(child.value);\n dedupedChildren.push(child);\n }\n });\n // construct a modified option, inserting the deduplicated children alongside the original information\n const modifiedParent: IcMenuOption = {\n ...option,\n children: dedupedChildren,\n };\n dedupedOptions.push(modifiedParent);\n } else {\n // If an option does not have children, assess to see if it's value has been included already\n if (uniqueValues.includes(option.value)) {\n console.warn(\n `ic-select with label ${this.label} was populated with duplicate option (value: ${option.value}) which has been removed.`\n );\n } else {\n uniqueValues.push(option.value);\n dedupedOptions.push(option);\n }\n }\n });\n return dedupedOptions;\n };\n\n /**\n * Loop through options array and for all options with no value, infer it from the label\n */\n private setOptionsValuesFromLabels = (): void => {\n if (this.options?.length > 0 && this.options.map) {\n this.options.map((option) => {\n if (!option.value) {\n option.value = option.label;\n }\n });\n }\n };\n\n private setUngroupedOptions = (event: CustomEvent): void => {\n this.ungroupedOptions = event.detail.options;\n };\n\n private setTextColor = (): void => {\n if (this.nativeSelectElement.selectedIndex === 0) {\n this.nativeSelectElement.className = \"placeholder\";\n } else {\n this.nativeSelectElement.className = \"select-option-selected\";\n }\n };\n\n private setMenuChange = (open: boolean) => {\n if (this.open !== open) {\n this.open = open;\n }\n };\n\n private getLabelFromValue = (value: string): string | undefined => {\n return getLabelFromValue(value, this.uniqueOptions);\n };\n\n private getFilteredChildMenuOptions = (option: IcMenuOption) => {\n let children = option.children;\n\n if (this.searchable) {\n children = getFilteredMenuOptions(\n option.children,\n this.includeDescriptionsInSearch,\n this.searchableSelectInputValue,\n this.searchMatchPosition\n );\n } else {\n children = getFilteredMenuOptions(\n option.children,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n\n const newOption = { ...option };\n newOption.children = children;\n return newOption;\n };\n\n private handleNativeSelectChange = (): void => {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitImmediateIcChange(this.nativeSelectElement.value);\n this.setTextColor();\n };\n\n private handleCustomSelectChange = (event: CustomEvent): void => {\n if (this.searchable && event.detail.label === this.emptyOptionListText) {\n this.searchableSelectElement.focus();\n return;\n }\n\n if (this.searchable) {\n this.value = event.detail.value;\n this.searchableMenuItemSelected = true;\n\n // After editing the input, if selecting the same option as before, set the input value to label again\n if (this.value === this.currValue) {\n this.searchableSelectInputValue = this.getLabelFromValue(this.value);\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue = this.getValueFromLabel(\n this.searchableSelectInputValue\n );\n }\n\n this.ariaActiveDescendant = event.detail.optionId;\n this.icOptionSelect.emit({ value: event.detail.value });\n this.emitIcChange(event.detail.value);\n };\n\n private handleMenuChange = (event: CustomEvent): void => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n\n this.searchable && this.handleFocusIndicatorDisplay();\n };\n\n // clears the debounce delay when navigating the menu with arrow keys etc\n // to prevent delay in change event, which should only occur when typing in input\n private handleMenuKeyPress = (ev: CustomEvent): void => {\n ev.cancelBubble = true;\n this.handleCharacterKeyDown(ev.detail.key);\n };\n\n private handleMenuValueChange = (ev: CustomEvent): void => {\n this.value = ev.detail.value;\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator = this.el.shadowRoot.querySelector(\".focus-indicator\");\n\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n };\n\n private handleMouseDown = (event: Event): void => {\n if (!this.open) {\n event.preventDefault();\n }\n };\n\n private isExternalFiltering = (): boolean =>\n this.searchable && this.disableAutoFiltering;\n\n private handleClick = (event: MouseEvent): void => {\n if (!this.open) {\n if (this.isExternalFiltering()) {\n this.menu.options = this.filteredOptions;\n } else if (\n !this.hasTimedOut &&\n !this.loading &&\n !this.noOptions?.length &&\n (!this.searchable || this.searchableMenuItemSelected)\n ) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (event.detail !== 0) {\n this.menu.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement.focus();\n this.handleClick(event);\n }\n };\n\n private handleClear = (event: Event): void => {\n event.stopPropagation();\n this.hasTimedOut = false;\n clearTimeout(this.timeoutTimer);\n this.noOptions = null;\n this.emitImmediateIcChange(null);\n this.icClear.emit();\n\n if (this.searchable) {\n this.searchableSelectElement.value = null;\n this.searchableSelectInputValue = null;\n this.filteredOptions = this.uniqueOptions;\n this.hiddenInputValue = null;\n this.searchableSelectElement.focus();\n } else {\n this.customSelectElement.focus();\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (\n this.open &&\n key === \" \" &&\n this.pressedCharacters.length === 0 &&\n !this.hasTimedOut &&\n !this.loading\n ) {\n this.setMenuChange(false);\n }\n\n if (key.length === 1 && !this.searchable) {\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n this.pressedCharacters += key;\n this.handleFilter();\n\n if (!this.noOptions) {\n this.emitImmediateIcChange(this.filteredOptions[0].value);\n }\n } else {\n this.pressedCharacters = \"\";\n }\n };\n\n private handleNativeSelectKeyDown = (event: KeyboardEvent) => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n this.handleCharacterKeyDown(event.key);\n };\n\n private handleKeyDown = (event: KeyboardEvent): void => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n const isArrowKey = event.key === \"ArrowDown\" || event.key === \"ArrowUp\";\n\n if (!this.open) {\n if (this.isExternalFiltering() && (event.key === \"Enter\" || isArrowKey)) {\n this.menu.options = this.filteredOptions;\n } else {\n if (!this.hasTimedOut) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n }\n\n if (this.open && event.key === \"Enter\") {\n this.setMenuChange(false);\n } else {\n if (!(isArrowKey && this.noOptions !== null)) {\n if (!(event.key === \" \" && this.pressedCharacters.length > 0)) {\n // Keyboard events get passed onto ic-menu\n this.menu.handleKeyboardOpen(event);\n }\n this.handleCharacterKeyDown(event.key);\n }\n }\n };\n\n private handleClearButtonFocus = (): void => {\n this.clearButtonFocused = true;\n };\n\n private handleClearButtonBlur = (ev: FocusEvent): void => {\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n if (\n !(\n this.searchableSelectElement &&\n ev.relatedTarget === this.searchableSelectElement\n ) &&\n !(retryButton && ev.relatedTarget === retryButton)\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n }\n this.clearButtonFocused = false;\n };\n\n private handleFilter = (): void => {\n const options = this.deduplicateOptions(\n this.searchable ? [...this.uniqueOptions] : this.ungroupedOptions\n );\n\n let isGrouped = false;\n let newFilteredOptions: IcMenuOption[] = [];\n\n options.map((option) => {\n if (option.children) isGrouped = true;\n });\n\n let menuOptionsFiltered: IcMenuOption[];\n\n if (this.searchable) {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n this.includeDescriptionsInSearch,\n this.inputValueToFilter,\n this.searchMatchPosition\n );\n this.searchableMenuItemSelected = false;\n } else {\n menuOptionsFiltered = getFilteredMenuOptions(\n options,\n false,\n this.pressedCharacters,\n \"start\"\n );\n }\n\n if (\n !isGrouped &&\n menuOptionsFiltered[0]?.label !== this.emptyOptionListText\n ) {\n newFilteredOptions = menuOptionsFiltered;\n } else if (isGrouped) {\n options.map((option) => {\n if (this.includeGroupTitlesInSearch) {\n if (menuOptionsFiltered.indexOf(option) !== -1) {\n newFilteredOptions.push(option);\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n } else {\n newFilteredOptions.push(this.getFilteredChildMenuOptions(option));\n }\n });\n }\n\n let noChildOptionsWhenFiltered = false;\n\n if (isGrouped) {\n noChildOptionsWhenFiltered = true;\n newFilteredOptions.map((option) => {\n if (option.children.length > 0) {\n noChildOptionsWhenFiltered = false;\n }\n });\n }\n\n if (newFilteredOptions.length > 0 && !noChildOptionsWhenFiltered) {\n this.noOptions = null;\n this.filteredOptions = newFilteredOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.filteredOptions = this.noOptions;\n }\n };\n\n /**\n * Put the select component into loading state.\n * Replace options with the loading message. If timeout is enabled, set the timeout and once passed, replace options with the loading error message\n */\n private triggerLoading = () => {\n this.hasTimedOut = false;\n this.noOptions = [{ label: this.loadingLabel, value: \"\", loading: true }];\n if (this.filteredOptions !== this.noOptions && this.searchable) {\n this.filteredOptions = this.noOptions;\n } else if (this.uniqueOptions !== this.noOptions && !this.searchable) {\n this.uniqueOptions = this.noOptions;\n }\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n this.noOptions = [\n { label: this.loadingErrorLabel, value: \"\", timedOut: true },\n ];\n this.filteredOptions = this.noOptions;\n if (!this.searchable) this.uniqueOptions = this.noOptions;\n }, this.timeout);\n }\n };\n\n private getValueFromLabel = (label: string): string | undefined => {\n return this.uniqueOptions.find((option) => option.label === label)?.value;\n };\n\n private handleSearchableSelectInput = (event: Event): void => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n this.icInput.emit({ value: this.searchableSelectInputValue });\n this.emitIcChange(this.searchableSelectInputValue);\n\n this.hiddenInputValue = this.searchableSelectInputValue;\n this.inputValueToFilter = this.searchableSelectInputValue;\n this.setMenuChange(true);\n\n if (!this.disableAutoFiltering) {\n this.handleFilter();\n this.debounceAriaLiveUpdate();\n }\n };\n\n private updateSearchableSelectResultAriaLive = (): void => {\n const searchableSelectResultsStatusEl = this.el.shadowRoot.querySelector(\n \".searchable-select-results-status\"\n ) as HTMLDivElement;\n\n if (searchableSelectResultsStatusEl) {\n if (this.noOptions !== null) {\n searchableSelectResultsStatusEl.innerText = this.emptyOptionListText;\n } else {\n searchableSelectResultsStatusEl.innerText = \"\";\n }\n }\n };\n\n private debounceAriaLiveUpdate() {\n clearTimeout(this.debounceAria);\n\n window.setTimeout(() => {\n this.updateSearchableSelectResultAriaLive();\n }, 800);\n }\n\n private getDefaultValue = (value: string): string | null =>\n this.getLabelFromValue(value) || value || null;\n\n private setDefaultValue() {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue = this.getDefaultValue(this.currValue);\n this.initialValue = this.currValue;\n this.hasSetDefaultValue = true;\n }\n }\n\n private onFocus = (): void => {\n this.icFocus.emit();\n };\n\n private onBlur = ({ relatedTarget }: FocusEvent): void => {\n const target = relatedTarget as HTMLElement;\n if (\n target !== null &&\n ((target.tagName === \"UL\" && target.className.includes(\"menu\")) ||\n (target.tagName === \"LI\" && target.className.includes(\"option\")))\n ) {\n return;\n }\n\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n const isSearchableAndNoFocusedInternalElements =\n this.searchable &&\n !!this.menu &&\n target !== this.menu &&\n !Array.from(this.menu.querySelectorAll(\"[role='option']\")).includes(\n target\n ) &&\n !(this.clearButton && target === this.clearButton) &&\n !(retryButton && target === retryButton);\n\n if (isSearchableAndNoFocusedInternalElements) {\n if (!this.retryButtonClick) {\n this.setMenuChange(false);\n }\n this.handleFocusIndicatorDisplay();\n }\n\n this.retryButtonClick = false;\n this.icBlur.emit();\n };\n\n private onTimeoutBlur = (ev: CustomEvent) => {\n if (\n (ev.detail.ev as FocusEvent).relatedTarget !==\n this.searchableSelectElement &&\n !this.blurredBecauseButtonPressed\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n this.icBlur.emit();\n }\n this.blurredBecauseButtonPressed = false;\n };\n\n private handleFormReset = (): void => {\n this.value = this.initialValue;\n if (this.searchable) {\n this.searchableSelectInputValue = this.getDefaultValue(this.value);\n this.hiddenInputValue = this.value;\n }\n };\n\n render() {\n const {\n size,\n disabled,\n fullWidth,\n helperText,\n hideLabel,\n label,\n menuId,\n name,\n options,\n placeholder,\n readonly,\n required,\n searchable,\n showClearButton,\n validationStatus,\n validationText,\n currValue,\n } = this;\n\n renderHiddenInput(\n true,\n this.el,\n name,\n this.searchable ? this.hiddenInputValue : currValue,\n disabled\n );\n\n const invalid =\n validationStatus === IcInformationStatus.Error ? \"true\" : \"false\";\n\n const describedBy = getInputDescribedByText(\n this.inputId,\n helperText !== \"\",\n hasValidationStatus(this.validationStatus, this.disabled)\n ).trim();\n\n let showLeftIcon = !!this.el.querySelector(`[slot=\"icon\"]`);\n if (showLeftIcon && (disabled || (readonly && !this.value))) {\n showLeftIcon = false;\n }\n\n return (\n <Host\n class={{\n [\"ic-select-disabled\"]: disabled,\n [\"ic-select-searchable\"]: searchable,\n [`ic-select-${size}`]: size !== \"medium\",\n [\"ic-select-full-width\"]: fullWidth,\n }}\n onBlur={this.onBlur}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={this.inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n ></ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": this.open }}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {showLeftIcon && (\n <span\n slot=\"left-icon\"\n class={{\n [\"readonly\"]: readonly,\n [\"has-value\"]: !!this.value,\n }}\n >\n <slot name=\"icon\" />\n </span>\n )}\n {readonly ? (\n <ic-typography>\n <p>{this.getLabelFromValue(currValue)}</p>\n </ic-typography>\n ) : isMobileOrTablet() ? (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={this.inputId}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onKeyDown={this.handleNativeSelectKeyDown}\n form={this.form}\n {...this.inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options.map((option) => {\n if (option.children) {\n return (\n <optgroup label={option.label}>\n {option.children.map((option) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n ))}\n </optgroup>\n );\n } else {\n return (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === currValue}\n >\n {option.label}\n </option>\n );\n }\n })}\n </select>\n ) : searchable ? (\n <div class=\"searchable-select-container\">\n <input\n class=\"select-input\"\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={this.ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-invalid={invalid}\n aria-required={required ? \"true\" : \"false\"}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={this.inputId}\n value={this.searchableSelectInputValue}\n placeholder={placeholder}\n disabled={disabled}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n form={this.form}\n ></input>\n {this.searchableSelectInputValue &&\n (showClearButton || searchable) && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el) => (this.clearButton = el)}\n aria-label={\n this.searchableSelectInputValue && currValue === null\n ? \"Clear input\"\n : \"Clear selection\"\n }\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n \"expand-icon-filled\": !(\n currValue == null || currValue === \"\"\n ),\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"searchable-select-results-status\"\n ></div>\n </div>\n ) : (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n ref={(el) => (this.customSelectElement = el)}\n id={this.inputId}\n aria-label={`${label}, ${\n this.getLabelFromValue(currValue) || placeholder\n }${required ? \", required\" : \"\"}`}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-haspopup=\"listbox\"\n aria-expanded={this.open ? \"true\" : \"false\"}\n aria-owns={menuId}\n aria-controls={menuId}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.handleClick}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleKeyDown}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n placeholder:\n this.getLabelFromValue(currValue) === undefined,\n }}\n >\n {this.getLabelFromValue(currValue) || placeholder}\n </ic-typography>\n <div class=\"select-input-end\">\n {currValue && showClearButton && (\n <div class=\"divider\"></div>\n )}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": this.open,\n \"expand-icon-filled\": !(\n currValue == null || currValue === \"\"\n ),\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {currValue && showClearButton && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear selection\"\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n appearance={\n this.clearButtonFocused\n ? IcThemeForegroundEnum.Light\n : IcThemeForegroundEnum.Dark\n }\n ></ic-button>\n )}\n </div>\n )}\n </ic-input-component-container>\n {!isMobileOrTablet() && (\n <ic-menu\n class={{\n \"no-results\":\n this.loading ||\n this.hasTimedOut ||\n (this.noOptions !== null &&\n this.noOptions[0] &&\n this.noOptions[0].label === this.emptyOptionListText),\n }}\n ref={(el) => (this.menu = el)}\n inputEl={\n searchable\n ? this.searchableSelectElement\n : this.customSelectElement\n }\n inputLabel={label}\n anchorEl={this.anchorEl}\n size={size}\n menuId={menuId}\n open={this.open}\n options={searchable ? this.filteredOptions : this.uniqueOptions}\n value={currValue}\n fullWidth={fullWidth}\n selectOnEnter={this.selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleCustomSelectChange}\n onMenuKeyPress={this.handleMenuKeyPress}\n onMenuValueChange={this.handleMenuValueChange}\n onUngroupedOptionsSet={this.setUngroupedOptions}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n onTimeoutBlur={this.onTimeoutBlur}\n activationType={\n this.searchable || this.selectOnEnter ? \"manual\" : \"automatic\"\n }\n ></ic-menu>\n )}\n {hasValidationStatus(this.validationStatus, this.disabled) && (\n <ic-input-validation\n class={{ \"menu-open\": this.open }}\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText}\n for={this.inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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"}