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

Sign up to get free protection for your applications and to get access to all the features.
Files changed (523) hide show
  1. package/dist/cjs/core.cjs.js +1 -1
  2. package/dist/cjs/ic-accordion.cjs.entry.js +1 -1
  3. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  4. package/dist/cjs/ic-alert.cjs.entry.js +1 -1
  5. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  6. package/dist/cjs/ic-badge.cjs.entry.js +1 -1
  7. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  9. package/dist/cjs/ic-breadcrumb.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-button_3.cjs.entry.js +16 -15
  11. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  12. package/dist/cjs/ic-card-vertical.cjs.entry.js +1 -1
  13. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  14. package/dist/cjs/ic-checkbox-group.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  16. package/dist/cjs/ic-checkbox.cjs.entry.js +1 -1
  17. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  18. package/dist/cjs/ic-chip.cjs.entry.js +20 -13
  19. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  20. package/dist/cjs/ic-classification-banner.cjs.entry.js +1 -1
  21. package/dist/cjs/ic-classification-banner.cjs.entry.js.map +1 -1
  22. package/dist/cjs/ic-divider.cjs.entry.js +1 -1
  23. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  24. package/dist/cjs/ic-footer-link-group.cjs.entry.js +1 -1
  25. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  26. package/dist/cjs/ic-footer-link.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  28. package/dist/cjs/ic-footer.cjs.entry.js +1 -1
  29. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  30. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +1 -1
  31. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  32. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +2 -2
  33. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  34. package/dist/cjs/ic-input-label_2.cjs.entry.js +2 -2
  35. package/dist/cjs/ic-input-label_2.cjs.entry.js.map +1 -1
  36. package/dist/cjs/ic-link.cjs.entry.js +1 -1
  37. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  38. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  39. package/dist/cjs/ic-menu-group.cjs.entry.js.map +1 -1
  40. package/dist/cjs/ic-menu-item.cjs.entry.js +1 -1
  41. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  42. package/dist/cjs/ic-navigation-group.cjs.entry.js +1 -1
  43. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  44. package/dist/cjs/ic-navigation-item.cjs.entry.js +1 -1
  45. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-navigation-menu.cjs.entry.js.map +1 -1
  48. package/dist/cjs/ic-pagination-item.cjs.entry.js +1 -1
  49. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  50. package/dist/cjs/ic-popover-menu.cjs.entry.js +19 -13
  51. package/dist/cjs/ic-popover-menu.cjs.entry.js.map +1 -1
  52. package/dist/cjs/ic-radio-group.cjs.entry.js +18 -8
  53. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  54. package/dist/cjs/ic-radio-option.cjs.entry.js +1 -1
  55. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  56. package/dist/cjs/ic-search-bar.cjs.entry.js +11 -24
  57. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  58. package/dist/cjs/ic-select.cjs.entry.js +3 -3
  59. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  60. package/dist/cjs/ic-side-navigation.cjs.entry.js +1 -1
  61. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  62. package/dist/cjs/ic-skeleton.cjs.entry.js +4 -4
  63. package/dist/cjs/ic-skeleton.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  65. package/dist/cjs/ic-status-tag.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-step.cjs.entry.js +3 -4
  67. package/dist/cjs/ic-step.cjs.entry.js.map +1 -1
  68. package/dist/cjs/ic-stepper.cjs.entry.js +11 -1
  69. package/dist/cjs/ic-stepper.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-switch.cjs.entry.js +1 -1
  71. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-tab-context.cjs.entry.js +58 -122
  73. package/dist/cjs/ic-tab-context.cjs.entry.js.map +1 -1
  74. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  75. package/dist/cjs/ic-tab-panel.cjs.entry.js.map +1 -1
  76. package/dist/cjs/ic-tab.cjs.entry.js +5 -6
  77. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  78. package/dist/cjs/ic-text-field.cjs.entry.js +2 -2
  79. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  80. package/dist/cjs/ic-toast.cjs.entry.js +2 -2
  81. package/dist/cjs/ic-toast.cjs.entry.js.map +1 -1
  82. package/dist/cjs/ic-toggle-button.cjs.entry.js +1 -1
  83. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  84. package/dist/cjs/ic-top-navigation.cjs.entry.js +1 -1
  85. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  86. package/dist/cjs/ic-typography.cjs.entry.js +4 -2
  87. package/dist/cjs/ic-typography.cjs.entry.js.map +1 -1
  88. package/dist/cjs/loader.cjs.js +1 -1
  89. package/dist/collection/components/ic-accordion/ic-accordion.css +3 -3
  90. package/dist/collection/components/ic-alert/ic-alert.css +17 -12
  91. package/dist/collection/components/ic-badge/ic-badge.css +2 -2
  92. package/dist/collection/components/ic-breadcrumb/ic-breadcrumb.css +1 -1
  93. package/dist/collection/components/ic-button/ic-button.css +30 -33
  94. package/dist/collection/components/ic-button/ic-button.js +5 -6
  95. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  96. package/dist/collection/components/ic-card-vertical/ic-card-vertical.css +9 -9
  97. package/dist/collection/components/ic-checkbox/ic-checkbox.css +4 -4
  98. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.css +2 -2
  99. package/dist/collection/components/ic-chip/ic-chip.css +64 -49
  100. package/dist/collection/components/ic-chip/ic-chip.js +41 -15
  101. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  102. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +16 -0
  103. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  104. package/dist/collection/components/ic-classification-banner/ic-classification-banner.css +25 -9
  105. package/dist/collection/components/ic-divider/ic-divider.css +2 -2
  106. package/dist/collection/components/ic-footer/ic-footer.css +3 -3
  107. package/dist/collection/components/ic-footer-link/ic-footer-link.css +4 -4
  108. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.css +4 -4
  109. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.css +3 -3
  110. package/dist/collection/components/ic-input-component-container/ic-input-component-container.css +9 -9
  111. package/dist/collection/components/ic-input-label/ic-input-label.css +5 -5
  112. package/dist/collection/components/ic-input-validation/ic-input-validation.css +3 -3
  113. package/dist/collection/components/ic-link/ic-link.css +1 -1
  114. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.css +14 -10
  115. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js +50 -31
  116. package/dist/collection/components/ic-loading-indicator/ic-loading-indicator.js.map +1 -1
  117. package/dist/collection/components/ic-menu/ic-menu.css +9 -9
  118. package/dist/collection/components/ic-menu-group/ic-menu-group.css +1 -1
  119. package/dist/collection/components/ic-menu-item/ic-menu-item.css +11 -11
  120. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +2 -2
  121. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +8 -8
  122. package/dist/collection/components/ic-navigation-menu/ic-navigation-menu.css +2 -2
  123. package/dist/collection/components/ic-pagination-item/ic-pagination-item.css +5 -5
  124. package/dist/collection/components/ic-popover-menu/ic-popover-menu.css +3 -3
  125. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js +45 -12
  126. package/dist/collection/components/ic-popover-menu/ic-popover-menu.js.map +1 -1
  127. package/dist/collection/components/ic-radio-group/ic-radio-group.css +1 -1
  128. package/dist/collection/components/ic-radio-group/ic-radio-group.js +17 -7
  129. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  130. package/dist/collection/components/ic-radio-option/ic-radio-option.css +3 -3
  131. package/dist/collection/components/ic-search-bar/ic-search-bar.css +5 -5
  132. package/dist/collection/components/ic-search-bar/ic-search-bar.js +10 -23
  133. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  134. package/dist/collection/components/ic-select/ic-select.css +9 -9
  135. package/dist/collection/components/ic-select/ic-select.js +2 -2
  136. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  137. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +8 -8
  138. package/dist/collection/components/ic-skeleton/ic-skeleton.css +4 -27
  139. package/dist/collection/components/ic-skeleton/ic-skeleton.js +16 -10
  140. package/dist/collection/components/ic-skeleton/ic-skeleton.js.map +1 -1
  141. package/dist/collection/components/ic-status-tag/ic-status-tag.css +1 -1
  142. package/dist/collection/components/ic-step/ic-step.css +65 -98
  143. package/dist/collection/components/ic-step/ic-step.js +29 -3
  144. package/dist/collection/components/ic-step/ic-step.js.map +1 -1
  145. package/dist/collection/components/ic-stepper/ic-stepper.js +37 -19
  146. package/dist/collection/components/ic-stepper/ic-stepper.js.map +1 -1
  147. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js +4 -4
  148. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.spec.js.map +1 -1
  149. package/dist/collection/components/ic-switch/ic-switch.css +2 -2
  150. package/dist/collection/components/ic-tab/ic-tab.js +5 -6
  151. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  152. package/dist/collection/components/ic-tab-context/ic-tab-context.js +58 -122
  153. package/dist/collection/components/ic-tab-context/ic-tab-context.js.map +1 -1
  154. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js +2 -2
  155. package/dist/collection/components/ic-tab-context/test/basic/ic-tab-context.spec.js.map +1 -1
  156. package/dist/collection/components/ic-tab-panel/ic-tab-panel.css +1 -1
  157. package/dist/collection/components/ic-text-field/ic-text-field.css +6 -6
  158. package/dist/collection/components/ic-text-field/ic-text-field.js +1 -1
  159. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  160. package/dist/collection/components/ic-toast/ic-toast.css +9 -4
  161. package/dist/collection/components/ic-toast/ic-toast.js +1 -1
  162. package/dist/collection/components/ic-toast/ic-toast.js.map +1 -1
  163. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js +1 -1
  164. package/dist/collection/components/ic-toast/test/basic/ic-toast.spec.js.map +1 -1
  165. package/dist/collection/components/ic-toggle-button/ic-toggle-button.css +8 -8
  166. package/dist/collection/components/ic-tooltip/ic-tooltip.css +7 -1
  167. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +6 -6
  168. package/dist/collection/components/ic-typography/ic-typography.css +3 -3
  169. package/dist/collection/components/ic-typography/ic-typography.js +3 -1
  170. package/dist/collection/components/ic-typography/ic-typography.js.map +1 -1
  171. package/dist/components/ic-accordion.js +1 -1
  172. package/dist/components/ic-accordion.js.map +1 -1
  173. package/dist/components/ic-alert.js +1 -1
  174. package/dist/components/ic-alert.js.map +1 -1
  175. package/dist/components/ic-badge.js +1 -1
  176. package/dist/components/ic-badge.js.map +1 -1
  177. package/dist/components/ic-breadcrumb2.js +1 -1
  178. package/dist/components/ic-breadcrumb2.js.map +1 -1
  179. package/dist/components/ic-button2.js +6 -7
  180. package/dist/components/ic-button2.js.map +1 -1
  181. package/dist/components/ic-card-vertical.js +1 -1
  182. package/dist/components/ic-card-vertical.js.map +1 -1
  183. package/dist/components/ic-checkbox-group.js +1 -1
  184. package/dist/components/ic-checkbox-group.js.map +1 -1
  185. package/dist/components/ic-checkbox.js +1 -1
  186. package/dist/components/ic-checkbox.js.map +1 -1
  187. package/dist/components/ic-chip.js +23 -14
  188. package/dist/components/ic-chip.js.map +1 -1
  189. package/dist/components/ic-classification-banner.js +1 -1
  190. package/dist/components/ic-classification-banner.js.map +1 -1
  191. package/dist/components/ic-divider2.js +1 -1
  192. package/dist/components/ic-divider2.js.map +1 -1
  193. package/dist/components/ic-footer-link-group.js +1 -1
  194. package/dist/components/ic-footer-link-group.js.map +1 -1
  195. package/dist/components/ic-footer-link.js +1 -1
  196. package/dist/components/ic-footer-link.js.map +1 -1
  197. package/dist/components/ic-footer.js +1 -1
  198. package/dist/components/ic-footer.js.map +1 -1
  199. package/dist/components/ic-horizontal-scroll2.js +1 -1
  200. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  201. package/dist/components/ic-input-component-container2.js +1 -1
  202. package/dist/components/ic-input-component-container2.js.map +1 -1
  203. package/dist/components/ic-input-label2.js +1 -1
  204. package/dist/components/ic-input-label2.js.map +1 -1
  205. package/dist/components/ic-input-validation2.js +1 -1
  206. package/dist/components/ic-input-validation2.js.map +1 -1
  207. package/dist/components/ic-link2.js +1 -1
  208. package/dist/components/ic-link2.js.map +1 -1
  209. package/dist/components/ic-loading-indicator2.js +11 -9
  210. package/dist/components/ic-loading-indicator2.js.map +1 -1
  211. package/dist/components/ic-menu-group.js +1 -1
  212. package/dist/components/ic-menu-group.js.map +1 -1
  213. package/dist/components/ic-menu-item2.js +1 -1
  214. package/dist/components/ic-menu-item2.js.map +1 -1
  215. package/dist/components/ic-menu2.js +1 -1
  216. package/dist/components/ic-menu2.js.map +1 -1
  217. package/dist/components/ic-navigation-group.js +1 -1
  218. package/dist/components/ic-navigation-group.js.map +1 -1
  219. package/dist/components/ic-navigation-item.js +1 -1
  220. package/dist/components/ic-navigation-item.js.map +1 -1
  221. package/dist/components/ic-navigation-menu2.js +1 -1
  222. package/dist/components/ic-navigation-menu2.js.map +1 -1
  223. package/dist/components/ic-pagination-item2.js +1 -1
  224. package/dist/components/ic-pagination-item2.js.map +1 -1
  225. package/dist/components/ic-popover-menu.js +21 -14
  226. package/dist/components/ic-popover-menu.js.map +1 -1
  227. package/dist/components/ic-radio-group.js +18 -8
  228. package/dist/components/ic-radio-group.js.map +1 -1
  229. package/dist/components/ic-radio-option.js +1 -1
  230. package/dist/components/ic-radio-option.js.map +1 -1
  231. package/dist/components/ic-search-bar.js +11 -24
  232. package/dist/components/ic-search-bar.js.map +1 -1
  233. package/dist/components/ic-select.js +3 -3
  234. package/dist/components/ic-select.js.map +1 -1
  235. package/dist/components/ic-side-navigation.js +1 -1
  236. package/dist/components/ic-side-navigation.js.map +1 -1
  237. package/dist/components/ic-skeleton.js +5 -5
  238. package/dist/components/ic-skeleton.js.map +1 -1
  239. package/dist/components/ic-status-tag.js +1 -1
  240. package/dist/components/ic-status-tag.js.map +1 -1
  241. package/dist/components/ic-step.js +4 -4
  242. package/dist/components/ic-step.js.map +1 -1
  243. package/dist/components/ic-stepper.js +13 -2
  244. package/dist/components/ic-stepper.js.map +1 -1
  245. package/dist/components/ic-switch.js +1 -1
  246. package/dist/components/ic-switch.js.map +1 -1
  247. package/dist/components/ic-tab-context.js +58 -122
  248. package/dist/components/ic-tab-context.js.map +1 -1
  249. package/dist/components/ic-tab-panel.js +1 -1
  250. package/dist/components/ic-tab-panel.js.map +1 -1
  251. package/dist/components/ic-tab.js +5 -6
  252. package/dist/components/ic-tab.js.map +1 -1
  253. package/dist/components/ic-text-field2.js +2 -2
  254. package/dist/components/ic-text-field2.js.map +1 -1
  255. package/dist/components/ic-toast.js +2 -2
  256. package/dist/components/ic-toast.js.map +1 -1
  257. package/dist/components/ic-toggle-button.js +1 -1
  258. package/dist/components/ic-toggle-button.js.map +1 -1
  259. package/dist/components/ic-tooltip2.js +1 -1
  260. package/dist/components/ic-tooltip2.js.map +1 -1
  261. package/dist/components/ic-top-navigation.js +1 -1
  262. package/dist/components/ic-top-navigation.js.map +1 -1
  263. package/dist/components/ic-typography2.js +4 -2
  264. package/dist/components/ic-typography2.js.map +1 -1
  265. package/dist/core/core.css +91 -37
  266. package/dist/core/core.esm.js +1 -1
  267. package/dist/core/core.esm.js.map +1 -1
  268. package/dist/core/{p-c81109da.entry.js → p-0a808ec3.entry.js} +2 -2
  269. package/dist/core/p-0a808ec3.entry.js.map +1 -0
  270. package/dist/core/p-0c872824.entry.js +2 -0
  271. package/dist/core/{p-c6795377.entry.js.map → p-0c872824.entry.js.map} +1 -1
  272. package/dist/core/p-0d30ffab.entry.js +2 -0
  273. package/dist/core/p-0d30ffab.entry.js.map +1 -0
  274. package/dist/core/p-0fb047e7.entry.js +2 -0
  275. package/dist/core/p-0fb047e7.entry.js.map +1 -0
  276. package/dist/core/p-1684c8d4.entry.js +2 -0
  277. package/dist/core/p-1684c8d4.entry.js.map +1 -0
  278. package/dist/core/p-1b573920.entry.js +2 -0
  279. package/dist/core/p-1b573920.entry.js.map +1 -0
  280. package/dist/core/p-1f1758a9.entry.js +2 -0
  281. package/dist/core/p-1f1758a9.entry.js.map +1 -0
  282. package/dist/core/p-244d6dba.entry.js +2 -0
  283. package/dist/core/p-244d6dba.entry.js.map +1 -0
  284. package/dist/core/{p-54238d16.entry.js → p-27274ca8.entry.js} +2 -2
  285. package/dist/core/p-27274ca8.entry.js.map +1 -0
  286. package/dist/core/p-322edabc.entry.js +2 -0
  287. package/dist/core/p-322edabc.entry.js.map +1 -0
  288. package/dist/core/{p-5a2630fb.entry.js → p-34db8aaf.entry.js} +2 -2
  289. package/dist/core/{p-5a2630fb.entry.js.map → p-34db8aaf.entry.js.map} +1 -1
  290. package/dist/core/{p-1e802eeb.entry.js → p-4055f22c.entry.js} +2 -2
  291. package/dist/core/{p-1e802eeb.entry.js.map → p-4055f22c.entry.js.map} +1 -1
  292. package/dist/core/p-408344d3.entry.js +2 -0
  293. package/dist/core/p-408344d3.entry.js.map +1 -0
  294. package/dist/core/p-4502d3c1.entry.js +2 -0
  295. package/dist/core/p-4502d3c1.entry.js.map +1 -0
  296. package/dist/core/p-49525194.entry.js +2 -0
  297. package/dist/core/p-49525194.entry.js.map +1 -0
  298. package/dist/core/{p-56d1828c.entry.js → p-4ff6d16f.entry.js} +2 -2
  299. package/dist/core/{p-56d1828c.entry.js.map → p-4ff6d16f.entry.js.map} +1 -1
  300. package/dist/core/p-50ead56c.entry.js +2 -0
  301. package/dist/core/p-50ead56c.entry.js.map +1 -0
  302. package/dist/core/p-5deb9730.entry.js +2 -0
  303. package/dist/core/p-5deb9730.entry.js.map +1 -0
  304. package/dist/core/{p-ddb8d280.entry.js → p-6bd2e938.entry.js} +2 -2
  305. package/dist/core/{p-ddb8d280.entry.js.map → p-6bd2e938.entry.js.map} +1 -1
  306. package/dist/core/p-6d40baa9.entry.js +2 -0
  307. package/dist/core/p-6d40baa9.entry.js.map +1 -0
  308. package/dist/core/p-7c89fc86.entry.js +2 -0
  309. package/dist/core/p-7c89fc86.entry.js.map +1 -0
  310. package/dist/core/p-84526c3e.entry.js +2 -0
  311. package/dist/core/p-84526c3e.entry.js.map +1 -0
  312. package/dist/core/{p-46ee459b.entry.js → p-93c23a35.entry.js} +2 -2
  313. package/dist/core/{p-46ee459b.entry.js.map → p-93c23a35.entry.js.map} +1 -1
  314. package/dist/core/p-9dba6823.entry.js +2 -0
  315. package/dist/core/p-9dba6823.entry.js.map +1 -0
  316. package/dist/core/p-aa0619ce.entry.js +2 -0
  317. package/dist/core/p-aa0619ce.entry.js.map +1 -0
  318. package/dist/core/{p-e861a2b3.entry.js → p-aab2c7aa.entry.js} +2 -2
  319. package/dist/core/p-aab2c7aa.entry.js.map +1 -0
  320. package/dist/core/p-af20322c.entry.js +2 -0
  321. package/dist/core/p-af20322c.entry.js.map +1 -0
  322. package/dist/core/{p-e597da0e.entry.js → p-b01ffa55.entry.js} +2 -2
  323. package/dist/core/p-b01ffa55.entry.js.map +1 -0
  324. package/dist/core/p-bf1f0ac7.entry.js +2 -0
  325. package/dist/core/p-bf1f0ac7.entry.js.map +1 -0
  326. package/dist/core/{p-bf4c61cb.entry.js → p-c06a3b97.entry.js} +2 -2
  327. package/dist/core/{p-bf4c61cb.entry.js.map → p-c06a3b97.entry.js.map} +1 -1
  328. package/dist/core/p-c86d48b6.entry.js +2 -0
  329. package/dist/core/p-c86d48b6.entry.js.map +1 -0
  330. package/dist/core/{p-69f3ce5a.entry.js → p-cbcd4427.entry.js} +2 -2
  331. package/dist/core/p-cbcd4427.entry.js.map +1 -0
  332. package/dist/core/p-d1c9c32b.entry.js +2 -0
  333. package/dist/core/p-d1c9c32b.entry.js.map +1 -0
  334. package/dist/core/{p-78ce4920.entry.js → p-d2f8e03f.entry.js} +2 -2
  335. package/dist/core/{p-78ce4920.entry.js.map → p-d2f8e03f.entry.js.map} +1 -1
  336. package/dist/core/{p-a765ad17.entry.js → p-d58a10ec.entry.js} +2 -2
  337. package/dist/core/p-d58a10ec.entry.js.map +1 -0
  338. package/dist/core/p-da14cd3c.entry.js +2 -0
  339. package/dist/core/p-da14cd3c.entry.js.map +1 -0
  340. package/dist/core/p-dc83a0e9.entry.js +2 -0
  341. package/dist/core/p-dc83a0e9.entry.js.map +1 -0
  342. package/dist/core/{p-f229d19e.entry.js → p-de3a5423.entry.js} +2 -2
  343. package/dist/core/{p-f229d19e.entry.js.map → p-de3a5423.entry.js.map} +1 -1
  344. package/dist/core/p-e3ed9110.entry.js +2 -0
  345. package/dist/core/p-e3ed9110.entry.js.map +1 -0
  346. package/dist/core/p-e53309b0.entry.js +2 -0
  347. package/dist/core/p-e53309b0.entry.js.map +1 -0
  348. package/dist/core/p-f38bce8d.entry.js +2 -0
  349. package/dist/core/p-f38bce8d.entry.js.map +1 -0
  350. package/dist/core/{p-a3b6a02d.entry.js → p-f828a6e1.entry.js} +2 -2
  351. package/dist/core/{p-a3b6a02d.entry.js.map → p-f828a6e1.entry.js.map} +1 -1
  352. package/dist/core/p-fa1b7a80.entry.js +2 -0
  353. package/dist/core/p-fa1b7a80.entry.js.map +1 -0
  354. package/dist/esm/core.js +1 -1
  355. package/dist/esm/ic-accordion.entry.js +1 -1
  356. package/dist/esm/ic-accordion.entry.js.map +1 -1
  357. package/dist/esm/ic-alert.entry.js +1 -1
  358. package/dist/esm/ic-alert.entry.js.map +1 -1
  359. package/dist/esm/ic-badge.entry.js +1 -1
  360. package/dist/esm/ic-badge.entry.js.map +1 -1
  361. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  362. package/dist/esm/ic-breadcrumb.entry.js.map +1 -1
  363. package/dist/esm/ic-button_3.entry.js +16 -15
  364. package/dist/esm/ic-button_3.entry.js.map +1 -1
  365. package/dist/esm/ic-card-vertical.entry.js +1 -1
  366. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  367. package/dist/esm/ic-checkbox-group.entry.js +1 -1
  368. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  369. package/dist/esm/ic-checkbox.entry.js +1 -1
  370. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  371. package/dist/esm/ic-chip.entry.js +21 -14
  372. package/dist/esm/ic-chip.entry.js.map +1 -1
  373. package/dist/esm/ic-classification-banner.entry.js +1 -1
  374. package/dist/esm/ic-classification-banner.entry.js.map +1 -1
  375. package/dist/esm/ic-divider.entry.js +1 -1
  376. package/dist/esm/ic-divider.entry.js.map +1 -1
  377. package/dist/esm/ic-footer-link-group.entry.js +1 -1
  378. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  379. package/dist/esm/ic-footer-link.entry.js +1 -1
  380. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  381. package/dist/esm/ic-footer.entry.js +1 -1
  382. package/dist/esm/ic-footer.entry.js.map +1 -1
  383. package/dist/esm/ic-horizontal-scroll.entry.js +1 -1
  384. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  385. package/dist/esm/ic-input-component-container_3.entry.js +2 -2
  386. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  387. package/dist/esm/ic-input-label_2.entry.js +2 -2
  388. package/dist/esm/ic-input-label_2.entry.js.map +1 -1
  389. package/dist/esm/ic-link.entry.js +1 -1
  390. package/dist/esm/ic-link.entry.js.map +1 -1
  391. package/dist/esm/ic-menu-group.entry.js +1 -1
  392. package/dist/esm/ic-menu-group.entry.js.map +1 -1
  393. package/dist/esm/ic-menu-item.entry.js +1 -1
  394. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  395. package/dist/esm/ic-navigation-group.entry.js +1 -1
  396. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  397. package/dist/esm/ic-navigation-item.entry.js +1 -1
  398. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  399. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  400. package/dist/esm/ic-navigation-menu.entry.js.map +1 -1
  401. package/dist/esm/ic-pagination-item.entry.js +1 -1
  402. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  403. package/dist/esm/ic-popover-menu.entry.js +19 -13
  404. package/dist/esm/ic-popover-menu.entry.js.map +1 -1
  405. package/dist/esm/ic-radio-group.entry.js +18 -8
  406. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  407. package/dist/esm/ic-radio-option.entry.js +1 -1
  408. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  409. package/dist/esm/ic-search-bar.entry.js +11 -24
  410. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  411. package/dist/esm/ic-select.entry.js +3 -3
  412. package/dist/esm/ic-select.entry.js.map +1 -1
  413. package/dist/esm/ic-side-navigation.entry.js +1 -1
  414. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  415. package/dist/esm/ic-skeleton.entry.js +4 -4
  416. package/dist/esm/ic-skeleton.entry.js.map +1 -1
  417. package/dist/esm/ic-status-tag.entry.js +1 -1
  418. package/dist/esm/ic-status-tag.entry.js.map +1 -1
  419. package/dist/esm/ic-step.entry.js +3 -4
  420. package/dist/esm/ic-step.entry.js.map +1 -1
  421. package/dist/esm/ic-stepper.entry.js +11 -1
  422. package/dist/esm/ic-stepper.entry.js.map +1 -1
  423. package/dist/esm/ic-switch.entry.js +1 -1
  424. package/dist/esm/ic-switch.entry.js.map +1 -1
  425. package/dist/esm/ic-tab-context.entry.js +58 -122
  426. package/dist/esm/ic-tab-context.entry.js.map +1 -1
  427. package/dist/esm/ic-tab-panel.entry.js +1 -1
  428. package/dist/esm/ic-tab-panel.entry.js.map +1 -1
  429. package/dist/esm/ic-tab.entry.js +5 -6
  430. package/dist/esm/ic-tab.entry.js.map +1 -1
  431. package/dist/esm/ic-text-field.entry.js +2 -2
  432. package/dist/esm/ic-text-field.entry.js.map +1 -1
  433. package/dist/esm/ic-toast.entry.js +2 -2
  434. package/dist/esm/ic-toast.entry.js.map +1 -1
  435. package/dist/esm/ic-toggle-button.entry.js +1 -1
  436. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  437. package/dist/esm/ic-top-navigation.entry.js +1 -1
  438. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  439. package/dist/esm/ic-typography.entry.js +4 -2
  440. package/dist/esm/ic-typography.entry.js.map +1 -1
  441. package/dist/esm/loader.js +1 -1
  442. package/dist/types/components/ic-chip/ic-chip.d.ts +8 -2
  443. package/dist/types/components/ic-loading-indicator/ic-loading-indicator.d.ts +9 -5
  444. package/dist/types/components/ic-popover-menu/ic-popover-menu.d.ts +2 -2
  445. package/dist/types/components/ic-skeleton/ic-skeleton.d.ts +3 -2
  446. package/dist/types/components/ic-step/ic-step.d.ts +5 -0
  447. package/dist/types/components/ic-stepper/ic-stepper.d.ts +6 -4
  448. package/dist/types/components/ic-tab-context/ic-tab-context.d.ts +8 -6
  449. package/dist/types/components.d.ts +47 -26
  450. package/hydrate/index.js +216 -254
  451. package/package.json +2 -2
  452. package/vscode-data.json +56 -28
  453. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js +0 -339
  454. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.e2e.js.map +0 -1
  455. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js +0 -1106
  456. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.e2e.js.map +0 -1
  457. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js +0 -49
  458. package/dist/collection/components/ic-stepper/test/basic/ic-stepper.e2e.js.map +0 -1
  459. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js +0 -109
  460. package/dist/collection/components/ic-tooltip/test/basic/ic-tooltip.e2e.js.map +0 -1
  461. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js +0 -39
  462. package/dist/collection/components/ic-typography/test/basic/ic-typography.e2e.js.map +0 -1
  463. package/dist/core/p-09104e40.entry.js +0 -2
  464. package/dist/core/p-09104e40.entry.js.map +0 -1
  465. package/dist/core/p-0c0b1c74.entry.js +0 -2
  466. package/dist/core/p-0c0b1c74.entry.js.map +0 -1
  467. package/dist/core/p-0c3a0d85.entry.js +0 -2
  468. package/dist/core/p-0c3a0d85.entry.js.map +0 -1
  469. package/dist/core/p-1083a708.entry.js +0 -2
  470. package/dist/core/p-1083a708.entry.js.map +0 -1
  471. package/dist/core/p-130dd440.entry.js +0 -2
  472. package/dist/core/p-130dd440.entry.js.map +0 -1
  473. package/dist/core/p-21312898.entry.js +0 -2
  474. package/dist/core/p-21312898.entry.js.map +0 -1
  475. package/dist/core/p-2ab86057.entry.js +0 -2
  476. package/dist/core/p-2ab86057.entry.js.map +0 -1
  477. package/dist/core/p-35b8b480.entry.js +0 -2
  478. package/dist/core/p-35b8b480.entry.js.map +0 -1
  479. package/dist/core/p-54238d16.entry.js.map +0 -1
  480. package/dist/core/p-550d7356.entry.js +0 -2
  481. package/dist/core/p-550d7356.entry.js.map +0 -1
  482. package/dist/core/p-5a52614c.entry.js +0 -2
  483. package/dist/core/p-5a52614c.entry.js.map +0 -1
  484. package/dist/core/p-69f3ce5a.entry.js.map +0 -1
  485. package/dist/core/p-79d2a33b.entry.js +0 -2
  486. package/dist/core/p-79d2a33b.entry.js.map +0 -1
  487. package/dist/core/p-80237a20.entry.js +0 -2
  488. package/dist/core/p-80237a20.entry.js.map +0 -1
  489. package/dist/core/p-804513ad.entry.js +0 -2
  490. package/dist/core/p-804513ad.entry.js.map +0 -1
  491. package/dist/core/p-8e1e25a7.entry.js +0 -2
  492. package/dist/core/p-8e1e25a7.entry.js.map +0 -1
  493. package/dist/core/p-a1a1000d.entry.js +0 -2
  494. package/dist/core/p-a1a1000d.entry.js.map +0 -1
  495. package/dist/core/p-a1b1a0ab.entry.js +0 -2
  496. package/dist/core/p-a1b1a0ab.entry.js.map +0 -1
  497. package/dist/core/p-a37bcdbe.entry.js +0 -2
  498. package/dist/core/p-a37bcdbe.entry.js.map +0 -1
  499. package/dist/core/p-a765ad17.entry.js.map +0 -1
  500. package/dist/core/p-aa2be24c.entry.js +0 -2
  501. package/dist/core/p-aa2be24c.entry.js.map +0 -1
  502. package/dist/core/p-b12a5283.entry.js +0 -2
  503. package/dist/core/p-b12a5283.entry.js.map +0 -1
  504. package/dist/core/p-b1b05979.entry.js +0 -2
  505. package/dist/core/p-b1b05979.entry.js.map +0 -1
  506. package/dist/core/p-c6795377.entry.js +0 -2
  507. package/dist/core/p-c81109da.entry.js.map +0 -1
  508. package/dist/core/p-cb4d104e.entry.js +0 -2
  509. package/dist/core/p-cb4d104e.entry.js.map +0 -1
  510. package/dist/core/p-d43d1ec0.entry.js +0 -2
  511. package/dist/core/p-d43d1ec0.entry.js.map +0 -1
  512. package/dist/core/p-d5829a35.entry.js +0 -2
  513. package/dist/core/p-d5829a35.entry.js.map +0 -1
  514. package/dist/core/p-e0e34fa7.entry.js +0 -2
  515. package/dist/core/p-e0e34fa7.entry.js.map +0 -1
  516. package/dist/core/p-e597da0e.entry.js.map +0 -1
  517. package/dist/core/p-e861a2b3.entry.js.map +0 -1
  518. package/dist/core/p-ea277b05.entry.js +0 -2
  519. package/dist/core/p-ea277b05.entry.js.map +0 -1
  520. package/dist/core/p-ef871b8f.entry.js +0 -2
  521. package/dist/core/p-ef871b8f.entry.js.map +0 -1
  522. package/dist/core/p-fb6ac08d.entry.js +0 -2
  523. package/dist/core/p-fb6ac08d.entry.js.map +0 -1
@@ -1,5 +1,6 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h } from '@stencil/core/internal/client';
2
2
 
3
+ const CONTEXT_ID_ATTR = "context-id";
3
4
  const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTMLElement {
4
5
  constructor() {
5
6
  super();
@@ -7,31 +8,28 @@ const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTM
7
8
  this.icTabSelect = createEvent(this, "icTabSelect", 3);
8
9
  this.newTabPanels = [];
9
10
  this.newTabs = [];
10
- // Sets attributes to link tab-group, tabs and tab-panels
11
+ /** Sets attributes to link tab-group, tabs and tab-panels */
11
12
  this.linkTabs = () => {
12
13
  this.tabs.forEach((tab, index) => {
13
14
  const tabId = `ic-tab-${index}-context-${this.contextId}`;
14
15
  const tabPanelId = `ic-tab-panel-${index}-context-${this.contextId}`;
15
- const shared = `ic-tab--${index}-context-${this.contextId}`;
16
- const contextIdAttr = "context-id";
17
16
  tab.setAttribute("id", tabId);
18
- tab.tabId = shared;
17
+ tab.tabId = `ic-tab--${index}-context-${this.contextId}`;
19
18
  tab.tabPosition = index;
20
19
  tab.setAttribute("aria-controls", tabPanelId);
21
- tab.setAttribute(contextIdAttr, this.contextId);
22
- this.tabGroup.setAttribute(contextIdAttr, this.contextId);
20
+ tab.setAttribute(CONTEXT_ID_ATTR, this.contextId);
21
+ this.tabGroup.setAttribute(CONTEXT_ID_ATTR, this.contextId);
23
22
  this.tabPanels[index].setAttribute("id", tabPanelId);
24
- this.tabPanels[index].panelId = shared;
25
- this.tabPanels[index].tabPosition = index;
26
23
  this.tabPanels[index].setAttribute("aria-labelledby", tabId);
27
- this.tabPanels[index].setAttribute(contextIdAttr, this.contextId);
24
+ this.tabPanels[index].setAttribute(CONTEXT_ID_ATTR, this.contextId);
28
25
  tab.theme = this.theme;
29
26
  this.tabPanels[index].theme = this.theme;
30
27
  this.tabGroup.theme = this.theme;
31
28
  });
32
29
  };
33
- // Gets tabs and tabpanels with the same context ID
34
- // Using querySelector to selector the children in relation to the host
30
+ /**
31
+ * Gets tabs and tabpanels with the same context ID using querySelector to selector the children in relation to the host
32
+ */
35
33
  this.getChildren = () => {
36
34
  this.tabGroup = this.el.querySelector("ic-tab-group");
37
35
  this.tabs = Array.from(this.tabGroup.querySelectorAll("ic-tab"));
@@ -39,28 +37,42 @@ const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTM
39
37
  this.enabledTabs = this.getEnabledTabs();
40
38
  };
41
39
  this.keydownHandler = (event) => {
42
- if (this.activationType === "automatic") {
43
- this.handleKeyBoardNavAutomatic(event);
44
- }
45
- else {
46
- this.handleKeyBoardNavManual(event);
47
- }
48
- };
49
- // Determines how keyboard navigation is to be handled based on the activation type
50
- this.attachEventListeners = () => {
51
- this.tabGroup.addEventListener("keydown", this.keydownHandler);
52
- };
53
- // Determines whether the selected tab is being controlled within the component
54
- // or by the user (via selectedTabIndex and onIcTabSelect)
55
- this.setControlledMode = () => {
56
- if (this.selectedTabIndex !== undefined) {
57
- this.controlledMode = true;
58
- this.selectedTab = this.selectedTabIndex;
40
+ const isManual = this.activationType === "manual";
41
+ const enabledTabIndex = this.enabledTabs.findIndex((tab) => tab.tabId ===
42
+ this.tabs[isManual ? this.focusedTabIndex : this.selectedTab].tabId);
43
+ const keyboardFunction = isManual
44
+ ? this.keyboardFocusTab
45
+ : this.keyboardSelectTab;
46
+ let preventDefault = true;
47
+ switch (event.key) {
48
+ case "Home":
49
+ keyboardFunction(0);
50
+ break;
51
+ case "End":
52
+ keyboardFunction(this.enabledTabs.length - 1);
53
+ break;
54
+ case "ArrowRight":
55
+ keyboardFunction(enabledTabIndex < this.enabledTabs.length - 1
56
+ ? enabledTabIndex + 1
57
+ : 0);
58
+ break;
59
+ case "ArrowLeft":
60
+ keyboardFunction((enabledTabIndex > 0 ? enabledTabIndex : this.enabledTabs.length) - 1);
61
+ break;
62
+ default:
63
+ if (isManual && (event.key === "Enter" || event.key === " ")) {
64
+ this.keyboardSelectTab(this.focusedTabIndex);
65
+ }
66
+ else {
67
+ preventDefault = false;
68
+ }
59
69
  }
70
+ if (preventDefault)
71
+ event.preventDefault();
60
72
  };
61
- // Sets the tab that is selected on initial render
73
+ /** Sets the tab that is selected on initial render */
62
74
  this.setInitialTab = () => {
63
- if (this.controlledMode) {
75
+ if (this.selectedTabIndex !== undefined) {
64
76
  this.selectedTab = this.selectedTabIndex;
65
77
  this.focusedTabIndex = this.selectedTabIndex;
66
78
  }
@@ -70,26 +82,21 @@ const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTM
70
82
  this.focusedTabIndex = firstEnabledTabIndex;
71
83
  }
72
84
  };
73
- // Passes the selected tab to the tab and tab panel components
85
+ /** Passes the selected tab to the tab and tab panel components */
74
86
  this.configureTabs = () => {
75
87
  this.enabledTabs.forEach((tab) => {
76
88
  tab.selected = tab.tabPosition === this.selectedTab;
77
89
  });
78
- this.tabPanels.forEach((tabPanel) => {
79
- tabPanel.selectedTab = this.tabs[this.selectedTab].tabId;
90
+ this.tabPanels.forEach((tabPanel, index) => {
91
+ tabPanel.hidden = index !== this.selectedTab;
80
92
  });
81
93
  };
82
- this.getEnabledTabs = () => {
83
- return Array.from(this.tabs).filter((child) => !child.disabled);
84
- };
85
- this.getIndexOfEnabledTab = (allTabsIndex) => {
86
- return this.enabledTabs.findIndex((tab) => tab.tabId === this.tabs[allTabsIndex].tabId);
87
- };
88
- // Sets focus on tab and selects it
94
+ this.getEnabledTabs = () => Array.from(this.tabs).filter((child) => !child.disabled);
95
+ /** Sets focus on tab and selects it */
89
96
  this.keyboardSelectTab = (enabledTabIndex) => {
90
97
  const newIndex = this.tabs.findIndex((tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId);
91
98
  this.enabledTabs[enabledTabIndex].focus();
92
- if (!this.controlledMode) {
99
+ if (this.selectedTabIndex === undefined) {
93
100
  this.selectedTab = newIndex;
94
101
  }
95
102
  else {
@@ -100,85 +107,11 @@ const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTM
100
107
  .querySelectorAll("ic-tab")[newIndex].textContent.trim(),
101
108
  });
102
109
  }
103
- /* eslint-enable no-unexpected-multiline */
104
110
  };
105
- // Sets focus on tab without selecting it (for manual activation)
111
+ /** Sets focus on tab without selecting it (for manual activation) */
106
112
  this.keyboardFocusTab = (enabledTabIndex) => {
107
- const newIndex = this.tabs.findIndex((tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId);
108
113
  this.enabledTabs[enabledTabIndex].focus();
109
- this.focusedTabIndex = newIndex;
110
- };
111
- this.handleKeyBoardNavAutomatic = (event) => {
112
- const key = event.key;
113
- const enabledTabIndex = this.getIndexOfEnabledTab(this.selectedTab);
114
- let preventDefault = true;
115
- switch (key) {
116
- case "Home":
117
- this.keyboardSelectTab(0);
118
- break;
119
- case "End":
120
- this.keyboardSelectTab(this.enabledTabs.length - 1);
121
- break;
122
- case "ArrowRight":
123
- if (enabledTabIndex < this.enabledTabs.length - 1) {
124
- this.keyboardSelectTab(enabledTabIndex + 1);
125
- }
126
- else {
127
- this.keyboardSelectTab(0);
128
- }
129
- break;
130
- case "ArrowLeft":
131
- if (enabledTabIndex > 0) {
132
- this.keyboardSelectTab(enabledTabIndex - 1);
133
- }
134
- else {
135
- this.keyboardSelectTab(this.enabledTabs.length - 1);
136
- }
137
- break;
138
- default:
139
- preventDefault = false;
140
- }
141
- if (preventDefault)
142
- event.preventDefault();
143
- };
144
- this.handleKeyBoardNavManual = (event) => {
145
- const key = event.key;
146
- const enabledTabIndex = this.getIndexOfEnabledTab(this.focusedTabIndex);
147
- let preventDefault = true;
148
- switch (key) {
149
- case "Home":
150
- this.keyboardFocusTab(0);
151
- break;
152
- case "End":
153
- this.keyboardFocusTab(this.enabledTabs.length - 1);
154
- break;
155
- case "ArrowRight":
156
- if (enabledTabIndex < this.enabledTabs.length - 1) {
157
- this.keyboardFocusTab(enabledTabIndex + 1);
158
- }
159
- else {
160
- this.keyboardFocusTab(0);
161
- }
162
- break;
163
- case "ArrowLeft":
164
- if (enabledTabIndex > 0) {
165
- this.keyboardFocusTab(enabledTabIndex - 1);
166
- }
167
- else {
168
- this.keyboardFocusTab(this.enabledTabs.length - 1);
169
- }
170
- break;
171
- case "Enter":
172
- this.keyboardSelectTab(this.focusedTabIndex);
173
- break;
174
- case " ":
175
- this.keyboardSelectTab(this.focusedTabIndex);
176
- break;
177
- default:
178
- preventDefault = false;
179
- }
180
- if (preventDefault)
181
- event.preventDefault();
114
+ this.focusedTabIndex = this.tabs.findIndex((tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId);
182
115
  };
183
116
  this.selectedTab = undefined;
184
117
  this.activationType = "automatic";
@@ -205,10 +138,12 @@ const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTM
205
138
  this.tabGroup.theme = this.theme;
206
139
  }
207
140
  componentDidLoad() {
208
- this.setControlledMode();
141
+ if (this.selectedTabIndex !== undefined) {
142
+ this.selectedTab = this.selectedTabIndex;
143
+ }
209
144
  this.getChildren();
210
145
  this.linkTabs();
211
- this.attachEventListeners();
146
+ this.tabGroup.addEventListener("keydown", this.keydownHandler);
212
147
  this.setInitialTab();
213
148
  this.configureTabs();
214
149
  }
@@ -240,6 +175,9 @@ const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTM
240
175
  this.tabPanels.push(...this.newTabPanels);
241
176
  this.enabledTabs = this.getEnabledTabs();
242
177
  this.linkTabs();
178
+ if (!this.tabs[this.selectedTab] || !this.tabPanels[this.selectedTab])
179
+ this.setInitialTab();
180
+ this.configureTabs();
243
181
  this.newTabs = [];
244
182
  this.newTabPanels = [];
245
183
  }
@@ -253,12 +191,10 @@ const TabContext = /*@__PURE__*/ proxyCustomElement(class TabContext extends HTM
253
191
  */
254
192
  async tabRemovedHandler(hadFocus) {
255
193
  this.getChildren();
256
- this.enabledTabs = this.getEnabledTabs();
257
194
  this.linkTabs();
258
195
  if (this.tabs[this.selectedTab] && this.tabPanels[this.selectedTab]) {
259
196
  this.tabs[this.selectedTab].selected = true;
260
- this.tabPanels[this.selectedTab].selectedTab =
261
- this.tabs[this.selectedTab].tabId;
197
+ this.tabPanels[this.selectedTab].hidden = false;
262
198
  }
263
199
  else {
264
200
  this.setInitialTab();
@@ -1 +1 @@
1
- {"file":"ic-tab-context.js","mappings":"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","names":[],"sources":["src/components/ic-tab-context/ic-tab-context.tsx"],"sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Prop,\n State,\n h,\n Watch,\n Method,\n} from \"@stencil/core\";\nimport { IcActivationTypes, IcThemeMode } from \"../../utils/types\";\n\nimport {\n IcTabClickEventDetail,\n IcTabSelectEventDetail,\n} from \"../ic-tab/ic-tab.types\";\n\n@Component({\n tag: \"ic-tab-context\",\n})\nexport class TabContext {\n private controlledMode: boolean;\n private enabledTabs: HTMLIcTabElement[];\n private focusedTabIndex: number;\n private newTabPanels: HTMLIcTabPanelElement[] = [];\n private newTabs: HTMLIcTabElement[] = [];\n private tabs: HTMLIcTabElement[];\n private tabGroup: HTMLIcTabGroupElement;\n private tabPanels: HTMLIcTabPanelElement[];\n\n @Element() el: HTMLIcTabContextElement;\n\n @State() selectedTab: number | null;\n\n /**\n * Determines whether tabs have to be manually activated (by pressing 'Enter' or 'Space') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The unique context needed if using multiple tabs inside one another i.e. rendering another set of tabs inside a tab panel.\n */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * The selected tab to be controlled by the user. Must be used alongside the icTabSelect event to manage tab selection.\n */\n @Prop() selectedTabIndex?: number;\n\n @Watch(\"selectedTabIndex\")\n updateSelectedTab(newValue: number): void {\n this.selectedTab = newValue;\n }\n\n /**\n * If `true`, the tabs will display as black in the light theme.\n */\n @Prop() monochrome?: boolean = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.tabs.forEach((tab, index) => {\n tab.monochrome = this.monochrome;\n this.tabPanels[index].monochrome = this.monochrome;\n });\n this.tabGroup.monochrome = this.monochrome;\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n @Watch(\"theme\")\n watchThemeHandler(): void {\n this.tabs.forEach((tab, index) => {\n tab.theme = this.theme;\n this.tabPanels[index].theme = this.theme;\n });\n this.tabGroup.theme = this.theme;\n }\n\n /**\n * Emitted when a user selects a tab.\n */\n @Event({ bubbles: false }) icTabSelect: EventEmitter<IcTabSelectEventDetail>;\n\n componentDidLoad(): void {\n this.setControlledMode();\n this.getChildren();\n this.linkTabs();\n this.attachEventListeners();\n this.setInitialTab();\n this.configureTabs();\n }\n\n componentWillUpdate(): void {\n this.configureTabs();\n }\n\n disconnectedCallback(): void {\n this.tabGroup.removeEventListener(\"keydown\", this.keydownHandler);\n }\n\n @Listen(\"tabClick\")\n tabClickHandler(event: CustomEvent<IcTabClickEventDetail>): void {\n if (\n this.selectedTabIndex === undefined &&\n event.detail.contextId === this.contextId\n ) {\n this.selectedTab = event.detail.position;\n }\n /* eslint-disable no-unexpected-multiline */\n this.icTabSelect.emit({\n tabIndex: event.detail.position,\n tabLabel: this.el\n .querySelectorAll(\"ic-tab\")\n [event.detail.position].textContent.trim(),\n });\n /* eslint-enable no-unexpected-multiline */\n event.stopImmediatePropagation();\n }\n\n @Listen(\"tabCreated\")\n @Listen(\"tabPanelCreated\")\n tabCreatedHandler(ev: CustomEvent): void {\n if (this.tabs && this.tabPanels) {\n (ev.detail.setFocus ? this.newTabs : this.newTabPanels).push(ev.detail);\n if (this.newTabs.length === this.newTabPanels.length) {\n this.tabs.push(...this.newTabs);\n this.tabPanels.push(...this.newTabPanels);\n this.enabledTabs = this.getEnabledTabs();\n this.linkTabs();\n this.newTabs = [];\n this.newTabPanels = [];\n }\n }\n }\n\n @Listen(\"tabEnabled\")\n tabEnabledHandler(): void {\n this.enabledTabs = this.getEnabledTabs();\n }\n\n /**\n * @internal Used to set tab/tab panel IDs when a tab/tab panel has been removed\n */\n @Method()\n async tabRemovedHandler(hadFocus?: boolean): Promise<void> {\n this.getChildren();\n this.enabledTabs = this.getEnabledTabs();\n this.linkTabs();\n if (this.tabs[this.selectedTab] && this.tabPanels[this.selectedTab]) {\n this.tabs[this.selectedTab].selected = true;\n this.tabPanels[this.selectedTab].selectedTab =\n this.tabs[this.selectedTab].tabId;\n } else {\n this.setInitialTab();\n }\n\n if (hadFocus) {\n this.tabs[this.selectedTab].setFocus();\n }\n }\n\n // Sets attributes to link tab-group, tabs and tab-panels\n private linkTabs = () => {\n this.tabs.forEach((tab, index) => {\n const tabId = `ic-tab-${index}-context-${this.contextId}`;\n const tabPanelId = `ic-tab-panel-${index}-context-${this.contextId}`;\n const shared = `ic-tab--${index}-context-${this.contextId}`;\n const contextIdAttr = \"context-id\";\n tab.setAttribute(\"id\", tabId);\n tab.tabId = shared;\n tab.tabPosition = index;\n tab.setAttribute(\"aria-controls\", tabPanelId);\n tab.setAttribute(contextIdAttr, this.contextId);\n this.tabGroup.setAttribute(contextIdAttr, this.contextId);\n this.tabPanels[index].setAttribute(\"id\", tabPanelId);\n this.tabPanels[index].panelId = shared;\n this.tabPanels[index].tabPosition = index;\n this.tabPanels[index].setAttribute(\"aria-labelledby\", tabId);\n this.tabPanels[index].setAttribute(contextIdAttr, this.contextId);\n\n tab.theme = this.theme;\n this.tabPanels[index].theme = this.theme;\n this.tabGroup.theme = this.theme;\n });\n };\n\n // Gets tabs and tabpanels with the same context ID\n // Using querySelector to selector the children in relation to the host\n private getChildren = (): void => {\n this.tabGroup = this.el.querySelector(\"ic-tab-group\");\n this.tabs = Array.from(this.tabGroup.querySelectorAll(\"ic-tab\"));\n this.tabPanels = Array.from(this.el.children).filter(\n (child) => child.tagName === \"IC-TAB-PANEL\"\n ) as HTMLIcTabPanelElement[];\n this.enabledTabs = this.getEnabledTabs();\n };\n\n private keydownHandler = (event: KeyboardEvent) => {\n if (this.activationType === \"automatic\") {\n this.handleKeyBoardNavAutomatic(event);\n } else {\n this.handleKeyBoardNavManual(event);\n }\n };\n\n // Determines how keyboard navigation is to be handled based on the activation type\n private attachEventListeners = (): void => {\n this.tabGroup.addEventListener(\"keydown\", this.keydownHandler);\n };\n\n // Determines whether the selected tab is being controlled within the component\n // or by the user (via selectedTabIndex and onIcTabSelect)\n private setControlledMode = (): void => {\n if (this.selectedTabIndex !== undefined) {\n this.controlledMode = true;\n this.selectedTab = this.selectedTabIndex;\n }\n };\n\n // Sets the tab that is selected on initial render\n private setInitialTab = (): void => {\n if (this.controlledMode) {\n this.selectedTab = this.selectedTabIndex;\n this.focusedTabIndex = this.selectedTabIndex;\n } else {\n const firstEnabledTabIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[0].tabId\n );\n this.selectedTab = firstEnabledTabIndex;\n this.focusedTabIndex = firstEnabledTabIndex;\n }\n };\n\n // Passes the selected tab to the tab and tab panel components\n private configureTabs = () => {\n this.enabledTabs.forEach((tab) => {\n tab.selected = tab.tabPosition === this.selectedTab;\n });\n this.tabPanels.forEach((tabPanel) => {\n tabPanel.selectedTab = this.tabs[this.selectedTab].tabId;\n });\n };\n\n private getEnabledTabs = () => {\n return Array.from(this.tabs).filter((child) => !child.disabled);\n };\n\n private getIndexOfEnabledTab = (allTabsIndex: number) => {\n return this.enabledTabs.findIndex(\n (tab) => tab.tabId === this.tabs[allTabsIndex].tabId\n );\n };\n\n // Sets focus on tab and selects it\n private keyboardSelectTab = (enabledTabIndex: number) => {\n const newIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId\n );\n this.enabledTabs[enabledTabIndex].focus();\n if (!this.controlledMode) {\n this.selectedTab = newIndex;\n } else {\n /* eslint-disable no-unexpected-multiline */\n this.icTabSelect.emit({\n tabIndex: newIndex,\n tabLabel: this.el\n .querySelectorAll(\"ic-tab\")\n [newIndex].textContent.trim(),\n });\n }\n /* eslint-enable no-unexpected-multiline */\n };\n\n // Sets focus on tab without selecting it (for manual activation)\n private keyboardFocusTab = (enabledTabIndex: number) => {\n const newIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId\n );\n this.enabledTabs[enabledTabIndex].focus();\n this.focusedTabIndex = newIndex;\n };\n\n private handleKeyBoardNavAutomatic = (event: KeyboardEvent) => {\n const key = event.key;\n const enabledTabIndex = this.getIndexOfEnabledTab(this.selectedTab);\n let preventDefault = true;\n switch (key) {\n case \"Home\":\n this.keyboardSelectTab(0);\n break;\n case \"End\":\n this.keyboardSelectTab(this.enabledTabs.length - 1);\n break;\n case \"ArrowRight\":\n if (enabledTabIndex < this.enabledTabs.length - 1) {\n this.keyboardSelectTab(enabledTabIndex + 1);\n } else {\n this.keyboardSelectTab(0);\n }\n break;\n case \"ArrowLeft\":\n if (enabledTabIndex > 0) {\n this.keyboardSelectTab(enabledTabIndex - 1);\n } else {\n this.keyboardSelectTab(this.enabledTabs.length - 1);\n }\n break;\n default:\n preventDefault = false;\n }\n if (preventDefault) event.preventDefault();\n };\n\n private handleKeyBoardNavManual = (event: KeyboardEvent) => {\n const key = event.key;\n const enabledTabIndex = this.getIndexOfEnabledTab(this.focusedTabIndex);\n let preventDefault = true;\n switch (key) {\n case \"Home\":\n this.keyboardFocusTab(0);\n break;\n case \"End\":\n this.keyboardFocusTab(this.enabledTabs.length - 1);\n break;\n case \"ArrowRight\":\n if (enabledTabIndex < this.enabledTabs.length - 1) {\n this.keyboardFocusTab(enabledTabIndex + 1);\n } else {\n this.keyboardFocusTab(0);\n }\n break;\n case \"ArrowLeft\":\n if (enabledTabIndex > 0) {\n this.keyboardFocusTab(enabledTabIndex - 1);\n } else {\n this.keyboardFocusTab(this.enabledTabs.length - 1);\n }\n break;\n case \"Enter\":\n this.keyboardSelectTab(this.focusedTabIndex);\n break;\n case \" \":\n this.keyboardSelectTab(this.focusedTabIndex);\n break;\n default:\n preventDefault = false;\n }\n if (preventDefault) event.preventDefault();\n };\n\n render() {\n return <slot></slot>;\n }\n}\n"],"version":3}
1
+ {"file":"ic-tab-context.js","mappings":"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","names":[],"sources":["src/components/ic-tab-context/ic-tab-context.tsx"],"sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Listen,\n Prop,\n State,\n h,\n Watch,\n Method,\n} from \"@stencil/core\";\nimport { IcActivationTypes, IcThemeMode } from \"../../utils/types\";\n\nimport {\n IcTabClickEventDetail,\n IcTabSelectEventDetail,\n} from \"../ic-tab/ic-tab.types\";\n\nconst CONTEXT_ID_ATTR = \"context-id\";\n\n@Component({\n tag: \"ic-tab-context\",\n})\nexport class TabContext {\n private enabledTabs: HTMLIcTabElement[];\n private focusedTabIndex: number;\n private newTabPanels: HTMLIcTabPanelElement[] = [];\n private newTabs: HTMLIcTabElement[] = [];\n private tabs: HTMLIcTabElement[];\n private tabGroup: HTMLIcTabGroupElement;\n private tabPanels: HTMLIcTabPanelElement[];\n\n @Element() el: HTMLIcTabContextElement;\n\n @State() selectedTab: number | null;\n\n /**\n * Determines whether tabs have to be manually activated (by pressing 'Enter' or 'Space') when they receive focus using keyboard navigation.\n */\n @Prop() activationType?: IcActivationTypes = \"automatic\";\n\n /**\n * The unique context needed if using multiple tabs inside one another i.e. rendering another set of tabs inside a tab panel.\n */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * The selected tab to be controlled by the user. Must be used alongside the icTabSelect event to manage tab selection.\n */\n @Prop() selectedTabIndex?: number;\n\n @Watch(\"selectedTabIndex\")\n updateSelectedTab(newValue: number): void {\n this.selectedTab = newValue;\n }\n\n /**\n * If `true`, the tabs will display as black in the light theme.\n */\n @Prop() monochrome?: boolean = false;\n @Watch(\"monochrome\")\n watchMonochromeHandler(): void {\n this.tabs.forEach((tab, index) => {\n tab.monochrome = this.monochrome;\n this.tabPanels[index].monochrome = this.monochrome;\n });\n this.tabGroup.monochrome = this.monochrome;\n }\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme?: IcThemeMode = \"inherit\";\n @Watch(\"theme\")\n watchThemeHandler(): void {\n this.tabs.forEach((tab, index) => {\n tab.theme = this.theme;\n this.tabPanels[index].theme = this.theme;\n });\n this.tabGroup.theme = this.theme;\n }\n\n /**\n * Emitted when a user selects a tab.\n */\n @Event({ bubbles: false }) icTabSelect: EventEmitter<IcTabSelectEventDetail>;\n\n componentDidLoad(): void {\n if (this.selectedTabIndex !== undefined) {\n this.selectedTab = this.selectedTabIndex;\n }\n this.getChildren();\n this.linkTabs();\n this.tabGroup.addEventListener(\"keydown\", this.keydownHandler);\n this.setInitialTab();\n this.configureTabs();\n }\n\n componentWillUpdate(): void {\n this.configureTabs();\n }\n\n disconnectedCallback(): void {\n this.tabGroup.removeEventListener(\"keydown\", this.keydownHandler);\n }\n\n @Listen(\"tabClick\")\n tabClickHandler(event: CustomEvent<IcTabClickEventDetail>): void {\n if (\n this.selectedTabIndex === undefined &&\n event.detail.contextId === this.contextId\n ) {\n this.selectedTab = event.detail.position;\n }\n /* eslint-disable no-unexpected-multiline */\n this.icTabSelect.emit({\n tabIndex: event.detail.position,\n tabLabel: this.el\n .querySelectorAll(\"ic-tab\")\n [event.detail.position].textContent.trim(),\n });\n /* eslint-enable no-unexpected-multiline */\n event.stopImmediatePropagation();\n }\n\n @Listen(\"tabCreated\")\n @Listen(\"tabPanelCreated\")\n tabCreatedHandler(ev: CustomEvent): void {\n if (this.tabs && this.tabPanels) {\n (ev.detail.setFocus ? this.newTabs : this.newTabPanels).push(ev.detail);\n if (this.newTabs.length === this.newTabPanels.length) {\n this.tabs.push(...this.newTabs);\n this.tabPanels.push(...this.newTabPanels);\n this.enabledTabs = this.getEnabledTabs();\n this.linkTabs();\n if (!this.tabs[this.selectedTab] || !this.tabPanels[this.selectedTab])\n this.setInitialTab();\n this.configureTabs();\n this.newTabs = [];\n this.newTabPanels = [];\n }\n }\n }\n\n @Listen(\"tabEnabled\")\n tabEnabledHandler(): void {\n this.enabledTabs = this.getEnabledTabs();\n }\n\n /**\n * @internal Used to set tab/tab panel IDs when a tab/tab panel has been removed\n */\n @Method()\n async tabRemovedHandler(hadFocus?: boolean): Promise<void> {\n this.getChildren();\n this.linkTabs();\n if (this.tabs[this.selectedTab] && this.tabPanels[this.selectedTab]) {\n this.tabs[this.selectedTab].selected = true;\n this.tabPanels[this.selectedTab].hidden = false;\n } else {\n this.setInitialTab();\n }\n\n if (hadFocus) {\n this.tabs[this.selectedTab].setFocus();\n }\n }\n\n /** Sets attributes to link tab-group, tabs and tab-panels */\n private linkTabs = () => {\n this.tabs.forEach((tab, index) => {\n const tabId = `ic-tab-${index}-context-${this.contextId}`;\n const tabPanelId = `ic-tab-panel-${index}-context-${this.contextId}`;\n tab.setAttribute(\"id\", tabId);\n tab.tabId = `ic-tab--${index}-context-${this.contextId}`;\n tab.tabPosition = index;\n tab.setAttribute(\"aria-controls\", tabPanelId);\n tab.setAttribute(CONTEXT_ID_ATTR, this.contextId);\n this.tabGroup.setAttribute(CONTEXT_ID_ATTR, this.contextId);\n this.tabPanels[index].setAttribute(\"id\", tabPanelId);\n this.tabPanels[index].setAttribute(\"aria-labelledby\", tabId);\n this.tabPanels[index].setAttribute(CONTEXT_ID_ATTR, this.contextId);\n\n tab.theme = this.theme;\n this.tabPanels[index].theme = this.theme;\n this.tabGroup.theme = this.theme;\n });\n };\n\n /**\n * Gets tabs and tabpanels with the same context ID using querySelector to selector the children in relation to the host\n */\n private getChildren = (): void => {\n this.tabGroup = this.el.querySelector(\"ic-tab-group\");\n this.tabs = Array.from(this.tabGroup.querySelectorAll(\"ic-tab\"));\n this.tabPanels = Array.from(this.el.children).filter(\n (child) => child.tagName === \"IC-TAB-PANEL\"\n ) as HTMLIcTabPanelElement[];\n this.enabledTabs = this.getEnabledTabs();\n };\n\n private keydownHandler = (event: KeyboardEvent) => {\n const isManual = this.activationType === \"manual\";\n const enabledTabIndex = this.enabledTabs.findIndex(\n (tab) =>\n tab.tabId ===\n this.tabs[isManual ? this.focusedTabIndex : this.selectedTab].tabId\n );\n const keyboardFunction = isManual\n ? this.keyboardFocusTab\n : this.keyboardSelectTab;\n let preventDefault = true;\n switch (event.key) {\n case \"Home\":\n keyboardFunction(0);\n break;\n case \"End\":\n keyboardFunction(this.enabledTabs.length - 1);\n break;\n case \"ArrowRight\":\n keyboardFunction(\n enabledTabIndex < this.enabledTabs.length - 1\n ? enabledTabIndex + 1\n : 0\n );\n break;\n case \"ArrowLeft\":\n keyboardFunction(\n (enabledTabIndex > 0 ? enabledTabIndex : this.enabledTabs.length) - 1\n );\n break;\n default:\n if (isManual && (event.key === \"Enter\" || event.key === \" \")) {\n this.keyboardSelectTab(this.focusedTabIndex);\n } else {\n preventDefault = false;\n }\n }\n if (preventDefault) event.preventDefault();\n };\n\n /** Sets the tab that is selected on initial render */\n private setInitialTab = (): void => {\n if (this.selectedTabIndex !== undefined) {\n this.selectedTab = this.selectedTabIndex;\n this.focusedTabIndex = this.selectedTabIndex;\n } else {\n const firstEnabledTabIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[0].tabId\n );\n this.selectedTab = firstEnabledTabIndex;\n this.focusedTabIndex = firstEnabledTabIndex;\n }\n };\n\n /** Passes the selected tab to the tab and tab panel components */\n private configureTabs = () => {\n this.enabledTabs.forEach((tab) => {\n tab.selected = tab.tabPosition === this.selectedTab;\n });\n this.tabPanels.forEach((tabPanel, index) => {\n tabPanel.hidden = index !== this.selectedTab;\n });\n };\n\n private getEnabledTabs = () =>\n Array.from(this.tabs).filter((child) => !child.disabled);\n\n /** Sets focus on tab and selects it */\n private keyboardSelectTab = (enabledTabIndex: number) => {\n const newIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId\n );\n this.enabledTabs[enabledTabIndex].focus();\n if (this.selectedTabIndex === undefined) {\n this.selectedTab = newIndex;\n } else {\n /* eslint-disable no-unexpected-multiline */\n this.icTabSelect.emit({\n tabIndex: newIndex,\n tabLabel: this.el\n .querySelectorAll(\"ic-tab\")\n [newIndex].textContent.trim(),\n });\n }\n };\n\n /** Sets focus on tab without selecting it (for manual activation) */\n private keyboardFocusTab = (enabledTabIndex: number) => {\n this.enabledTabs[enabledTabIndex].focus();\n this.focusedTabIndex = this.tabs.findIndex(\n (tab) => tab.tabId === this.enabledTabs[enabledTabIndex].tabId\n );\n };\n\n render() {\n return <slot></slot>;\n }\n}\n"],"version":3}
@@ -1,7 +1,7 @@
1
1
  import { proxyCustomElement, HTMLElement, createEvent, h, Host } from '@stencil/core/internal/client';
2
2
  import { l as isPropDefined } from './helpers.js';
3
3
 
4
- const icTabPanelCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\"button\"]::-moz-focus-inner,[type=\"reset\"]::-moz-focus-inner,[type=\"submit\"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=\"button\"]:-moz-focusring,[type=\"reset\"]:-moz-focusring,[type=\"submit\"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=\"checkbox\"],[type=\"radio\"]{box-sizing:border-box;padding:0;}[type=\"number\"]::-webkit-inner-spin-button,[type=\"number\"]::-webkit-outer-spin-button{height:auto}[type=\"search\"]{-webkit-appearance:textfield;outline-offset:-2px;}[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host:not[hidden]{display:block}:host{color:var(--ic-color-primary-text)}";
4
+ const icTabPanelCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\"button\"]::-moz-focus-inner,[type=\"reset\"]::-moz-focus-inner,[type=\"submit\"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=\"button\"]:-moz-focusring,[type=\"reset\"]:-moz-focusring,[type=\"submit\"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=\"checkbox\"],[type=\"radio\"]{box-sizing:border-box;padding:0;}[type=\"number\"]::-webkit-inner-spin-button,[type=\"number\"]::-webkit-outer-spin-button{height:auto}[type=\"search\"]{-webkit-appearance:textfield;outline-offset:-2px;}[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host:not[hidden]{display:block}:host{color:var(--ic-color-text-primary)}";
5
5
 
6
6
  const TabPanel = /*@__PURE__*/ proxyCustomElement(class TabPanel extends HTMLElement {
7
7
  constructor() {
@@ -1 +1 @@
1
- {"file":"ic-tab-panel.js","mappings":";;;AAAA,MAAM,aAAa,GAAG,08EAA08E;;MCiBn9E,QAAQ;;;;;;;0BAIY,KAAK;;;;qBAkBN,SAAS;;IAYvC,iBAAiB;QACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACpC;IAED,MAAM;QACJ,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC7C,QACE,EAAC,IAAI,IACH,KAAK,EAAE;gBACL,CAAC,YAAY,KAAK,EAAE,GAAG,KAAK,KAAK,SAAS;aAC3C,EACD,IAAI,EAAC,UAAU,EACf,MAAM,EACJ,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;kBAChD,EAAE,OAAO,KAAK,WAAW,CAAC;kBAC1B,IAAI,IAGV,eACE,eAAa,CACT,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/ic-tab-panel/ic-tab-panel.css?tag=ic-tab-panel&encapsulation=shadow","src/components/ic-tab-panel/ic-tab-panel.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host:not[hidden] {\n display: block;\n}\n\n:host {\n color: var(--ic-color-primary-text);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n} from \"@stencil/core\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { isPropDefined } from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-tab-panel\",\n styleUrl: \"ic-tab-panel.css\",\n shadow: true,\n})\nexport class TabPanel {\n @Element() el: HTMLIcTabPanelElement;\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /**\n * @internal The shared ID that links the panel and tab.\n */\n @Prop({ reflect: true }) panelId?: string;\n\n /**\n * @internal The shared ID of the currently selected tab.\n */\n @Prop() selectedTab?: string;\n\n /**\n * @internal The position of the tab panel inside the tabs array in context.\n */\n @Prop({ reflect: true }) tabPosition?: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * @internal Emitted when a tab panel is dynamically created.\n */\n @Event() tabPanelCreated: EventEmitter<HTMLIcTabPanelElement>;\n\n /**\n * @internal Emitted when a tab panel is unmounted.\n */\n @Event() tabPanelRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabPanelCreated.emit(this.el);\n }\n\n render() {\n const { panelId, selectedTab, theme } = this;\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n role=\"tabpanel\"\n hidden={\n isPropDefined(panelId) && isPropDefined(selectedTab)\n ? !(panelId === selectedTab)\n : true\n }\n >\n <div>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"ic-tab-panel.js","mappings":";;;AAAA,MAAM,aAAa,GAAG,08EAA08E;;MCiBn9E,QAAQ;;;;;;;0BAIY,KAAK;;;;qBAkBN,SAAS;;IAYvC,iBAAiB;QACf,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACpC;IAED,MAAM;QACJ,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAC7C,QACE,EAAC,IAAI,IACH,KAAK,EAAE;gBACL,CAAC,YAAY,KAAK,EAAE,GAAG,KAAK,KAAK,SAAS;aAC3C,EACD,IAAI,EAAC,UAAU,EACf,MAAM,EACJ,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC;kBAChD,EAAE,OAAO,KAAK,WAAW,CAAC;kBAC1B,IAAI,IAGV,eACE,eAAa,CACT,CACD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/ic-tab-panel/ic-tab-panel.css?tag=ic-tab-panel&encapsulation=shadow","src/components/ic-tab-panel/ic-tab-panel.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host:not[hidden] {\n display: block;\n}\n\n:host {\n color: var(--ic-color-text-primary);\n}\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n} from \"@stencil/core\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { isPropDefined } from \"../../utils/helpers\";\n\n@Component({\n tag: \"ic-tab-panel\",\n styleUrl: \"ic-tab-panel.css\",\n shadow: true,\n})\nexport class TabPanel {\n @Element() el: HTMLIcTabPanelElement;\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /**\n * @internal The shared ID that links the panel and tab.\n */\n @Prop({ reflect: true }) panelId?: string;\n\n /**\n * @internal The shared ID of the currently selected tab.\n */\n @Prop() selectedTab?: string;\n\n /**\n * @internal The position of the tab panel inside the tabs array in context.\n */\n @Prop({ reflect: true }) tabPosition?: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n /**\n * @internal Emitted when a tab panel is dynamically created.\n */\n @Event() tabPanelCreated: EventEmitter<HTMLIcTabPanelElement>;\n\n /**\n * @internal Emitted when a tab panel is unmounted.\n */\n @Event() tabPanelRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabPanelCreated.emit(this.el);\n }\n\n render() {\n const { panelId, selectedTab, theme } = this;\n return (\n <Host\n class={{\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n }}\n role=\"tabpanel\"\n hidden={\n isPropDefined(panelId) && isPropDefined(selectedTab)\n ? !(panelId === selectedTab)\n : true\n }\n >\n <div>\n <slot></slot>\n </div>\n </Host>\n );\n }\n}\n"],"version":3}
@@ -62,10 +62,9 @@ const Tab = /*@__PURE__*/ proxyCustomElement(class Tab extends HTMLElement {
62
62
  this.tabCreated.emit(this.el);
63
63
  }
64
64
  disconnectedCallback() {
65
- const tabContext = document.querySelector(`ic-tab-context[context-id=${this.contextId}]`);
66
- if (tabContext) {
67
- tabContext.tabRemovedHandler(!!this.focusTabId);
68
- }
65
+ var _a;
66
+ (_a = document
67
+ .querySelector(`ic-tab-context[context-id=${this.contextId}]`)) === null || _a === void 0 ? void 0 : _a.tabRemovedHandler(!!this.focusTabId);
69
68
  }
70
69
  componentWillLoad() {
71
70
  removeDisabledFalse(this.disabled, this.el);
@@ -82,14 +81,14 @@ const Tab = /*@__PURE__*/ proxyCustomElement(class Tab extends HTMLElement {
82
81
  }
83
82
  }
84
83
  render() {
85
- const { disabled, selected, theme, monochrome } = this;
84
+ const { disabled, selected, theme, monochrome, handleClick, handleFocus, handleMouseDown, } = this;
86
85
  return (h(Host, { class: {
87
86
  ["with-transition"]: !this.isInitialRender,
88
87
  ["ic-tab-selected"]: selected,
89
88
  ["ic-tab-disabled"]: disabled,
90
89
  [`ic-theme-${theme}`]: theme !== "inherit",
91
90
  ["ic-tab-monochrome"]: monochrome,
92
- }, role: "tab", "aria-selected": selected ? "true" : "false", onClick: this.handleClick, onFocus: this.handleFocus, onMouseDown: this.handleMouseDown, "aria-disabled": disabled ? "true" : "false", tabindex: this.selected ? 0 : -1 }, this.el.querySelector('[slot="icon"]') && h("slot", { name: "icon" }), h("ic-typography", { class: "ic-tab-label", variant: "label" }, h("span", null, h("slot", null))), isSlotUsed(this.el, "badge") && h("slot", { name: "badge" })));
91
+ }, role: "tab", "aria-selected": `${selected}`, onClick: handleClick, onFocus: handleFocus, onMouseDown: handleMouseDown, "aria-disabled": `${disabled}`, tabindex: selected ? 0 : -1 }, isSlotUsed(this.el, "icon") && h("slot", { name: "icon" }), h("ic-typography", { class: "ic-tab-label", variant: "label" }, h("span", null, h("slot", null))), isSlotUsed(this.el, "badge") && h("slot", { name: "badge" })));
93
92
  }
94
93
  get el() { return this; }
95
94
  static get watchers() { return {
@@ -1 +1 @@
1
- {"file":"ic-tab.js","mappings":";;;;AAAA,MAAM,QAAQ,GAAG,qxIAAqxI;;MCyBzxI,GAAG;;;;;;;;;;QACN,mBAAc,GAAY,KAAK,CAAC;QAEhC,oBAAe,GAAY,IAAI,CAAC;QAwFhC,gBAAW,GAAG;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,QAAQ,EAAE,IAAI,CAAC,WAAW;aAC3B,CAAC,CAAC;YACH,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,WAAW;iBAC3B,CAAC,CAAC;gBACH,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;aAC7B;SACF,CAAC;QAEM,gBAAW,GAAG;YACpB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;gBAE7B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;oBACjB,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,SAAS,EAAE,IAAI,CAAC,SAAS;oBACzB,QAAQ,EAAE,IAAI,CAAC,WAAW;iBAC3B,CAAC,CAAC;aACJ;SACF,CAAC;QAEM,oBAAe,GAAG;;;;YAIxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC5B,CAAC;yBApH4C,SAAS;wBAK1B,KAAK;0BAGH,KAAK;wBAGU,KAAK;;;qBASrB,SAAS;;IAGvC,oBAAoB;QAClB,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;KACxB;IA2BD,iBAAiB;QACf,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KAC/B;IAED,oBAAoB;QAClB,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CACvC,6BAA6B,IAAI,CAAC,SAAS,GAAG,CACpB,CAAC;QAC7B,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACjD;KACF;IAED,iBAAiB;QACf,mBAAmB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;KAC7C;IAED,kBAAkB;QAChB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;KAC9B;;;;IAMD,MAAM,QAAQ;QACZ,IAAI,IAAI,CAAC,EAAE,EAAE;YACX,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;SACjB;KACF;IAqCD,MAAM;QACJ,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC;QACvD,QACE,EAAC,IAAI,IACH,KAAK,EAAE;gBACL,CAAC,iBAAiB,GAAG,CAAC,IAAI,CAAC,eAAe;gBAC1C,CAAC,iBAAiB,GAAG,QAAQ;gBAC7B,CAAC,iBAAiB,GAAG,QAAQ;gBAC7B,CAAC,YAAY,KAAK,EAAE,GAAG,KAAK,KAAK,SAAS;gBAC1C,CAAC,mBAAmB,GAAG,UAAU;aAClC,EACD,IAAI,EAAC,KAAK,mBACK,QAAQ,GAAG,MAAM,GAAG,OAAO,EAC1C,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,WAAW,EAAE,IAAI,CAAC,eAAe,mBAClB,QAAQ,GAAG,MAAM,GAAG,OAAO,EAC1C,QAAQ,EAAE,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC,IAE/B,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,YAAM,IAAI,EAAC,MAAM,GAAQ,EACpE,qBAAe,KAAK,EAAC,cAAc,EAAC,OAAO,EAAC,OAAO,IACjD,gBACE,eAAa,CACR,CACO,EACf,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,YAAM,IAAI,EAAC,OAAO,GAAQ,CACtD,EACP;KACH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","names":[],"sources":["src/components/ic-tab/ic-tab.css?tag=ic-tab&encapsulation=shadow","src/components/ic-tab/ic-tab.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n --indicator-initial-color: rgba(23 89 188 / 0%);\n --focus-indicator: var(--ic-border-focus);\n\n display: flex;\n align-items: center;\n border-radius: 0;\n color: var(--ic-tab-label);\n\n --ic-typography-color: var(--ic-tab-label);\n\n height: 2.5rem;\n padding: 0 var(--ic-space-md);\n cursor: pointer;\n position: relative;\n border-bottom: var(--ic-space-xxs) solid var(--indicator-initial-color);\n gap: var(--ic-space-xs);\n transition: all var(--ic-easing-transition-fast);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon);\n}\n\n:host(:focus) {\n box-shadow: var(--focus-indicator);\n border-radius: var(--ic-border-radius);\n}\n\n:host(:focus-visible) {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:hover) {\n background-color: var(--ic-tab-item-hover);\n}\n\n:host(:active) {\n background-color: var(--ic-tab-item-pressed);\n}\n\n:host(.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item);\n}\n\n:host(.ic-tab-disabled) {\n pointer-events: none;\n color: var(--ic-architectural-300);\n}\n\n:host(.ic-tab-disabled) ic-typography {\n color: var(--ic-architectural-300);\n\n --ic-typography-color: var(--ic-architectural-300);\n}\n\n:host(.ic-tab-monochrome) {\n color: var(--ic-tab-label-monochrome);\n}\n\n:host(.ic-tab-monochrome) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-monochrome);\n}\n\n:host(.ic-tab-monochrome.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item-monochrome);\n}\n\n:host(.ic-tab-monochrome:hover) {\n background-color: var(--ic-tab-item-hover-monochrome);\n}\n\n:host(.ic-tab-monochrome:active) {\n background-color: var(--ic-tab-item-pressed-monochrome);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :host(.ic-tab-selected.with-transition) {\n transition: all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow);\n }\n}\n\n.ic-tab-label {\n pointer-events: none;\n text-wrap: nowrap;\n}\n\n::slotted(svg) {\n fill: currentcolor;\n}\n\n@media (forced-colors: active) {\n :host {\n border-bottom: var(--ic-space-xxs) solid canvas;\n }\n\n :host(.ic-tab-disabled) {\n color: GrayText;\n }\n\n :host(.ic-tab-disabled) ic-typography {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n}\n\n/* Add back in after storybook has the `color-scheme: light dark` code */\n\n/* @media (prefers-color-scheme: dark) and (not (forced-colors: active)) {\n :host(ic-tab) .ic-tab-label {\n color: var(--ic-architectural-white);\n }\n :host(ic-tab.ic-tab-disabled) .ic-tab-label {\n color: inherit;\n }\n} */\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n Watch,\n} from \"@stencil/core\";\n\nimport { IcTabClickEventDetail } from \"./ic-tab.types\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { isSlotUsed, removeDisabledFalse } from \"../../utils/helpers\";\n\n/**\n * @slot icon - Content will be rendered next to the tab label.\n * @slot badge - Badge component displayed inline with the tab.\n */\n@Component({\n tag: \"ic-tab\",\n styleUrl: \"ic-tab.css\",\n shadow: true,\n})\nexport class Tab {\n private focusFromClick: boolean = false;\n private focusTabId: string;\n private isInitialRender: boolean = true;\n\n @Element() el: HTMLIcTabElement;\n\n /** @internal The unique context needed if using multiple tabs inside one another i.e. rendering another tabs inside a tab panel. */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /** @internal If `true`, the tab will display with a selected indicator and tabIndex will be set. */\n @Prop({ reflect: true }) selected?: boolean = false;\n\n /** @internal The shared ID between panel and tab. */\n @Prop({ reflect: true }) tabId?: string;\n\n /** @internal The position of the tab inside the tabs array in context. */\n @Prop() tabPosition?: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n @Watch(\"disabled\")\n disabledWatchHandler(): void {\n this.tabEnabled.emit();\n }\n\n /**\n * @internal Emitted when a tab is selected.\n */\n @Event() tabClick: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is dynamically created.\n */\n @Event() tabCreated: EventEmitter<HTMLIcTabElement>;\n\n /**\n * @internal Emitted when a tab's disabled prop changes\n */\n @Event() tabEnabled: EventEmitter<void>;\n\n /**\n * @internal Emitted when a tab is focussed.\n */\n @Event() tabFocus: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is unmounted.\n */\n @Event() tabRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabCreated.emit(this.el);\n }\n\n disconnectedCallback(): void {\n const tabContext = document.querySelector(\n `ic-tab-context[context-id=${this.contextId}]`\n ) as HTMLIcTabContextElement;\n if (tabContext) {\n tabContext.tabRemovedHandler(!!this.focusTabId);\n }\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidUpdate(): void {\n this.isInitialRender = false;\n }\n\n /**\n * Sets focus on the tab.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.el) {\n this.el.focus();\n }\n }\n\n private handleClick = () => {\n this.tabClick.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n if (this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n this.focusFromClick = false;\n }\n };\n\n private handleFocus = () => {\n if (!this.focusFromClick) {\n this.focusTabId = this.tabId;\n\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n }\n };\n\n private handleMouseDown = () => {\n //set flag so that focus gets handled after click\n //there is a timing issue where a long click only causes focus to happen & not the click\n //the focus does need to be a separate event though to handle focus from keyboard\n this.focusFromClick = true;\n };\n\n render() {\n const { disabled, selected, theme, monochrome } = this;\n return (\n <Host\n class={{\n [\"with-transition\"]: !this.isInitialRender,\n [\"ic-tab-selected\"]: selected,\n [\"ic-tab-disabled\"]: disabled,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-tab-monochrome\"]: monochrome,\n }}\n role=\"tab\"\n aria-selected={selected ? \"true\" : \"false\"}\n onClick={this.handleClick}\n onFocus={this.handleFocus}\n onMouseDown={this.handleMouseDown}\n aria-disabled={disabled ? \"true\" : \"false\"}\n tabindex={this.selected ? 0 : -1}\n >\n {this.el.querySelector('[slot=\"icon\"]') && <slot name=\"icon\"></slot>}\n <ic-typography class=\"ic-tab-label\" variant=\"label\">\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n {isSlotUsed(this.el, \"badge\") && <slot name=\"badge\"></slot>}\n </Host>\n );\n }\n}\n"],"version":3}
1
+ {"file":"ic-tab.js","mappings":"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","names":[],"sources":["src/components/ic-tab/ic-tab.css?tag=ic-tab&encapsulation=shadow","src/components/ic-tab/ic-tab.tsx"],"sourcesContent":["@import \"../../global/normalize.css\";\n\n:host {\n --indicator-initial-color: rgba(23 89 188 / 0%);\n --focus-indicator: var(--ic-border-focus);\n\n display: flex;\n align-items: center;\n border-radius: 0;\n color: var(--ic-tab-label);\n\n --ic-typography-color: var(--ic-tab-label);\n\n height: 2.5rem;\n padding: 0 var(--ic-space-md);\n cursor: pointer;\n position: relative;\n border-bottom: var(--ic-space-xxs) solid var(--indicator-initial-color);\n gap: var(--ic-space-xs);\n transition: all var(--ic-easing-transition-fast);\n}\n\n::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon);\n}\n\n:host(:focus) {\n box-shadow: var(--focus-indicator);\n border-radius: var(--ic-border-radius);\n}\n\n:host(:focus-visible) {\n outline: var(--ic-hc-focus-outline);\n}\n\n:host(:hover) {\n background-color: var(--ic-tab-item-hover);\n}\n\n:host(:active) {\n background-color: var(--ic-tab-item-pressed);\n}\n\n:host(.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item);\n}\n\n:host(.ic-tab-disabled) {\n pointer-events: none;\n color: var(--ic-architectural-300);\n}\n\n:host(.ic-tab-disabled) ic-typography {\n color: var(--ic-architectural-300);\n\n --ic-typography-color: var(--ic-architectural-300);\n}\n\n:host(.ic-tab-monochrome) {\n color: var(--ic-tab-label-monochrome);\n}\n\n:host(.ic-tab-monochrome) ::slotted([slot=\"icon\"]) {\n fill: var(--ic-tab-icon-monochrome);\n}\n\n:host(.ic-tab-monochrome.ic-tab-selected) {\n border-bottom: var(--ic-space-xxs) solid var(--ic-tab-item-monochrome);\n}\n\n:host(.ic-tab-monochrome:hover) {\n background-color: var(--ic-tab-item-hover-monochrome);\n}\n\n:host(.ic-tab-monochrome:active) {\n background-color: var(--ic-tab-item-pressed-monochrome);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n :host(.ic-tab-selected.with-transition) {\n transition: all var(--ic-easing-transition-slow),\n border-color var(--ic-transition-duration-slow);\n }\n}\n\n.ic-tab-label {\n pointer-events: none;\n text-wrap: nowrap;\n}\n\n::slotted(svg) {\n fill: currentcolor;\n}\n\n@media (forced-colors: active) {\n :host {\n border-bottom: var(--ic-space-xxs) solid canvas;\n }\n\n :host(.ic-tab-disabled) {\n color: GrayText;\n }\n\n :host(.ic-tab-disabled) ic-typography {\n color: GrayText;\n\n --ic-typography-color: GrayText;\n }\n}\n\n/* Add back in after storybook has the `color-scheme: light dark` code */\n\n/* @media (prefers-color-scheme: dark) and (not (forced-colors: active)) {\n :host(ic-tab) .ic-tab-label {\n color: var(--ic-architectural-white);\n }\n :host(ic-tab.ic-tab-disabled) .ic-tab-label {\n color: inherit;\n }\n} */\n","import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Prop,\n h,\n Method,\n Watch,\n} from \"@stencil/core\";\n\nimport { IcTabClickEventDetail } from \"./ic-tab.types\";\nimport { IcThemeMode } from \"../../utils/types\";\nimport { isSlotUsed, removeDisabledFalse } from \"../../utils/helpers\";\n\n/**\n * @slot icon - Content will be rendered next to the tab label.\n * @slot badge - Badge component displayed inline with the tab.\n */\n@Component({\n tag: \"ic-tab\",\n styleUrl: \"ic-tab.css\",\n shadow: true,\n})\nexport class Tab {\n private focusFromClick: boolean = false;\n private focusTabId: string;\n private isInitialRender: boolean = true;\n\n @Element() el: HTMLIcTabElement;\n\n /** @internal The unique context needed if using multiple tabs inside one another i.e. rendering another tabs inside a tab panel. */\n @Prop({ reflect: true }) contextId?: string = \"default\";\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled?: boolean = false;\n\n /** @internal Determines whether black variant of the tabs should be displayed. */\n @Prop() monochrome?: boolean = false;\n\n /** @internal If `true`, the tab will display with a selected indicator and tabIndex will be set. */\n @Prop({ reflect: true }) selected?: boolean = false;\n\n /** @internal The shared ID between panel and tab. */\n @Prop({ reflect: true }) tabId?: string;\n\n /** @internal The position of the tab inside the tabs array in context. */\n @Prop() tabPosition?: number;\n\n /** @internal Determines whether the light or dark variant of the tabs should be displayed. */\n @Prop() theme?: IcThemeMode = \"inherit\";\n\n @Watch(\"disabled\")\n disabledWatchHandler(): void {\n this.tabEnabled.emit();\n }\n\n /**\n * @internal Emitted when a tab is selected.\n */\n @Event() tabClick: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is dynamically created.\n */\n @Event() tabCreated: EventEmitter<HTMLIcTabElement>;\n\n /**\n * @internal Emitted when a tab's disabled prop changes\n */\n @Event() tabEnabled: EventEmitter<void>;\n\n /**\n * @internal Emitted when a tab is focussed.\n */\n @Event() tabFocus: EventEmitter<IcTabClickEventDetail>;\n\n /**\n * @internal Emitted when a tab is unmounted.\n */\n @Event() tabRemoved: EventEmitter<void>;\n\n connectedCallback(): void {\n this.tabCreated.emit(this.el);\n }\n\n disconnectedCallback(): void {\n document\n .querySelector<HTMLIcTabContextElement>(\n `ic-tab-context[context-id=${this.contextId}]`\n )\n ?.tabRemovedHandler(!!this.focusTabId);\n }\n\n componentWillLoad(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidUpdate(): void {\n this.isInitialRender = false;\n }\n\n /**\n * Sets focus on the tab.\n */\n @Method()\n async setFocus(): Promise<void> {\n if (this.el) {\n this.el.focus();\n }\n }\n\n private handleClick = () => {\n this.tabClick.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n if (this.focusFromClick) {\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n this.focusFromClick = false;\n }\n };\n\n private handleFocus = () => {\n if (!this.focusFromClick) {\n this.focusTabId = this.tabId;\n\n this.tabFocus.emit({\n tabId: this.tabId,\n contextId: this.contextId,\n position: this.tabPosition,\n });\n }\n };\n\n private handleMouseDown = () => {\n //set flag so that focus gets handled after click\n //there is a timing issue where a long click only causes focus to happen & not the click\n //the focus does need to be a separate event though to handle focus from keyboard\n this.focusFromClick = true;\n };\n\n render() {\n const {\n disabled,\n selected,\n theme,\n monochrome,\n handleClick,\n handleFocus,\n handleMouseDown,\n } = this;\n return (\n <Host\n class={{\n [\"with-transition\"]: !this.isInitialRender,\n [\"ic-tab-selected\"]: selected,\n [\"ic-tab-disabled\"]: disabled,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n [\"ic-tab-monochrome\"]: monochrome,\n }}\n role=\"tab\"\n aria-selected={`${selected}`}\n onClick={handleClick}\n onFocus={handleFocus}\n onMouseDown={handleMouseDown}\n aria-disabled={`${disabled}`}\n tabindex={selected ? 0 : -1}\n >\n {isSlotUsed(this.el, \"icon\") && <slot name=\"icon\"></slot>}\n <ic-typography class=\"ic-tab-label\" variant=\"label\">\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n {isSlotUsed(this.el, \"badge\") && <slot name=\"badge\"></slot>}\n </Host>\n );\n }\n}\n"],"version":3}
@@ -6,7 +6,7 @@ import { d as defineCustomElement$3 } from './ic-input-label2.js';
6
6
  import { d as defineCustomElement$2 } from './ic-input-validation2.js';
7
7
  import { d as defineCustomElement$1 } from './ic-typography2.js';
8
8
 
9
- const icTextFieldCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\"button\"]::-moz-focus-inner,[type=\"reset\"]::-moz-focus-inner,[type=\"submit\"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=\"button\"]:-moz-focusring,[type=\"reset\"]:-moz-focusring,[type=\"submit\"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=\"checkbox\"],[type=\"radio\"]{box-sizing:border-box;padding:0;}[type=\"number\"]::-webkit-inner-spin-button,[type=\"number\"]::-webkit-outer-spin-button{height:auto}[type=\"search\"]{-webkit-appearance:textfield;outline-offset:-2px;}[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block}:host(.ic-text-field-full-width){width:100%}::-moz-placeholder{color:var(--ic-color-tertiary-text);opacity:1}::placeholder{color:var(--ic-color-tertiary-text);opacity:1}input,textarea{border:0;border-radius:var(--ic-border-radius);background-color:var(--ic-architectural-white);line-height:1.5rem;letter-spacing:0.005rem;width:100%;padding-right:var(--ic-space-xs);padding-left:var(--ic-space-xs)}textarea{min-height:var(--ic-space-lg);resize:vertical;padding-top:0.375rem}input:focus,textarea:focus{border:0;outline:0}input:disabled,textarea:disabled{color:var(--ic-architectural-200)}input.readonly,textarea.readonly{color:var(--ic-color-primary-text)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=\"number\"]{-moz-appearance:textfield}textarea.no-resize{resize:none}.char-count-text{--ic-typography-color:var(--ic-color-secondary-text);padding-right:var(--ic-space-xxxs)}.no-left-pad{padding-left:0}::slotted([slot=\"icon\"]){fill:var(--ic-color-tertiary-text)}.has-value ::slotted([slot=\"icon\"]){fill:var(--ic-color-primary-text)}.char-count{margin-right:calc(-1 * var(--ic-space-xxxs))}.remaining-char-count-desc{position:absolute;left:-9999px}input[type=\"search\"]::-webkit-search-cancel-button,input[type=\"search\"]::-webkit-search-decoration,input[type=\"search\"]::-webkit-search-results-button,input[type=\"search\"]::-webkit-search-results-decoration{display:none}input[type=\"search\"].truncate-value{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (forced-colors: active){input.readonly,textarea.readonly{color:canvastext}.has-value ::slotted([slot=\"icon\"]){fill:currentcolor}}";
9
+ const icTextFieldCss = "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%;}body{margin:0}main{display:block}h1{font-size:2em;margin:0.67em 0}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace, monospace;font-size:1em;}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace, monospace;font-size:1em;}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible}button,select{text-transform:none}button,[type=\"button\"],[type=\"reset\"],[type=\"submit\"]{-webkit-appearance:button}button::-moz-focus-inner,[type=\"button\"]::-moz-focus-inner,[type=\"reset\"]::-moz-focus-inner,[type=\"submit\"]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=\"button\"]:-moz-focusring,[type=\"reset\"]:-moz-focusring,[type=\"submit\"]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:0.35em 0.75em 0.625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{vertical-align:baseline}textarea{overflow:auto}[type=\"checkbox\"],[type=\"radio\"]{box-sizing:border-box;padding:0;}[type=\"number\"]::-webkit-inner-spin-button,[type=\"number\"]::-webkit-outer-spin-button{height:auto}[type=\"search\"]{-webkit-appearance:textfield;outline-offset:-2px;}[type=\"search\"]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit;}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font-size:100%;font-style:inherit;vertical-align:baseline}:host{display:block}:host(.ic-text-field-full-width){width:100%}::-moz-placeholder{color:var(--ic-color-text-tertiary);opacity:1}::placeholder{color:var(--ic-color-text-tertiary);opacity:1}input,textarea{border:0;border-radius:var(--ic-border-radius);background-color:var(--ic-architectural-white);line-height:1.5rem;letter-spacing:0.005rem;width:100%;padding-right:var(--ic-space-xs);padding-left:var(--ic-space-xs)}textarea{min-height:var(--ic-space-lg);resize:vertical;padding-top:0.375rem}input:focus,textarea:focus{border:0;outline:0}input:disabled,textarea:disabled{color:var(--ic-architectural-200)}input.readonly,textarea.readonly{color:var(--ic-color-text-primary)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=\"number\"]{-moz-appearance:textfield}textarea.no-resize{resize:none}.char-count-text{--ic-typography-color:var(--ic-color-text-secondary);padding-right:var(--ic-space-xxxs)}.no-left-pad{padding-left:0}::slotted([slot=\"icon\"]){fill:var(--ic-color-text-tertiary)}.has-value ::slotted([slot=\"icon\"]){fill:var(--ic-color-text-primary)}.char-count{margin-right:calc(-1 * var(--ic-space-xxxs))}.remaining-char-count-desc{position:absolute;left:-9999px}input[type=\"search\"]::-webkit-search-cancel-button,input[type=\"search\"]::-webkit-search-decoration,input[type=\"search\"]::-webkit-search-results-button,input[type=\"search\"]::-webkit-search-results-decoration{display:none}input[type=\"search\"].truncate-value{width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}@media (forced-colors: active){input.readonly,textarea.readonly{color:canvastext}.has-value ::slotted([slot=\"icon\"]){fill:currentcolor}}";
10
10
 
11
11
  let inputIds = 0;
12
12
  const MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, "title"];
@@ -186,7 +186,7 @@ const TextField = /*@__PURE__*/ proxyCustomElement(class TextField extends HTMLE
186
186
  }
187
187
  render() {
188
188
  const { inputId, name, label, required, size, placeholder, helperText, hideCharCount, rows, resize, disabled, value, min, max, numChars, readonly, maxCharacters, maxCharactersWarning, maxCharactersReached, minCharacters, minCharactersUnattained, minValueUnattained, maxValueExceeded, validationStatus, validationText, validationInline, validationInlineInternal, spellcheck, inputmode, fullWidth, truncateValue, hiddenInput, } = this;
189
- const disabledMode = readonly ? true : disabled;
189
+ const disabledMode = readonly || disabled;
190
190
  const currentStatus = maxValueExceeded ||
191
191
  minValueUnattained ||
192
192
  minCharactersUnattained ||