@ukic/web-components 3.2.0 → 3.4.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 (562) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/{helpers-789082d4.js → helpers-fc4016d2.js} +21 -37
  3. package/dist/cjs/helpers-fc4016d2.js.map +1 -0
  4. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-accordion.cjs.entry.js +10 -8
  6. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  7. package/dist/cjs/ic-alert.cjs.entry.js +2 -2
  8. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  9. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  10. package/dist/cjs/ic-badge.cjs.entry.js +4 -4
  11. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +56 -76
  13. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-breadcrumb.cjs.entry.js +32 -51
  15. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-button_3.cjs.entry.js +110 -131
  17. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-card-vertical.cjs.entry.js +6 -6
  19. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-checkbox-group.cjs.entry.js +9 -10
  21. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-checkbox.cjs.entry.js +37 -41
  23. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-chip.cjs.entry.js +26 -38
  25. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-data-list.cjs.entry.js +2 -2
  27. package/dist/cjs/ic-data-row.cjs.entry.js +3 -3
  28. package/dist/cjs/ic-dialog.cjs.entry.js +2 -2
  29. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  30. package/dist/cjs/ic-empty-state.cjs.entry.js +3 -3
  31. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  32. package/dist/cjs/ic-footer-link.cjs.entry.js +3 -3
  33. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  34. package/dist/cjs/ic-hero.cjs.entry.js +7 -6
  35. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +6 -6
  37. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +23 -22
  38. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-input-label_2.cjs.entry.js +8 -8
  40. package/dist/cjs/ic-link.cjs.entry.js +12 -4
  41. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-menu-group.cjs.entry.js +2 -2
  43. package/dist/cjs/ic-menu-item.cjs.entry.js +5 -5
  44. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  45. package/dist/cjs/ic-navigation-button.cjs.entry.js +3 -3
  46. package/dist/cjs/ic-navigation-group.cjs.entry.js +116 -164
  47. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-navigation-item.cjs.entry.js +65 -62
  49. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-navigation-menu.cjs.entry.js +5 -5
  51. package/dist/cjs/ic-page-header.cjs.entry.js +7 -7
  52. package/dist/cjs/ic-pagination-item.cjs.entry.js +2 -2
  53. package/dist/cjs/ic-pagination.cjs.entry.js +5 -5
  54. package/dist/cjs/ic-popover-menu.cjs.entry.js +8 -7
  55. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-radio-group.cjs.entry.js +5 -5
  57. package/dist/cjs/ic-radio-option.cjs.entry.js +5 -5
  58. package/dist/cjs/ic-search-bar.cjs.entry.js +149 -154
  59. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-section-container.cjs.entry.js +2 -2
  61. package/dist/cjs/ic-select.cjs.entry.js +142 -218
  62. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  63. package/dist/cjs/ic-side-navigation.cjs.entry.js +25 -6
  64. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  65. package/dist/cjs/ic-skeleton.cjs.entry.js +2 -2
  66. package/dist/cjs/ic-skip-link.cjs.entry.js +2 -2
  67. package/dist/cjs/ic-status-tag.cjs.entry.js +3 -3
  68. package/dist/cjs/ic-step.cjs.entry.js +14 -14
  69. package/dist/cjs/ic-stepper.cjs.entry.js +3 -3
  70. package/dist/cjs/ic-switch.cjs.entry.js +6 -6
  71. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-tab-context.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-tab-group.cjs.entry.js +3 -3
  74. package/dist/cjs/ic-tab-panel.cjs.entry.js +2 -2
  75. package/dist/cjs/ic-tab.cjs.entry.js +3 -3
  76. package/dist/cjs/ic-text-field.cjs.entry.js +39 -31
  77. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  78. package/dist/cjs/ic-theme.cjs.entry.js +2 -2
  79. package/dist/cjs/ic-toast-region.cjs.entry.js +1 -1
  80. package/dist/cjs/ic-toast.cjs.entry.js +4 -4
  81. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +54 -68
  82. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-toggle-button.cjs.entry.js +62 -64
  84. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-top-navigation.cjs.entry.js +65 -63
  86. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  87. package/dist/cjs/ic-typography.cjs.entry.js +3 -3
  88. package/dist/cjs/loader.cjs.js +1 -1
  89. package/dist/collection/components/ic-accordion/ic-accordion.js +9 -7
  90. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  91. package/dist/collection/components/ic-accordion/ic-accordion.stories.js +1 -1
  92. package/dist/collection/components/ic-alert/ic-alert.css +4 -0
  93. package/dist/collection/components/ic-badge/ic-badge.css +1 -1
  94. package/dist/collection/components/ic-badge/ic-badge.js +2 -2
  95. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js +40 -59
  96. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.js.map +1 -1
  97. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js +65 -86
  98. package/dist/collection/components/ic-breadcrumb-group/ic-breadcrumb-group.js.map +1 -1
  99. package/dist/collection/components/ic-button/ic-button.css +105 -62
  100. package/dist/collection/components/ic-button/ic-button.js +141 -162
  101. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  102. package/dist/collection/components/ic-button/ic-button.stories.js +10 -2
  103. package/dist/collection/components/ic-card-vertical/ic-card-vertical.css +3 -0
  104. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js +4 -4
  105. package/dist/collection/components/ic-checkbox/ic-checkbox.css +9 -1
  106. package/dist/collection/components/ic-checkbox/ic-checkbox.js +73 -80
  107. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  108. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +24 -25
  109. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  110. package/dist/collection/components/ic-chip/ic-chip.css +9 -0
  111. package/dist/collection/components/ic-chip/ic-chip.js +66 -72
  112. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  113. package/dist/collection/components/ic-chip/ic-chip.stories.js +2 -1
  114. package/dist/collection/components/ic-data-list/ic-data-list.js +2 -2
  115. package/dist/collection/components/ic-data-row/ic-data-row.js +2 -2
  116. package/dist/collection/components/ic-dialog/ic-dialog.js +1 -1
  117. package/dist/collection/components/ic-empty-state/ic-empty-state.js +2 -2
  118. package/dist/collection/components/ic-footer-link/ic-footer-link.js +2 -2
  119. package/dist/collection/components/ic-hero/ic-hero.css +13 -4
  120. package/dist/collection/components/ic-hero/ic-hero.js +5 -4
  121. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  122. package/dist/collection/components/ic-hero/ic-hero.stories.js +1 -0
  123. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +5 -5
  124. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +3 -3
  125. package/dist/collection/components/ic-input-container/ic-input-container.js +2 -2
  126. package/dist/collection/components/ic-input-label/ic-input-label.js +4 -4
  127. package/dist/collection/components/ic-input-validation/ic-input-validation.js +3 -3
  128. package/dist/collection/components/ic-link/ic-link.js +12 -4
  129. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  130. package/dist/collection/components/ic-link/ic-link.stories.js +28 -5
  131. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +3 -3
  132. package/dist/collection/components/ic-menu/ic-menu.js +41 -40
  133. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  134. package/dist/collection/components/ic-menu-group/ic-menu-group.js +1 -1
  135. package/dist/collection/components/ic-menu-item/ic-menu-item.css +0 -5
  136. package/dist/collection/components/ic-menu-item/ic-menu-item.js +3 -3
  137. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  138. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +2 -2
  139. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +119 -167
  140. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  141. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +7 -13
  142. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +80 -74
  143. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  144. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.js +4 -4
  145. package/dist/collection/components/ic-page-header/ic-page-header.js +6 -6
  146. package/dist/collection/components/ic-pagination/ic-pagination.js +4 -4
  147. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +1 -1
  148. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +3 -5
  149. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +6 -5
  150. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  151. package/dist/collection/components/ic-radio-group/ic-radio-group.js +4 -4
  152. package/dist/collection/components/ic-radio-option/ic-radio-option.js +4 -4
  153. package/dist/collection/components/ic-search-bar/ic-search-bar.js +208 -211
  154. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  155. package/dist/collection/components/ic-search-bar/ic-search-bar.stories.js +9 -8
  156. package/dist/collection/components/ic-section-container/ic-section-container.js +2 -2
  157. package/dist/collection/components/ic-select/ic-select.js +196 -271
  158. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  159. package/dist/collection/components/ic-select/ic-select_(single).stories.js +30 -21
  160. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +1 -1
  161. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +43 -4
  162. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  163. package/dist/collection/components/ic-side-navigation/ic-side-navigation.stories.js +247 -0
  164. package/dist/collection/components/ic-skeleton/ic-skeleton.js +2 -2
  165. package/dist/collection/components/ic-skip-link/ic-skip-link.js +2 -2
  166. package/dist/collection/components/ic-status-tag/ic-status-tag.js +2 -2
  167. package/dist/collection/components/ic-step/ic-step.js +13 -13
  168. package/dist/collection/components/ic-stepper/ic-stepper.js +2 -2
  169. package/dist/collection/components/ic-switch/ic-switch.js +5 -5
  170. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  171. package/dist/collection/components/ic-tab/ic-tab.js +2 -2
  172. package/dist/collection/components/ic-tab-context/ic-tab-context.js +1 -1
  173. package/dist/collection/components/ic-tab-group/ic-tab-group.js +2 -2
  174. package/dist/collection/components/ic-tab-panel/ic-tab-panel.js +2 -2
  175. package/dist/collection/components/ic-text-field/ic-text-field.js +124 -101
  176. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  177. package/dist/collection/components/ic-theme/ic-theme.js +1 -1
  178. package/dist/collection/components/ic-toast/ic-toast.js +3 -3
  179. package/dist/collection/components/ic-toast-region/ic-toast-region.js +1 -1
  180. package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +40 -7
  181. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +80 -82
  182. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js.map +1 -1
  183. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +79 -88
  184. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
  185. package/dist/collection/components/ic-tooltip/ic-tooltip.js +2 -2
  186. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +81 -79
  187. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  188. package/dist/collection/components/ic-typography/ic-typography.js +2 -2
  189. package/dist/collection/utils/helpers.js +20 -36
  190. package/dist/collection/utils/helpers.js.map +1 -1
  191. package/dist/components/helpers.js +21 -37
  192. package/dist/components/helpers.js.map +1 -1
  193. package/dist/components/ic-accordion.js +9 -7
  194. package/dist/components/ic-accordion.js.map +1 -1
  195. package/dist/components/ic-alert.js +1 -1
  196. package/dist/components/ic-alert.js.map +1 -1
  197. package/dist/components/ic-badge.js +3 -3
  198. package/dist/components/ic-badge.js.map +1 -1
  199. package/dist/components/ic-breadcrumb-group.js +57 -78
  200. package/dist/components/ic-breadcrumb-group.js.map +1 -1
  201. package/dist/components/ic-breadcrumb2.js +32 -51
  202. package/dist/components/ic-breadcrumb2.js.map +1 -1
  203. package/dist/components/ic-button2.js +105 -126
  204. package/dist/components/ic-button2.js.map +1 -1
  205. package/dist/components/ic-card-vertical.js +5 -5
  206. package/dist/components/ic-card-vertical.js.map +1 -1
  207. package/dist/components/ic-checkbox-group.js +8 -9
  208. package/dist/components/ic-checkbox-group.js.map +1 -1
  209. package/dist/components/ic-checkbox.js +39 -43
  210. package/dist/components/ic-checkbox.js.map +1 -1
  211. package/dist/components/ic-chip.js +28 -40
  212. package/dist/components/ic-chip.js.map +1 -1
  213. package/dist/components/ic-data-list.js +2 -2
  214. package/dist/components/ic-data-row.js +2 -2
  215. package/dist/components/ic-dialog.js +1 -1
  216. package/dist/components/ic-empty-state.js +2 -2
  217. package/dist/components/ic-footer-link.js +2 -2
  218. package/dist/components/ic-hero.js +6 -5
  219. package/dist/components/ic-hero.js.map +1 -1
  220. package/dist/components/ic-horizontal-scroll2.js +5 -5
  221. package/dist/components/ic-input-component-container2.js +3 -3
  222. package/dist/components/ic-input-container2.js +2 -2
  223. package/dist/components/ic-input-label2.js +4 -4
  224. package/dist/components/ic-input-validation2.js +3 -3
  225. package/dist/components/ic-link2.js +11 -3
  226. package/dist/components/ic-link2.js.map +1 -1
  227. package/dist/components/ic-loading-indicator2.js +3 -3
  228. package/dist/components/ic-menu-group.js +1 -1
  229. package/dist/components/ic-menu-item2.js +4 -4
  230. package/dist/components/ic-menu-item2.js.map +1 -1
  231. package/dist/components/ic-menu2.js +17 -16
  232. package/dist/components/ic-menu2.js.map +1 -1
  233. package/dist/components/ic-navigation-button.js +2 -2
  234. package/dist/components/ic-navigation-group.js +115 -163
  235. package/dist/components/ic-navigation-group.js.map +1 -1
  236. package/dist/components/ic-navigation-item.js +67 -62
  237. package/dist/components/ic-navigation-item.js.map +1 -1
  238. package/dist/components/ic-navigation-menu2.js +4 -4
  239. package/dist/components/ic-page-header.js +6 -6
  240. package/dist/components/ic-pagination-item2.js +1 -1
  241. package/dist/components/ic-pagination.js +4 -4
  242. package/dist/components/ic-popover-menu.js +7 -6
  243. package/dist/components/ic-popover-menu.js.map +1 -1
  244. package/dist/components/ic-radio-group.js +4 -4
  245. package/dist/components/ic-radio-group.js.map +1 -1
  246. package/dist/components/ic-radio-option.js +4 -4
  247. package/dist/components/ic-search-bar.js +150 -154
  248. package/dist/components/ic-search-bar.js.map +1 -1
  249. package/dist/components/ic-section-container2.js +2 -2
  250. package/dist/components/ic-select.js +141 -217
  251. package/dist/components/ic-select.js.map +1 -1
  252. package/dist/components/ic-side-navigation.js +25 -5
  253. package/dist/components/ic-side-navigation.js.map +1 -1
  254. package/dist/components/ic-skeleton.js +2 -2
  255. package/dist/components/ic-skip-link.js +2 -2
  256. package/dist/components/ic-status-tag.js +2 -2
  257. package/dist/components/ic-step.js +13 -13
  258. package/dist/components/ic-stepper.js +2 -2
  259. package/dist/components/ic-switch.js +5 -5
  260. package/dist/components/ic-switch.js.map +1 -1
  261. package/dist/components/ic-tab-context.js +1 -1
  262. package/dist/components/ic-tab-group.js +2 -2
  263. package/dist/components/ic-tab-panel.js +2 -2
  264. package/dist/components/ic-tab-panel.js.map +1 -1
  265. package/dist/components/ic-tab.js +2 -2
  266. package/dist/components/ic-text-field.js +40 -31
  267. package/dist/components/ic-text-field.js.map +1 -1
  268. package/dist/components/ic-theme.js +1 -1
  269. package/dist/components/ic-toast-region.js +1 -1
  270. package/dist/components/ic-toast.js +3 -3
  271. package/dist/components/ic-toggle-button-group.js +53 -67
  272. package/dist/components/ic-toggle-button-group.js.map +1 -1
  273. package/dist/components/ic-toggle-button.js +61 -63
  274. package/dist/components/ic-toggle-button.js.map +1 -1
  275. package/dist/components/ic-tooltip2.js +2 -2
  276. package/dist/components/ic-top-navigation.js +65 -63
  277. package/dist/components/ic-top-navigation.js.map +1 -1
  278. package/dist/components/ic-typography2.js +2 -2
  279. package/dist/core/core.css +159 -109
  280. package/dist/core/core.esm.js +1 -1
  281. package/dist/core/core.esm.js.map +1 -1
  282. package/dist/core/p-0fb68b4f.entry.js +2 -0
  283. package/dist/core/p-0fb68b4f.entry.js.map +1 -0
  284. package/dist/core/{p-bbe5596b.entry.js → p-15b7adaf.entry.js} +2 -2
  285. package/dist/core/{p-abaea607.entry.js → p-1d172032.entry.js} +2 -2
  286. package/dist/core/{p-fc50d582.entry.js → p-1d254b71.entry.js} +2 -2
  287. package/dist/core/p-1d254b71.entry.js.map +1 -0
  288. package/dist/core/{p-6de6b6b7.entry.js → p-23536595.entry.js} +2 -2
  289. package/dist/core/{p-81a12e36.entry.js → p-26dfc4db.entry.js} +2 -2
  290. package/dist/core/{p-81a12e36.entry.js.map → p-26dfc4db.entry.js.map} +1 -1
  291. package/dist/core/{p-f3c72ffb.entry.js → p-2c371198.entry.js} +2 -2
  292. package/dist/core/p-3676ac4e.entry.js +2 -0
  293. package/dist/core/p-3676ac4e.entry.js.map +1 -0
  294. package/dist/core/{p-f34eee68.entry.js → p-3cb4ecef.entry.js} +2 -2
  295. package/dist/core/{p-3eb7ef1d.entry.js → p-432aeae0.entry.js} +2 -2
  296. package/dist/core/p-4a2acb2e.entry.js +2 -0
  297. package/dist/core/p-4a2acb2e.entry.js.map +1 -0
  298. package/dist/core/p-4dc97b03.entry.js +2 -0
  299. package/dist/core/p-4dc97b03.entry.js.map +1 -0
  300. package/dist/core/p-4e48a671.entry.js +2 -0
  301. package/dist/core/p-4e48a671.entry.js.map +1 -0
  302. package/dist/core/p-513628ef.entry.js +2 -0
  303. package/dist/core/p-513628ef.entry.js.map +1 -0
  304. package/dist/core/{p-88924aef.entry.js → p-51b49429.entry.js} +2 -2
  305. package/dist/core/p-554845c4.entry.js +2 -0
  306. package/dist/core/p-554845c4.entry.js.map +1 -0
  307. package/dist/core/{p-7afc71d0.entry.js → p-56e0de32.entry.js} +2 -2
  308. package/dist/core/{p-7a0d238b.entry.js → p-56fb0298.entry.js} +2 -2
  309. package/dist/core/p-59b48450.entry.js +2 -0
  310. package/dist/core/p-59b48450.entry.js.map +1 -0
  311. package/dist/core/{p-fbde763c.entry.js → p-5aec3757.entry.js} +2 -2
  312. package/dist/core/{p-23d059ff.entry.js → p-5eb2ac90.entry.js} +2 -2
  313. package/dist/core/{p-c2ca6274.entry.js → p-60aad45d.entry.js} +2 -2
  314. package/dist/core/{p-33c86ba6.entry.js → p-628c32b8.entry.js} +2 -2
  315. package/dist/core/p-6cd0b010.entry.js +2 -0
  316. package/dist/core/p-6cd0b010.entry.js.map +1 -0
  317. package/dist/core/{p-7dfe0284.entry.js → p-6eea869b.entry.js} +2 -2
  318. package/dist/core/{p-0631c3ab.entry.js → p-7d2c07e2.entry.js} +2 -2
  319. package/dist/core/p-7d352865.entry.js +2 -0
  320. package/dist/core/p-7d352865.entry.js.map +1 -0
  321. package/dist/core/{p-959a9cdf.entry.js → p-7deaf128.entry.js} +2 -2
  322. package/dist/core/{p-959a9cdf.entry.js.map → p-7deaf128.entry.js.map} +1 -1
  323. package/dist/core/p-803f2eb8.entry.js +2 -0
  324. package/dist/core/p-803f2eb8.entry.js.map +1 -0
  325. package/dist/core/p-8242c24f.js +2 -0
  326. package/dist/core/p-8242c24f.js.map +1 -0
  327. package/dist/core/p-87fa5add.entry.js +2 -0
  328. package/dist/core/p-87fa5add.entry.js.map +1 -0
  329. package/dist/core/{p-3675c4b4.entry.js → p-887e00bb.entry.js} +2 -2
  330. package/dist/core/p-8958c60f.entry.js +2 -0
  331. package/dist/core/p-8958c60f.entry.js.map +1 -0
  332. package/dist/core/{p-45432bf5.entry.js → p-8c77dd65.entry.js} +2 -2
  333. package/dist/core/{p-e2f893f0.entry.js → p-9a6dc8b1.entry.js} +2 -2
  334. package/dist/core/p-9a6dc8b1.entry.js.map +1 -0
  335. package/dist/core/{p-acebb05c.entry.js → p-9c47521d.entry.js} +2 -2
  336. package/dist/core/p-a140bcaa.entry.js +2 -0
  337. package/dist/core/p-a17499ff.entry.js +2 -0
  338. package/dist/core/p-a17499ff.entry.js.map +1 -0
  339. package/dist/core/{p-005cd8a8.entry.js → p-aad10013.entry.js} +2 -2
  340. package/dist/core/p-aad2abbf.entry.js +2 -0
  341. package/dist/core/p-aad2abbf.entry.js.map +1 -0
  342. package/dist/core/p-bdcc79dd.entry.js +2 -0
  343. package/dist/core/p-bdcc79dd.entry.js.map +1 -0
  344. package/dist/core/{p-de43d375.entry.js → p-bf3b853e.entry.js} +2 -2
  345. package/dist/core/{p-e56d0db2.entry.js → p-c59fd23e.entry.js} +2 -2
  346. package/dist/core/{p-f815f8c9.entry.js → p-c5ffe2cf.entry.js} +2 -2
  347. package/dist/core/{p-5206a978.entry.js → p-c8cf1ad5.entry.js} +2 -2
  348. package/dist/core/p-cfa9ed7d.entry.js +2 -0
  349. package/dist/core/p-cfa9ed7d.entry.js.map +1 -0
  350. package/dist/core/{p-23ed8b99.entry.js → p-d4903dcd.entry.js} +2 -2
  351. package/dist/core/{p-1e4cdd2d.entry.js → p-d82b27df.entry.js} +2 -2
  352. package/dist/core/{p-7c0914e7.entry.js → p-d8ce39ac.entry.js} +2 -2
  353. package/dist/core/{p-70700c7a.entry.js → p-dcce0dfd.entry.js} +2 -2
  354. package/dist/core/{p-40f2f58e.entry.js → p-de1e04ac.entry.js} +2 -2
  355. package/dist/core/{p-4b601e06.entry.js → p-dee21f6d.entry.js} +2 -2
  356. package/dist/core/{p-4245a976.entry.js → p-dfc8cba6.entry.js} +2 -2
  357. package/dist/core/{p-b3ac38c5.entry.js → p-e2629bfe.entry.js} +2 -2
  358. package/dist/core/{p-3b5d3e24.entry.js → p-e38fddbb.entry.js} +2 -2
  359. package/dist/core/p-e38fddbb.entry.js.map +1 -0
  360. package/dist/core/p-eca6e215.entry.js +2 -0
  361. package/dist/core/p-eca6e215.entry.js.map +1 -0
  362. package/dist/core/{p-44e4e8c1.entry.js → p-ef36181d.entry.js} +2 -2
  363. package/dist/core/{p-ef09b450.entry.js → p-ef4b752c.entry.js} +2 -2
  364. package/dist/core/p-ef4b752c.entry.js.map +1 -0
  365. package/dist/core/{p-b3d6d5be.entry.js → p-fa38ad2e.entry.js} +2 -2
  366. package/dist/core/p-fc4f7180.entry.js +2 -0
  367. package/dist/core/p-fc4f7180.entry.js.map +1 -0
  368. package/dist/esm/core.js +1 -1
  369. package/dist/esm/{helpers-46a2d1fd.js → helpers-f2ffaa7c.js} +22 -38
  370. package/dist/esm/helpers-f2ffaa7c.js.map +1 -0
  371. package/dist/esm/ic-accordion-group.entry.js +1 -1
  372. package/dist/esm/ic-accordion.entry.js +10 -8
  373. package/dist/esm/ic-accordion.entry.js.map +1 -1
  374. package/dist/esm/ic-alert.entry.js +2 -2
  375. package/dist/esm/ic-alert.entry.js.map +1 -1
  376. package/dist/esm/ic-back-to-top.entry.js +1 -1
  377. package/dist/esm/ic-badge.entry.js +4 -4
  378. package/dist/esm/ic-badge.entry.js.map +1 -1
  379. package/dist/esm/ic-breadcrumb-group.entry.js +56 -76
  380. package/dist/esm/ic-breadcrumb-group.entry.js.map +1 -1
  381. package/dist/esm/ic-breadcrumb.entry.js +32 -51
  382. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  383. package/dist/esm/ic-button_3.entry.js +111 -132
  384. package/dist/esm/ic-button_3.entry.js.map +1 -1
  385. package/dist/esm/ic-card-vertical.entry.js +6 -6
  386. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  387. package/dist/esm/ic-checkbox-group.entry.js +9 -10
  388. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  389. package/dist/esm/ic-checkbox.entry.js +37 -41
  390. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  391. package/dist/esm/ic-chip.entry.js +26 -38
  392. package/dist/esm/ic-chip.entry.js.map +1 -1
  393. package/dist/esm/ic-data-list.entry.js +2 -2
  394. package/dist/esm/ic-data-row.entry.js +3 -3
  395. package/dist/esm/ic-dialog.entry.js +2 -2
  396. package/dist/esm/ic-divider.entry.js +1 -1
  397. package/dist/esm/ic-empty-state.entry.js +3 -3
  398. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  399. package/dist/esm/ic-footer-link.entry.js +3 -3
  400. package/dist/esm/ic-footer.entry.js +1 -1
  401. package/dist/esm/ic-hero.entry.js +7 -6
  402. package/dist/esm/ic-hero.entry.js.map +1 -1
  403. package/dist/esm/ic-horizontal-scroll.entry.js +6 -6
  404. package/dist/esm/ic-input-component-container_3.entry.js +23 -22
  405. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  406. package/dist/esm/ic-input-label_2.entry.js +8 -8
  407. package/dist/esm/ic-link.entry.js +12 -4
  408. package/dist/esm/ic-link.entry.js.map +1 -1
  409. package/dist/esm/ic-menu-group.entry.js +2 -2
  410. package/dist/esm/ic-menu-item.entry.js +5 -5
  411. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  412. package/dist/esm/ic-navigation-button.entry.js +3 -3
  413. package/dist/esm/ic-navigation-group.entry.js +116 -164
  414. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  415. package/dist/esm/ic-navigation-item.entry.js +65 -62
  416. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  417. package/dist/esm/ic-navigation-menu.entry.js +5 -5
  418. package/dist/esm/ic-page-header.entry.js +7 -7
  419. package/dist/esm/ic-pagination-item.entry.js +2 -2
  420. package/dist/esm/ic-pagination.entry.js +5 -5
  421. package/dist/esm/ic-popover-menu.entry.js +8 -7
  422. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  423. package/dist/esm/ic-radio-group.entry.js +5 -5
  424. package/dist/esm/ic-radio-option.entry.js +5 -5
  425. package/dist/esm/ic-search-bar.entry.js +149 -154
  426. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  427. package/dist/esm/ic-section-container.entry.js +2 -2
  428. package/dist/esm/ic-select.entry.js +142 -218
  429. package/dist/esm/ic-select.entry.js.map +1 -1
  430. package/dist/esm/ic-side-navigation.entry.js +25 -6
  431. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  432. package/dist/esm/ic-skeleton.entry.js +2 -2
  433. package/dist/esm/ic-skip-link.entry.js +2 -2
  434. package/dist/esm/ic-status-tag.entry.js +3 -3
  435. package/dist/esm/ic-step.entry.js +14 -14
  436. package/dist/esm/ic-stepper.entry.js +3 -3
  437. package/dist/esm/ic-switch.entry.js +6 -6
  438. package/dist/esm/ic-switch.entry.js.map +1 -1
  439. package/dist/esm/ic-tab-context.entry.js +1 -1
  440. package/dist/esm/ic-tab-group.entry.js +3 -3
  441. package/dist/esm/ic-tab-panel.entry.js +2 -2
  442. package/dist/esm/ic-tab.entry.js +3 -3
  443. package/dist/esm/ic-text-field.entry.js +39 -31
  444. package/dist/esm/ic-text-field.entry.js.map +1 -1
  445. package/dist/esm/ic-theme.entry.js +2 -2
  446. package/dist/esm/ic-toast-region.entry.js +1 -1
  447. package/dist/esm/ic-toast.entry.js +4 -4
  448. package/dist/esm/ic-toggle-button-group.entry.js +54 -68
  449. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  450. package/dist/esm/ic-toggle-button.entry.js +62 -64
  451. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  452. package/dist/esm/ic-top-navigation.entry.js +66 -64
  453. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  454. package/dist/esm/ic-typography.entry.js +3 -3
  455. package/dist/esm/loader.js +1 -1
  456. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.d.ts +4 -6
  457. package/dist/types/components/ic-breadcrumb-group/ic-breadcrumb-group.d.ts +9 -15
  458. package/dist/types/components/ic-button/ic-button.d.ts +29 -22
  459. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +14 -13
  460. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +8 -9
  461. package/dist/types/components/ic-chip/ic-chip.d.ts +13 -15
  462. package/dist/types/components/ic-link/ic-link.d.ts +2 -1
  463. package/dist/types/components/ic-menu/ic-menu.d.ts +12 -12
  464. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +4 -18
  465. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +9 -7
  466. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +40 -40
  467. package/dist/types/components/ic-select/ic-select.d.ts +36 -38
  468. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +5 -0
  469. package/dist/types/components/ic-text-field/ic-text-field.d.ts +40 -34
  470. package/dist/types/components/ic-toggle-button/ic-toggle-button.d.ts +10 -11
  471. package/dist/types/components/ic-toggle-button-group/ic-toggle-button-group.d.ts +10 -12
  472. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +9 -8
  473. package/dist/types/components.d.ts +216 -203
  474. package/dist/types/utils/helpers.d.ts +8 -8
  475. package/hydrate/index.js +1158 -1350
  476. package/hydrate/index.mjs +1158 -1350
  477. package/package.json +2 -2
  478. package/vscode-data.json +172 -4
  479. package/dist/cjs/helpers-789082d4.js.map +0 -1
  480. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.types.js +0 -2
  481. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.types.js.map +0 -1
  482. package/dist/core/p-0a8b3967.entry.js +0 -2
  483. package/dist/core/p-0a8b3967.entry.js.map +0 -1
  484. package/dist/core/p-0b4350df.entry.js +0 -2
  485. package/dist/core/p-0b4350df.entry.js.map +0 -1
  486. package/dist/core/p-0e618fc5.entry.js +0 -2
  487. package/dist/core/p-0e618fc5.entry.js.map +0 -1
  488. package/dist/core/p-18ecba80.entry.js +0 -2
  489. package/dist/core/p-18ecba80.entry.js.map +0 -1
  490. package/dist/core/p-281ce313.js +0 -2
  491. package/dist/core/p-281ce313.js.map +0 -1
  492. package/dist/core/p-30abe545.entry.js +0 -2
  493. package/dist/core/p-30abe545.entry.js.map +0 -1
  494. package/dist/core/p-3132270d.entry.js +0 -2
  495. package/dist/core/p-3132270d.entry.js.map +0 -1
  496. package/dist/core/p-3b5d3e24.entry.js.map +0 -1
  497. package/dist/core/p-517d7afb.entry.js +0 -2
  498. package/dist/core/p-517d7afb.entry.js.map +0 -1
  499. package/dist/core/p-5d4b0480.entry.js +0 -2
  500. package/dist/core/p-5d4b0480.entry.js.map +0 -1
  501. package/dist/core/p-5e18b899.entry.js +0 -2
  502. package/dist/core/p-5e18b899.entry.js.map +0 -1
  503. package/dist/core/p-6337fe1f.entry.js +0 -2
  504. package/dist/core/p-6337fe1f.entry.js.map +0 -1
  505. package/dist/core/p-63fe83ad.entry.js +0 -2
  506. package/dist/core/p-63fe83ad.entry.js.map +0 -1
  507. package/dist/core/p-8ba129fc.entry.js +0 -2
  508. package/dist/core/p-8ba129fc.entry.js.map +0 -1
  509. package/dist/core/p-950db960.entry.js +0 -2
  510. package/dist/core/p-950db960.entry.js.map +0 -1
  511. package/dist/core/p-9ea9a4ce.entry.js +0 -2
  512. package/dist/core/p-9ea9a4ce.entry.js.map +0 -1
  513. package/dist/core/p-a9c96e3e.entry.js +0 -2
  514. package/dist/core/p-a9c96e3e.entry.js.map +0 -1
  515. package/dist/core/p-ac7db165.entry.js +0 -2
  516. package/dist/core/p-ac7db165.entry.js.map +0 -1
  517. package/dist/core/p-c04f36c5.entry.js +0 -2
  518. package/dist/core/p-c62318a8.entry.js +0 -2
  519. package/dist/core/p-c62318a8.entry.js.map +0 -1
  520. package/dist/core/p-e2f893f0.entry.js.map +0 -1
  521. package/dist/core/p-e586ae7b.entry.js +0 -2
  522. package/dist/core/p-e586ae7b.entry.js.map +0 -1
  523. package/dist/core/p-ef09b450.entry.js.map +0 -1
  524. package/dist/core/p-fc50d582.entry.js.map +0 -1
  525. package/dist/core/p-fe833509.entry.js +0 -2
  526. package/dist/core/p-fe833509.entry.js.map +0 -1
  527. package/dist/esm/helpers-46a2d1fd.js.map +0 -1
  528. package/dist/types/components/ic-breadcrumb/ic-breadcrumb.types.d.ts +0 -1
  529. /package/dist/core/{p-bbe5596b.entry.js.map → p-15b7adaf.entry.js.map} +0 -0
  530. /package/dist/core/{p-abaea607.entry.js.map → p-1d172032.entry.js.map} +0 -0
  531. /package/dist/core/{p-6de6b6b7.entry.js.map → p-23536595.entry.js.map} +0 -0
  532. /package/dist/core/{p-f3c72ffb.entry.js.map → p-2c371198.entry.js.map} +0 -0
  533. /package/dist/core/{p-f34eee68.entry.js.map → p-3cb4ecef.entry.js.map} +0 -0
  534. /package/dist/core/{p-3eb7ef1d.entry.js.map → p-432aeae0.entry.js.map} +0 -0
  535. /package/dist/core/{p-88924aef.entry.js.map → p-51b49429.entry.js.map} +0 -0
  536. /package/dist/core/{p-7afc71d0.entry.js.map → p-56e0de32.entry.js.map} +0 -0
  537. /package/dist/core/{p-7a0d238b.entry.js.map → p-56fb0298.entry.js.map} +0 -0
  538. /package/dist/core/{p-fbde763c.entry.js.map → p-5aec3757.entry.js.map} +0 -0
  539. /package/dist/core/{p-23d059ff.entry.js.map → p-5eb2ac90.entry.js.map} +0 -0
  540. /package/dist/core/{p-c2ca6274.entry.js.map → p-60aad45d.entry.js.map} +0 -0
  541. /package/dist/core/{p-33c86ba6.entry.js.map → p-628c32b8.entry.js.map} +0 -0
  542. /package/dist/core/{p-7dfe0284.entry.js.map → p-6eea869b.entry.js.map} +0 -0
  543. /package/dist/core/{p-0631c3ab.entry.js.map → p-7d2c07e2.entry.js.map} +0 -0
  544. /package/dist/core/{p-3675c4b4.entry.js.map → p-887e00bb.entry.js.map} +0 -0
  545. /package/dist/core/{p-45432bf5.entry.js.map → p-8c77dd65.entry.js.map} +0 -0
  546. /package/dist/core/{p-acebb05c.entry.js.map → p-9c47521d.entry.js.map} +0 -0
  547. /package/dist/core/{p-c04f36c5.entry.js.map → p-a140bcaa.entry.js.map} +0 -0
  548. /package/dist/core/{p-005cd8a8.entry.js.map → p-aad10013.entry.js.map} +0 -0
  549. /package/dist/core/{p-de43d375.entry.js.map → p-bf3b853e.entry.js.map} +0 -0
  550. /package/dist/core/{p-e56d0db2.entry.js.map → p-c59fd23e.entry.js.map} +0 -0
  551. /package/dist/core/{p-f815f8c9.entry.js.map → p-c5ffe2cf.entry.js.map} +0 -0
  552. /package/dist/core/{p-5206a978.entry.js.map → p-c8cf1ad5.entry.js.map} +0 -0
  553. /package/dist/core/{p-23ed8b99.entry.js.map → p-d4903dcd.entry.js.map} +0 -0
  554. /package/dist/core/{p-1e4cdd2d.entry.js.map → p-d82b27df.entry.js.map} +0 -0
  555. /package/dist/core/{p-7c0914e7.entry.js.map → p-d8ce39ac.entry.js.map} +0 -0
  556. /package/dist/core/{p-70700c7a.entry.js.map → p-dcce0dfd.entry.js.map} +0 -0
  557. /package/dist/core/{p-40f2f58e.entry.js.map → p-de1e04ac.entry.js.map} +0 -0
  558. /package/dist/core/{p-4b601e06.entry.js.map → p-dee21f6d.entry.js.map} +0 -0
  559. /package/dist/core/{p-4245a976.entry.js.map → p-dfc8cba6.entry.js.map} +0 -0
  560. /package/dist/core/{p-b3ac38c5.entry.js.map → p-e2629bfe.entry.js.map} +0 -0
  561. /package/dist/core/{p-44e4e8c1.entry.js.map → p-ef36181d.entry.js.map} +0 -0
  562. /package/dist/core/{p-b3d6d5be.entry.js.map → p-fa38ad2e.entry.js.map} +0 -0
@@ -4,7 +4,6 @@ import { IC_BLOCK_COLOR_COMPONENTS, IC_BLOCK_COLOR_EXCEPTIONS, IC_FIXED_COLOR_CO
4
4
  const DARK_MODE_THRESHOLD = 133.3505;
5
5
  const ANYWHERE_SEARCH_POSITION = "anywhere";
6
6
  const icInput = "ic-input";
7
- const linkIcInput = "input.ic-input";
8
7
  /**
9
8
  * converts an enum of strings into an array of strings
10
9
  */
@@ -28,11 +27,9 @@ export const stringEnumToArray = (theEnum) => {
28
27
  export const inheritAttributes = (element, attributes = []) => {
29
28
  const attributeObject = {};
30
29
  attributes.forEach((attr) => {
31
- if (element.hasAttribute(attr)) {
32
- const value = element.getAttribute(attr);
33
- if (value !== null) {
34
- attributeObject[attr] = value;
35
- }
30
+ const value = element.getAttribute(attr);
31
+ if (value !== null) {
32
+ attributeObject[attr] = value;
36
33
  element.removeAttribute(attr);
37
34
  }
38
35
  });
@@ -59,34 +56,27 @@ export const debounce = (func, wait = 0) => {
59
56
  * allows it to be picked up inside of forms. It should contain the same
60
57
  * values as the host element.
61
58
  *
62
- * @param always Add a hidden input even if the container does not use Shadow
63
59
  * @param container The element where the input will be added
64
- * @param name The name of the input
65
60
  * @param value The value of the input
61
+ * @param name The name of the input
66
62
  * @param disabled If true, the input is disabled
63
+ * @param always Add a hidden input even if the container does not use Shadow
67
64
  */
68
- export const renderHiddenInput = (always, container, name, value, disabled) => {
69
- if (name !== undefined && (always || hasShadowDom(container))) {
70
- const inputs = container.querySelectorAll(linkIcInput);
71
- const inputEls = Array.from(inputs);
72
- const filtered = inputEls.filter((el) => container === el.parentElement);
73
- let input = filtered[0];
74
- if (input === null || input === undefined) {
65
+ export const renderHiddenInput = (container, value, name, disabled = false, always = true) => {
66
+ if (name && (always || hasShadowDom(container))) {
67
+ let input = getHiddenInputElement(container);
68
+ if (!input) {
75
69
  input = container.ownerDocument.createElement("input");
76
70
  input.type = "hidden";
77
71
  input.classList.add(icInput);
78
72
  container.appendChild(input);
79
73
  }
80
- input.disabled = !!disabled;
74
+ input.disabled = disabled;
81
75
  input.name = name;
82
- if (value instanceof Date) {
83
- input.value = value ? value.toISOString() : "";
84
- }
85
- else {
86
- input.value = value || "";
87
- }
76
+ input.value = value instanceof Date ? value.toISOString() : value || "";
88
77
  }
89
78
  };
79
+ const getHiddenInputElement = (container) => Array.from(container.querySelectorAll(`input.${icInput}`)).filter((el) => container === el.parentElement)[0];
90
80
  /**
91
81
  * This method is used to add a hidden file input to a host element that contains
92
82
  * a Shadow DOM. It does not add the input inside of the Shadow root which
@@ -96,17 +86,14 @@ export const renderHiddenInput = (always, container, name, value, disabled) => {
96
86
  * @param event: The event that is emitted once a file is selected.
97
87
  * @param container The element where the input will be added
98
88
  * @param multiple If true, multiple files can be selected
99
- * @param name The name of the input
100
- * @param value The value of the input
101
89
  * @param disabled If true, the input is disabled
102
90
  * @param accept A string of the accepted files
91
+ * @param name The name of the input
92
+ * @param value The value of the input
103
93
  */
104
- export const renderFileHiddenInput = (event, container, multiple, name, value, disabled, accept) => {
94
+ export const renderFileHiddenInput = (event, container, multiple, disabled, accept, name, value) => {
105
95
  if (name !== undefined && hasShadowDom(container)) {
106
- const inputs = container.querySelectorAll(linkIcInput);
107
- const inputEls = Array.from(inputs);
108
- const filtered = inputEls.filter((el) => container === el.parentElement);
109
- let input = filtered[0];
96
+ let input = getHiddenInputElement(container);
110
97
  if (input === null || input === undefined) {
111
98
  input = container.ownerDocument.createElement("input");
112
99
  input.classList.add(icInput);
@@ -128,13 +115,10 @@ export const renderFileHiddenInput = (event, container, multiple, name, value, d
128
115
  }
129
116
  };
130
117
  export const removeHiddenInput = (container) => {
131
- const inputs = container.querySelectorAll("input.ic-input");
132
- const inputEls = Array.from(inputs);
133
- const filtered = inputEls.filter((el) => container === el.parentElement);
134
- const input = filtered[0];
135
- input === null || input === void 0 ? void 0 : input.remove();
118
+ var _a;
119
+ (_a = getHiddenInputElement(container)) === null || _a === void 0 ? void 0 : _a.remove();
136
120
  };
137
- export const hasShadowDom = (el) => el ? !!el.shadowRoot && !!el.attachShadow : false;
121
+ export const hasShadowDom = (el) => !!el && !!el.shadowRoot && !!el.attachShadow;
138
122
  export const getInputHelperTextID = (id) => id + "-helper-text";
139
123
  export const getInputValidationTextID = (id) => id + "-validation-text";
140
124
  export const getInputDescribedByText = (inputId, helperText, validationText) => `${helperText ? getInputHelperTextID(inputId) : ""} ${validationText ? getInputValidationTextID(inputId) : ""}`.trim();
@@ -196,7 +180,7 @@ export const handleHiddenFormButtonClick = (form, button) => {
196
180
  hiddenFormButton.click();
197
181
  hiddenFormButton.remove();
198
182
  };
199
- export const isEmptyString = (value) => value ? value.trim().length === 0 : true;
183
+ export const isEmptyString = (value) => !value || value.trim().length === 0;
200
184
  // A helper function that checks if a prop has been defined
201
185
  export const isPropDefined = (prop) => prop !== undefined ? prop : undefined;
202
186
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter, forceUpdate } from \"@stencil/core\";\nimport {\n IcCallbackFunctionNoReturn,\n IcInformationStatusOrEmpty,\n IcNavParentDetails,\n IcPropObject,\n IcSearchMatchPositions,\n IcColorRGBA,\n IcDeviceSizes,\n IcColor,\n IcBrandForegroundNoDefault,\n} from \"./types\";\n\nimport {\n IcMenuOption,\n IcBrandForeground,\n IcBrandForegroundEnum,\n} from \"../utils/types\";\nimport {\n IC_BLOCK_COLOR_COMPONENTS,\n IC_BLOCK_COLOR_EXCEPTIONS,\n IC_FIXED_COLOR_COMPONENTS,\n} from \"./constants\";\n\nconst DARK_MODE_THRESHOLD = 133.3505;\nconst ANYWHERE_SEARCH_POSITION = \"anywhere\";\nconst icInput = \"ic-input\";\nconst linkIcInput = \"input.ic-input\";\n\n/**\n * converts an enum of strings into an array of strings\n */\nexport const stringEnumToArray = (\n theEnum: Record<string, string | number>\n): string[] => {\n const arr: string[] = [];\n Object.values(theEnum).forEach((val) => {\n if (isNaN(Number(val))) {\n const str = val as string;\n arr.push(str);\n }\n });\n return arr;\n};\n\n/**\n * Used to inherit global attributes set on the host. Called in componentWillLoad and assigned\n * to a variable that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nexport const inheritAttributes = (\n element: HTMLElement,\n attributes: string[] = []\n): { [key: string]: string } => {\n const attributeObject: { [key: string]: string } = {};\n\n attributes.forEach((attr) => {\n if (element.hasAttribute(attr)) {\n const value = element.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = value;\n }\n element.removeAttribute(attr);\n }\n });\n\n return attributeObject;\n};\n\nexport const debounceEvent = (\n event: EventEmitter,\n wait: number\n): EventEmitter => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const original = (event as any)._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n } as EventEmitter;\n};\n\nexport const debounce = (\n func: (...args: unknown[]) => void,\n wait = 0\n): unknown => {\n let timer: ReturnType<typeof setTimeout>;\n return (...args: unknown[]) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param always Add a hidden input even if the container does not use Shadow\n * @param container The element where the input will be added\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n */\nexport const renderHiddenInput = (\n always: boolean,\n container: HTMLElement,\n name: string,\n value: string | Date | undefined | null,\n disabled: boolean | undefined\n): void => {\n if (name !== undefined && (always || hasShadowDom(container))) {\n const inputs = container.querySelectorAll(linkIcInput);\n const inputEls = Array.from(inputs);\n const filtered = inputEls.filter((el) => container === el.parentElement);\n\n let input = filtered[0] as HTMLInputElement;\n if (input === null || input === undefined) {\n input = container.ownerDocument.createElement(\"input\");\n input.type = \"hidden\";\n input.classList.add(icInput);\n container.appendChild(input);\n }\n input.disabled = !!disabled;\n input.name = name;\n\n if (value instanceof Date) {\n input.value = value ? value.toISOString() : \"\";\n } else {\n input.value = value || \"\";\n }\n }\n};\n\n/**\n * This method is used to add a hidden file input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param event: The event that is emitted once a file is selected.\n * @param container The element where the input will be added\n * @param multiple If true, multiple files can be selected\n * @param name The name of the input\n * @param value The value of the input\n * @param disabled If true, the input is disabled\n * @param accept A string of the accepted files\n */\nexport const renderFileHiddenInput = (\n event: EventEmitter,\n container: HTMLElement,\n multiple: boolean,\n name: string,\n value: FileList | undefined | null,\n disabled: boolean,\n accept: string | undefined | null\n): void => {\n if (name !== undefined && hasShadowDom(container)) {\n const inputs = container.querySelectorAll(linkIcInput);\n const inputEls = Array.from(inputs);\n const filtered = inputEls.filter((el) => container === el.parentElement);\n\n let input = filtered[0] as HTMLInputElement;\n if (input === null || input === undefined) {\n input = container.ownerDocument.createElement(\"input\");\n input.classList.add(icInput);\n container.appendChild(input);\n }\n input.type = \"file\";\n input.hidden = true;\n input.multiple = multiple;\n input.name = name;\n input.disabled = disabled;\n\n if (value) input.files = value;\n if (accept) input.accept = accept;\n\n input.onchange = () => {\n event.emit(input.files);\n };\n input.click();\n }\n};\n\nexport const removeHiddenInput = (container: HTMLElement): void => {\n const inputs = container.querySelectorAll(\"input.ic-input\");\n const inputEls = Array.from(inputs);\n const filtered = inputEls.filter((el) => container === el.parentElement);\n const input = filtered[0] as HTMLInputElement;\n input?.remove();\n};\n\nexport const hasShadowDom = (el: HTMLElement | null | undefined): boolean =>\n el ? !!el.shadowRoot && !!el.attachShadow : false;\n\nexport const getInputHelperTextID = (id: string): string => id + \"-helper-text\";\n\nexport const getInputValidationTextID = (id: string): string =>\n id + \"-validation-text\";\n\nexport const getInputDescribedByText = (\n inputId: string,\n helperText: boolean,\n validationText: boolean\n): string =>\n `${helperText ? getInputHelperTextID(inputId) : \"\"} ${\n validationText ? getInputValidationTextID(inputId) : \"\"\n }`.trim();\n\n/**\n * This method helps to understand the context in which a component exists,\n * to assist with choosing appropriate foreground colours to use. For example,\n * this method will help you use the 'white' version of a button if it's within\n * a block colour element using white foreground text.\n *\n * This only works for components/elements passed via <slot> and not if they\n * are part of an IC component.\n *\n * \"\"\n * @returns IcBrandForeground depending on the context\n */\nexport const getBrandFromContext = (\n el: Element,\n brandFromEvent: IcBrandForeground | null = null\n): IcBrandForeground => {\n const parentElement =\n el.parentElement || (<ShadowRoot>el.getRootNode()).host.parentElement;\n const blockColorParent = parentElement?.closest(\n IC_BLOCK_COLOR_COMPONENTS.join(\",\")\n );\n\n // If within a block color component\n if (blockColorParent) {\n const parentTag = blockColorParent.tagName.toLowerCase();\n const currentTag = el.tagName.toLowerCase();\n\n if (IC_BLOCK_COLOR_EXCEPTIONS[parentTag]?.includes(currentTag)) {\n return IcBrandForegroundEnum.Default;\n } else if (\n brandFromEvent !== null &&\n !IC_FIXED_COLOR_COMPONENTS.includes(parentTag)\n ) {\n return brandFromEvent;\n } else if (\n blockColorParent.classList.contains(\n `${parentTag}-${IcBrandForegroundEnum.Dark}`\n ) ||\n blockColorParent.classList.contains(IcBrandForegroundEnum.Dark)\n ) {\n return IcBrandForegroundEnum.Dark;\n }\n\n return IcBrandForegroundEnum.Light;\n }\n\n return IcBrandForegroundEnum.Default;\n};\n\n/**\n * Checks if the current device is a mobile or tablet device.\n * @returns {boolean} Returns true if the device is a mobile or tablet device, otherwise returns false.\n */\nexport const isMobileOrTablet = (): boolean =>\n \"maxTouchPoints\" in navigator && \"userAgent\" in navigator\n ? navigator.maxTouchPoints > 0 &&\n /iPad|iPhone|iPod|Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n : false;\n\n/**\n * Will create a button within the lightDOM which interacts with the parent form.\n * This is required as buttons within the shadowDOM will not invoke a submit or reset\n *\n * @param form - parent form element which contains shadowDom button\n * @param button - shadowDOM button\n */\nexport const handleHiddenFormButtonClick = (\n form: HTMLFormElement,\n button: HTMLIcButtonElement | HTMLButtonElement\n): void => {\n const hiddenFormButton = document.createElement(\"button\");\n\n button.type && hiddenFormButton.setAttribute(\"type\", button.type);\n hiddenFormButton.style.display = \"none\";\n\n form.appendChild(hiddenFormButton);\n\n hiddenFormButton.click();\n hiddenFormButton.remove();\n};\n\nexport const isEmptyString = (value: string): boolean =>\n value ? value.trim().length === 0 : true;\n\n// A helper function that checks if a prop has been defined\nexport const isPropDefined = (prop: string | undefined): string | undefined =>\n prop !== undefined ? prop : undefined;\n\n/**\n * Extracts the label using the value from an object. Requires the object to have a label and value property.\n * @param value - value from object\n * @param options - list of menu items\n * @returns - label corresponding to value\n */\nexport const getLabelFromValue = (\n value: string,\n options: IcMenuOption[],\n valueField = \"value\",\n labelField = \"label\"\n): string | undefined => {\n const ungroupedOptions: IcMenuOption[] = [];\n if (options.length > 0 && options.map) {\n options.map((option) => {\n if (option.children) {\n option.children.map((option: IcMenuOption) =>\n ungroupedOptions.push(option)\n );\n } else {\n ungroupedOptions.push(option);\n }\n });\n const matchingValue = ungroupedOptions.find(\n (option) => option[valueField] === value\n );\n if (matchingValue !== undefined) return matchingValue[labelField];\n }\n\n return undefined;\n};\n\n/**\n * Filters the options based on the search string.\n * @param options - array of options\n * @param includeDescriptions - determines whether option descriptions are included when filtering options\n * @param searchString - string used to filter the options\n * @param position - whether the search string matches the start of or anywhere in the options\n * @returns filtered array of options\n */\nexport const getFilteredMenuOptions = (\n options: IcMenuOption[],\n includeDescriptions: boolean,\n searchString: string,\n position: IcSearchMatchPositions = ANYWHERE_SEARCH_POSITION,\n labelField = \"label\"\n): IcMenuOption[] =>\n options.filter((option) => {\n const label: string = option[labelField].toLowerCase();\n const description = option.description?.toLowerCase();\n const lowerSearchString = searchString.toLowerCase();\n\n return position === ANYWHERE_SEARCH_POSITION\n ? includeDescriptions\n ? label.includes(lowerSearchString) ||\n description?.includes(lowerSearchString)\n : label.includes(lowerSearchString)\n : includeDescriptions\n ? label.startsWith(lowerSearchString) ||\n description?.startsWith(lowerSearchString)\n : label.startsWith(lowerSearchString);\n });\n\n/**\n * Gets count of options where only group title \"parent\" options have been removed.\n * Disabled options are included in the count.\n * @param options - array of options\n * @returns number of options not including group titles\n */\nexport const getOptionsWithoutGroupTitlesCount = (\n options: IcMenuOption[]\n): number => {\n const optionsWithoutGroupTitles: IcMenuOption[] = [];\n\n if (options.length > 0 && options.map) {\n options.map((option) => {\n if (option.children) {\n option.children.map((option) => optionsWithoutGroupTitles.push(option));\n } else {\n optionsWithoutGroupTitles.push(option);\n }\n });\n }\n\n return optionsWithoutGroupTitles.length;\n};\n\nexport const deviceSizeMatches = (size: number): boolean =>\n window.matchMedia(`(max-width: ${size}px)`).matches;\n\nexport const getCurrentDeviceSize = (): number => {\n if (deviceSizeMatches(DEVICE_SIZES.S)) {\n return DEVICE_SIZES.S;\n }\n if (deviceSizeMatches(DEVICE_SIZES.M)) {\n return DEVICE_SIZES.M;\n }\n if (deviceSizeMatches(DEVICE_SIZES.L)) {\n return DEVICE_SIZES.L;\n }\n if (deviceSizeMatches(DEVICE_SIZES.XL)) {\n return DEVICE_SIZES.XL;\n }\n //fallback needed as all of above get initialised to 0 in jest tests\n return DEVICE_SIZES.UNDEFINED;\n};\n\nexport const getCssProperty = (cssVar: string): string =>\n getComputedStyle(document.documentElement).getPropertyValue(cssVar);\n\n/**\n * Returns the brightness of the theme colour, calculated by using the theme RGB CSS values by:\n * - Multiplying each RGB value by a set number: https://www.w3.org/TR/AERT/#color-contrast\n * - Adding them together and dividing by 1000\n * This is a similar calculation to its CSS counterpart: \"--ic-brand-text-color\"\n * @returns number representing the brightness of the theme colour\n */\nexport const getBrandColorBrightness = (): number => {\n const themeRed = getCssProperty(\"--ic-brand-color-primary-r\");\n const themeGreen = getCssProperty(\"--ic-brand-color-primary-g\");\n const themeBlue = getCssProperty(\"--ic-brand-color-primary-b\");\n return (\n (parseInt(themeRed) * 299 +\n parseInt(themeGreen) * 587 +\n parseInt(themeBlue) * 114) /\n 1000\n );\n};\n\n/**\n * Returns if dark or light foreground colors should be used for color contrast reasons\n * @returns \"dark\" or \"light\"\n * @param brightness - Optional custom brightness value. Defaults to `getBrandColorBrightness`\n */\nexport const getBrandForegroundAppearance = (\n brightness = getBrandColorBrightness()\n): IcBrandForegroundNoDefault =>\n brightness > DARK_MODE_THRESHOLD\n ? IcBrandForegroundEnum.Dark\n : IcBrandForegroundEnum.Light;\n\nexport const getSlot = (\n element: HTMLElement | undefined,\n name: string\n): Element | null => element?.querySelector(`[slot=\"${name}\"]`) || null;\n\nexport const slotHasContent = (element: HTMLElement, name: string): boolean =>\n getSlot(element, name) !== null;\n\nexport const getSlotContent = (\n element: HTMLElement,\n name: string\n): Element[] | NodeListOf<ChildNode> | null => {\n const slot = getSlot(element, name);\n return slot ? getSlotElements(slot) : null;\n};\n\nexport const getSlotElements = (\n slot: Element\n): NodeListOf<ChildNode> | Element[] | null => {\n const slotContent = slot.firstElementChild as HTMLSlotElement;\n\n if (slotContent === null) return [slot];\n\n const elements = slotContent.assignedElements\n ? slotContent.assignedElements()\n : slotContent.childNodes;\n return elements.length ? elements : slot.tagName ? [slot] : null;\n};\n\nexport const getNavItemParentDetails = ({\n parentElement,\n}: HTMLElement): IcNavParentDetails => {\n let navType: IcNavParentDetails = { navType: \"\", parent: null };\n if (parentElement) {\n switch (parentElement.tagName) {\n case \"IC-NAVIGATION-GROUP\":\n navType = getNavItemParentDetails(parentElement);\n break;\n case \"IC-TOP-NAVIGATION\":\n navType = { navType: \"top\", parent: parentElement };\n break;\n case \"IC-SIDE-NAVIGATION\":\n navType = { navType: \"side\", parent: parentElement };\n break;\n case \"IC-PAGE-HEADER\":\n navType = { navType: \"page-header\", parent: null };\n break;\n }\n }\n\n return navType;\n};\n\nexport const DEVICE_SIZES = {\n XS: Number(\n getCssProperty(\"--ic-breakpoint-xs\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 0\n S: Number(\n getCssProperty(\"--ic-breakpoint-sm\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 576\n M: Number(\n getCssProperty(\"--ic-breakpoint-md\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 768\n L: Number(\n getCssProperty(\"--ic-breakpoint-lg\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 992\n XL: Number(\n getCssProperty(\"--ic-breakpoint-xl\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 1200\n UNDEFINED: 1200,\n};\n\nexport const hasValidationStatus = (\n status?: IcInformationStatusOrEmpty,\n disabled?: boolean\n): boolean => !!status && !disabled;\n\nexport const isSlotUsed = (\n { children }: HTMLElement,\n slotName: string\n): boolean =>\n Array.from(children).some((child) => child.getAttribute(\"slot\") === slotName);\n\n// added as a common method to allow detection of gatsby hydration issue, where (camelCase) props are initially undefined & then update\n// with a value. Allows a callback function to be executed when this is the case\nexport const onComponentPropUndefinedChange = (\n oldValue: string | undefined,\n newValue: string | undefined,\n callback: IcCallbackFunctionNoReturn\n): void => {\n if (oldValue === undefined && newValue !== oldValue) {\n callback();\n }\n};\n\nexport const onComponentRequiredPropUndefined = (\n props: IcPropObject[],\n component: string\n): void => {\n props.forEach(({ prop, propName }) => {\n if (prop === null || prop === undefined) {\n console.error(\n `No ${propName} specified for ${component} component - prop '${propName}' (web components) / '${kebabToCamelCase(\n propName\n )}' (react) required`\n );\n }\n });\n};\n\nexport const kebabToCamelCase = (kebabCase: string): string =>\n kebabCase\n .toLowerCase()\n .split(\"-\")\n .map((word, index) =>\n index === 0\n ? word\n : `${word.substring(0, 1).toUpperCase()}${word.substring(1)}`\n )\n .join(\"\");\n\nexport const checkResizeObserver = (\n callbackFn: IcCallbackFunctionNoReturn\n): void => {\n if (\n typeof window !== \"undefined\" &&\n typeof window.ResizeObserver !== \"undefined\"\n ) {\n callbackFn();\n }\n};\n\nconst hex2dec = (v: string) => parseInt(v, 16);\n\nexport const hexToRgba = (hex: string): IcColorRGBA => {\n const hexChars = hex\n .replace(\"#\", \"\")\n .split(\"\")\n .map((char) => char.repeat(2));\n return {\n r: hex2dec(hex.length === 4 ? hexChars[0] : hex.slice(1, 3)),\n g: hex2dec(hex.length === 4 ? hexChars[1] : hex.slice(3, 5)),\n b: hex2dec(hex.length === 4 ? hexChars[2] : hex.slice(5)),\n a: 1,\n };\n};\n\nexport const rgbaStrToObj = (rgbaStr: string): IcColorRGBA => {\n const isRGBA = rgbaStr.slice(3, 4).toLowerCase() === \"a\";\n const rgbValues = rgbaStr\n .substring(isRGBA ? 5 : 4, rgbaStr.length - 1)\n .replace(/ /g, \"\")\n .split(\",\")\n .map(Number);\n return {\n r: rgbValues[0],\n g: rgbValues[1],\n b: rgbValues[2],\n a: isRGBA ? rgbValues[3] : 1,\n };\n};\n\nexport const elementOverflowsX = ({\n scrollWidth,\n clientWidth,\n}: HTMLElement): boolean => scrollWidth > clientWidth;\n\nexport const hasClassificationBanner = (): boolean =>\n !!document.querySelector(\"ic-classification-banner:not([inline='true'])\");\n\nexport const addFormResetListener = (\n el: HTMLElement,\n callbackFn: IcCallbackFunctionNoReturn\n): void => {\n el.closest(\"FORM\")?.addEventListener(\"reset\", callbackFn);\n};\n\nexport const removeFormResetListener = (\n el: HTMLElement,\n callbackFn: IcCallbackFunctionNoReturn\n): void => {\n el.closest(\"FORM\")?.removeEventListener(\"reset\", callbackFn);\n};\n\nexport const pxToRem = (px: string, base = 16): string =>\n `${(1 / base) * parseInt(px)}rem`;\n\n/**\n * Removes the disabled attribute from the provided element when its value is set to false.\n * This effectively makes it null, to not confuse screen readers that cannot interpret the false value\n */\nexport const removeDisabledFalse = (\n disabled: boolean | undefined,\n element: HTMLElement\n): void => {\n if (!disabled) {\n element.removeAttribute(\"disabled\");\n }\n};\n\nexport const isMacDevice = (): boolean =>\n window.navigator.userAgent.toUpperCase().indexOf(\"MAC\") >= 0;\n\nexport const isNumeric = (value: string): boolean => /^-?\\d+$/.test(value);\n\nexport async function waitForHydration(): Promise<boolean> {\n const elements = document.getElementsByTagName(\"*\");\n\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].tagName.startsWith(\"IC-\")) {\n if (elements[i].classList.contains(\"hydrated\")) {\n return true;\n }\n } else {\n return false;\n }\n }\n\n return false;\n}\n\nexport const convertToRGBA = (color: IcColor): IcColorRGBA | null => {\n const firstChar = color?.slice(0, 1).toLowerCase();\n\n if (firstChar !== \"#\" && firstChar !== \"r\") return null;\n return firstChar === \"#\" ? hexToRgba(color) : rgbaStrToObj(color);\n};\n\nexport const capitalize = (text: string): string =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\nexport const checkSlotInChildMutations = (\n addedNodes: NodeList,\n removedNodes: NodeList,\n slotName: string | string[]\n): boolean => {\n const hasSlot = (nodeList: NodeList) =>\n Array.from(nodeList).some((node) =>\n Array.isArray(slotName)\n ? slotName.some((name) => (node as Element).slot === name)\n : (node as Element).slot === slotName\n );\n return hasSlot(addedNodes) || hasSlot(removedNodes);\n};\n\nexport const isElInAGGrid = (el: HTMLElement): boolean =>\n !!el.closest(\".ag-cell\") && !!el.closest(\".ag-root\");\n\n/**\n * Checks if the component is slotted in its relevant 'group' component\n * @param component - the component to check\n */\nexport const isSlottedInGroup = (component: HTMLElement): boolean =>\n component.parentElement?.tagName === `${component.tagName}-GROUP`;\n\nexport const hasDynamicChildSlots = (\n mutationList: MutationRecord[],\n slotNames: string | string[]\n): boolean =>\n mutationList.some(\n ({ type, addedNodes, removedNodes }) =>\n type === \"childList\" &&\n checkSlotInChildMutations(addedNodes, removedNodes, slotNames)\n );\n\nexport const renderDynamicChildSlots = (\n mutationList: MutationRecord[],\n slotNames: string | string[],\n ref: any\n): void => {\n if (hasDynamicChildSlots(mutationList, slotNames)) {\n forceUpdate(ref);\n }\n};\n"]}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/utils/helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { EventEmitter, forceUpdate } from \"@stencil/core\";\nimport {\n IcCallbackFunctionNoReturn,\n IcInformationStatusOrEmpty,\n IcNavParentDetails,\n IcPropObject,\n IcSearchMatchPositions,\n IcColorRGBA,\n IcDeviceSizes,\n IcColor,\n IcBrandForegroundNoDefault,\n} from \"./types\";\n\nimport {\n IcMenuOption,\n IcBrandForeground,\n IcBrandForegroundEnum,\n} from \"../utils/types\";\nimport {\n IC_BLOCK_COLOR_COMPONENTS,\n IC_BLOCK_COLOR_EXCEPTIONS,\n IC_FIXED_COLOR_COMPONENTS,\n} from \"./constants\";\n\nconst DARK_MODE_THRESHOLD = 133.3505;\nconst ANYWHERE_SEARCH_POSITION = \"anywhere\";\nconst icInput = \"ic-input\";\n\n/**\n * converts an enum of strings into an array of strings\n */\nexport const stringEnumToArray = (\n theEnum: Record<string, string | number>\n): string[] => {\n const arr: string[] = [];\n Object.values(theEnum).forEach((val) => {\n if (isNaN(Number(val))) {\n const str = val as string;\n arr.push(str);\n }\n });\n return arr;\n};\n\n/**\n * Used to inherit global attributes set on the host. Called in componentWillLoad and assigned\n * to a variable that is later used in the render function.\n *\n * This does not need to be reactive as changing attributes on the host element\n * does not trigger a re-render.\n */\nexport const inheritAttributes = (\n element: HTMLElement,\n attributes: string[] = []\n): { [key: string]: string } => {\n const attributeObject: { [key: string]: string } = {};\n\n attributes.forEach((attr) => {\n const value = element.getAttribute(attr);\n if (value !== null) {\n attributeObject[attr] = value;\n element.removeAttribute(attr);\n }\n });\n\n return attributeObject;\n};\n\nexport const debounceEvent = (\n event: EventEmitter,\n wait: number\n): EventEmitter => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const original = (event as any)._original || event;\n return {\n _original: event,\n emit: debounce(original.emit.bind(original), wait),\n } as EventEmitter;\n};\n\nexport const debounce = (\n func: (...args: unknown[]) => void,\n wait = 0\n): unknown => {\n let timer: ReturnType<typeof setTimeout>;\n return (...args: unknown[]) => {\n clearTimeout(timer);\n timer = setTimeout(func, wait, ...args);\n };\n};\n\n/**\n * This method is used to add a hidden input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param container The element where the input will be added\n * @param value The value of the input\n * @param name The name of the input\n * @param disabled If true, the input is disabled\n * @param always Add a hidden input even if the container does not use Shadow\n */\nexport const renderHiddenInput = (\n container: HTMLElement,\n value?: string | Date | null,\n name?: string,\n disabled = false,\n always = true\n): void => {\n if (name && (always || hasShadowDom(container))) {\n let input = getHiddenInputElement(container);\n\n if (!input) {\n input = container.ownerDocument.createElement(\"input\");\n input.type = \"hidden\";\n input.classList.add(icInput);\n container.appendChild(input);\n }\n input.disabled = disabled;\n input.name = name;\n input.value = value instanceof Date ? value.toISOString() : value || \"\";\n }\n};\n\nconst getHiddenInputElement = (container: HTMLElement) =>\n Array.from(\n container.querySelectorAll<HTMLInputElement>(`input.${icInput}`)\n ).filter((el) => container === el.parentElement)[0];\n\n/**\n * This method is used to add a hidden file input to a host element that contains\n * a Shadow DOM. It does not add the input inside of the Shadow root which\n * allows it to be picked up inside of forms. It should contain the same\n * values as the host element.\n *\n * @param event: The event that is emitted once a file is selected.\n * @param container The element where the input will be added\n * @param multiple If true, multiple files can be selected\n * @param disabled If true, the input is disabled\n * @param accept A string of the accepted files\n * @param name The name of the input\n * @param value The value of the input\n */\nexport const renderFileHiddenInput = (\n event: EventEmitter,\n container: HTMLElement,\n multiple: boolean,\n disabled: boolean,\n accept?: string,\n name?: string,\n value?: FileList\n): void => {\n if (name !== undefined && hasShadowDom(container)) {\n let input = getHiddenInputElement(container);\n\n if (input === null || input === undefined) {\n input = container.ownerDocument.createElement(\"input\");\n input.classList.add(icInput);\n container.appendChild(input);\n }\n input.type = \"file\";\n input.hidden = true;\n input.multiple = multiple;\n input.name = name;\n input.disabled = disabled;\n\n if (value) input.files = value;\n if (accept) input.accept = accept;\n\n input.onchange = () => {\n event.emit(input.files);\n };\n input.click();\n }\n};\n\nexport const removeHiddenInput = (container: HTMLElement): void => {\n getHiddenInputElement(container)?.remove();\n};\n\nexport const hasShadowDom = (el: HTMLElement | null | undefined): boolean =>\n !!el && !!el.shadowRoot && !!el.attachShadow;\n\nexport const getInputHelperTextID = (id: string): string => id + \"-helper-text\";\n\nexport const getInputValidationTextID = (id: string): string =>\n id + \"-validation-text\";\n\nexport const getInputDescribedByText = (\n inputId: string,\n helperText: boolean,\n validationText: boolean\n): string =>\n `${helperText ? getInputHelperTextID(inputId) : \"\"} ${\n validationText ? getInputValidationTextID(inputId) : \"\"\n }`.trim();\n\n/**\n * This method helps to understand the context in which a component exists,\n * to assist with choosing appropriate foreground colours to use. For example,\n * this method will help you use the 'white' version of a button if it's within\n * a block colour element using white foreground text.\n *\n * This only works for components/elements passed via <slot> and not if they\n * are part of an IC component.\n *\n * \"\"\n * @returns IcBrandForeground depending on the context\n */\nexport const getBrandFromContext = (\n el: Element,\n brandFromEvent: IcBrandForeground | null = null\n): IcBrandForeground => {\n const parentElement =\n el.parentElement || (<ShadowRoot>el.getRootNode()).host.parentElement;\n const blockColorParent = parentElement?.closest(\n IC_BLOCK_COLOR_COMPONENTS.join(\",\")\n );\n\n // If within a block color component\n if (blockColorParent) {\n const parentTag = blockColorParent.tagName.toLowerCase();\n const currentTag = el.tagName.toLowerCase();\n\n if (IC_BLOCK_COLOR_EXCEPTIONS[parentTag]?.includes(currentTag)) {\n return IcBrandForegroundEnum.Default;\n } else if (\n brandFromEvent !== null &&\n !IC_FIXED_COLOR_COMPONENTS.includes(parentTag)\n ) {\n return brandFromEvent;\n } else if (\n blockColorParent.classList.contains(\n `${parentTag}-${IcBrandForegroundEnum.Dark}`\n ) ||\n blockColorParent.classList.contains(IcBrandForegroundEnum.Dark)\n ) {\n return IcBrandForegroundEnum.Dark;\n }\n\n return IcBrandForegroundEnum.Light;\n }\n\n return IcBrandForegroundEnum.Default;\n};\n\n/**\n * Checks if the current device is a mobile or tablet device.\n * @returns {boolean} Returns true if the device is a mobile or tablet device, otherwise returns false.\n */\nexport const isMobileOrTablet = (): boolean =>\n \"maxTouchPoints\" in navigator && \"userAgent\" in navigator\n ? navigator.maxTouchPoints > 0 &&\n /iPad|iPhone|iPod|Android|webOS|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent\n )\n : false;\n\n/**\n * Will create a button within the lightDOM which interacts with the parent form.\n * This is required as buttons within the shadowDOM will not invoke a submit or reset\n *\n * @param form - parent form element which contains shadowDom button\n * @param button - shadowDOM button\n */\nexport const handleHiddenFormButtonClick = (\n form: HTMLFormElement,\n button: HTMLIcButtonElement | HTMLButtonElement\n): void => {\n const hiddenFormButton = document.createElement(\"button\");\n\n button.type && hiddenFormButton.setAttribute(\"type\", button.type);\n hiddenFormButton.style.display = \"none\";\n\n form.appendChild(hiddenFormButton);\n\n hiddenFormButton.click();\n hiddenFormButton.remove();\n};\n\nexport const isEmptyString = (value?: string): boolean =>\n !value || value.trim().length === 0;\n\n// A helper function that checks if a prop has been defined\nexport const isPropDefined = (prop?: string): string | undefined =>\n prop !== undefined ? prop : undefined;\n\n/**\n * Extracts the label using the value from an object. Requires the object to have a label and value property.\n * @param value - value from object\n * @param options - list of menu items\n * @returns - label corresponding to value\n */\nexport const getLabelFromValue = (\n value: string,\n options: IcMenuOption[],\n valueField = \"value\",\n labelField = \"label\"\n): string | undefined => {\n const ungroupedOptions: IcMenuOption[] = [];\n if (options.length > 0 && options.map) {\n options.map((option) => {\n if (option.children) {\n option.children.map((option: IcMenuOption) =>\n ungroupedOptions.push(option)\n );\n } else {\n ungroupedOptions.push(option);\n }\n });\n const matchingValue = ungroupedOptions.find(\n (option) => option[valueField] === value\n );\n if (matchingValue !== undefined) return matchingValue[labelField];\n }\n\n return undefined;\n};\n\n/**\n * Filters the options based on the search string.\n * @param options - array of options\n * @param includeDescriptions - determines whether option descriptions are included when filtering options\n * @param searchString - string used to filter the options\n * @param position - whether the search string matches the start of or anywhere in the options\n * @returns filtered array of options\n */\nexport const getFilteredMenuOptions = (\n options: IcMenuOption[],\n includeDescriptions: boolean,\n searchString: string,\n position: IcSearchMatchPositions = ANYWHERE_SEARCH_POSITION,\n labelField = \"label\"\n): IcMenuOption[] =>\n options.filter((option) => {\n const label: string = option[labelField].toLowerCase();\n const description = option.description?.toLowerCase();\n const lowerSearchString = searchString.toLowerCase();\n\n return position === ANYWHERE_SEARCH_POSITION\n ? includeDescriptions\n ? label.includes(lowerSearchString) ||\n description?.includes(lowerSearchString)\n : label.includes(lowerSearchString)\n : includeDescriptions\n ? label.startsWith(lowerSearchString) ||\n description?.startsWith(lowerSearchString)\n : label.startsWith(lowerSearchString);\n });\n\n/**\n * Gets count of options where only group title \"parent\" options have been removed.\n * Disabled options are included in the count.\n * @param options - array of options\n * @returns number of options not including group titles\n */\nexport const getOptionsWithoutGroupTitlesCount = (\n options: IcMenuOption[]\n): number => {\n const optionsWithoutGroupTitles: IcMenuOption[] = [];\n\n if (options.length > 0 && options.map) {\n options.map((option) => {\n if (option.children) {\n option.children.map((option) => optionsWithoutGroupTitles.push(option));\n } else {\n optionsWithoutGroupTitles.push(option);\n }\n });\n }\n\n return optionsWithoutGroupTitles.length;\n};\n\nexport const deviceSizeMatches = (size: number): boolean =>\n window.matchMedia(`(max-width: ${size}px)`).matches;\n\nexport const getCurrentDeviceSize = (): number => {\n if (deviceSizeMatches(DEVICE_SIZES.S)) {\n return DEVICE_SIZES.S;\n }\n if (deviceSizeMatches(DEVICE_SIZES.M)) {\n return DEVICE_SIZES.M;\n }\n if (deviceSizeMatches(DEVICE_SIZES.L)) {\n return DEVICE_SIZES.L;\n }\n if (deviceSizeMatches(DEVICE_SIZES.XL)) {\n return DEVICE_SIZES.XL;\n }\n //fallback needed as all of above get initialised to 0 in jest tests\n return DEVICE_SIZES.UNDEFINED;\n};\n\nexport const getCssProperty = (cssVar: string): string =>\n getComputedStyle(document.documentElement).getPropertyValue(cssVar);\n\n/**\n * Returns the brightness of the theme colour, calculated by using the theme RGB CSS values by:\n * - Multiplying each RGB value by a set number: https://www.w3.org/TR/AERT/#color-contrast\n * - Adding them together and dividing by 1000\n * This is a similar calculation to its CSS counterpart: \"--ic-brand-text-color\"\n * @returns number representing the brightness of the theme colour\n */\nexport const getBrandColorBrightness = (): number => {\n const themeRed = getCssProperty(\"--ic-brand-color-primary-r\");\n const themeGreen = getCssProperty(\"--ic-brand-color-primary-g\");\n const themeBlue = getCssProperty(\"--ic-brand-color-primary-b\");\n return (\n (parseInt(themeRed) * 299 +\n parseInt(themeGreen) * 587 +\n parseInt(themeBlue) * 114) /\n 1000\n );\n};\n\n/**\n * Returns if dark or light foreground colors should be used for color contrast reasons\n * @returns \"dark\" or \"light\"\n * @param brightness - Optional custom brightness value. Defaults to `getBrandColorBrightness`\n */\nexport const getBrandForegroundAppearance = (\n brightness = getBrandColorBrightness()\n): IcBrandForegroundNoDefault =>\n brightness > DARK_MODE_THRESHOLD\n ? IcBrandForegroundEnum.Dark\n : IcBrandForegroundEnum.Light;\n\nexport const getSlot = (\n element: HTMLElement | undefined,\n name: string\n): Element | null => element?.querySelector(`[slot=\"${name}\"]`) || null;\n\nexport const slotHasContent = (element: HTMLElement, name: string): boolean =>\n getSlot(element, name) !== null;\n\nexport const getSlotContent = (\n element: HTMLElement,\n name: string\n): Element[] | NodeListOf<ChildNode> | null => {\n const slot = getSlot(element, name);\n return slot ? getSlotElements(slot) : null;\n};\n\nexport const getSlotElements = (\n slot: Element\n): NodeListOf<ChildNode> | Element[] | null => {\n const slotContent = slot.firstElementChild as HTMLSlotElement;\n\n if (slotContent === null) return [slot];\n\n const elements = slotContent.assignedElements\n ? slotContent.assignedElements()\n : slotContent.childNodes;\n return elements.length ? elements : slot.tagName ? [slot] : null;\n};\n\nexport const getNavItemParentDetails = ({\n parentElement,\n}: HTMLElement): IcNavParentDetails => {\n let navType: IcNavParentDetails = { navType: \"\", parent: null };\n if (parentElement) {\n switch (parentElement.tagName) {\n case \"IC-NAVIGATION-GROUP\":\n navType = getNavItemParentDetails(parentElement);\n break;\n case \"IC-TOP-NAVIGATION\":\n navType = { navType: \"top\", parent: parentElement };\n break;\n case \"IC-SIDE-NAVIGATION\":\n navType = { navType: \"side\", parent: parentElement };\n break;\n case \"IC-PAGE-HEADER\":\n navType = { navType: \"page-header\", parent: null };\n break;\n }\n }\n\n return navType;\n};\n\nexport const DEVICE_SIZES = {\n XS: Number(\n getCssProperty(\"--ic-breakpoint-xs\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 0\n S: Number(\n getCssProperty(\"--ic-breakpoint-sm\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 576\n M: Number(\n getCssProperty(\"--ic-breakpoint-md\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 768\n L: Number(\n getCssProperty(\"--ic-breakpoint-lg\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 992\n XL: Number(\n getCssProperty(\"--ic-breakpoint-xl\").replace(\"px\", \"\")\n ) as IcDeviceSizes, // 1200\n UNDEFINED: 1200,\n};\n\nexport const hasValidationStatus = (\n status?: IcInformationStatusOrEmpty,\n disabled?: boolean\n): boolean => !!status && !disabled;\n\nexport const isSlotUsed = (\n { children }: HTMLElement,\n slotName: string\n): boolean =>\n Array.from(children).some((child) => child.getAttribute(\"slot\") === slotName);\n\n// added as a common method to allow detection of gatsby hydration issue, where (camelCase) props are initially undefined & then update\n// with a value. Allows a callback function to be executed when this is the case\nexport const onComponentPropUndefinedChange = (\n oldValue: string | undefined,\n newValue: string | undefined,\n callback: IcCallbackFunctionNoReturn\n): void => {\n if (oldValue === undefined && newValue !== oldValue) {\n callback();\n }\n};\n\nexport const onComponentRequiredPropUndefined = (\n props: IcPropObject[],\n component: string\n): void => {\n props.forEach(({ prop, propName }) => {\n if (prop === null || prop === undefined) {\n console.error(\n `No ${propName} specified for ${component} component - prop '${propName}' (web components) / '${kebabToCamelCase(\n propName\n )}' (react) required`\n );\n }\n });\n};\n\nexport const kebabToCamelCase = (kebabCase: string): string =>\n kebabCase\n .toLowerCase()\n .split(\"-\")\n .map((word, index) =>\n index === 0\n ? word\n : `${word.substring(0, 1).toUpperCase()}${word.substring(1)}`\n )\n .join(\"\");\n\nexport const checkResizeObserver = (\n callbackFn: IcCallbackFunctionNoReturn\n): void => {\n if (\n typeof window !== \"undefined\" &&\n typeof window.ResizeObserver !== \"undefined\"\n ) {\n callbackFn();\n }\n};\n\nconst hex2dec = (v: string) => parseInt(v, 16);\n\nexport const hexToRgba = (hex: string): IcColorRGBA => {\n const hexChars = hex\n .replace(\"#\", \"\")\n .split(\"\")\n .map((char) => char.repeat(2));\n return {\n r: hex2dec(hex.length === 4 ? hexChars[0] : hex.slice(1, 3)),\n g: hex2dec(hex.length === 4 ? hexChars[1] : hex.slice(3, 5)),\n b: hex2dec(hex.length === 4 ? hexChars[2] : hex.slice(5)),\n a: 1,\n };\n};\n\nexport const rgbaStrToObj = (rgbaStr: string): IcColorRGBA => {\n const isRGBA = rgbaStr.slice(3, 4).toLowerCase() === \"a\";\n const rgbValues = rgbaStr\n .substring(isRGBA ? 5 : 4, rgbaStr.length - 1)\n .replace(/ /g, \"\")\n .split(\",\")\n .map(Number);\n return {\n r: rgbValues[0],\n g: rgbValues[1],\n b: rgbValues[2],\n a: isRGBA ? rgbValues[3] : 1,\n };\n};\n\nexport const elementOverflowsX = ({\n scrollWidth,\n clientWidth,\n}: HTMLElement): boolean => scrollWidth > clientWidth;\n\nexport const hasClassificationBanner = (): boolean =>\n !!document.querySelector(\"ic-classification-banner:not([inline='true'])\");\n\nexport const addFormResetListener = (\n el: HTMLElement,\n callbackFn: IcCallbackFunctionNoReturn\n): void => {\n el.closest(\"FORM\")?.addEventListener(\"reset\", callbackFn);\n};\n\nexport const removeFormResetListener = (\n el: HTMLElement,\n callbackFn: IcCallbackFunctionNoReturn\n): void => {\n el.closest(\"FORM\")?.removeEventListener(\"reset\", callbackFn);\n};\n\nexport const pxToRem = (px: string, base = 16): string =>\n `${(1 / base) * parseInt(px)}rem`;\n\n/**\n * Removes the disabled attribute from the provided element when its value is set to false.\n * This effectively makes it null, to not confuse screen readers that cannot interpret the false value\n */\nexport const removeDisabledFalse = (\n disabled: boolean | undefined,\n element: HTMLElement\n): void => {\n if (!disabled) {\n element.removeAttribute(\"disabled\");\n }\n};\n\nexport const isMacDevice = (): boolean =>\n window.navigator.userAgent.toUpperCase().indexOf(\"MAC\") >= 0;\n\nexport const isNumeric = (value: string): boolean => /^-?\\d+$/.test(value);\n\nexport async function waitForHydration(): Promise<boolean> {\n const elements = document.getElementsByTagName(\"*\");\n\n for (let i = 0; i < elements.length; i++) {\n if (elements[i].tagName.startsWith(\"IC-\")) {\n if (elements[i].classList.contains(\"hydrated\")) {\n return true;\n }\n } else {\n return false;\n }\n }\n\n return false;\n}\n\nexport const convertToRGBA = (color: IcColor): IcColorRGBA | null => {\n const firstChar = color?.slice(0, 1).toLowerCase();\n\n if (firstChar !== \"#\" && firstChar !== \"r\") return null;\n return firstChar === \"#\" ? hexToRgba(color) : rgbaStrToObj(color);\n};\n\nexport const capitalize = (text: string): string =>\n text.charAt(0).toUpperCase() + text.slice(1);\n\nexport const checkSlotInChildMutations = (\n addedNodes: NodeList,\n removedNodes: NodeList,\n slotName: string | string[]\n): boolean => {\n const hasSlot = (nodeList: NodeList) =>\n Array.from(nodeList).some((node) =>\n Array.isArray(slotName)\n ? slotName.some((name) => (node as Element).slot === name)\n : (node as Element).slot === slotName\n );\n return hasSlot(addedNodes) || hasSlot(removedNodes);\n};\n\nexport const isElInAGGrid = (el: HTMLElement): boolean =>\n !!el.closest(\".ag-cell\") && !!el.closest(\".ag-root\");\n\n/**\n * Checks if the component is slotted in its relevant 'group' component\n * @param component - the component to check\n */\nexport const isSlottedInGroup = (component: HTMLElement): boolean =>\n component.parentElement?.tagName === `${component.tagName}-GROUP`;\n\nexport const hasDynamicChildSlots = (\n mutationList: MutationRecord[],\n slotNames: string | string[]\n): boolean =>\n mutationList.some(\n ({ type, addedNodes, removedNodes }) =>\n type === \"childList\" &&\n checkSlotInChildMutations(addedNodes, removedNodes, slotNames)\n );\n\nexport const renderDynamicChildSlots = (\n mutationList: MutationRecord[],\n slotNames: string | string[],\n ref: any\n): void => {\n if (hasDynamicChildSlots(mutationList, slotNames)) {\n forceUpdate(ref);\n }\n};\n"]}
@@ -173,7 +173,6 @@ const IGNORED_KEYBOARD_CHARACTERS = [
173
173
  const DARK_MODE_THRESHOLD = 133.3505;
174
174
  const ANYWHERE_SEARCH_POSITION = "anywhere";
175
175
  const icInput = "ic-input";
176
- const linkIcInput = "input.ic-input";
177
176
  /**
178
177
  * Used to inherit global attributes set on the host. Called in componentWillLoad and assigned
179
178
  * to a variable that is later used in the render function.
@@ -184,11 +183,9 @@ const linkIcInput = "input.ic-input";
184
183
  const inheritAttributes = (element, attributes = []) => {
185
184
  const attributeObject = {};
186
185
  attributes.forEach((attr) => {
187
- if (element.hasAttribute(attr)) {
188
- const value = element.getAttribute(attr);
189
- if (value !== null) {
190
- attributeObject[attr] = value;
191
- }
186
+ const value = element.getAttribute(attr);
187
+ if (value !== null) {
188
+ attributeObject[attr] = value;
192
189
  element.removeAttribute(attr);
193
190
  }
194
191
  });
@@ -215,34 +212,27 @@ const debounce = (func, wait = 0) => {
215
212
  * allows it to be picked up inside of forms. It should contain the same
216
213
  * values as the host element.
217
214
  *
218
- * @param always Add a hidden input even if the container does not use Shadow
219
215
  * @param container The element where the input will be added
220
- * @param name The name of the input
221
216
  * @param value The value of the input
217
+ * @param name The name of the input
222
218
  * @param disabled If true, the input is disabled
219
+ * @param always Add a hidden input even if the container does not use Shadow
223
220
  */
224
- const renderHiddenInput = (always, container, name, value, disabled) => {
225
- if (name !== undefined && (always || hasShadowDom(container))) {
226
- const inputs = container.querySelectorAll(linkIcInput);
227
- const inputEls = Array.from(inputs);
228
- const filtered = inputEls.filter((el) => container === el.parentElement);
229
- let input = filtered[0];
230
- if (input === null || input === undefined) {
221
+ const renderHiddenInput = (container, value, name, disabled = false, always = true) => {
222
+ if (name && (always || hasShadowDom(container))) {
223
+ let input = getHiddenInputElement(container);
224
+ if (!input) {
231
225
  input = container.ownerDocument.createElement("input");
232
226
  input.type = "hidden";
233
227
  input.classList.add(icInput);
234
228
  container.appendChild(input);
235
229
  }
236
- input.disabled = !!disabled;
230
+ input.disabled = disabled;
237
231
  input.name = name;
238
- if (value instanceof Date) {
239
- input.value = value ? value.toISOString() : "";
240
- }
241
- else {
242
- input.value = value || "";
243
- }
232
+ input.value = value instanceof Date ? value.toISOString() : value || "";
244
233
  }
245
234
  };
235
+ const getHiddenInputElement = (container) => Array.from(container.querySelectorAll(`input.${icInput}`)).filter((el) => container === el.parentElement)[0];
246
236
  /**
247
237
  * This method is used to add a hidden file input to a host element that contains
248
238
  * a Shadow DOM. It does not add the input inside of the Shadow root which
@@ -252,17 +242,14 @@ const renderHiddenInput = (always, container, name, value, disabled) => {
252
242
  * @param event: The event that is emitted once a file is selected.
253
243
  * @param container The element where the input will be added
254
244
  * @param multiple If true, multiple files can be selected
255
- * @param name The name of the input
256
- * @param value The value of the input
257
245
  * @param disabled If true, the input is disabled
258
246
  * @param accept A string of the accepted files
247
+ * @param name The name of the input
248
+ * @param value The value of the input
259
249
  */
260
- const renderFileHiddenInput = (event, container, multiple, name, value, disabled, accept) => {
250
+ const renderFileHiddenInput = (event, container, multiple, disabled, accept, name, value) => {
261
251
  if (name !== undefined && hasShadowDom(container)) {
262
- const inputs = container.querySelectorAll(linkIcInput);
263
- const inputEls = Array.from(inputs);
264
- const filtered = inputEls.filter((el) => container === el.parentElement);
265
- let input = filtered[0];
252
+ let input = getHiddenInputElement(container);
266
253
  if (input === null || input === undefined) {
267
254
  input = container.ownerDocument.createElement("input");
268
255
  input.classList.add(icInput);
@@ -284,13 +271,10 @@ const renderFileHiddenInput = (event, container, multiple, name, value, disabled
284
271
  }
285
272
  };
286
273
  const removeHiddenInput = (container) => {
287
- const inputs = container.querySelectorAll("input.ic-input");
288
- const inputEls = Array.from(inputs);
289
- const filtered = inputEls.filter((el) => container === el.parentElement);
290
- const input = filtered[0];
291
- input === null || input === void 0 ? void 0 : input.remove();
274
+ var _a;
275
+ (_a = getHiddenInputElement(container)) === null || _a === void 0 ? void 0 : _a.remove();
292
276
  };
293
- const hasShadowDom = (el) => el ? !!el.shadowRoot && !!el.attachShadow : false;
277
+ const hasShadowDom = (el) => !!el && !!el.shadowRoot && !!el.attachShadow;
294
278
  const getInputHelperTextID = (id) => id + "-helper-text";
295
279
  const getInputValidationTextID = (id) => id + "-validation-text";
296
280
  const getInputDescribedByText = (inputId, helperText, validationText) => `${helperText ? getInputHelperTextID(inputId) : ""} ${validationText ? getInputValidationTextID(inputId) : ""}`.trim();
@@ -352,7 +336,7 @@ const handleHiddenFormButtonClick = (form, button) => {
352
336
  hiddenFormButton.click();
353
337
  hiddenFormButton.remove();
354
338
  };
355
- const isEmptyString = (value) => value ? value.trim().length === 0 : true;
339
+ const isEmptyString = (value) => !value || value.trim().length === 0;
356
340
  // A helper function that checks if a prop has been defined
357
341
  const isPropDefined = (prop) => prop !== undefined ? prop : undefined;
358
342
  /**
@@ -610,6 +594,6 @@ const renderDynamicChildSlots = (mutationList, slotNames, ref) => {
610
594
  }
611
595
  };
612
596
 
613
- export { WHITE_MAX_COLOR_BRIGHTNESS as $, warningIcon as A, errorIcon as B, successIcon as C, DEVICE_SIZES as D, slotHasContent as E, IC_DEVICE_SIZES as F, hasClassificationBanner as G, elementOverflowsX as H, IC_INHERITED_ARIA as I, isMacDevice as J, getOptionsWithoutGroupTitlesCount as K, getNavItemParentDetails as L, getCssProperty as M, getSlot as N, getSlotContent as O, capitalize as P, getFilteredMenuOptions as Q, handleHiddenFormButtonClick as R, debounceEvent as S, getLabelFromValue as T, checkSlotInChildMutations as U, VARIANT_ICONS as V, isMobileOrTablet as W, isEmptyString as X, IGNORED_KEYBOARD_CHARACTERS as Y, getBrandColorBrightness as Z, BLACK_MIN_COLOR_BRIGHTNESS as _, isElInAGGrid as a, isSlottedInGroup as a0, inheritAttributes as b, checkResizeObserver as c, renderFileHiddenInput as d, IcBrandForegroundEnum as e, renderDynamicChildSlots as f, getBrandFromContext as g, onComponentPropUndefinedChange as h, isSlotUsed as i, convertToRGBA as j, getBrandForegroundAppearance as k, isPropDefined as l, getSlotElements as m, getCurrentDeviceSize as n, onComponentRequiredPropUndefined as o, pxToRem as p, addFormResetListener as q, removeDisabledFalse as r, removeFormResetListener as s, renderHiddenInput as t, removeHiddenInput as u, getInputDescribedByText as v, hasValidationStatus as w, getInputHelperTextID as x, getInputValidationTextID as y, IcInformationStatus as z };
597
+ export { WHITE_MAX_COLOR_BRIGHTNESS as $, warningIcon as A, errorIcon as B, successIcon as C, DEVICE_SIZES as D, slotHasContent as E, IC_DEVICE_SIZES as F, hasClassificationBanner as G, elementOverflowsX as H, IC_INHERITED_ARIA as I, isMacDevice as J, getOptionsWithoutGroupTitlesCount as K, getNavItemParentDetails as L, getCssProperty as M, getSlot as N, getSlotContent as O, capitalize as P, getFilteredMenuOptions as Q, getLabelFromValue as R, handleHiddenFormButtonClick as S, debounceEvent as T, checkSlotInChildMutations as U, VARIANT_ICONS as V, isMobileOrTablet as W, isEmptyString as X, IGNORED_KEYBOARD_CHARACTERS as Y, getBrandColorBrightness as Z, BLACK_MIN_COLOR_BRIGHTNESS as _, isElInAGGrid as a, isSlottedInGroup as a0, inheritAttributes as b, checkResizeObserver as c, renderFileHiddenInput as d, IcBrandForegroundEnum as e, renderDynamicChildSlots as f, getBrandFromContext as g, onComponentPropUndefinedChange as h, isSlotUsed as i, convertToRGBA as j, getBrandForegroundAppearance as k, isPropDefined as l, getSlotElements as m, getCurrentDeviceSize as n, onComponentRequiredPropUndefined as o, pxToRem as p, addFormResetListener as q, removeDisabledFalse as r, removeFormResetListener as s, renderHiddenInput as t, removeHiddenInput as u, getInputDescribedByText as v, hasValidationStatus as w, getInputHelperTextID as x, getInputValidationTextID as y, IcInformationStatus as z };
614
598
 
615
599
  //# sourceMappingURL=helpers.js.map