igniteui-webcomponents 6.1.1 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (327) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/LICENSE +1 -1
  3. package/README.md +13 -1
  4. package/animations/player.d.ts +1 -1
  5. package/animations/player.js.map +1 -1
  6. package/components/calendar/calendar.d.ts +1 -0
  7. package/components/calendar/calendar.js +5 -8
  8. package/components/calendar/calendar.js.map +1 -1
  9. package/components/calendar/themes/calendar.base.css.js +1 -1
  10. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  11. package/components/calendar/themes/dark/calendar.bootstrap.css.js +1 -1
  12. package/components/calendar/themes/dark/calendar.bootstrap.css.js.map +1 -1
  13. package/components/calendar/themes/dark/calendar.fluent.css.js +1 -1
  14. package/components/calendar/themes/dark/calendar.fluent.css.js.map +1 -1
  15. package/components/calendar/themes/dark/calendar.indigo.css.js +1 -1
  16. package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
  17. package/components/calendar/themes/dark/calendar.material.css.js +1 -1
  18. package/components/calendar/themes/dark/calendar.material.css.js.map +1 -1
  19. package/components/calendar/themes/light/calendar.bootstrap.css.js +1 -1
  20. package/components/calendar/themes/light/calendar.bootstrap.css.js.map +1 -1
  21. package/components/calendar/themes/light/calendar.fluent.css.js +1 -1
  22. package/components/calendar/themes/light/calendar.fluent.css.js.map +1 -1
  23. package/components/calendar/themes/light/calendar.indigo.css.js +1 -1
  24. package/components/calendar/themes/light/calendar.indigo.css.js.map +1 -1
  25. package/components/calendar/themes/light/calendar.material.css.js +1 -1
  26. package/components/calendar/themes/light/calendar.material.css.js.map +1 -1
  27. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  28. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  29. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js +1 -1
  30. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js.map +1 -1
  31. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  32. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  33. package/components/calendar/themes/shared/material/calendar.material.css.js +1 -1
  34. package/components/calendar/themes/shared/material/calendar.material.css.js.map +1 -1
  35. package/components/card/themes/content.js +7 -0
  36. package/components/card/themes/content.js.map +1 -1
  37. package/components/card/themes/shared/content/card.content.indigo.css.d.ts +1 -0
  38. package/components/card/themes/shared/content/card.content.indigo.css.js +3 -0
  39. package/components/card/themes/shared/content/card.content.indigo.css.js.map +1 -0
  40. package/components/carousel/carousel-indicator.d.ts +1 -1
  41. package/components/carousel/carousel-indicator.js.map +1 -1
  42. package/components/carousel/carousel-slide.d.ts +3 -3
  43. package/components/carousel/carousel-slide.js +7 -13
  44. package/components/carousel/carousel-slide.js.map +1 -1
  45. package/components/carousel/carousel.d.ts +41 -42
  46. package/components/carousel/carousel.js +173 -187
  47. package/components/carousel/carousel.js.map +1 -1
  48. package/components/checkbox/checkbox-base.d.ts +3 -5
  49. package/components/checkbox/checkbox-base.js +15 -21
  50. package/components/checkbox/checkbox-base.js.map +1 -1
  51. package/components/checkbox/checkbox.d.ts +3 -4
  52. package/components/checkbox/checkbox.js +18 -17
  53. package/components/checkbox/checkbox.js.map +1 -1
  54. package/components/checkbox/switch.d.ts +0 -1
  55. package/components/checkbox/switch.js +7 -10
  56. package/components/checkbox/switch.js.map +1 -1
  57. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js +1 -1
  58. package/components/checkbox/themes/dark/checkbox/checkbox.bootstrap.css.js.map +1 -1
  59. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js +1 -1
  60. package/components/checkbox/themes/dark/checkbox/checkbox.fluent.css.js.map +1 -1
  61. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  62. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  63. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js +1 -1
  64. package/components/checkbox/themes/shared/checkbox/checkbox.common.css.js.map +1 -1
  65. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  66. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  67. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  68. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  69. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  70. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  71. package/components/chip/chip.d.ts +11 -11
  72. package/components/chip/chip.js +61 -65
  73. package/components/chip/chip.js.map +1 -1
  74. package/components/combo/combo.d.ts +3 -3
  75. package/components/combo/combo.js +12 -6
  76. package/components/combo/combo.js.map +1 -1
  77. package/components/combo/themes/dark/combo.bootstrap.css.js +1 -1
  78. package/components/combo/themes/dark/combo.bootstrap.css.js.map +1 -1
  79. package/components/combo/themes/light/combo.bootstrap.css.js +1 -1
  80. package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
  81. package/components/combo/themes/light/combo.shared.css.js +1 -1
  82. package/components/combo/themes/light/combo.shared.css.js.map +1 -1
  83. package/components/combo/themes/shared/combo.common.css.js +1 -1
  84. package/components/combo/themes/shared/combo.common.css.js.map +1 -1
  85. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  86. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  87. package/components/combo/themes/shared/combo.material.css.js +1 -1
  88. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  89. package/components/common/controllers/internals.d.ts +66 -2
  90. package/components/common/controllers/internals.js +21 -0
  91. package/components/common/controllers/internals.js.map +1 -1
  92. package/components/common/controllers/slot.d.ts +87 -0
  93. package/components/common/controllers/slot.js +75 -0
  94. package/components/common/controllers/slot.js.map +1 -0
  95. package/components/common/mixins/alert.d.ts +7 -8
  96. package/components/common/mixins/alert.js +23 -34
  97. package/components/common/mixins/alert.js.map +1 -1
  98. package/components/common/mixins/forms/associated.d.ts +1 -1
  99. package/components/common/mixins/forms/associated.js +91 -36
  100. package/components/common/mixins/forms/associated.js.map +1 -1
  101. package/components/common/mixins/forms/form-transformers.d.ts +21 -0
  102. package/components/common/mixins/forms/form-transformers.js +64 -0
  103. package/components/common/mixins/forms/form-transformers.js.map +1 -0
  104. package/components/common/mixins/forms/form-value.d.ts +7 -36
  105. package/components/common/mixins/forms/form-value.js +2 -64
  106. package/components/common/mixins/forms/form-value.js.map +1 -1
  107. package/components/common/mixins/forms/types.d.ts +19 -10
  108. package/components/common/mixins/forms/types.js +2 -1
  109. package/components/common/mixins/forms/types.js.map +1 -1
  110. package/components/common/util.d.ts +1 -0
  111. package/components/common/util.js +3 -0
  112. package/components/common/util.js.map +1 -1
  113. package/components/date-picker/date-picker.d.ts +1 -3
  114. package/components/date-picker/date-picker.js +11 -13
  115. package/components/date-picker/date-picker.js.map +1 -1
  116. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  117. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  118. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  119. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  120. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  121. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  122. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  123. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  124. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  125. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  126. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  127. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  128. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  129. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  130. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  131. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  132. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  133. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  134. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  135. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  136. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  137. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  138. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  139. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  140. package/components/date-picker/themes/shared/date-picker.material.css.js +1 -1
  141. package/components/date-picker/themes/shared/date-picker.material.css.js.map +1 -1
  142. package/components/date-range-picker/date-range-picker.d.ts +1 -3
  143. package/components/date-range-picker/date-range-picker.js +19 -26
  144. package/components/date-range-picker/date-range-picker.js.map +1 -1
  145. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  146. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  147. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  148. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  149. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  150. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  151. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  152. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  153. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  154. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  155. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  156. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  157. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  158. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  159. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  160. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  161. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js +1 -1
  162. package/components/date-range-picker/themes/shared/date-range-picker.material.css.js.map +1 -1
  163. package/components/date-time-input/date-time-input.d.ts +1 -2
  164. package/components/date-time-input/date-time-input.js +7 -7
  165. package/components/date-time-input/date-time-input.js.map +1 -1
  166. package/components/dialog/dialog.d.ts +23 -25
  167. package/components/dialog/dialog.js +108 -115
  168. package/components/dialog/dialog.js.map +1 -1
  169. package/components/dialog/themes/dark/dialog.bootstrap.css.js +1 -1
  170. package/components/dialog/themes/dark/dialog.bootstrap.css.js.map +1 -1
  171. package/components/expansion-panel/expansion-panel.d.ts +12 -14
  172. package/components/expansion-panel/expansion-panel.js +43 -56
  173. package/components/expansion-panel/expansion-panel.js.map +1 -1
  174. package/components/file-input/file-input.d.ts +1 -3
  175. package/components/file-input/file-input.js +6 -11
  176. package/components/file-input/file-input.js.map +1 -1
  177. package/components/file-input/themes/dark/file-input.bootstrap.css.d.ts +1 -0
  178. package/components/file-input/themes/dark/file-input.bootstrap.css.js +3 -0
  179. package/components/file-input/themes/dark/file-input.bootstrap.css.js.map +1 -0
  180. package/components/file-input/themes/dark/file-input.fluent.css.d.ts +1 -0
  181. package/components/file-input/themes/dark/file-input.fluent.css.js +3 -0
  182. package/components/file-input/themes/dark/file-input.fluent.css.js.map +1 -0
  183. package/components/file-input/themes/dark/file-input.indigo.css.d.ts +1 -0
  184. package/components/file-input/themes/dark/file-input.indigo.css.js +3 -0
  185. package/components/file-input/themes/dark/file-input.indigo.css.js.map +1 -0
  186. package/components/file-input/themes/dark/file-input.material.css.d.ts +1 -0
  187. package/components/file-input/themes/dark/file-input.material.css.js +3 -0
  188. package/components/file-input/themes/dark/file-input.material.css.js.map +1 -0
  189. package/components/file-input/themes/file-input.base.css.js +1 -1
  190. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  191. package/components/file-input/themes/light/file-input.bootstrap.css.d.ts +1 -0
  192. package/components/file-input/themes/light/file-input.bootstrap.css.js +3 -0
  193. package/components/file-input/themes/light/file-input.bootstrap.css.js.map +1 -0
  194. package/components/file-input/themes/light/file-input.fluent.css.d.ts +1 -0
  195. package/components/file-input/themes/light/file-input.fluent.css.js +3 -0
  196. package/components/file-input/themes/light/file-input.fluent.css.js.map +1 -0
  197. package/components/file-input/themes/light/file-input.indigo.css.d.ts +1 -0
  198. package/components/file-input/themes/light/file-input.indigo.css.js +3 -0
  199. package/components/file-input/themes/light/file-input.indigo.css.js.map +1 -0
  200. package/components/file-input/themes/light/file-input.material.css.d.ts +1 -0
  201. package/components/file-input/themes/light/file-input.material.css.js +3 -0
  202. package/components/file-input/themes/light/file-input.material.css.js.map +1 -0
  203. package/components/file-input/themes/light/file-input.shared.css.d.ts +1 -0
  204. package/components/file-input/themes/light/file-input.shared.css.js +3 -0
  205. package/components/file-input/themes/light/file-input.shared.css.js.map +1 -0
  206. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  207. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  208. package/components/file-input/themes/shared/file-input.indigo.css.js +1 -1
  209. package/components/file-input/themes/shared/file-input.indigo.css.js.map +1 -1
  210. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  211. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  212. package/components/file-input/themes/themes.js +19 -0
  213. package/components/file-input/themes/themes.js.map +1 -1
  214. package/components/input/input.d.ts +1 -4
  215. package/components/input/input.js +7 -12
  216. package/components/input/input.js.map +1 -1
  217. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  218. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  219. package/components/input/themes/shared/input.common.css.js +1 -1
  220. package/components/input/themes/shared/input.common.css.js.map +1 -1
  221. package/components/input/themes/shared/input.fluent.css.js +1 -1
  222. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  223. package/components/input/themes/shared/input.indigo.css.js +1 -1
  224. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  225. package/components/input/themes/shared/input.material.css.js +1 -1
  226. package/components/input/themes/shared/input.material.css.js.map +1 -1
  227. package/components/mask-input/mask-input-base.js +1 -0
  228. package/components/mask-input/mask-input-base.js.map +1 -1
  229. package/components/mask-input/mask-input.d.ts +2 -3
  230. package/components/mask-input/mask-input.js +5 -8
  231. package/components/mask-input/mask-input.js.map +1 -1
  232. package/components/nav-drawer/nav-drawer-item.d.ts +3 -4
  233. package/components/nav-drawer/nav-drawer-item.js +15 -18
  234. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  235. package/components/nav-drawer/nav-drawer.d.ts +1 -2
  236. package/components/nav-drawer/nav-drawer.js +9 -11
  237. package/components/nav-drawer/nav-drawer.js.map +1 -1
  238. package/components/nav-drawer/themes/container.base.css.js +1 -1
  239. package/components/nav-drawer/themes/container.base.css.js.map +1 -1
  240. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js +1 -1
  241. package/components/nav-drawer/themes/shared/container/nav-drawer.common.css.js.map +1 -1
  242. package/components/popover/popover.d.ts +17 -16
  243. package/components/popover/popover.js +81 -91
  244. package/components/popover/popover.js.map +1 -1
  245. package/components/progress/base.d.ts +8 -8
  246. package/components/progress/base.js +19 -23
  247. package/components/progress/base.js.map +1 -1
  248. package/components/progress/circular-gradient.js.map +1 -1
  249. package/components/progress/circular-progress.d.ts +3 -4
  250. package/components/progress/circular-progress.js +15 -18
  251. package/components/progress/circular-progress.js.map +1 -1
  252. package/components/progress/linear-progress.d.ts +1 -0
  253. package/components/progress/linear-progress.js +5 -1
  254. package/components/progress/linear-progress.js.map +1 -1
  255. package/components/radio/radio.d.ts +3 -5
  256. package/components/radio/radio.js +33 -31
  257. package/components/radio/radio.js.map +1 -1
  258. package/components/radio/themes/dark/radio.fluent.css.js +1 -1
  259. package/components/radio/themes/dark/radio.fluent.css.js.map +1 -1
  260. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  261. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  262. package/components/radio/themes/shared/radio.common.css.js +1 -1
  263. package/components/radio/themes/shared/radio.common.css.js.map +1 -1
  264. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  265. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  266. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  267. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  268. package/components/radio/themes/shared/radio.material.css.js +1 -1
  269. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  270. package/components/radio-group/radio-group.d.ts +4 -4
  271. package/components/radio-group/radio-group.js +24 -21
  272. package/components/radio-group/radio-group.js.map +1 -1
  273. package/components/rating/rating.d.ts +1 -2
  274. package/components/rating/rating.js +4 -3
  275. package/components/rating/rating.js.map +1 -1
  276. package/components/select/select.d.ts +35 -38
  277. package/components/select/select.js +138 -146
  278. package/components/select/select.js.map +1 -1
  279. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  280. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  281. package/components/select/themes/shared/select.common.css.js +1 -1
  282. package/components/select/themes/shared/select.common.css.js.map +1 -1
  283. package/components/select/themes/shared/select.fluent.css.js +1 -1
  284. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  285. package/components/select/themes/shared/select.indigo.css.js +1 -1
  286. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  287. package/components/select/themes/shared/select.material.css.js +1 -1
  288. package/components/select/themes/shared/select.material.css.js.map +1 -1
  289. package/components/slider/slider-label.js.map +1 -1
  290. package/components/slider/slider.d.ts +1 -2
  291. package/components/slider/slider.js +5 -2
  292. package/components/slider/slider.js.map +1 -1
  293. package/components/snackbar/snackbar.d.ts +3 -5
  294. package/components/snackbar/snackbar.js +5 -5
  295. package/components/snackbar/snackbar.js.map +1 -1
  296. package/components/stepper/stepper.d.ts +1 -0
  297. package/components/stepper/stepper.js +9 -0
  298. package/components/stepper/stepper.js.map +1 -1
  299. package/components/textarea/textarea.d.ts +13 -20
  300. package/components/textarea/textarea.js +66 -90
  301. package/components/textarea/textarea.js.map +1 -1
  302. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  303. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  304. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  305. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  306. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  307. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  308. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  309. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  310. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  311. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  312. package/components/tile-manager/position.js +2 -1
  313. package/components/tile-manager/position.js.map +1 -1
  314. package/components/tile-manager/tile.d.ts +8 -12
  315. package/components/tile-manager/tile.js +16 -37
  316. package/components/tile-manager/tile.js.map +1 -1
  317. package/components/toast/toast.d.ts +1 -2
  318. package/components/toast/toast.js +1 -1
  319. package/components/toast/toast.js.map +1 -1
  320. package/components/validation-container/validation-container.d.ts +9 -6
  321. package/components/validation-container/validation-container.js +56 -38
  322. package/components/validation-container/validation-container.js.map +1 -1
  323. package/custom-elements.json +9595 -6648
  324. package/igniteui-webcomponents.css-data.json +1 -1
  325. package/igniteui-webcomponents.html-data.json +1 -1
  326. package/package.json +1 -1
  327. package/web-types.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"stepper.js","sourceRoot":"","sources":["../../../src/components/stepper/stepper.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\n\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { isLTR } from '../common/util.js';\nimport type {\n HorizontalTransitionAnimation,\n StepperOrientation,\n StepperStepType,\n StepperTitlePosition,\n StepperVerticalAnimation,\n} from '../types.js';\nimport IgcStepComponent from './step.js';\nimport type { IgcStepperComponentEventMap } from './stepper.common.js';\nimport { styles } from './themes/stepper/stepper.base.css.js';\nimport { styles as bootstrap } from './themes/stepper/stepper.bootstrap.css.js';\nimport { styles as fluent } from './themes/stepper/stepper.fluent.css.js';\nimport { styles as indigo } from './themes/stepper/stepper.indigo.css.js';\n\n/**\n * IgxStepper provides a wizard-like workflow by dividing content into logical steps.\n *\n * @remarks\n * The stepper component allows the user to navigate between multiple steps.\n * It supports horizontal and vertical orientation as well as keyboard navigation and provides API methods to control the active step.\n *\n * @element igc-stepper\n *\n * @slot - Renders the step components inside default slot.\n *\n * @fires igcActiveStepChanging - Emitted when the active step is about to change.\n * @fires igcActiveStepChanged - Emitted when the active step is changed.\n */\n\nexport default class IgcStepperComponent extends EventEmitterMixin<\n IgcStepperComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-stepper';\n protected static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcStepperComponent, IgcStepComponent);\n }\n\n // biome-ignore lint/complexity/noBannedTypes: No easy fix as the callback shapes are wildly different\n private readonly keyDownHandlers: Map<string, Function> = new Map(\n Object.entries({\n Enter: this.activateStep,\n Space: this.activateStep,\n SpaceBar: this.activateStep,\n ' ': this.activateStep,\n ArrowUp: this.onArrowUpKeyDown,\n ArrowDown: this.onArrowDownKeyDown,\n ArrowLeft: this.onArrowLeftKeyDown,\n ArrowRight: this.onArrowRightKeyDown,\n Home: this.onHomeKey,\n End: this.onEndKey,\n })\n );\n\n private activeStep!: IgcStepComponent;\n\n /** Returns all of the stepper's steps. */\n @queryAssignedElements({ selector: 'igc-step' })\n public steps!: Array<IgcStepComponent>;\n\n /** Gets/Sets the orientation of the stepper.\n *\n * @remarks\n * Default value is `horizontal`.\n */\n @property({ reflect: true })\n public orientation: StepperOrientation = 'horizontal';\n\n /** Get/Set the type of the steps.\n *\n * @remarks\n * Default value is `full`.\n */\n @property({ reflect: true, attribute: 'step-type' })\n public stepType: StepperStepType = 'full';\n\n /**\n * Get/Set whether the stepper is linear.\n *\n * @remarks\n * If the stepper is in linear mode and if the active step is valid only then the user is able to move forward.\n */\n @property({ type: Boolean })\n public linear = false;\n\n /**\n * Get/Set whether the content is displayed above the steps.\n *\n * @remarks\n * Default value is `false` and the content is below the steps.\n */\n @property({ reflect: true, type: Boolean, attribute: 'content-top' })\n public contentTop = false;\n\n /**\n * The animation type when in vertical mode.\n * @attr vertical-animation\n */\n @property({ attribute: 'vertical-animation' })\n public verticalAnimation: StepperVerticalAnimation = 'grow';\n\n /**\n * The animation type when in horizontal mode.\n * @attr horizontal-animation\n */\n @property({ attribute: 'horizontal-animation' })\n public horizontalAnimation: HorizontalTransitionAnimation = 'slide';\n\n /**\n * The animation duration in either vertical or horizontal mode.\n * @attr animation-duration\n */\n @property({ attribute: 'animation-duration', type: Number })\n public animationDuration = 320;\n\n /**\n * Get/Set the position of the steps title.\n *\n * @remarks\n * The default value is auto.\n * When the stepper is horizontally orientated the title is positioned below the indicator.\n * When the stepper is horizontally orientated the title is positioned on the right side of the indicator.\n */\n @property({ reflect: false, attribute: 'title-position' })\n public titlePosition: StepperTitlePosition = 'auto';\n\n @watch('orientation', { waitUntilFirstUpdate: true })\n protected orientationChange(): void {\n this.setAttribute('aria-orientation', this.orientation);\n this.steps.forEach((step: IgcStepComponent) => {\n step.orientation = this.orientation;\n this.updateAnimation(step);\n });\n }\n\n @watch('stepType', { waitUntilFirstUpdate: true })\n protected stepTypeChange(): void {\n this.steps.forEach((step: IgcStepComponent) => {\n step.stepType = this.stepType;\n });\n }\n\n @watch('titlePosition', { waitUntilFirstUpdate: true })\n protected titlePositionChange(): void {\n this.steps.forEach((step: IgcStepComponent) => {\n step.titlePosition = this.titlePosition;\n });\n }\n\n @watch('contentTop', { waitUntilFirstUpdate: true })\n protected contentTopChange(): void {\n this.steps.forEach((step: IgcStepComponent) => {\n step.contentTop = this.contentTop;\n });\n }\n\n @watch('linear', { waitUntilFirstUpdate: true })\n protected linearChange(): void {\n this.steps.forEach((step: IgcStepComponent) => {\n step.linearDisabled = this.linear;\n if (step.index <= this.activeStep.index) {\n step.visited = true;\n } else {\n step.visited = false;\n }\n });\n if (this.linear) {\n this.updateStepsLinearDisabled();\n }\n }\n\n @watch('verticalAnimation', { waitUntilFirstUpdate: true })\n @watch('horizontalAnimation', { waitUntilFirstUpdate: true })\n protected animationTypeChange() {\n this.steps.forEach((step: IgcStepComponent) => {\n this.updateAnimation(step);\n });\n }\n\n @watch('animationDuration', { waitUntilFirstUpdate: true })\n protected animationDurationChange() {\n this.steps.forEach((step: IgcStepComponent) => {\n step.animationDuration = this.animationDuration;\n });\n }\n\n constructor() {\n super();\n\n addThemingController(this, {\n light: { bootstrap, fluent, indigo },\n dark: { bootstrap, fluent, indigo },\n });\n\n this.addEventListener('stepActiveChanged', (event: any) => {\n event.stopPropagation();\n this.activateStep(event.target, event.detail);\n });\n\n this.addEventListener('stepDisabledInvalidChanged', (event: any) => {\n event.stopPropagation();\n if (this.linear) {\n this.updateStepsLinearDisabled();\n }\n });\n\n this.addEventListener('stepCompleteChanged', (event: any) => {\n event.stopPropagation();\n const nextStep = this.steps[event.target.index + 1];\n if (nextStep) {\n nextStep.previousComplete = event.target.complete;\n }\n });\n\n this.addEventListener('stepHeaderKeydown', (event: any) => {\n event.stopPropagation();\n this.handleKeydown(event.detail.event, event.detail.focusedStep);\n });\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'tablist');\n this.setAttribute('aria-orientation', this.orientation);\n }\n\n private activateFirstStep() {\n const firstEnabledStep = this.steps.find(\n (s: IgcStepComponent) => !s.disabled\n );\n if (firstEnabledStep) {\n this.activateStep(firstEnabledStep, false);\n }\n }\n\n private animateSteps(\n nextStep: IgcStepComponent,\n currentStep: IgcStepComponent\n ) {\n if (nextStep.index > currentStep.index) {\n // Animate steps in ascending/next direction\n currentStep.toggleAnimation('out');\n nextStep.toggleAnimation('in');\n } else {\n // Animate steps in descending/previous direction\n currentStep.toggleAnimation('in', 'reverse');\n nextStep.toggleAnimation('out', 'reverse');\n }\n }\n\n private async activateStep(step: IgcStepComponent, shouldEmit = true) {\n if (step === this.activeStep) {\n return;\n }\n\n if (shouldEmit) {\n const args = {\n detail: {\n owner: this,\n oldIndex: this.activeStep.index,\n newIndex: step.index,\n },\n cancelable: true,\n };\n\n this.animateSteps(step, this.activeStep);\n\n const allowed = this.emitEvent('igcActiveStepChanging', args);\n\n if (!allowed) {\n return;\n }\n this.changeActiveStep(step);\n this.emitEvent('igcActiveStepChanged', {\n detail: { owner: this, index: step.index },\n });\n } else {\n this.changeActiveStep(step);\n }\n }\n\n private changeActiveStep(step: IgcStepComponent) {\n if (this.activeStep) {\n this.activeStep.active = false;\n }\n step.active = true;\n step.visited = true;\n this.activeStep = step;\n }\n\n private moveToNextStep(next = true) {\n let steps = this.steps;\n let activeStepIndex = this.activeStep.index;\n if (!next) {\n steps = this.steps.reverse();\n activeStepIndex = steps.findIndex(\n (step: IgcStepComponent) => step === this.activeStep\n );\n }\n\n const nextStep = steps.find(\n (step: IgcStepComponent, i: number) =>\n i > activeStepIndex && step.isAccessible\n );\n\n if (nextStep) {\n this.animateSteps(nextStep, this.activeStep);\n this.activateStep(nextStep, false);\n }\n }\n\n private handleKeydown(event: KeyboardEvent, focusedStep: IgcStepComponent) {\n const key = event.key.toLowerCase();\n\n if (this.keyDownHandlers.has(event.key)) {\n event.preventDefault();\n this.keyDownHandlers.get(event.key)?.call(this, focusedStep);\n }\n if (key === 'tab' && this.orientation === 'vertical') {\n return;\n }\n if (key === 'tab' && this.activeStep.index !== focusedStep.index) {\n this.activeStep.header.focus();\n }\n }\n\n private onHomeKey() {\n this.steps\n .filter((step: IgcStepComponent) => step.isAccessible)[0]\n ?.header?.focus();\n }\n\n private onEndKey() {\n this.steps\n .filter((step: IgcStepComponent) => step.isAccessible)\n .pop()\n ?.header?.focus();\n }\n\n private onArrowDownKeyDown(focusedStep: IgcStepComponent) {\n if (this.orientation === 'horizontal') {\n return;\n }\n this.getNextStep(focusedStep)?.header?.focus();\n }\n\n private onArrowUpKeyDown(focusedStep: IgcStepComponent) {\n if (this.orientation === 'horizontal') {\n return;\n }\n this.getPreviousStep(focusedStep)?.header?.focus();\n }\n\n private onArrowRightKeyDown(focusedStep: IgcStepComponent) {\n if (!isLTR(this) && this.orientation === 'horizontal') {\n this.getPreviousStep(focusedStep)?.header?.focus();\n } else {\n this.getNextStep(focusedStep)?.header?.focus();\n }\n }\n\n private onArrowLeftKeyDown(focusedStep: IgcStepComponent) {\n if (!isLTR(this) && this.orientation === 'horizontal') {\n this.getNextStep(focusedStep)?.header?.focus();\n } else {\n this.getPreviousStep(focusedStep)?.header?.focus();\n }\n }\n\n private getNextStep(\n focusedStep: IgcStepComponent\n ): IgcStepComponent | undefined {\n if (focusedStep.index === this.steps.length - 1) {\n return this.steps.find((step: IgcStepComponent) => step.isAccessible);\n }\n\n const nextAccessible = this.steps.find(\n (step: IgcStepComponent, i: number) =>\n i > focusedStep.index && step.isAccessible\n );\n return nextAccessible\n ? nextAccessible\n : this.steps.find((step: IgcStepComponent) => step.isAccessible);\n }\n\n private getPreviousStep(\n focusedStep: IgcStepComponent\n ): IgcStepComponent | undefined {\n if (focusedStep.index === 0) {\n return this.steps\n .filter((step: IgcStepComponent) => step.isAccessible)\n .pop();\n }\n\n let prevStep: IgcStepComponent | undefined;\n for (let i = focusedStep.index - 1; i >= 0; i--) {\n const step = this.steps[i];\n if (step.isAccessible) {\n prevStep = step;\n break;\n }\n }\n\n return prevStep\n ? prevStep\n : this.steps.filter((step: IgcStepComponent) => step.isAccessible).pop();\n }\n\n private updateStepsLinearDisabled(): void {\n const firstInvalidStep = this.steps\n .filter((step: IgcStepComponent) => !step.disabled && !step.optional)\n .find((step: IgcStepComponent) => step.invalid);\n if (firstInvalidStep) {\n this.steps.forEach((step: IgcStepComponent) => {\n if (step.index <= firstInvalidStep.index) {\n step.linearDisabled = false;\n } else {\n step.linearDisabled = true;\n }\n });\n } else {\n this.steps.forEach((step: IgcStepComponent) => {\n step.linearDisabled = false;\n });\n }\n }\n\n private updateAnimation(step: IgcStepComponent) {\n if (this.orientation === 'horizontal') {\n step.animation = this.horizontalAnimation;\n }\n\n if (this.orientation === 'vertical') {\n step.animation = this.verticalAnimation;\n }\n }\n\n private syncProperties(): void {\n this.steps.forEach((step: IgcStepComponent, index: number) => {\n step.orientation = this.orientation;\n step.stepType = this.stepType;\n step.titlePosition = this.titlePosition;\n step.contentTop = this.contentTop;\n step.index = index;\n step.active = this.activeStep === step;\n step.header?.setAttribute('aria-posinset', (index + 1).toString());\n step.header?.setAttribute('aria-setsize', this.steps.length.toString());\n step.header?.setAttribute('id', `igc-step-header-${index}`);\n step.header?.setAttribute('aria-controls', `igc-step-content-${index}`);\n if (index > 0) {\n step.previousComplete = this.steps[index - 1].complete;\n }\n step.animationDuration = this.animationDuration;\n this.updateAnimation(step);\n });\n }\n\n private stepsChanged(): void {\n this.style.setProperty('--steps-count', this.steps.length.toString());\n\n const lastActiveStep = this.steps\n .reverse()\n .find((step: IgcStepComponent) => step.active);\n if (!lastActiveStep) {\n // initially when there isn't a predefined active step or when the active step is removed\n this.activateFirstStep();\n } else {\n // activate the last step marked as active\n this.activateStep(lastActiveStep, false);\n }\n\n this.syncProperties();\n if (this.linear) {\n this.updateStepsLinearDisabled();\n }\n }\n\n /** Activates the step at a given index. */\n public navigateTo(index: number) {\n const step = this.steps[index];\n if (!step) {\n return;\n }\n this.activateStep(step, false);\n }\n\n /** Activates the next enabled step. */\n public next(): void {\n this.moveToNextStep();\n }\n\n /** Activates the previous enabled step. */\n public prev(): void {\n this.moveToNextStep(false);\n }\n\n /**\n * Resets the stepper to its initial state i.e. activates the first step.\n *\n * @remarks\n * The steps' content will not be automatically reset.\n */\n public reset(): void {\n this.steps.forEach((step) => {\n step.visited = false;\n });\n this.activateFirstStep();\n }\n\n protected override render() {\n return html`<slot @slotchange=${this.stepsChanged}></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-stepper': IgcStepperComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"stepper.js","sourceRoot":"","sources":["../../../src/components/stepper/stepper.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement } from 'lit';\nimport { property, queryAssignedElements } from 'lit/decorators.js';\n\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { isLTR } from '../common/util.js';\nimport type {\n HorizontalTransitionAnimation,\n StepperOrientation,\n StepperStepType,\n StepperTitlePosition,\n StepperVerticalAnimation,\n} from '../types.js';\nimport IgcStepComponent from './step.js';\nimport type { IgcStepperComponentEventMap } from './stepper.common.js';\nimport { styles } from './themes/stepper/stepper.base.css.js';\nimport { styles as bootstrap } from './themes/stepper/stepper.bootstrap.css.js';\nimport { styles as fluent } from './themes/stepper/stepper.fluent.css.js';\nimport { styles as indigo } from './themes/stepper/stepper.indigo.css.js';\n\n/**\n * IgxStepper provides a wizard-like workflow by dividing content into logical steps.\n *\n * @remarks\n * The stepper component allows the user to navigate between multiple steps.\n * It supports horizontal and vertical orientation as well as keyboard navigation and provides API methods to control the active step.\n *\n * @element igc-stepper\n *\n * @slot - Renders the step components inside default slot.\n *\n * @fires igcActiveStepChanging - Emitted when the active step is about to change.\n * @fires igcActiveStepChanged - Emitted when the active step is changed.\n */\n\nexport default class IgcStepperComponent extends EventEmitterMixin<\n IgcStepperComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-stepper';\n protected static styles = styles;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcStepperComponent, IgcStepComponent);\n }\n\n // biome-ignore lint/complexity/noBannedTypes: No easy fix as the callback shapes are wildly different\n private readonly keyDownHandlers: Map<string, Function> = new Map(\n Object.entries({\n Enter: this.activateStep,\n Space: this.activateStep,\n SpaceBar: this.activateStep,\n ' ': this.activateStep,\n ArrowUp: this.onArrowUpKeyDown,\n ArrowDown: this.onArrowDownKeyDown,\n ArrowLeft: this.onArrowLeftKeyDown,\n ArrowRight: this.onArrowRightKeyDown,\n Home: this.onHomeKey,\n End: this.onEndKey,\n })\n );\n\n private activeStep!: IgcStepComponent;\n private _shouldUpdateLinearState = false;\n\n /** Returns all of the stepper's steps. */\n @queryAssignedElements({ selector: 'igc-step' })\n public steps!: Array<IgcStepComponent>;\n\n /** Gets/Sets the orientation of the stepper.\n *\n * @remarks\n * Default value is `horizontal`.\n */\n @property({ reflect: true })\n public orientation: StepperOrientation = 'horizontal';\n\n /** Get/Set the type of the steps.\n *\n * @remarks\n * Default value is `full`.\n */\n @property({ reflect: true, attribute: 'step-type' })\n public stepType: StepperStepType = 'full';\n\n /**\n * Get/Set whether the stepper is linear.\n *\n * @remarks\n * If the stepper is in linear mode and if the active step is valid only then the user is able to move forward.\n */\n @property({ type: Boolean })\n public linear = false;\n\n /**\n * Get/Set whether the content is displayed above the steps.\n *\n * @remarks\n * Default value is `false` and the content is below the steps.\n */\n @property({ reflect: true, type: Boolean, attribute: 'content-top' })\n public contentTop = false;\n\n /**\n * The animation type when in vertical mode.\n * @attr vertical-animation\n */\n @property({ attribute: 'vertical-animation' })\n public verticalAnimation: StepperVerticalAnimation = 'grow';\n\n /**\n * The animation type when in horizontal mode.\n * @attr horizontal-animation\n */\n @property({ attribute: 'horizontal-animation' })\n public horizontalAnimation: HorizontalTransitionAnimation = 'slide';\n\n /**\n * The animation duration in either vertical or horizontal mode.\n * @attr animation-duration\n */\n @property({ attribute: 'animation-duration', type: Number })\n public animationDuration = 320;\n\n /**\n * Get/Set the position of the steps title.\n *\n * @remarks\n * The default value is auto.\n * When the stepper is horizontally orientated the title is positioned below the indicator.\n * When the stepper is horizontally orientated the title is positioned on the right side of the indicator.\n */\n @property({ reflect: false, attribute: 'title-position' })\n public titlePosition: StepperTitlePosition = 'auto';\n\n @watch('orientation', { waitUntilFirstUpdate: true })\n protected orientationChange(): void {\n this.setAttribute('aria-orientation', this.orientation);\n this.steps.forEach((step: IgcStepComponent) => {\n step.orientation = this.orientation;\n this.updateAnimation(step);\n });\n }\n\n @watch('stepType', { waitUntilFirstUpdate: true })\n protected stepTypeChange(): void {\n this.steps.forEach((step: IgcStepComponent) => {\n step.stepType = this.stepType;\n });\n }\n\n @watch('titlePosition', { waitUntilFirstUpdate: true })\n protected titlePositionChange(): void {\n this.steps.forEach((step: IgcStepComponent) => {\n step.titlePosition = this.titlePosition;\n });\n }\n\n @watch('contentTop', { waitUntilFirstUpdate: true })\n protected contentTopChange(): void {\n this.steps.forEach((step: IgcStepComponent) => {\n step.contentTop = this.contentTop;\n });\n }\n\n @watch('linear', { waitUntilFirstUpdate: true })\n protected linearChange(): void {\n if (!this.activeStep) {\n this._shouldUpdateLinearState = true;\n return;\n }\n this.steps.forEach((step: IgcStepComponent) => {\n step.linearDisabled = this.linear;\n if (step.index <= this.activeStep.index) {\n step.visited = true;\n } else {\n step.visited = false;\n }\n });\n if (this.linear) {\n this.updateStepsLinearDisabled();\n }\n }\n\n @watch('verticalAnimation', { waitUntilFirstUpdate: true })\n @watch('horizontalAnimation', { waitUntilFirstUpdate: true })\n protected animationTypeChange() {\n this.steps.forEach((step: IgcStepComponent) => {\n this.updateAnimation(step);\n });\n }\n\n @watch('animationDuration', { waitUntilFirstUpdate: true })\n protected animationDurationChange() {\n this.steps.forEach((step: IgcStepComponent) => {\n step.animationDuration = this.animationDuration;\n });\n }\n\n constructor() {\n super();\n\n addThemingController(this, {\n light: { bootstrap, fluent, indigo },\n dark: { bootstrap, fluent, indigo },\n });\n\n this.addEventListener('stepActiveChanged', (event: any) => {\n event.stopPropagation();\n this.activateStep(event.target, event.detail);\n });\n\n this.addEventListener('stepDisabledInvalidChanged', (event: any) => {\n event.stopPropagation();\n if (this.linear) {\n this.updateStepsLinearDisabled();\n }\n });\n\n this.addEventListener('stepCompleteChanged', (event: any) => {\n event.stopPropagation();\n const nextStep = this.steps[event.target.index + 1];\n if (nextStep) {\n nextStep.previousComplete = event.target.complete;\n }\n });\n\n this.addEventListener('stepHeaderKeydown', (event: any) => {\n event.stopPropagation();\n this.handleKeydown(event.detail.event, event.detail.focusedStep);\n });\n }\n\n public override connectedCallback(): void {\n super.connectedCallback();\n this.setAttribute('role', 'tablist');\n this.setAttribute('aria-orientation', this.orientation);\n }\n\n private activateFirstStep() {\n const firstEnabledStep = this.steps.find(\n (s: IgcStepComponent) => !s.disabled\n );\n if (firstEnabledStep) {\n this.activateStep(firstEnabledStep, false);\n }\n }\n\n private animateSteps(\n nextStep: IgcStepComponent,\n currentStep: IgcStepComponent\n ) {\n if (nextStep.index > currentStep.index) {\n // Animate steps in ascending/next direction\n currentStep.toggleAnimation('out');\n nextStep.toggleAnimation('in');\n } else {\n // Animate steps in descending/previous direction\n currentStep.toggleAnimation('in', 'reverse');\n nextStep.toggleAnimation('out', 'reverse');\n }\n }\n\n private async activateStep(step: IgcStepComponent, shouldEmit = true) {\n if (step === this.activeStep) {\n return;\n }\n\n if (shouldEmit) {\n const args = {\n detail: {\n owner: this,\n oldIndex: this.activeStep.index,\n newIndex: step.index,\n },\n cancelable: true,\n };\n\n this.animateSteps(step, this.activeStep);\n\n const allowed = this.emitEvent('igcActiveStepChanging', args);\n\n if (!allowed) {\n return;\n }\n this.changeActiveStep(step);\n this.emitEvent('igcActiveStepChanged', {\n detail: { owner: this, index: step.index },\n });\n } else {\n this.changeActiveStep(step);\n }\n }\n\n private changeActiveStep(step: IgcStepComponent) {\n if (this.activeStep) {\n this.activeStep.active = false;\n }\n step.active = true;\n step.visited = true;\n this.activeStep = step;\n }\n\n private moveToNextStep(next = true) {\n let steps = this.steps;\n let activeStepIndex = this.activeStep.index;\n if (!next) {\n steps = this.steps.reverse();\n activeStepIndex = steps.findIndex(\n (step: IgcStepComponent) => step === this.activeStep\n );\n }\n\n const nextStep = steps.find(\n (step: IgcStepComponent, i: number) =>\n i > activeStepIndex && step.isAccessible\n );\n\n if (nextStep) {\n this.animateSteps(nextStep, this.activeStep);\n this.activateStep(nextStep, false);\n }\n }\n\n private handleKeydown(event: KeyboardEvent, focusedStep: IgcStepComponent) {\n const key = event.key.toLowerCase();\n\n if (this.keyDownHandlers.has(event.key)) {\n event.preventDefault();\n this.keyDownHandlers.get(event.key)?.call(this, focusedStep);\n }\n if (key === 'tab' && this.orientation === 'vertical') {\n return;\n }\n if (key === 'tab' && this.activeStep.index !== focusedStep.index) {\n this.activeStep.header.focus();\n }\n }\n\n private onHomeKey() {\n this.steps\n .filter((step: IgcStepComponent) => step.isAccessible)[0]\n ?.header?.focus();\n }\n\n private onEndKey() {\n this.steps\n .filter((step: IgcStepComponent) => step.isAccessible)\n .pop()\n ?.header?.focus();\n }\n\n private onArrowDownKeyDown(focusedStep: IgcStepComponent) {\n if (this.orientation === 'horizontal') {\n return;\n }\n this.getNextStep(focusedStep)?.header?.focus();\n }\n\n private onArrowUpKeyDown(focusedStep: IgcStepComponent) {\n if (this.orientation === 'horizontal') {\n return;\n }\n this.getPreviousStep(focusedStep)?.header?.focus();\n }\n\n private onArrowRightKeyDown(focusedStep: IgcStepComponent) {\n if (!isLTR(this) && this.orientation === 'horizontal') {\n this.getPreviousStep(focusedStep)?.header?.focus();\n } else {\n this.getNextStep(focusedStep)?.header?.focus();\n }\n }\n\n private onArrowLeftKeyDown(focusedStep: IgcStepComponent) {\n if (!isLTR(this) && this.orientation === 'horizontal') {\n this.getNextStep(focusedStep)?.header?.focus();\n } else {\n this.getPreviousStep(focusedStep)?.header?.focus();\n }\n }\n\n private getNextStep(\n focusedStep: IgcStepComponent\n ): IgcStepComponent | undefined {\n if (focusedStep.index === this.steps.length - 1) {\n return this.steps.find((step: IgcStepComponent) => step.isAccessible);\n }\n\n const nextAccessible = this.steps.find(\n (step: IgcStepComponent, i: number) =>\n i > focusedStep.index && step.isAccessible\n );\n return nextAccessible\n ? nextAccessible\n : this.steps.find((step: IgcStepComponent) => step.isAccessible);\n }\n\n private getPreviousStep(\n focusedStep: IgcStepComponent\n ): IgcStepComponent | undefined {\n if (focusedStep.index === 0) {\n return this.steps\n .filter((step: IgcStepComponent) => step.isAccessible)\n .pop();\n }\n\n let prevStep: IgcStepComponent | undefined;\n for (let i = focusedStep.index - 1; i >= 0; i--) {\n const step = this.steps[i];\n if (step.isAccessible) {\n prevStep = step;\n break;\n }\n }\n\n return prevStep\n ? prevStep\n : this.steps.filter((step: IgcStepComponent) => step.isAccessible).pop();\n }\n\n private updateStepsLinearDisabled(): void {\n const firstInvalidStep = this.steps\n .filter((step: IgcStepComponent) => !step.disabled && !step.optional)\n .find((step: IgcStepComponent) => step.invalid);\n if (firstInvalidStep) {\n this.steps.forEach((step: IgcStepComponent) => {\n if (step.index <= firstInvalidStep.index) {\n step.linearDisabled = false;\n } else {\n step.linearDisabled = true;\n }\n });\n } else {\n this.steps.forEach((step: IgcStepComponent) => {\n step.linearDisabled = false;\n });\n }\n }\n\n private updateAnimation(step: IgcStepComponent) {\n if (this.orientation === 'horizontal') {\n step.animation = this.horizontalAnimation;\n }\n\n if (this.orientation === 'vertical') {\n step.animation = this.verticalAnimation;\n }\n }\n\n private syncProperties(): void {\n this.steps.forEach((step: IgcStepComponent, index: number) => {\n step.orientation = this.orientation;\n step.stepType = this.stepType;\n step.titlePosition = this.titlePosition;\n step.contentTop = this.contentTop;\n step.index = index;\n step.active = this.activeStep === step;\n step.header?.setAttribute('aria-posinset', (index + 1).toString());\n step.header?.setAttribute('aria-setsize', this.steps.length.toString());\n step.header?.setAttribute('id', `igc-step-header-${index}`);\n step.header?.setAttribute('aria-controls', `igc-step-content-${index}`);\n if (index > 0) {\n step.previousComplete = this.steps[index - 1].complete;\n }\n step.animationDuration = this.animationDuration;\n this.updateAnimation(step);\n });\n }\n\n private stepsChanged(): void {\n this.style.setProperty('--steps-count', this.steps.length.toString());\n\n const lastActiveStep = this.steps\n .reverse()\n .find((step: IgcStepComponent) => step.active);\n if (!lastActiveStep) {\n // initially when there isn't a predefined active step or when the active step is removed\n this.activateFirstStep();\n } else {\n // activate the last step marked as active\n this.activateStep(lastActiveStep, false);\n }\n\n this.syncProperties();\n if (this._shouldUpdateLinearState) {\n this.linearChange();\n this._shouldUpdateLinearState = false;\n }\n if (this.linear) {\n this.updateStepsLinearDisabled();\n }\n }\n\n /** Activates the step at a given index. */\n public navigateTo(index: number) {\n const step = this.steps[index];\n if (!step) {\n return;\n }\n this.activateStep(step, false);\n }\n\n /** Activates the next enabled step. */\n public next(): void {\n this.moveToNextStep();\n }\n\n /** Activates the previous enabled step. */\n public prev(): void {\n this.moveToNextStep(false);\n }\n\n /**\n * Resets the stepper to its initial state i.e. activates the first step.\n *\n * @remarks\n * The steps' content will not be automatically reset.\n */\n public reset(): void {\n this.steps.forEach((step) => {\n step.visited = false;\n });\n this.activateFirstStep();\n }\n\n protected override render() {\n return html`<slot @slotchange=${this.stepsChanged}></slot>`;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-stepper': IgcStepperComponent;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { LitElement, nothing, type TemplateResult } from 'lit';
1
+ import { LitElement, nothing, type PropertyValues, type TemplateResult } from 'lit';
2
+ import { type InferSlotNames } from '../common/controllers/slot.js';
2
3
  import type { Constructor } from '../common/mixins/constructor.js';
3
- import { type FormValueOf } from '../common/mixins/forms/form-value.js';
4
4
  import type { RangeTextSelectMode, SelectionRangeDirection, TextareaResize } from '../types.js';
5
5
  export interface IgcTextareaComponentEventMap {
6
6
  igcInput: CustomEvent<string>;
@@ -8,6 +8,7 @@ export interface IgcTextareaComponentEventMap {
8
8
  focus: FocusEvent;
9
9
  blur: FocusEvent;
10
10
  }
11
+ declare const Slots: readonly ["[default]", "prefix", "suffix", "helper-text", "value-missing", "too-long", "too-short", "custom-error", "invalid"];
11
12
  declare const IgcTextareaComponent_base: Constructor<import("../common/mixins/forms/types.js").FormRequiredInterface & import("../common/mixins/forms/types.js").FormAssociatedElementInterface> & Constructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcTextareaComponentEventMap>> & Constructor<LitElement>;
12
13
  /**
13
14
  * This element represents a multi-line plain-text editing control,
@@ -40,16 +41,12 @@ export default class IgcTextareaComponent extends IgcTextareaComponent_base {
40
41
  static readonly tagName = "igc-textarea";
41
42
  static styles: import("lit").CSSResult[];
42
43
  static register(): void;
43
- private static readonly increment;
44
+ private readonly _inputId;
44
45
  private readonly _themes;
45
- protected get __validators(): import("../common/validators.js").Validator<IgcTextareaComponent>[];
46
- protected readonly _formValue: FormValueOf<string>;
47
- protected readonly _inputId: string;
48
- private readonly _projected;
49
- protected readonly _prefixes: HTMLElement[];
50
- protected readonly _suffixes: HTMLElement[];
46
+ private readonly _slots;
51
47
  private readonly _input;
52
- private get _resizeStyles();
48
+ protected get __validators(): import("../common/validators.js").Validator<IgcTextareaComponent>[];
49
+ protected readonly _formValue: import("../common/mixins/forms/form-value.js").FormValue<string>;
53
50
  /**
54
51
  * Specifies what if any permission the browser has to provide for automated assistance in filling out form field values,
55
52
  * as well as guidance to the browser as to the type of information expected in the field.
@@ -153,22 +150,19 @@ export default class IgcTextareaComponent extends IgcTextareaComponent_base {
153
150
  * @attr validate-only
154
151
  */
155
152
  validateOnly: boolean;
156
- protected _valueChanged(): Promise<void>;
157
- protected _setAreaHeight(): void;
158
153
  constructor();
159
- protected createRenderRoot(): HTMLElement | DocumentFragment;
154
+ protected updated(props: PropertyValues<this>): void;
155
+ private _setAutoHeight;
156
+ protected _setAreaHeight(): void;
160
157
  protected _resolvePartNames(): {
161
158
  container: boolean;
162
159
  prefixed: boolean;
163
160
  suffixed: boolean;
164
161
  filled: boolean;
165
162
  };
166
- private _setAutoHeight;
167
- protected _handleSlotChange({ target }: Event): void;
163
+ private _handleSlotChange;
168
164
  protected _handleInput(): void;
169
165
  protected _handleChange(): void;
170
- protected _handleFocus(): void;
171
- protected _handleBlur(): void;
172
166
  /** Selects all text within the control. */
173
167
  select(): void;
174
168
  /** Sets the text selection range of the control */
@@ -177,14 +171,13 @@ export default class IgcTextareaComponent extends IgcTextareaComponent_base {
177
171
  setRangeText(replacement: string, start: number, end: number, selectMode?: RangeTextSelectMode): void;
178
172
  scrollTo(options?: ScrollToOptions | undefined): void;
179
173
  scrollTo(x: number, y: number): void;
180
- protected _renderPrefix(): TemplateResult<1>;
181
- protected _renderSuffix(): TemplateResult<1>;
174
+ protected _renderSlot(name: InferSlotNames<typeof Slots>): TemplateResult<1>;
182
175
  protected _renderLabel(): TemplateResult<1> | typeof nothing;
183
176
  protected _renderStandard(): TemplateResult<1>;
184
177
  protected _renderMaterial(): TemplateResult<1>;
185
178
  protected _renderInput(): TemplateResult<1>;
186
179
  protected _renderValidationContainer(): TemplateResult;
187
- protected render(): TemplateResult<1>;
180
+ protected render(): import("lit-html/directive.js").DirectiveResult<typeof import("lit-html/directives/cache.js").CacheDirective>;
188
181
  }
189
182
  declare global {
190
183
  interface HTMLElementTagNameMap {
@@ -5,26 +5,29 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  var IgcTextareaComponent_1;
8
- import { html, LitElement, nothing } from 'lit';
9
- import { property, query, queryAssignedElements, queryAssignedNodes, } from 'lit/decorators.js';
8
+ import { html, LitElement, nothing, } from 'lit';
9
+ import { property, query } from 'lit/decorators.js';
10
+ import { cache } from 'lit/directives/cache.js';
10
11
  import { ifDefined } from 'lit/directives/if-defined.js';
11
12
  import { live } from 'lit/directives/live.js';
12
13
  import { styleMap } from 'lit/directives/style-map.js';
13
14
  import { addThemingController } from '../../theming/theming-controller.js';
14
15
  import { createResizeObserverController } from '../common/controllers/resize-observer.js';
16
+ import { addSlotController, setSlots, } from '../common/controllers/slot.js';
15
17
  import { shadowOptions } from '../common/decorators/shadow-options.js';
16
- import { watch } from '../common/decorators/watch.js';
17
18
  import { registerComponent } from '../common/definitions/register.js';
18
19
  import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
19
20
  import { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';
20
- import { createFormValueState, } from '../common/mixins/forms/form-value.js';
21
+ import { createFormValueState } from '../common/mixins/forms/form-value.js';
21
22
  import { partMap } from '../common/part-map.js';
22
- import { addSafeEventListener, asNumber, createCounter, isEmpty, } from '../common/util.js';
23
+ import { addSafeEventListener, asNumber } from '../common/util.js';
23
24
  import IgcValidationContainerComponent from '../validation-container/validation-container.js';
24
25
  import { styles as shared } from './themes/shared/textarea.common.css.js';
25
26
  import { styles } from './themes/textarea.base.css.js';
26
27
  import { all } from './themes/themes.js';
27
28
  import { textAreaValidators } from './validators.js';
29
+ let nextId = 1;
30
+ const Slots = setSlots('prefix', 'suffix', 'helper-text', 'value-missing', 'too-long', 'too-short', 'custom-error', 'invalid');
28
31
  let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent extends FormAssociatedRequiredMixin(EventEmitterMixin(LitElement)) {
29
32
  static register() {
30
33
  registerComponent(IgcTextareaComponent_1, IgcValidationContainerComponent);
@@ -32,36 +35,23 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
32
35
  get __validators() {
33
36
  return textAreaValidators;
34
37
  }
35
- get _resizeStyles() {
36
- return {
37
- resize: this.resize === 'auto' ? 'none' : this.resize,
38
- };
39
- }
40
38
  set value(value) {
41
39
  this._formValue.setValueAndFormState(value);
42
- this._validate();
43
40
  }
44
41
  get value() {
45
42
  return this._formValue.value;
46
43
  }
47
- async _valueChanged() {
48
- await this.updateComplete;
49
- this._setAreaHeight();
50
- }
51
- _setAreaHeight() {
52
- if (this.resize === 'auto') {
53
- this._input.style.height = 'auto';
54
- this._input.style.height = `${this._setAutoHeight()}px`;
55
- }
56
- else {
57
- Object.assign(this._input.style, { height: undefined });
58
- }
59
- }
60
44
  constructor() {
61
45
  super();
46
+ this._inputId = `textarea-${nextId++}`;
62
47
  this._themes = addThemingController(this, all);
63
- this._formValue = createFormValueState(this, { initialValue: '' });
64
- this._inputId = `textarea-${IgcTextareaComponent_1.increment()}`;
48
+ this._slots = addSlotController(this, {
49
+ slots: Slots,
50
+ onChange: this._handleSlotChange,
51
+ });
52
+ this._formValue = createFormValueState(this, {
53
+ initialValue: '',
54
+ });
65
55
  this.outlined = false;
66
56
  this.readOnly = false;
67
57
  this.resize = 'vertical';
@@ -72,21 +62,12 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
72
62
  createResizeObserverController(this, {
73
63
  callback: this._setAreaHeight,
74
64
  });
75
- addSafeEventListener(this, 'focus', this._handleFocus);
76
65
  addSafeEventListener(this, 'blur', this._handleBlur);
77
66
  }
78
- createRenderRoot() {
79
- const root = super.createRenderRoot();
80
- root.addEventListener('slotchange', (event) => this._handleSlotChange(event));
81
- return root;
82
- }
83
- _resolvePartNames() {
84
- return {
85
- container: true,
86
- prefixed: this._prefixes.length > 0,
87
- suffixed: this._suffixes.length > 0,
88
- filled: !!this.value,
89
- };
67
+ updated(props) {
68
+ if (props.has('rows') || props.has('resize') || props.has('value')) {
69
+ this._setAreaHeight();
70
+ }
90
71
  }
91
72
  _setAutoHeight() {
92
73
  const { borderTopWidth, borderBottomWidth } = getComputedStyle(this._input);
@@ -94,10 +75,31 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
94
75
  asNumber(borderTopWidth) +
95
76
  asNumber(borderBottomWidth));
96
77
  }
97
- _handleSlotChange({ target }) {
98
- const slot = target;
99
- if (!slot.name) {
100
- const value = this._projected
78
+ _setAreaHeight() {
79
+ if (this.resize === 'auto') {
80
+ this._input.style.height = 'auto';
81
+ this._input.style.height = `${this._setAutoHeight()}px`;
82
+ }
83
+ else {
84
+ Object.assign(this._input.style, { height: undefined });
85
+ }
86
+ }
87
+ _resolvePartNames() {
88
+ return {
89
+ container: true,
90
+ prefixed: this._slots.hasAssignedElements('prefix', {
91
+ selector: ':not([hidden])',
92
+ }),
93
+ suffixed: this._slots.hasAssignedElements('suffix', {
94
+ selector: ':not([hidden])',
95
+ }),
96
+ filled: !!this.value,
97
+ };
98
+ }
99
+ _handleSlotChange({ isDefault, }) {
100
+ if (isDefault) {
101
+ const value = this._slots
102
+ .getAssignedNodes('[default]', true)
101
103
  .map((node) => node.textContent?.trim())
102
104
  .filter((node) => Boolean(node))
103
105
  .join('\r\n');
@@ -105,22 +107,17 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
105
107
  this.value = value;
106
108
  }
107
109
  }
108
- this.requestUpdate();
109
110
  }
110
111
  _handleInput() {
112
+ this._setTouchedState();
111
113
  this.value = this._input.value;
112
114
  this.emitEvent('igcInput', { detail: this.value });
113
115
  }
114
116
  _handleChange() {
117
+ this._setTouchedState();
115
118
  this.value = this._input.value;
116
119
  this.emitEvent('igcChange', { detail: this.value });
117
120
  }
118
- _handleFocus() {
119
- this._dirty = true;
120
- }
121
- _handleBlur() {
122
- this._validate();
123
- }
124
121
  select() {
125
122
  this._input.select();
126
123
  }
@@ -136,17 +133,13 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
136
133
  ? this._input.scrollTo(x, y)
137
134
  : this._input.scrollTo(x);
138
135
  }
139
- _renderPrefix() {
140
- return html `
141
- <div part="prefix" .hidden=${isEmpty(this._prefixes)}>
142
- <slot name="prefix"></slot>
143
- </div>
144
- `;
145
- }
146
- _renderSuffix() {
136
+ _renderSlot(name) {
137
+ const isHidden = !this._slots.hasAssignedElements(name, {
138
+ selector: ':not([hidden])',
139
+ });
147
140
  return html `
148
- <div part="suffix" .hidden=${isEmpty(this._suffixes)}>
149
- <slot name="suffix"></slot>
141
+ <div part=${name} ?hidden=${isHidden}>
142
+ <slot name=${name}></slot>
150
143
  </div>
151
144
  `;
152
145
  }
@@ -163,7 +156,8 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
163
156
  return html `
164
157
  ${this._renderLabel()}
165
158
  <div part=${partMap(this._resolvePartNames())}>
166
- ${this._renderPrefix()} ${this._renderInput()} ${this._renderSuffix()}
159
+ ${this._renderSlot('prefix')} ${this._renderInput()}
160
+ ${this._renderSlot('suffix')}
167
161
  </div>
168
162
  ${this._renderValidationContainer()}
169
163
  `;
@@ -177,22 +171,27 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
177
171
  placeholder: !!this.placeholder,
178
172
  })}
179
173
  >
180
- <div part="start">${this._renderPrefix()}</div>
174
+ <div part="start">${this._renderSlot('prefix')}</div>
181
175
  ${this._renderInput()}
182
176
  <div part="notch">${this._renderLabel()}</div>
183
177
  <div part="filler"></div>
184
- <div part="end">${this._renderSuffix()}</div>
178
+ <div part="end">${this._renderSlot('suffix')}</div>
185
179
  </div>
186
180
  ${this._renderValidationContainer()}
187
181
  `;
188
182
  }
189
183
  _renderInput() {
184
+ const describedBy = this._slots.hasAssignedElements('helper-text')
185
+ ? 'helper-text'
186
+ : nothing;
190
187
  return html `
191
188
  <slot style="display: none"></slot>
192
189
  <textarea
193
190
  id=${this.id || this._inputId}
194
191
  part="input"
195
- style=${styleMap(this._resizeStyles)}
192
+ style=${styleMap({
193
+ resize: this.resize === 'auto' ? 'none' : this.resize,
194
+ })}
196
195
  @input=${this._handleInput}
197
196
  @change=${this._handleChange}
198
197
  placeholder=${ifDefined(this.placeholder)}
@@ -208,7 +207,7 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
208
207
  ?disabled=${this.disabled}
209
208
  ?required=${this.required}
210
209
  ?readonly=${this.readOnly}
211
- aria-invalid=${this.invalid ? 'true' : 'false'}
210
+ aria-describedby=${describedBy}
212
211
  ></textarea>
213
212
  `;
214
213
  }
@@ -216,29 +215,13 @@ let IgcTextareaComponent = IgcTextareaComponent_1 = class IgcTextareaComponent e
216
215
  return IgcValidationContainerComponent.create(this);
217
216
  }
218
217
  render() {
219
- return this._themes.theme === 'material'
218
+ return cache(this._themes.theme === 'material'
220
219
  ? this._renderMaterial()
221
- : this._renderStandard();
220
+ : this._renderStandard());
222
221
  }
223
222
  };
224
223
  IgcTextareaComponent.tagName = 'igc-textarea';
225
224
  IgcTextareaComponent.styles = [styles, shared];
226
- IgcTextareaComponent.increment = createCounter();
227
- __decorate([
228
- queryAssignedNodes({ flatten: true })
229
- ], IgcTextareaComponent.prototype, "_projected", void 0);
230
- __decorate([
231
- queryAssignedElements({
232
- slot: 'prefix',
233
- selector: '[slot="prefix"]:not([hidden])',
234
- })
235
- ], IgcTextareaComponent.prototype, "_prefixes", void 0);
236
- __decorate([
237
- queryAssignedElements({
238
- slot: 'suffix',
239
- selector: '[slot="suffix"]:not([hidden])',
240
- })
241
- ], IgcTextareaComponent.prototype, "_suffixes", void 0);
242
225
  __decorate([
243
226
  query('textarea', true)
244
227
  ], IgcTextareaComponent.prototype, "_input", void 0);
@@ -293,13 +276,6 @@ __decorate([
293
276
  __decorate([
294
277
  property({ type: Boolean, reflect: true, attribute: 'validate-only' })
295
278
  ], IgcTextareaComponent.prototype, "validateOnly", void 0);
296
- __decorate([
297
- watch('value')
298
- ], IgcTextareaComponent.prototype, "_valueChanged", null);
299
- __decorate([
300
- watch('rows', { waitUntilFirstUpdate: true }),
301
- watch('resize', { waitUntilFirstUpdate: true })
302
- ], IgcTextareaComponent.prototype, "_setAreaHeight", null);
303
279
  IgcTextareaComponent = IgcTextareaComponent_1 = __decorate([
304
280
  shadowOptions({ delegatesFocus: true })
305
281
  ], IgcTextareaComponent);
@@ -1 +1 @@
1
- {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/components/textarea/textarea.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type TemplateResult } from 'lit';\nimport {\n property,\n query,\n queryAssignedElements,\n queryAssignedNodes,\n} from 'lit/decorators.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { type StyleInfo, styleMap } from 'lit/directives/style-map.js';\n\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport {\n createFormValueState,\n type FormValueOf,\n} from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport {\n addSafeEventListener,\n asNumber,\n createCounter,\n isEmpty,\n} from '../common/util.js';\nimport type {\n RangeTextSelectMode,\n SelectionRangeDirection,\n TextareaResize,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles as shared } from './themes/shared/textarea.common.css.js';\nimport { styles } from './themes/textarea.base.css.js';\nimport { all } from './themes/themes.js';\nimport { textAreaValidators } from './validators.js';\n\nexport interface IgcTextareaComponentEventMap {\n igcInput: CustomEvent<string>;\n igcChange: CustomEvent<string>;\n // For analyzer meta only:\n /* skipWCPrefix */\n focus: FocusEvent;\n /* skipWCPrefix */\n blur: FocusEvent;\n}\n\n/**\n * This element represents a multi-line plain-text editing control,\n * useful when you want to allow users to enter a sizeable amount of free-form text,\n * for example a comment on a review or feedback form.\n *\n * @element igc-textarea\n *\n * @slot - Text content from the default slot will be used as the value of the component.\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot too-long - Renders content when the maxlength validation fails.\n * @slot too-short - Renders content when the minlength validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control receives user input.\n * @fires igcChange - Emitted when the a change to the control value is committed by the user.\n *\n * @csspart container - The main wrapper that holds all main input elements of the textarea.\n * @csspart input - The native input element of the igc-textarea.\n * @csspart label - The native label element of the igc-textarea.\n * @csspart prefix - The prefix wrapper of the igc-textarea.\n * @csspart suffix - The suffix wrapper of the igc-textarea.\n * @csspart helper-text - The helper text wrapper of the igc-textarea.\n */\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcTextareaComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<IgcTextareaComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-textarea';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcTextareaComponent, IgcValidationContainerComponent);\n }\n\n //#region Private properties and state\n\n private static readonly increment = createCounter();\n\n private readonly _themes = addThemingController(this, all);\n\n protected override get __validators() {\n return textAreaValidators;\n }\n\n protected override readonly _formValue: FormValueOf<string> =\n createFormValueState(this, { initialValue: '' });\n\n protected readonly _inputId = `textarea-${IgcTextareaComponent.increment()}`;\n\n @queryAssignedNodes({ flatten: true })\n private readonly _projected!: Node[];\n\n @queryAssignedElements({\n slot: 'prefix',\n selector: '[slot=\"prefix\"]:not([hidden])',\n })\n protected readonly _prefixes!: HTMLElement[];\n\n @queryAssignedElements({\n slot: 'suffix',\n selector: '[slot=\"suffix\"]:not([hidden])',\n })\n protected readonly _suffixes!: HTMLElement[];\n\n @query('textarea', true)\n private readonly _input!: HTMLTextAreaElement;\n\n private get _resizeStyles(): StyleInfo {\n return {\n resize: this.resize === 'auto' ? 'none' : this.resize,\n };\n }\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Specifies what if any permission the browser has to provide for automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n * Refer to [this page](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for additional information.\n *\n * @attr\n */\n @property()\n public autocomplete!: string;\n\n /**\n * Controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize).\n *\n * @attr\n */\n @property()\n public override autocapitalize!: string;\n\n /**\n * Hints at the type of data that might be entered by the user while editing the element or its contents.\n * This allows a browser to display an appropriate virtual keyboard.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)\n *\n * @attr inputmode\n */\n @property({ attribute: 'inputmode' })\n public override inputMode!: string;\n\n /**\n * The label for the control.\n *\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * The maximum number of characters (UTF-16 code units) that the user can enter.\n * If this value isn't specified, the user can enter an unlimited number of characters.\n *\n * @attr maxlength\n */\n @property({ type: Number, attribute: 'maxlength' })\n public maxLength!: number;\n\n /**\n * The minimum number of characters (UTF-16 code units) required that the user should enter.\n *\n * @attr minlength\n */\n @property({ type: Number, attribute: 'minlength' })\n public minLength!: number;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * The placeholder attribute of the control.\n *\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * Makes the control a readonly field.\n *\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Controls whether the control can be resized.\n * When `auto` is set, the control will try to expand and fit its content.\n *\n * @attr\n */\n @property()\n public resize: TextareaResize = 'vertical';\n\n /**\n * The number of visible text lines for the control. If it is specified, it must be a positive integer.\n * If it is not specified, the default value is 2.\n *\n * @attr\n */\n @property({ type: Number })\n public rows = 2;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the component\n *\n * @attr\n */\n @property()\n public set value(value: string) {\n this._formValue.setValueAndFormState(value);\n this._validate();\n }\n\n public get value(): string {\n return this._formValue.value;\n }\n\n /**\n * Controls whether the element may be checked for spelling errors.\n *\n * @attr\n */\n @property({\n type: Boolean,\n converter: {\n fromAttribute: (value) => !(!value || value === 'false'),\n toAttribute: (value) => (value ? 'true' : 'false'),\n },\n })\n public override spellcheck = true;\n\n /**\n * Indicates how the control should wrap the value for form submission.\n * Refer to [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attributes)\n * for explanation of the available values.\n *\n * @attr\n */\n @property()\n public wrap: 'hard' | 'soft' | 'off' = 'soft';\n\n /**\n * Enables validation rules to be evaluated without restricting user input. This applies to the `maxLength` property\n * when it is defined.\n *\n * @attr validate-only\n */\n @property({ type: Boolean, reflect: true, attribute: 'validate-only' })\n public validateOnly = false;\n\n //#endregion\n\n //#region Watchers\n\n @watch('value')\n protected async _valueChanged(): Promise<void> {\n await this.updateComplete;\n this._setAreaHeight();\n }\n\n @watch('rows', { waitUntilFirstUpdate: true })\n @watch('resize', { waitUntilFirstUpdate: true })\n protected _setAreaHeight(): void {\n if (this.resize === 'auto') {\n this._input.style.height = 'auto';\n this._input.style.height = `${this._setAutoHeight()}px`;\n } else {\n Object.assign(this._input.style, { height: undefined });\n }\n }\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n createResizeObserverController(this, {\n callback: this._setAreaHeight,\n });\n\n addSafeEventListener(this, 'focus', this._handleFocus);\n addSafeEventListener(this, 'blur', this._handleBlur);\n }\n\n protected override createRenderRoot(): HTMLElement | DocumentFragment {\n const root = super.createRenderRoot();\n root.addEventListener('slotchange', (event) =>\n this._handleSlotChange(event)\n );\n return root;\n }\n\n //#endregion\n\n //#region Internal methods\n\n protected _resolvePartNames() {\n return {\n container: true,\n prefixed: this._prefixes.length > 0,\n suffixed: this._suffixes.length > 0,\n filled: !!this.value,\n };\n }\n\n private _setAutoHeight(): number {\n const { borderTopWidth, borderBottomWidth } = getComputedStyle(this._input);\n return (\n this._input.scrollHeight +\n asNumber(borderTopWidth) +\n asNumber(borderBottomWidth)\n );\n }\n\n //#endregion\n\n //#region Event handlers\n\n protected _handleSlotChange({ target }: Event): void {\n const slot = target as HTMLSlotElement;\n\n // Default slot used for declarative value projection\n if (!slot.name) {\n const value = this._projected\n .map((node) => node.textContent?.trim())\n .filter((node) => Boolean(node))\n .join('\\r\\n');\n\n if (value !== this.value) {\n this.value = value;\n }\n }\n\n this.requestUpdate();\n }\n\n protected _handleInput(): void {\n this.value = this._input.value;\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleChange(): void {\n this.value = this._input.value;\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n protected _handleFocus(): void {\n this._dirty = true;\n }\n\n protected _handleBlur(): void {\n this._validate();\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Selects all text within the control. */\n public select(): void {\n this._input.select();\n }\n\n /** Sets the text selection range of the control */\n public setSelectionRange(\n start: number,\n end: number,\n direction: SelectionRangeDirection = 'none'\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /** Replaces the selected text in the control. */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n selectMode: RangeTextSelectMode = 'preserve'\n ): void {\n this._input.setRangeText(replacement, start, end, selectMode);\n this.value = this._input.value;\n }\n\n /* blazorSuppress */\n public override scrollTo(options?: ScrollToOptions | undefined): void;\n /* blazorSuppress */\n public override scrollTo(x: number, y: number): void;\n public override scrollTo(x?: unknown, y?: unknown): void {\n x != null && y != null\n ? this._input.scrollTo(x as number, y as number)\n : this._input.scrollTo(x as ScrollToOptions);\n }\n\n //#endregion\n\n //#region Renderers\n\n protected _renderPrefix() {\n return html`\n <div part=\"prefix\" .hidden=${isEmpty(this._prefixes)}>\n <slot name=\"prefix\"></slot>\n </div>\n `;\n }\n\n protected _renderSuffix() {\n return html`\n <div part=\"suffix\" .hidden=${isEmpty(this._suffixes)}>\n <slot name=\"suffix\"></slot>\n </div>\n `;\n }\n\n protected _renderLabel() {\n return this.label\n ? html`\n <label part=\"label\" for=${this.id || this._inputId}>\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n protected _renderStandard() {\n return html`\n ${this._renderLabel()}\n <div part=${partMap(this._resolvePartNames())}>\n ${this._renderPrefix()} ${this._renderInput()} ${this._renderSuffix()}\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderMaterial() {\n return html`\n <div\n part=${partMap({\n ...this._resolvePartNames(),\n labelled: !!this.label,\n placeholder: !!this.placeholder,\n })}\n >\n <div part=\"start\">${this._renderPrefix()}</div>\n ${this._renderInput()}\n <div part=\"notch\">${this._renderLabel()}</div>\n <div part=\"filler\"></div>\n <div part=\"end\">${this._renderSuffix()}</div>\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderInput() {\n return html`\n <slot style=\"display: none\"></slot>\n <textarea\n id=${this.id || this._inputId}\n part=\"input\"\n style=${styleMap(this._resizeStyles)}\n @input=${this._handleInput}\n @change=${this._handleChange}\n placeholder=${ifDefined(this.placeholder)}\n .rows=${this.rows}\n .value=${live(this.value)}\n .wrap=${this.wrap}\n autocomplete=${ifDefined(this.autocomplete as any)}\n autocapitalize=${ifDefined(this.autocapitalize as any)}\n inputmode=${ifDefined(this.inputMode)}\n spellcheck=${ifDefined(this.spellcheck)}\n minlength=${ifDefined(this.minLength)}\n maxlength=${ifDefined(this.validateOnly ? undefined : this.maxLength)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readOnly}\n aria-invalid=${this.invalid ? 'true' : 'false'}\n ></textarea>\n `;\n }\n\n protected _renderValidationContainer(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected override render() {\n return this._themes.theme === 'material'\n ? this._renderMaterial()\n : this._renderStandard();\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-textarea': IgcTextareaComponent;\n }\n}\n"]}
1
+ {"version":3,"file":"textarea.js","sourceRoot":"","sources":["../../../src/components/textarea/textarea.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n html,\n LitElement,\n nothing,\n type PropertyValues,\n type TemplateResult,\n} from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { live } from 'lit/directives/live.js';\nimport { styleMap } from 'lit/directives/style-map.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport { createResizeObserverController } from '../common/controllers/resize-observer.js';\nimport {\n addSlotController,\n type InferSlotNames,\n type SlotChangeCallbackParameters,\n setSlots,\n} from '../common/controllers/slot.js';\nimport { shadowOptions } from '../common/decorators/shadow-options.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { FormAssociatedRequiredMixin } from '../common/mixins/forms/associated-required.js';\nimport { createFormValueState } from '../common/mixins/forms/form-value.js';\nimport { partMap } from '../common/part-map.js';\nimport { addSafeEventListener, asNumber } from '../common/util.js';\nimport type {\n RangeTextSelectMode,\n SelectionRangeDirection,\n TextareaResize,\n} from '../types.js';\nimport IgcValidationContainerComponent from '../validation-container/validation-container.js';\nimport { styles as shared } from './themes/shared/textarea.common.css.js';\nimport { styles } from './themes/textarea.base.css.js';\nimport { all } from './themes/themes.js';\nimport { textAreaValidators } from './validators.js';\n\nexport interface IgcTextareaComponentEventMap {\n igcInput: CustomEvent<string>;\n igcChange: CustomEvent<string>;\n // For analyzer meta only:\n /* skipWCPrefix */\n focus: FocusEvent;\n /* skipWCPrefix */\n blur: FocusEvent;\n}\n\nlet nextId = 1;\nconst Slots = setSlots(\n 'prefix',\n 'suffix',\n 'helper-text',\n 'value-missing',\n 'too-long',\n 'too-short',\n 'custom-error',\n 'invalid'\n);\n\n/**\n * This element represents a multi-line plain-text editing control,\n * useful when you want to allow users to enter a sizeable amount of free-form text,\n * for example a comment on a review or feedback form.\n *\n * @element igc-textarea\n *\n * @slot - Text content from the default slot will be used as the value of the component.\n * @slot prefix - Renders content before the input.\n * @slot suffix - Renders content after input.\n * @slot helper-text - Renders content below the input.\n * @slot value-missing - Renders content when the required validation fails.\n * @slot too-long - Renders content when the maxlength validation fails.\n * @slot too-short - Renders content when the minlength validation fails.\n * @slot custom-error - Renders content when setCustomValidity(message) is set.\n * @slot invalid - Renders content when the component is in invalid state (validity.valid = false).\n *\n * @fires igcInput - Emitted when the control receives user input.\n * @fires igcChange - Emitted when the a change to the control value is committed by the user.\n *\n * @csspart container - The main wrapper that holds all main input elements of the textarea.\n * @csspart input - The native input element of the igc-textarea.\n * @csspart label - The native label element of the igc-textarea.\n * @csspart prefix - The prefix wrapper of the igc-textarea.\n * @csspart suffix - The suffix wrapper of the igc-textarea.\n * @csspart helper-text - The helper text wrapper of the igc-textarea.\n */\n@shadowOptions({ delegatesFocus: true })\nexport default class IgcTextareaComponent extends FormAssociatedRequiredMixin(\n EventEmitterMixin<IgcTextareaComponentEventMap, Constructor<LitElement>>(\n LitElement\n )\n) {\n public static readonly tagName = 'igc-textarea';\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcTextareaComponent, IgcValidationContainerComponent);\n }\n\n //#region Private properties and state\n\n private readonly _inputId = `textarea-${nextId++}`;\n\n private readonly _themes = addThemingController(this, all);\n\n private readonly _slots = addSlotController(this, {\n slots: Slots,\n onChange: this._handleSlotChange,\n });\n\n @query('textarea', true)\n private readonly _input!: HTMLTextAreaElement;\n\n protected override get __validators() {\n return textAreaValidators;\n }\n\n protected override readonly _formValue = createFormValueState(this, {\n initialValue: '',\n });\n\n //#endregion\n\n //#region Public properties and attributes\n\n /**\n * Specifies what if any permission the browser has to provide for automated assistance in filling out form field values,\n * as well as guidance to the browser as to the type of information expected in the field.\n * Refer to [this page](https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes/autocomplete) for additional information.\n *\n * @attr\n */\n @property()\n public autocomplete!: string;\n\n /**\n * Controls whether and how text input is automatically capitalized as it is entered/edited by the user.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/autocapitalize).\n *\n * @attr\n */\n @property()\n public override autocapitalize!: string;\n\n /**\n * Hints at the type of data that might be entered by the user while editing the element or its contents.\n * This allows a browser to display an appropriate virtual keyboard.\n *\n * [MDN documentation](https://developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/inputmode)\n *\n * @attr inputmode\n */\n @property({ attribute: 'inputmode' })\n public override inputMode!: string;\n\n /**\n * The label for the control.\n *\n * @attr\n */\n @property()\n public label!: string;\n\n /**\n * The maximum number of characters (UTF-16 code units) that the user can enter.\n * If this value isn't specified, the user can enter an unlimited number of characters.\n *\n * @attr maxlength\n */\n @property({ type: Number, attribute: 'maxlength' })\n public maxLength!: number;\n\n /**\n * The minimum number of characters (UTF-16 code units) required that the user should enter.\n *\n * @attr minlength\n */\n @property({ type: Number, attribute: 'minlength' })\n public minLength!: number;\n\n /**\n * Whether the control will have outlined appearance.\n * @attr\n */\n @property({ reflect: true, type: Boolean })\n public outlined = false;\n\n /**\n * The placeholder attribute of the control.\n *\n * @attr\n */\n @property()\n public placeholder!: string;\n\n /**\n * Makes the control a readonly field.\n *\n * @attr readonly\n */\n @property({ type: Boolean, reflect: true, attribute: 'readonly' })\n public readOnly = false;\n\n /**\n * Controls whether the control can be resized.\n * When `auto` is set, the control will try to expand and fit its content.\n *\n * @attr\n */\n @property()\n public resize: TextareaResize = 'vertical';\n\n /**\n * The number of visible text lines for the control. If it is specified, it must be a positive integer.\n * If it is not specified, the default value is 2.\n *\n * @attr\n */\n @property({ type: Number })\n public rows = 2;\n\n /* @tsTwoWayProperty(true, \"igcChange\", \"detail\", false) */\n /**\n * The value of the component\n *\n * @attr\n */\n @property()\n public set value(value: string) {\n this._formValue.setValueAndFormState(value);\n }\n\n public get value(): string {\n return this._formValue.value;\n }\n\n /**\n * Controls whether the element may be checked for spelling errors.\n *\n * @attr\n */\n @property({\n type: Boolean,\n converter: {\n fromAttribute: (value) => !(!value || value === 'false'),\n toAttribute: (value) => (value ? 'true' : 'false'),\n },\n })\n public override spellcheck = true;\n\n /**\n * Indicates how the control should wrap the value for form submission.\n * Refer to [this page on MDN](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/textarea#attributes)\n * for explanation of the available values.\n *\n * @attr\n */\n @property()\n public wrap: 'hard' | 'soft' | 'off' = 'soft';\n\n /**\n * Enables validation rules to be evaluated without restricting user input. This applies to the `maxLength` property\n * when it is defined.\n *\n * @attr validate-only\n */\n @property({ type: Boolean, reflect: true, attribute: 'validate-only' })\n public validateOnly = false;\n\n //#endregion\n\n //#region Life-cycle hooks\n\n constructor() {\n super();\n\n createResizeObserverController(this, {\n callback: this._setAreaHeight,\n });\n\n addSafeEventListener(this, 'blur', this._handleBlur);\n }\n\n protected override updated(props: PropertyValues<this>): void {\n if (props.has('rows') || props.has('resize') || props.has('value')) {\n this._setAreaHeight();\n }\n }\n\n //#endregion\n\n //#region Internal methods\n\n private _setAutoHeight(): number {\n const { borderTopWidth, borderBottomWidth } = getComputedStyle(this._input);\n return (\n this._input.scrollHeight +\n asNumber(borderTopWidth) +\n asNumber(borderBottomWidth)\n );\n }\n\n protected _setAreaHeight(): void {\n if (this.resize === 'auto') {\n this._input.style.height = 'auto';\n this._input.style.height = `${this._setAutoHeight()}px`;\n } else {\n Object.assign(this._input.style, { height: undefined });\n }\n }\n\n protected _resolvePartNames() {\n return {\n container: true,\n prefixed: this._slots.hasAssignedElements('prefix', {\n selector: ':not([hidden])',\n }),\n suffixed: this._slots.hasAssignedElements('suffix', {\n selector: ':not([hidden])',\n }),\n filled: !!this.value,\n };\n }\n\n //#endregion\n\n //#region Event handlers\n\n private _handleSlotChange({\n isDefault,\n }: SlotChangeCallbackParameters<InferSlotNames<typeof Slots>>): void {\n if (isDefault) {\n const value = this._slots\n .getAssignedNodes('[default]', true)\n .map((node) => node.textContent?.trim())\n .filter((node) => Boolean(node))\n .join('\\r\\n');\n\n if (value !== this.value) {\n this.value = value;\n }\n }\n }\n\n protected _handleInput(): void {\n this._setTouchedState();\n this.value = this._input.value;\n this.emitEvent('igcInput', { detail: this.value });\n }\n\n protected _handleChange(): void {\n this._setTouchedState();\n this.value = this._input.value;\n this.emitEvent('igcChange', { detail: this.value });\n }\n\n //#endregion\n\n //#region Public methods\n\n /** Selects all text within the control. */\n public select(): void {\n this._input.select();\n }\n\n /** Sets the text selection range of the control */\n public setSelectionRange(\n start: number,\n end: number,\n direction: SelectionRangeDirection = 'none'\n ): void {\n this._input.setSelectionRange(start, end, direction);\n }\n\n /** Replaces the selected text in the control. */\n public setRangeText(\n replacement: string,\n start: number,\n end: number,\n selectMode: RangeTextSelectMode = 'preserve'\n ): void {\n this._input.setRangeText(replacement, start, end, selectMode);\n this.value = this._input.value;\n }\n\n /* blazorSuppress */\n public override scrollTo(options?: ScrollToOptions | undefined): void;\n /* blazorSuppress */\n public override scrollTo(x: number, y: number): void;\n public override scrollTo(x?: unknown, y?: unknown): void {\n x != null && y != null\n ? this._input.scrollTo(x as number, y as number)\n : this._input.scrollTo(x as ScrollToOptions);\n }\n\n //#endregion\n\n //#region Renderers\n\n protected _renderSlot(name: InferSlotNames<typeof Slots>) {\n const isHidden = !this._slots.hasAssignedElements(name, {\n selector: ':not([hidden])',\n });\n\n return html`\n <div part=${name} ?hidden=${isHidden}>\n <slot name=${name}></slot>\n </div>\n `;\n }\n\n protected _renderLabel() {\n return this.label\n ? html`\n <label part=\"label\" for=${this.id || this._inputId}>\n ${this.label}\n </label>\n `\n : nothing;\n }\n\n protected _renderStandard() {\n return html`\n ${this._renderLabel()}\n <div part=${partMap(this._resolvePartNames())}>\n ${this._renderSlot('prefix')} ${this._renderInput()}\n ${this._renderSlot('suffix')}\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderMaterial() {\n return html`\n <div\n part=${partMap({\n ...this._resolvePartNames(),\n labelled: !!this.label,\n placeholder: !!this.placeholder,\n })}\n >\n <div part=\"start\">${this._renderSlot('prefix')}</div>\n ${this._renderInput()}\n <div part=\"notch\">${this._renderLabel()}</div>\n <div part=\"filler\"></div>\n <div part=\"end\">${this._renderSlot('suffix')}</div>\n </div>\n ${this._renderValidationContainer()}\n `;\n }\n\n protected _renderInput() {\n const describedBy = this._slots.hasAssignedElements('helper-text')\n ? 'helper-text'\n : nothing;\n\n return html`\n <slot style=\"display: none\"></slot>\n <textarea\n id=${this.id || this._inputId}\n part=\"input\"\n style=${styleMap({\n resize: this.resize === 'auto' ? 'none' : this.resize,\n })}\n @input=${this._handleInput}\n @change=${this._handleChange}\n placeholder=${ifDefined(this.placeholder)}\n .rows=${this.rows}\n .value=${live(this.value)}\n .wrap=${this.wrap}\n autocomplete=${ifDefined(this.autocomplete as any)}\n autocapitalize=${ifDefined(this.autocapitalize as any)}\n inputmode=${ifDefined(this.inputMode)}\n spellcheck=${ifDefined(this.spellcheck)}\n minlength=${ifDefined(this.minLength)}\n maxlength=${ifDefined(this.validateOnly ? undefined : this.maxLength)}\n ?disabled=${this.disabled}\n ?required=${this.required}\n ?readonly=${this.readOnly}\n aria-describedby=${describedBy}\n ></textarea>\n `;\n }\n\n protected _renderValidationContainer(): TemplateResult {\n return IgcValidationContainerComponent.create(this);\n }\n\n protected override render() {\n return cache(\n this._themes.theme === 'material'\n ? this._renderMaterial()\n : this._renderStandard()\n );\n }\n\n //#endregion\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-textarea': IgcTextareaComponent;\n }\n}\n"]}