@ukic/web-components 3.0.0-alpha.5 → 3.0.0-alpha.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/README.md +4 -4
  2. package/dist/cjs/core.cjs.js +1 -1
  3. package/dist/cjs/{helpers-529aaa3a.js → helpers-50fa27f6.js} +46 -29
  4. package/dist/cjs/helpers-50fa27f6.js.map +1 -0
  5. package/dist/cjs/ic-accordion-group.cjs.entry.js +1 -1
  6. package/dist/cjs/ic-accordion.cjs.entry.js +8 -1
  7. package/dist/cjs/ic-accordion.cjs.entry.js.map +1 -1
  8. package/dist/cjs/ic-alert.cjs.entry.js +3 -10
  9. package/dist/cjs/ic-alert.cjs.entry.js.map +1 -1
  10. package/dist/cjs/ic-back-to-top.cjs.entry.js +1 -1
  11. package/dist/cjs/ic-badge.cjs.entry.js +2 -2
  12. package/dist/cjs/ic-badge.cjs.entry.js.map +1 -1
  13. package/dist/cjs/ic-breadcrumb-group.cjs.entry.js +1 -1
  14. package/dist/cjs/ic-breadcrumb.cjs.entry.js +1 -1
  15. package/dist/cjs/ic-button_3.cjs.entry.js +10 -7
  16. package/dist/cjs/ic-button_3.cjs.entry.js.map +1 -1
  17. package/dist/cjs/ic-card-vertical.cjs.entry.js +26 -24
  18. package/dist/cjs/ic-card-vertical.cjs.entry.js.map +1 -1
  19. package/dist/cjs/ic-checkbox-group.cjs.entry.js +5 -1
  20. package/dist/cjs/ic-checkbox-group.cjs.entry.js.map +1 -1
  21. package/dist/cjs/ic-checkbox.cjs.entry.js +5 -1
  22. package/dist/cjs/ic-checkbox.cjs.entry.js.map +1 -1
  23. package/dist/cjs/ic-chip.cjs.entry.js +9 -4
  24. package/dist/cjs/ic-chip.cjs.entry.js.map +1 -1
  25. package/dist/cjs/ic-data-row.cjs.entry.js +1 -1
  26. package/dist/cjs/ic-dialog.cjs.entry.js +1 -1
  27. package/dist/cjs/ic-divider.cjs.entry.js +3 -3
  28. package/dist/cjs/ic-divider.cjs.entry.js.map +1 -1
  29. package/dist/cjs/ic-empty-state.cjs.entry.js +2 -12
  30. package/dist/cjs/ic-empty-state.cjs.entry.js.map +1 -1
  31. package/dist/cjs/ic-footer-link-group.cjs.entry.js +4 -5
  32. package/dist/cjs/ic-footer-link-group.cjs.entry.js.map +1 -1
  33. package/dist/cjs/ic-footer-link.cjs.entry.js +4 -5
  34. package/dist/cjs/ic-footer-link.cjs.entry.js.map +1 -1
  35. package/dist/cjs/ic-footer.cjs.entry.js +24 -14
  36. package/dist/cjs/ic-footer.cjs.entry.js.map +1 -1
  37. package/dist/cjs/ic-hero.cjs.entry.js +7 -15
  38. package/dist/cjs/ic-hero.cjs.entry.js.map +1 -1
  39. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js +3 -3
  40. package/dist/cjs/ic-horizontal-scroll.cjs.entry.js.map +1 -1
  41. package/dist/cjs/ic-input-component-container_3.cjs.entry.js +39 -24
  42. package/dist/cjs/ic-input-component-container_3.cjs.entry.js.map +1 -1
  43. package/dist/cjs/ic-input-label_2.cjs.entry.js +1 -1
  44. package/dist/cjs/ic-link.cjs.entry.js +9 -6
  45. package/dist/cjs/ic-link.cjs.entry.js.map +1 -1
  46. package/dist/cjs/ic-menu-group.cjs.entry.js +1 -1
  47. package/dist/cjs/ic-menu-item.cjs.entry.js +7 -1
  48. package/dist/cjs/ic-menu-item.cjs.entry.js.map +1 -1
  49. package/dist/cjs/ic-navigation-button.cjs.entry.js +6 -7
  50. package/dist/cjs/ic-navigation-button.cjs.entry.js.map +1 -1
  51. package/dist/cjs/ic-navigation-group.cjs.entry.js +5 -6
  52. package/dist/cjs/ic-navigation-group.cjs.entry.js.map +1 -1
  53. package/dist/cjs/ic-navigation-item.cjs.entry.js +4 -4
  54. package/dist/cjs/ic-navigation-item.cjs.entry.js.map +1 -1
  55. package/dist/cjs/ic-navigation-menu.cjs.entry.js +1 -1
  56. package/dist/cjs/ic-page-header.cjs.entry.js +1 -1
  57. package/dist/cjs/ic-pagination-item.cjs.entry.js +5 -1
  58. package/dist/cjs/ic-pagination-item.cjs.entry.js.map +1 -1
  59. package/dist/cjs/ic-pagination.cjs.entry.js +5 -1
  60. package/dist/cjs/ic-pagination.cjs.entry.js.map +1 -1
  61. package/dist/cjs/ic-popover-menu.cjs.entry.js +1 -1
  62. package/dist/cjs/ic-radio-group.cjs.entry.js +9 -1
  63. package/dist/cjs/ic-radio-group.cjs.entry.js.map +1 -1
  64. package/dist/cjs/ic-radio-option.cjs.entry.js +5 -1
  65. package/dist/cjs/ic-radio-option.cjs.entry.js.map +1 -1
  66. package/dist/cjs/ic-search-bar.cjs.entry.js +37 -29
  67. package/dist/cjs/ic-search-bar.cjs.entry.js.map +1 -1
  68. package/dist/cjs/ic-select.cjs.entry.js +52 -34
  69. package/dist/cjs/ic-select.cjs.entry.js.map +1 -1
  70. package/dist/cjs/ic-side-navigation.cjs.entry.js +5 -5
  71. package/dist/cjs/ic-side-navigation.cjs.entry.js.map +1 -1
  72. package/dist/cjs/ic-status-tag.cjs.entry.js +1 -1
  73. package/dist/cjs/ic-step.cjs.entry.js +1 -1
  74. package/dist/cjs/ic-stepper.cjs.entry.js +1 -1
  75. package/dist/cjs/ic-switch.cjs.entry.js +6 -2
  76. package/dist/cjs/ic-switch.cjs.entry.js.map +1 -1
  77. package/dist/cjs/ic-tab-group.cjs.entry.js +1 -1
  78. package/dist/cjs/ic-tab-panel.cjs.entry.js +1 -1
  79. package/dist/cjs/ic-tab.cjs.entry.js +5 -2
  80. package/dist/cjs/ic-tab.cjs.entry.js.map +1 -1
  81. package/dist/cjs/ic-text-field.cjs.entry.js +26 -9
  82. package/dist/cjs/ic-text-field.cjs.entry.js.map +1 -1
  83. package/dist/cjs/ic-theme.cjs.entry.js +20 -20
  84. package/dist/cjs/ic-theme.cjs.entry.js.map +1 -1
  85. package/dist/cjs/ic-toast.cjs.entry.js +1 -1
  86. package/dist/cjs/ic-toggle-button-group.cjs.entry.js +3 -0
  87. package/dist/cjs/ic-toggle-button-group.cjs.entry.js.map +1 -1
  88. package/dist/cjs/ic-toggle-button.cjs.entry.js +7 -1
  89. package/dist/cjs/ic-toggle-button.cjs.entry.js.map +1 -1
  90. package/dist/cjs/ic-top-navigation.cjs.entry.js +10 -6
  91. package/dist/cjs/ic-top-navigation.cjs.entry.js.map +1 -1
  92. package/dist/cjs/ic-typography.cjs.entry.js +1 -1
  93. package/dist/cjs/index-f982899d.js +4 -4
  94. package/dist/cjs/loader.cjs.js +1 -1
  95. package/dist/collection/ag-theme-icds.css +32 -31
  96. package/dist/collection/components/ic-accordion/ic-accordion.js +10 -1
  97. package/dist/collection/components/ic-accordion/ic-accordion.js.map +1 -1
  98. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js +3 -0
  99. package/dist/collection/components/ic-accordion/test/basic/ic-accordion.spec.js.map +1 -1
  100. package/dist/collection/components/ic-alert/ic-alert.js +5 -12
  101. package/dist/collection/components/ic-alert/ic-alert.js.map +1 -1
  102. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js +21 -3
  103. package/dist/collection/components/ic-alert/test/basic/ic-alert.spec.js.map +1 -1
  104. package/dist/collection/components/ic-badge/ic-badge.js +2 -2
  105. package/dist/collection/components/ic-badge/ic-badge.js.map +1 -1
  106. package/dist/collection/components/ic-button/ic-button.css +40 -0
  107. package/dist/collection/components/ic-button/ic-button.js +12 -9
  108. package/dist/collection/components/ic-button/ic-button.js.map +1 -1
  109. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js +7 -7
  110. package/dist/collection/components/ic-button/test/basic/ic-button.spec.js.map +1 -1
  111. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js +33 -28
  112. package/dist/collection/components/ic-card-vertical/ic-card-vertical.js.map +1 -1
  113. package/dist/collection/components/ic-card-vertical/test/basic/ic-card-vertical.spec.js +44 -3
  114. package/dist/collection/components/ic-card-vertical/test/basic/ic-card-vertical.spec.js.map +1 -1
  115. package/dist/collection/components/ic-checkbox/ic-checkbox.js +6 -0
  116. package/dist/collection/components/ic-checkbox/ic-checkbox.js.map +1 -1
  117. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js +6 -0
  118. package/dist/collection/components/ic-checkbox-group/ic-checkbox-group.js.map +1 -1
  119. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js +3 -0
  120. package/dist/collection/components/ic-checkbox-group/test/basic/ic-checkbox-group.spec.js.map +1 -1
  121. package/dist/collection/components/ic-chip/ic-chip.js +27 -2
  122. package/dist/collection/components/ic-chip/ic-chip.js.map +1 -1
  123. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js +3 -0
  124. package/dist/collection/components/ic-chip/test/basic/ic-chip.spec.js.map +1 -1
  125. package/dist/collection/components/ic-divider/ic-divider.js +8 -8
  126. package/dist/collection/components/ic-divider/ic-divider.js.map +1 -1
  127. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js +4 -4
  128. package/dist/collection/components/ic-divider/test/basic/ic-divider.spec.js.map +1 -1
  129. package/dist/collection/components/ic-empty-state/ic-empty-state.js +3 -13
  130. package/dist/collection/components/ic-empty-state/ic-empty-state.js.map +1 -1
  131. package/dist/collection/components/ic-footer/ic-footer.css +2 -2
  132. package/dist/collection/components/ic-footer/ic-footer.js +26 -16
  133. package/dist/collection/components/ic-footer/ic-footer.js.map +1 -1
  134. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js +43 -2
  135. package/dist/collection/components/ic-footer/test/basic/ic-footer.spec.js.map +1 -1
  136. package/dist/collection/components/ic-footer-link/ic-footer-link.js +6 -7
  137. package/dist/collection/components/ic-footer-link/ic-footer-link.js.map +1 -1
  138. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js +1 -1
  139. package/dist/collection/components/ic-footer-link/test/basic/ic-footer-link.spec.js.map +1 -1
  140. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js +6 -7
  141. package/dist/collection/components/ic-footer-link-group/ic-footer-link-group.js.map +1 -1
  142. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js +1 -1
  143. package/dist/collection/components/ic-footer-link-group/test/basic/ic-footer-link-group.spec.js.map +1 -1
  144. package/dist/collection/components/ic-hero/ic-hero.css +3 -3
  145. package/dist/collection/components/ic-hero/ic-hero.js +10 -18
  146. package/dist/collection/components/ic-hero/ic-hero.js.map +1 -1
  147. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js +23 -5
  148. package/dist/collection/components/ic-hero/test/basic/ic-hero.spec.js.map +1 -1
  149. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js +6 -6
  150. package/dist/collection/components/ic-horizontal-scroll/ic-horizontal-scroll.js.map +1 -1
  151. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js +16 -11
  152. package/dist/collection/components/ic-input-component-container/ic-input-component-container.js.map +1 -1
  153. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js +30 -3
  154. package/dist/collection/components/ic-input-component-container/test/basic/ic-input-component-container.spec.js.map +1 -1
  155. package/dist/collection/components/ic-link/ic-link.js +12 -9
  156. package/dist/collection/components/ic-link/ic-link.js.map +1 -1
  157. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js +5 -5
  158. package/dist/collection/components/ic-link/test/basic/ic-link.spec.js.map +1 -1
  159. package/dist/collection/components/ic-menu/ic-menu.css +6 -0
  160. package/dist/collection/components/ic-menu/ic-menu.js +42 -15
  161. package/dist/collection/components/ic-menu/ic-menu.js.map +1 -1
  162. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js +9 -9
  163. package/dist/collection/components/ic-menu/test/basic/ic-menu.spec.js.map +1 -1
  164. package/dist/collection/components/ic-menu-item/ic-menu-item.js +9 -0
  165. package/dist/collection/components/ic-menu-item/ic-menu-item.js.map +1 -1
  166. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js +13 -0
  167. package/dist/collection/components/ic-menu-item/test/basic/ic-menu-item.spec.js.map +1 -1
  168. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js +9 -10
  169. package/dist/collection/components/ic-navigation-button/ic-navigation-button.js.map +1 -1
  170. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js +2 -2
  171. package/dist/collection/components/ic-navigation-button/test/basic/ic-navigation-button.spec.js.map +1 -1
  172. package/dist/collection/components/ic-navigation-group/ic-navigation-group.css +1 -1
  173. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js +6 -7
  174. package/dist/collection/components/ic-navigation-group/ic-navigation-group.js.map +1 -1
  175. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js +3 -3
  176. package/dist/collection/components/ic-navigation-group/test/basic/ic-navigation-group.spec.js.map +1 -1
  177. package/dist/collection/components/ic-navigation-item/ic-navigation-item.css +9 -9
  178. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js +5 -5
  179. package/dist/collection/components/ic-navigation-item/ic-navigation-item.js.map +1 -1
  180. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js +3 -3
  181. package/dist/collection/components/ic-navigation-item/test/basic/ic-navigation-item.spec.js.map +1 -1
  182. package/dist/collection/components/ic-pagination/ic-pagination.js +6 -0
  183. package/dist/collection/components/ic-pagination/ic-pagination.js.map +1 -1
  184. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js +10 -0
  185. package/dist/collection/components/ic-pagination/test/basic/ic-pagination.spec.js.map +1 -1
  186. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js +6 -0
  187. package/dist/collection/components/ic-pagination-item/ic-pagination-item.js.map +1 -1
  188. package/dist/collection/components/ic-pagination-item/test/basic/ic-pagination-item.spec.js +3 -0
  189. package/dist/collection/components/ic-pagination-item/test/basic/ic-pagination-item.spec.js.map +1 -1
  190. package/dist/collection/components/ic-radio-group/ic-radio-group.js +8 -0
  191. package/dist/collection/components/ic-radio-group/ic-radio-group.js.map +1 -1
  192. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js +6 -0
  193. package/dist/collection/components/ic-radio-group/test/basic/ic-radio-group.spec.js.map +1 -1
  194. package/dist/collection/components/ic-radio-option/ic-radio-option.js +6 -0
  195. package/dist/collection/components/ic-radio-option/ic-radio-option.js.map +1 -1
  196. package/dist/collection/components/ic-search-bar/ic-search-bar.css +66 -4
  197. package/dist/collection/components/ic-search-bar/ic-search-bar.js +60 -29
  198. package/dist/collection/components/ic-search-bar/ic-search-bar.js.map +1 -1
  199. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js +63 -94
  200. package/dist/collection/components/ic-search-bar/test/basic/ic-search-bar.spec.js.map +1 -1
  201. package/dist/collection/components/ic-select/ic-select.js +56 -36
  202. package/dist/collection/components/ic-select/ic-select.js.map +1 -1
  203. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js +74 -0
  204. package/dist/collection/components/ic-select/test/basic/ic-select.spec.js.map +1 -1
  205. package/dist/collection/components/ic-side-navigation/ic-side-navigation.css +2 -2
  206. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js +7 -7
  207. package/dist/collection/components/ic-side-navigation/ic-side-navigation.js.map +1 -1
  208. package/dist/collection/components/ic-side-navigation/ic-side-navigation.types.js.map +1 -1
  209. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js +3 -3
  210. package/dist/collection/components/ic-side-navigation/test/basic/ic-side-navigation.spec.js.map +1 -1
  211. package/dist/collection/components/ic-switch/ic-switch.js +6 -0
  212. package/dist/collection/components/ic-switch/ic-switch.js.map +1 -1
  213. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js +3 -0
  214. package/dist/collection/components/ic-switch/test/basic/ic-switch.spec.js.map +1 -1
  215. package/dist/collection/components/ic-tab/ic-tab.js +6 -0
  216. package/dist/collection/components/ic-tab/ic-tab.js.map +1 -1
  217. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js +16 -0
  218. package/dist/collection/components/ic-tab/test/basic/ic-tab.spec.js.map +1 -1
  219. package/dist/collection/components/ic-text-field/ic-text-field.js +30 -11
  220. package/dist/collection/components/ic-text-field/ic-text-field.js.map +1 -1
  221. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js +26 -12
  222. package/dist/collection/components/ic-text-field/test/basic/ic-text-field.input.spec.js.map +1 -1
  223. package/dist/collection/components/ic-theme/ic-theme.js +31 -31
  224. package/dist/collection/components/ic-theme/ic-theme.js.map +1 -1
  225. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js +7 -7
  226. package/dist/collection/components/ic-theme/test/basic/ic-theme.e2e.js.map +1 -1
  227. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js +11 -11
  228. package/dist/collection/components/ic-theme/test/basic/ic-theme.spec.js.map +1 -1
  229. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js +9 -0
  230. package/dist/collection/components/ic-toggle-button/ic-toggle-button.js.map +1 -1
  231. package/dist/collection/components/ic-toggle-button/test/basic/ic-toggle-button.spec.js +10 -0
  232. package/dist/collection/components/ic-toggle-button/test/basic/ic-toggle-button.spec.js.map +1 -1
  233. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js +3 -0
  234. package/dist/collection/components/ic-toggle-button-group/ic-toggle-button-group.js.map +1 -1
  235. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js +104 -0
  236. package/dist/collection/components/ic-toggle-button-group/test/ic-toggle-button-group.spec.js.map +1 -1
  237. package/dist/collection/components/ic-top-navigation/ic-top-navigation.css +6 -2
  238. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js +12 -8
  239. package/dist/collection/components/ic-top-navigation/ic-top-navigation.js.map +1 -1
  240. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js +3 -3
  241. package/dist/collection/components/ic-top-navigation/test/basic/ic-top-navigation.spec.js.map +1 -1
  242. package/dist/collection/testspec.setup.js +14 -0
  243. package/dist/collection/testspec.setup.js.map +1 -1
  244. package/dist/collection/utils/helpers.js +35 -20
  245. package/dist/collection/utils/helpers.js.map +1 -1
  246. package/dist/collection/utils/types.js +6 -6
  247. package/dist/collection/utils/types.js.map +1 -1
  248. package/dist/components/helpers.js +42 -26
  249. package/dist/components/helpers.js.map +1 -1
  250. package/dist/components/ic-accordion.js +9 -1
  251. package/dist/components/ic-accordion.js.map +1 -1
  252. package/dist/components/ic-alert.js +4 -11
  253. package/dist/components/ic-alert.js.map +1 -1
  254. package/dist/components/ic-badge.js +2 -2
  255. package/dist/components/ic-badge.js.map +1 -1
  256. package/dist/components/ic-button2.js +11 -8
  257. package/dist/components/ic-button2.js.map +1 -1
  258. package/dist/components/ic-card-vertical.js +30 -26
  259. package/dist/components/ic-card-vertical.js.map +1 -1
  260. package/dist/components/ic-checkbox-group.js +5 -0
  261. package/dist/components/ic-checkbox-group.js.map +1 -1
  262. package/dist/components/ic-checkbox.js +5 -0
  263. package/dist/components/ic-checkbox.js.map +1 -1
  264. package/dist/components/ic-chip.js +11 -4
  265. package/dist/components/ic-chip.js.map +1 -1
  266. package/dist/components/ic-divider2.js +4 -4
  267. package/dist/components/ic-divider2.js.map +1 -1
  268. package/dist/components/ic-empty-state.js +3 -13
  269. package/dist/components/ic-empty-state.js.map +1 -1
  270. package/dist/components/ic-footer-link-group.js +5 -6
  271. package/dist/components/ic-footer-link-group.js.map +1 -1
  272. package/dist/components/ic-footer-link.js +5 -6
  273. package/dist/components/ic-footer-link.js.map +1 -1
  274. package/dist/components/ic-footer.js +25 -15
  275. package/dist/components/ic-footer.js.map +1 -1
  276. package/dist/components/ic-hero.js +9 -17
  277. package/dist/components/ic-hero.js.map +1 -1
  278. package/dist/components/ic-horizontal-scroll2.js +3 -3
  279. package/dist/components/ic-horizontal-scroll2.js.map +1 -1
  280. package/dist/components/ic-input-component-container2.js +15 -11
  281. package/dist/components/ic-input-component-container2.js.map +1 -1
  282. package/dist/components/ic-link2.js +10 -7
  283. package/dist/components/ic-link2.js.map +1 -1
  284. package/dist/components/ic-menu-item2.js +9 -1
  285. package/dist/components/ic-menu-item2.js.map +1 -1
  286. package/dist/components/ic-menu2.js +28 -15
  287. package/dist/components/ic-menu2.js.map +1 -1
  288. package/dist/components/ic-navigation-button.js +7 -8
  289. package/dist/components/ic-navigation-button.js.map +1 -1
  290. package/dist/components/ic-navigation-group.js +6 -7
  291. package/dist/components/ic-navigation-group.js.map +1 -1
  292. package/dist/components/ic-navigation-item.js +5 -5
  293. package/dist/components/ic-navigation-item.js.map +1 -1
  294. package/dist/components/ic-pagination-item2.js +6 -1
  295. package/dist/components/ic-pagination-item2.js.map +1 -1
  296. package/dist/components/ic-pagination.js +5 -0
  297. package/dist/components/ic-pagination.js.map +1 -1
  298. package/dist/components/ic-radio-group.js +8 -0
  299. package/dist/components/ic-radio-group.js.map +1 -1
  300. package/dist/components/ic-radio-option.js +6 -1
  301. package/dist/components/ic-radio-option.js.map +1 -1
  302. package/dist/components/ic-search-bar.js +52 -54
  303. package/dist/components/ic-search-bar.js.map +1 -1
  304. package/dist/components/ic-select.js +54 -35
  305. package/dist/components/ic-select.js.map +1 -1
  306. package/dist/components/ic-side-navigation.js +6 -6
  307. package/dist/components/ic-side-navigation.js.map +1 -1
  308. package/dist/components/ic-stepper.js +1 -1
  309. package/dist/components/ic-switch.js +8 -3
  310. package/dist/components/ic-switch.js.map +1 -1
  311. package/dist/components/ic-tab.js +5 -2
  312. package/dist/components/ic-tab.js.map +1 -1
  313. package/dist/components/ic-text-field.js +371 -1
  314. package/dist/components/ic-text-field.js.map +1 -1
  315. package/dist/components/ic-theme.js +22 -22
  316. package/dist/components/ic-theme.js.map +1 -1
  317. package/dist/components/ic-toggle-button-group.js +3 -0
  318. package/dist/components/ic-toggle-button-group.js.map +1 -1
  319. package/dist/components/ic-toggle-button.js +9 -1
  320. package/dist/components/ic-toggle-button.js.map +1 -1
  321. package/dist/components/ic-top-navigation.js +11 -7
  322. package/dist/components/ic-top-navigation.js.map +1 -1
  323. package/dist/core/ag-theme-icds.css +32 -31
  324. package/dist/core/core.css +78 -46
  325. package/dist/core/core.esm.js +1 -1
  326. package/dist/core/core.esm.js.map +1 -1
  327. package/dist/core/p-050e3e36.entry.js +2 -0
  328. package/dist/core/p-050e3e36.entry.js.map +1 -0
  329. package/dist/core/{p-f580f0ce.entry.js → p-08a82b71.entry.js} +2 -2
  330. package/dist/core/p-08a82b71.entry.js.map +1 -0
  331. package/dist/core/p-12bd8ade.entry.js +2 -0
  332. package/dist/core/p-12bd8ade.entry.js.map +1 -0
  333. package/dist/core/{p-d3263ed9.entry.js → p-13637d3f.entry.js} +2 -2
  334. package/dist/core/p-13637d3f.entry.js.map +1 -0
  335. package/dist/core/{p-ba37e169.entry.js → p-1425c78b.entry.js} +2 -2
  336. package/dist/core/p-1425c78b.entry.js.map +1 -0
  337. package/dist/core/{p-48463a79.entry.js → p-16df8bcf.entry.js} +2 -2
  338. package/dist/core/p-16df8bcf.entry.js.map +1 -0
  339. package/dist/core/{p-e107f362.entry.js → p-1b1f7523.entry.js} +2 -2
  340. package/dist/core/{p-12f72d83.entry.js → p-2179e015.entry.js} +2 -2
  341. package/dist/core/p-273f9b03.entry.js +2 -0
  342. package/dist/core/p-273f9b03.entry.js.map +1 -0
  343. package/dist/core/{p-b06939fa.entry.js → p-27933dfe.entry.js} +2 -2
  344. package/dist/core/{p-98816f52.entry.js → p-2aca1bac.entry.js} +2 -2
  345. package/dist/core/p-30f91e2e.entry.js +2 -0
  346. package/dist/core/p-30f91e2e.entry.js.map +1 -0
  347. package/dist/core/p-3361ac8f.entry.js +2 -0
  348. package/dist/core/p-3361ac8f.entry.js.map +1 -0
  349. package/dist/core/{p-a91b0212.entry.js → p-34e89ebf.entry.js} +2 -2
  350. package/dist/core/p-353893b7.entry.js +2 -0
  351. package/dist/core/p-353893b7.entry.js.map +1 -0
  352. package/dist/core/p-3645c4e6.entry.js +2 -0
  353. package/dist/core/p-3645c4e6.entry.js.map +1 -0
  354. package/dist/core/p-369ff74c.entry.js +2 -0
  355. package/dist/core/p-369ff74c.entry.js.map +1 -0
  356. package/dist/core/p-46dd7413.entry.js +2 -0
  357. package/dist/core/p-46dd7413.entry.js.map +1 -0
  358. package/dist/core/{p-7cba80ac.entry.js → p-4e57c7ba.entry.js} +2 -2
  359. package/dist/core/p-4e57c7ba.entry.js.map +1 -0
  360. package/dist/core/p-51990f23.entry.js +2 -0
  361. package/dist/core/p-51990f23.entry.js.map +1 -0
  362. package/dist/core/{p-15fd6539.entry.js → p-5347f687.entry.js} +2 -2
  363. package/dist/core/{p-6bb3ef22.entry.js → p-538f1bb9.entry.js} +2 -2
  364. package/dist/core/p-538f1bb9.entry.js.map +1 -0
  365. package/dist/core/{p-60d458e5.entry.js → p-5479be2b.entry.js} +2 -2
  366. package/dist/core/p-5479be2b.entry.js.map +1 -0
  367. package/dist/core/{p-d987bdc0.entry.js → p-5801598f.entry.js} +2 -2
  368. package/dist/core/p-5801598f.entry.js.map +1 -0
  369. package/dist/core/{p-c7e01fcd.entry.js → p-5b118dec.entry.js} +2 -2
  370. package/dist/core/p-5b118dec.entry.js.map +1 -0
  371. package/dist/core/p-5d89525e.entry.js +2 -0
  372. package/dist/core/p-5d89525e.entry.js.map +1 -0
  373. package/dist/core/{p-81f80487.entry.js → p-5dcafe90.entry.js} +2 -2
  374. package/dist/core/p-5dcafe90.entry.js.map +1 -0
  375. package/dist/core/{p-c4f32f77.entry.js → p-5e694b17.entry.js} +2 -2
  376. package/dist/core/{p-c4f32f77.entry.js.map → p-5e694b17.entry.js.map} +1 -1
  377. package/dist/core/{p-2223c7ee.entry.js → p-6331782f.entry.js} +2 -2
  378. package/dist/core/{p-c5d3c71e.entry.js → p-6a5d58bc.entry.js} +2 -2
  379. package/dist/core/p-6d0c5a77.entry.js +2 -0
  380. package/dist/core/p-6d0c5a77.entry.js.map +1 -0
  381. package/dist/core/p-6f16a69e.entry.js +2 -0
  382. package/dist/core/p-6f16a69e.entry.js.map +1 -0
  383. package/dist/core/{p-85d33e38.entry.js → p-7a16046a.entry.js} +2 -2
  384. package/dist/core/p-7a16046a.entry.js.map +1 -0
  385. package/dist/core/p-7c0ff8cf.entry.js +2 -0
  386. package/dist/core/p-7c0ff8cf.entry.js.map +1 -0
  387. package/dist/core/p-7c39afb5.entry.js +2 -0
  388. package/dist/core/p-7c39afb5.entry.js.map +1 -0
  389. package/dist/core/{p-f069f50e.entry.js → p-7e546e88.entry.js} +2 -2
  390. package/dist/core/{p-3a4000d8.entry.js → p-8dda6121.entry.js} +2 -2
  391. package/dist/core/{p-c43d676b.entry.js → p-9505b0f1.entry.js} +2 -2
  392. package/dist/core/{p-685d6aa9.entry.js → p-a25d535a.entry.js} +2 -2
  393. package/dist/core/p-a519e9a6.entry.js +2 -0
  394. package/dist/core/p-a519e9a6.entry.js.map +1 -0
  395. package/dist/core/p-b052e67a.entry.js +2 -0
  396. package/dist/core/p-b052e67a.entry.js.map +1 -0
  397. package/dist/core/p-bafcbecc.entry.js +2 -0
  398. package/dist/core/p-bafcbecc.entry.js.map +1 -0
  399. package/dist/core/{p-c82240b7.entry.js → p-bdbce1a0.entry.js} +2 -2
  400. package/dist/core/p-c68d98f8.entry.js +2 -0
  401. package/dist/core/p-c68d98f8.entry.js.map +1 -0
  402. package/dist/core/{p-c563d479.entry.js → p-cae08ac2.entry.js} +2 -2
  403. package/dist/core/p-cae08ac2.entry.js.map +1 -0
  404. package/dist/core/{p-cdbc3414.entry.js → p-d6ce4473.entry.js} +2 -2
  405. package/dist/core/{p-78f46cf8.entry.js → p-dcdfe5f9.entry.js} +2 -2
  406. package/dist/core/{p-4fea4610.entry.js → p-e9c078fa.entry.js} +2 -2
  407. package/dist/core/p-e9c078fa.entry.js.map +1 -0
  408. package/dist/core/p-eafa4df2.js +2 -0
  409. package/dist/core/p-eafa4df2.js.map +1 -0
  410. package/dist/core/p-eb132c44.entry.js +2 -0
  411. package/dist/core/p-eb132c44.entry.js.map +1 -0
  412. package/dist/core/p-ebf2b874.entry.js +2 -0
  413. package/dist/core/p-ebf2b874.entry.js.map +1 -0
  414. package/dist/core/{p-97e8246c.entry.js → p-eec110a7.entry.js} +2 -2
  415. package/dist/core/{p-03dc6b93.entry.js → p-f1b7e4f4.entry.js} +2 -2
  416. package/dist/core/{p-175baf98.entry.js → p-f8890135.entry.js} +2 -2
  417. package/dist/esm/core.js +1 -1
  418. package/dist/esm/{helpers-7bf8c67f.js → helpers-8565b5c5.js} +43 -27
  419. package/dist/esm/helpers-8565b5c5.js.map +1 -0
  420. package/dist/esm/ic-accordion-group.entry.js +1 -1
  421. package/dist/esm/ic-accordion.entry.js +8 -1
  422. package/dist/esm/ic-accordion.entry.js.map +1 -1
  423. package/dist/esm/ic-alert.entry.js +4 -11
  424. package/dist/esm/ic-alert.entry.js.map +1 -1
  425. package/dist/esm/ic-back-to-top.entry.js +1 -1
  426. package/dist/esm/ic-badge.entry.js +2 -2
  427. package/dist/esm/ic-badge.entry.js.map +1 -1
  428. package/dist/esm/ic-breadcrumb-group.entry.js +1 -1
  429. package/dist/esm/ic-breadcrumb.entry.js +1 -1
  430. package/dist/esm/ic-button_3.entry.js +10 -7
  431. package/dist/esm/ic-button_3.entry.js.map +1 -1
  432. package/dist/esm/ic-card-vertical.entry.js +27 -25
  433. package/dist/esm/ic-card-vertical.entry.js.map +1 -1
  434. package/dist/esm/ic-checkbox-group.entry.js +5 -1
  435. package/dist/esm/ic-checkbox-group.entry.js.map +1 -1
  436. package/dist/esm/ic-checkbox.entry.js +5 -1
  437. package/dist/esm/ic-checkbox.entry.js.map +1 -1
  438. package/dist/esm/ic-chip.entry.js +9 -4
  439. package/dist/esm/ic-chip.entry.js.map +1 -1
  440. package/dist/esm/ic-data-row.entry.js +1 -1
  441. package/dist/esm/ic-dialog.entry.js +1 -1
  442. package/dist/esm/ic-divider.entry.js +3 -3
  443. package/dist/esm/ic-divider.entry.js.map +1 -1
  444. package/dist/esm/ic-empty-state.entry.js +3 -13
  445. package/dist/esm/ic-empty-state.entry.js.map +1 -1
  446. package/dist/esm/ic-footer-link-group.entry.js +4 -5
  447. package/dist/esm/ic-footer-link-group.entry.js.map +1 -1
  448. package/dist/esm/ic-footer-link.entry.js +4 -5
  449. package/dist/esm/ic-footer-link.entry.js.map +1 -1
  450. package/dist/esm/ic-footer.entry.js +24 -14
  451. package/dist/esm/ic-footer.entry.js.map +1 -1
  452. package/dist/esm/ic-hero.entry.js +8 -16
  453. package/dist/esm/ic-hero.entry.js.map +1 -1
  454. package/dist/esm/ic-horizontal-scroll.entry.js +3 -3
  455. package/dist/esm/ic-horizontal-scroll.entry.js.map +1 -1
  456. package/dist/esm/ic-input-component-container_3.entry.js +40 -25
  457. package/dist/esm/ic-input-component-container_3.entry.js.map +1 -1
  458. package/dist/esm/ic-input-label_2.entry.js +1 -1
  459. package/dist/esm/ic-link.entry.js +9 -6
  460. package/dist/esm/ic-link.entry.js.map +1 -1
  461. package/dist/esm/ic-menu-group.entry.js +1 -1
  462. package/dist/esm/ic-menu-item.entry.js +7 -1
  463. package/dist/esm/ic-menu-item.entry.js.map +1 -1
  464. package/dist/esm/ic-navigation-button.entry.js +6 -7
  465. package/dist/esm/ic-navigation-button.entry.js.map +1 -1
  466. package/dist/esm/ic-navigation-group.entry.js +5 -6
  467. package/dist/esm/ic-navigation-group.entry.js.map +1 -1
  468. package/dist/esm/ic-navigation-item.entry.js +4 -4
  469. package/dist/esm/ic-navigation-item.entry.js.map +1 -1
  470. package/dist/esm/ic-navigation-menu.entry.js +1 -1
  471. package/dist/esm/ic-page-header.entry.js +1 -1
  472. package/dist/esm/ic-pagination-item.entry.js +5 -1
  473. package/dist/esm/ic-pagination-item.entry.js.map +1 -1
  474. package/dist/esm/ic-pagination.entry.js +5 -1
  475. package/dist/esm/ic-pagination.entry.js.map +1 -1
  476. package/dist/esm/ic-popover-menu.entry.js +1 -1
  477. package/dist/esm/ic-radio-group.entry.js +9 -1
  478. package/dist/esm/ic-radio-group.entry.js.map +1 -1
  479. package/dist/esm/ic-radio-option.entry.js +5 -1
  480. package/dist/esm/ic-radio-option.entry.js.map +1 -1
  481. package/dist/esm/ic-search-bar.entry.js +37 -29
  482. package/dist/esm/ic-search-bar.entry.js.map +1 -1
  483. package/dist/esm/ic-select.entry.js +52 -34
  484. package/dist/esm/ic-select.entry.js.map +1 -1
  485. package/dist/esm/ic-side-navigation.entry.js +5 -5
  486. package/dist/esm/ic-side-navigation.entry.js.map +1 -1
  487. package/dist/esm/ic-status-tag.entry.js +1 -1
  488. package/dist/esm/ic-step.entry.js +1 -1
  489. package/dist/esm/ic-stepper.entry.js +1 -1
  490. package/dist/esm/ic-switch.entry.js +6 -2
  491. package/dist/esm/ic-switch.entry.js.map +1 -1
  492. package/dist/esm/ic-tab-group.entry.js +1 -1
  493. package/dist/esm/ic-tab-panel.entry.js +1 -1
  494. package/dist/esm/ic-tab.entry.js +5 -2
  495. package/dist/esm/ic-tab.entry.js.map +1 -1
  496. package/dist/esm/ic-text-field.entry.js +26 -9
  497. package/dist/esm/ic-text-field.entry.js.map +1 -1
  498. package/dist/esm/ic-theme.entry.js +20 -20
  499. package/dist/esm/ic-theme.entry.js.map +1 -1
  500. package/dist/esm/ic-toast.entry.js +1 -1
  501. package/dist/esm/ic-toggle-button-group.entry.js +3 -0
  502. package/dist/esm/ic-toggle-button-group.entry.js.map +1 -1
  503. package/dist/esm/ic-toggle-button.entry.js +7 -1
  504. package/dist/esm/ic-toggle-button.entry.js.map +1 -1
  505. package/dist/esm/ic-top-navigation.entry.js +10 -6
  506. package/dist/esm/ic-top-navigation.entry.js.map +1 -1
  507. package/dist/esm/ic-typography.entry.js +1 -1
  508. package/dist/esm/index-d1d2c456.js +4 -4
  509. package/dist/esm/loader.js +1 -1
  510. package/dist/types/components/ic-accordion/ic-accordion.d.ts +2 -0
  511. package/dist/types/components/ic-alert/ic-alert.d.ts +0 -1
  512. package/dist/types/components/ic-button/ic-button.d.ts +2 -2
  513. package/dist/types/components/ic-card-vertical/ic-card-vertical.d.ts +3 -3
  514. package/dist/types/components/ic-checkbox/ic-checkbox.d.ts +1 -0
  515. package/dist/types/components/ic-checkbox-group/ic-checkbox-group.d.ts +1 -0
  516. package/dist/types/components/ic-chip/ic-chip.d.ts +5 -0
  517. package/dist/types/components/ic-divider/ic-divider.d.ts +4 -4
  518. package/dist/types/components/ic-empty-state/ic-empty-state.d.ts +0 -1
  519. package/dist/types/components/ic-footer/ic-footer.d.ts +4 -3
  520. package/dist/types/components/ic-footer-link/ic-footer-link.d.ts +3 -3
  521. package/dist/types/components/ic-footer-link-group/ic-footer-link-group.d.ts +3 -3
  522. package/dist/types/components/ic-hero/ic-hero.d.ts +3 -4
  523. package/dist/types/components/ic-horizontal-scroll/ic-horizontal-scroll.d.ts +2 -2
  524. package/dist/types/components/ic-input-component-container/ic-input-component-container.d.ts +2 -1
  525. package/dist/types/components/ic-link/ic-link.d.ts +2 -2
  526. package/dist/types/components/ic-menu/ic-menu.d.ts +7 -2
  527. package/dist/types/components/ic-menu-item/ic-menu-item.d.ts +1 -0
  528. package/dist/types/components/ic-navigation-button/ic-navigation-button.d.ts +3 -3
  529. package/dist/types/components/ic-navigation-group/ic-navigation-group.d.ts +3 -3
  530. package/dist/types/components/ic-navigation-item/ic-navigation-item.d.ts +3 -3
  531. package/dist/types/components/ic-pagination/ic-pagination.d.ts +1 -0
  532. package/dist/types/components/ic-pagination-item/ic-pagination-item.d.ts +1 -0
  533. package/dist/types/components/ic-radio-option/ic-radio-option.d.ts +1 -0
  534. package/dist/types/components/ic-search-bar/ic-search-bar.d.ts +10 -2
  535. package/dist/types/components/ic-select/ic-select.d.ts +6 -4
  536. package/dist/types/components/ic-side-navigation/ic-side-navigation.d.ts +3 -3
  537. package/dist/types/components/ic-side-navigation/ic-side-navigation.types.d.ts +2 -2
  538. package/dist/types/components/ic-switch/ic-switch.d.ts +1 -0
  539. package/dist/types/components/ic-tab/ic-tab.d.ts +1 -0
  540. package/dist/types/components/ic-text-field/ic-text-field.d.ts +5 -1
  541. package/dist/types/components/ic-theme/ic-theme.d.ts +8 -8
  542. package/dist/types/components/ic-toggle-button/ic-toggle-button.d.ts +1 -0
  543. package/dist/types/components/ic-top-navigation/ic-top-navigation.d.ts +3 -3
  544. package/dist/types/components.d.ts +41 -23
  545. package/dist/types/testspec.setup.d.ts +9 -0
  546. package/dist/types/utils/helpers.d.ts +14 -8
  547. package/dist/types/utils/types.d.ts +5 -5
  548. package/hydrate/index.js +401 -266
  549. package/package.json +4 -9
  550. package/vscode-data.json +11 -7
  551. package/dist/cjs/helpers-529aaa3a.js.map +0 -1
  552. package/dist/components/ic-text-field2.js +0 -357
  553. package/dist/components/ic-text-field2.js.map +0 -1
  554. package/dist/core/p-04339c98.entry.js +0 -2
  555. package/dist/core/p-04339c98.entry.js.map +0 -1
  556. package/dist/core/p-0aec7fab.entry.js +0 -2
  557. package/dist/core/p-0aec7fab.entry.js.map +0 -1
  558. package/dist/core/p-0cef50b7.entry.js +0 -2
  559. package/dist/core/p-0cef50b7.entry.js.map +0 -1
  560. package/dist/core/p-274b1ed7.entry.js +0 -2
  561. package/dist/core/p-274b1ed7.entry.js.map +0 -1
  562. package/dist/core/p-2a300ec7.entry.js +0 -2
  563. package/dist/core/p-2a300ec7.entry.js.map +0 -1
  564. package/dist/core/p-303307bb.entry.js +0 -2
  565. package/dist/core/p-303307bb.entry.js.map +0 -1
  566. package/dist/core/p-3317f083.entry.js +0 -2
  567. package/dist/core/p-3317f083.entry.js.map +0 -1
  568. package/dist/core/p-35bd9d76.entry.js +0 -2
  569. package/dist/core/p-35bd9d76.entry.js.map +0 -1
  570. package/dist/core/p-36f4e0bd.entry.js +0 -2
  571. package/dist/core/p-36f4e0bd.entry.js.map +0 -1
  572. package/dist/core/p-48463a79.entry.js.map +0 -1
  573. package/dist/core/p-4fea4610.entry.js.map +0 -1
  574. package/dist/core/p-60d458e5.entry.js.map +0 -1
  575. package/dist/core/p-6bb3ef22.entry.js.map +0 -1
  576. package/dist/core/p-6cb1f1da.entry.js +0 -2
  577. package/dist/core/p-6cb1f1da.entry.js.map +0 -1
  578. package/dist/core/p-79c132e3.entry.js +0 -2
  579. package/dist/core/p-79c132e3.entry.js.map +0 -1
  580. package/dist/core/p-7cba80ac.entry.js.map +0 -1
  581. package/dist/core/p-81f80487.entry.js.map +0 -1
  582. package/dist/core/p-85be0268.entry.js +0 -2
  583. package/dist/core/p-85be0268.entry.js.map +0 -1
  584. package/dist/core/p-85d33e38.entry.js.map +0 -1
  585. package/dist/core/p-88810080.entry.js +0 -2
  586. package/dist/core/p-88810080.entry.js.map +0 -1
  587. package/dist/core/p-a01841e2.entry.js +0 -2
  588. package/dist/core/p-a01841e2.entry.js.map +0 -1
  589. package/dist/core/p-a6be333f.entry.js +0 -2
  590. package/dist/core/p-a6be333f.entry.js.map +0 -1
  591. package/dist/core/p-ae42affc.entry.js +0 -2
  592. package/dist/core/p-ae42affc.entry.js.map +0 -1
  593. package/dist/core/p-ba37e169.entry.js.map +0 -1
  594. package/dist/core/p-ba55afea.entry.js +0 -2
  595. package/dist/core/p-ba55afea.entry.js.map +0 -1
  596. package/dist/core/p-bbd2febe.entry.js +0 -2
  597. package/dist/core/p-bbd2febe.entry.js.map +0 -1
  598. package/dist/core/p-c0d5043e.entry.js +0 -2
  599. package/dist/core/p-c0d5043e.entry.js.map +0 -1
  600. package/dist/core/p-c563d479.entry.js.map +0 -1
  601. package/dist/core/p-c7e01fcd.entry.js.map +0 -1
  602. package/dist/core/p-d3263ed9.entry.js.map +0 -1
  603. package/dist/core/p-d43e0f4b.entry.js +0 -2
  604. package/dist/core/p-d43e0f4b.entry.js.map +0 -1
  605. package/dist/core/p-d987bdc0.entry.js.map +0 -1
  606. package/dist/core/p-ec097c1f.entry.js +0 -2
  607. package/dist/core/p-ec097c1f.entry.js.map +0 -1
  608. package/dist/core/p-f580f0ce.entry.js.map +0 -1
  609. package/dist/core/p-f99576e0.js +0 -2
  610. package/dist/core/p-f99576e0.js.map +0 -1
  611. package/dist/esm/helpers-7bf8c67f.js.map +0 -1
  612. /package/dist/core/{p-e107f362.entry.js.map → p-1b1f7523.entry.js.map} +0 -0
  613. /package/dist/core/{p-12f72d83.entry.js.map → p-2179e015.entry.js.map} +0 -0
  614. /package/dist/core/{p-b06939fa.entry.js.map → p-27933dfe.entry.js.map} +0 -0
  615. /package/dist/core/{p-98816f52.entry.js.map → p-2aca1bac.entry.js.map} +0 -0
  616. /package/dist/core/{p-a91b0212.entry.js.map → p-34e89ebf.entry.js.map} +0 -0
  617. /package/dist/core/{p-15fd6539.entry.js.map → p-5347f687.entry.js.map} +0 -0
  618. /package/dist/core/{p-2223c7ee.entry.js.map → p-6331782f.entry.js.map} +0 -0
  619. /package/dist/core/{p-c5d3c71e.entry.js.map → p-6a5d58bc.entry.js.map} +0 -0
  620. /package/dist/core/{p-f069f50e.entry.js.map → p-7e546e88.entry.js.map} +0 -0
  621. /package/dist/core/{p-3a4000d8.entry.js.map → p-8dda6121.entry.js.map} +0 -0
  622. /package/dist/core/{p-c43d676b.entry.js.map → p-9505b0f1.entry.js.map} +0 -0
  623. /package/dist/core/{p-685d6aa9.entry.js.map → p-a25d535a.entry.js.map} +0 -0
  624. /package/dist/core/{p-c82240b7.entry.js.map → p-bdbce1a0.entry.js.map} +0 -0
  625. /package/dist/core/{p-cdbc3414.entry.js.map → p-d6ce4473.entry.js.map} +0 -0
  626. /package/dist/core/{p-78f46cf8.entry.js.map → p-dcdfe5f9.entry.js.map} +0 -0
  627. /package/dist/core/{p-97e8246c.entry.js.map → p-eec110a7.entry.js.map} +0 -0
  628. /package/dist/core/{p-03dc6b93.entry.js.map → p-f1b7e4f4.entry.js.map} +0 -0
  629. /package/dist/core/{p-175baf98.entry.js.map → p-f8890135.entry.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ic-switch.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-switch/test/basic/ic-switch.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Switch } from \"../../ic-switch\";\n\ndescribe(\"ic-switch component\", () => {\n it(\"should render an aria-label\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\"></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-with-aria\");\n });\n\n it(\"should render disabled\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" disabled=true></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-disabled\");\n });\n\n it(\"should render checked\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-checked\");\n });\n\n it(\"should render small\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true size=\"small\"></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-small\");\n });\n\n it(\"should render with state text\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true show-state></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-with-state-text\");\n });\n\n it(\"should render with state text and unchecked\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=\"false\" show-state=\"true\"></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-with-state-text-unchecked\");\n });\n\n it(\"should focus\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icFocus\", callbackFn);\n const input = page.root.shadowRoot.querySelector(\"input\");\n input.focus();\n await page.waitForChanges();\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should blur\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icBlur\", callbackFn);\n const input = page.root.shadowRoot.querySelector(\"input\");\n input.blur();\n await page.waitForChanges();\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should toggle checkedState\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n expect(page.rootInstance.checkedState).toBe(true);\n page.rootInstance.handleChange();\n await page.waitForChanges();\n\n expect(page.rootInstance.checkedState).toBe(false);\n });\n\n it(\"should call 'setFocus' when switch is focused\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\"></ic-switch>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n\n it(\"should reset to initial state on form reset\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<form><ic-switch label=\"Custom title\" checked=true></ic-switch><button id=\"resetButton\" type=\"reset\">Reset</button></form>`,\n });\n\n expect(page.rootInstance.checkedState).toBe(true);\n\n page.rootInstance.handleChange();\n await page.waitForChanges();\n\n expect(page.rootInstance.checkedState).toBe(false);\n\n await page.rootInstance.handleFormReset();\n await page.waitForChanges();\n\n expect(page.rootInstance.checkedState).toBe(true);\n\n //test disconnected callback\n page.setContent(\"\");\n });\n});\n"]}
1
+ {"version":3,"file":"ic-switch.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-switch/test/basic/ic-switch.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,8CAA8C;SACrD,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;QACtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,4DAA4D;SACnE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;QAEtD,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;QAEnC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,KAAK,IAAI,EAAE;QACrC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,2DAA2D;SAClE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,iBAAiB,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;QACnC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,wEAAwE;SAC/E,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,sEAAsE;SAC7E,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,gFAAgF;SACvF,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,eAAe,CAAC,mCAAmC,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,cAAc,EAAE,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,2DAA2D;SAClE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1D,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;QAC3B,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,2DAA2D;SAClE,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC1D,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAC5B,MAAM,CAAC,UAAU,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,KAAK,IAAI,EAAE;QAC1C,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,2DAA2D;SAClE,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,8CAA8C;SACrD,CAAC,CAAC;QAEH,6EAA6E;QAC7E,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,gBAAgB,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC;YAC7B,UAAU,EAAE,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,4HAA4H;SACnI,CAAC,CAAC;QAEH,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElD,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACjC,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnD,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,CAAC;QAC1C,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElD,4BAA4B;QAC5B,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Switch } from \"../../ic-switch\";\n\ndescribe(\"ic-switch component\", () => {\n it(\"should render an aria-label\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\"></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-with-aria\");\n });\n\n it(\"should render disabled\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" disabled=true></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-disabled\");\n\n page.rootInstance.disabled = false;\n\n await page.waitForChanges();\n expect(page.root).toMatchSnapshot(\"disabled-removed\");\n });\n\n it(\"should render checked\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-checked\");\n });\n\n it(\"should render small\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true size=\"small\"></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-small\");\n });\n\n it(\"should render with state text\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true show-state></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-with-state-text\");\n });\n\n it(\"should render with state text and unchecked\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=\"false\" show-state=\"true\"></ic-switch>`,\n });\n\n expect(page.root).toMatchSnapshot(\"renders-with-state-text-unchecked\");\n });\n\n it(\"should focus\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icFocus\", callbackFn);\n const input = page.root.shadowRoot.querySelector(\"input\");\n input.focus();\n await page.waitForChanges();\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should blur\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"icBlur\", callbackFn);\n const input = page.root.shadowRoot.querySelector(\"input\");\n input.blur();\n await page.waitForChanges();\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should toggle checkedState\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\" checked=true></ic-switch>`,\n });\n\n expect(page.rootInstance.checkedState).toBe(true);\n page.rootInstance.handleChange();\n await page.waitForChanges();\n\n expect(page.rootInstance.checkedState).toBe(false);\n });\n\n it(\"should call 'setFocus' when switch is focused\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<ic-switch label=\"Custom title\"></ic-switch>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n\n it(\"should reset to initial state on form reset\", async () => {\n const page = await newSpecPage({\n components: [Switch],\n html: `<form><ic-switch label=\"Custom title\" checked=true></ic-switch><button id=\"resetButton\" type=\"reset\">Reset</button></form>`,\n });\n\n expect(page.rootInstance.checkedState).toBe(true);\n\n page.rootInstance.handleChange();\n await page.waitForChanges();\n\n expect(page.rootInstance.checkedState).toBe(false);\n\n await page.rootInstance.handleFormReset();\n await page.waitForChanges();\n\n expect(page.rootInstance.checkedState).toBe(true);\n\n //test disconnected callback\n page.setContent(\"\");\n });\n});\n"]}
@@ -47,6 +47,9 @@ export class Tab {
47
47
  this.tabPosition = undefined;
48
48
  this.theme = "inherit";
49
49
  }
50
+ watchDisabledHandler() {
51
+ removeDisabledFalse(this.disabled, this.el);
52
+ }
50
53
  disabledWatchHandler() {
51
54
  this.tabEnabled.emit();
52
55
  }
@@ -380,6 +383,9 @@ export class Tab {
380
383
  static get elementRef() { return "el"; }
381
384
  static get watchers() {
382
385
  return [{
386
+ "propName": "disabled",
387
+ "methodName": "watchDisabledHandler"
388
+ }, {
383
389
  "propName": "disabled",
384
390
  "methodName": "disabledWatchHandler"
385
391
  }];
@@ -1 +1 @@
1
- {"version":3,"file":"ic-tab.js","sourceRoot":"","sources":["../../../src/components/ic-tab/ic-tab.tsx"],"names":[],"mappings":"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","sourcesContent":["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"]}
1
+ {"version":3,"file":"ic-tab.js","sourceRoot":"","sources":["../../../src/components/ic-tab/ic-tab.tsx"],"names":[],"mappings":"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","sourcesContent":["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 @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\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"]}
@@ -64,6 +64,22 @@ describe("ic-tab component", () => {
64
64
  </mock:shadow-root>
65
65
  IC Tab Test
66
66
  </ic-tab>`);
67
+ page.rootInstance.disabled = false;
68
+ await page.waitForChanges();
69
+ expect(page.root)
70
+ .toEqualHtml(`<ic-tab aria-disabled="false" aria-selected="false" context-id="default" role="tab" tabindex="-1" tab-position="1">
71
+ <mock:shadow-root>
72
+ <ic-typography class="ic-tab-label ic-typography-label">
73
+ <mock:shadow-root>
74
+ <slot></slot>
75
+ </mock:shadow-root>
76
+ <span>
77
+ <slot></slot>
78
+ </span>
79
+ </ic-typography>
80
+ </mock:shadow-root>
81
+ IC Tab Test
82
+ </ic-tab>`);
67
83
  });
68
84
  it("should display an icon", async () => {
69
85
  const page = await newSpecPage({
@@ -1 +1 @@
1
- {"version":3,"file":"ic-tab.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-tab/test/basic/ic-tab.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Button } from \"../../../ic-button/ic-button\";\nimport { Tab } from \"../../ic-tab\";\nimport { Typography } from \"../../../ic-typography/ic-typography\";\n\ndescribe(\"ic-tab component\", () => {\n it(\"should render with correct label\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"false\" aria-selected=\"false\" context-id=\"default\" role=\"tab\" tabindex=\"-1\" tab-position=\"1\">\n <mock:shadow-root>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n </ic-tab>`);\n });\n\n it(\"should set the correct attributes when selected\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab selected tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"false\" aria-selected=\"true\" class=\"ic-tab-selected\" context-id=\"default\" role=\"tab\" selected=\"\" tabindex=\"0\" tab-position=\"1\">\n <mock:shadow-root>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n </ic-tab>`);\n });\n\n it(\"should set the disabled attribute on the button\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab disabled tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"true\" aria-selected=\"false\" class=\"ic-tab-disabled\" context-id=\"default\" disabled=\"\" role=\"tab\" tabindex=\"-1\" tab-position=\"1\">\n <mock:shadow-root>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n </ic-tab>`);\n });\n\n it(\"should display an icon\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test<svg slot=\"icon\"></svg></ic-tab>`,\n supportsShadowDom: true,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"false\" aria-selected=\"false\" context-id=\"default\" role=\"tab\" tabindex=\"-1\" tab-position=\"1\">\n <mock:shadow-root>\n <slot name=\"icon\"></slot>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n <svg slot=\"icon\"></svg>\n </ic-tab>`);\n });\n\n it(\"should set focus to true on mouse down\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n page.rootInstance.handleMouseDown();\n page.waitForChanges();\n\n expect(page.rootInstance.focusFromClick).toBe(true);\n });\n\n it(\"should set isInitialRender to false on component update\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n page.rootInstance.componentDidUpdate();\n page.waitForChanges();\n\n expect(page.rootInstance.isInitialRender).toBe(false);\n });\n\n it(\"should emit tabFocus on handleFocus\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"tabFocus\", callbackFn);\n page.rootInstance.handleFocus();\n page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should emit tabClick on handleClick\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"tabClick\", callbackFn);\n page.rootInstance.handleClick();\n page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should call 'setFocus' when tab is focused\", async () => {\n const page = await newSpecPage({\n components: [Tab],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n\n it(\"should emit tabFocus on handleClick when focusFromClick is true\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n page.rootInstance.focusFromClick = true;\n page.waitForChanges();\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"tabFocus\", callbackFn);\n page.rootInstance.handleClick();\n page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n expect(page.rootInstance.focusFromClick).toBe(false);\n });\n});\n"]}
1
+ {"version":3,"file":"ic-tab.spec.js","sourceRoot":"","sources":["../../../../../src/components/ic-tab/test/basic/ic-tab.spec.ts"],"names":[],"mappings":"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","sourcesContent":["import { newSpecPage } from \"@stencil/core/testing\";\nimport { Button } from \"../../../ic-button/ic-button\";\nimport { Tab } from \"../../ic-tab\";\nimport { Typography } from \"../../../ic-typography/ic-typography\";\n\ndescribe(\"ic-tab component\", () => {\n it(\"should render with correct label\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"false\" aria-selected=\"false\" context-id=\"default\" role=\"tab\" tabindex=\"-1\" tab-position=\"1\">\n <mock:shadow-root>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n </ic-tab>`);\n });\n\n it(\"should set the correct attributes when selected\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab selected tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"false\" aria-selected=\"true\" class=\"ic-tab-selected\" context-id=\"default\" role=\"tab\" selected=\"\" tabindex=\"0\" tab-position=\"1\">\n <mock:shadow-root>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n </ic-tab>`);\n });\n\n it(\"should set the disabled attribute on the button\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab disabled tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"true\" aria-selected=\"false\" class=\"ic-tab-disabled\" context-id=\"default\" disabled=\"\" role=\"tab\" tabindex=\"-1\" tab-position=\"1\">\n <mock:shadow-root>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n </ic-tab>`);\n\n page.rootInstance.disabled = false;\n\n await page.waitForChanges();\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"false\" aria-selected=\"false\" context-id=\"default\" role=\"tab\" tabindex=\"-1\" tab-position=\"1\">\n<mock:shadow-root>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n</mock:shadow-root>\nIC Tab Test\n</ic-tab>`);\n });\n\n it(\"should display an icon\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test<svg slot=\"icon\"></svg></ic-tab>`,\n supportsShadowDom: true,\n });\n\n expect(page.root)\n .toEqualHtml(`<ic-tab aria-disabled=\"false\" aria-selected=\"false\" context-id=\"default\" role=\"tab\" tabindex=\"-1\" tab-position=\"1\">\n <mock:shadow-root>\n <slot name=\"icon\"></slot>\n <ic-typography class=\"ic-tab-label ic-typography-label\">\n <mock:shadow-root>\n <slot></slot>\n </mock:shadow-root>\n <span>\n <slot></slot>\n </span>\n </ic-typography>\n </mock:shadow-root>\n IC Tab Test\n <svg slot=\"icon\"></svg>\n </ic-tab>`);\n });\n\n it(\"should set focus to true on mouse down\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n page.rootInstance.handleMouseDown();\n page.waitForChanges();\n\n expect(page.rootInstance.focusFromClick).toBe(true);\n });\n\n it(\"should set isInitialRender to false on component update\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n page.rootInstance.componentDidUpdate();\n page.waitForChanges();\n\n expect(page.rootInstance.isInitialRender).toBe(false);\n });\n\n it(\"should emit tabFocus on handleFocus\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"tabFocus\", callbackFn);\n page.rootInstance.handleFocus();\n page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should emit tabClick on handleClick\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"tabClick\", callbackFn);\n page.rootInstance.handleClick();\n page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n });\n\n it(\"should call 'setFocus' when tab is focused\", async () => {\n const page = await newSpecPage({\n components: [Tab],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n });\n\n //Can't expect anything in this test - this is to increase code coverage only\n await page.rootInstance.setFocus().toHaveBeenCalled;\n });\n\n it(\"should emit tabFocus on handleClick when focusFromClick is true\", async () => {\n const page = await newSpecPage({\n components: [Button, Tab, Typography],\n html: `<ic-tab tab-position=1>IC Tab Test</ic-tab>`,\n supportsShadowDom: true,\n });\n\n page.rootInstance.focusFromClick = true;\n page.waitForChanges();\n\n const callbackFn = jest.fn();\n page.doc.addEventListener(\"tabFocus\", callbackFn);\n page.rootInstance.handleClick();\n page.waitForChanges();\n\n expect(callbackFn).toHaveBeenCalled();\n expect(page.rootInstance.focusFromClick).toBe(false);\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Host, h, forceUpdate, } from "@stencil/core";
2
2
  import { IcInformationStatus, } from "../../utils/types";
3
- import { inheritAttributes, debounceEvent, getInputDescribedByText, renderHiddenInput, isEmptyString, onComponentRequiredPropUndefined, addFormResetListener, removeFormResetListener, isSlotUsed, removeDisabledFalse, checkSlotInChildMutations, } from "../../utils/helpers";
3
+ import { inheritAttributes, debounceEvent, getInputDescribedByText, renderHiddenInput, isEmptyString, onComponentRequiredPropUndefined, addFormResetListener, removeFormResetListener, isSlotUsed, removeDisabledFalse, checkSlotInChildMutations, removeHiddenInput, } from "../../utils/helpers";
4
4
  import { IC_INHERITED_ARIA } from "../../utils/constants";
5
5
  let inputIds = 0;
6
6
  const MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, "title"];
@@ -11,14 +11,24 @@ export class TextField {
11
11
  constructor() {
12
12
  this.inheritedAttributes = {};
13
13
  this.hostMutationObserver = null;
14
+ this.checkChildHydration = () => {
15
+ var _a;
16
+ const el = (_a = this.el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector("ic-typography");
17
+ if (el && el.classList.contains("hydrated")) {
18
+ this.setFocus();
19
+ clearInterval(this.interval);
20
+ }
21
+ };
22
+ this.getNumberOfCharacters = (value) => value !== null && value !== undefined ? value.length : 0;
14
23
  this.getMaxValueExceeded = (value) => {
24
+ this.numChars = this.getNumberOfCharacters(value);
15
25
  if (this.type === "number") {
16
26
  this.minValueUnattained = value && Number(value) < Number(this.min);
17
27
  this.maxValueExceeded = Number(value) > Number(this.max);
18
28
  }
19
29
  };
20
30
  this.getMaxCharactersReached = (value) => {
21
- this.numChars = value.length;
31
+ this.numChars = this.getNumberOfCharacters(value);
22
32
  this.maxCharactersReached =
23
33
  this.maxCharacters > 0 ? this.numChars >= this.maxCharacters : false;
24
34
  if (this.maxCharactersWarning && !this.maxCharactersReached) {
@@ -73,7 +83,7 @@ export class TextField {
73
83
  this.autocapitalize = "off";
74
84
  this.autocomplete = "off";
75
85
  this.autocorrect = "off";
76
- this.autoFocus = false;
86
+ this.autofocus = false;
77
87
  this.disabled = false;
78
88
  this.fullWidth = false;
79
89
  this.helperText = "";
@@ -107,6 +117,9 @@ export class TextField {
107
117
  this.value = "";
108
118
  this.initialValue = this.value;
109
119
  }
120
+ watchDisabledHandler() {
121
+ removeDisabledFalse(this.disabled, this.el);
122
+ }
110
123
  debounceChanged() {
111
124
  this.icChange = debounceEvent(this.icChange, this.debounce);
112
125
  }
@@ -161,6 +174,9 @@ export class TextField {
161
174
  attributes: true,
162
175
  childList: true,
163
176
  });
177
+ if (this.autofocus && !this.disabled && !this.readonly) {
178
+ this.interval = setInterval(this.checkChildHydration, 50);
179
+ }
164
180
  }
165
181
  handleKeyDown(ev) {
166
182
  this.icKeydown.emit({ event: ev });
@@ -211,25 +227,25 @@ export class TextField {
211
227
  const disabledText = disabledMode && !readonly;
212
228
  const showLeftIcon = !!this.el.querySelector(`[slot="icon"]`) && !disabledText;
213
229
  const invalid = `${currentStatus === IcInformationStatus.Error}`;
214
- if (hiddenInput) {
215
- renderHiddenInput(true, this.el, name, value, disabledMode);
216
- }
230
+ hiddenInput
231
+ ? renderHiddenInput(true, this.el, name, value, disabledMode)
232
+ : removeHiddenInput(this.el);
217
233
  return (h(Host, { class: {
218
234
  "ic-text-field-full-width": fullWidth,
219
235
  [`ic-theme-${theme}`]: theme !== "inherit",
220
236
  "ic-text-field-disabled": disabledMode,
221
237
  } }, h("ic-input-container", { readonly: readonly, disabled: disabledMode }, !this.hideLabel && (h("ic-input-label", { for: inputId, label: label, helperText: helperText, required: required, disabled: disabledText, readonly: readonly })), h("ic-input-component-container", { size: size, validationStatus: currentStatus, multiLine: multiline, disabled: disabledMode, readonly: readonly, validationInline: validationInline, fullWidth: fullWidth }, showLeftIcon && (h("span", { class: {
222
238
  readonly,
223
- "has-value": value.length > 0,
239
+ "has-value": this.getNumberOfCharacters(value) > 0,
224
240
  }, slot: "left-icon" }, h("slot", { name: "icon" }))), !multiline ? (h("input", Object.assign({ id: inputId, name: name, ref: (el) => (this.inputEl = el), type: this.type, min: min, max: max, value: value, class: {
225
241
  "no-left-pad": !showLeftIcon && readonly,
226
242
  readonly,
227
243
  "truncate-value": truncateValue,
228
- }, placeholder: placeholder ? placeholder : "", required: required, disabled: disabledMode, readonly: readonly, onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, "aria-activedescendant": this.ariaActiveDescendant, "aria-expanded": this.ariaExpanded, "aria-owns": this.ariaOwns, autocomplete: this.autocomplete, autocapitalize: this.autocapitalize, autoFocus: this.autoFocus, spellcheck: spellcheck, inputmode: inputmode, role: this.role, maxlength: maxCharactersReached ? maxCharacters : null, minlength: minCharactersUnattained ? minCharacters : null }, this.inheritedAttributes))) : (h("textarea", Object.assign({ id: inputId, class: {
244
+ }, placeholder: placeholder ? placeholder : "", required: required, disabled: disabledMode, readonly: readonly, onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, "aria-activedescendant": this.ariaActiveDescendant, "aria-expanded": this.ariaExpanded, "aria-owns": this.ariaOwns, autocomplete: this.autocomplete, autocapitalize: this.autocapitalize, spellcheck: spellcheck, inputmode: inputmode, role: this.role, maxlength: maxCharactersReached ? maxCharacters : null, minlength: minCharactersUnattained ? minCharacters : null }, this.inheritedAttributes))) : (h("textarea", Object.assign({ id: inputId, class: {
229
245
  "no-resize": resize === false || readonly,
230
246
  "no-left-pad": !showLeftIcon && readonly,
231
247
  readonly,
232
- }, name: name, ref: (el) => (this.inputEl = el), value: value, rows: rows, required: required, disabled: disabledMode, placeholder: placeholder ? placeholder : "", readonly: readonly, onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, autocapitalize: this.autocapitalize, autoFocus: this.autoFocus, spellcheck: spellcheck, inputmode: inputmode, maxlength: maxCharactersReached ? maxCharacters : null, minlength: minCharactersUnattained ? minCharacters : null }, this.inheritedAttributes))), isSlotUsed(this.el, "clear-button") && (h("slot", { name: "clear-button" })), isSlotUsed(this.el, "search-submit-button") && (h("slot", { name: "search-submit-button" }))), isSlotUsed(this.el, "menu") && h("slot", { name: "menu" }), (!isEmptyString(validationStatus) ||
248
+ }, name: name, ref: (el) => (this.inputEl = el), value: value, rows: rows, required: required, disabled: disabledMode, placeholder: placeholder ? placeholder : "", readonly: readonly, onInput: this.onInput, onBlur: this.onBlur, onFocus: this.onFocus, "aria-label": label, "aria-describedby": describedBy, "aria-invalid": invalid, autocapitalize: this.autocapitalize, spellcheck: spellcheck, inputmode: inputmode, maxlength: maxCharactersReached ? maxCharacters : null, minlength: minCharactersUnattained ? minCharacters : null }, this.inheritedAttributes))), isSlotUsed(this.el, "clear-button") && (h("slot", { name: "clear-button" })), isSlotUsed(this.el, "search-submit-button") && (h("slot", { name: "search-submit-button" }))), isSlotUsed(this.el, "menu") && h("slot", { name: "menu" }), (!isEmptyString(validationStatus) ||
233
249
  !isEmptyString(validationText) ||
234
250
  maxNumChars > 0 ||
235
251
  maxValueExceeded ||
@@ -410,7 +426,7 @@ export class TextField {
410
426
  "reflect": false,
411
427
  "defaultValue": "\"off\""
412
428
  },
413
- "autoFocus": {
429
+ "autofocus": {
414
430
  "type": "boolean",
415
431
  "mutable": false,
416
432
  "complexType": {
@@ -424,7 +440,7 @@ export class TextField {
424
440
  "tags": [],
425
441
  "text": "If `true`, the form control will have input focus when the page loads."
426
442
  },
427
- "attribute": "auto-focus",
443
+ "attribute": "autofocus",
428
444
  "reflect": false,
429
445
  "defaultValue": "false"
430
446
  },
@@ -1193,6 +1209,9 @@ export class TextField {
1193
1209
  static get elementRef() { return "el"; }
1194
1210
  static get watchers() {
1195
1211
  return [{
1212
+ "propName": "disabled",
1213
+ "methodName": "watchDisabledHandler"
1214
+ }, {
1196
1215
  "propName": "debounce",
1197
1216
  "methodName": "debounceChanged"
1198
1217
  }, {
@@ -1 +1 @@
1
- {"version":3,"file":"ic-text-field.js","sourceRoot":"","sources":["../../../src/components/ic-text-field/ic-text-field.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n Method,\n h,\n forceUpdate,\n} from \"@stencil/core\";\nimport {\n IcInformationStatus,\n IcAutocompleteTypes,\n IcAutocorrectStates,\n IcInformationStatusOrEmpty,\n IcValueEventDetail,\n IcSizesNoLarge,\n IcThemeMode,\n} from \"../../utils/types\";\nimport {\n inheritAttributes,\n debounceEvent,\n getInputDescribedByText,\n renderHiddenInput,\n isEmptyString,\n onComponentRequiredPropUndefined,\n addFormResetListener,\n removeFormResetListener,\n isSlotUsed,\n removeDisabledFalse,\n checkSlotInChildMutations,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcAriaAutocompleteTypes,\n IcTextFieldInputModes,\n IcTextFieldTypes,\n} from \"./ic-text-field.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"title\"];\n\n/**\n * @slot icon - Content will be placed to the left of the text input.\n */\n@Component({\n tag: \"ic-text-field\",\n styleUrl: \"ic-text-field.css\",\n shadow: true,\n})\nexport class TextField {\n private inheritedAttributes: { [k: string]: string } = {};\n private inputEl: HTMLInputElement | HTMLTextAreaElement;\n private hostMutationObserver: MutationObserver = null;\n\n @Element() el: HTMLIcTextFieldElement;\n\n @State() numChars: number = 0;\n @State() maxCharactersReached: boolean = false;\n @State() maxCharactersWarning: boolean = false;\n @State() minCharactersUnattained: boolean = false;\n @State() maxValueExceeded: boolean = false;\n @State() minValueUnattained: boolean = false;\n\n /**\n * @slot clear-button - an ic-button clear component will render as an end adornment to the input.\n * @slot search-submit-button - an ic-button search submit component will render as an end adornment to the input.\n * @slot menu - an ic-menu component will appear below the input.\n */\n\n /**\n * @internal The active element when focus is on the ic-menu items.\n */\n @Prop() ariaActiveDescendant?: string;\n\n /**\n * @internal Used to identify whether inputting any text triggers more predictions\n */\n @Prop() ariaAutocomplete: IcAriaAutocompleteTypes = undefined;\n\n /**\n * @internal Used to identify if the slotted menu is rendered\n */\n @Prop() ariaExpanded: string;\n\n /**\n * @internal Used to identify any related child component\n */\n @Prop() ariaOwns: string;\n\n /**\n * The automatic capitalisation of the text value as it is entered/edited by the user.\n * Available options: \"off\", \"none\", \"on\", \"sentences\", \"words\", \"characters\".\n */\n @Prop() autocapitalize = \"off\";\n\n /**\n * The state of autocompletion the browser can apply on the text value.\n */\n @Prop() autocomplete: IcAutocompleteTypes = \"off\";\n\n /**\n * The state of autocorrection the browser can apply when the user is entering/editing the text value.\n */\n @Prop() autocorrect: IcAutocorrectStates = \"off\";\n\n /**\n * If `true`, the form control will have input focus when the page loads.\n */\n @Prop() autoFocus = false;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n\n /**\n * Specify whether the text field fills the full width of the container.\n * If `true`, this overrides the --input-width CSS variable.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string = \"\";\n\n /**\n * If `true`, the character count which is displayed when `maxCharacters` is set will be visually hidden.\n */\n @Prop() hideCharCount: boolean = false;\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * @internal If `true`, the hidden form input will stop rendering for form submission.\n */\n @Prop() hiddenInput: boolean = true;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId?: string = `ic-text-field-input-${inputIds++}`;\n\n /**\n * A hint to the browser for which keyboard to display.\n * Possible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n * `\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.\n */\n @Prop() inputmode: IcTextFieldInputModes = \"text\";\n\n /**\n * The label for the input.\n */\n @Prop() label!: string;\n\n /**\n * The maximum number that can be accepted as a value, when `type` is `number` and `rows` is `1`. (NOTE: Ensure to include visual indication of max value in `helperText` or `label`)\n */\n @Prop() max: string | number = undefined;\n\n /**\n * The count of characters in the field. Will display a warning if the bound is reached. (NOTE: If the value of the text field has been set using the `value` prop, it will be truncated to this number of characters)\n */\n @Prop() maxCharacters: number = 0;\n\n /**\n * The minimum number that can be accepted as a value, when `type` is `number` and `rows` is `1`. (NOTE: Ensure to include visual indication of min value in `helperText` or `label`)\n */\n @Prop() min: string | number = undefined;\n\n /**\n * The minimum number of characters that can be entered in the field.\n */\n @Prop() minCharacters: number = 0;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder: string = \"\";\n\n /**\n * If `true`, the read only state will be set.\n */\n @Prop({ reflect: true }) readonly: boolean = false;\n\n /**\n * If `true`, the input will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * If `true`, the multiline text area will be resizeable.\n */\n @Prop() resize: boolean = false;\n\n /**\n * @internal Used to set the role if not default textbox;\n */\n @Prop() role: string;\n\n /**\n * The number of rows to transform the text field into a text area with a specific height.\n */\n @Prop() rows: number = 1;\n\n /**\n * The size of the text field component.\n */\n @Prop() size?: IcSizesNoLarge = \"medium\";\n\n /**\n * If `true`, the value of the text field will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * @internal If `true`, an ellipsis will be displayed at the end of the value if the value is longer than the container.\n */\n @Prop() truncateValue?: boolean;\n\n /**\n * The type of control to display. The default type is text.\n */\n @Prop() type: IcTextFieldTypes = \"text\";\n\n /**\n * If `true`, the icon in input control will be displayed - only applies when validationStatus ='success'.\n */\n @Prop() validationInline: boolean = false;\n\n /**\n * @internal If `true`, the validation will display inline.\n */\n @Prop() validationInlineInternal: boolean = false;\n\n /**\n * The validation state - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The validation state - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop() debounce: number = 0;\n\n @Watch(\"debounce\")\n private debounceChanged() {\n this.icChange = debounceEvent(this.icChange, this.debounce);\n }\n\n /**\n * The value of the text field.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n @State() initialValue = this.value;\n\n @Watch(\"value\")\n private watchValueHandler(newValue: string): void {\n let value;\n\n if (this.maxCharacters > 0) {\n value = newValue.substring(0, this.maxCharacters);\n this.value = value;\n } else {\n value = newValue;\n }\n\n if (this.inputEl && this.inputEl.value !== value) {\n this.inputEl.value = value;\n }\n\n this.getMaxValueExceeded(value);\n\n this.getMaxCharactersReached(value);\n\n this.icChange.emit({ value });\n }\n\n /**\n * @internal Emitted when the validationInlineInternal is `true`\n */\n @Event() getValidationText: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when input loses focus.\n */\n @Event() icBlur: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when input gains focus.\n */\n @Event() icFocus: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when a keydown event occurred.\n */\n @Event() icKeydown: EventEmitter<{ event: KeyboardEvent }>;\n\n connectedCallback(): void {\n this.debounceChanged();\n }\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n if (this.value !== this.initialValue) {\n this.watchValueHandler(this.value);\n } else if (this.maxCharacters > 0) {\n this.value = this.value.substring(0, this.maxCharacters);\n }\n\n this.getMaxValueExceeded(this.value);\n this.getMaxCharactersReached(this.value);\n\n this.inheritedAttributes = inheritAttributes(this.el, MUTABLE_ATTRIBUTES);\n\n if (this.readonly) {\n this.maxValueExceeded = false;\n this.minValueUnattained = false;\n }\n\n addFormResetListener(this.el, this.handleFormReset);\n\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Text Field\"\n );\n if (this.validationInlineInternal) {\n this.getValidationText.emit({ value: this.validationText });\n }\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n }\n\n @Listen(\"keydown\", {})\n handleKeyDown(ev: KeyboardEvent): void {\n this.icKeydown.emit({ event: ev });\n this.maxCharactersWarning = this.maxCharactersReached;\n }\n\n /**\n * Sets focus on the native `input`.\n */\n\n @Method()\n async setFocus(): Promise<void> {\n this.inputEl?.focus();\n }\n\n private getMaxValueExceeded = (value: string) => {\n if (this.type === \"number\") {\n this.minValueUnattained = value && Number(value) < Number(this.min);\n this.maxValueExceeded = Number(value) > Number(this.max);\n }\n };\n\n private getMaxCharactersReached = (value: string) => {\n this.numChars = value.length;\n this.maxCharactersReached =\n this.maxCharacters > 0 ? this.numChars >= this.maxCharacters : false;\n\n if (this.maxCharactersWarning && !this.maxCharactersReached) {\n this.maxCharactersWarning = false;\n }\n };\n\n private onInput = (ev: Event) => {\n this.value = (ev.target as HTMLInputElement).value;\n this.icInput.emit({ value: this.value });\n };\n\n private onBlur = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n this.numChars = value.length;\n this.minCharactersUnattained =\n this.minCharacters > 0 ? this.numChars < this.minCharacters : false;\n this.icBlur.emit({ value: value });\n };\n\n private onFocus = (ev: Event) => {\n this.icFocus.emit({ value: (ev.target as HTMLInputElement).value });\n };\n\n private hasStatus = (status: IcInformationStatusOrEmpty) =>\n status !== \"\" && !this.disabled;\n\n private handleFormReset = (): void => {\n this.value = this.initialValue;\n };\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] =\n this.el.getAttribute(attributeName);\n forceComponentUpdate = true;\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n size,\n placeholder,\n helperText,\n hideCharCount,\n rows,\n resize,\n disabled,\n value,\n min,\n max,\n numChars,\n readonly,\n maxCharacters,\n maxCharactersWarning,\n maxCharactersReached,\n minCharacters,\n minCharactersUnattained,\n minValueUnattained,\n maxValueExceeded,\n validationStatus,\n validationText,\n validationInline,\n validationInlineInternal,\n spellcheck,\n inputmode,\n fullWidth,\n truncateValue,\n hiddenInput,\n theme,\n } = this;\n\n const disabledMode = readonly || disabled;\n\n const currentStatus =\n maxValueExceeded ||\n minValueUnattained ||\n minCharactersUnattained ||\n maxCharactersWarning\n ? maxCharactersWarning\n ? IcInformationStatus.Warning\n : IcInformationStatus.Error\n : validationStatus;\n\n const currentValidationText = maxCharactersWarning\n ? `Maximum input is ${maxCharacters} characters`\n : maxValueExceeded\n ? `Maximum value of ${max} exceeded`\n : minValueUnattained\n ? `Minimum value of ${min} not met`\n : minCharactersUnattained\n ? `Minimum input is ${minCharacters} characters`\n : validationText;\n\n const maxNumChars = readonly ? 0 : maxCharacters;\n const messageAriaLive =\n maxCharactersWarning ||\n maxValueExceeded ||\n minValueUnattained ||\n currentStatus === IcInformationStatus.Error\n ? \"assertive\"\n : \"polite\";\n\n const showStatusText =\n this.hasStatus(currentStatus) &&\n !(currentStatus == IcInformationStatus.Success && validationInline) &&\n !validationInlineInternal;\n\n const multiline = rows > 1;\n\n const charsRemaining = maxNumChars - numChars;\n const hiddenRemainingCharCountDesc = `${charsRemaining} character${\n charsRemaining === 1 ? \"\" : \"s\"\n } remaining.`;\n const hiddenCharCountDescId =\n maxCharacters > 0 ? `${inputId}-char-count-desc` : \"\";\n\n const describedBy = `${hiddenCharCountDescId} ${getInputDescribedByText(\n inputId,\n helperText !== \"\",\n showStatusText\n )}`.trim();\n\n const disabledText = disabledMode && !readonly;\n const showLeftIcon =\n !!this.el.querySelector(`[slot=\"icon\"]`) && !disabledText;\n\n const invalid = `${currentStatus === IcInformationStatus.Error}`;\n\n if (hiddenInput) {\n renderHiddenInput(true, this.el, name, value, disabledMode);\n }\n return (\n <Host\n class={{\n \"ic-text-field-full-width\": fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n \"ic-text-field-disabled\": disabledMode,\n }}\n >\n <ic-input-container readonly={readonly} disabled={disabledMode}>\n {!this.hideLabel && (\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabledText}\n readonly={readonly}\n ></ic-input-label>\n )}\n\n <ic-input-component-container\n size={size}\n validationStatus={currentStatus}\n multiLine={multiline}\n disabled={disabledMode}\n readonly={readonly}\n validationInline={validationInline}\n fullWidth={fullWidth}\n >\n {showLeftIcon && (\n <span\n class={{\n readonly,\n \"has-value\": value.length > 0,\n }}\n slot=\"left-icon\"\n >\n <slot name=\"icon\" />\n </span>\n )}\n\n {!multiline ? (\n <input\n id={inputId}\n name={name}\n ref={(el) => (this.inputEl = el as HTMLInputElement)}\n type={this.type}\n min={min}\n max={max}\n value={value}\n class={{\n \"no-left-pad\": !showLeftIcon && readonly,\n readonly,\n \"truncate-value\": truncateValue,\n }}\n placeholder={placeholder ? placeholder : \"\"}\n required={required}\n disabled={disabledMode}\n readonly={readonly}\n onInput={this.onInput}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-activedescendant={this.ariaActiveDescendant}\n aria-expanded={this.ariaExpanded}\n aria-owns={this.ariaOwns}\n autocomplete={this.autocomplete}\n autocapitalize={this.autocapitalize}\n autoFocus={this.autoFocus}\n spellcheck={spellcheck}\n inputmode={inputmode}\n role={this.role}\n maxlength={maxCharactersReached ? maxCharacters : null}\n minlength={minCharactersUnattained ? minCharacters : null}\n {...this.inheritedAttributes}\n ></input>\n ) : (\n <textarea\n id={inputId}\n class={{\n \"no-resize\": resize === false || readonly,\n \"no-left-pad\": !showLeftIcon && readonly,\n readonly,\n }}\n name={name}\n ref={(el) => (this.inputEl = el as HTMLTextAreaElement)}\n value={value}\n rows={rows}\n required={required}\n disabled={disabledMode}\n placeholder={placeholder ? placeholder : \"\"}\n readonly={readonly}\n onInput={this.onInput}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n autocapitalize={this.autocapitalize}\n autoFocus={this.autoFocus}\n spellcheck={spellcheck}\n inputmode={inputmode}\n maxlength={maxCharactersReached ? maxCharacters : null}\n minlength={minCharactersUnattained ? minCharacters : null}\n {...this.inheritedAttributes}\n ></textarea>\n )}\n {isSlotUsed(this.el, \"clear-button\") && (\n <slot name=\"clear-button\"></slot>\n )}\n {isSlotUsed(this.el, \"search-submit-button\") && (\n <slot name=\"search-submit-button\"></slot>\n )}\n </ic-input-component-container>\n {isSlotUsed(this.el, \"menu\") && <slot name=\"menu\"></slot>}\n {(!isEmptyString(validationStatus) ||\n !isEmptyString(validationText) ||\n maxNumChars > 0 ||\n maxValueExceeded ||\n maxCharactersWarning ||\n minCharactersUnattained ||\n minValueUnattained) &&\n !validationInlineInternal && (\n <ic-input-validation\n status={\n this.hasStatus(currentStatus) === false ||\n (currentStatus === IcInformationStatus.Success &&\n validationInline) ||\n validationInlineInternal\n ? \"\"\n : currentStatus\n }\n message={showStatusText ? currentValidationText : \"\"}\n ariaLiveMode={messageAriaLive}\n for={inputId}\n fullWidth={fullWidth}\n >\n {!readonly && maxNumChars > 0 && (\n <div slot=\"validation-message-adornment\">\n {!hideCharCount && (\n <ic-typography variant=\"caption\" class=\"char-count-text\">\n <span class=\"char-count\">\n {numChars}/{maxNumChars}\n </span>\n </ic-typography>\n )}\n <span class=\"remaining-char-count-desc\" aria-live=\"polite\">\n {hiddenRemainingCharCountDesc}\n </span>\n <span hidden={true} id={hiddenCharCountDescId}>\n Field can contain a maximum of {maxNumChars} characters.\n </span>\n </div>\n )}\n </ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"ic-text-field.js","sourceRoot":"","sources":["../../../src/components/ic-text-field/ic-text-field.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CACF","sourcesContent":["import {\n Component,\n Element,\n Event,\n EventEmitter,\n Host,\n Listen,\n Prop,\n State,\n Watch,\n Method,\n h,\n forceUpdate,\n} from \"@stencil/core\";\nimport {\n IcInformationStatus,\n IcAutocompleteTypes,\n IcAutocorrectStates,\n IcInformationStatusOrEmpty,\n IcValueEventDetail,\n IcSizesNoLarge,\n IcThemeMode,\n} from \"../../utils/types\";\nimport {\n inheritAttributes,\n debounceEvent,\n getInputDescribedByText,\n renderHiddenInput,\n isEmptyString,\n onComponentRequiredPropUndefined,\n addFormResetListener,\n removeFormResetListener,\n isSlotUsed,\n removeDisabledFalse,\n checkSlotInChildMutations,\n removeHiddenInput,\n} from \"../../utils/helpers\";\nimport { IC_INHERITED_ARIA } from \"../../utils/constants\";\nimport {\n IcAriaAutocompleteTypes,\n IcTextFieldInputModes,\n IcTextFieldTypes,\n} from \"./ic-text-field.types\";\n\nlet inputIds = 0;\nconst MUTABLE_ATTRIBUTES = [...IC_INHERITED_ARIA, \"title\"];\n\n/**\n * @slot icon - Content will be placed to the left of the text input.\n */\n@Component({\n tag: \"ic-text-field\",\n styleUrl: \"ic-text-field.css\",\n shadow: true,\n})\nexport class TextField {\n private inheritedAttributes: { [k: string]: string } = {};\n private inputEl: HTMLInputElement | HTMLTextAreaElement;\n private hostMutationObserver: MutationObserver = null;\n private interval: ReturnType<typeof setInterval>;\n\n @Element() el: HTMLIcTextFieldElement;\n\n @State() numChars: number = 0;\n @State() maxCharactersReached: boolean = false;\n @State() maxCharactersWarning: boolean = false;\n @State() minCharactersUnattained: boolean = false;\n @State() maxValueExceeded: boolean = false;\n @State() minValueUnattained: boolean = false;\n\n /**\n * @slot clear-button - an ic-button clear component will render as an end adornment to the input.\n * @slot search-submit-button - an ic-button search submit component will render as an end adornment to the input.\n * @slot menu - an ic-menu component will appear below the input.\n */\n\n /**\n * @internal The active element when focus is on the ic-menu items.\n */\n @Prop() ariaActiveDescendant?: string;\n\n /**\n * @internal Used to identify whether inputting any text triggers more predictions\n */\n @Prop() ariaAutocomplete: IcAriaAutocompleteTypes = undefined;\n\n /**\n * @internal Used to identify if the slotted menu is rendered\n */\n @Prop() ariaExpanded: string;\n\n /**\n * @internal Used to identify any related child component\n */\n @Prop() ariaOwns: string;\n\n /**\n * The automatic capitalisation of the text value as it is entered/edited by the user.\n * Available options: \"off\", \"none\", \"on\", \"sentences\", \"words\", \"characters\".\n */\n @Prop() autocapitalize = \"off\";\n\n /**\n * The state of autocompletion the browser can apply on the text value.\n */\n @Prop() autocomplete: IcAutocompleteTypes = \"off\";\n\n /**\n * The state of autocorrection the browser can apply when the user is entering/editing the text value.\n */\n @Prop() autocorrect: IcAutocorrectStates = \"off\";\n\n /**\n * If `true`, the form control will have input focus when the page loads.\n */\n @Prop() autofocus = false;\n\n /**\n * If `true`, the disabled state will be set.\n */\n @Prop() disabled: boolean = false;\n @Watch(\"disabled\")\n watchDisabledHandler(): void {\n removeDisabledFalse(this.disabled, this.el);\n }\n\n /**\n * Specify whether the text field fills the full width of the container.\n * If `true`, this overrides the --input-width CSS variable.\n */\n @Prop() fullWidth: boolean = false;\n\n /**\n * The helper text that will be displayed for additional field guidance.\n */\n @Prop() helperText: string = \"\";\n\n /**\n * If `true`, the character count which is displayed when `maxCharacters` is set will be visually hidden.\n */\n @Prop() hideCharCount: boolean = false;\n\n /**\n * If `true`, the label will be hidden and the required label value will be applied as an aria-label.\n */\n @Prop() hideLabel: boolean = false;\n\n /**\n * @internal If `true`, the hidden form input will stop rendering for form submission.\n */\n @Prop() hiddenInput: boolean = true;\n\n /**\n * The ID for the input.\n */\n @Prop() inputId?: string = `ic-text-field-input-${inputIds++}`;\n\n /**\n * A hint to the browser for which keyboard to display.\n * Possible values: `\"none\"`, `\"text\"`, `\"tel\"`, `\"url\"`,\n * `\"email\"`, `\"numeric\"`, `\"decimal\"`, and `\"search\"`.\n */\n @Prop() inputmode: IcTextFieldInputModes = \"text\";\n\n /**\n * The label for the input.\n */\n @Prop() label!: string;\n\n /**\n * The maximum number that can be accepted as a value, when `type` is `number` and `rows` is `1`. (NOTE: Ensure to include visual indication of max value in `helperText` or `label`)\n */\n @Prop() max: string | number = undefined;\n\n /**\n * The count of characters in the field. Will display a warning if the bound is reached. (NOTE: If the value of the text field has been set using the `value` prop, it will be truncated to this number of characters)\n */\n @Prop() maxCharacters: number = 0;\n\n /**\n * The minimum number that can be accepted as a value, when `type` is `number` and `rows` is `1`. (NOTE: Ensure to include visual indication of min value in `helperText` or `label`)\n */\n @Prop() min: string | number = undefined;\n\n /**\n * The minimum number of characters that can be entered in the field.\n */\n @Prop() minCharacters: number = 0;\n\n /**\n * The name of the control, which is submitted with the form data.\n */\n @Prop() name: string = this.inputId;\n\n /**\n * The placeholder value to be displayed.\n */\n @Prop() placeholder: string = \"\";\n\n /**\n * If `true`, the read only state will be set.\n */\n @Prop({ reflect: true }) readonly: boolean = false;\n\n /**\n * If `true`, the input will require a value.\n */\n @Prop() required: boolean = false;\n\n /**\n * If `true`, the multiline text area will be resizeable.\n */\n @Prop() resize: boolean = false;\n\n /**\n * @internal Used to set the role if not default textbox;\n */\n @Prop() role: string;\n\n /**\n * The number of rows to transform the text field into a text area with a specific height.\n */\n @Prop() rows: number = 1;\n\n /**\n * The size of the text field component.\n */\n @Prop() size?: IcSizesNoLarge = \"medium\";\n\n /**\n * If `true`, the value of the text field will have its spelling and grammar checked.\n */\n @Prop() spellcheck: boolean = false;\n\n /**\n * Sets the theme color to the dark or light theme color. \"inherit\" will set the color based on the system settings or ic-theme component.\n */\n @Prop() theme: IcThemeMode = \"inherit\";\n\n /**\n * @internal If `true`, an ellipsis will be displayed at the end of the value if the value is longer than the container.\n */\n @Prop() truncateValue?: boolean;\n\n /**\n * The type of control to display. The default type is text.\n */\n @Prop() type: IcTextFieldTypes = \"text\";\n\n /**\n * If `true`, the icon in input control will be displayed - only applies when validationStatus ='success'.\n */\n @Prop() validationInline: boolean = false;\n\n /**\n * @internal If `true`, the validation will display inline.\n */\n @Prop() validationInlineInternal: boolean = false;\n\n /**\n * The validation state - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationStatus: IcInformationStatusOrEmpty = \"\";\n\n /**\n * The validation state - e.g. 'error' | 'warning' | 'success'.\n */\n @Prop() validationText: string = \"\";\n\n /**\n * The amount of time, in milliseconds, to wait to trigger the `icChange` event after each keystroke.\n */\n @Prop() debounce: number = 0;\n\n @Watch(\"debounce\")\n private debounceChanged() {\n this.icChange = debounceEvent(this.icChange, this.debounce);\n }\n\n /**\n * The value of the text field.\n */\n @Prop({ reflect: true, mutable: true }) value: string = \"\";\n @State() initialValue = this.value;\n\n @Watch(\"value\")\n private watchValueHandler(newValue: string): void {\n let value;\n\n if (this.maxCharacters > 0) {\n value = newValue.substring(0, this.maxCharacters);\n this.value = value;\n } else {\n value = newValue;\n }\n\n if (this.inputEl && this.inputEl.value !== value) {\n this.inputEl.value = value;\n }\n\n this.getMaxValueExceeded(value);\n\n this.getMaxCharactersReached(value);\n\n this.icChange.emit({ value });\n }\n\n /**\n * @internal Emitted when the validationInlineInternal is `true`\n */\n @Event() getValidationText: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when input loses focus.\n */\n @Event() icBlur: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when the value has changed.\n */\n @Event() icChange: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when input gains focus.\n */\n @Event() icFocus: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when a keyboard input occurred.\n */\n @Event() icInput: EventEmitter<IcValueEventDetail>;\n\n /**\n * Emitted when a keydown event occurred.\n */\n @Event() icKeydown: EventEmitter<{ event: KeyboardEvent }>;\n\n connectedCallback(): void {\n this.debounceChanged();\n }\n\n disconnectedCallback(): void {\n removeFormResetListener(this.el, this.handleFormReset);\n this.hostMutationObserver?.disconnect();\n }\n\n componentWillLoad(): void {\n if (this.value !== this.initialValue) {\n this.watchValueHandler(this.value);\n } else if (this.maxCharacters > 0) {\n this.value = this.value.substring(0, this.maxCharacters);\n }\n\n this.getMaxValueExceeded(this.value);\n this.getMaxCharactersReached(this.value);\n\n this.inheritedAttributes = inheritAttributes(this.el, MUTABLE_ATTRIBUTES);\n\n if (this.readonly) {\n this.maxValueExceeded = false;\n this.minValueUnattained = false;\n }\n\n addFormResetListener(this.el, this.handleFormReset);\n\n removeDisabledFalse(this.disabled, this.el);\n }\n\n componentDidLoad(): void {\n onComponentRequiredPropUndefined(\n [{ prop: this.label, propName: \"label\" }],\n \"Text Field\"\n );\n if (this.validationInlineInternal) {\n this.getValidationText.emit({ value: this.validationText });\n }\n\n this.hostMutationObserver = new MutationObserver(this.hostMutationCallback);\n this.hostMutationObserver.observe(this.el, {\n attributes: true,\n childList: true,\n });\n\n if (this.autofocus && !this.disabled && !this.readonly) {\n this.interval = setInterval(this.checkChildHydration, 50);\n }\n }\n\n private checkChildHydration = () => {\n const el = this.el.shadowRoot?.querySelector(\"ic-typography\");\n if (el && el.classList.contains(\"hydrated\")) {\n this.setFocus();\n clearInterval(this.interval);\n }\n };\n\n @Listen(\"keydown\", {})\n handleKeyDown(ev: KeyboardEvent): void {\n this.icKeydown.emit({ event: ev });\n this.maxCharactersWarning = this.maxCharactersReached;\n }\n\n /**\n * Sets focus on the native `input`.\n */\n\n @Method()\n async setFocus() {\n this.inputEl?.focus();\n }\n\n private getNumberOfCharacters = (value: string) =>\n value !== null && value !== undefined ? value.length : 0;\n\n private getMaxValueExceeded = (value: string) => {\n this.numChars = this.getNumberOfCharacters(value);\n\n if (this.type === \"number\") {\n this.minValueUnattained = value && Number(value) < Number(this.min);\n this.maxValueExceeded = Number(value) > Number(this.max);\n }\n };\n\n private getMaxCharactersReached = (value: string) => {\n this.numChars = this.getNumberOfCharacters(value);\n\n this.maxCharactersReached =\n this.maxCharacters > 0 ? this.numChars >= this.maxCharacters : false;\n\n if (this.maxCharactersWarning && !this.maxCharactersReached) {\n this.maxCharactersWarning = false;\n }\n };\n\n private onInput = (ev: Event) => {\n this.value = (ev.target as HTMLInputElement).value;\n this.icInput.emit({ value: this.value });\n };\n\n private onBlur = (ev: Event) => {\n const value = (ev.target as HTMLInputElement).value;\n this.numChars = value.length;\n this.minCharactersUnattained =\n this.minCharacters > 0 ? this.numChars < this.minCharacters : false;\n this.icBlur.emit({ value: value });\n };\n\n private onFocus = (ev: Event) => {\n this.icFocus.emit({ value: (ev.target as HTMLInputElement).value });\n };\n\n private hasStatus = (status: IcInformationStatusOrEmpty) =>\n status !== \"\" && !this.disabled;\n\n private handleFormReset = (): void => {\n this.value = this.initialValue;\n };\n\n // triggered when attributes of host element change\n private hostMutationCallback = (mutationList: MutationRecord[]): void => {\n let forceComponentUpdate = false;\n mutationList.forEach(\n ({ attributeName, type, addedNodes, removedNodes }) => {\n if (MUTABLE_ATTRIBUTES.includes(attributeName)) {\n this.inheritedAttributes[attributeName] =\n this.el.getAttribute(attributeName);\n forceComponentUpdate = true;\n } else if (type === \"childList\") {\n forceComponentUpdate = checkSlotInChildMutations(\n addedNodes,\n removedNodes,\n \"icon\"\n );\n }\n }\n );\n if (forceComponentUpdate) {\n forceUpdate(this);\n }\n };\n\n render() {\n const {\n inputId,\n name,\n label,\n required,\n size,\n placeholder,\n helperText,\n hideCharCount,\n rows,\n resize,\n disabled,\n value,\n min,\n max,\n numChars,\n readonly,\n maxCharacters,\n maxCharactersWarning,\n maxCharactersReached,\n minCharacters,\n minCharactersUnattained,\n minValueUnattained,\n maxValueExceeded,\n validationStatus,\n validationText,\n validationInline,\n validationInlineInternal,\n spellcheck,\n inputmode,\n fullWidth,\n truncateValue,\n hiddenInput,\n theme,\n } = this;\n\n const disabledMode = readonly || disabled;\n\n const currentStatus =\n maxValueExceeded ||\n minValueUnattained ||\n minCharactersUnattained ||\n maxCharactersWarning\n ? maxCharactersWarning\n ? IcInformationStatus.Warning\n : IcInformationStatus.Error\n : validationStatus;\n\n const currentValidationText = maxCharactersWarning\n ? `Maximum input is ${maxCharacters} characters`\n : maxValueExceeded\n ? `Maximum value of ${max} exceeded`\n : minValueUnattained\n ? `Minimum value of ${min} not met`\n : minCharactersUnattained\n ? `Minimum input is ${minCharacters} characters`\n : validationText;\n\n const maxNumChars = readonly ? 0 : maxCharacters;\n const messageAriaLive =\n maxCharactersWarning ||\n maxValueExceeded ||\n minValueUnattained ||\n currentStatus === IcInformationStatus.Error\n ? \"assertive\"\n : \"polite\";\n\n const showStatusText =\n this.hasStatus(currentStatus) &&\n !(currentStatus == IcInformationStatus.Success && validationInline) &&\n !validationInlineInternal;\n\n const multiline = rows > 1;\n\n const charsRemaining = maxNumChars - numChars;\n const hiddenRemainingCharCountDesc = `${charsRemaining} character${\n charsRemaining === 1 ? \"\" : \"s\"\n } remaining.`;\n const hiddenCharCountDescId =\n maxCharacters > 0 ? `${inputId}-char-count-desc` : \"\";\n\n const describedBy = `${hiddenCharCountDescId} ${getInputDescribedByText(\n inputId,\n helperText !== \"\",\n showStatusText\n )}`.trim();\n\n const disabledText = disabledMode && !readonly;\n const showLeftIcon =\n !!this.el.querySelector(`[slot=\"icon\"]`) && !disabledText;\n\n const invalid = `${currentStatus === IcInformationStatus.Error}`;\n\n hiddenInput\n ? renderHiddenInput(true, this.el, name, value, disabledMode)\n : removeHiddenInput(this.el);\n\n return (\n <Host\n class={{\n \"ic-text-field-full-width\": fullWidth,\n [`ic-theme-${theme}`]: theme !== \"inherit\",\n \"ic-text-field-disabled\": disabledMode,\n }}\n >\n <ic-input-container readonly={readonly} disabled={disabledMode}>\n {!this.hideLabel && (\n <ic-input-label\n for={inputId}\n label={label}\n helperText={helperText}\n required={required}\n disabled={disabledText}\n readonly={readonly}\n ></ic-input-label>\n )}\n\n <ic-input-component-container\n size={size}\n validationStatus={currentStatus}\n multiLine={multiline}\n disabled={disabledMode}\n readonly={readonly}\n validationInline={validationInline}\n fullWidth={fullWidth}\n >\n {showLeftIcon && (\n <span\n class={{\n readonly,\n \"has-value\": this.getNumberOfCharacters(value) > 0,\n }}\n slot=\"left-icon\"\n >\n <slot name=\"icon\" />\n </span>\n )}\n\n {!multiline ? (\n <input\n id={inputId}\n name={name}\n ref={(el) => (this.inputEl = el as HTMLInputElement)}\n type={this.type}\n min={min}\n max={max}\n value={value}\n class={{\n \"no-left-pad\": !showLeftIcon && readonly,\n readonly,\n \"truncate-value\": truncateValue,\n }}\n placeholder={placeholder ? placeholder : \"\"}\n required={required}\n disabled={disabledMode}\n readonly={readonly}\n onInput={this.onInput}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n aria-activedescendant={this.ariaActiveDescendant}\n aria-expanded={this.ariaExpanded}\n aria-owns={this.ariaOwns}\n autocomplete={this.autocomplete}\n autocapitalize={this.autocapitalize}\n spellcheck={spellcheck}\n inputmode={inputmode}\n role={this.role}\n maxlength={maxCharactersReached ? maxCharacters : null}\n minlength={minCharactersUnattained ? minCharacters : null}\n {...this.inheritedAttributes}\n ></input>\n ) : (\n <textarea\n id={inputId}\n class={{\n \"no-resize\": resize === false || readonly,\n \"no-left-pad\": !showLeftIcon && readonly,\n readonly,\n }}\n name={name}\n ref={(el) => (this.inputEl = el as HTMLTextAreaElement)}\n value={value}\n rows={rows}\n required={required}\n disabled={disabledMode}\n placeholder={placeholder ? placeholder : \"\"}\n readonly={readonly}\n onInput={this.onInput}\n onBlur={this.onBlur}\n onFocus={this.onFocus}\n aria-label={label}\n aria-describedby={describedBy}\n aria-invalid={invalid}\n autocapitalize={this.autocapitalize}\n spellcheck={spellcheck}\n inputmode={inputmode}\n maxlength={maxCharactersReached ? maxCharacters : null}\n minlength={minCharactersUnattained ? minCharacters : null}\n {...this.inheritedAttributes}\n ></textarea>\n )}\n {isSlotUsed(this.el, \"clear-button\") && (\n <slot name=\"clear-button\"></slot>\n )}\n {isSlotUsed(this.el, \"search-submit-button\") && (\n <slot name=\"search-submit-button\"></slot>\n )}\n </ic-input-component-container>\n {isSlotUsed(this.el, \"menu\") && <slot name=\"menu\"></slot>}\n {(!isEmptyString(validationStatus) ||\n !isEmptyString(validationText) ||\n maxNumChars > 0 ||\n maxValueExceeded ||\n maxCharactersWarning ||\n minCharactersUnattained ||\n minValueUnattained) &&\n !validationInlineInternal && (\n <ic-input-validation\n status={\n this.hasStatus(currentStatus) === false ||\n (currentStatus === IcInformationStatus.Success &&\n validationInline) ||\n validationInlineInternal\n ? \"\"\n : currentStatus\n }\n message={showStatusText ? currentValidationText : \"\"}\n ariaLiveMode={messageAriaLive}\n for={inputId}\n fullWidth={fullWidth}\n >\n {!readonly && maxNumChars > 0 && (\n <div slot=\"validation-message-adornment\">\n {!hideCharCount && (\n <ic-typography variant=\"caption\" class=\"char-count-text\">\n <span class=\"char-count\">\n {numChars}/{maxNumChars}\n </span>\n </ic-typography>\n )}\n <span class=\"remaining-char-count-desc\" aria-live=\"polite\">\n {hiddenRemainingCharCountDesc}\n </span>\n <span hidden={true} id={hiddenCharCountDescId}>\n Field can contain a maximum of {maxNumChars} characters.\n </span>\n </div>\n )}\n </ic-input-validation>\n )}\n </ic-input-container>\n </Host>\n );\n }\n}\n"]}
@@ -1,4 +1,7 @@
1
1
  import { TextField } from "../../ic-text-field";
2
+ import { InputContainer } from "../../../ic-input-container/ic-input-container";
3
+ import { InputLabel } from "../../../ic-input-label/ic-input-label";
4
+ import { Typography } from "../../../ic-typography/ic-typography";
2
5
  import { newSpecPage } from "@stencil/core/testing";
3
6
  import { waitForTimeout } from "../../../../testspec.setup";
4
7
  describe("ic-text-field", () => {
@@ -33,7 +36,7 @@ describe("ic-text-field", () => {
33
36
  it("should render with autoprops", async () => {
34
37
  const page = await newSpecPage({
35
38
  components: [TextField],
36
- html: `<ic-text-field label="Test label" value="test value" autofocus=true autocapitalize="on" autocomplete="on" autocorrect="on"></ic-text-field>`,
39
+ html: `<ic-text-field label="Test label" value="test value" autocapitalize="on" autocomplete="on" autocorrect="on"></ic-text-field>`,
37
40
  });
38
41
  expect(page.root).toMatchSnapshot("renders-with-autoprops");
39
42
  });
@@ -71,6 +74,9 @@ describe("ic-text-field", () => {
71
74
  html: `<ic-text-field label="Test label" value="test value" disabled=true></ic-text-field>`,
72
75
  });
73
76
  expect(page.root).toMatchSnapshot("renders-disabled");
77
+ page.rootInstance.disabled = false;
78
+ await page.waitForChanges();
79
+ expect(page.root).toMatchSnapshot("disabled-removed");
74
80
  });
75
81
  it("should render readonly", async () => {
76
82
  const page = await newSpecPage({
@@ -149,17 +155,6 @@ describe("ic-text-field", () => {
149
155
  });
150
156
  expect(page.root).toMatchSnapshot("renders-with-inline-success-validation");
151
157
  });
152
- it("should focus", async () => {
153
- const page = await newSpecPage({
154
- components: [TextField],
155
- html: `<ic-text-field label="Test label" rows=1></ic-text-field>`,
156
- });
157
- const callbackFn = jest.fn();
158
- page.doc.addEventListener("icFocus", callbackFn);
159
- const input = page.root.shadowRoot.querySelector("input");
160
- await input.focus();
161
- expect(callbackFn).toHaveBeenCalled();
162
- });
163
158
  it("should blur", async () => {
164
159
  const page = await newSpecPage({
165
160
  components: [TextField],
@@ -295,4 +290,23 @@ it("should update any attributes that are inherited from the root element", asyn
295
290
  await page.waitForChanges();
296
291
  expect(page.root.shadowRoot.querySelector("input").getAttribute("title")).toBe("new-label");
297
292
  });
293
+ it("should autofocus", async () => {
294
+ jest.useFakeTimers();
295
+ const page = await newSpecPage({
296
+ components: [TextField, InputContainer, InputLabel, Typography],
297
+ html: `<ic-text-field label="Test label" autofocus>
298
+ <ic-typography>Helper text</ic-typography>
299
+ </ic-text-field>`,
300
+ });
301
+ await page.waitForChanges();
302
+ const textField = page.rootInstance;
303
+ expect(textField.autofocus).toBe(true);
304
+ const typo = page.root.shadowRoot.querySelector("ic-typography");
305
+ typo.classList.add("hydrated");
306
+ const callbackFn = jest.fn();
307
+ page.doc.addEventListener("icFocus", callbackFn);
308
+ jest.advanceTimersByTime(100);
309
+ await page.waitForChanges();
310
+ expect(callbackFn).toHaveBeenCalled();
311
+ });
298
312
  //# sourceMappingURL=ic-text-field.input.spec.js.map