@ukic/web-components 3.10.0 → 3.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (645) hide show
  1. package/dist/cjs/constants-8354f6e6.js +189 -0
  2. package/dist/cjs/constants-8354f6e6.js.map +1 -0
  3. package/dist/cjs/core.cjs.js +1 -1
  4. package/dist/cjs/{helpers-a0e78e2e.js → helpers-ffe1c2d9.js} +6 -187
  5. package/dist/cjs/helpers-ffe1c2d9.js.map +1 -0
  6. package/dist/cjs/ic-accordion-group.cjs.entry.js +2 -1
  7. package/dist/cjs/ic-accordion-group.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-accordion.cjs.entry.js +2 -1
  9. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-action-chip.cjs.entry.js +2 -1
  11. package/dist/cjs/ic-action-chip.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-alert.cjs.entry.js +4 -3
  13. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-back-to-top.cjs.entry.js +2 -1
  15. package/dist/cjs/ic-back-to-top.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-badge.cjs.entry.js +2 -1
  17. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +2 -1
  19. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-breadcrumb.cjs.entry.js +2 -1
  21. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-button_3.cjs.entry.js +27 -20
  23. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-card-vertical.cjs.entry.js +2 -1
  25. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-checkbox-group.cjs.entry.js +4 -3
  27. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-checkbox.cjs.entry.js +5 -4
  29. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  30. package/dist/cjs/ic-chip.cjs.entry.js +2 -1
  31. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
  33. package/dist/cjs/ic-data-row.cjs.entry.js +4 -3
  34. package/dist/cjs/ic-data-row.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-dialog.cjs.entry.js +7 -4
  36. package/dist/cjs/ic-dialog.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-divider.cjs.entry.js +2 -1
  38. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-empty-state.cjs.entry.js +4 -3
  40. package/dist/cjs/ic-empty-state.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-footer-link-group.cjs.entry.js +2 -1
  42. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-footer-link.cjs.entry.js +4 -3
  44. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-footer.cjs.entry.js +10 -9
  46. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  47. package/dist/cjs/ic-hero.cjs.entry.js +6 -5
  48. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +7 -6
  50. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +12 -11
  52. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-input-label_2.cjs.entry.js +26 -12
  54. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-layout-grid-item.cjs.entry.js +2 -2
  56. package/dist/cjs/ic-layout-grid.cjs.entry.js +2 -2
  57. package/dist/cjs/ic-link.cjs.entry.js +5 -4
  58. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-menu-group.cjs.entry.js +3 -2
  60. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-menu-item.cjs.entry.js +2 -1
  62. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-navigation-button.cjs.entry.js +3 -2
  64. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-navigation-group.cjs.entry.js +3 -2
  66. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  67. package/dist/cjs/ic-navigation-item.cjs.entry.js +2 -1
  68. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  69. package/dist/cjs/ic-navigation-menu.cjs.entry.js +6 -5
  70. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  71. package/dist/cjs/ic-page-header.cjs.entry.js +8 -7
  72. package/dist/cjs/ic-page-header.cjs.entry.js.map +1 -1
  73. package/dist/cjs/ic-pagination-item.cjs.entry.js +3 -2
  74. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  75. package/dist/cjs/ic-pagination.cjs.entry.js +6 -5
  76. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-popover-menu.cjs.entry.js +6 -5
  78. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  79. package/dist/cjs/ic-radio-group.cjs.entry.js +6 -5
  80. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-radio-option.cjs.entry.js +6 -5
  82. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-search-bar.cjs.entry.js +11 -10
  84. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
  86. package/dist/cjs/ic-select.cjs.entry.js +12 -11
  87. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-side-navigation.cjs.entry.js +6 -5
  89. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
  91. package/dist/cjs/ic-skip-link.cjs.entry.js +2 -2
  92. package/dist/cjs/ic-status-tag.cjs.entry.js +4 -3
  93. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  94. package/dist/cjs/ic-step.cjs.entry.js +15 -14
  95. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  96. package/dist/cjs/ic-stepper.cjs.entry.js +4 -3
  97. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  98. package/dist/cjs/ic-switch.cjs.entry.js +6 -5
  99. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  100. package/dist/cjs/ic-tab-context.cjs.entry.js +10 -2
  101. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  102. package/dist/cjs/ic-tab-group.cjs.entry.js +4 -3
  103. package/dist/cjs/ic-tab-group.cjs.entry.js.map +1 -1
  104. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  105. package/dist/cjs/ic-tab.cjs.entry.js +2 -1
  106. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  107. package/dist/cjs/ic-text-field.cjs.entry.js +32 -23
  108. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  109. package/dist/cjs/ic-theme.cjs.entry.js +5 -4
  110. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  111. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  112. package/dist/cjs/ic-toast.cjs.entry.js +7 -6
  113. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  114. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +4 -3
  115. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  116. package/dist/cjs/ic-toggle-button.cjs.entry.js +4 -3
  117. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  118. package/dist/cjs/ic-top-navigation.cjs.entry.js +2 -1
  119. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  120. package/dist/cjs/ic-typography.cjs.entry.js +4 -3
  121. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  122. package/dist/cjs/index.cjs.js +15 -0
  123. package/dist/cjs/index.cjs.js.map +1 -1
  124. package/dist/cjs/loader.cjs.js +1 -1
  125. package/dist/collection/assets/ai-icon.svg +1 -1
  126. package/dist/collection/assets/error-icon.svg +4 -4
  127. package/dist/collection/assets/info-icon.svg +4 -4
  128. package/dist/collection/assets/neutral-icon.svg +4 -4
  129. package/dist/collection/assets/success-icon.svg +4 -4
  130. package/dist/collection/assets/warning-icon.svg +4 -4
  131. package/dist/collection/components/ic-alert/ic-alert.js +1 -1
  132. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  133. package/dist/collection/components/ic-button/ic-button.js +14 -8
  134. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  135. package/dist/collection/components/ic-button/ic-button.stories.js +191 -0
  136. package/dist/collection/components/ic-card-vertical/ic-card-vertical.stories.js +10 -10
  137. package/dist/collection/components/ic-checkbox/ic-checkbox.css +5 -0
  138. package/dist/collection/components/ic-checkbox/ic-checkbox.js +2 -2
  139. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  140. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +2 -2
  141. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.stories.js +11 -28
  142. package/dist/collection/components/ic-data-list/ic-data-list.js +2 -2
  143. package/dist/collection/components/ic-data-list/ic-data-list.stories.js +30 -6
  144. package/dist/collection/components/ic-data-row/ic-data-row.js +2 -2
  145. package/dist/collection/components/ic-dialog/ic-dialog.js +5 -3
  146. package/dist/collection/components/ic-dialog/ic-dialog.js.map +1 -1
  147. package/dist/collection/components/ic-dialog/ic-dialog.stories.js +40 -1
  148. package/dist/collection/components/ic-empty-state/ic-empty-state.js +2 -2
  149. package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
  150. package/dist/collection/components/ic-hero/ic-hero.js +4 -4
  151. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +5 -5
  152. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -3
  153. package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
  154. package/dist/collection/components/ic-input-label/ic-input-label.js +2 -2
  155. package/dist/collection/components/ic-input-validation/ic-input-validation.css +5 -0
  156. package/dist/collection/components/ic-input-validation/ic-input-validation.js +22 -6
  157. package/dist/collection/components/ic-input-validation/ic-input-validation.js.map +1 -1
  158. package/dist/collection/components/ic-input-validation/ic-input-validation.types.js.map +1 -1
  159. package/dist/collection/components/ic-layout-grid/ic-layout-grid.js +2 -2
  160. package/dist/collection/components/ic-layout-grid-item/ic-layout-grid-item.js +2 -2
  161. package/dist/collection/components/ic-link/ic-link.js +1 -1
  162. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +5 -5
  163. package/dist/collection/components/ic-menu/ic-menu.css +2 -2
  164. package/dist/collection/components/ic-menu/ic-menu.js +4 -4
  165. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  166. package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
  167. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +1 -1
  168. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -4
  169. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js.map +1 -1
  170. package/dist/collection/components/ic-page-header/ic-page-header.js +6 -6
  171. package/dist/collection/components/ic-pagination/ic-pagination.js +4 -4
  172. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +1 -1
  173. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +4 -4
  174. package/dist/collection/components/ic-radio-group/ic-radio-group.js +4 -4
  175. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  176. package/dist/collection/components/ic-radio-group/ic-radio-group.stories.js +14 -15
  177. package/dist/collection/components/ic-radio-option/ic-radio-option.js +4 -4
  178. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  179. package/dist/collection/components/ic-search-bar/ic-search-bar.js +9 -9
  180. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  181. package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
  182. package/dist/collection/components/ic-select/ic-select.js +9 -9
  183. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  184. package/dist/collection/components/ic-select/ic-select_(multi).stories.js +8 -6
  185. package/dist/collection/components/ic-select/ic-select_(searchable).stories.js +6 -3
  186. package/dist/collection/components/ic-select/ic-select_(single).stories.js +8 -6
  187. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js +60 -0
  188. package/dist/collection/components/ic-select/test/a11y/ic-select.test.a11y.js.map +1 -0
  189. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +4 -4
  190. package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
  191. package/dist/collection/components/ic-skip-link/ic-skip-link.js +2 -2
  192. package/dist/collection/components/ic-status-tag/ic-status-tag.js +2 -2
  193. package/dist/collection/components/ic-step/ic-step.js +13 -13
  194. package/dist/collection/components/ic-stepper/ic-stepper.js +2 -2
  195. package/dist/collection/components/ic-switch/ic-switch.js +4 -4
  196. package/dist/collection/components/ic-tab-context/ic-tab-context.js +27 -2
  197. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  198. package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -2
  199. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
  200. package/dist/collection/components/ic-text-field/ic-text-field.css +4 -0
  201. package/dist/collection/components/ic-text-field/ic-text-field.js +53 -19
  202. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  203. package/dist/collection/components/ic-text-field/ic-text-field.stories.js +102 -4
  204. package/dist/collection/components/ic-theme/ic-theme.js +1 -1
  205. package/dist/collection/components/ic-toast/ic-toast.js +3 -3
  206. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  207. package/dist/collection/components/ic-toast-region/ic-toast-region.js +1 -1
  208. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +2 -2
  209. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js.map +1 -1
  210. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +2 -2
  211. package/dist/collection/components/ic-tooltip/ic-tooltip.js +6 -4
  212. package/dist/collection/components/ic-tooltip/ic-tooltip.js.map +1 -1
  213. package/dist/collection/components/ic-typography/ic-typography.js +2 -2
  214. package/dist/collection/index.js +1 -1
  215. package/dist/collection/index.js.map +1 -1
  216. package/dist/collection/utils/types.js.map +1 -1
  217. package/dist/components/constants.js +176 -0
  218. package/dist/components/constants.js.map +1 -0
  219. package/dist/components/helpers.js +2 -174
  220. package/dist/components/helpers.js.map +1 -1
  221. package/dist/components/ic-action-chip.js +1 -1
  222. package/dist/components/ic-alert.js +3 -2
  223. package/dist/components/ic-alert.js.map +1 -1
  224. package/dist/components/ic-back-to-top.js +1 -1
  225. package/dist/components/ic-badge.js +1 -1
  226. package/dist/components/ic-breadcrumb-group.js +1 -1
  227. package/dist/components/ic-breadcrumb2.js +1 -1
  228. package/dist/components/ic-button2.js +17 -11
  229. package/dist/components/ic-button2.js.map +1 -1
  230. package/dist/components/ic-card-vertical.js +1 -1
  231. package/dist/components/ic-checkbox-group.js +3 -3
  232. package/dist/components/ic-checkbox.js +4 -4
  233. package/dist/components/ic-checkbox.js.map +1 -1
  234. package/dist/components/ic-chip.js +1 -1
  235. package/dist/components/ic-data-list.js +2 -2
  236. package/dist/components/ic-data-row.js +3 -3
  237. package/dist/components/ic-dialog.js +6 -4
  238. package/dist/components/ic-dialog.js.map +1 -1
  239. package/dist/components/ic-divider2.js +1 -1
  240. package/dist/components/ic-empty-state.js +3 -3
  241. package/dist/components/ic-footer-link-group.js +1 -1
  242. package/dist/components/ic-footer-link.js +3 -3
  243. package/dist/components/ic-footer.js +2 -1
  244. package/dist/components/ic-footer.js.map +1 -1
  245. package/dist/components/ic-hero.js +5 -5
  246. package/dist/components/ic-horizontal-scroll2.js +6 -6
  247. package/dist/components/ic-input-component-container2.js +5 -4
  248. package/dist/components/ic-input-component-container2.js.map +1 -1
  249. package/dist/components/ic-input-container2.js +2 -2
  250. package/dist/components/ic-input-label2.js +3 -3
  251. package/dist/components/ic-input-validation2.js +23 -7
  252. package/dist/components/ic-input-validation2.js.map +1 -1
  253. package/dist/components/ic-layout-grid-item.js +2 -2
  254. package/dist/components/ic-layout-grid.js +2 -2
  255. package/dist/components/ic-link2.js +3 -2
  256. package/dist/components/ic-link2.js.map +1 -1
  257. package/dist/components/ic-loading-indicator2.js +5 -5
  258. package/dist/components/ic-menu-group.js +2 -2
  259. package/dist/components/ic-menu-item2.js +1 -1
  260. package/dist/components/ic-menu2.js +6 -6
  261. package/dist/components/ic-menu2.js.map +1 -1
  262. package/dist/components/ic-navigation-button.js +2 -1
  263. package/dist/components/ic-navigation-button.js.map +1 -1
  264. package/dist/components/ic-navigation-group.js +2 -2
  265. package/dist/components/ic-navigation-item.js +1 -1
  266. package/dist/components/ic-navigation-menu2.js +5 -5
  267. package/dist/components/ic-navigation-menu2.js.map +1 -1
  268. package/dist/components/ic-page-header.js +7 -7
  269. package/dist/components/ic-pagination-item2.js +2 -2
  270. package/dist/components/ic-pagination.js +4 -4
  271. package/dist/components/ic-popover-menu.js +5 -5
  272. package/dist/components/ic-popover-menu.js.map +1 -1
  273. package/dist/components/ic-radio-group.js +5 -5
  274. package/dist/components/ic-radio-group.js.map +1 -1
  275. package/dist/components/ic-radio-option.js +5 -5
  276. package/dist/components/ic-radio-option.js.map +1 -1
  277. package/dist/components/ic-search-bar.js +10 -10
  278. package/dist/components/ic-search-bar.js.map +1 -1
  279. package/dist/components/ic-section-container2.js +2 -2
  280. package/dist/components/ic-select.js +11 -10
  281. package/dist/components/ic-select.js.map +1 -1
  282. package/dist/components/ic-side-navigation.js +5 -5
  283. package/dist/components/ic-side-navigation.js.map +1 -1
  284. package/dist/components/ic-skeleton.js +2 -2
  285. package/dist/components/ic-skip-link.js +2 -2
  286. package/dist/components/ic-status-tag.js +2 -2
  287. package/dist/components/ic-step.js +14 -14
  288. package/dist/components/ic-step.js.map +1 -1
  289. package/dist/components/ic-stepper.js +2 -2
  290. package/dist/components/ic-switch.js +5 -5
  291. package/dist/components/ic-tab-context.js +11 -2
  292. package/dist/components/ic-tab-context.js.map +1 -1
  293. package/dist/components/ic-tab-group.js +2 -2
  294. package/dist/components/ic-tab-panel.js +2 -2
  295. package/dist/components/ic-text-field.js +31 -21
  296. package/dist/components/ic-text-field.js.map +1 -1
  297. package/dist/components/ic-theme.js +3 -2
  298. package/dist/components/ic-theme.js.map +1 -1
  299. package/dist/components/ic-toast-region.js +1 -1
  300. package/dist/components/ic-toast.js +5 -4
  301. package/dist/components/ic-toast.js.map +1 -1
  302. package/dist/components/ic-toggle-button-group.js +2 -2
  303. package/dist/components/ic-toggle-button.js +3 -3
  304. package/dist/components/ic-toggle-button.js.map +1 -1
  305. package/dist/components/ic-tooltip2.js +6 -4
  306. package/dist/components/ic-tooltip2.js.map +1 -1
  307. package/dist/components/ic-top-navigation.js +1 -1
  308. package/dist/components/ic-typography2.js +2 -2
  309. package/dist/components/index.js +1 -0
  310. package/dist/components/index.js.map +1 -1
  311. package/dist/core/core.css +32 -4
  312. package/dist/core/core.esm.js +1 -1
  313. package/dist/core/core.esm.js.map +1 -1
  314. package/dist/core/index.esm.js +1 -1
  315. package/dist/core/p-01aeffca.entry.js +2 -0
  316. package/dist/core/{p-b52000d9.entry.js.map → p-01aeffca.entry.js.map} +1 -1
  317. package/dist/core/p-0201abbf.entry.js +2 -0
  318. package/dist/core/{p-ea778379.entry.js.map → p-0201abbf.entry.js.map} +1 -1
  319. package/dist/core/p-02c2c31f.entry.js +2 -0
  320. package/dist/core/{p-6a576a8b.entry.js.map → p-02c2c31f.entry.js.map} +1 -1
  321. package/dist/core/p-0809aff4.entry.js +2 -0
  322. package/dist/core/{p-1e2f40b0.entry.js.map → p-0809aff4.entry.js.map} +1 -1
  323. package/dist/core/p-19366be6.entry.js +2 -0
  324. package/dist/core/{p-19cf2327.entry.js.map → p-19366be6.entry.js.map} +1 -1
  325. package/dist/core/p-1ab63899.entry.js +2 -0
  326. package/dist/core/{p-ef4b5469.entry.js.map → p-1ab63899.entry.js.map} +1 -1
  327. package/dist/core/p-1d4dfef1.entry.js +2 -0
  328. package/dist/core/{p-661ae402.entry.js.map → p-1d4dfef1.entry.js.map} +1 -1
  329. package/dist/core/p-1dab47b1.entry.js +2 -0
  330. package/dist/core/{p-72a9909c.entry.js.map → p-1dab47b1.entry.js.map} +1 -1
  331. package/dist/core/p-23b223bf.entry.js +2 -0
  332. package/dist/core/{p-f309d3af.entry.js.map → p-23b223bf.entry.js.map} +1 -1
  333. package/dist/core/p-35ee7c53.entry.js +2 -0
  334. package/dist/core/{p-9eeb5e85.entry.js.map → p-35ee7c53.entry.js.map} +1 -1
  335. package/dist/core/{p-287e5c17.entry.js → p-37d217b5.entry.js} +2 -2
  336. package/dist/core/{p-df88ff5b.entry.js → p-37daa8fe.entry.js} +2 -2
  337. package/dist/core/p-3a78bf6e.entry.js +2 -0
  338. package/dist/core/{p-2f4f392f.entry.js.map → p-3a78bf6e.entry.js.map} +1 -1
  339. package/dist/core/p-3f55bb5b.entry.js +2 -0
  340. package/dist/core/{p-0c0c6a9e.entry.js.map → p-3f55bb5b.entry.js.map} +1 -1
  341. package/dist/core/p-402813c9.entry.js +2 -0
  342. package/dist/core/{p-9323c234.entry.js.map → p-402813c9.entry.js.map} +1 -1
  343. package/dist/core/p-402c2455.entry.js +2 -0
  344. package/dist/core/{p-bb4ce810.entry.js.map → p-402c2455.entry.js.map} +1 -1
  345. package/dist/core/p-46423f42.entry.js +2 -0
  346. package/dist/core/{p-b0d488d0.entry.js.map → p-46423f42.entry.js.map} +1 -1
  347. package/dist/core/{p-45dd12ee.entry.js → p-4747c39f.entry.js} +2 -2
  348. package/dist/core/p-4747c39f.entry.js.map +1 -0
  349. package/dist/core/{p-ffac41d6.entry.js → p-492fcb51.entry.js} +2 -2
  350. package/dist/core/p-4a2c02b2.entry.js +2 -0
  351. package/dist/core/{p-711bfeed.entry.js.map → p-4a2c02b2.entry.js.map} +1 -1
  352. package/dist/core/p-4dd8add9.entry.js +2 -0
  353. package/dist/core/{p-6ed0ac48.entry.js.map → p-4dd8add9.entry.js.map} +1 -1
  354. package/dist/core/p-515ded3f.entry.js +2 -0
  355. package/dist/core/{p-41f92698.entry.js.map → p-515ded3f.entry.js.map} +1 -1
  356. package/dist/core/p-52a2f800.entry.js +2 -0
  357. package/dist/core/p-52a2f800.entry.js.map +1 -0
  358. package/dist/core/{p-6e8ef73c.entry.js → p-57721431.entry.js} +2 -2
  359. package/dist/core/p-57803949.entry.js +2 -0
  360. package/dist/core/{p-f6a02202.entry.js.map → p-57803949.entry.js.map} +1 -1
  361. package/dist/core/p-58b8d154.entry.js +2 -0
  362. package/dist/core/{p-cbe0d1bb.entry.js.map → p-58b8d154.entry.js.map} +1 -1
  363. package/dist/core/p-5c6efed3.entry.js +2 -0
  364. package/dist/core/{p-3dc54847.entry.js.map → p-5c6efed3.entry.js.map} +1 -1
  365. package/dist/core/{p-5fbc8e62.entry.js → p-5fcfcfb6.entry.js} +2 -2
  366. package/dist/core/p-641c26c4.js +2 -0
  367. package/dist/core/p-641c26c4.js.map +1 -0
  368. package/dist/core/p-65a3c216.entry.js +2 -0
  369. package/dist/core/{p-15dbccc2.entry.js.map → p-65a3c216.entry.js.map} +1 -1
  370. package/dist/core/p-69412f61.entry.js +2 -0
  371. package/dist/core/{p-21cf2beb.entry.js.map → p-69412f61.entry.js.map} +1 -1
  372. package/dist/core/p-69cc0f7d.entry.js +2 -0
  373. package/dist/core/{p-6014ab64.entry.js.map → p-69cc0f7d.entry.js.map} +1 -1
  374. package/dist/core/p-6ceedfa8.js +2 -0
  375. package/dist/core/p-6ceedfa8.js.map +1 -0
  376. package/dist/core/p-75a9b2e4.entry.js +2 -0
  377. package/dist/core/p-75a9b2e4.entry.js.map +1 -0
  378. package/dist/core/p-75e0278a.entry.js +2 -0
  379. package/dist/core/{p-4ca782eb.entry.js.map → p-75e0278a.entry.js.map} +1 -1
  380. package/dist/core/p-8326db29.entry.js +2 -0
  381. package/dist/core/{p-3e5d7a3d.entry.js.map → p-8326db29.entry.js.map} +1 -1
  382. package/dist/core/p-8af9413c.entry.js +2 -0
  383. package/dist/core/p-8af9413c.entry.js.map +1 -0
  384. package/dist/core/p-8d1fbbeb.entry.js +2 -0
  385. package/dist/core/{p-7cd4f6a6.entry.js.map → p-8d1fbbeb.entry.js.map} +1 -1
  386. package/dist/core/p-8d29c0fa.entry.js +2 -0
  387. package/dist/core/{p-52748d5c.entry.js.map → p-8d29c0fa.entry.js.map} +1 -1
  388. package/dist/core/{p-ea061ccf.entry.js → p-9a8bcb78.entry.js} +2 -2
  389. package/dist/core/{p-8b5022bc.entry.js → p-9cf6ccfd.entry.js} +2 -2
  390. package/dist/core/p-a468df37.entry.js +2 -0
  391. package/dist/core/{p-fc3b1155.entry.js.map → p-a468df37.entry.js.map} +1 -1
  392. package/dist/core/p-a48b581a.entry.js +2 -0
  393. package/dist/core/{p-9f36791b.entry.js.map → p-a48b581a.entry.js.map} +1 -1
  394. package/dist/core/p-a4e67ab8.entry.js +2 -0
  395. package/dist/core/{p-4d1a3036.entry.js.map → p-a4e67ab8.entry.js.map} +1 -1
  396. package/dist/core/p-aab838e5.entry.js +2 -0
  397. package/dist/core/{p-9c013333.entry.js.map → p-aab838e5.entry.js.map} +1 -1
  398. package/dist/core/p-abb9dccb.entry.js +2 -0
  399. package/dist/core/{p-af9c391d.entry.js.map → p-abb9dccb.entry.js.map} +1 -1
  400. package/dist/core/{p-999f0a5d.entry.js → p-b4a2f6fa.entry.js} +2 -2
  401. package/dist/core/p-b80d408f.entry.js +2 -0
  402. package/dist/core/p-b80d408f.entry.js.map +1 -0
  403. package/dist/core/p-b9018261.entry.js +2 -0
  404. package/dist/core/{p-0d680d19.entry.js.map → p-b9018261.entry.js.map} +1 -1
  405. package/dist/core/p-c81ffadd.entry.js +2 -0
  406. package/dist/core/{p-595a4d06.entry.js.map → p-c81ffadd.entry.js.map} +1 -1
  407. package/dist/core/p-cd63bcf2.entry.js +2 -0
  408. package/dist/core/p-cd63bcf2.entry.js.map +1 -0
  409. package/dist/core/p-cdd04ec2.entry.js +2 -0
  410. package/dist/core/{p-41ef74a7.entry.js.map → p-cdd04ec2.entry.js.map} +1 -1
  411. package/dist/core/p-d27e46ac.entry.js +2 -0
  412. package/dist/core/{p-cf631191.entry.js.map → p-d27e46ac.entry.js.map} +1 -1
  413. package/dist/core/p-d35f8bd4.entry.js +2 -0
  414. package/dist/core/{p-493eaabb.entry.js.map → p-d35f8bd4.entry.js.map} +1 -1
  415. package/dist/core/p-d6b3e02f.entry.js +2 -0
  416. package/dist/core/p-d6b3e02f.entry.js.map +1 -0
  417. package/dist/core/p-d7bd5aa0.entry.js +2 -0
  418. package/dist/core/p-d7bd5aa0.entry.js.map +1 -0
  419. package/dist/core/p-ed69f110.entry.js +2 -0
  420. package/dist/core/p-ed69f110.entry.js.map +1 -0
  421. package/dist/core/p-eddc5517.entry.js +2 -0
  422. package/dist/core/{p-313a8a2f.entry.js.map → p-eddc5517.entry.js.map} +1 -1
  423. package/dist/core/p-f045f59d.entry.js +2 -0
  424. package/dist/core/{p-317e005f.entry.js.map → p-f045f59d.entry.js.map} +1 -1
  425. package/dist/core/p-f086d6df.entry.js +2 -0
  426. package/dist/core/{p-43324339.entry.js.map → p-f086d6df.entry.js.map} +1 -1
  427. package/dist/core/p-f17e1525.entry.js +2 -0
  428. package/dist/core/{p-a77364f5.entry.js.map → p-f17e1525.entry.js.map} +1 -1
  429. package/dist/core/p-f78f34ce.entry.js +2 -0
  430. package/dist/core/{p-1d37ac1c.entry.js.map → p-f78f34ce.entry.js.map} +1 -1
  431. package/dist/core/p-fd488ed7.entry.js +2 -0
  432. package/dist/core/{p-a602a8e1.entry.js.map → p-fd488ed7.entry.js.map} +1 -1
  433. package/dist/core/p-ffc608a1.entry.js +2 -0
  434. package/dist/core/{p-8a4b12e4.entry.js.map → p-ffc608a1.entry.js.map} +1 -1
  435. package/dist/esm/constants-48759bda.js +176 -0
  436. package/dist/esm/constants-48759bda.js.map +1 -0
  437. package/dist/esm/core.js +1 -1
  438. package/dist/esm/{helpers-56631aa0.js → helpers-d8189e9d.js} +3 -175
  439. package/dist/esm/helpers-d8189e9d.js.map +1 -0
  440. package/dist/esm/ic-accordion-group.entry.js +2 -1
  441. package/dist/esm/ic-accordion-group.entry.js.map +1 -1
  442. package/dist/esm/ic-accordion.entry.js +2 -1
  443. package/dist/esm/ic-accordion.entry.js.map +1 -1
  444. package/dist/esm/ic-action-chip.entry.js +2 -1
  445. package/dist/esm/ic-action-chip.entry.js.map +1 -1
  446. package/dist/esm/ic-alert.entry.js +3 -2
  447. package/dist/esm/ic-alert.entry.js.map +1 -1
  448. package/dist/esm/ic-back-to-top.entry.js +2 -1
  449. package/dist/esm/ic-back-to-top.entry.js.map +1 -1
  450. package/dist/esm/ic-badge.entry.js +2 -1
  451. package/dist/esm/ic-badge.entry.js.map +1 -1
  452. package/dist/esm/ic-breadcrumb-group.entry.js +2 -1
  453. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  454. package/dist/esm/ic-breadcrumb.entry.js +2 -1
  455. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  456. package/dist/esm/ic-button_3.entry.js +25 -18
  457. package/dist/esm/ic-button_3.entry.js.map +1 -1
  458. package/dist/esm/ic-card-vertical.entry.js +2 -1
  459. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  460. package/dist/esm/ic-checkbox-group.entry.js +4 -3
  461. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  462. package/dist/esm/ic-checkbox.entry.js +5 -4
  463. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  464. package/dist/esm/ic-chip.entry.js +2 -1
  465. package/dist/esm/ic-chip.entry.js.map +1 -1
  466. package/dist/esm/ic-data-list.entry.js +2 -2
  467. package/dist/esm/ic-data-row.entry.js +4 -3
  468. package/dist/esm/ic-data-row.entry.js.map +1 -1
  469. package/dist/esm/ic-dialog.entry.js +7 -4
  470. package/dist/esm/ic-dialog.entry.js.map +1 -1
  471. package/dist/esm/ic-divider.entry.js +2 -1
  472. package/dist/esm/ic-divider.entry.js.map +1 -1
  473. package/dist/esm/ic-empty-state.entry.js +4 -3
  474. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  475. package/dist/esm/ic-footer-link-group.entry.js +2 -1
  476. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  477. package/dist/esm/ic-footer-link.entry.js +4 -3
  478. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  479. package/dist/esm/ic-footer.entry.js +2 -1
  480. package/dist/esm/ic-footer.entry.js.map +1 -1
  481. package/dist/esm/ic-hero.entry.js +6 -5
  482. package/dist/esm/ic-hero.entry.js.map +1 -1
  483. package/dist/esm/ic-horizontal-scroll.entry.js +7 -6
  484. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  485. package/dist/esm/ic-input-component-container_3.entry.js +12 -11
  486. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  487. package/dist/esm/ic-input-label_2.entry.js +23 -9
  488. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  489. package/dist/esm/ic-layout-grid-item.entry.js +2 -2
  490. package/dist/esm/ic-layout-grid.entry.js +2 -2
  491. package/dist/esm/ic-link.entry.js +3 -2
  492. package/dist/esm/ic-link.entry.js.map +1 -1
  493. package/dist/esm/ic-menu-group.entry.js +3 -2
  494. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  495. package/dist/esm/ic-menu-item.entry.js +2 -1
  496. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  497. package/dist/esm/ic-navigation-button.entry.js +2 -1
  498. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  499. package/dist/esm/ic-navigation-group.entry.js +3 -2
  500. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  501. package/dist/esm/ic-navigation-item.entry.js +2 -1
  502. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  503. package/dist/esm/ic-navigation-menu.entry.js +6 -5
  504. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  505. package/dist/esm/ic-page-header.entry.js +8 -7
  506. package/dist/esm/ic-page-header.entry.js.map +1 -1
  507. package/dist/esm/ic-pagination-item.entry.js +3 -2
  508. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  509. package/dist/esm/ic-pagination.entry.js +6 -5
  510. package/dist/esm/ic-pagination.entry.js.map +1 -1
  511. package/dist/esm/ic-popover-menu.entry.js +6 -5
  512. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  513. package/dist/esm/ic-radio-group.entry.js +6 -5
  514. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  515. package/dist/esm/ic-radio-option.entry.js +6 -5
  516. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  517. package/dist/esm/ic-search-bar.entry.js +11 -10
  518. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  519. package/dist/esm/ic-section-container.entry.js +2 -2
  520. package/dist/esm/ic-select.entry.js +11 -10
  521. package/dist/esm/ic-select.entry.js.map +1 -1
  522. package/dist/esm/ic-side-navigation.entry.js +6 -5
  523. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  524. package/dist/esm/ic-skeleton.entry.js +2 -2
  525. package/dist/esm/ic-skip-link.entry.js +2 -2
  526. package/dist/esm/ic-status-tag.entry.js +4 -3
  527. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  528. package/dist/esm/ic-step.entry.js +15 -14
  529. package/dist/esm/ic-step.entry.js.map +1 -1
  530. package/dist/esm/ic-stepper.entry.js +4 -3
  531. package/dist/esm/ic-stepper.entry.js.map +1 -1
  532. package/dist/esm/ic-switch.entry.js +6 -5
  533. package/dist/esm/ic-switch.entry.js.map +1 -1
  534. package/dist/esm/ic-tab-context.entry.js +10 -2
  535. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  536. package/dist/esm/ic-tab-group.entry.js +4 -3
  537. package/dist/esm/ic-tab-group.entry.js.map +1 -1
  538. package/dist/esm/ic-tab-panel.entry.js +2 -2
  539. package/dist/esm/ic-tab.entry.js +2 -1
  540. package/dist/esm/ic-tab.entry.js.map +1 -1
  541. package/dist/esm/ic-text-field.entry.js +30 -21
  542. package/dist/esm/ic-text-field.entry.js.map +1 -1
  543. package/dist/esm/ic-theme.entry.js +3 -2
  544. package/dist/esm/ic-theme.entry.js.map +1 -1
  545. package/dist/esm/ic-toast-region.entry.js +1 -1
  546. package/dist/esm/ic-toast.entry.js +5 -4
  547. package/dist/esm/ic-toast.entry.js.map +1 -1
  548. package/dist/esm/ic-toggle-button-group.entry.js +4 -3
  549. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  550. package/dist/esm/ic-toggle-button.entry.js +4 -3
  551. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  552. package/dist/esm/ic-top-navigation.entry.js +2 -1
  553. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  554. package/dist/esm/ic-typography.entry.js +4 -3
  555. package/dist/esm/ic-typography.entry.js.map +1 -1
  556. package/dist/esm/index.js +1 -1
  557. package/dist/esm/loader.js +1 -1
  558. package/dist/types/components/ic-button/ic-button.d.ts +1 -0
  559. package/dist/types/components/ic-dialog/ic-dialog.d.ts +1 -0
  560. package/dist/types/components/ic-input-validation/ic-input-validation.d.ts +2 -0
  561. package/dist/types/components/ic-input-validation/ic-input-validation.types.d.ts +1 -1
  562. package/dist/types/components/ic-select/test/a11y/ic-select.test.a11y.d.ts +1 -0
  563. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +4 -0
  564. package/dist/types/components/ic-text-field/ic-text-field.d.ts +6 -1
  565. package/dist/types/components.d.ts +14 -2
  566. package/dist/types/index.d.ts +1 -0
  567. package/dist/types/utils/types.d.ts +1 -0
  568. package/hydrate/index.js +242 -203
  569. package/hydrate/index.mjs +242 -203
  570. package/package.json +3 -3
  571. package/vscode-data.json +21 -0
  572. package/dist/cjs/helpers-a0e78e2e.js.map +0 -1
  573. package/dist/core/p-0c0c6a9e.entry.js +0 -2
  574. package/dist/core/p-0d680d19.entry.js +0 -2
  575. package/dist/core/p-15dbccc2.entry.js +0 -2
  576. package/dist/core/p-19cf2327.entry.js +0 -2
  577. package/dist/core/p-1d37ac1c.entry.js +0 -2
  578. package/dist/core/p-1e2f40b0.entry.js +0 -2
  579. package/dist/core/p-21cf2beb.entry.js +0 -2
  580. package/dist/core/p-25007ec9.js +0 -2
  581. package/dist/core/p-25007ec9.js.map +0 -1
  582. package/dist/core/p-28efe829.entry.js +0 -2
  583. package/dist/core/p-28efe829.entry.js.map +0 -1
  584. package/dist/core/p-2f4f392f.entry.js +0 -2
  585. package/dist/core/p-313a8a2f.entry.js +0 -2
  586. package/dist/core/p-317e005f.entry.js +0 -2
  587. package/dist/core/p-3dc54847.entry.js +0 -2
  588. package/dist/core/p-3e5d7a3d.entry.js +0 -2
  589. package/dist/core/p-41ef74a7.entry.js +0 -2
  590. package/dist/core/p-41f92698.entry.js +0 -2
  591. package/dist/core/p-43324339.entry.js +0 -2
  592. package/dist/core/p-45dd12ee.entry.js.map +0 -1
  593. package/dist/core/p-47f6dac2.entry.js +0 -2
  594. package/dist/core/p-47f6dac2.entry.js.map +0 -1
  595. package/dist/core/p-493eaabb.entry.js +0 -2
  596. package/dist/core/p-4ca782eb.entry.js +0 -2
  597. package/dist/core/p-4d1a3036.entry.js +0 -2
  598. package/dist/core/p-52748d5c.entry.js +0 -2
  599. package/dist/core/p-595a4d06.entry.js +0 -2
  600. package/dist/core/p-5f68f62b.entry.js +0 -2
  601. package/dist/core/p-5f68f62b.entry.js.map +0 -1
  602. package/dist/core/p-6014ab64.entry.js +0 -2
  603. package/dist/core/p-661ae402.entry.js +0 -2
  604. package/dist/core/p-6a576a8b.entry.js +0 -2
  605. package/dist/core/p-6ed0ac48.entry.js +0 -2
  606. package/dist/core/p-711bfeed.entry.js +0 -2
  607. package/dist/core/p-72a9909c.entry.js +0 -2
  608. package/dist/core/p-742a9181.entry.js +0 -2
  609. package/dist/core/p-742a9181.entry.js.map +0 -1
  610. package/dist/core/p-7cd4f6a6.entry.js +0 -2
  611. package/dist/core/p-8a4b12e4.entry.js +0 -2
  612. package/dist/core/p-9323c234.entry.js +0 -2
  613. package/dist/core/p-97b93ddf.entry.js +0 -2
  614. package/dist/core/p-97b93ddf.entry.js.map +0 -1
  615. package/dist/core/p-9c013333.entry.js +0 -2
  616. package/dist/core/p-9eeb5e85.entry.js +0 -2
  617. package/dist/core/p-9f36791b.entry.js +0 -2
  618. package/dist/core/p-a602a8e1.entry.js +0 -2
  619. package/dist/core/p-a77364f5.entry.js +0 -2
  620. package/dist/core/p-af9c391d.entry.js +0 -2
  621. package/dist/core/p-b0d488d0.entry.js +0 -2
  622. package/dist/core/p-b52000d9.entry.js +0 -2
  623. package/dist/core/p-bb4ce810.entry.js +0 -2
  624. package/dist/core/p-cbe0d1bb.entry.js +0 -2
  625. package/dist/core/p-ceea1712.entry.js +0 -2
  626. package/dist/core/p-ceea1712.entry.js.map +0 -1
  627. package/dist/core/p-cf631191.entry.js +0 -2
  628. package/dist/core/p-e652ab09.entry.js +0 -2
  629. package/dist/core/p-e652ab09.entry.js.map +0 -1
  630. package/dist/core/p-e876e47c.entry.js +0 -2
  631. package/dist/core/p-e876e47c.entry.js.map +0 -1
  632. package/dist/core/p-ea778379.entry.js +0 -2
  633. package/dist/core/p-ef4b5469.entry.js +0 -2
  634. package/dist/core/p-f309d3af.entry.js +0 -2
  635. package/dist/core/p-f6a02202.entry.js +0 -2
  636. package/dist/core/p-fc3b1155.entry.js +0 -2
  637. package/dist/esm/helpers-56631aa0.js.map +0 -1
  638. /package/dist/core/{p-287e5c17.entry.js.map → p-37d217b5.entry.js.map} +0 -0
  639. /package/dist/core/{p-df88ff5b.entry.js.map → p-37daa8fe.entry.js.map} +0 -0
  640. /package/dist/core/{p-ffac41d6.entry.js.map → p-492fcb51.entry.js.map} +0 -0
  641. /package/dist/core/{p-6e8ef73c.entry.js.map → p-57721431.entry.js.map} +0 -0
  642. /package/dist/core/{p-5fbc8e62.entry.js.map → p-5fcfcfb6.entry.js.map} +0 -0
  643. /package/dist/core/{p-ea061ccf.entry.js.map → p-9a8bcb78.entry.js.map} +0 -0
  644. /package/dist/core/{p-8b5022bc.entry.js.map → p-9cf6ccfd.entry.js.map} +0 -0
  645. /package/dist/core/{p-999f0a5d.entry.js.map → p-b4a2f6fa.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"names":["icSelectCss","IcSelectStyle0","inputIds","MUTABLE_ATTRIBUTES","IC_INHERITED_ARIA","Select","constructor","hostRef","this","blurredBecauseButtonPressed","hasSetDefaultValue","hasTimedOut","inheritedAttributes","initialOptionsEmpty","inputId","menuId","retryButtonClick","searchableMenuItemSelected","ungroupedOptions","hostMutationObserver","clearButtonFocused","noOptions","open","pressedCharacters","searchableSelectInputValue","disabled","disableAutoFiltering","emptyOptionListText","fullWidth","helperText","hideLabel","includeDescriptionsInSearch","includeGroupTitlesInSearch","loadingErrorLabel","loadingLabel","multiple","name","placeholder","readonly","required","searchable","searchMatchPosition","selectOnEnter","showClearButton","size","theme","validationStatus","validationText","loading","options","filteredOptions","uniqueOptions","debounce","currDebounce","value","initialValue","inputValueToFilter","hostMutationCallback","mutationList","forceComponentUpdate","forEach","attributeName","type","addedNodes","removedNodes","attribute","el","getAttribute","includes","checkSlotInChildMutations","forceUpdate","handleRetry","ev","detail","keyPressed","_a","searchableSelectElement","focus","icRetryLoad","emit","hiddenInputValue","emitIcChange","Array","isArray","valueArray","slice","splice","indexOf","push","getValueSortedByOptions","length","icChange","emitIcInput","clearTimeout","debounceIcInput","window","setTimeout","icInput","setOptions","timeoutTimer","setOptionsValuesFromLabels","deduplicateOptions","label","isExternalFiltering","updateSearchableSelectResultAriaLive","setDefaultValue","uniqueValues","dedupedOptions","option","children","dedupedChildren","child","console","warn","Object","assign","map","setUngroupedOptions","event","setTextColor","nativeSelectElement","className","selectedIndex","setMenuChange","getLabelFromValue","getMultipleOptionsString","selectedValues","filter","join","getFilteredChildMenuOptions","getFilteredMenuOptions","valuesFromAllOptions","sort","a","b","handleNativeSelectChange","icOptionSelect","handleCustomSelectChange","optionId","currValue","getValueFromLabel","_b","icOptionDeselect","ariaActiveDescendant","handleSelectAllChange","allValues","select","unselectedValues","handleMenuChange","handleFocusIndicatorDisplay","handleMenuKeyPress","cancelBubble","handleCharacterKeyDown","key","focusIndicator","shadowRoot","querySelector","classList","add","remove","handleMouseDown","preventDefault","handleClick","menu","handleClickOpen","handleExpandIconMouseDown","handleClear","stopPropagation","clearInput","icClear","customSelectElement","characterKeyPressTimer","handleFilter","handleNativeSelectKeyDown","handleKeyDown","isArrowKey","handleKeyboardOpen","handleClearButtonFocus","handleClearButtonBlur","retryButton","relatedTarget","isGrouped","some","newFilteredOptions","menuOptionsFiltered","triggerLoading","timeout","timedOut","find","handleSearchableSelectInput","target","debounceAria","searchableSelectResultsStatusEl","innerText","updateMultiSelectedCountAriaLive","multiSelectSelectedCountEl","selectedCount","getOptionsWithoutGroupTitlesCount","getDefaultValue","onFocus","icFocus","onBlur","tagName","from","querySelectorAll","clearButton","icBlur","onTimeoutBlur","handleFormReset","setAttribute","renderNativeOption","h","selected","watchDisabledHandler","removeDisabledFalse","loadingHandler","newValue","watchOptionsHandler","debounceChangedHandler","valueChangedHandler","String","openChangedHandler","icOpen","icClose","disconnectedCallback","removeFormResetListener","disconnect","componentWillLoad","valueInOptions","inheritAttributes","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","MutationObserver","observe","attributes","childList","componentDidRender","setFocus","render","form","renderHiddenInput","invalid","IcInformationStatus","Error","describedBy","getInputDescribedByText","hasValidationStatus","trim","valueLabelString","isClearable","Host","class","for","slot","ref","anchorEl","isSlotUsed","isMobileOrTablet","onChange","id","onKeyDown","role","autocomplete","undefined","onInput","onClick","innerHTML","Clear","variant","onMouseDown","Expand","inputEl","inputLabel","onMenuStateChange","onMenuOptionSelect","onMenuOptionSelectAll","onMenuKeyPress","onUngroupedOptionsSet","onRetryButtonClicked","parentEl","activationType","closeOnSelect","multiSelect","searchableSelect","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 --menu-width: Width of the dropdown menu\n * @prop --ic-z-index-menu: z-index of select menu\n */\n\n:host {\n display: block;\n position: relative;\n\n --ic-input-label-helpertext-padding: var(--ic-space-xs);\n --menu-max-height: 100px;\n --border-color: var(--ic-select-field-border);\n --border-color-hover: var(--ic-select-field-border-hover);\n --border-color-pressed: var(--ic-select-field-border-pressed);\n --border-color-disabled: var(--ic-select-field-border-disabled);\n --border-color-error: var(--ic-select-field-border-error);\n --border-color-error-hover: var(--ic-select-field-border-error-hover);\n --border-color-error-pressed: var(--ic-select-field-border-error-pressed);\n --border-color-success: var(--ic-select-field-border-success);\n --border-color-success-hover: var(--ic-select-field-border-success-hover);\n --border-color-success-pressed: var(--ic-select-field-border-success-pressed);\n --border-color-warning: var(--ic-select-field-border-warning);\n --border-color-warning-hover: var(--ic-select-field-border-warning-hover);\n --border-color-warning-pressed: var(--ic-select-field-border-warning-pressed);\n --ic-input-label-text-color: var(--ic-select-field-labe);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle\n );\n --ic-input-validation-status-text-color: var(--ic-select-state-text);\n --ic-input-validation-error: var(--ic-select-state-icon-error);\n --ic-input-validation-warning-icon-color: var(--ic-select-state-icon-warning);\n --ic-input-validation-success-icon-color: var(--ic-select-state-icon-success);\n --menu-item-text-color: var(--ic-select-list-option-text);\n --menu-bg-color: var(--ic-select-list-option-background);\n --menu-border-color: var(--ic-select-dropdown-list-border);\n}\n\n:host(.ic-select-disabled) {\n --ic-input-label-text-color: var(--ic-select-field-label-disabled);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle-disabled\n );\n}\n\n:host(.ic-select-full-width) {\n width: 100%;\n}\n\nic-input-component-container.menu-open {\n --border-color: var(--ic-select-field-border-pressed);\n}\n\nic-input-validation .status-icon,\nic-input-validation .statustext {\n visibility: visible;\n}\n\nic-input-validation.menu-open .status-icon,\nic-input-validation.menu-open .statustext {\n visibility: hidden;\n transition: visibility 0s;\n}\n\nic-input-label {\n margin-bottom: var(--ic-space-xs);\n}\n\nselect {\n border: 0;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n height: 100%;\n padding-left: 0.375rem;\n appearance: none;\n background-repeat: no-repeat;\n background-position: right 0.375rem center;\n background-image: var(--ic-select-mobile-dropdown-icon);\n caret-color: var(--ic-select-input-field-text-cursor);\n}\n\nselect option,\n.select-option-selected {\n color: var(--ic-select-list-option-text);\n}\n\nselect:disabled {\n color: var(--ic-select-content-text-disabled);\n background-image: var(--ic-select-mobile-dropdown-icon-disabled);\n}\n\nselect:focus {\n border: 0;\n outline: 0;\n}\n\nselect:not([disabled]) {\n cursor: pointer;\n}\n\n.select-container {\n width: 100%;\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.select-input {\n width: 100%;\n height: 100%;\n padding: 0 0.375rem;\n display: flex;\n cursor: pointer;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n}\n\n.select-input:focus {\n outline: none;\n}\n\n.select-input[disabled] {\n pointer-events: none;\n}\n\n:host(.ic-select-searchable) .select-input {\n cursor: auto;\n}\n\n.select-input.with-clear-button {\n padding-right: 0;\n}\n\n.value-text {\n max-width: calc(100% - (var(--ic-space-lg) + var(--ic-space-xxs)));\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n margin-bottom: 0 !important;\n}\n\n.value-text.with-clear-button {\n padding-right: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n.searchable-select-container {\n align-items: center;\n display: flex;\n width: 100%;\n position: relative;\n}\n\n.expand-icon {\n height: var(--ic-space-lg);\n padding-left: var(--ic-space-xxs);\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon > svg {\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-disabled) .expand-icon,\n:host(.ic-select-disabled) .expand-icon > svg > path {\n color: var(--ic-select-disabled-expand-icon-color);\n}\n\n:host(.ic-select-searchable) .expand-icon {\n padding-left: 0;\n height: 2.25rem;\n}\n\n:host(.ic-select-searchable) .expand-icon > svg {\n height: 2.25rem;\n padding: 0 calc(var(--ic-space-xxxs) + var(--ic-space-xxs)) 0\n var(--ic-space-xxs);\n}\n\n:host(.ic-select-searchable:not(.ic-select-disabled)) .expand-icon > svg {\n cursor: pointer;\n}\n\n.expand-icon-open {\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon-open,\n:host(.ic-select-searchable) .expand-icon-open {\n transform: rotateX(180deg);\n}\n\n.placeholder {\n color: var(--ic-select-content-placeholder-text);\n}\n\n:host(.ic-select-disabled) .value-text,\n:host(.ic-select-disabled) .select-input,\n:host(.ic-select-disabled) .placeholder,\n:host(.ic-select-disabled.ic-select-searchable) .select-input::placeholder {\n color: var(--ic-select-content-text-disabled);\n}\n\n.select-input-end {\n display: flex;\n align-items: center;\n}\n\n.clear-button-container {\n display: flex;\n align-items: center;\n}\n\n.divider {\n width: var(--ic-space-1px);\n background-color: var(--ic-select-content-divider);\n margin: var(--ic-space-xxs) 0;\n border-radius: var(--ic-space-1px);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-small) .divider {\n height: var(--ic-space-md);\n}\n\n:host(.ic-select-large) .divider {\n height: var(--ic-space-xl);\n}\n\n.clear-button {\n color: var(--ic-select-clear-button);\n position: absolute;\n right: calc(var(--ic-space-xl) + var(--ic-space-xxs) - var(--ic-space-1px));\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus,\n.clear-button:active {\n background-color: var(--ic-color-focus-inner);\n box-shadow: inset 0 0 0 0.125rem var(--ic-color-focus-outer);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.clear-button:active * {\n fill: var(--ic-atoms-input-clear-button-focus);\n}\n\n.clear-button.searchable {\n position: static;\n}\n\n.searchable-select-results-status,\n.multi-select-selected-count {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: var(--ic-space-1px);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-placeholder-text);\n}\n\n.has-value ::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-text);\n}\n\n.readonly ::slotted([slot=\"icon\"]) {\n padding: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n@media (forced-colors: active) {\n .has-value ::slotted([slot=\"icon\"]) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n h,\n State,\n Watch,\n forceUpdate,\n} from \"@stencil/core\";\n\nimport {\n getInputDescribedByText,\n getLabelFromValue,\n hasValidationStatus,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n isMobileOrTablet,\n getFilteredMenuOptions,\n getOptionsWithoutGroupTitlesCount,\n addFormResetListener,\n removeFormResetListener,\n removeDisabledFalse,\n checkSlotInChildMutations,\n isSlotUsed,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcMenuOption,\n IcSearchMatchPositions,\n IcMultiValueEventDetail,\n IcSizes,\n IcThemeMode,\n} from \"../../utils/types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport {\n IcMenuChangeEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"tabindex\", \"title\"];\n\n/**\n * @slot helper-text - Content is set as the helper text for the select.\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 = false;\n private characterKeyPressTimer?: number;\n private clearButton?: HTMLIcButtonElement;\n private customSelectElement?: HTMLButtonElement;\n private debounceAria?: number;\n private hasSetDefaultValue = false;\n private hasTimedOut = false;\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 = false;\n private searchableMenuItemSelected = false;\n private searchableSelectElement?: HTMLInputElement;\n private timeoutTimer?: number;\n private ungroupedOptions: IcMenuOption[] = [];\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant?: string;\n @State() clearButtonFocused = false;\n @State() debounceIcInput?: number;\n @State() hiddenInputValue: string | null;\n @State() noOptions: IcMenuOption[] | null = null;\n @State() open = false;\n @State() pressedCharacters = \"\";\n @State() searchableSelectInputValue: string | null = null;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableAutoFiltering = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * If `true`, the select will fill the width of the container.\n */\n @Prop() fullWidth = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText = \"\";\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 = 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 = 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 = 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 = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel = \"Loading...\";\n\n /**\n * If `true`, multiple options can be selected.\n */\n @Prop() multiple = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options. This functionality is only available on the single-select variant of the select component.\n */\n @Prop() searchable = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown on the single select.\n */\n @Prop() selectOnEnter = 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 = false;\n\n /**\n * The size of the select.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText = \"\";\n\n /**\n * If `true`, the loading state will be triggered when fetching options asynchronously.\n */\n @Prop({ mutable: true }) loading = false;\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n newValue ? this.triggerLoading() : this.setOptions();\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options: IcMenuOption[] = [];\n @State() filteredOptions: IcMenuOption[] = this.options;\n @State() uniqueOptions: IcMenuOption[] = this.options;\n @Watch(\"options\")\n watchOptionsHandler(): void {\n this.setOptions();\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icInput` event after each keystroke.\n */\n @Prop() debounce = 0;\n @State() currDebounce = this.debounce;\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option.\n * For the searchable variant, the value is also reflected by the user input.\n * For the multi-select variant, the value must be an array of option values.\n */\n @Prop({ mutable: true }) value: string | string[] | null = null;\n @State() initialValue = this.value;\n @State() inputValueToFilter: string | null = this.value as string;\n @State() currValue: string | string[] | null;\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n if (this.value && this.multiple) {\n this.currValue = this.getMultipleOptionsString(this.value as string[])\n ? this.getValueSortedByOptions(this.value as string[])\n : null;\n this.updateMultiSelectedCountAriaLive();\n } else {\n this.currValue = this.getLabelFromValue(this.value as string)\n ? this.value\n : null;\n }\n }\n\n if (this.searchable && this.value) {\n // Only set if value not null - prevents whole input value being cleared when edited\n this.searchableSelectInputValue =\n this.getLabelFromValue(String(this.currValue)) || null;\n }\n }\n\n @Watch(\"open\")\n openChangedHandler(): void {\n this.open ? this.icOpen.emit() : this.icClose.emit();\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the clear or clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * Emitted when the select options menu is closed.\n */\n @Event() icClose: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the select options menu is opened.\n */\n @Event() icOpen: EventEmitter<void>;\n\n /**\n * Emitted when an option is selected.\n * Selecting an option will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when `multiple` is `true` and an option is deselected.\n */\n @Event() icOptionDeselect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcMultiValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n const valueInOptions = this.multiple\n ? this.getMultipleOptionsString(this.value as string[])\n : this.getLabelFromValue(this.value as string);\n this.currValue = valueInOptions ? this.value : null;\n this.inheritedAttributes = inheritAttributes(this.el, MUTABLE_ATTRIBUTES);\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.setOptionsValuesFromLabels();\n\n addFormResetListener(this.el, this.handleFormReset);\n\n if (!this.options.length) {\n this.initialOptionsEmpty = true;\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n } else {\n this.setDefaultValue();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Select\"\n );\n\n if (this.loading) {\n this.triggerLoading();\n }\n\n if (this.searchable) {\n this.hiddenInputValue = this.currValue as string;\n }\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n }\n\n /**\n * Sets focus on the input box.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.customSelectElement) {\n this.customSelectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]) => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (attributeName) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute && MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private handleRetry = (ev: CustomEvent<IcMultiValueEventDetail>) => {\n if (ev.detail.keyPressed) this.searchableSelectElement?.focus();\n this.blurredBecauseButtonPressed = true;\n this.retryButtonClick = true;\n this.hasSetDefaultValue = true;\n this.icRetryLoad.emit({\n value: this.searchable\n ? this.searchableSelectInputValue\n : this.hiddenInputValue,\n });\n };\n\n private emitIcChange = (value: string | string[] | null) => {\n // If \"Select all\" button clicked, replace value with new value (array of all option values)\n if (this.multiple && !Array.isArray(value) && value !== null) {\n // Update selected options - adds / removes them, in order of option list\n // Create new array if value prop is undefined\n if (this.value) {\n let valueArray = (this.value as string[]).slice();\n\n if (this.value.includes(value)) {\n valueArray.splice(valueArray.indexOf(value), 1);\n } else {\n valueArray.push(value);\n valueArray = this.getValueSortedByOptions(valueArray);\n }\n\n this.value = valueArray.length === 0 ? null : valueArray;\n } else {\n this.value = [value];\n }\n } else {\n this.value = value;\n }\n\n this.icChange.emit({ value: this.multiple ? this.value : value });\n };\n\n private emitIcInput = (value: string) => {\n clearTimeout(this.debounceIcInput);\n this.debounceIcInput = window.setTimeout(\n () => this.icInput.emit({ value }),\n this.currDebounce\n );\n };\n\n private setOptions = () => {\n if (!this.hasTimedOut && this.options !== this.noOptions) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n\n if (this.options.length > 0) {\n this.setOptionsValuesFromLabels();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n }\n\n this.filteredOptions = this.uniqueOptions;\n\n if (this.isExternalFiltering()) {\n // When searchable select\n this.noOptions = null;\n this.updateSearchableSelectResultAriaLive();\n this.setDefaultValue();\n } else if (this.initialOptionsEmpty) {\n this.setDefaultValue();\n this.initialOptionsEmpty = false;\n }\n } else if (!this.searchable) {\n this.options = this.noOptions || [];\n }\n };\n\n /**\n * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn\n * @param options array of IcMenuOptions\n * @returns a new options object, with all entries possessing a duplicate 'value' field removed\n */\n private deduplicateOptions = (options: IcMenuOption[]) => {\n const uniqueValues: string[] = [];\n const dedupedOptions: IcMenuOption[] = [];\n\n options.forEach((option) => {\n if (option.children) {\n //If an option has children, we will loop through them\n const dedupedChildren: IcMenuOption[] = [];\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 dedupedOptions.push({\n ...option,\n children: dedupedChildren,\n });\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 = () => {\n if (this.options.length > 0) {\n this.options.map((option) => {\n if (!option.value) {\n option.value = option.label;\n }\n });\n }\n };\n\n private setUngroupedOptions = (event: CustomEvent) => {\n this.ungroupedOptions = event.detail.options;\n };\n\n private setTextColor = () => {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.className =\n this.nativeSelectElement.selectedIndex === 0\n ? \"placeholder\"\n : \"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) =>\n getLabelFromValue(value, this.uniqueOptions);\n\n private getMultipleOptionsString = (selectedValues: string[]) =>\n selectedValues\n ?.map((value) => this.getLabelFromValue(value))\n .filter((label) => !!label)\n .join(\", \");\n\n private getFilteredChildMenuOptions = (\n option: IcMenuOption\n ): IcMenuOption => ({\n ...option,\n children:\n option.children &&\n getFilteredMenuOptions(\n option.children,\n this.searchable && !!this.includeDescriptionsInSearch,\n this.searchable\n ? this.searchableSelectInputValue || \"\"\n : this.pressedCharacters,\n this.searchable ? this.searchMatchPosition : \"start\"\n ),\n });\n\n // (For multi-select) get value array, i.e. selected option values, in order they appear in option list\n private getValueSortedByOptions = (value: string[]) => {\n const valueArray = value;\n const valuesFromAllOptions = this.ungroupedOptions.map(\n (option) => option.value\n );\n\n valueArray.sort(\n (a, b) =>\n valuesFromAllOptions.indexOf(a) - valuesFromAllOptions.indexOf(b)\n );\n\n return valueArray;\n };\n\n private handleNativeSelectChange = () => {\n if (this.nativeSelectElement) {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitIcChange(this.nativeSelectElement.value);\n }\n this.setTextColor();\n };\n\n // Handle option select for when a custom input box and menu is rendered\n // (rather than native <select> - rendered when viewed on a mobile / tablet screen)\n private handleCustomSelectChange = (\n event: CustomEvent<IcOptionSelectEventDetail>\n ) => {\n const { value, label, optionId } = event.detail;\n\n if (label === this.emptyOptionListText) {\n this.searchableSelectElement?.focus();\n return;\n }\n\n if (this.searchable) {\n this.value = value || null;\n this.searchableMenuItemSelected = true;\n\n // After editing the input, if selecting the same option as before, set the input value to label again\n if (this.value === this.currValue) {\n this.searchableSelectInputValue =\n this.getLabelFromValue(this.value as string) || null;\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue =\n this.getValueFromLabel(this.searchableSelectInputValue) || null;\n }\n\n if (value) {\n if (this.multiple && this.value?.includes(value)) {\n this.icOptionDeselect.emit({ value });\n } else {\n this.icOptionSelect.emit({ value });\n }\n }\n\n this.ariaActiveDescendant = optionId;\n this.emitIcChange(value || null);\n };\n\n private handleSelectAllChange = ({\n detail,\n }: CustomEvent<{ select: boolean }>) => {\n const allValues = this.ungroupedOptions\n .filter((option) => !option.disabled)\n .map((option) => option.value);\n\n if (detail.select) {\n // Only emit icOptionSelect for all values that are newly selected\n const unselectedValues = this.value\n ? allValues.filter(\n (value) => this.value && !(this.value as string[]).includes(value)\n )\n : allValues;\n\n unselectedValues.forEach((value) => this.icOptionSelect.emit({ value }));\n } else {\n // Only emit icOptionDeselect for values that were selected\n (this.value as string[]).forEach((value) =>\n this.icOptionDeselect.emit({ value })\n );\n }\n\n this.emitIcChange(detail.select ? allValues : null);\n };\n\n private handleMenuChange = (event: CustomEvent<IcMenuChangeEventDetail>) => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n\n if (this.searchable) this.handleFocusIndicatorDisplay();\n };\n\n // clears the debounce delay when navigating the menu with arrow keys etc\n // to prevent delay in change event, which should only occur when typing in input\n private handleMenuKeyPress = (ev: CustomEvent): void => {\n ev.cancelBubble = true;\n if (!this.multiple) {\n this.handleCharacterKeyDown(ev.detail.key);\n }\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator =\n this.el.shadowRoot?.querySelector(\".focus-indicator\");\n\n if (focusIndicator) {\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n }\n };\n\n private handleMouseDown = (event: Event) => {\n if (!this.open) {\n event.preventDefault();\n }\n };\n\n private isExternalFiltering = () =>\n this.searchable && !!this.disableAutoFiltering;\n\n private handleClick = (event: MouseEvent) => {\n if (!this.open && this.menu) {\n if (this.isExternalFiltering()) {\n this.menu.options = this.filteredOptions;\n } else if (\n !this.hasTimedOut &&\n !this.loading &&\n !this.noOptions?.length &&\n (!this.searchable || this.searchableMenuItemSelected)\n ) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (event.detail !== 0) {\n this.menu?.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement?.focus();\n this.handleClick(event);\n }\n };\n\n private handleClear = (event: Event) => {\n event.stopPropagation();\n this.hasTimedOut = false;\n clearTimeout(this.timeoutTimer);\n this.clearInput();\n this.emitIcChange(null);\n this.icClear.emit();\n\n if (this.searchable) {\n this.hiddenInputValue = null;\n this.searchableSelectElement?.focus();\n } else {\n this.customSelectElement?.focus();\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (this.open && key === \" \" && this.pressedCharacters.length === 0) {\n this.setMenuChange(false);\n }\n\n if (key.length !== 1 || this.searchable) {\n this.pressedCharacters = \"\";\n return;\n }\n\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n if (key !== \" \" || !!this.pressedCharacters) {\n this.pressedCharacters += key;\n this.handleFilter();\n\n if (!this.noOptions) {\n this.emitIcChange(this.filteredOptions[0].value);\n }\n }\n };\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) => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n const isArrowKey = event.key === \"ArrowDown\" || event.key === \"ArrowUp\";\n\n if (this.menu && !this.open) {\n if (this.isExternalFiltering() && (event.key === \"Enter\" || isArrowKey)) {\n this.menu.options = this.filteredOptions;\n } else if (!this.hasTimedOut) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (this.open && event.key === \"Enter\") {\n this.setMenuChange(false);\n } else {\n if (!isArrowKey || this.noOptions === null) {\n if (event.key !== \" \" || this.pressedCharacters.length <= 0) {\n // Keyboard events get passed onto ic-menu\n this.menu?.handleKeyboardOpen(event);\n }\n if (!this.multiple) {\n this.handleCharacterKeyDown(event.key);\n }\n }\n }\n };\n\n private handleClearButtonFocus = () => {\n this.clearButtonFocused = true;\n };\n\n private handleClearButtonBlur = (ev: FocusEvent) => {\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n if (\n (!this.searchableSelectElement ||\n ev.relatedTarget !== this.searchableSelectElement) &&\n (!retryButton || ev.relatedTarget !== retryButton)\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n }\n this.clearButtonFocused = false;\n };\n\n private handleFilter = () => {\n const options = this.deduplicateOptions(\n this.searchable ? [...this.uniqueOptions] : this.ungroupedOptions\n );\n\n const isGrouped = options.some((option) => !!option.children);\n let newFilteredOptions: IcMenuOption[] = [];\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 newFilteredOptions = options.map((option) =>\n this.includeGroupTitlesInSearch &&\n menuOptionsFiltered.indexOf(option) !== -1\n ? option\n : this.getFilteredChildMenuOptions(option)\n );\n }\n\n if (\n newFilteredOptions.length > 0 &&\n (!isGrouped ||\n newFilteredOptions.some(\n ({ children }) => children && children.length > 0\n ))\n ) {\n this.noOptions = null;\n this.filteredOptions = newFilteredOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.filteredOptions = this.noOptions;\n }\n };\n\n /**\n * Put the select component into loading state.\n * Replace options with the loading message. If timeout is enabled, set the timeout and once passed, replace options with the loading error message\n */\n private triggerLoading = () => {\n this.hasTimedOut = false;\n this.noOptions = [{ label: this.loadingLabel, value: \"\", loading: true }];\n if (this.filteredOptions !== this.noOptions && this.searchable) {\n this.filteredOptions = this.noOptions;\n } else if (this.uniqueOptions !== this.noOptions && !this.searchable) {\n this.uniqueOptions = this.noOptions;\n }\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n this.noOptions = [\n { label: this.loadingErrorLabel, value: \"\", timedOut: true },\n ];\n this.filteredOptions = this.noOptions;\n if (!this.searchable) this.uniqueOptions = this.noOptions;\n }, this.timeout);\n }\n };\n\n private getValueFromLabel = (label: string | null): string | undefined =>\n label && this.uniqueOptions.find((option) => option.label === label)?.value;\n\n private handleSearchableSelectInput = (event: Event) => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n this.emitIcInput(this.searchableSelectInputValue);\n\n // De-select previous selection when input is edited\n // Only emit icChange once when editing input\n if (this.value != null) {\n this.emitIcChange(null);\n }\n\n this.hiddenInputValue = null;\n this.inputValueToFilter = this.searchableSelectInputValue;\n this.setMenuChange(true);\n\n if (!this.disableAutoFiltering) {\n this.handleFilter();\n clearTimeout(this.debounceAria);\n\n window.setTimeout(() => {\n this.updateSearchableSelectResultAriaLive();\n }, 800);\n }\n };\n\n private updateSearchableSelectResultAriaLive = () => {\n const searchableSelectResultsStatusEl =\n this.el.shadowRoot?.querySelector<HTMLDivElement>(\n \".searchable-select-results-status\"\n );\n\n if (searchableSelectResultsStatusEl) {\n searchableSelectResultsStatusEl.innerText =\n this.noOptions !== null ? this.emptyOptionListText : \"\";\n }\n };\n\n private updateMultiSelectedCountAriaLive = () => {\n const multiSelectSelectedCountEl =\n this.el.shadowRoot?.querySelector<HTMLDivElement>(\n \".multi-select-selected-count\"\n );\n\n const selectedCount = `${\n this.currValue?.length\n } of ${getOptionsWithoutGroupTitlesCount(this.options)} selected`;\n\n if (\n multiSelectSelectedCountEl &&\n multiSelectSelectedCountEl.innerText !== selectedCount\n ) {\n multiSelectSelectedCountEl.innerText = selectedCount;\n }\n };\n\n private getDefaultValue = (value: string) =>\n this.getLabelFromValue(value) || null;\n\n private setDefaultValue = () => {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue = this.searchable\n ? this.getDefaultValue(this.currValue as string)\n : null;\n\n this.initialValue = this.currValue;\n this.hasSetDefaultValue = true;\n }\n };\n\n private onFocus = () => {\n this.icFocus.emit();\n };\n\n private onBlur = ({ relatedTarget }: FocusEvent) => {\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\n if (\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 (!this.retryButtonClick) {\n this.setMenuChange(false);\n // Clear input field on blur when searchable if no option is selected\n if (!this.value) {\n this.clearInput();\n }\n }\n this.handleFocusIndicatorDisplay();\n }\n\n this.retryButtonClick = false;\n this.icBlur.emit();\n };\n\n private onTimeoutBlur = (ev: CustomEvent) => {\n if (\n (ev.detail.ev as FocusEvent).relatedTarget !==\n this.searchableSelectElement &&\n !this.blurredBecauseButtonPressed\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n this.icBlur.emit();\n }\n this.blurredBecauseButtonPressed = false;\n };\n\n private handleFormReset = () => {\n this.value = this.initialValue;\n if (this.searchable) {\n this.searchableSelectInputValue = this.getDefaultValue(\n this.value as string\n );\n this.hiddenInputValue = this.value as string;\n }\n };\n\n private clearInput = () => {\n this.noOptions = null;\n\n if (this.searchable) {\n this.searchableSelectElement?.setAttribute(\"value\", \"\");\n this.searchableSelectInputValue = null;\n this.filteredOptions = this.uniqueOptions;\n }\n };\n\n private renderNativeOption = (option: IcMenuOption) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === this.currValue}\n >\n {option.label}\n </option>\n );\n\n render() {\n const {\n size,\n disabled,\n fullWidth,\n helperText,\n hideLabel,\n label,\n menuId,\n multiple,\n name,\n options,\n placeholder,\n readonly,\n required,\n searchable,\n showClearButton,\n validationStatus,\n validationText,\n currValue,\n theme,\n hiddenInputValue,\n open,\n inputId,\n searchableSelectInputValue,\n loading,\n value,\n emptyOptionListText,\n uniqueOptions,\n selectOnEnter,\n form,\n inheritedAttributes,\n ariaActiveDescendant,\n hasTimedOut,\n noOptions,\n filteredOptions,\n clearButtonFocused,\n } = this;\n\n // HTML inputs only accept 'string' for their value\n // Does not cause errors when it is a multi-select - sets value correctly, to a comma-separated string\n renderHiddenInput(\n this.el,\n searchable ? hiddenInputValue : (currValue as string),\n name || inputId,\n disabled\n );\n\n const invalid = `${validationStatus === IcInformationStatus.Error}`;\n\n const describedBy = getInputDescribedByText(\n this.el,\n inputId,\n helperText !== \"\",\n hasValidationStatus(validationStatus, !!disabled)\n ).trim();\n\n const valueLabelString = multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string);\n\n const isClearable =\n !disabled &&\n (searchable\n ? !!searchableSelectInputValue\n : !!currValue && !loading && showClearButton);\n\n return (\n <Host\n class={{\n \"ic-select-disabled\": disabled,\n \"ic-select-searchable\": searchable,\n [`ic-select-${size}`]: size !== \"medium\",\n \"ic-select-full-width\": fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n onBlur={this.onBlur}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n >\n <slot name=\"helper-text\" slot=\"helper-text\"></slot>\n </ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": open }}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {isSlotUsed(this.el, \"icon\") &&\n !disabled &&\n (!readonly || !!value) && (\n <span\n slot=\"left-icon\"\n class={{\n readonly,\n \"has-value\": !!value,\n }}\n >\n <slot name=\"icon\" />\n </span>\n )}\n {readonly ? (\n <ic-typography>\n <p>{valueLabelString}</p>\n </ic-typography>\n ) : isMobileOrTablet() && !multiple ? (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={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={form}\n {...inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options.map((option) =>\n option.children ? (\n <optgroup label={option.label}>\n {option.children.map((child) =>\n this.renderNativeOption(child)\n )}\n </optgroup>\n ) : (\n this.renderNativeOption(option)\n )\n )}\n </select>\n ) : searchable ? (\n <div class=\"searchable-select-container\">\n <input\n class={{\n \"value-text\": true,\n \"select-input\": true,\n \"with-clear-button\": !!searchableSelectInputValue,\n }}\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={`${open}`}\n aria-invalid={invalid}\n aria-required={`${required}`}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={inputId}\n value={searchableSelectInputValue || undefined}\n placeholder={placeholder}\n disabled={disabled}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n form={form}\n ></input>\n {isClearable && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el) => (this.clearButton = el)}\n aria-label={\n searchableSelectInputValue &&\n (currValue === null || loading)\n ? \"Clear input\"\n : \"Clear selection\"\n }\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n theme={clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"searchable-select-results-status\"\n ></div>\n </div>\n ) : (\n <div class=\"select-container\">\n <button\n class=\"select-input\"\n ref={(el) => (this.customSelectElement = el)}\n id={inputId}\n aria-label={`${label}, ${\n (multiple && currValue\n ? `${\n currValue.length\n } of ${getOptionsWithoutGroupTitlesCount(\n options\n )} selected, ${valueLabelString}`\n : valueLabelString) || placeholder\n }${required ? \", required\" : \"\"}`}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-haspopup=\"listbox\"\n aria-expanded={`${open}`}\n aria-owns={menuId}\n aria-controls={menuId}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.handleClick}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleKeyDown}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n \"with-clear-button\": isClearable,\n placeholder:\n !loading && multiple\n ? !value || value.length < 1\n : !this.getLabelFromValue(currValue as string),\n }}\n >\n {valueLabelString || placeholder}\n </ic-typography>\n <div class=\"select-input-end\">\n {isClearable && <div class=\"divider\"></div>}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {isClearable && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear selection\"\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon\"\n theme={clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n )}\n </div>\n )}\n </ic-input-component-container>\n {(!isMobileOrTablet() || multiple) && (\n <ic-menu\n class={{\n \"no-results\":\n loading ||\n hasTimedOut ||\n noOptions?.[0]?.label === 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={open}\n options={searchable ? filteredOptions : uniqueOptions}\n value={multiple ? (currValue as string[]) : (currValue as string)}\n fullWidth={fullWidth}\n selectOnEnter={selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleCustomSelectChange}\n onMenuOptionSelectAll={this.handleSelectAllChange}\n onMenuKeyPress={this.handleMenuKeyPress}\n onUngroupedOptionsSet={this.setUngroupedOptions}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n onTimeoutBlur={this.onTimeoutBlur}\n activationType={\n searchable || multiple || selectOnEnter ? \"manual\" : \"automatic\"\n }\n closeOnSelect={!multiple}\n multiSelect={multiple ? true : false}\n searchableSelect={searchable ? true : false}\n ></ic-menu>\n )}\n {multiple && (\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"multi-select-selected-count\"\n ></div>\n )}\n {hasValidationStatus(validationStatus, disabled) && (\n <ic-input-validation\n class={{ \"menu-open\": open }}\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText}\n for={inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["icSelectCss","IcSelectStyle0","inputIds","MUTABLE_ATTRIBUTES","IC_INHERITED_ARIA","Select","constructor","hostRef","this","blurredBecauseButtonPressed","hasSetDefaultValue","hasTimedOut","inheritedAttributes","initialOptionsEmpty","inputId","menuId","retryButtonClick","searchableMenuItemSelected","ungroupedOptions","hostMutationObserver","clearButtonFocused","noOptions","open","pressedCharacters","searchableSelectInputValue","disabled","disableAutoFiltering","emptyOptionListText","fullWidth","helperText","hideLabel","includeDescriptionsInSearch","includeGroupTitlesInSearch","loadingErrorLabel","loadingLabel","multiple","name","placeholder","readonly","required","searchable","searchMatchPosition","selectOnEnter","showClearButton","size","theme","validationStatus","validationText","loading","options","filteredOptions","uniqueOptions","debounce","currDebounce","value","initialValue","inputValueToFilter","hostMutationCallback","mutationList","forceComponentUpdate","forEach","attributeName","type","addedNodes","removedNodes","attribute","el","getAttribute","includes","checkSlotInChildMutations","forceUpdate","handleRetry","ev","detail","keyPressed","_a","searchableSelectElement","focus","icRetryLoad","emit","hiddenInputValue","emitIcChange","Array","isArray","valueArray","slice","splice","indexOf","push","getValueSortedByOptions","length","icChange","emitIcInput","clearTimeout","debounceIcInput","window","setTimeout","icInput","setOptions","timeoutTimer","setOptionsValuesFromLabels","deduplicateOptions","label","isExternalFiltering","updateSearchableSelectResultAriaLive","setDefaultValue","uniqueValues","dedupedOptions","option","children","dedupedChildren","child","console","warn","Object","assign","map","setUngroupedOptions","event","setTextColor","nativeSelectElement","className","selectedIndex","setMenuChange","getLabelFromValue","getMultipleOptionsString","selectedValues","filter","join","getFilteredChildMenuOptions","getFilteredMenuOptions","valuesFromAllOptions","sort","a","b","handleNativeSelectChange","icOptionSelect","handleCustomSelectChange","optionId","currValue","getValueFromLabel","_b","icOptionDeselect","ariaActiveDescendant","handleSelectAllChange","allValues","select","unselectedValues","handleMenuChange","handleFocusIndicatorDisplay","handleMenuKeyPress","cancelBubble","handleCharacterKeyDown","key","focusIndicator","shadowRoot","querySelector","classList","add","remove","handleMouseDown","preventDefault","handleClick","menu","handleClickOpen","handleExpandIconMouseDown","handleClear","stopPropagation","clearInput","icClear","customSelectElement","characterKeyPressTimer","handleFilter","handleNativeSelectKeyDown","handleKeyDown","isArrowKey","handleKeyboardOpen","handleClearButtonFocus","handleClearButtonBlur","retryButton","relatedTarget","isGrouped","some","newFilteredOptions","menuOptionsFiltered","triggerLoading","timeout","timedOut","find","handleSearchableSelectInput","target","debounceAria","searchableSelectResultsStatusEl","innerText","updateMultiSelectedCountAriaLive","multiSelectSelectedCountEl","selectedCount","getOptionsWithoutGroupTitlesCount","getDefaultValue","onFocus","icFocus","onBlur","tagName","from","querySelectorAll","clearButton","icBlur","onTimeoutBlur","handleFormReset","setAttribute","renderNativeOption","h","selected","watchDisabledHandler","removeDisabledFalse","loadingHandler","newValue","watchOptionsHandler","debounceChangedHandler","valueChangedHandler","String","openChangedHandler","icOpen","icClose","disconnectedCallback","removeFormResetListener","disconnect","componentWillLoad","valueInOptions","inheritAttributes","addFormResetListener","componentDidLoad","onComponentRequiredPropUndefined","prop","propName","MutationObserver","observe","attributes","childList","componentDidRender","setFocus","render","form","renderHiddenInput","invalid","IcInformationStatus","Error","describedBy","getInputDescribedByText","hasValidationStatus","trim","valueLabelString","isClearable","Host","class","for","slot","ref","anchorEl","isSlotUsed","isMobileOrTablet","onChange","id","onKeyDown","role","autocomplete","undefined","onInput","onClick","innerHTML","Clear","variant","onMouseDown","Expand","inputEl","inputLabel","onMenuStateChange","onMenuOptionSelect","onMenuOptionSelectAll","onMenuKeyPress","onUngroupedOptionsSet","onRetryButtonClicked","parentEl","activationType","closeOnSelect","multiSelect","searchableSelect","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 --menu-width: Width of the dropdown menu\n * @prop --ic-z-index-menu: z-index of select menu\n */\n\n:host {\n display: block;\n position: relative;\n\n --ic-input-label-helpertext-padding: var(--ic-space-xs);\n --menu-max-height: 100px;\n --border-color: var(--ic-select-field-border);\n --border-color-hover: var(--ic-select-field-border-hover);\n --border-color-pressed: var(--ic-select-field-border-pressed);\n --border-color-disabled: var(--ic-select-field-border-disabled);\n --border-color-error: var(--ic-select-field-border-error);\n --border-color-error-hover: var(--ic-select-field-border-error-hover);\n --border-color-error-pressed: var(--ic-select-field-border-error-pressed);\n --border-color-success: var(--ic-select-field-border-success);\n --border-color-success-hover: var(--ic-select-field-border-success-hover);\n --border-color-success-pressed: var(--ic-select-field-border-success-pressed);\n --border-color-warning: var(--ic-select-field-border-warning);\n --border-color-warning-hover: var(--ic-select-field-border-warning-hover);\n --border-color-warning-pressed: var(--ic-select-field-border-warning-pressed);\n --ic-input-label-text-color: var(--ic-select-field-labe);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle\n );\n --ic-input-validation-status-text-color: var(--ic-select-state-text);\n --ic-input-validation-error: var(--ic-select-state-icon-error);\n --ic-input-validation-warning-icon-color: var(--ic-select-state-icon-warning);\n --ic-input-validation-success-icon-color: var(--ic-select-state-icon-success);\n --menu-item-text-color: var(--ic-select-list-option-text);\n --menu-bg-color: var(--ic-select-list-option-background);\n --menu-border-color: var(--ic-select-dropdown-list-border);\n}\n\n:host(.ic-select-disabled) {\n --ic-input-label-text-color: var(--ic-select-field-label-disabled);\n --ic-input-label-helper-text-color: var(\n --ic-select-input-field-label-subtitle-disabled\n );\n}\n\n:host(.ic-select-full-width) {\n width: 100%;\n}\n\nic-input-component-container.menu-open {\n --border-color: var(--ic-select-field-border-pressed);\n}\n\nic-input-validation .status-icon,\nic-input-validation .statustext {\n visibility: visible;\n}\n\nic-input-validation.menu-open .status-icon,\nic-input-validation.menu-open .statustext {\n visibility: hidden;\n transition: visibility 0s;\n}\n\nic-input-label {\n margin-bottom: var(--ic-space-xs);\n}\n\nselect {\n border: 0;\n border-radius: var(--ic-border-radius);\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n line-height: 1.5rem;\n letter-spacing: 0.005rem;\n width: 100%;\n height: 100%;\n padding-left: 0.375rem;\n appearance: none;\n background-repeat: no-repeat;\n background-position: right 0.375rem center;\n background-image: var(--ic-select-mobile-dropdown-icon);\n caret-color: var(--ic-select-input-field-text-cursor);\n}\n\nselect option,\n.select-option-selected {\n color: var(--ic-select-list-option-text);\n}\n\nselect:disabled {\n color: var(--ic-select-content-text-disabled);\n background-image: var(--ic-select-mobile-dropdown-icon-disabled);\n}\n\nselect:focus {\n border: 0;\n outline: 0;\n}\n\nselect:not([disabled]) {\n cursor: pointer;\n}\n\n.select-container {\n width: 100%;\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.select-input {\n width: 100%;\n height: 100%;\n padding: 0 0.375rem;\n display: flex;\n cursor: pointer;\n align-items: center;\n justify-content: space-between;\n background: none;\n border: none;\n background-color: var(--ic-select-field-background);\n color: var(--ic-select-content-text);\n}\n\n.select-input:focus {\n outline: none;\n}\n\n.select-input[disabled] {\n pointer-events: none;\n}\n\n:host(.ic-select-searchable) .select-input {\n cursor: auto;\n}\n\n.select-input.with-clear-button {\n padding-right: 0;\n}\n\n.value-text {\n max-width: calc(100% - (var(--ic-space-lg) + var(--ic-space-xxs)));\n box-sizing: border-box;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n margin-bottom: 0 !important;\n}\n\n.value-text.with-clear-button {\n padding-right: calc(var(--ic-space-xl) + var(--ic-space-xs));\n}\n\n.searchable-select-container {\n align-items: center;\n display: flex;\n width: 100%;\n position: relative;\n}\n\n.expand-icon {\n height: var(--ic-space-lg);\n padding-left: var(--ic-space-xxs);\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon > svg {\n display: inline-block;\n width: var(--ic-space-lg);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-disabled) .expand-icon,\n:host(.ic-select-disabled) .expand-icon > svg > path {\n color: var(--ic-select-disabled-expand-icon-color);\n}\n\n:host(.ic-select-searchable) .expand-icon {\n padding-left: 0;\n height: 2.25rem;\n}\n\n:host(.ic-select-searchable) .expand-icon > svg {\n height: 2.25rem;\n padding: 0 calc(var(--ic-space-xxxs) + var(--ic-space-xxs)) 0\n var(--ic-space-xxs);\n}\n\n:host(.ic-select-searchable:not(.ic-select-disabled)) .expand-icon > svg {\n cursor: pointer;\n}\n\n.expand-icon-open {\n color: var(--ic-select-expand-icon-color);\n}\n\n.expand-icon-open,\n:host(.ic-select-searchable) .expand-icon-open {\n transform: rotateX(180deg);\n}\n\n.placeholder {\n color: var(--ic-select-content-placeholder-text);\n}\n\n:host(.ic-select-disabled) .value-text,\n:host(.ic-select-disabled) .select-input,\n:host(.ic-select-disabled) .placeholder,\n:host(.ic-select-disabled.ic-select-searchable) .select-input::placeholder {\n color: var(--ic-select-content-text-disabled);\n}\n\n.select-input-end {\n display: flex;\n align-items: center;\n}\n\n.clear-button-container {\n display: flex;\n align-items: center;\n}\n\n.divider {\n width: var(--ic-space-1px);\n background-color: var(--ic-select-content-divider);\n margin: var(--ic-space-xxs) 0;\n border-radius: var(--ic-space-1px);\n height: var(--ic-space-lg);\n}\n\n:host(.ic-select-small) .divider {\n height: var(--ic-space-md);\n}\n\n:host(.ic-select-large) .divider {\n height: var(--ic-space-xl);\n}\n\n.clear-button {\n color: var(--ic-select-clear-button);\n position: absolute;\n right: calc(var(--ic-space-xl) + var(--ic-space-xxs) - var(--ic-space-1px));\n border-radius: var(--ic-border-radius);\n transition: box-shadow var(--ic-easing-transition),\n border-radius var(--ic-easing-transition);\n}\n\n.clear-button:focus,\n.clear-button:active {\n background-color: var(--ic-color-focus-inner);\n box-shadow: inset 0 0 0 0.125rem var(--ic-color-focus-outer);\n border-radius: 0.25rem;\n}\n\n.clear-button:focus,\n.clear-button:active * {\n fill: var(--ic-atoms-input-clear-button-focus);\n}\n\n.clear-button.searchable {\n position: static;\n}\n\n.searchable-select-results-status,\n.multi-select-selected-count {\n border: 0;\n clip: rect(0, 0, 0, 0, 0);\n height: var(--ic-space-1px);\n overflow: hidden;\n padding: 0;\n position: absolute;\n white-space: nowrap;\n width: var(--ic-space-1px);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-placeholder-text);\n}\n\n.has-value ::slotted([slot=\"icon\"]) {\n fill: var(--ic-select-content-text);\n}\n\n.readonly ::slotted([slot=\"icon\"]) {\n padding: 0.375rem;\n margin-bottom: 0.75rem;\n}\n\n@media (forced-colors: active) {\n .has-value ::slotted([slot=\"icon\"]) {\n fill: currentcolor;\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Method,\n Prop,\n h,\n State,\n Watch,\n forceUpdate,\n} from \"@stencil/core\";\n\nimport {\n getInputDescribedByText,\n getLabelFromValue,\n hasValidationStatus,\n inheritAttributes,\n onComponentRequiredPropUndefined,\n renderHiddenInput,\n isMobileOrTablet,\n getFilteredMenuOptions,\n getOptionsWithoutGroupTitlesCount,\n addFormResetListener,\n removeFormResetListener,\n removeDisabledFalse,\n checkSlotInChildMutations,\n isSlotUsed,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcInformationStatus,\n IcInformationStatusOrEmpty,\n IcMenuOption,\n IcSearchMatchPositions,\n IcMultiValueEventDetail,\n IcSizes,\n IcThemeMode,\n} from \"../../utils/types\";\nimport Expand from \"./assets/Expand.svg\";\nimport Clear from \"./assets/Clear.svg\";\nimport {\n IcMenuChangeEventDetail,\n IcOptionSelectEventDetail,\n} from \"../ic-menu/ic-menu.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"tabindex\", \"title\"];\n\n/**\n * @slot helper-text - Content is set as the helper text for the select.\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 = false;\n private characterKeyPressTimer?: number;\n private clearButton?: HTMLIcButtonElement;\n private customSelectElement?: HTMLButtonElement;\n private debounceAria?: number;\n private hasSetDefaultValue = false;\n private hasTimedOut = false;\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 = false;\n private searchableMenuItemSelected = false;\n private searchableSelectElement?: HTMLInputElement;\n private timeoutTimer?: number;\n private ungroupedOptions: IcMenuOption[] = [];\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el!: HTMLIcSelectElement;\n\n @State() ariaActiveDescendant?: string;\n @State() clearButtonFocused = false;\n @State() debounceIcInput?: number;\n @State() hiddenInputValue: string | null;\n @State() noOptions: IcMenuOption[] | null = null;\n @State() open = false;\n @State() pressedCharacters = \"\";\n @State() searchableSelectInputValue: string | null = null;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop({ reflect: true }) disabled = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * If `true`, the built in filtering will be disabled for a searchable variant. For example, if options will already be filtered from external source.\n */\n @Prop() disableAutoFiltering = false;\n\n /**\n * The text displayed when there are no options in the option list.\n */\n @Prop() emptyOptionListText = \"No results found\";\n\n /**\n * The <form> element to associate the select with.\n */\n @Prop() form?: string;\n\n /**\n * If `true`, the select will fill the width of the container.\n */\n @Prop() fullWidth = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText = \"\";\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 = 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 = 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 = 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 = \"Loading Error\";\n\n /**\n * The message displayed whilst the options are being loaded externally.\n */\n @Prop() loadingLabel = \"Loading...\";\n\n /**\n * If `true`, multiple options can be selected.\n */\n @Prop() multiple = false;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder = \"Select an option\";\n\n /**\n * If `true`, the readonly state will be set.\n */\n @Prop() readonly = false;\n\n /**\n * If `true`, the select will require a value.\n */\n @Prop() required = false;\n\n /**\n * If `true`, a searchable variant of the select will be displayed which can be typed in to filter options. This functionality is only available on the single-select variant of the select component.\n */\n @Prop() searchable = false;\n\n /**\n * Whether the search string of the searchable select should match the start of or anywhere in the options. Only applies to built in filtering.\n */\n @Prop() searchMatchPosition: IcSearchMatchPositions = \"anywhere\";\n\n /**\n * If `true`, the icOptionSelect event will be fired on enter instead of ArrowUp and ArrowDown on the single select.\n */\n @Prop() selectOnEnter = 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 = false;\n\n /**\n * The size of the select.\n */\n @Prop() size: IcSizes = \"medium\";\n\n /**\n * If using external filtering, set a timeout for when loading takes too long.\n */\n @Prop() timeout?: number;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * The validation status - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The text to display as the validation message.\n */\n @Prop() validationText = \"\";\n\n /**\n * If `true`, the loading state will be triggered when fetching options asynchronously.\n */\n @Prop({ mutable: true }) loading = false;\n @Watch(\"loading\")\n loadingHandler(newValue: boolean): void {\n newValue ? this.triggerLoading() : this.setOptions();\n }\n\n /**\n * The possible selection options.\n */\n @Prop() options: IcMenuOption[] = [];\n @State() filteredOptions: IcMenuOption[] = this.options;\n @State() uniqueOptions: IcMenuOption[] = this.options;\n @Watch(\"options\")\n watchOptionsHandler(): void {\n this.setOptions();\n }\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icInput` event after each keystroke.\n */\n @Prop() debounce = 0;\n @State() currDebounce = this.debounce;\n @Watch(\"debounce\")\n debounceChangedHandler(newValue: number): void {\n if (this.currDebounce !== newValue) {\n this.currDebounce = newValue;\n }\n }\n\n /**\n * The value of the select, reflected by the value of the currently selected option.\n * For the searchable variant, the value is also reflected by the user input.\n * For the multi-select variant, the value must be an array of option values.\n */\n @Prop({ mutable: true }) value: string | string[] | null = null;\n @State() initialValue = this.value;\n @State() inputValueToFilter: string | null = this.value as string;\n @State() currValue: string | string[] | null;\n @Watch(\"value\")\n valueChangedHandler(): void {\n if (this.value !== this.currValue) {\n if (this.value && this.multiple) {\n this.currValue = this.getMultipleOptionsString(this.value as string[])\n ? this.getValueSortedByOptions(this.value as string[])\n : null;\n this.updateMultiSelectedCountAriaLive();\n } else {\n this.currValue = this.getLabelFromValue(this.value as string)\n ? this.value\n : null;\n }\n }\n\n if (this.searchable && this.value) {\n // Only set if value not null - prevents whole input value being cleared when edited\n this.searchableSelectInputValue =\n this.getLabelFromValue(String(this.currValue)) || null;\n }\n }\n\n @Watch(\"open\")\n openChangedHandler(): void {\n this.open ? this.icOpen.emit() : this.icClose.emit();\n }\n\n /**\n * Emitted when the select loses focus.\n */\n @Event() icBlur: EventEmitter<void>;\n\n /**\n * Emitted when the value changes.\n */\n @Event() icChange: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the clear or clear all button is clicked.\n */\n @Event() icClear: EventEmitter<void>;\n\n /**\n * Emitted when the select options menu is closed.\n */\n @Event() icClose: EventEmitter<void>;\n\n /**\n * Emitted when the select gains focus.\n */\n @Event() icFocus: EventEmitter<void>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcMultiValueEventDetail>;\n\n /**\n * Emitted when the select options menu is opened.\n */\n @Event() icOpen: EventEmitter<void>;\n\n /**\n * Emitted when an option is selected.\n * Selecting an option will also trigger an `icChange/onIcChange` due to the value being updated.\n */\n @Event() icOptionSelect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when `multiple` is `true` and an option is deselected.\n */\n @Event() icOptionDeselect: EventEmitter<IcOptionSelectEventDetail>;\n\n /**\n * Emitted when the 'retry loading' button is clicked for a searchable variant.\n */\n @Event() icRetryLoad: EventEmitter<IcMultiValueEventDetail>;\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n const valueInOptions = this.multiple\n ? this.getMultipleOptionsString(this.value as string[])\n : this.getLabelFromValue(this.value as string);\n this.currValue = valueInOptions ? this.value : null;\n this.inheritedAttributes = inheritAttributes(this.el, MUTABLE_ATTRIBUTES);\n\n removeDisabledFalse(this.disabled, this.el);\n\n this.setOptionsValuesFromLabels();\n\n addFormResetListener(this.el, this.handleFormReset);\n\n if (!this.options.length) {\n this.initialOptionsEmpty = true;\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n this.filteredOptions = this.noOptions;\n } else {\n this.setDefaultValue();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n }\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Select\"\n );\n\n if (this.loading) {\n this.triggerLoading();\n }\n\n if (this.searchable) {\n this.hiddenInputValue = this.currValue as string;\n }\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n componentDidRender(): void {\n if (this.nativeSelectElement && !this.disabled) {\n this.setTextColor();\n }\n }\n\n /**\n * Sets focus on the input box.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.focus();\n } else if (this.customSelectElement) {\n this.customSelectElement.focus();\n } else if (this.searchableSelectElement) {\n this.searchableSelectElement.focus();\n }\n }\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]) => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (attributeName) {\n const attribute = this.el.getAttribute(attributeName);\n if (attribute && MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] = attribute;\n forceComponentUpdate = true;\n }\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n private handleRetry = (ev: CustomEvent<IcMultiValueEventDetail>) => {\n if (ev.detail.keyPressed) this.searchableSelectElement?.focus();\n this.blurredBecauseButtonPressed = true;\n this.retryButtonClick = true;\n this.hasSetDefaultValue = true;\n this.icRetryLoad.emit({\n value: this.searchable\n ? this.searchableSelectInputValue\n : this.hiddenInputValue,\n });\n };\n\n private emitIcChange = (value: string | string[] | null) => {\n // If \"Select all\" button clicked, replace value with new value (array of all option values)\n if (this.multiple && !Array.isArray(value) && value !== null) {\n // Update selected options - adds / removes them, in order of option list\n // Create new array if value prop is undefined\n if (this.value) {\n let valueArray = (this.value as string[]).slice();\n\n if (this.value.includes(value)) {\n valueArray.splice(valueArray.indexOf(value), 1);\n } else {\n valueArray.push(value);\n valueArray = this.getValueSortedByOptions(valueArray);\n }\n\n this.value = valueArray.length === 0 ? null : valueArray;\n } else {\n this.value = [value];\n }\n } else {\n this.value = value;\n }\n\n this.icChange.emit({ value: this.multiple ? this.value : value });\n };\n\n private emitIcInput = (value: string) => {\n clearTimeout(this.debounceIcInput);\n this.debounceIcInput = window.setTimeout(\n () => this.icInput.emit({ value }),\n this.currDebounce\n );\n };\n\n private setOptions = () => {\n if (!this.hasTimedOut && this.options !== this.noOptions) {\n this.loading = false;\n clearTimeout(this.timeoutTimer);\n\n if (this.options.length > 0) {\n this.setOptionsValuesFromLabels();\n this.uniqueOptions = this.deduplicateOptions(this.options);\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.uniqueOptions = this.noOptions;\n }\n\n this.filteredOptions = this.uniqueOptions;\n\n if (this.isExternalFiltering()) {\n // When searchable select\n this.noOptions = null;\n this.updateSearchableSelectResultAriaLive();\n this.setDefaultValue();\n } else if (this.initialOptionsEmpty) {\n this.setDefaultValue();\n this.initialOptionsEmpty = false;\n }\n } else if (!this.searchable) {\n this.options = this.noOptions || [];\n }\n };\n\n /**\n * Processes the provided array of IcMenuOptions, removing duplicates and reporting them with a console.warn\n * @param options array of IcMenuOptions\n * @returns a new options object, with all entries possessing a duplicate 'value' field removed\n */\n private deduplicateOptions = (options: IcMenuOption[]) => {\n const uniqueValues: string[] = [];\n const dedupedOptions: IcMenuOption[] = [];\n\n options.forEach((option) => {\n if (option.children) {\n //If an option has children, we will loop through them\n const dedupedChildren: IcMenuOption[] = [];\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 dedupedOptions.push({\n ...option,\n children: dedupedChildren,\n });\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 = () => {\n if (this.options.length > 0) {\n this.options.map((option) => {\n if (!option.value) {\n option.value = option.label;\n }\n });\n }\n };\n\n private setUngroupedOptions = (event: CustomEvent) => {\n this.ungroupedOptions = event.detail.options;\n };\n\n private setTextColor = () => {\n if (this.nativeSelectElement) {\n this.nativeSelectElement.className =\n this.nativeSelectElement.selectedIndex === 0\n ? \"placeholder\"\n : \"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) =>\n getLabelFromValue(value, this.uniqueOptions);\n\n private getMultipleOptionsString = (selectedValues: string[]) =>\n selectedValues\n ?.map((value) => this.getLabelFromValue(value))\n .filter((label) => !!label)\n .join(\", \");\n\n private getFilteredChildMenuOptions = (\n option: IcMenuOption\n ): IcMenuOption => ({\n ...option,\n children:\n option.children &&\n getFilteredMenuOptions(\n option.children,\n this.searchable && !!this.includeDescriptionsInSearch,\n this.searchable\n ? this.searchableSelectInputValue || \"\"\n : this.pressedCharacters,\n this.searchable ? this.searchMatchPosition : \"start\"\n ),\n });\n\n // (For multi-select) get value array, i.e. selected option values, in order they appear in option list\n private getValueSortedByOptions = (value: string[]) => {\n const valueArray = value;\n const valuesFromAllOptions = this.ungroupedOptions.map(\n (option) => option.value\n );\n\n valueArray.sort(\n (a, b) =>\n valuesFromAllOptions.indexOf(a) - valuesFromAllOptions.indexOf(b)\n );\n\n return valueArray;\n };\n\n private handleNativeSelectChange = () => {\n if (this.nativeSelectElement) {\n this.icOptionSelect.emit({ value: this.nativeSelectElement.value });\n this.emitIcChange(this.nativeSelectElement.value);\n }\n this.setTextColor();\n };\n\n // Handle option select for when a custom input box and menu is rendered\n // (rather than native <select> - rendered when viewed on a mobile / tablet screen)\n private handleCustomSelectChange = (\n event: CustomEvent<IcOptionSelectEventDetail>\n ) => {\n const { value, label, optionId } = event.detail;\n\n if (label === this.emptyOptionListText) {\n this.searchableSelectElement?.focus();\n return;\n }\n\n if (this.searchable) {\n this.value = value || null;\n this.searchableMenuItemSelected = true;\n\n // After editing the input, if selecting the same option as before, set the input value to label again\n if (this.value === this.currValue) {\n this.searchableSelectInputValue =\n this.getLabelFromValue(this.value as string) || null;\n }\n\n this.inputValueToFilter = null;\n this.hiddenInputValue =\n this.getValueFromLabel(this.searchableSelectInputValue) || null;\n }\n\n if (value) {\n if (this.multiple && this.value?.includes(value)) {\n this.icOptionDeselect.emit({ value });\n } else {\n this.icOptionSelect.emit({ value });\n }\n }\n\n this.ariaActiveDescendant = optionId;\n this.emitIcChange(value || null);\n };\n\n private handleSelectAllChange = ({\n detail,\n }: CustomEvent<{ select: boolean }>) => {\n const allValues = this.ungroupedOptions\n .filter((option) => !option.disabled)\n .map((option) => option.value);\n\n if (detail.select) {\n // Only emit icOptionSelect for all values that are newly selected\n const unselectedValues = this.value\n ? allValues.filter(\n (value) => this.value && !(this.value as string[]).includes(value)\n )\n : allValues;\n\n unselectedValues.forEach((value) => this.icOptionSelect.emit({ value }));\n } else {\n // Only emit icOptionDeselect for values that were selected\n (this.value as string[]).forEach((value) =>\n this.icOptionDeselect.emit({ value })\n );\n }\n\n this.emitIcChange(detail.select ? allValues : null);\n };\n\n private handleMenuChange = (event: CustomEvent<IcMenuChangeEventDetail>) => {\n this.open = event.detail.open;\n this.pressedCharacters = \"\";\n\n if (this.searchable) this.handleFocusIndicatorDisplay();\n };\n\n // clears the debounce delay when navigating the menu with arrow keys etc\n // to prevent delay in change event, which should only occur when typing in input\n private handleMenuKeyPress = (ev: CustomEvent): void => {\n ev.cancelBubble = true;\n if (!this.multiple) {\n this.handleCharacterKeyDown(ev.detail.key);\n }\n };\n\n private handleFocusIndicatorDisplay = () => {\n const focusIndicator =\n this.el.shadowRoot?.querySelector(\".focus-indicator\");\n\n if (focusIndicator) {\n if (this.open) {\n focusIndicator.classList.add(\"focus-indicator-enabled\");\n } else {\n focusIndicator.classList.remove(\"focus-indicator-enabled\");\n }\n }\n };\n\n private handleMouseDown = (event: Event) => {\n if (!this.open) {\n event.preventDefault();\n }\n };\n\n private isExternalFiltering = () =>\n this.searchable && !!this.disableAutoFiltering;\n\n private handleClick = (event: MouseEvent) => {\n if (!this.open && this.menu) {\n if (this.isExternalFiltering()) {\n this.menu.options = this.filteredOptions;\n } else if (\n !this.hasTimedOut &&\n !this.loading &&\n !this.noOptions?.length &&\n (!this.searchable || this.searchableMenuItemSelected)\n ) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (event.detail !== 0) {\n this.menu?.handleClickOpen();\n }\n };\n\n private handleExpandIconMouseDown = (event: MouseEvent) => {\n if (!this.disabled) {\n event.preventDefault();\n this.searchableSelectElement?.focus();\n this.handleClick(event);\n }\n };\n\n private handleClear = (event: Event) => {\n event.stopPropagation();\n this.hasTimedOut = false;\n clearTimeout(this.timeoutTimer);\n this.clearInput();\n this.emitIcChange(null);\n this.icClear.emit();\n\n if (this.searchable) {\n this.hiddenInputValue = null;\n this.searchableSelectElement?.focus();\n } else {\n this.customSelectElement?.focus();\n }\n };\n\n private handleCharacterKeyDown = (key: string) => {\n // Only close menu when space is pressed if not being used alongside character keys to quickly select options\n if (this.open && key === \" \" && this.pressedCharacters.length === 0) {\n this.setMenuChange(false);\n }\n\n if (key.length !== 1 || this.searchable) {\n this.pressedCharacters = \"\";\n return;\n }\n\n window.clearTimeout(this.characterKeyPressTimer);\n this.characterKeyPressTimer = window.setTimeout(\n () => (this.pressedCharacters = \"\"),\n 1000\n );\n\n if (key !== \" \" || !!this.pressedCharacters) {\n this.pressedCharacters += key;\n this.handleFilter();\n\n if (!this.noOptions) {\n this.emitIcChange(this.filteredOptions[0].value);\n }\n }\n };\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) => {\n if ((event.key !== \"Escape\" && event.key !== \"Tab\") || this.open) {\n event.cancelBubble = true;\n }\n const isArrowKey = event.key === \"ArrowDown\" || event.key === \"ArrowUp\";\n\n if (this.menu && !this.open) {\n if (this.isExternalFiltering() && (event.key === \"Enter\" || isArrowKey)) {\n this.menu.options = this.filteredOptions;\n } else if (!this.hasTimedOut) {\n this.noOptions = null;\n this.menu.options = this.uniqueOptions;\n }\n }\n\n if (this.open && event.key === \"Enter\") {\n this.setMenuChange(false);\n } else {\n if (!isArrowKey || this.noOptions === null) {\n if (event.key !== \" \" || this.pressedCharacters.length <= 0) {\n // Keyboard events get passed onto ic-menu\n this.menu?.handleKeyboardOpen(event);\n }\n if (!this.multiple) {\n this.handleCharacterKeyDown(event.key);\n }\n }\n }\n };\n\n private handleClearButtonFocus = () => {\n this.clearButtonFocused = true;\n };\n\n private handleClearButtonBlur = (ev: FocusEvent) => {\n const retryButton = this.menu?.querySelector(\"#retry-button\");\n if (\n (!this.searchableSelectElement ||\n ev.relatedTarget !== this.searchableSelectElement) &&\n (!retryButton || ev.relatedTarget !== retryButton)\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n }\n this.clearButtonFocused = false;\n };\n\n private handleFilter = () => {\n const options = this.deduplicateOptions(\n this.searchable ? [...this.uniqueOptions] : this.ungroupedOptions\n );\n\n const isGrouped = options.some((option) => !!option.children);\n let newFilteredOptions: IcMenuOption[] = [];\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 newFilteredOptions = options.map((option) =>\n this.includeGroupTitlesInSearch &&\n menuOptionsFiltered.indexOf(option) !== -1\n ? option\n : this.getFilteredChildMenuOptions(option)\n );\n }\n\n if (\n newFilteredOptions.length > 0 &&\n (!isGrouped ||\n newFilteredOptions.some(\n ({ children }) => children && children.length > 0\n ))\n ) {\n this.noOptions = null;\n this.filteredOptions = newFilteredOptions;\n } else {\n this.noOptions = [{ label: this.emptyOptionListText, value: \"\" }];\n this.filteredOptions = this.noOptions;\n }\n };\n\n /**\n * Put the select component into loading state.\n * Replace options with the loading message. If timeout is enabled, set the timeout and once passed, replace options with the loading error message\n */\n private triggerLoading = () => {\n this.hasTimedOut = false;\n this.noOptions = [{ label: this.loadingLabel, value: \"\", loading: true }];\n if (this.filteredOptions !== this.noOptions && this.searchable) {\n this.filteredOptions = this.noOptions;\n } else if (this.uniqueOptions !== this.noOptions && !this.searchable) {\n this.uniqueOptions = this.noOptions;\n }\n if (this.timeout) {\n this.timeoutTimer = window.setTimeout(() => {\n this.loading = false;\n this.hasTimedOut = true;\n this.noOptions = [\n { label: this.loadingErrorLabel, value: \"\", timedOut: true },\n ];\n this.filteredOptions = this.noOptions;\n if (!this.searchable) this.uniqueOptions = this.noOptions;\n }, this.timeout);\n }\n };\n\n private getValueFromLabel = (label: string | null): string | undefined =>\n label && this.uniqueOptions.find((option) => option.label === label)?.value;\n\n private handleSearchableSelectInput = (event: Event) => {\n this.searchableSelectInputValue = (event.target as HTMLInputElement).value;\n this.emitIcInput(this.searchableSelectInputValue);\n\n // De-select previous selection when input is edited\n // Only emit icChange once when editing input\n if (this.value != null) {\n this.emitIcChange(null);\n }\n\n this.hiddenInputValue = null;\n this.inputValueToFilter = this.searchableSelectInputValue;\n this.setMenuChange(true);\n\n if (!this.disableAutoFiltering) {\n this.handleFilter();\n clearTimeout(this.debounceAria);\n\n window.setTimeout(() => {\n this.updateSearchableSelectResultAriaLive();\n }, 800);\n }\n };\n\n private updateSearchableSelectResultAriaLive = () => {\n const searchableSelectResultsStatusEl =\n this.el.shadowRoot?.querySelector<HTMLDivElement>(\n \".searchable-select-results-status\"\n );\n\n if (searchableSelectResultsStatusEl) {\n searchableSelectResultsStatusEl.innerText =\n this.noOptions !== null ? this.emptyOptionListText : \"\";\n }\n };\n\n private updateMultiSelectedCountAriaLive = () => {\n const multiSelectSelectedCountEl =\n this.el.shadowRoot?.querySelector<HTMLDivElement>(\n \".multi-select-selected-count\"\n );\n\n const selectedCount = `${\n this.currValue?.length\n } of ${getOptionsWithoutGroupTitlesCount(this.options)} selected`;\n\n if (\n multiSelectSelectedCountEl &&\n multiSelectSelectedCountEl.innerText !== selectedCount\n ) {\n multiSelectSelectedCountEl.innerText = selectedCount;\n }\n };\n\n private getDefaultValue = (value: string) =>\n this.getLabelFromValue(value) || null;\n\n private setDefaultValue = () => {\n if (!this.hasSetDefaultValue && this.currValue) {\n this.searchableSelectInputValue = this.searchable\n ? this.getDefaultValue(this.currValue as string)\n : null;\n\n this.initialValue = this.currValue;\n this.hasSetDefaultValue = true;\n }\n };\n\n private onFocus = () => {\n this.icFocus.emit();\n };\n\n private onBlur = ({ relatedTarget }: FocusEvent) => {\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\n if (\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 (!this.retryButtonClick) {\n this.setMenuChange(false);\n // Clear input field on blur when searchable if no option is selected\n if (!this.value) {\n this.clearInput();\n }\n }\n this.handleFocusIndicatorDisplay();\n }\n\n this.retryButtonClick = false;\n this.icBlur.emit();\n };\n\n private onTimeoutBlur = (ev: CustomEvent) => {\n if (\n (ev.detail.ev as FocusEvent).relatedTarget !==\n this.searchableSelectElement &&\n !this.blurredBecauseButtonPressed\n ) {\n this.setMenuChange(false);\n this.handleFocusIndicatorDisplay();\n this.icBlur.emit();\n }\n this.blurredBecauseButtonPressed = false;\n };\n\n private handleFormReset = () => {\n this.value = this.initialValue;\n if (this.searchable) {\n this.searchableSelectInputValue = this.getDefaultValue(\n this.value as string\n );\n this.hiddenInputValue = this.value as string;\n }\n };\n\n private clearInput = () => {\n this.noOptions = null;\n\n if (this.searchable) {\n this.searchableSelectElement?.setAttribute(\"value\", \"\");\n this.searchableSelectInputValue = null;\n this.filteredOptions = this.uniqueOptions;\n }\n };\n\n private renderNativeOption = (option: IcMenuOption) => (\n <option\n value={option.value}\n disabled={option.disabled}\n selected={option.value === this.currValue}\n >\n {option.label}\n </option>\n );\n\n render() {\n const {\n size,\n disabled,\n fullWidth,\n helperText,\n hideLabel,\n label,\n menuId,\n multiple,\n name,\n options,\n placeholder,\n readonly,\n required,\n searchable,\n showClearButton,\n validationStatus,\n validationText,\n currValue,\n theme,\n hiddenInputValue,\n open,\n inputId,\n searchableSelectInputValue,\n loading,\n value,\n emptyOptionListText,\n uniqueOptions,\n selectOnEnter,\n form,\n inheritedAttributes,\n ariaActiveDescendant,\n hasTimedOut,\n noOptions,\n filteredOptions,\n clearButtonFocused,\n } = this;\n\n // HTML inputs only accept 'string' for their value\n // Does not cause errors when it is a multi-select - sets value correctly, to a comma-separated string\n renderHiddenInput(\n this.el,\n searchable ? hiddenInputValue : (currValue as string),\n name || inputId,\n disabled\n );\n\n const invalid = `${validationStatus === IcInformationStatus.Error}`;\n\n const describedBy = getInputDescribedByText(\n this.el,\n inputId,\n helperText !== \"\",\n hasValidationStatus(validationStatus, !!disabled)\n ).trim();\n\n const valueLabelString = multiple\n ? this.getMultipleOptionsString(currValue as string[])\n : this.getLabelFromValue(currValue as string);\n\n const isClearable =\n !disabled &&\n (searchable\n ? !!searchableSelectInputValue\n : !!currValue && !loading && showClearButton);\n\n return (\n <Host\n class={{\n \"ic-select-disabled\": disabled,\n \"ic-select-searchable\": searchable,\n [`ic-select-${size}`]: size !== \"medium\",\n \"ic-select-full-width\": fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n onBlur={this.onBlur}\n >\n <ic-input-container readonly={readonly}>\n {!hideLabel && (\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabled}\n readonly={readonly}\n >\n <slot name=\"helper-text\" slot=\"helper-text\"></slot>\n </ic-input-label>\n )}\n <ic-input-component-container\n ref={(el) => (this.anchorEl = el)}\n class={{ \"menu-open\": open }}\n size={size}\n fullWidth={fullWidth}\n disabled={disabled}\n readonly={readonly}\n validationStatus={validationStatus}\n >\n {isSlotUsed(this.el, \"icon\") &&\n !disabled &&\n (!readonly || !!value) && (\n <span\n slot=\"left-icon\"\n class={{\n readonly,\n \"has-value\": !!value,\n }}\n >\n <slot name=\"icon\" />\n </span>\n )}\n {readonly ? (\n <ic-typography>\n <p>{valueLabelString}</p>\n </ic-typography>\n ) : isMobileOrTablet() && !multiple ? (\n <select\n ref={(el) => (this.nativeSelectElement = el)}\n disabled={disabled}\n onChange={this.handleNativeSelectChange}\n required={required}\n id={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={form}\n {...inheritedAttributes}\n >\n <option value=\"\" selected disabled={!showClearButton}>\n {placeholder}\n </option>\n {options.map((option) =>\n option.children ? (\n <optgroup label={option.label}>\n {option.children.map((child) =>\n this.renderNativeOption(child)\n )}\n </optgroup>\n ) : (\n this.renderNativeOption(option)\n )\n )}\n </select>\n ) : searchable ? (\n <div class=\"searchable-select-container\">\n <input\n class={{\n \"value-text\": true,\n \"select-input\": true,\n \"with-clear-button\": !!searchableSelectInputValue,\n }}\n role=\"combobox\"\n autocomplete=\"off\"\n aria-label={label}\n aria-describedby={describedBy}\n aria-activedescendant={ariaActiveDescendant}\n aria-autocomplete=\"list\"\n aria-expanded={`${open}`}\n aria-invalid={invalid}\n aria-required={`${required}`}\n aria-controls={menuId}\n ref={(el) => (this.searchableSelectElement = el)}\n id={inputId}\n value={searchableSelectInputValue || undefined}\n placeholder={placeholder}\n disabled={disabled}\n onInput={this.handleSearchableSelectInput}\n onClick={this.handleClick}\n onKeyDown={this.handleKeyDown}\n onFocus={this.onFocus}\n onBlur={this.onBlur}\n form={form}\n ></input>\n {isClearable && (\n <div class=\"clear-button-container\">\n <ic-button\n id=\"clear-button\"\n ref={(el) => (this.clearButton = el)}\n aria-label={\n searchableSelectInputValue &&\n (currValue === null || loading)\n ? \"Clear input\"\n : \"Clear selection\"\n }\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon-tertiary\"\n theme={clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n <div class=\"divider\"></div>\n </div>\n )}\n <span\n onMouseDown={this.handleExpandIconMouseDown}\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"searchable-select-results-status\"\n ></div>\n </div>\n ) : (\n <div class=\"select-container\">\n <button\n role=\"combobox\"\n class=\"select-input\"\n ref={(el) => (this.customSelectElement = el)}\n id={inputId}\n aria-label={`${label}, ${\n (multiple && currValue\n ? `${\n currValue.length\n } of ${getOptionsWithoutGroupTitlesCount(\n options\n )} selected, ${valueLabelString}`\n : valueLabelString) || placeholder\n }`}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-haspopup=\"listbox\"\n aria-expanded={`${open}`}\n aria-owns={menuId}\n aria-controls={menuId}\n aria-required={`${required}`}\n disabled={disabled}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n onClick={this.handleClick}\n onMouseDown={this.handleMouseDown}\n onKeyDown={this.handleKeyDown}\n >\n <ic-typography\n variant=\"body\"\n class={{\n \"value-text\": true,\n \"with-clear-button\": isClearable,\n placeholder:\n !loading && multiple\n ? !value || value.length < 1\n : !this.getLabelFromValue(currValue as string),\n }}\n >\n {valueLabelString || placeholder}\n </ic-typography>\n <div class=\"select-input-end\">\n {isClearable && <div class=\"divider\"></div>}\n <span\n class={{\n \"expand-icon\": true,\n \"expand-icon-open\": open,\n }}\n innerHTML={Expand}\n aria-hidden=\"true\"\n />\n </div>\n </button>\n {isClearable && (\n <ic-button\n id=\"clear-button\"\n aria-label=\"Clear selection\"\n class=\"clear-button\"\n innerHTML={Clear}\n onClick={this.handleClear}\n onFocus={this.handleClearButtonFocus}\n onBlur={this.handleClearButtonBlur}\n size={size}\n variant=\"icon-tertiary\"\n theme={clearButtonFocused ? \"light\" : \"dark\"}\n ></ic-button>\n )}\n </div>\n )}\n </ic-input-component-container>\n {(!isMobileOrTablet() || multiple) && (\n <ic-menu\n class={{\n \"no-results\":\n loading ||\n hasTimedOut ||\n noOptions?.[0]?.label === 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={open}\n options={searchable ? filteredOptions : uniqueOptions}\n value={multiple ? (currValue as string[]) : (currValue as string)}\n fullWidth={fullWidth}\n selectOnEnter={selectOnEnter}\n onMenuStateChange={this.handleMenuChange}\n onMenuOptionSelect={this.handleCustomSelectChange}\n onMenuOptionSelectAll={this.handleSelectAllChange}\n onMenuKeyPress={this.handleMenuKeyPress}\n onUngroupedOptionsSet={this.setUngroupedOptions}\n onRetryButtonClicked={this.handleRetry}\n parentEl={this.el}\n onTimeoutBlur={this.onTimeoutBlur}\n activationType={\n searchable || multiple || selectOnEnter ? \"manual\" : \"automatic\"\n }\n closeOnSelect={!multiple}\n multiSelect={multiple ? true : false}\n searchableSelect={searchable ? true : false}\n ></ic-menu>\n )}\n {multiple && (\n <div\n aria-live=\"polite\"\n role=\"status\"\n class=\"multi-select-selected-count\"\n ></div>\n )}\n {hasValidationStatus(validationStatus, disabled) && (\n <ic-input-validation\n class={{ \"menu-open\": open }}\n ariaLiveMode=\"polite\"\n status={validationStatus}\n message={validationText}\n for={inputId}\n ></ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ import{r as e,c as o,h as t,H as i,g as r}from"./p-8e4e97b4.js";import{a}from"./p-641c26c4.js";import{g as n,f as c,h as s,a as d,i as l,v as f,I as b}from"./p-6ceedfa8.js";const p='/*! 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;--footer-compliance-padding:1rem 0}:host(.ic-footer-sparse){--footer-links-padding:1.5rem 0;--footer-logo-margin-bottom:calc(var(--ic-space-md) + var(--ic-space-xxs));--footer-link-inner-flex-direction:row}:host(.ic-footer-small){--footer-links-padding:0 0;--footer-logo-margin-bottom:var(--ic-space-md);--footer-link-inner-flex-direction:column}:host(.ic-footer-foreground-dark){--ic-footer-background:var(--ic-brand-color-secondary-light);--ic-footer-bottom-background:var(--ic-brand-color-tertiary-light);--ic-footer-keyline:var(--ic-state-layer-darken-20);--ic-footer-text:var(--ic-color-text-primary-light);--ic-footer-link:var(--ic-color-text-primary-light);--ic-footer-icon:var(--ic-color-icon-neutral);--ic-footer-chevron-icon:var(--ic-color-icon-neutral);--ic-footer-logo:var(--ic-color-icon-neutral);--ic-footer-hover:var(--ic-architectural-700-state-layer-10);--ic-footer-pressed:var(--ic-architectural-700-state-layer-20)}:host(.ic-footer-small.ic-footer-ungrouped){--footer-links-padding:var(--ic-space-md) 0 0 0}footer{display:flex;flex-direction:column;width:100%}.footer-description{background-color:var(--ic-footer-background);color:var(--ic-footer-text);--ic-typography-color:var(--ic-footer-text);border-bottom:var(--ic-space-1px) solid var(--ic-footer-keyline)}.footer-description-inner{padding:1rem 0}.footer-links{padding:var(--footer-links-padding);background-color:var(--ic-footer-background);color:var(--ic-footer-link);--ic-typography-color:var(--ic-footer-link)}.footer-links-inner{display:flex;flex-direction:var(--footer-link-inner-flex-direction)}.footer-compliance{background-color:var(--ic-footer-bottom-background);color:var(--ic-footer-text);--ic-typography-color:var(--ic-footer-text)}.footer-compliance-inner{padding:var(--footer-compliance-padding)}.footer-logo{margin-bottom:var(--footer-logo-margin-bottom);display:flex;gap:var(--ic-space-xxl)}.footer-logo>::slotted(){margin-right:var(--ic-space-md)}.footer-caption{margin-bottom:var(--ic-space-md)}.classification-spacing{margin-bottom:var(--ic-space-lg)}@media (forced-colors: active){footer{border-top:var(--ic-border-hc)}}';const m=p;const g=class{constructor(t){e(this,t);this.footerResized=o(this,"footerResized",7);this.resizeObserver=null;this.hostMutationObserver=null;this.deviceSize=a.XL;this.foregroundColor=n();this.aligned="left";this.breakpoint="medium";this.copyright=true;this.groupLinks=false;this.resizeObserverCallback=e=>{if(e!==this.deviceSize){this.deviceSize=e}this.footerResized.emit()};this.runResizeObserver=()=>{if(this.footerEl){this.resizeObserver=new ResizeObserver((()=>{const e=c();this.resizeObserverCallback(e)}));this.resizeObserver.observe(this.footerEl)}}}disconnectedCallback(){var e;if(this.resizeObserver!==null){this.resizeObserver.disconnect()}(e=this.hostMutationObserver)===null||e===void 0?void 0:e.disconnect()}componentWillLoad(){this.deviceSize=c()}componentDidLoad(){s(this.runResizeObserver);this.hostMutationObserver=new MutationObserver((e=>d(e,"link",this)));this.hostMutationObserver.observe(this.el,{childList:true})}brandChangeHandler(e){this.foregroundColor=e.detail.mode}isSmall(){const e=this.breakpoint;return e==="extra small"?this.deviceSize<a.XS:e==="small"?this.deviceSize<a.S:e==="medium"?this.deviceSize<a.M:e==="large"?this.deviceSize<a.L:e==="extra large"?this.deviceSize<a.XL:false}render(){const{aligned:e,caption:o,copyright:r,description:n,deviceSize:c,el:s,foregroundColor:d,groupLinks:p}=this;const m=this.isSmall();const g=l(s,"logo")||l(s,"caption")||o||r;return t(i,{key:"5e9f3b92157b9ffa5fc6e2dbe8f8a5c6a63a6237",class:{["ic-footer"]:true,[`ic-footer-${m?"small":"sparse"}`]:true,[`ic-footer-${p?"grouped":"ungrouped"}`]:true,[`ic-footer-foreground-${d}`]:true,[`ic-footer-${b.Dark}`]:d===b.Dark,[`ic-footer-${b.Light}`]:d===b.Light}},t("footer",{key:"cfae5dcdd5a431bba915b83e5ef2ae2347d5bb6d",ref:e=>this.footerEl=e},(l(s,"description")||n)&&t("div",{key:"9f960b8fcae0e3281b177bcfe1adf365657406dc",class:"footer-description"},t("ic-section-container",{key:"49455d77e8d5e9e8a1199dc0dcc00226291e9adc",aligned:e,fullHeight:true},t("div",{key:"dab1fa34ca43acd9ff4c354f324c7c426d53c77b",class:"footer-description-inner"},t("ic-typography",{key:"484158672386c4fed447390ab0d92bfd759a9272",variant:"body"},t("slot",{key:"4a500553fd0f76a8d4f7ef8410dbd927896561b1",name:"description"},n))))),l(s,"link")&&t("div",{key:"ed8613714e2bf4d79cd062f55f2b716d3e0cd304",class:"footer-links"},p&&m?t("div",{class:"footer-links-inner",role:"list"},t("slot",{name:"link"})):t("ic-section-container",{fullHeight:true,aligned:e},t("div",{class:"footer-links-inner",role:"list"},t("slot",{name:"link"})))),g&&t("div",{key:"c3876f5fa89d39f28e64db1bc0fca90978102a01",class:"footer-compliance"},t("ic-section-container",{key:"3e169ea49bcd2698b84c58f8105b0915777d8bf3",aligned:e,fullHeight:true},t("div",{key:"9cfaa13eb736d3aa44b15db43221bf28bf4deb57",class:"footer-compliance-inner"},l(s,"logo")&&t("div",{key:"853fdedd70405ebb2e96cec2adc6407e5ed11538",class:"footer-logo"},t("slot",{key:"4eaaad7a4f17cd51cbdab414cdbadf3096891d38",name:"logo"})),(l(s,"caption")||o)&&t("div",{key:"44a611218c4ea0f494df1551ecb26a8687d57a95",class:"footer-caption"},t("ic-typography",{key:"b970144c7d85b7e05e319233be68cc91ef2d0476",variant:c<=a.M?"caption":"body"},t("slot",{key:"512d173a680ddd65b3583bada7530aa67d3f1f98",name:"caption"},o))),r&&t("div",{key:"604ac3c72ae99883f27fdb609202782f6069bfde",class:{["footer-copyright"]:true,["classification-spacing"]:f()}},t("ic-typography",{key:"144bbc0144a865f8a55a1df5606cea9dfa87b5e8",variant:c<=a.M?"caption-uppercase":"label-uppercase"},"© Crown Copyright")))))))}get el(){return r(this)}};g.style=m;export{g as ic_footer};
2
+ //# sourceMappingURL=p-46423f42.entry.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["icFooterCss","IcFooterStyle0","Footer","constructor","hostRef","this","resizeObserver","hostMutationObserver","deviceSize","IC_DEVICE_SIZES","XL","foregroundColor","getBrandForegroundAppearance","aligned","breakpoint","copyright","groupLinks","resizeObserverCallback","currSize","footerResized","emit","runResizeObserver","footerEl","ResizeObserver","getCurrentDeviceSize","observe","disconnectedCallback","disconnect","_a","componentWillLoad","componentDidLoad","checkResizeObserver","MutationObserver","mutationList","renderDynamicChildSlots","el","childList","brandChangeHandler","ev","detail","mode","isSmall","bp","XS","S","M","L","render","caption","description","small","showComplianceSection","isSlotUsed","h","Host","key","class","IcBrandForegroundEnum","Dark","Light","ref","fullHeight","variant","name","role","hasClassificationBanner"],"sources":["src/components/ic-footer/ic-footer.css?tag=ic-footer&encapsulation=shadow","src/components/ic-footer/ic-footer.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n\n --footer-compliance-padding: 1rem 0;\n}\n\n:host(.ic-footer-sparse) {\n --footer-links-padding: 1.5rem 0;\n --footer-logo-margin-bottom: calc(var(--ic-space-md) + var(--ic-space-xxs));\n --footer-link-inner-flex-direction: row;\n}\n\n:host(.ic-footer-small) {\n --footer-links-padding: 0 0;\n --footer-logo-margin-bottom: var(--ic-space-md);\n --footer-link-inner-flex-direction: column;\n}\n\n:host(.ic-footer-foreground-dark) {\n --ic-footer-background: var(--ic-brand-color-secondary-light);\n --ic-footer-bottom-background: var(--ic-brand-color-tertiary-light);\n --ic-footer-keyline: var(--ic-state-layer-darken-20);\n --ic-footer-text: var(--ic-color-text-primary-light);\n --ic-footer-link: var(--ic-color-text-primary-light);\n --ic-footer-icon: var(--ic-color-icon-neutral);\n --ic-footer-chevron-icon: var(--ic-color-icon-neutral);\n --ic-footer-logo: var(--ic-color-icon-neutral);\n --ic-footer-hover: var(--ic-architectural-700-state-layer-10);\n --ic-footer-pressed: var(--ic-architectural-700-state-layer-20);\n}\n\n:host(.ic-footer-small.ic-footer-ungrouped) {\n --footer-links-padding: var(--ic-space-md) 0 0 0;\n}\n\n/* Main inner footer element */\nfooter {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* Description */\n\n.footer-description {\n background-color: var(--ic-footer-background);\n color: var(--ic-footer-text);\n\n --ic-typography-color: var(--ic-footer-text);\n\n border-bottom: var(--ic-space-1px) solid var(--ic-footer-keyline);\n}\n\n.footer-description-inner {\n padding: 1rem 0;\n}\n\n/* Links */\n\n.footer-links {\n padding: var(--footer-links-padding);\n background-color: var(--ic-footer-background);\n color: var(--ic-footer-link);\n\n --ic-typography-color: var(--ic-footer-link);\n}\n\n.footer-links-inner {\n display: flex;\n flex-direction: var(--footer-link-inner-flex-direction);\n}\n\n/* Compliance */\n\n.footer-compliance {\n background-color: var(--ic-footer-bottom-background);\n color: var(--ic-footer-text);\n\n --ic-typography-color: var(--ic-footer-text);\n}\n\n.footer-compliance-inner {\n padding: var(--footer-compliance-padding);\n}\n\n.footer-logo {\n margin-bottom: var(--footer-logo-margin-bottom);\n display: flex;\n gap: var(--ic-space-xxl);\n}\n\n.footer-logo > ::slotted() {\n margin-right: var(--ic-space-md);\n}\n\n.footer-caption {\n margin-bottom: var(--ic-space-md);\n}\n\n.classification-spacing {\n margin-bottom: var(--ic-space-lg);\n}\n\n@media (forced-colors: active) {\n footer {\n border-top: var(--ic-border-hc);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n} from \"@stencil/core\";\nimport { IC_DEVICE_SIZES } from \"../../utils/constants\";\nimport {\n getCurrentDeviceSize,\n getBrandForegroundAppearance,\n checkResizeObserver,\n hasClassificationBanner,\n isSlotUsed,\n renderDynamicChildSlots,\n} from \"../../utils/helpers\";\nimport {\n IcAlignment,\n IcBrand,\n IcBrandForeground,\n IcBrandForegroundEnum,\n} from \"../../utils/types\";\nimport { IcFooterBreakpoints } from \"./ic-footer.types\";\n\n/**\n * @slot description - Content will be rendered at the top of the footer.\n * @slot link - Content will be rendered between description and logos.\n * @slot logo - Content will be rendered underneath footer links.\n * @slot caption - Content will be rendered above Crown Copyright.\n */\n\n@Component({\n tag: \"ic-footer\",\n styleUrl: \"ic-footer.css\",\n shadow: true,\n})\nexport class Footer {\n private footerEl?: HTMLElement;\n private resizeObserver: ResizeObserver | null = null;\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el: HTMLIcFooterElement;\n\n @State() deviceSize: number = IC_DEVICE_SIZES.XL;\n @State() foregroundColor: IcBrandForeground = getBrandForegroundAppearance();\n\n /**\n * The alignment of the section containers used within the footer.\n */\n @Prop() aligned?: IcAlignment = \"left\";\n\n /**\n * The screen size breakpoint at which to switch to the small layout.\n */\n @Prop() breakpoint?: IcFooterBreakpoints = \"medium\";\n\n /**\n * The caption displayed at the bottom of the footer.\n */\n @Prop() caption?: string;\n\n /**\n * If `true`, the footer will display the crown copyright at the bottom.\n */\n @Prop() copyright?: boolean = true;\n\n /**\n * The description displayed at the top of the footer.\n */\n @Prop() description?: string;\n\n /**\n * If `true`, the footer will be set up to handle link groups instead of standalone links.\n */\n @Prop() groupLinks?: boolean = false;\n\n /**\n * @internal Triggers on page resize and triggers style changes in footer links and link groups\n */\n @Event() footerResized: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.deviceSize = getCurrentDeviceSize();\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n\n this.hostMutationObserver = new MutationObserver((mutationList) => {\n return renderDynamicChildSlots(mutationList, \"link\", this);\n });\n\n this.hostMutationObserver.observe(this.el, {\n childList: true,\n });\n }\n\n @Listen(\"brandChange\", { target: \"document\" })\n brandChangeHandler(ev: CustomEvent<IcBrand>): void {\n this.foregroundColor = ev.detail.mode;\n }\n\n private isSmall() {\n const bp = this.breakpoint;\n\n return bp === \"extra small\"\n ? this.deviceSize < IC_DEVICE_SIZES.XS\n : bp === \"small\"\n ? this.deviceSize < IC_DEVICE_SIZES.S\n : bp === \"medium\"\n ? this.deviceSize < IC_DEVICE_SIZES.M\n : bp === \"large\"\n ? this.deviceSize < IC_DEVICE_SIZES.L\n : bp === \"extra large\"\n ? this.deviceSize < IC_DEVICE_SIZES.XL\n : false;\n }\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n }\n this.footerResized.emit();\n };\n\n private runResizeObserver = () => {\n if (this.footerEl) {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(this.footerEl);\n }\n };\n\n render() {\n const {\n aligned,\n caption,\n copyright,\n description,\n deviceSize,\n el,\n foregroundColor,\n groupLinks,\n } = this;\n const small = this.isSmall();\n\n const showComplianceSection =\n isSlotUsed(el, \"logo\") ||\n isSlotUsed(el, \"caption\") ||\n caption ||\n copyright;\n\n return (\n <Host\n class={{\n [\"ic-footer\"]: true,\n [`ic-footer-${small ? \"small\" : \"sparse\"}`]: true,\n [`ic-footer-${groupLinks ? \"grouped\" : \"ungrouped\"}`]: true,\n [`ic-footer-foreground-${foregroundColor}`]: true,\n // Slots will be able to infer their own color\n [`ic-footer-${IcBrandForegroundEnum.Dark}`]:\n foregroundColor === IcBrandForegroundEnum.Dark,\n [`ic-footer-${IcBrandForegroundEnum.Light}`]:\n foregroundColor === IcBrandForegroundEnum.Light,\n }}\n >\n <footer ref={(el) => (this.footerEl = el)}>\n {/* Description */}\n {(isSlotUsed(el, \"description\") || description) && (\n <div class=\"footer-description\">\n <ic-section-container aligned={aligned} fullHeight={true}>\n <div class=\"footer-description-inner\">\n <ic-typography variant=\"body\">\n <slot name=\"description\">{description}</slot>\n </ic-typography>\n </div>\n </ic-section-container>\n </div>\n )}\n\n {/* Links */}\n {isSlotUsed(el, \"link\") && (\n <div class=\"footer-links\">\n {groupLinks && small ? (\n <div class=\"footer-links-inner\" role=\"list\">\n <slot name=\"link\" />\n </div>\n ) : (\n <ic-section-container fullHeight aligned={aligned}>\n <div class=\"footer-links-inner\" role=\"list\">\n <slot name=\"link\" />\n </div>\n </ic-section-container>\n )}\n </div>\n )}\n\n {/* Compliance (logo, caption, copyright) */}\n {showComplianceSection && (\n <div class=\"footer-compliance\">\n <ic-section-container aligned={aligned} fullHeight={true}>\n <div class=\"footer-compliance-inner\">\n {isSlotUsed(el, \"logo\") && (\n <div class=\"footer-logo\">\n <slot name=\"logo\" />\n </div>\n )}\n {(isSlotUsed(el, \"caption\") || caption) && (\n <div class=\"footer-caption\">\n <ic-typography\n variant={\n deviceSize <= IC_DEVICE_SIZES.M ? \"caption\" : \"body\"\n }\n >\n <slot name=\"caption\">{caption}</slot>\n </ic-typography>\n </div>\n )}\n {copyright && (\n <div\n class={{\n [\"footer-copyright\"]: true,\n [\"classification-spacing\"]: hasClassificationBanner(),\n }}\n >\n <ic-typography\n variant={\n deviceSize <= IC_DEVICE_SIZES.M\n ? \"caption-uppercase\"\n : \"label-uppercase\"\n }\n >\n &copy; Crown Copyright\n </ic-typography>\n </div>\n )}\n </div>\n </ic-section-container>\n </div>\n )}\n </footer>\n </Host>\n );\n }\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["icFooterCss","IcFooterStyle0","Footer","constructor","hostRef","this","resizeObserver","hostMutationObserver","deviceSize","IC_DEVICE_SIZES","XL","foregroundColor","getBrandForegroundAppearance","aligned","breakpoint","copyright","groupLinks","resizeObserverCallback","currSize","footerResized","emit","runResizeObserver","footerEl","ResizeObserver","getCurrentDeviceSize","observe","disconnectedCallback","disconnect","_a","componentWillLoad","componentDidLoad","checkResizeObserver","MutationObserver","mutationList","renderDynamicChildSlots","el","childList","brandChangeHandler","ev","detail","mode","isSmall","bp","XS","S","M","L","render","caption","description","small","showComplianceSection","isSlotUsed","h","Host","key","class","IcBrandForegroundEnum","Dark","Light","ref","fullHeight","variant","name","role","hasClassificationBanner"],"sources":["src/components/ic-footer/ic-footer.css?tag=ic-footer&encapsulation=shadow","src/components/ic-footer/ic-footer.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n display: block;\n\n --footer-compliance-padding: 1rem 0;\n}\n\n:host(.ic-footer-sparse) {\n --footer-links-padding: 1.5rem 0;\n --footer-logo-margin-bottom: calc(var(--ic-space-md) + var(--ic-space-xxs));\n --footer-link-inner-flex-direction: row;\n}\n\n:host(.ic-footer-small) {\n --footer-links-padding: 0 0;\n --footer-logo-margin-bottom: var(--ic-space-md);\n --footer-link-inner-flex-direction: column;\n}\n\n:host(.ic-footer-foreground-dark) {\n --ic-footer-background: var(--ic-brand-color-secondary-light);\n --ic-footer-bottom-background: var(--ic-brand-color-tertiary-light);\n --ic-footer-keyline: var(--ic-state-layer-darken-20);\n --ic-footer-text: var(--ic-color-text-primary-light);\n --ic-footer-link: var(--ic-color-text-primary-light);\n --ic-footer-icon: var(--ic-color-icon-neutral);\n --ic-footer-chevron-icon: var(--ic-color-icon-neutral);\n --ic-footer-logo: var(--ic-color-icon-neutral);\n --ic-footer-hover: var(--ic-architectural-700-state-layer-10);\n --ic-footer-pressed: var(--ic-architectural-700-state-layer-20);\n}\n\n:host(.ic-footer-small.ic-footer-ungrouped) {\n --footer-links-padding: var(--ic-space-md) 0 0 0;\n}\n\n/* Main inner footer element */\nfooter {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n\n/* Description */\n\n.footer-description {\n background-color: var(--ic-footer-background);\n color: var(--ic-footer-text);\n\n --ic-typography-color: var(--ic-footer-text);\n\n border-bottom: var(--ic-space-1px) solid var(--ic-footer-keyline);\n}\n\n.footer-description-inner {\n padding: 1rem 0;\n}\n\n/* Links */\n\n.footer-links {\n padding: var(--footer-links-padding);\n background-color: var(--ic-footer-background);\n color: var(--ic-footer-link);\n\n --ic-typography-color: var(--ic-footer-link);\n}\n\n.footer-links-inner {\n display: flex;\n flex-direction: var(--footer-link-inner-flex-direction);\n}\n\n/* Compliance */\n\n.footer-compliance {\n background-color: var(--ic-footer-bottom-background);\n color: var(--ic-footer-text);\n\n --ic-typography-color: var(--ic-footer-text);\n}\n\n.footer-compliance-inner {\n padding: var(--footer-compliance-padding);\n}\n\n.footer-logo {\n margin-bottom: var(--footer-logo-margin-bottom);\n display: flex;\n gap: var(--ic-space-xxl);\n}\n\n.footer-logo > ::slotted() {\n margin-right: var(--ic-space-md);\n}\n\n.footer-caption {\n margin-bottom: var(--ic-space-md);\n}\n\n.classification-spacing {\n margin-bottom: var(--ic-space-lg);\n}\n\n@media (forced-colors: active) {\n footer {\n border-top: var(--ic-border-hc);\n }\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n h,\n Host,\n Listen,\n Prop,\n State,\n} from \"@stencil/core\";\nimport { IC_DEVICE_SIZES } from \"../../utils/constants\";\nimport {\n getCurrentDeviceSize,\n getBrandForegroundAppearance,\n checkResizeObserver,\n hasClassificationBanner,\n isSlotUsed,\n renderDynamicChildSlots,\n} from \"../../utils/helpers\";\nimport {\n IcAlignment,\n IcBrand,\n IcBrandForeground,\n IcBrandForegroundEnum,\n} from \"../../utils/types\";\nimport { IcFooterBreakpoints } from \"./ic-footer.types\";\n\n/**\n * @slot description - Content will be rendered at the top of the footer.\n * @slot link - Content will be rendered between description and logos.\n * @slot logo - Content will be rendered underneath footer links.\n * @slot caption - Content will be rendered above Crown Copyright.\n */\n\n@Component({\n tag: \"ic-footer\",\n styleUrl: \"ic-footer.css\",\n shadow: true,\n})\nexport class Footer {\n private footerEl?: HTMLElement;\n private resizeObserver: ResizeObserver | null = null;\n private hostMutationObserver: MutationObserver | null = null;\n\n @Element() el: HTMLIcFooterElement;\n\n @State() deviceSize: number = IC_DEVICE_SIZES.XL;\n @State() foregroundColor: IcBrandForeground = getBrandForegroundAppearance();\n\n /**\n * The alignment of the section containers used within the footer.\n */\n @Prop() aligned?: IcAlignment = \"left\";\n\n /**\n * The screen size breakpoint at which to switch to the small layout.\n */\n @Prop() breakpoint?: IcFooterBreakpoints = \"medium\";\n\n /**\n * The caption displayed at the bottom of the footer.\n */\n @Prop() caption?: string;\n\n /**\n * If `true`, the footer will display the crown copyright at the bottom.\n */\n @Prop() copyright?: boolean = true;\n\n /**\n * The description displayed at the top of the footer.\n */\n @Prop() description?: string;\n\n /**\n * If `true`, the footer will be set up to handle link groups instead of standalone links.\n */\n @Prop() groupLinks?: boolean = false;\n\n /**\n * @internal Triggers on page resize and triggers style changes in footer links and link groups\n */\n @Event() footerResized: EventEmitter<void>;\n\n disconnectedCallback(): void {\n if (this.resizeObserver !== null) {\n this.resizeObserver.disconnect();\n }\n\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n this.deviceSize = getCurrentDeviceSize();\n }\n\n componentDidLoad(): void {\n checkResizeObserver(this.runResizeObserver);\n\n this.hostMutationObserver = new MutationObserver((mutationList) => {\n return renderDynamicChildSlots(mutationList, \"link\", this);\n });\n\n this.hostMutationObserver.observe(this.el, {\n childList: true,\n });\n }\n\n @Listen(\"brandChange\", { target: \"document\" })\n brandChangeHandler(ev: CustomEvent<IcBrand>): void {\n this.foregroundColor = ev.detail.mode;\n }\n\n private isSmall() {\n const bp = this.breakpoint;\n\n return bp === \"extra small\"\n ? this.deviceSize < IC_DEVICE_SIZES.XS\n : bp === \"small\"\n ? this.deviceSize < IC_DEVICE_SIZES.S\n : bp === \"medium\"\n ? this.deviceSize < IC_DEVICE_SIZES.M\n : bp === \"large\"\n ? this.deviceSize < IC_DEVICE_SIZES.L\n : bp === \"extra large\"\n ? this.deviceSize < IC_DEVICE_SIZES.XL\n : false;\n }\n\n private resizeObserverCallback = (currSize: number) => {\n if (currSize !== this.deviceSize) {\n this.deviceSize = currSize;\n }\n this.footerResized.emit();\n };\n\n private runResizeObserver = () => {\n if (this.footerEl) {\n this.resizeObserver = new ResizeObserver(() => {\n const currSize = getCurrentDeviceSize();\n this.resizeObserverCallback(currSize);\n });\n\n this.resizeObserver.observe(this.footerEl);\n }\n };\n\n render() {\n const {\n aligned,\n caption,\n copyright,\n description,\n deviceSize,\n el,\n foregroundColor,\n groupLinks,\n } = this;\n const small = this.isSmall();\n\n const showComplianceSection =\n isSlotUsed(el, \"logo\") ||\n isSlotUsed(el, \"caption\") ||\n caption ||\n copyright;\n\n return (\n <Host\n class={{\n [\"ic-footer\"]: true,\n [`ic-footer-${small ? \"small\" : \"sparse\"}`]: true,\n [`ic-footer-${groupLinks ? \"grouped\" : \"ungrouped\"}`]: true,\n [`ic-footer-foreground-${foregroundColor}`]: true,\n // Slots will be able to infer their own color\n [`ic-footer-${IcBrandForegroundEnum.Dark}`]:\n foregroundColor === IcBrandForegroundEnum.Dark,\n [`ic-footer-${IcBrandForegroundEnum.Light}`]:\n foregroundColor === IcBrandForegroundEnum.Light,\n }}\n >\n <footer ref={(el) => (this.footerEl = el)}>\n {/* Description */}\n {(isSlotUsed(el, \"description\") || description) && (\n <div class=\"footer-description\">\n <ic-section-container aligned={aligned} fullHeight={true}>\n <div class=\"footer-description-inner\">\n <ic-typography variant=\"body\">\n <slot name=\"description\">{description}</slot>\n </ic-typography>\n </div>\n </ic-section-container>\n </div>\n )}\n\n {/* Links */}\n {isSlotUsed(el, \"link\") && (\n <div class=\"footer-links\">\n {groupLinks && small ? (\n <div class=\"footer-links-inner\" role=\"list\">\n <slot name=\"link\" />\n </div>\n ) : (\n <ic-section-container fullHeight aligned={aligned}>\n <div class=\"footer-links-inner\" role=\"list\">\n <slot name=\"link\" />\n </div>\n </ic-section-container>\n )}\n </div>\n )}\n\n {/* Compliance (logo, caption, copyright) */}\n {showComplianceSection && (\n <div class=\"footer-compliance\">\n <ic-section-container aligned={aligned} fullHeight={true}>\n <div class=\"footer-compliance-inner\">\n {isSlotUsed(el, \"logo\") && (\n <div class=\"footer-logo\">\n <slot name=\"logo\" />\n </div>\n )}\n {(isSlotUsed(el, \"caption\") || caption) && (\n <div class=\"footer-caption\">\n <ic-typography\n variant={\n deviceSize <= IC_DEVICE_SIZES.M ? \"caption\" : \"body\"\n }\n >\n <slot name=\"caption\">{caption}</slot>\n </ic-typography>\n </div>\n )}\n {copyright && (\n <div\n class={{\n [\"footer-copyright\"]: true,\n [\"classification-spacing\"]: hasClassificationBanner(),\n }}\n >\n <ic-typography\n variant={\n deviceSize <= IC_DEVICE_SIZES.M\n ? \"caption-uppercase\"\n : \"label-uppercase\"\n }\n >\n &copy; Crown Copyright\n </ic-typography>\n </div>\n )}\n </div>\n </ic-section-container>\n </div>\n )}\n </footer>\n </Host>\n );\n }\n}\n"],"mappings":"6KAAA,MAAMA,EAAc,47IACpB,MAAAC,EAAeD,E,MCuCFE,EAAM,MALnB,WAAAC,CAAAC,G,uDAOUC,KAAAC,eAAwC,KACxCD,KAAAE,qBAAgD,KAI/CF,KAAAG,WAAqBC,EAAgBC,GACrCL,KAAAM,gBAAqCC,IAKtCP,KAAAQ,QAAwB,OAKxBR,KAAAS,WAAmC,SAUnCT,KAAAU,UAAsB,KAUtBV,KAAAW,WAAuB,MAoDvBX,KAAAY,uBAA0BC,IAChC,GAAIA,IAAab,KAAKG,WAAY,CAChCH,KAAKG,WAAaU,C,CAEpBb,KAAKc,cAAcC,MAAM,EAGnBf,KAAAgB,kBAAoB,KAC1B,GAAIhB,KAAKiB,SAAU,CACjBjB,KAAKC,eAAiB,IAAIiB,gBAAe,KACvC,MAAML,EAAWM,IACjBnB,KAAKY,uBAAuBC,EAAS,IAGvCb,KAAKC,eAAemB,QAAQpB,KAAKiB,S,GA3DrC,oBAAAI,G,MACE,GAAIrB,KAAKC,iBAAmB,KAAM,CAChCD,KAAKC,eAAeqB,Y,EAGtBC,EAAAvB,KAAKE,wBAAoB,MAAAqB,SAAA,SAAAA,EAAED,Y,CAG7B,iBAAAE,GACExB,KAAKG,WAAagB,G,CAGpB,gBAAAM,GACEC,EAAoB1B,KAAKgB,mBAEzBhB,KAAKE,qBAAuB,IAAIyB,kBAAkBC,GACzCC,EAAwBD,EAAc,OAAQ5B,QAGvDA,KAAKE,qBAAqBkB,QAAQpB,KAAK8B,GAAI,CACzCC,UAAW,M,CAKf,kBAAAC,CAAmBC,GACjBjC,KAAKM,gBAAkB2B,EAAGC,OAAOC,I,CAG3B,OAAAC,GACN,MAAMC,EAAKrC,KAAKS,WAEhB,OAAO4B,IAAO,cACVrC,KAAKG,WAAaC,EAAgBkC,GAClCD,IAAO,QACPrC,KAAKG,WAAaC,EAAgBmC,EAClCF,IAAO,SACPrC,KAAKG,WAAaC,EAAgBoC,EAClCH,IAAO,QACPrC,KAAKG,WAAaC,EAAgBqC,EAClCJ,IAAO,cACPrC,KAAKG,WAAaC,EAAgBC,GAClC,K,CAqBN,MAAAqC,GACE,MAAMlC,QACJA,EAAOmC,QACPA,EAAOjC,UACPA,EAASkC,YACTA,EAAWzC,WACXA,EAAU2B,GACVA,EAAExB,gBACFA,EAAeK,WACfA,GACEX,KACJ,MAAM6C,EAAQ7C,KAAKoC,UAEnB,MAAMU,EACJC,EAAWjB,EAAI,SACfiB,EAAWjB,EAAI,YACfa,GACAjC,EAEF,OACEsC,EAACC,EAAI,CAAAC,IAAA,2CACHC,MAAO,CACL,CAAC,aAAc,KACf,CAAC,aAAaN,EAAQ,QAAU,YAAa,KAC7C,CAAC,aAAalC,EAAa,UAAY,eAAgB,KACvD,CAAC,wBAAwBL,KAAoB,KAE7C,CAAC,aAAa8C,EAAsBC,QAClC/C,IAAoB8C,EAAsBC,KAC5C,CAAC,aAAaD,EAAsBE,SAClChD,IAAoB8C,EAAsBE,QAG9CN,EAAA,UAAAE,IAAA,2CAAQK,IAAMzB,GAAQ9B,KAAKiB,SAAWa,IAElCiB,EAAWjB,EAAI,gBAAkBc,IACjCI,EAAA,OAAAE,IAAA,2CAAKC,MAAM,sBACTH,EAAA,wBAAAE,IAAA,2CAAsB1C,QAASA,EAASgD,WAAY,MAClDR,EAAA,OAAAE,IAAA,2CAAKC,MAAM,4BACTH,EAAA,iBAAAE,IAAA,2CAAeO,QAAQ,QACrBT,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,eAAed,OAQnCG,EAAWjB,EAAI,SACdkB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,gBACRxC,GAAckC,EACbG,EAAA,OAAKG,MAAM,qBAAqBQ,KAAK,QACnCX,EAAA,QAAMU,KAAK,UAGbV,EAAA,wBAAsBQ,WAAU,KAAChD,QAASA,GACxCwC,EAAA,OAAKG,MAAM,qBAAqBQ,KAAK,QACnCX,EAAA,QAAMU,KAAK,YAQpBZ,GACCE,EAAA,OAAAE,IAAA,2CAAKC,MAAM,qBACTH,EAAA,wBAAAE,IAAA,2CAAsB1C,QAASA,EAASgD,WAAY,MAClDR,EAAA,OAAAE,IAAA,2CAAKC,MAAM,2BACRJ,EAAWjB,EAAI,SACdkB,EAAA,OAAAE,IAAA,2CAAKC,MAAM,eACTH,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,WAGbX,EAAWjB,EAAI,YAAca,IAC7BK,EAAA,OAAAE,IAAA,2CAAKC,MAAM,kBACTH,EAAA,iBAAAE,IAAA,2CACEO,QACEtD,GAAcC,EAAgBoC,EAAI,UAAY,QAGhDQ,EAAA,QAAAE,IAAA,2CAAMQ,KAAK,WAAWf,KAI3BjC,GACCsC,EAAA,OAAAE,IAAA,2CACEC,MAAO,CACL,CAAC,oBAAqB,KACtB,CAAC,0BAA2BS,MAG9BZ,EAAA,iBAAAE,IAAA,2CACEO,QACEtD,GAAcC,EAAgBoC,EAC1B,oBACA,mBAAiB,0B","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{r as t,c as i,h as s,g as h}from"./p-8e4e97b4.js";const e="context-id";const a=class{constructor(s){t(this,s);this.icTabSelect=i(this,"icTabSelect",3);this.newTabPanels=[];this.newTabs=[];this.activationType="automatic";this.contextId="default";this.monochrome=false;this.theme="inherit";this.linkTabs=()=>{this.tabs.forEach(((t,i)=>{const s=`ic-tab-${i}-context-${this.contextId}`;const h=`ic-tab-panel-${i}-context-${this.contextId}`;t.setAttribute("id",s);t.tabId=`ic-tab--${i}-context-${this.contextId}`;t.tabPosition=i;t.setAttribute("aria-controls",h);this.tabPanels[i].setAttribute("id",h);this.tabPanels[i].setAttribute("aria-labelledby",s);if(this.contextId){t.setAttribute(e,this.contextId);this.tabGroup&&this.tabGroup.setAttribute(e,this.contextId);this.tabPanels[i].setAttribute(e,this.contextId)}t.theme=this.theme;this.tabPanels[i].theme=this.theme;this.tabGroup&&(this.tabGroup.theme=this.theme)}))};this.getChildren=()=>{var t;this.tabGroup=this.el.querySelector("ic-tab-group");this.tabs=Array.from(((t=this.tabGroup)===null||t===void 0?void 0:t.querySelectorAll("ic-tab"))||[]);this.tabPanels=Array.from(this.el.children).filter((t=>t.tagName==="IC-TAB-PANEL"));this.enabledTabs=this.getEnabledTabs()};this.keydownHandler=t=>{const i=this.activationType==="manual";const s=this.enabledTabs.findIndex((t=>t.tabId===this.tabs[i?this.focusedTabIndex:this.selectedTab||0].tabId));const h=i?this.keyboardFocusTab:this.keyboardSelectTab;let e=true;switch(t.key){case"Home":h(0);break;case"End":h(this.enabledTabs.length-1);break;case"ArrowRight":h(s<this.enabledTabs.length-1?s+1:0);break;case"ArrowLeft":h((s>0?s:this.enabledTabs.length)-1);break;default:if(i&&(t.key==="Enter"||t.key===" ")){this.keyboardSelectTab(this.focusedTabIndex)}else{e=false}}if(e)t.preventDefault()};this.setInitialTab=()=>{if(this.selectedTabIndex!==undefined){this.selectedTab=this.selectedTabIndex;this.focusedTabIndex=this.selectedTabIndex}else{const t=this.tabs.findIndex((t=>t.tabId===this.enabledTabs[0].tabId));this.selectedTab=t;this.focusedTabIndex=t}};this.configureTabs=()=>{this.enabledTabs.forEach((t=>{t.selected=t.tabPosition===this.selectedTab}));this.tabPanels.forEach(((t,i)=>{t.active=i===this.selectedTab}))};this.getEnabledTabs=()=>Array.from(this.tabs).filter((t=>!t.disabled));this.keyboardSelectTab=t=>{var i,s;const h=this.tabs.findIndex((i=>i.tabId===this.enabledTabs[t].tabId));this.enabledTabs[t].focus();if(this.selectedTabIndex===undefined){this.selectedTab=h}else{this.icTabSelect.emit({tabIndex:h,tabLabel:((s=(i=this.el.querySelectorAll("ic-tab")[h])===null||i===void 0?void 0:i.textContent)===null||s===void 0?void 0:s.trim())||""})}};this.keyboardFocusTab=t=>{this.enabledTabs[t].focus();this.focusedTabIndex=this.tabs.findIndex((i=>i.tabId===this.enabledTabs[t].tabId))}}updateSelectedTab(t){this.selectedTab=t}watchMonochromeHandler(){this.tabs.forEach(((t,i)=>{t.monochrome=this.monochrome;this.tabPanels[i].monochrome=this.monochrome}));this.tabGroup&&(this.tabGroup.monochrome=this.monochrome)}watchThemeHandler(){this.tabs.forEach(((t,i)=>{t.theme=this.theme;this.tabPanels[i].theme=this.theme}));this.tabGroup&&(this.tabGroup.theme=this.theme)}componentDidLoad(){if(this.selectedTabIndex!==undefined){this.selectedTab=this.selectedTabIndex}this.getChildren();this.linkTabs();this.tabGroup&&this.tabGroup.addEventListener("keydown",this.keydownHandler);this.setInitialTab();this.configureTabs()}componentWillUpdate(){this.configureTabs()}disconnectedCallback(){var t;(t=this.tabGroup)===null||t===void 0?void 0:t.removeEventListener("keydown",this.keydownHandler)}tabClickHandler(t){var i,s;if(this.selectedTabIndex===undefined&&t.detail.contextId===this.contextId){this.selectedTab=t.detail.position}this.icTabSelect.emit({tabIndex:t.detail.position,tabLabel:((s=(i=this.el.querySelectorAll("ic-tab")[t.detail.position])===null||i===void 0?void 0:i.textContent)===null||s===void 0?void 0:s.trim())||""});t.stopImmediatePropagation()}tabCreatedHandler(t){if(this.tabs&&this.tabPanels){(t.detail.setFocus?this.newTabs:this.newTabPanels).push(t.detail);if(this.newTabs.length===this.newTabPanels.length){this.tabs.push(...this.newTabs);this.tabPanels.push(...this.newTabPanels);this.enabledTabs=this.getEnabledTabs();this.linkTabs();if(this.selectedTab&&(!this.tabs[this.selectedTab]||!this.tabPanels[this.selectedTab]))this.setInitialTab();this.configureTabs();this.newTabs=[];this.newTabPanels=[]}}}tabEnabledHandler(){this.enabledTabs=this.getEnabledTabs()}async tabRemovedHandler(t){this.getChildren();this.linkTabs();if(this.selectedTab&&this.tabs[this.selectedTab]&&this.tabPanels[this.selectedTab]){this.tabs[this.selectedTab].selected=true}else{this.setInitialTab()}if(t&&this.selectedTab){this.tabs[this.selectedTab].setFocus()}}render(){return s("slot",{key:"a0fd989c3705d70d9bc2d1746dcce7f3df79c0d0"})}get el(){return h(this)}static get watchers(){return{selectedTabIndex:["updateSelectedTab"],monochrome:["watchMonochromeHandler"],theme:["watchThemeHandler"]}}};export{a as ic_tab_context};
2
- //# sourceMappingURL=p-45dd12ee.entry.js.map
1
+ import{r as t,c as i,h as s,g as h}from"./p-8e4e97b4.js";const e="context-id";const a=class{constructor(s){t(this,s);this.icTabSelect=i(this,"icTabSelect",3);this.newTabPanels=[];this.newTabs=[];this.activationType="automatic";this.contextId="default";this.monochrome=false;this.theme="inherit";this.linkTabs=()=>{this.tabs.forEach(((t,i)=>{const s=`ic-tab-${i}-context-${this.contextId}`;const h=`ic-tab-panel-${i}-context-${this.contextId}`;t.setAttribute("id",s);t.tabId=`ic-tab--${i}-context-${this.contextId}`;t.tabPosition=i;t.setAttribute("aria-controls",h);this.tabPanels[i].setAttribute("id",h);this.tabPanels[i].setAttribute("aria-labelledby",s);if(this.contextId){t.setAttribute(e,this.contextId);this.tabGroup&&this.tabGroup.setAttribute(e,this.contextId);this.tabPanels[i].setAttribute(e,this.contextId)}t.theme=this.theme;this.tabPanels[i].theme=this.theme;this.tabGroup&&(this.tabGroup.theme=this.theme)}))};this.getChildren=()=>{var t;this.tabGroup=this.el.querySelector("ic-tab-group");this.tabs=Array.from(((t=this.tabGroup)===null||t===void 0?void 0:t.querySelectorAll("ic-tab"))||[]);this.tabPanels=Array.from(this.el.children).filter((t=>t.tagName==="IC-TAB-PANEL"));this.enabledTabs=this.getEnabledTabs()};this.keydownHandler=t=>{const i=this.activationType==="manual";const s=this.enabledTabs.findIndex((t=>t.tabId===this.tabs[i?this.focusedTabIndex:this.selectedTab||0].tabId));const h=i?this.keyboardFocusTab:this.keyboardSelectTab;let e=true;switch(t.key){case"Home":h(0);break;case"End":h(this.enabledTabs.length-1);break;case"ArrowRight":h(s<this.enabledTabs.length-1?s+1:0);break;case"ArrowLeft":h((s>0?s:this.enabledTabs.length)-1);break;default:if(i&&(t.key==="Enter"||t.key===" ")){this.keyboardSelectTab(this.focusedTabIndex)}else{e=false}}if(e)t.preventDefault()};this.setInitialTab=()=>{if(this.selectedTabIndex!==undefined){this.selectedTab=this.selectedTabIndex;this.focusedTabIndex=this.selectedTabIndex}else{const t=this.tabs.findIndex((t=>t.tabId===this.enabledTabs[0].tabId));this.selectedTab=t;this.focusedTabIndex=t}};this.configureTabs=()=>{this.enabledTabs.forEach((t=>{t.selected=t.tabPosition===this.selectedTab}));this.tabPanels.forEach(((t,i)=>{t.active=i===this.selectedTab}))};this.getEnabledTabs=()=>Array.from(this.tabs).filter((t=>!t.disabled));this.keyboardSelectTab=t=>{var i,s;const h=this.tabs.findIndex((i=>i.tabId===this.enabledTabs[t].tabId));this.enabledTabs[t].focus();if(this.selectedTabIndex===undefined){this.selectedTab=h}else{this.icTabSelect.emit({tabIndex:h,tabLabel:((s=(i=this.el.querySelectorAll("ic-tab")[h])===null||i===void 0?void 0:i.textContent)===null||s===void 0?void 0:s.trim())||""})}};this.keyboardFocusTab=t=>{this.enabledTabs[t].focus();this.focusedTabIndex=this.tabs.findIndex((i=>i.tabId===this.enabledTabs[t].tabId))}}updateSelectedTab(t){this.selectedTab=t}watchMonochromeHandler(){this.tabs.forEach(((t,i)=>{t.monochrome=this.monochrome;this.tabPanels[i].monochrome=this.monochrome}));this.tabGroup&&(this.tabGroup.monochrome=this.monochrome)}watchThemeHandler(){this.tabs.forEach(((t,i)=>{t.theme=this.theme;this.tabPanels[i].theme=this.theme}));this.tabGroup&&(this.tabGroup.theme=this.theme)}componentDidLoad(){if(this.selectedTabIndex!==undefined){this.selectedTab=this.selectedTabIndex}this.getChildren();this.linkTabs();this.tabGroup&&this.tabGroup.addEventListener("keydown",this.keydownHandler);this.setInitialTab();this.configureTabs()}componentWillUpdate(){this.configureTabs()}disconnectedCallback(){var t;(t=this.tabGroup)===null||t===void 0?void 0:t.removeEventListener("keydown",this.keydownHandler)}tabClickHandler(t){var i,s;if(this.selectedTabIndex===undefined&&t.detail.contextId===this.contextId){this.selectedTab=t.detail.position}this.icTabSelect.emit({tabIndex:t.detail.position,tabLabel:((s=(i=this.el.querySelectorAll("ic-tab")[t.detail.position])===null||i===void 0?void 0:i.textContent)===null||s===void 0?void 0:s.trim())||""});t.stopImmediatePropagation()}tabCreatedHandler(t){if(this.tabs&&this.tabPanels){(t.detail.setFocus?this.newTabs:this.newTabPanels).push(t.detail);if(this.newTabs.length===this.newTabPanels.length){this.tabs.push(...this.newTabs);this.tabPanels.push(...this.newTabPanels);this.enabledTabs=this.getEnabledTabs();this.linkTabs();if(this.selectedTab&&(!this.tabs[this.selectedTab]||!this.tabPanels[this.selectedTab]))this.setInitialTab();this.configureTabs();this.newTabs=[];this.newTabPanels=[]}}}tabEnabledHandler(){this.enabledTabs=this.getEnabledTabs()}async setFocus(){if(this.selectedTab!=null){this.tabs[this.selectedTab].setFocus()}}async tabRemovedHandler(t){this.getChildren();this.linkTabs();if(this.selectedTab&&this.tabs[this.selectedTab]&&this.tabPanels[this.selectedTab]){this.tabs[this.selectedTab].selected=true}else{this.setInitialTab()}if(t&&this.selectedTab!=null){this.tabs[this.selectedTab].setFocus()}}render(){return s("slot",{key:"a5806f753757f1367b776c388a57f5760656906d"})}get el(){return h(this)}static get watchers(){return{selectedTabIndex:["updateSelectedTab"],monochrome:["watchMonochromeHandler"],theme:["watchThemeHandler"]}}};export{a as ic_tab_context};
2
+ //# sourceMappingURL=p-4747c39f.entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["CONTEXT_ID_ATTR","TabContext","constructor","hostRef","this","newTabPanels","newTabs","activationType","contextId","monochrome","theme","linkTabs","tabs","forEach","tab","index","tabId","tabPanelId","setAttribute","tabPosition","tabPanels","tabGroup","getChildren","el","querySelector","Array","from","_a","querySelectorAll","children","filter","child","tagName","enabledTabs","getEnabledTabs","keydownHandler","event","isManual","enabledTabIndex","findIndex","focusedTabIndex","selectedTab","keyboardFunction","keyboardFocusTab","keyboardSelectTab","preventDefault","key","length","setInitialTab","selectedTabIndex","undefined","firstEnabledTabIndex","configureTabs","selected","tabPanel","active","disabled","newIndex","focus","icTabSelect","emit","tabIndex","tabLabel","_b","textContent","trim","updateSelectedTab","newValue","watchMonochromeHandler","watchThemeHandler","componentDidLoad","addEventListener","componentWillUpdate","disconnectedCallback","removeEventListener","tabClickHandler","detail","position","stopImmediatePropagation","tabCreatedHandler","ev","setFocus","push","tabEnabledHandler","tabRemovedHandler","hadFocus","render","h"],"sources":["src/components/ic-tab-context/ic-tab-context.tsx"],"sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Prop,\n State,\n h,\n Watch,\n Method,\n} from \"@stencil/core\";\nimport { IcActivationTypes, IcThemeMode } from \"../../utils/types\";\n\nimport {\n IcTabClickEventDetail,\n IcTabSelectEventDetail,\n} from \"../ic-tab/ic-tab.types\";\n\nconst CONTEXT_ID_ATTR = \"context-id\";\n\n@Component({\n tag: \"ic-tab-context\",\n})\nexport class TabContext {\n private enabledTabs: HTMLIcTabElement[];\n private focusedTabIndex: number;\n private newTabPanels: HTMLIcTabPanelElement[] = [];\n private newTabs: HTMLIcTabElement[] = [];\n private tabs: HTMLIcTabElement[];\n private tabGroup: HTMLIcTabGroupElement | null;\n private tabPanels: HTMLIcTabPanelElement[];\n\n @Element() el: HTMLIcTabContextElement;\n\n @State() selectedTab: number | null;\n\n /**\n * Determines whether tabs have to be manually activated (by pressing 'Enter' or 'Space') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The unique context needed if using multiple tabs inside one another i.e. rendering another set of tabs inside a tab panel.\n */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * The selected tab to be controlled by the user. Must be used alongside the icTabSelect event to manage tab selection.\n */\n @Prop() selectedTabIndex?: number;\n\n @Watch(\"selectedTabIndex\")\n updateSelectedTab(newValue: number): void {\n this.selectedTab = newValue;\n }\n\n /**\n * If `true`, the tabs will display as black in the light theme.\n */\n @Prop() monochrome?: boolean = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.tabs.forEach((tab, index) => {\n tab.monochrome = this.monochrome;\n this.tabPanels[index].monochrome = this.monochrome;\n });\n this.tabGroup && (this.tabGroup.monochrome = this.monochrome);\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n @Watch(\"theme\")\n watchThemeHandler(): void {\n this.tabs.forEach((tab, index) => {\n tab.theme = this.theme;\n this.tabPanels[index].theme = this.theme;\n });\n this.tabGroup && (this.tabGroup.theme = this.theme);\n }\n\n /**\n * Emitted when a user selects a tab.\n */\n @Event({ bubbles: false }) icTabSelect: EventEmitter<IcTabSelectEventDetail>;\n\n componentDidLoad(): void {\n if (this.selectedTabIndex !== undefined) {\n this.selectedTab = this.selectedTabIndex;\n }\n this.getChildren();\n this.linkTabs();\n this.tabGroup &&\n this.tabGroup.addEventListener(\"keydown\", this.keydownHandler);\n this.setInitialTab();\n this.configureTabs();\n }\n\n componentWillUpdate(): void {\n this.configureTabs();\n }\n\n disconnectedCallback(): void {\n this.tabGroup?.removeEventListener(\"keydown\", this.keydownHandler);\n }\n\n @Listen(\"tabClick\")\n tabClickHandler(event: CustomEvent<IcTabClickEventDetail>): void {\n if (\n this.selectedTabIndex === undefined &&\n event.detail.contextId === this.contextId\n ) {\n this.selectedTab = event.detail.position;\n }\n /* eslint-disable no-unexpected-multiline */\n this.icTabSelect.emit({\n tabIndex: event.detail.position,\n tabLabel:\n this.el\n .querySelectorAll(\"ic-tab\")\n [event.detail.position]?.textContent?.trim() || \"\",\n });\n /* eslint-enable no-unexpected-multiline */\n event.stopImmediatePropagation();\n }\n\n @Listen(\"tabCreated\")\n @Listen(\"tabPanelCreated\")\n tabCreatedHandler(ev: CustomEvent): void {\n if (this.tabs && this.tabPanels) {\n (ev.detail.setFocus ? this.newTabs : this.newTabPanels).push(ev.detail);\n if (this.newTabs.length === this.newTabPanels.length) {\n this.tabs.push(...this.newTabs);\n this.tabPanels.push(...this.newTabPanels);\n this.enabledTabs = this.getEnabledTabs();\n this.linkTabs();\n if (\n this.selectedTab &&\n (!this.tabs[this.selectedTab] || !this.tabPanels[this.selectedTab])\n )\n this.setInitialTab();\n this.configureTabs();\n this.newTabs = [];\n this.newTabPanels = [];\n }\n }\n }\n\n @Listen(\"tabEnabled\")\n tabEnabledHandler(): void {\n this.enabledTabs = this.getEnabledTabs();\n }\n\n /**\n * Sets focus on the tab context.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.selectedTab != null) {\n this.tabs[this.selectedTab].setFocus();\n }\n }\n\n /**\n * @internal Used to set tab/tab panel IDs when a tab/tab panel has been removed\n */\n @Method()\n async tabRemovedHandler(hadFocus?: boolean): Promise<void> {\n this.getChildren();\n this.linkTabs();\n if (\n this.selectedTab &&\n this.tabs[this.selectedTab] &&\n this.tabPanels[this.selectedTab]\n ) {\n this.tabs[this.selectedTab].selected = true;\n } else {\n this.setInitialTab();\n }\n\n if (hadFocus && this.selectedTab != null) {\n this.tabs[this.selectedTab].setFocus();\n }\n }\n\n /** Sets attributes to link tab-group, tabs and tab-panels */\n private linkTabs = () => {\n this.tabs.forEach((tab, index) => {\n const tabId = `ic-tab-${index}-context-${this.contextId}`;\n const tabPanelId = `ic-tab-panel-${index}-context-${this.contextId}`;\n tab.setAttribute(\"id\", tabId);\n tab.tabId = `ic-tab--${index}-context-${this.contextId}`;\n tab.tabPosition = index;\n tab.setAttribute(\"aria-controls\", tabPanelId);\n this.tabPanels[index].setAttribute(\"id\", tabPanelId);\n this.tabPanels[index].setAttribute(\"aria-labelledby\", tabId);\n\n if (this.contextId) {\n tab.setAttribute(CONTEXT_ID_ATTR, this.contextId);\n this.tabGroup &&\n this.tabGroup.setAttribute(CONTEXT_ID_ATTR, this.contextId);\n this.tabPanels[index].setAttribute(CONTEXT_ID_ATTR, this.contextId);\n }\n\n tab.theme = this.theme;\n this.tabPanels[index].theme = this.theme;\n this.tabGroup && (this.tabGroup.theme = this.theme);\n });\n };\n\n /**\n * Gets tabs and tabpanels with the same context ID using querySelector to selector the children in relation to the host\n */\n private getChildren = (): void => {\n this.tabGroup = this.el.querySelector(\"ic-tab-group\");\n this.tabs = Array.from(this.tabGroup?.querySelectorAll(\"ic-tab\") || []);\n this.tabPanels = Array.from(this.el.children).filter(\n (child) => child.tagName === \"IC-TAB-PANEL\"\n ) as HTMLIcTabPanelElement[];\n this.enabledTabs = this.getEnabledTabs();\n };\n\n private keydownHandler = (event: KeyboardEvent) => {\n const isManual = this.activationType === \"manual\";\n const enabledTabIndex = this.enabledTabs.findIndex(\n (tab) =>\n tab.tabId ===\n this.tabs[isManual ? this.focusedTabIndex : this.selectedTab || 0].tabId\n );\n const keyboardFunction = isManual\n ? this.keyboardFocusTab\n : this.keyboardSelectTab;\n let preventDefault = true;\n switch (event.key) {\n case \"Home\":\n keyboardFunction(0);\n break;\n case \"End\":\n keyboardFunction(this.enabledTabs.length - 1);\n break;\n case \"ArrowRight\":\n keyboardFunction(\n enabledTabIndex < this.enabledTabs.length - 1\n ? enabledTabIndex + 1\n : 0\n );\n break;\n case \"ArrowLeft\":\n keyboardFunction(\n (enabledTabIndex > 0 ? enabledTabIndex : this.enabledTabs.length) - 1\n );\n break;\n default:\n if (isManual && (event.key === \"Enter\" || event.key === \" \")) {\n this.keyboardSelectTab(this.focusedTabIndex);\n } else {\n preventDefault = false;\n }\n }\n if (preventDefault) event.preventDefault();\n };\n\n /** Sets the tab that is selected on initial render */\n private setInitialTab = (): void => {\n if (this.selectedTabIndex !== undefined) {\n this.selectedTab = this.selectedTabIndex;\n this.focusedTabIndex = this.selectedTabIndex;\n } else {\n const firstEnabledTabIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[0].tabId\n );\n this.selectedTab = firstEnabledTabIndex;\n this.focusedTabIndex = firstEnabledTabIndex;\n }\n };\n\n /** Passes the selected tab to the tab and tab panel components */\n private configureTabs = () => {\n this.enabledTabs.forEach((tab) => {\n tab.selected = tab.tabPosition === this.selectedTab;\n });\n this.tabPanels.forEach((tabPanel, index) => {\n tabPanel.active = index === this.selectedTab;\n });\n };\n\n private getEnabledTabs = () =>\n Array.from(this.tabs).filter((child) => !child.disabled);\n\n /** Sets focus on tab and selects it */\n private keyboardSelectTab = (enabledTabIndex: number) => {\n const newIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId\n );\n this.enabledTabs[enabledTabIndex].focus();\n if (this.selectedTabIndex === undefined) {\n this.selectedTab = newIndex;\n } else {\n /* eslint-disable no-unexpected-multiline */\n this.icTabSelect.emit({\n tabIndex: newIndex,\n tabLabel:\n this.el.querySelectorAll(\"ic-tab\")[newIndex]?.textContent?.trim() ||\n \"\",\n });\n }\n };\n\n /** Sets focus on tab without selecting it (for manual activation) */\n private keyboardFocusTab = (enabledTabIndex: number) => {\n this.enabledTabs[enabledTabIndex].focus();\n this.focusedTabIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId\n );\n };\n\n render() {\n return <slot></slot>;\n }\n}\n"],"mappings":"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","ignoreList":[]}
@@ -1,2 +1,2 @@
1
- import{r as t,h as i,H as a,g as r}from"./p-8e4e97b4.js";const s=":host{grid-column:var(--ic-grid-item-col-start, 1) / span\n var(--ic-grid-item-col-span, var(--ic-layout-grid-col-span, 1)) !important;grid-row:var(--ic-grid-item-row-start, 1) / span\n var(--ic-grid-item-row-span, var(--ic-layout-grid-row-span, 1)) !important}@media only screen and (max-width: 576px){:host(.ic-layout-grid-hide-in-mobile){display:none}}";const o=s;const c=class{constructor(i){t(this,i);this.colSpan=1;this.colStart=1;this.hideInMobileMode=false;this.rowSpan=1;this.rowStart=1}watchColSpan(t){this.el.style.setProperty("--ic-grid-item-col-span",`${t}`)}watchColStart(t){this.el.style.setProperty("--ic-grid-item-col-start",`${t}`)}watchRowSpan(t){this.el.style.setProperty("--ic-grid-item-row-span",`${t}`)}watchRowStart(t){this.el.style.setProperty("--ic-grid-item-row-start",`${t}`)}componentWillLoad(){this.el.style.setProperty("--ic-grid-item-col-start",`${this.colStart}`);this.el.style.setProperty("--ic-grid-item-col-span",`${this.colSpan}`);this.el.style.setProperty("--ic-grid-item-row-start",`${this.rowStart}`);this.el.style.setProperty("--ic-grid-item-row-span",`${this.rowSpan}`)}render(){const{hideInMobileMode:t}=this;return i(a,{key:"07cb3d39a4c3440a06df2f6c56ecdf3017e48f59",class:{"ic-layout-grid-hide-in-mobile":!!t}},i("slot",{key:"53c7d5616494ad9fc7468d023b9a9ec520938916"}))}get el(){return r(this)}static get watchers(){return{colSpan:["watchColSpan"],colStart:["watchColStart"],rowSpan:["watchRowSpan"],rowStart:["watchRowStart"]}}};c.style=o;export{c as ic_layout_grid_item};
2
- //# sourceMappingURL=p-ffac41d6.entry.js.map
1
+ import{r as t,h as i,H as a,g as r}from"./p-8e4e97b4.js";const c=":host{grid-column:var(--ic-grid-item-col-start, 1) / span\n var(--ic-grid-item-col-span, var(--ic-layout-grid-col-span, 1)) !important;grid-row:var(--ic-grid-item-row-start, 1) / span\n var(--ic-grid-item-row-span, var(--ic-layout-grid-row-span, 1)) !important}@media only screen and (max-width: 576px){:host(.ic-layout-grid-hide-in-mobile){display:none}}";const s=c;const o=class{constructor(i){t(this,i);this.colSpan=1;this.colStart=1;this.hideInMobileMode=false;this.rowSpan=1;this.rowStart=1}watchColSpan(t){this.el.style.setProperty("--ic-grid-item-col-span",`${t}`)}watchColStart(t){this.el.style.setProperty("--ic-grid-item-col-start",`${t}`)}watchRowSpan(t){this.el.style.setProperty("--ic-grid-item-row-span",`${t}`)}watchRowStart(t){this.el.style.setProperty("--ic-grid-item-row-start",`${t}`)}componentWillLoad(){this.el.style.setProperty("--ic-grid-item-col-start",`${this.colStart}`);this.el.style.setProperty("--ic-grid-item-col-span",`${this.colSpan}`);this.el.style.setProperty("--ic-grid-item-row-start",`${this.rowStart}`);this.el.style.setProperty("--ic-grid-item-row-span",`${this.rowSpan}`)}render(){const{hideInMobileMode:t}=this;return i(a,{key:"a6e63c7a2e569fefef8bd1f801719ec0cfc999f2",class:{"ic-layout-grid-hide-in-mobile":!!t}},i("slot",{key:"976299cc75e2a275ce07dc9bb4ccde082c559175"}))}get el(){return r(this)}static get watchers(){return{colSpan:["watchColSpan"],colStart:["watchColStart"],rowSpan:["watchRowSpan"],rowStart:["watchRowStart"]}}};o.style=s;export{o as ic_layout_grid_item};
2
+ //# sourceMappingURL=p-492fcb51.entry.js.map