igniteui-webcomponents 6.2.0 → 6.3.0-RC.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 (688) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/components/accordion/accordion.js +4 -8
  3. package/components/accordion/accordion.js.map +1 -1
  4. package/components/accordion/themes/accordion.base.css.js +1 -1
  5. package/components/accordion/themes/accordion.base.css.js.map +1 -1
  6. package/components/avatar/avatar.js +3 -4
  7. package/components/avatar/avatar.js.map +1 -1
  8. package/components/badge/badge.js +3 -4
  9. package/components/badge/badge.js.map +1 -1
  10. package/components/banner/banner.js +3 -4
  11. package/components/banner/banner.js.map +1 -1
  12. package/components/banner/themes/banner.base.css.js +1 -1
  13. package/components/banner/themes/banner.base.css.js.map +1 -1
  14. package/components/banner/themes/shared/banner.bootstrap.css.js +1 -1
  15. package/components/banner/themes/shared/banner.bootstrap.css.js.map +1 -1
  16. package/components/banner/themes/shared/banner.fluent.css.js +1 -1
  17. package/components/banner/themes/shared/banner.fluent.css.js.map +1 -1
  18. package/components/banner/themes/shared/banner.indigo.css.js +1 -1
  19. package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
  20. package/components/banner/themes/shared/banner.material.css.js +1 -1
  21. package/components/banner/themes/shared/banner.material.css.js.map +1 -1
  22. package/components/button/button-base.js +1 -1
  23. package/components/button/button-base.js.map +1 -1
  24. package/components/button/button.js +3 -4
  25. package/components/button/button.js.map +1 -1
  26. package/components/button/icon-button.js +3 -4
  27. package/components/button/icon-button.js.map +1 -1
  28. package/components/button/themes/button/button.base.css.js +1 -1
  29. package/components/button/themes/button/button.base.css.js.map +1 -1
  30. package/components/button/themes/button/shared/button.common.css.js +1 -1
  31. package/components/button/themes/button/shared/button.common.css.js.map +1 -1
  32. package/components/button/themes/button/shared/button.fluent.css.js +1 -1
  33. package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
  34. package/components/button/themes/button/shared/button.indigo.css.js +1 -1
  35. package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
  36. package/components/button/themes/icon-button/icon-button.base.css.js +1 -1
  37. package/components/button/themes/icon-button/icon-button.base.css.js.map +1 -1
  38. package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js +1 -1
  39. package/components/button/themes/icon-button/shared/icon-button.bootstrap.css.js.map +1 -1
  40. package/components/button/themes/icon-button/shared/icon-button.fluent.css.js +1 -1
  41. package/components/button/themes/icon-button/shared/icon-button.fluent.css.js.map +1 -1
  42. package/components/button/themes/icon-button/shared/icon-button.indigo.css.js +1 -1
  43. package/components/button/themes/icon-button/shared/icon-button.indigo.css.js.map +1 -1
  44. package/components/button/themes/icon-button/shared/icon-button.material.css.js +1 -1
  45. package/components/button/themes/icon-button/shared/icon-button.material.css.js.map +1 -1
  46. package/components/button-group/button-group.js +3 -4
  47. package/components/button-group/button-group.js.map +1 -1
  48. package/components/button-group/themes/shared/button/button.bootstrap.css.js +1 -1
  49. package/components/button-group/themes/shared/button/button.bootstrap.css.js.map +1 -1
  50. package/components/button-group/themes/shared/button/button.common.css.js +1 -1
  51. package/components/button-group/themes/shared/button/button.common.css.js.map +1 -1
  52. package/components/button-group/themes/shared/button/button.indigo.css.js +1 -1
  53. package/components/button-group/themes/shared/button/button.indigo.css.js.map +1 -1
  54. package/components/button-group/toggle-button.js +4 -3
  55. package/components/button-group/toggle-button.js.map +1 -1
  56. package/components/calendar/calendar.d.ts +1 -1
  57. package/components/calendar/calendar.js +3 -4
  58. package/components/calendar/calendar.js.map +1 -1
  59. package/components/calendar/days-view/days-view.js +5 -6
  60. package/components/calendar/days-view/days-view.js.map +1 -1
  61. package/components/calendar/months-view/months-view.js +5 -6
  62. package/components/calendar/months-view/months-view.js.map +1 -1
  63. package/components/calendar/themes/calendar.base.css.js +1 -1
  64. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  65. package/components/calendar/themes/days-view.base.css.js +1 -1
  66. package/components/calendar/themes/days-view.base.css.js.map +1 -1
  67. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  68. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  69. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
  70. package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
  71. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
  72. package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
  73. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js +1 -1
  74. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js.map +1 -1
  75. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  76. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  77. package/components/calendar/themes/shared/material/calendar.material.css.js +1 -1
  78. package/components/calendar/themes/shared/material/calendar.material.css.js.map +1 -1
  79. package/components/calendar/themes/year-month-view.base.css.js +1 -1
  80. package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
  81. package/components/calendar/years-view/years-view.js +5 -6
  82. package/components/calendar/years-view/years-view.js.map +1 -1
  83. package/components/card/card.actions.js +3 -4
  84. package/components/card/card.actions.js.map +1 -1
  85. package/components/card/card.content.js +3 -4
  86. package/components/card/card.content.js.map +1 -1
  87. package/components/card/card.header.js +3 -4
  88. package/components/card/card.header.js.map +1 -1
  89. package/components/card/card.js +3 -4
  90. package/components/card/card.js.map +1 -1
  91. package/components/card/card.media.js +3 -4
  92. package/components/card/card.media.js.map +1 -1
  93. package/components/card/themes/card.actions.base.css.js +1 -1
  94. package/components/card/themes/card.actions.base.css.js.map +1 -1
  95. package/components/card/themes/card.content.base.css.js +1 -1
  96. package/components/card/themes/card.content.base.css.js.map +1 -1
  97. package/components/card/themes/card.header.base.css.js +1 -1
  98. package/components/card/themes/card.header.base.css.js.map +1 -1
  99. package/components/card/themes/shared/actions/card.actions.bootstrap.css.js +1 -1
  100. package/components/card/themes/shared/actions/card.actions.bootstrap.css.js.map +1 -1
  101. package/components/card/themes/shared/actions/card.actions.indigo.css.js +1 -1
  102. package/components/card/themes/shared/actions/card.actions.indigo.css.js.map +1 -1
  103. package/components/card/themes/shared/container/card.bootstrap.css.js +1 -1
  104. package/components/card/themes/shared/container/card.bootstrap.css.js.map +1 -1
  105. package/components/card/themes/shared/container/card.indigo.css.js +1 -1
  106. package/components/card/themes/shared/container/card.indigo.css.js.map +1 -1
  107. package/components/card/themes/shared/content/card.content.bootstrap.css.js +1 -1
  108. package/components/card/themes/shared/content/card.content.bootstrap.css.js.map +1 -1
  109. package/components/card/themes/shared/header/card.header.fluent.css.js +1 -1
  110. package/components/card/themes/shared/header/card.header.fluent.css.js.map +1 -1
  111. package/components/card/themes/shared/header/card.header.indigo.css.js +1 -1
  112. package/components/card/themes/shared/header/card.header.indigo.css.js.map +1 -1
  113. package/components/carousel/carousel-indicator-container.js +3 -4
  114. package/components/carousel/carousel-indicator-container.js.map +1 -1
  115. package/components/carousel/carousel-indicator.js +3 -4
  116. package/components/carousel/carousel-indicator.js.map +1 -1
  117. package/components/carousel/carousel-slide.js +3 -4
  118. package/components/carousel/carousel-slide.js.map +1 -1
  119. package/components/carousel/carousel.js +3 -7
  120. package/components/carousel/carousel.js.map +1 -1
  121. package/components/carousel/themes/carousel.base.css.js +1 -1
  122. package/components/carousel/themes/carousel.base.css.js.map +1 -1
  123. package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
  124. package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
  125. package/components/chat/chat-input.d.ts +91 -0
  126. package/components/chat/chat-input.js +263 -0
  127. package/components/chat/chat-input.js.map +1 -0
  128. package/components/chat/chat-message.d.ts +48 -0
  129. package/components/chat/chat-message.js +199 -0
  130. package/components/chat/chat-message.js.map +1 -0
  131. package/components/chat/chat-state.d.ts +130 -0
  132. package/components/chat/chat-state.js +180 -0
  133. package/components/chat/chat-state.js.map +1 -0
  134. package/components/chat/chat.d.ts +151 -0
  135. package/components/chat/chat.js +325 -0
  136. package/components/chat/chat.js.map +1 -0
  137. package/components/chat/extras/markdown-renderer.d.ts +26 -0
  138. package/components/chat/extras/markdown-renderer.js +49 -0
  139. package/components/chat/extras/markdown-renderer.js.map +1 -0
  140. package/components/chat/message-attachments.d.ts +56 -0
  141. package/components/chat/message-attachments.js +132 -0
  142. package/components/chat/message-attachments.js.map +1 -0
  143. package/components/chat/themes/attachments.d.ts +2 -0
  144. package/components/chat/themes/attachments.js +14 -0
  145. package/components/chat/themes/attachments.js.map +1 -0
  146. package/components/chat/themes/chat.base.css.d.ts +1 -0
  147. package/components/chat/themes/chat.base.css.js +3 -0
  148. package/components/chat/themes/chat.base.css.js.map +1 -0
  149. package/components/chat/themes/dark/chat.bootstrap.css.d.ts +1 -0
  150. package/components/chat/themes/dark/chat.bootstrap.css.js +3 -0
  151. package/components/chat/themes/dark/chat.bootstrap.css.js.map +1 -0
  152. package/components/chat/themes/dark/chat.fluent.css.d.ts +1 -0
  153. package/components/chat/themes/dark/chat.fluent.css.js +3 -0
  154. package/components/chat/themes/dark/chat.fluent.css.js.map +1 -0
  155. package/components/chat/themes/dark/chat.indigo.css.d.ts +1 -0
  156. package/components/chat/themes/dark/chat.indigo.css.js +3 -0
  157. package/components/chat/themes/dark/chat.indigo.css.js.map +1 -0
  158. package/components/chat/themes/dark/chat.material.css.d.ts +1 -0
  159. package/components/chat/themes/dark/chat.material.css.js +3 -0
  160. package/components/chat/themes/dark/chat.material.css.js.map +1 -0
  161. package/components/chat/themes/input.base.css.d.ts +1 -0
  162. package/components/chat/themes/input.base.css.js +3 -0
  163. package/components/chat/themes/input.base.css.js.map +1 -0
  164. package/components/chat/themes/input.d.ts +2 -0
  165. package/components/chat/themes/input.js +35 -0
  166. package/components/chat/themes/input.js.map +1 -0
  167. package/components/chat/themes/light/chat.bootstrap.css.d.ts +1 -0
  168. package/components/chat/themes/light/chat.bootstrap.css.js +3 -0
  169. package/components/chat/themes/light/chat.bootstrap.css.js.map +1 -0
  170. package/components/chat/themes/light/chat.fluent.css.d.ts +1 -0
  171. package/components/chat/themes/light/chat.fluent.css.js +3 -0
  172. package/components/chat/themes/light/chat.fluent.css.js.map +1 -0
  173. package/components/chat/themes/light/chat.indigo.css.d.ts +1 -0
  174. package/components/chat/themes/light/chat.indigo.css.js +3 -0
  175. package/components/chat/themes/light/chat.indigo.css.js.map +1 -0
  176. package/components/chat/themes/light/chat.material.css.d.ts +1 -0
  177. package/components/chat/themes/light/chat.material.css.js +3 -0
  178. package/components/chat/themes/light/chat.material.css.js.map +1 -0
  179. package/components/chat/themes/light/chat.shared.css.d.ts +1 -0
  180. package/components/chat/themes/light/chat.shared.css.js +3 -0
  181. package/components/chat/themes/light/chat.shared.css.js.map +1 -0
  182. package/components/chat/themes/message-attachments.base.css.d.ts +1 -0
  183. package/components/chat/themes/message-attachments.base.css.js +3 -0
  184. package/components/chat/themes/message-attachments.base.css.js.map +1 -0
  185. package/components/chat/themes/message.base.css.d.ts +1 -0
  186. package/components/chat/themes/message.base.css.js +3 -0
  187. package/components/chat/themes/message.base.css.js.map +1 -0
  188. package/components/chat/themes/message.d.ts +2 -0
  189. package/components/chat/themes/message.js +28 -0
  190. package/components/chat/themes/message.js.map +1 -0
  191. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.d.ts +1 -0
  192. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.js +3 -0
  193. package/components/chat/themes/shared/chat-message/chat-message.bootstrap.css.js.map +1 -0
  194. package/components/chat/themes/shared/chat-message/chat-message.common.css.d.ts +1 -0
  195. package/components/chat/themes/shared/chat-message/chat-message.common.css.js +3 -0
  196. package/components/chat/themes/shared/chat-message/chat-message.common.css.js.map +1 -0
  197. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.d.ts +1 -0
  198. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.js +3 -0
  199. package/components/chat/themes/shared/chat-message/chat-message.fluent.css.js.map +1 -0
  200. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.d.ts +1 -0
  201. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.js +3 -0
  202. package/components/chat/themes/shared/chat-message/chat-message.indigo.css.js.map +1 -0
  203. package/components/chat/themes/shared/chat.bootstrap.css.d.ts +1 -0
  204. package/components/chat/themes/shared/chat.bootstrap.css.js +3 -0
  205. package/components/chat/themes/shared/chat.bootstrap.css.js.map +1 -0
  206. package/components/chat/themes/shared/chat.common.css.d.ts +1 -0
  207. package/components/chat/themes/shared/chat.common.css.js +3 -0
  208. package/components/chat/themes/shared/chat.common.css.js.map +1 -0
  209. package/components/chat/themes/shared/chat.fluent.css.d.ts +1 -0
  210. package/components/chat/themes/shared/chat.fluent.css.js +3 -0
  211. package/components/chat/themes/shared/chat.fluent.css.js.map +1 -0
  212. package/components/chat/themes/shared/chat.indigo.css.d.ts +1 -0
  213. package/components/chat/themes/shared/chat.indigo.css.js +3 -0
  214. package/components/chat/themes/shared/chat.indigo.css.js.map +1 -0
  215. package/components/chat/themes/shared/input/input.bootstrap.css.d.ts +1 -0
  216. package/components/chat/themes/shared/input/input.bootstrap.css.js +3 -0
  217. package/components/chat/themes/shared/input/input.bootstrap.css.js.map +1 -0
  218. package/components/chat/themes/shared/input/input.common.css.d.ts +1 -0
  219. package/components/chat/themes/shared/input/input.common.css.js +3 -0
  220. package/components/chat/themes/shared/input/input.common.css.js.map +1 -0
  221. package/components/chat/themes/shared/input/input.fluent.css.d.ts +1 -0
  222. package/components/chat/themes/shared/input/input.fluent.css.js +3 -0
  223. package/components/chat/themes/shared/input/input.fluent.css.js.map +1 -0
  224. package/components/chat/themes/shared/input/input.indigo.css.d.ts +1 -0
  225. package/components/chat/themes/shared/input/input.indigo.css.js +3 -0
  226. package/components/chat/themes/shared/input/input.indigo.css.js.map +1 -0
  227. package/components/chat/themes/shared/input/input.material.css.d.ts +1 -0
  228. package/components/chat/themes/shared/input/input.material.css.js +3 -0
  229. package/components/chat/themes/shared/input/input.material.css.js.map +1 -0
  230. package/components/chat/themes/shared/message-attachments/message-attachments.common.css.d.ts +1 -0
  231. package/components/chat/themes/shared/message-attachments/message-attachments.common.css.js +3 -0
  232. package/components/chat/themes/shared/message-attachments/message-attachments.common.css.js.map +1 -0
  233. package/components/chat/themes/shared/message-attachments/message-attachments.indigo.css.d.ts +1 -0
  234. package/components/chat/themes/shared/message-attachments/message-attachments.indigo.css.js +3 -0
  235. package/components/chat/themes/shared/message-attachments/message-attachments.indigo.css.js.map +1 -0
  236. package/components/chat/themes/themes.d.ts +2 -0
  237. package/components/chat/themes/themes.js +49 -0
  238. package/components/chat/themes/themes.js.map +1 -0
  239. package/components/chat/types.d.ts +149 -0
  240. package/components/chat/types.js +2 -0
  241. package/components/chat/types.js.map +1 -0
  242. package/components/chat/utils.d.ts +16 -0
  243. package/components/chat/utils.js +82 -0
  244. package/components/chat/utils.js.map +1 -0
  245. package/components/checkbox/checkbox-base.d.ts +1 -1
  246. package/components/checkbox/checkbox.js +3 -4
  247. package/components/checkbox/checkbox.js.map +1 -1
  248. package/components/checkbox/switch.js +3 -4
  249. package/components/checkbox/switch.js.map +1 -1
  250. package/components/checkbox/themes/checkbox.base.css.js +1 -1
  251. package/components/checkbox/themes/checkbox.base.css.js.map +1 -1
  252. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js +1 -1
  253. package/components/checkbox/themes/dark/switch/switch.bootstrap.css.js.map +1 -1
  254. package/components/checkbox/themes/dark/switch/switch.fluent.css.js +1 -1
  255. package/components/checkbox/themes/dark/switch/switch.fluent.css.js.map +1 -1
  256. package/components/checkbox/themes/dark/switch/switch.indigo.css.js +1 -1
  257. package/components/checkbox/themes/dark/switch/switch.indigo.css.js.map +1 -1
  258. package/components/checkbox/themes/dark/switch/switch.material.css.js +1 -1
  259. package/components/checkbox/themes/dark/switch/switch.material.css.js.map +1 -1
  260. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js +1 -1
  261. package/components/checkbox/themes/light/switch/switch.bootstrap.css.js.map +1 -1
  262. package/components/checkbox/themes/light/switch/switch.fluent.css.js +1 -1
  263. package/components/checkbox/themes/light/switch/switch.fluent.css.js.map +1 -1
  264. package/components/checkbox/themes/light/switch/switch.indigo.css.js +1 -1
  265. package/components/checkbox/themes/light/switch/switch.indigo.css.js.map +1 -1
  266. package/components/checkbox/themes/light/switch/switch.material.css.js +1 -1
  267. package/components/checkbox/themes/light/switch/switch.material.css.js.map +1 -1
  268. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
  269. package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
  270. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
  271. package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
  272. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
  273. package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
  274. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
  275. package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
  276. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js +1 -1
  277. package/components/checkbox/themes/shared/switch/switch.bootstrap.css.js.map +1 -1
  278. package/components/checkbox/themes/shared/switch/switch.common.css.js +1 -1
  279. package/components/checkbox/themes/shared/switch/switch.common.css.js.map +1 -1
  280. package/components/checkbox/themes/shared/switch/switch.fluent.css.js +1 -1
  281. package/components/checkbox/themes/shared/switch/switch.fluent.css.js.map +1 -1
  282. package/components/checkbox/themes/shared/switch/switch.indigo.css.js +1 -1
  283. package/components/checkbox/themes/shared/switch/switch.indigo.css.js.map +1 -1
  284. package/components/checkbox/themes/switch.base.css.js +1 -1
  285. package/components/checkbox/themes/switch.base.css.js.map +1 -1
  286. package/components/chip/chip.js +3 -4
  287. package/components/chip/chip.js.map +1 -1
  288. package/components/chip/themes/chip.base.css.js +1 -1
  289. package/components/chip/themes/chip.base.css.js.map +1 -1
  290. package/components/chip/themes/shared/chip.indigo.css.js +1 -1
  291. package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
  292. package/components/combo/combo-header.js +3 -4
  293. package/components/combo/combo-header.js.map +1 -1
  294. package/components/combo/combo-item.js +3 -4
  295. package/components/combo/combo-item.js.map +1 -1
  296. package/components/combo/combo-list.js +2 -3
  297. package/components/combo/combo-list.js.map +1 -1
  298. package/components/combo/combo.js +4 -3
  299. package/components/combo/combo.js.map +1 -1
  300. package/components/combo/controllers/navigation.js +1 -1
  301. package/components/combo/controllers/navigation.js.map +1 -1
  302. package/components/combo/themes/combo-item.base.css.js +1 -1
  303. package/components/combo/themes/combo-item.base.css.js.map +1 -1
  304. package/components/combo/themes/combo.base.css.js +1 -1
  305. package/components/combo/themes/combo.base.css.js.map +1 -1
  306. package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
  307. package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
  308. package/components/combo/themes/shared/combo.common.css.js +1 -1
  309. package/components/combo/themes/shared/combo.common.css.js.map +1 -1
  310. package/components/combo/themes/shared/combo.fluent.css.js +1 -1
  311. package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
  312. package/components/combo/themes/shared/combo.indigo.css.js +1 -1
  313. package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
  314. package/components/combo/themes/shared/combo.material.css.js +1 -1
  315. package/components/combo/themes/shared/combo.material.css.js.map +1 -1
  316. package/components/common/context.d.ts +8 -1
  317. package/components/common/context.js +3 -1
  318. package/components/common/context.js.map +1 -1
  319. package/components/common/controllers/focus-ring.js +5 -5
  320. package/components/common/controllers/focus-ring.js.map +1 -1
  321. package/components/common/controllers/key-bindings.js +7 -6
  322. package/components/common/controllers/key-bindings.js.map +1 -1
  323. package/components/common/definitions/defineAllComponents.js +2 -0
  324. package/components/common/definitions/defineAllComponents.js.map +1 -1
  325. package/components/common/i18n/chat.resources.d.ts +11 -0
  326. package/components/common/i18n/chat.resources.js +11 -0
  327. package/components/common/i18n/chat.resources.js.map +1 -0
  328. package/components/common/mixins/forms/associated.js +1 -1
  329. package/components/common/mixins/forms/associated.js.map +1 -1
  330. package/components/common/mixins/forms/form-value.js +1 -1
  331. package/components/common/mixins/forms/form-value.js.map +1 -1
  332. package/components/common/part-map.d.ts +1 -1
  333. package/components/common/util.d.ts +22 -0
  334. package/components/common/util.js +84 -2
  335. package/components/common/util.js.map +1 -1
  336. package/components/date-picker/date-picker.js +7 -6
  337. package/components/date-picker/date-picker.js.map +1 -1
  338. package/components/date-picker/themes/date-picker.base.css.js +1 -1
  339. package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
  340. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  341. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  342. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  343. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  344. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  345. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  346. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  347. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  348. package/components/date-range-picker/date-range-picker.base.css.js +1 -1
  349. package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
  350. package/components/date-range-picker/date-range-picker.d.ts +1 -1
  351. package/components/date-range-picker/date-range-picker.js +5 -5
  352. package/components/date-range-picker/date-range-picker.js.map +1 -1
  353. package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
  354. package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
  355. package/components/date-range-picker/predefined-ranges-area.js +3 -4
  356. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  357. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  358. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  359. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  360. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  361. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  362. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  363. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  364. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  365. package/components/date-time-input/date-time-input.js +3 -4
  366. package/components/date-time-input/date-time-input.js.map +1 -1
  367. package/components/date-time-input/date-util.js +11 -11
  368. package/components/date-time-input/date-util.js.map +1 -1
  369. package/components/dialog/dialog.js +3 -4
  370. package/components/dialog/dialog.js.map +1 -1
  371. package/components/dialog/themes/dialog.base.css.js +1 -1
  372. package/components/dialog/themes/dialog.base.css.js.map +1 -1
  373. package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
  374. package/components/dialog/themes/shared/dialog.bootstrap.css.js.map +1 -1
  375. package/components/dialog/themes/shared/dialog.common.css.js +1 -1
  376. package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
  377. package/components/dialog/themes/shared/dialog.fluent.css.js +1 -1
  378. package/components/dialog/themes/shared/dialog.fluent.css.js.map +1 -1
  379. package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
  380. package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
  381. package/components/divider/divider.js +3 -4
  382. package/components/divider/divider.js.map +1 -1
  383. package/components/dropdown/dropdown-group.js +3 -4
  384. package/components/dropdown/dropdown-group.js.map +1 -1
  385. package/components/dropdown/dropdown-header.js +3 -4
  386. package/components/dropdown/dropdown-header.js.map +1 -1
  387. package/components/dropdown/dropdown-item.js +3 -4
  388. package/components/dropdown/dropdown-item.js.map +1 -1
  389. package/components/dropdown/dropdown.js +4 -3
  390. package/components/dropdown/dropdown.js.map +1 -1
  391. package/components/dropdown/themes/dropdown-group.base.css.js +1 -1
  392. package/components/dropdown/themes/dropdown-group.base.css.js.map +1 -1
  393. package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
  394. package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
  395. package/components/dropdown/themes/shared/dropdown.indigo.css.js +1 -1
  396. package/components/dropdown/themes/shared/dropdown.indigo.css.js.map +1 -1
  397. package/components/dropdown/themes/shared/group/dropdown-group.fluent.css.js +1 -1
  398. package/components/dropdown/themes/shared/group/dropdown-group.fluent.css.js.map +1 -1
  399. package/components/dropdown/themes/shared/header/dropdown-header.common.css.js +1 -1
  400. package/components/dropdown/themes/shared/header/dropdown-header.common.css.js.map +1 -1
  401. package/components/dropdown/themes/shared/header/dropdown-header.indigo.css.js +1 -1
  402. package/components/dropdown/themes/shared/header/dropdown-header.indigo.css.js.map +1 -1
  403. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js +1 -1
  404. package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js.map +1 -1
  405. package/components/expansion-panel/expansion-panel.js +3 -5
  406. package/components/expansion-panel/expansion-panel.js.map +1 -1
  407. package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
  408. package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
  409. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js +1 -1
  410. package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js.map +1 -1
  411. package/components/file-input/file-input.d.ts +0 -4
  412. package/components/file-input/file-input.js +15 -19
  413. package/components/file-input/file-input.js.map +1 -1
  414. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  415. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  416. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  417. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  418. package/components/focus-trap/focus-trap.js +7 -8
  419. package/components/focus-trap/focus-trap.js.map +1 -1
  420. package/components/icon/icon-references.js +208 -0
  421. package/components/icon/icon-references.js.map +1 -1
  422. package/components/icon/icon-state.broadcast.js +1 -1
  423. package/components/icon/icon-state.broadcast.js.map +1 -1
  424. package/components/icon/icon.js +3 -4
  425. package/components/icon/icon.js.map +1 -1
  426. package/components/icon/internal-icons-lib.js +105 -0
  427. package/components/icon/internal-icons-lib.js.map +1 -1
  428. package/components/input/input-base.js +4 -3
  429. package/components/input/input-base.js.map +1 -1
  430. package/components/input/input.d.ts +0 -4
  431. package/components/input/input.js +11 -14
  432. package/components/input/input.js.map +1 -1
  433. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  434. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  435. package/components/input/themes/shared/input.common.css.js +1 -1
  436. package/components/input/themes/shared/input.common.css.js.map +1 -1
  437. package/components/input/themes/shared/input.fluent.css.js +1 -1
  438. package/components/input/themes/shared/input.fluent.css.js.map +1 -1
  439. package/components/input/themes/shared/input.indigo.css.js +1 -1
  440. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  441. package/components/input/themes/shared/input.material.css.js +1 -1
  442. package/components/input/themes/shared/input.material.css.js.map +1 -1
  443. package/components/list/list-header.js +3 -4
  444. package/components/list/list-header.js.map +1 -1
  445. package/components/list/list-item.js +3 -4
  446. package/components/list/list-item.js.map +1 -1
  447. package/components/list/list.js +3 -4
  448. package/components/list/list.js.map +1 -1
  449. package/components/list/themes/dark/container/list.indigo.css.js +1 -1
  450. package/components/list/themes/dark/container/list.indigo.css.js.map +1 -1
  451. package/components/list/themes/dark/header/list-header.indigo.css.js +1 -1
  452. package/components/list/themes/dark/header/list-header.indigo.css.js.map +1 -1
  453. package/components/list/themes/dark/item/list-item.indigo.css.js +1 -1
  454. package/components/list/themes/dark/item/list-item.indigo.css.js.map +1 -1
  455. package/components/list/themes/header.base.css.js +1 -1
  456. package/components/list/themes/header.base.css.js.map +1 -1
  457. package/components/list/themes/item.base.css.js +1 -1
  458. package/components/list/themes/item.base.css.js.map +1 -1
  459. package/components/list/themes/light/container/list.indigo.css.js +1 -1
  460. package/components/list/themes/light/container/list.indigo.css.js.map +1 -1
  461. package/components/list/themes/light/header/list-header.indigo.css.js +1 -1
  462. package/components/list/themes/light/header/list-header.indigo.css.js.map +1 -1
  463. package/components/list/themes/light/item/list-item.indigo.css.js +1 -1
  464. package/components/list/themes/light/item/list-item.indigo.css.js.map +1 -1
  465. package/components/list/themes/shared/header/list-header.indigo.css.js +1 -1
  466. package/components/list/themes/shared/header/list-header.indigo.css.js.map +1 -1
  467. package/components/list/themes/shared/item/list-item.indigo.css.js +1 -1
  468. package/components/list/themes/shared/item/list-item.indigo.css.js.map +1 -1
  469. package/components/mask-input/mask-input.js +2 -3
  470. package/components/mask-input/mask-input.js.map +1 -1
  471. package/components/nav-drawer/nav-drawer-header-item.js +3 -4
  472. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  473. package/components/nav-drawer/nav-drawer-item.js +3 -4
  474. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  475. package/components/nav-drawer/nav-drawer.js +3 -4
  476. package/components/nav-drawer/nav-drawer.js.map +1 -1
  477. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
  478. package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
  479. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
  480. package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
  481. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
  482. package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
  483. package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js +1 -1
  484. package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js.map +1 -1
  485. package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js +1 -1
  486. package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js.map +1 -1
  487. package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js +1 -1
  488. package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js.map +1 -1
  489. package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js +1 -1
  490. package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js.map +1 -1
  491. package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js +1 -1
  492. package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js.map +1 -1
  493. package/components/nav-drawer/themes/shared/item/item.fluent.css.js +1 -1
  494. package/components/nav-drawer/themes/shared/item/item.fluent.css.js.map +1 -1
  495. package/components/nav-drawer/themes/shared/item/item.indigo.css.js +1 -1
  496. package/components/nav-drawer/themes/shared/item/item.indigo.css.js.map +1 -1
  497. package/components/nav-drawer/themes/shared/item/item.material.css.js +1 -1
  498. package/components/nav-drawer/themes/shared/item/item.material.css.js.map +1 -1
  499. package/components/navbar/navbar.js +3 -4
  500. package/components/navbar/navbar.js.map +1 -1
  501. package/components/navbar/themes/navbar.base.css.js +1 -1
  502. package/components/navbar/themes/navbar.base.css.js.map +1 -1
  503. package/components/navbar/themes/shared/navbar.bootstrap.css.js +1 -1
  504. package/components/navbar/themes/shared/navbar.bootstrap.css.js.map +1 -1
  505. package/components/navbar/themes/shared/navbar.indigo.css.js +1 -1
  506. package/components/navbar/themes/shared/navbar.indigo.css.js.map +1 -1
  507. package/components/popover/popover.js +9 -10
  508. package/components/popover/popover.js.map +1 -1
  509. package/components/progress/circular-gradient.js +2 -3
  510. package/components/progress/circular-gradient.js.map +1 -1
  511. package/components/progress/circular-progress.js +3 -4
  512. package/components/progress/circular-progress.js.map +1 -1
  513. package/components/progress/linear-progress.js +3 -4
  514. package/components/progress/linear-progress.js.map +1 -1
  515. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js +1 -1
  516. package/components/progress/themes/linear/shared/linear.progress.fluent.css.js.map +1 -1
  517. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js +1 -1
  518. package/components/progress/themes/linear/shared/linear.progress.indigo.css.js.map +1 -1
  519. package/components/radio/radio.js +3 -4
  520. package/components/radio/radio.js.map +1 -1
  521. package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
  522. package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
  523. package/components/radio/themes/shared/radio.fluent.css.js +1 -1
  524. package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
  525. package/components/radio/themes/shared/radio.indigo.css.js +1 -1
  526. package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
  527. package/components/radio/themes/shared/radio.material.css.js +1 -1
  528. package/components/radio/themes/shared/radio.material.css.js.map +1 -1
  529. package/components/radio-group/radio-group.js +3 -4
  530. package/components/radio-group/radio-group.js.map +1 -1
  531. package/components/radio-group/themes/radio-group.base.css.js +1 -1
  532. package/components/radio-group/themes/radio-group.base.css.js.map +1 -1
  533. package/components/radio-group/themes/shared/radio-group.bootstrap.css.js +1 -1
  534. package/components/radio-group/themes/shared/radio-group.bootstrap.css.js.map +1 -1
  535. package/components/radio-group/themes/shared/radio-group.fluent.css.js +1 -1
  536. package/components/radio-group/themes/shared/radio-group.fluent.css.js.map +1 -1
  537. package/components/radio-group/themes/shared/radio-group.indigo.css.js +1 -1
  538. package/components/radio-group/themes/shared/radio-group.indigo.css.js.map +1 -1
  539. package/components/radio-group/themes/shared/radio-group.material.css.js +1 -1
  540. package/components/radio-group/themes/shared/radio-group.material.css.js.map +1 -1
  541. package/components/rating/rating-symbol.js +3 -4
  542. package/components/rating/rating-symbol.js.map +1 -1
  543. package/components/rating/rating.js +3 -5
  544. package/components/rating/rating.js.map +1 -1
  545. package/components/rating/themes/rating.base.css.js +1 -1
  546. package/components/rating/themes/rating.base.css.js.map +1 -1
  547. package/components/rating/themes/shared/rating.indigo.css.js +1 -1
  548. package/components/rating/themes/shared/rating.indigo.css.js.map +1 -1
  549. package/components/resize-container/resize-container.d.ts +1 -1
  550. package/components/resize-container/resize-container.js +3 -4
  551. package/components/resize-container/resize-container.js.map +1 -1
  552. package/components/ripple/ripple.js +3 -4
  553. package/components/ripple/ripple.js.map +1 -1
  554. package/components/select/select-group.js +3 -4
  555. package/components/select/select-group.js.map +1 -1
  556. package/components/select/select-header.js +3 -4
  557. package/components/select/select-header.js.map +1 -1
  558. package/components/select/select-item.js +3 -4
  559. package/components/select/select-item.js.map +1 -1
  560. package/components/select/select.js +4 -4
  561. package/components/select/select.js.map +1 -1
  562. package/components/select/themes/dark/select.bootstrap.css.js +1 -1
  563. package/components/select/themes/dark/select.bootstrap.css.js.map +1 -1
  564. package/components/select/themes/light/select.bootstrap.css.js +1 -1
  565. package/components/select/themes/light/select.bootstrap.css.js.map +1 -1
  566. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  567. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  568. package/components/select/themes/shared/select.common.css.js +1 -1
  569. package/components/select/themes/shared/select.common.css.js.map +1 -1
  570. package/components/select/themes/shared/select.fluent.css.js +1 -1
  571. package/components/select/themes/shared/select.fluent.css.js.map +1 -1
  572. package/components/select/themes/shared/select.indigo.css.js +1 -1
  573. package/components/select/themes/shared/select.indigo.css.js.map +1 -1
  574. package/components/select/themes/shared/select.material.css.js +1 -1
  575. package/components/select/themes/shared/select.material.css.js.map +1 -1
  576. package/components/slider/range-slider.js +2 -3
  577. package/components/slider/range-slider.js.map +1 -1
  578. package/components/slider/slider-base.js +1 -2
  579. package/components/slider/slider-base.js.map +1 -1
  580. package/components/slider/slider-label.js +7 -8
  581. package/components/slider/slider-label.js.map +1 -1
  582. package/components/slider/slider.js +2 -3
  583. package/components/slider/slider.js.map +1 -1
  584. package/components/slider/themes/shared/slider.common.css.js +1 -1
  585. package/components/slider/themes/shared/slider.common.css.js.map +1 -1
  586. package/components/slider/themes/slider.base.css.js +1 -1
  587. package/components/slider/themes/slider.base.css.js.map +1 -1
  588. package/components/snackbar/snackbar.js +3 -4
  589. package/components/snackbar/snackbar.js.map +1 -1
  590. package/components/snackbar/themes/shared/snackbar.indigo.css.js +1 -1
  591. package/components/snackbar/themes/shared/snackbar.indigo.css.js.map +1 -1
  592. package/components/snackbar/themes/snackbar.base.css.js +1 -1
  593. package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
  594. package/components/stepper/step.d.ts +1 -1
  595. package/components/stepper/step.js +3 -4
  596. package/components/stepper/step.js.map +1 -1
  597. package/components/stepper/stepper.js +3 -4
  598. package/components/stepper/stepper.js.map +1 -1
  599. package/components/tabs/tab-dom.js +1 -1
  600. package/components/tabs/tab-dom.js.map +1 -1
  601. package/components/tabs/tab.js +4 -5
  602. package/components/tabs/tab.js.map +1 -1
  603. package/components/tabs/tabs.js +3 -5
  604. package/components/tabs/tabs.js.map +1 -1
  605. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
  606. package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
  607. package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
  608. package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
  609. package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
  610. package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
  611. package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
  612. package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
  613. package/components/textarea/textarea.d.ts +1 -1
  614. package/components/textarea/textarea.js +4 -3
  615. package/components/textarea/textarea.js.map +1 -1
  616. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  617. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  618. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  619. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  620. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  621. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  622. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  623. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  624. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  625. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  626. package/components/textarea/themes/textarea.base.css.js +1 -1
  627. package/components/textarea/themes/textarea.base.css.js.map +1 -1
  628. package/components/tile-manager/resize-state.js +1 -1
  629. package/components/tile-manager/resize-state.js.map +1 -1
  630. package/components/tile-manager/themes/tile-manager.base.css.js +1 -1
  631. package/components/tile-manager/themes/tile-manager.base.css.js.map +1 -1
  632. package/components/tile-manager/tile-manager.js +4 -3
  633. package/components/tile-manager/tile-manager.js.map +1 -1
  634. package/components/tile-manager/tile.js +3 -4
  635. package/components/tile-manager/tile.js.map +1 -1
  636. package/components/toast/themes/shared/toast.bootstrap.css.js +1 -1
  637. package/components/toast/themes/shared/toast.bootstrap.css.js.map +1 -1
  638. package/components/toast/themes/shared/toast.common.css.js +1 -1
  639. package/components/toast/themes/shared/toast.common.css.js.map +1 -1
  640. package/components/toast/themes/shared/toast.fluent.css.js +1 -1
  641. package/components/toast/themes/shared/toast.fluent.css.js.map +1 -1
  642. package/components/toast/themes/toast.base.css.js +1 -1
  643. package/components/toast/themes/toast.base.css.js.map +1 -1
  644. package/components/toast/toast.js +3 -4
  645. package/components/toast/toast.js.map +1 -1
  646. package/components/tooltip/controller.js +4 -4
  647. package/components/tooltip/controller.js.map +1 -1
  648. package/components/tooltip/themes/tooltip.base.css.js +1 -1
  649. package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
  650. package/components/tooltip/tooltip.js +3 -4
  651. package/components/tooltip/tooltip.js.map +1 -1
  652. package/components/tree/themes/item.base.css.js +1 -1
  653. package/components/tree/themes/item.base.css.js.map +1 -1
  654. package/components/tree/themes/shared/item.common.css.js +1 -1
  655. package/components/tree/themes/shared/item.common.css.js.map +1 -1
  656. package/components/tree/themes/shared/item.indigo.css.js +1 -1
  657. package/components/tree/themes/shared/item.indigo.css.js.map +1 -1
  658. package/components/tree/themes/shared/item.material.css.js +1 -1
  659. package/components/tree/themes/shared/item.material.css.js.map +1 -1
  660. package/components/tree/tree-item.js +3 -4
  661. package/components/tree/tree-item.js.map +1 -1
  662. package/components/tree/tree.js +7 -4
  663. package/components/tree/tree.js.map +1 -1
  664. package/components/tree/tree.navigation.js +3 -3
  665. package/components/tree/tree.navigation.js.map +1 -1
  666. package/components/tree/tree.selection.js +6 -2
  667. package/components/tree/tree.selection.js.map +1 -1
  668. package/components/validation-container/validation-container.js +3 -4
  669. package/components/validation-container/validation-container.js.map +1 -1
  670. package/custom-elements.json +38599 -36648
  671. package/extras/index.d.ts +1 -0
  672. package/extras/index.js +2 -0
  673. package/extras/index.js.map +1 -0
  674. package/igniteui-webcomponents.css-data.json +1 -1
  675. package/igniteui-webcomponents.html-data.json +1 -1
  676. package/index.d.ts +4 -0
  677. package/index.js +2 -0
  678. package/index.js.map +1 -1
  679. package/package.json +6 -2
  680. package/themes/dark/bootstrap.css +1 -1
  681. package/themes/dark/fluent.css +1 -1
  682. package/themes/dark/indigo.css +1 -1
  683. package/themes/dark/material.css +1 -1
  684. package/themes/light/bootstrap.css +1 -1
  685. package/themes/light/fluent.css +1 -1
  686. package/themes/light/indigo.css +1 -1
  687. package/themes/light/material.css +1 -1
  688. package/web-types.json +2 -2
@@ -0,0 +1,91 @@
1
+ import { LitElement } from 'lit';
2
+ /**
3
+ * A web component that provides the input area for the `igc-chat` interface.
4
+ *
5
+ * It supports:
6
+ * - Text input with automatic resizing
7
+ * - Sending messages on Enter key (with Shift+Enter for newlines)
8
+ * - File attachments via file picker or drag-and-drop
9
+ * - Customizable templates for send button, attachments, and text input
10
+ * - Emits various chat-related events (typing, input focus/blur, attachment drop, etc.)
11
+ *
12
+ * @element igc-chat-input
13
+ *
14
+ * @slot - Default unnamed slot for rendering inside the component
15
+ * @fires igcTypingChange - Fired when the user starts/stops typing
16
+ * @fires igcInputFocus - Fired when the input area receives focus
17
+ * @fires igcInputBlur - Fired when the input area loses focus
18
+ * @fires igcAttachmentDrag - Fired when dragging a file over the input
19
+ * @fires igcAttachmentDrop - Fired when a file is dropped into the input
20
+ * @fires igcChange - Fired when file input changes (delegated from `<igc-file-input>`)
21
+ *
22
+ * @csspart input-container - Container for the input section
23
+ * @csspart input-wrapper - Wrapper around the text input
24
+ * @csspart text-input - The `<igc-textarea>` component
25
+ * @csspart buttons-container - Container for file upload/send buttons
26
+ * @csspart send-button - The send icon button
27
+ * @csspart attachments - Container for rendering attachments
28
+ * @csspart attachment-wrapper - Wrapper for individual attachment
29
+ * @csspart attachment-name - Display name of an attachment
30
+ */
31
+ export default class IgcChatInputComponent extends LitElement {
32
+ static readonly tagName = "igc-chat-input";
33
+ static styles: import("lit").CSSResult[];
34
+ static register(): void;
35
+ private readonly _defaults;
36
+ private readonly _state;
37
+ private readonly _userInputState;
38
+ private readonly _textInputElement;
39
+ protected readonly _fileInput: HTMLInputElement;
40
+ private _parts;
41
+ private get _acceptedTypes();
42
+ constructor();
43
+ focusInput(): void;
44
+ private _getRenderer;
45
+ private _sendMessage;
46
+ private _handleKeydown;
47
+ private _handleFileInputClick;
48
+ private _handleFocusState;
49
+ private _handleDragEnter;
50
+ private _handleDragOver;
51
+ private _handleDragLeave;
52
+ private _handleDrop;
53
+ /**
54
+ * Handles input text changes.
55
+ * Updates internal inputValue and emits 'igcInputChange' event.
56
+ * @param e Input event from the text area
57
+ */
58
+ private _handleInput;
59
+ private _handleFileUpload;
60
+ /**
61
+ * Default attachments area template used when no custom template is provided.
62
+ * Renders the list of input attachments as chips.
63
+ * @returns TemplateResult containing the attachments area
64
+ */
65
+ private _renderAttachmentsArea;
66
+ /**
67
+ * Default text area template used when no custom template is provided.
68
+ * Renders a text area for user input.
69
+ * @returns TemplateResult containing the text area
70
+ */
71
+ private _renderTextArea;
72
+ /**
73
+ * Default file upload button template used when no custom template is provided.
74
+ * Renders a file input for attaching files.
75
+ * @returns TemplateResult containing the file upload button
76
+ */
77
+ private _renderFileUploadButton;
78
+ /**
79
+ * Default send button template used when no custom template is provided.
80
+ * Renders a send button that submits the current input value and attachments.
81
+ * @returns TemplateResult containing the send button
82
+ */
83
+ private _renderSendButton;
84
+ private _renderActionsArea;
85
+ protected render(): import("lit-html").TemplateResult<1>;
86
+ }
87
+ declare global {
88
+ interface HTMLElementTagNameMap {
89
+ 'igc-chat-input': IgcChatInputComponent;
90
+ }
91
+ }
@@ -0,0 +1,263 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { consume } from '@lit/context';
8
+ import { html, LitElement, nothing } from 'lit';
9
+ import { query, state } from 'lit/decorators.js';
10
+ import { cache } from 'lit/directives/cache.js';
11
+ import { ifDefined } from 'lit/directives/if-defined.js';
12
+ import { until } from 'lit/directives/until.js';
13
+ import { addThemingController } from '../../theming/theming-controller.js';
14
+ import IgcIconButtonComponent from '../button/icon-button.js';
15
+ import IgcChipComponent from '../chip/chip.js';
16
+ import { chatContext, chatUserInputContext } from '../common/context.js';
17
+ import { enterKey } from '../common/controllers/key-bindings.js';
18
+ import { registerComponent } from '../common/definitions/register.js';
19
+ import { partMap } from '../common/part-map.js';
20
+ import { bindIf, hasFiles, isEmpty } from '../common/util.js';
21
+ import IgcIconComponent from '../icon/icon.js';
22
+ import IgcTextareaComponent from '../textarea/textarea.js';
23
+ import { styles } from './themes/input.base.css.js';
24
+ import { all } from './themes/input.js';
25
+ import { styles as shared } from './themes/shared/input/input.common.css.js';
26
+ import { getChatAcceptedFiles, getIconName } from './utils.js';
27
+ export default class IgcChatInputComponent extends LitElement {
28
+ static { this.tagName = 'igc-chat-input'; }
29
+ static { this.styles = [styles, shared]; }
30
+ static register() {
31
+ registerComponent(IgcChatInputComponent, IgcTextareaComponent, IgcIconButtonComponent, IgcChipComponent, IgcIconComponent);
32
+ }
33
+ get _acceptedTypes() {
34
+ return this._state.acceptedFileTypes;
35
+ }
36
+ constructor() {
37
+ super();
38
+ this._defaults = Object.freeze({
39
+ fileUploadButton: () => this._renderFileUploadButton(),
40
+ input: () => this._renderTextArea(),
41
+ inputActions: () => this._renderActionsArea(),
42
+ inputActionsEnd: () => nothing,
43
+ inputActionsStart: () => nothing,
44
+ inputAttachments: (ctx) => this._renderAttachmentsArea(ctx.attachments),
45
+ sendButton: () => this._renderSendButton(),
46
+ });
47
+ this._parts = { 'input-container': true, dragging: false };
48
+ addThemingController(this, all);
49
+ }
50
+ focusInput() {
51
+ this._textInputElement.focus();
52
+ }
53
+ _getRenderer(name) {
54
+ return this._state.options?.renderers
55
+ ? (this._state.options.renderers[name] ??
56
+ this._defaults[name])
57
+ : this._defaults[name];
58
+ }
59
+ async _sendMessage() {
60
+ if (!this._userInputState.hasInputValue &&
61
+ !this._userInputState.hasInputAttachments) {
62
+ return;
63
+ }
64
+ this._userInputState.addMessageWithEvent({
65
+ text: this._userInputState.inputValue,
66
+ attachments: this._userInputState.inputAttachments,
67
+ });
68
+ this.style.height = 'auto';
69
+ await this._userInputState.host.updateComplete;
70
+ this.focusInput();
71
+ }
72
+ _handleKeydown(event) {
73
+ const isSendRequest = event.key === enterKey.toLowerCase() && !event.shiftKey;
74
+ if (isSendRequest) {
75
+ event.preventDefault();
76
+ this._sendMessage();
77
+ }
78
+ else {
79
+ this._state.handleKeyDown(event);
80
+ }
81
+ }
82
+ _handleFileInputClick() {
83
+ this._fileInput.showPicker();
84
+ }
85
+ _handleFocusState(event) {
86
+ this._state.emitEvent(event.type === 'focus' ? 'igcInputFocus' : 'igcInputBlur');
87
+ }
88
+ _handleDragEnter(event) {
89
+ event.preventDefault();
90
+ event.stopPropagation();
91
+ const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);
92
+ this._parts = { 'input-container': true, dragging: !isEmpty(validFiles) };
93
+ this._state.emitEvent('igcAttachmentDrag');
94
+ }
95
+ _handleDragOver(event) {
96
+ event.preventDefault();
97
+ event.stopPropagation();
98
+ }
99
+ _handleDragLeave(event) {
100
+ event.preventDefault();
101
+ event.stopPropagation();
102
+ const rect = event.currentTarget.getBoundingClientRect();
103
+ const x = event.clientX;
104
+ const y = event.clientY;
105
+ if (x <= rect.left ||
106
+ x >= rect.right ||
107
+ y <= rect.top ||
108
+ y >= rect.bottom) {
109
+ this._parts = { 'input-container': true, dragging: false };
110
+ }
111
+ }
112
+ _handleDrop(event) {
113
+ event.preventDefault();
114
+ event.stopPropagation();
115
+ this._parts = { 'input-container': true, dragging: false };
116
+ const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);
117
+ this._state.emitEvent('igcAttachmentDrop');
118
+ this._state.attachFiles(validFiles);
119
+ this.requestUpdate();
120
+ }
121
+ _handleInput({ detail }) {
122
+ if (detail === this._state.inputValue) {
123
+ return;
124
+ }
125
+ this._state.inputValue = detail;
126
+ this._state.emitEvent('igcInputChange', { detail: { value: detail } });
127
+ }
128
+ _handleFileUpload(event) {
129
+ const input = event.target;
130
+ if (hasFiles(input)) {
131
+ this._state.attachFiles(Array.from(input.files));
132
+ }
133
+ }
134
+ _renderAttachmentsArea(attachments) {
135
+ return html `${attachments?.map((attachment) => html `
136
+ <div part="attachment-wrapper" role="listitem">
137
+ <igc-chip
138
+ removable
139
+ @igcRemove=${() => this._state.removeAttachment(attachment)}
140
+ >
141
+ <igc-icon
142
+ slot="prefix"
143
+ name=${getIconName(attachment.file?.type ?? attachment.type)}
144
+ ></igc-icon>
145
+ <span part="attachment-name">${attachment.name}</span>
146
+ </igc-chip>
147
+ </div>
148
+ `)} `;
149
+ }
150
+ _renderTextArea() {
151
+ return html `
152
+ <igc-textarea
153
+ part="text-input"
154
+ aria-label="Chat text input"
155
+ placeholder=${ifDefined(this._state.options?.inputPlaceholder)}
156
+ resize="auto"
157
+ rows="1"
158
+ .value=${this._userInputState?.inputValue}
159
+ @igcInput=${this._handleInput}
160
+ @keydown=${this._handleKeydown}
161
+ @focus=${this._handleFocusState}
162
+ @blur=${this._handleFocusState}
163
+ ></igc-textarea>
164
+ `;
165
+ }
166
+ _renderFileUploadButton() {
167
+ const accepted = this._state.options?.acceptedFiles;
168
+ const attachmentsDisabled = this._state.options?.disableInputAttachments;
169
+ return html `${cache(attachmentsDisabled
170
+ ? nothing
171
+ : html `
172
+ <label for="input_attachments" part="upload-button">
173
+ <igc-icon-button
174
+ aria-label="Attach files"
175
+ variant="flat"
176
+ name="attach_file"
177
+ @click=${this._handleFileInputClick}
178
+ ></igc-icon-button>
179
+ <input
180
+ type="file"
181
+ id="input_attachments"
182
+ tabindex="-1"
183
+ name="input_attachments"
184
+ aria-label="Upload button"
185
+ multiple
186
+ accept=${bindIf(accepted, accepted)}
187
+ @change=${this._handleFileUpload}
188
+ />
189
+ </label>
190
+ `)}`;
191
+ }
192
+ _renderSendButton() {
193
+ const enabled = this._state.hasInputValue || this._state.hasInputAttachments;
194
+ return html `
195
+ <igc-icon-button
196
+ aria-label="Send message"
197
+ name="send_message"
198
+ variant="contained"
199
+ part="send-button"
200
+ ?disabled=${!enabled}
201
+ @click=${this._sendMessage}
202
+ ></igc-icon-button>
203
+ `;
204
+ }
205
+ _renderActionsArea() {
206
+ const ctx = { instance: this._state.host };
207
+ return html `
208
+ ${this._getRenderer('fileUploadButton')(ctx)}
209
+ ${this._getRenderer('inputActionsStart')(ctx)}
210
+ ${this._getRenderer('sendButton')(ctx)}
211
+ ${this._getRenderer('inputActionsEnd')(ctx)}
212
+ `;
213
+ }
214
+ render() {
215
+ const ctx = { instance: this._state.host };
216
+ const inputCtx = {
217
+ ...ctx,
218
+ attachments: this._state.inputAttachments,
219
+ value: this._state.inputValue,
220
+ };
221
+ return html `
222
+ <div
223
+ part=${partMap(this._parts)}
224
+ @dragenter=${this._handleDragEnter}
225
+ @dragover=${this._handleDragOver}
226
+ @dragleave=${this._handleDragLeave}
227
+ @drop=${this._handleDrop}
228
+ >
229
+ ${this._state.hasInputAttachments
230
+ ? html `
231
+ <div part="attachments" role="list" aria-label="Attachments">
232
+ ${until(this._getRenderer('inputAttachments')(inputCtx))}
233
+ </div>
234
+ `
235
+ : nothing}
236
+
237
+ <div part="input-wrapper">
238
+ ${until(this._getRenderer('input')(inputCtx))}
239
+ </div>
240
+
241
+ <div part="buttons-container">
242
+ ${until(this._getRenderer('inputActions')(ctx))}
243
+ </div>
244
+ </div>
245
+ `;
246
+ }
247
+ }
248
+ __decorate([
249
+ consume({ context: chatContext, subscribe: true })
250
+ ], IgcChatInputComponent.prototype, "_state", void 0);
251
+ __decorate([
252
+ consume({ context: chatUserInputContext, subscribe: true })
253
+ ], IgcChatInputComponent.prototype, "_userInputState", void 0);
254
+ __decorate([
255
+ query(IgcTextareaComponent.tagName)
256
+ ], IgcChatInputComponent.prototype, "_textInputElement", void 0);
257
+ __decorate([
258
+ query('#input_attachments')
259
+ ], IgcChatInputComponent.prototype, "_fileInput", void 0);
260
+ __decorate([
261
+ state()
262
+ ], IgcChatInputComponent.prototype, "_parts", void 0);
263
+ //# sourceMappingURL=chat-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat-input.js","sourceRoot":"","sources":["../../../src/components/chat/chat-input.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement, nothing } from 'lit';\nimport { query, state } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport IgcChipComponent from '../chip/chip.js';\nimport { chatContext, chatUserInputContext } from '../common/context.js';\nimport { enterKey } from '../common/controllers/key-bindings.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport { bindIf, hasFiles, isEmpty } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcTextareaComponent from '../textarea/textarea.js';\nimport type { ChatState } from './chat-state.js';\nimport { styles } from './themes/input.base.css.js';\nimport { all } from './themes/input.js';\nimport { styles as shared } from './themes/shared/input/input.common.css.js';\nimport type {\n ChatInputRenderContext,\n ChatRenderContext,\n ChatTemplateRenderer,\n IgcChatMessageAttachment,\n} from './types.js';\nimport { getChatAcceptedFiles, getIconName } from './utils.js';\n\ntype DefaultInputRenderers = {\n input: ChatTemplateRenderer<ChatInputRenderContext>;\n inputActions: ChatTemplateRenderer<ChatRenderContext>;\n inputActionsEnd: ChatTemplateRenderer<ChatRenderContext>;\n inputActionsStart: ChatTemplateRenderer<ChatRenderContext>;\n inputAttachments: ChatTemplateRenderer<ChatInputRenderContext>;\n fileUploadButton: ChatTemplateRenderer<ChatRenderContext>;\n sendButton: ChatTemplateRenderer<ChatRenderContext>;\n};\n/**\n * A web component that provides the input area for the `igc-chat` interface.\n *\n * It supports:\n * - Text input with automatic resizing\n * - Sending messages on Enter key (with Shift+Enter for newlines)\n * - File attachments via file picker or drag-and-drop\n * - Customizable templates for send button, attachments, and text input\n * - Emits various chat-related events (typing, input focus/blur, attachment drop, etc.)\n *\n * @element igc-chat-input\n *\n * @slot - Default unnamed slot for rendering inside the component\n * @fires igcTypingChange - Fired when the user starts/stops typing\n * @fires igcInputFocus - Fired when the input area receives focus\n * @fires igcInputBlur - Fired when the input area loses focus\n * @fires igcAttachmentDrag - Fired when dragging a file over the input\n * @fires igcAttachmentDrop - Fired when a file is dropped into the input\n * @fires igcChange - Fired when file input changes (delegated from `<igc-file-input>`)\n *\n * @csspart input-container - Container for the input section\n * @csspart input-wrapper - Wrapper around the text input\n * @csspart text-input - The `<igc-textarea>` component\n * @csspart buttons-container - Container for file upload/send buttons\n * @csspart send-button - The send icon button\n * @csspart attachments - Container for rendering attachments\n * @csspart attachment-wrapper - Wrapper for individual attachment\n * @csspart attachment-name - Display name of an attachment\n */\nexport default class IgcChatInputComponent extends LitElement {\n public static readonly tagName = 'igc-chat-input';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatInputComponent,\n IgcTextareaComponent,\n IgcIconButtonComponent,\n IgcChipComponent,\n IgcIconComponent\n );\n }\n\n private readonly _defaults: Readonly<DefaultInputRenderers> = Object.freeze({\n fileUploadButton: () => this._renderFileUploadButton(),\n input: () => this._renderTextArea(),\n inputActions: () => this._renderActionsArea(),\n inputActionsEnd: () => nothing,\n inputActionsStart: () => nothing,\n inputAttachments: (ctx) => this._renderAttachmentsArea(ctx.attachments),\n sendButton: () => this._renderSendButton(),\n });\n\n @consume({ context: chatContext, subscribe: true })\n private readonly _state!: ChatState;\n\n @consume({ context: chatUserInputContext, subscribe: true })\n private readonly _userInputState!: ChatState;\n\n @query(IgcTextareaComponent.tagName)\n private readonly _textInputElement!: IgcTextareaComponent;\n\n @query('#input_attachments')\n protected readonly _fileInput!: HTMLInputElement;\n\n @state()\n private _parts = { 'input-container': true, dragging: false };\n\n private get _acceptedTypes() {\n return this._state.acceptedFileTypes;\n }\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n public focusInput(): void {\n this._textInputElement.focus();\n }\n\n private _getRenderer<U extends keyof DefaultInputRenderers>(\n name: U\n ): DefaultInputRenderers[U] {\n return this._state.options?.renderers\n ? ((this._state.options.renderers[name] ??\n this._defaults[name]) as DefaultInputRenderers[U])\n : this._defaults[name];\n }\n\n private async _sendMessage(): Promise<void> {\n if (\n !this._userInputState.hasInputValue &&\n !this._userInputState.hasInputAttachments\n ) {\n return;\n }\n\n this._userInputState.addMessageWithEvent({\n text: this._userInputState.inputValue,\n attachments: this._userInputState.inputAttachments,\n });\n\n this.style.height = 'auto';\n\n await this._userInputState.host.updateComplete;\n this.focusInput();\n }\n\n private _handleKeydown(event: KeyboardEvent): void {\n const isSendRequest =\n event.key === enterKey.toLowerCase() && !event.shiftKey;\n\n if (isSendRequest) {\n event.preventDefault();\n this._sendMessage();\n } else {\n // TODO:\n this._state.handleKeyDown(event);\n }\n }\n\n private _handleFileInputClick(): void {\n this._fileInput.showPicker();\n }\n\n private _handleFocusState(event: FocusEvent): void {\n this._state.emitEvent(\n event.type === 'focus' ? 'igcInputFocus' : 'igcInputBlur'\n );\n }\n\n private _handleDragEnter(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);\n this._parts = { 'input-container': true, dragging: !isEmpty(validFiles) };\n this._state.emitEvent('igcAttachmentDrag');\n }\n\n private _handleDragOver(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n }\n\n private _handleDragLeave(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n\n // Check if we're actually leaving the container\n const rect = (event.currentTarget as HTMLElement).getBoundingClientRect();\n const x = event.clientX;\n const y = event.clientY;\n\n if (\n x <= rect.left ||\n x >= rect.right ||\n y <= rect.top ||\n y >= rect.bottom\n ) {\n this._parts = { 'input-container': true, dragging: false };\n }\n }\n\n private _handleDrop(event: DragEvent): void {\n event.preventDefault();\n event.stopPropagation();\n this._parts = { 'input-container': true, dragging: false };\n\n const validFiles = getChatAcceptedFiles(event, this._acceptedTypes);\n this._state.emitEvent('igcAttachmentDrop');\n this._state.attachFiles(validFiles);\n this.requestUpdate();\n }\n\n /**\n * Handles input text changes.\n * Updates internal inputValue and emits 'igcInputChange' event.\n * @param e Input event from the text area\n */\n private _handleInput({ detail }: CustomEvent<string>): void {\n if (detail === this._state.inputValue) {\n return;\n }\n\n this._state.inputValue = detail;\n this._state.emitEvent('igcInputChange', { detail: { value: detail } });\n }\n\n private _handleFileUpload(event: Event): void {\n const input = event.target as HTMLInputElement;\n\n if (hasFiles(input)) {\n this._state.attachFiles(Array.from(input.files!));\n }\n }\n /**\n * Default attachments area template used when no custom template is provided.\n * Renders the list of input attachments as chips.\n * @returns TemplateResult containing the attachments area\n */\n private _renderAttachmentsArea(attachments: IgcChatMessageAttachment[]) {\n return html`${attachments?.map(\n (attachment) => html`\n <div part=\"attachment-wrapper\" role=\"listitem\">\n <igc-chip\n removable\n @igcRemove=${() => this._state.removeAttachment(attachment)}\n >\n <igc-icon\n slot=\"prefix\"\n name=${getIconName(attachment.file?.type ?? attachment.type)}\n ></igc-icon>\n <span part=\"attachment-name\">${attachment.name}</span>\n </igc-chip>\n </div>\n `\n )} `;\n }\n\n /**\n * Default text area template used when no custom template is provided.\n * Renders a text area for user input.\n * @returns TemplateResult containing the text area\n */\n private _renderTextArea() {\n return html`\n <igc-textarea\n part=\"text-input\"\n aria-label=\"Chat text input\"\n placeholder=${ifDefined(this._state.options?.inputPlaceholder)}\n resize=\"auto\"\n rows=\"1\"\n .value=${this._userInputState?.inputValue}\n @igcInput=${this._handleInput}\n @keydown=${this._handleKeydown}\n @focus=${this._handleFocusState}\n @blur=${this._handleFocusState}\n ></igc-textarea>\n `;\n }\n\n /**\n * Default file upload button template used when no custom template is provided.\n * Renders a file input for attaching files.\n * @returns TemplateResult containing the file upload button\n */\n private _renderFileUploadButton() {\n const accepted = this._state.options?.acceptedFiles;\n const attachmentsDisabled = this._state.options?.disableInputAttachments;\n\n return html`${cache(\n attachmentsDisabled\n ? nothing\n : html`\n <label for=\"input_attachments\" part=\"upload-button\">\n <igc-icon-button\n aria-label=\"Attach files\"\n variant=\"flat\"\n name=\"attach_file\"\n @click=${this._handleFileInputClick}\n ></igc-icon-button>\n <input\n type=\"file\"\n id=\"input_attachments\"\n tabindex=\"-1\"\n name=\"input_attachments\"\n aria-label=\"Upload button\"\n multiple\n accept=${bindIf(accepted, accepted)}\n @change=${this._handleFileUpload}\n />\n </label>\n `\n )}`;\n }\n\n /**\n * Default send button template used when no custom template is provided.\n * Renders a send button that submits the current input value and attachments.\n * @returns TemplateResult containing the send button\n */\n private _renderSendButton() {\n const enabled =\n this._state.hasInputValue || this._state.hasInputAttachments;\n\n return html`\n <igc-icon-button\n aria-label=\"Send message\"\n name=\"send_message\"\n variant=\"contained\"\n part=\"send-button\"\n ?disabled=${!enabled}\n @click=${this._sendMessage}\n ></igc-icon-button>\n `;\n }\n\n private _renderActionsArea() {\n const ctx: ChatRenderContext = { instance: this._state.host };\n\n return html`\n ${this._getRenderer('fileUploadButton')(ctx)}\n ${this._getRenderer('inputActionsStart')(ctx)}\n ${this._getRenderer('sendButton')(ctx)}\n ${this._getRenderer('inputActionsEnd')(ctx)}\n `;\n }\n\n protected override render() {\n const ctx: ChatRenderContext = { instance: this._state.host };\n\n const inputCtx: ChatInputRenderContext = {\n ...ctx,\n attachments: this._state.inputAttachments,\n value: this._state.inputValue,\n };\n\n return html`\n <div\n part=${partMap(this._parts)}\n @dragenter=${this._handleDragEnter}\n @dragover=${this._handleDragOver}\n @dragleave=${this._handleDragLeave}\n @drop=${this._handleDrop}\n >\n ${this._state.hasInputAttachments\n ? html`\n <div part=\"attachments\" role=\"list\" aria-label=\"Attachments\">\n ${until(this._getRenderer('inputAttachments')(inputCtx))}\n </div>\n `\n : nothing}\n\n <div part=\"input-wrapper\">\n ${until(this._getRenderer('input')(inputCtx))}\n </div>\n\n <div part=\"buttons-container\">\n ${until(this._getRenderer('inputActions')(ctx))}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-input': IgcChatInputComponent;\n }\n}\n"]}
@@ -0,0 +1,48 @@
1
+ import { LitElement } from 'lit';
2
+ import type { IgcChatMessage } from './types.js';
3
+ /**
4
+ * A chat message component for displaying individual messages in `<igc-chat>`.
5
+ *
6
+ * @element igc-chat-message
7
+ *
8
+ * @fires igcMessageReact - Fired when a message is reacted to.
9
+ *
10
+ * This component renders a single chat message including:
11
+ * - Message text (sanitized)
12
+ * - Attachments (if any)
13
+ * - Custom templates for message content and actions (if provided via chat options)
14
+ *
15
+ * It distinguishes sent messages from received messages by comparing
16
+ * the message sender with the current user ID from chat state.
17
+ *
18
+ * The message text is sanitized with DOMPurify before rendering,
19
+ * and can be rendered with a markdown renderer if provided.
20
+ */
21
+ export default class IgcChatMessageComponent extends LitElement {
22
+ static readonly tagName = "igc-chat-message";
23
+ static styles: import("lit").CSSResult[];
24
+ static register(): void;
25
+ private readonly _defaults;
26
+ private readonly _state;
27
+ /**
28
+ * The chat message to render.
29
+ */
30
+ message?: IgcChatMessage;
31
+ constructor();
32
+ protected firstUpdated(): void;
33
+ private _getRenderer;
34
+ private _handleCopy;
35
+ private _handleMessageActionClick;
36
+ private _renderHeader;
37
+ private _renderContent;
38
+ private _renderActions;
39
+ private _renderActionButton;
40
+ private _renderAttachments;
41
+ private _renderMessage;
42
+ protected render(): import("lit-html").TemplateResult<1>;
43
+ }
44
+ declare global {
45
+ interface HTMLElementTagNameMap {
46
+ 'igc-chat-message': IgcChatMessageComponent;
47
+ }
48
+ }
@@ -0,0 +1,199 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { consume } from '@lit/context';
8
+ import { html, LitElement, nothing } from 'lit';
9
+ import { property } from 'lit/decorators.js';
10
+ import { cache } from 'lit/directives/cache.js';
11
+ import { until } from 'lit/directives/until.js';
12
+ import { addThemingController } from '../../theming/theming-controller.js';
13
+ import IgcIconButtonComponent from '../button/icon-button.js';
14
+ import { chatContext } from '../common/context.js';
15
+ import { registerComponent } from '../common/definitions/register.js';
16
+ import { partMap } from '../common/part-map.js';
17
+ import { isEmpty } from '../common/util.js';
18
+ import IgcMessageAttachmentsComponent from './message-attachments.js';
19
+ import { styles } from './themes/message.base.css.js';
20
+ import { all } from './themes/message.js';
21
+ import { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';
22
+ import { chatMessageAdoptPageStyles } from './utils.js';
23
+ const LIKE_INACTIVE = 'thumb_up_inactive';
24
+ const LIKE_ACTIVE = 'thumb_up_active';
25
+ const DISLIKE_INACTIVE = 'thumb_down_inactive';
26
+ const DISLIKE_ACTIVE = 'thumb_down_active';
27
+ const COPY_CONTENT = 'copy_content';
28
+ const REGENERATE = 'regenerate';
29
+ export default class IgcChatMessageComponent extends LitElement {
30
+ static { this.tagName = 'igc-chat-message'; }
31
+ static { this.styles = [styles, shared]; }
32
+ static register() {
33
+ registerComponent(IgcChatMessageComponent, IgcMessageAttachmentsComponent, IgcIconButtonComponent);
34
+ }
35
+ constructor() {
36
+ super();
37
+ this._defaults = Object.freeze({
38
+ message: () => this._renderMessage(),
39
+ messageHeader: () => this._renderHeader(),
40
+ messageContent: () => this._renderContent(),
41
+ messageAttachments: () => this._renderAttachments(),
42
+ messageActions: () => this._renderActions(),
43
+ });
44
+ addThemingController(this, all);
45
+ }
46
+ firstUpdated() {
47
+ chatMessageAdoptPageStyles(this);
48
+ }
49
+ _getRenderer(name) {
50
+ return this._state.options?.renderers
51
+ ? (this._state.options.renderers[name] ?? this._defaults[name])
52
+ : this._defaults[name];
53
+ }
54
+ async _handleCopy() {
55
+ if (!this.message)
56
+ return;
57
+ let clipboardText = this.message.text;
58
+ const resourceStrings = this._state.resourceStrings;
59
+ if (this.message.attachments && !isEmpty(this.message.attachments)) {
60
+ const attachmentList = this.message.attachments
61
+ .map((att) => `${att.name ?? resourceStrings.attachmentLabel}: ${att.url ?? ''}`)
62
+ .join('\n');
63
+ clipboardText += `${clipboardText ? '\n\n' : ''}${resourceStrings.attachmentsListLabel}:\n${attachmentList}`;
64
+ }
65
+ if (navigator.clipboard?.writeText) {
66
+ try {
67
+ await navigator.clipboard.writeText(clipboardText);
68
+ this._state.showActionToast(resourceStrings.messageCopied);
69
+ }
70
+ catch (err) {
71
+ throw new Error(`Failed to copy message via Clipboard API: ${err}`);
72
+ }
73
+ }
74
+ }
75
+ _handleMessageActionClick(event) {
76
+ const targetButton = event.target;
77
+ const button = targetButton.closest(IgcIconButtonComponent.tagName);
78
+ if (!button || !this.message)
79
+ return;
80
+ let reaction = button.name;
81
+ switch (reaction) {
82
+ case LIKE_INACTIVE:
83
+ case LIKE_ACTIVE:
84
+ reaction = this.message.reactions?.includes(LIKE_ACTIVE)
85
+ ? LIKE_INACTIVE
86
+ : LIKE_ACTIVE;
87
+ break;
88
+ case DISLIKE_INACTIVE:
89
+ case DISLIKE_ACTIVE:
90
+ reaction = this.message.reactions?.includes(DISLIKE_ACTIVE)
91
+ ? DISLIKE_INACTIVE
92
+ : DISLIKE_ACTIVE;
93
+ break;
94
+ case COPY_CONTENT:
95
+ reaction = COPY_CONTENT;
96
+ this._handleCopy();
97
+ break;
98
+ case REGENERATE:
99
+ reaction = REGENERATE;
100
+ break;
101
+ default:
102
+ reaction = undefined;
103
+ }
104
+ this.message.reactions = reaction ? [reaction] : [];
105
+ this.requestUpdate();
106
+ this._state.emitEvent('igcMessageReact', {
107
+ detail: { message: this.message, reaction },
108
+ });
109
+ }
110
+ _renderHeader() {
111
+ return nothing;
112
+ }
113
+ _renderContent() {
114
+ return this.message?.text
115
+ ? html `<pre part="plain-text">${this.message.text}</pre>`
116
+ : nothing;
117
+ }
118
+ _renderActions() {
119
+ const isSent = this.message?.sender === this._state.currentUserId;
120
+ const hasText = this.message?.text.trim();
121
+ const hasAttachments = this.message?.attachments && !isEmpty(this.message?.attachments);
122
+ const isTyping = this._state._isTyping;
123
+ const isLastMessage = this.message === this._state.messages.at(-1);
124
+ const resourceStrings = this._state.resourceStrings;
125
+ if (isSent || !(hasText || hasAttachments) || (isLastMessage && isTyping)) {
126
+ return nothing;
127
+ }
128
+ return html `
129
+ <div @click=${this._handleMessageActionClick} part="message-actions">
130
+ ${this._renderActionButton(COPY_CONTENT, resourceStrings.reactionCopy)}
131
+ ${this._renderActionButton(this.message?.reactions?.includes(LIKE_ACTIVE)
132
+ ? LIKE_ACTIVE
133
+ : LIKE_INACTIVE, resourceStrings.reactionLike)}
134
+ ${this._renderActionButton(this.message?.reactions?.includes(DISLIKE_ACTIVE)
135
+ ? DISLIKE_ACTIVE
136
+ : DISLIKE_INACTIVE, resourceStrings.reactionDislike)}
137
+ ${this._renderActionButton(REGENERATE, resourceStrings.reactionRegenerate)}
138
+ </div>
139
+ `;
140
+ }
141
+ _renderActionButton(name, tooltipMessage) {
142
+ return html `
143
+ <igc-icon-button
144
+ id=${`${name}-button`}
145
+ name=${name}
146
+ variant="flat"
147
+ @pointerenter=${({ target }) => this._state.showActionsTooltip(target, tooltipMessage)}
148
+ @focus=${({ target }) => this._state.showActionsTooltip(target, tooltipMessage)}
149
+ ></igc-icon-button>
150
+ `;
151
+ }
152
+ _renderAttachments() {
153
+ return isEmpty(this.message?.attachments ?? [])
154
+ ? nothing
155
+ : html `
156
+ <igc-message-attachments
157
+ .message=${this.message}
158
+ ></igc-message-attachments>
159
+ `;
160
+ }
161
+ _renderMessage() {
162
+ return this.message
163
+ ? html `${this._renderHeader()}${this._renderContent()}${this._renderAttachments()}${this._renderActions()}`
164
+ : nothing;
165
+ }
166
+ render() {
167
+ const ctx = {
168
+ message: this.message,
169
+ instance: this._state.host,
170
+ };
171
+ const parts = {
172
+ 'message-container': true,
173
+ sent: this._state.isCurrentUserMessage(this.message),
174
+ };
175
+ return html `
176
+ ${cache(this.message
177
+ ? html `
178
+ <div part=${partMap(parts)}>
179
+ ${cache(this._state.options?.renderers?.message
180
+ ? html `${until(this._getRenderer('message')(ctx))}`
181
+ : html `
182
+ ${until(this._getRenderer('messageHeader')(ctx))}
183
+ ${until(this._getRenderer('messageContent')(ctx))}
184
+ ${until(this._getRenderer('messageAttachments')(ctx))}
185
+ ${until(this._getRenderer('messageActions')(ctx))}
186
+ `)}
187
+ </div>
188
+ `
189
+ : nothing)}
190
+ `;
191
+ }
192
+ }
193
+ __decorate([
194
+ consume({ context: chatContext, subscribe: true })
195
+ ], IgcChatMessageComponent.prototype, "_state", void 0);
196
+ __decorate([
197
+ property({ attribute: false })
198
+ ], IgcChatMessageComponent.prototype, "message", void 0);
199
+ //# sourceMappingURL=chat-message.js.map