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,325 @@
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 { ContextProvider } from '@lit/context';
8
+ import { html, LitElement, nothing } from 'lit';
9
+ import { property, query } from 'lit/decorators.js';
10
+ import { cache } from 'lit/directives/cache.js';
11
+ import { repeat } from 'lit/directives/repeat.js';
12
+ import { addThemingController } from '../../theming/theming-controller.js';
13
+ import IgcButtonComponent from '../button/button.js';
14
+ import { chatContext, chatUserInputContext } from '../common/context.js';
15
+ import { addSlotController, setSlots } from '../common/controllers/slot.js';
16
+ import { registerComponent } from '../common/definitions/register.js';
17
+ import { IgcChatResourceStringEN } from '../common/i18n/chat.resources.js';
18
+ import { EventEmitterMixin } from '../common/mixins/event-emitter.js';
19
+ import { isEmpty, last } from '../common/util.js';
20
+ import IgcIconComponent from '../icon/icon.js';
21
+ import IgcListComponent from '../list/list.js';
22
+ import IgcToastComponent from '../toast/toast.js';
23
+ import IgcTooltipComponent from '../tooltip/tooltip.js';
24
+ import IgcChatInputComponent from './chat-input.js';
25
+ import IgcChatMessageComponent from './chat-message.js';
26
+ import { ChatState } from './chat-state.js';
27
+ import { styles } from './themes/chat.base.css.js';
28
+ import { styles as shared } from './themes/shared/chat.common.css.js';
29
+ import { all } from './themes/themes.js';
30
+ const Slots = setSlots('prefix', 'title', 'actions', 'suggestions-header', 'suggestions', 'suggestions-actions', 'suggestion', 'empty-state');
31
+ export default class IgcChatComponent extends EventEmitterMixin(LitElement) {
32
+ static { this.tagName = 'igc-chat'; }
33
+ static { this.styles = [styles, shared]; }
34
+ static register() {
35
+ registerComponent(IgcChatComponent, IgcChatInputComponent, IgcChatMessageComponent, IgcButtonComponent, IgcIconComponent, IgcListComponent, IgcTooltipComponent, IgcToastComponent);
36
+ }
37
+ _updateContext() {
38
+ this._context.setValue(this._state, true);
39
+ }
40
+ _updateUserInputContext() {
41
+ this._userInputContext.setValue(this._state, true);
42
+ }
43
+ set messages(value) {
44
+ this._state.messages = value;
45
+ }
46
+ get messages() {
47
+ return this._state.messages;
48
+ }
49
+ set draftMessage(value) {
50
+ if (this._state && value) {
51
+ this._state.inputValue = value.text;
52
+ this._state.inputAttachments = value.attachments || [];
53
+ this.requestUpdate();
54
+ }
55
+ }
56
+ get draftMessage() {
57
+ return {
58
+ text: this._state.inputValue,
59
+ attachments: this._state.inputAttachments,
60
+ };
61
+ }
62
+ set options(value) {
63
+ this._state.options = value;
64
+ }
65
+ get options() {
66
+ return this._state.options;
67
+ }
68
+ constructor() {
69
+ super();
70
+ this._state = new ChatState(this, this._updateContext, this._updateUserInputContext);
71
+ this._defaults = Object.freeze({
72
+ typingIndicator: () => this._renderLoadingTemplate(),
73
+ suggestionPrefix: () => this._renderSuggestionPrefix(),
74
+ });
75
+ this._slots = addSlotController(this, {
76
+ slots: Slots,
77
+ });
78
+ this._context = new ContextProvider(this, {
79
+ context: chatContext,
80
+ initialValue: this._state,
81
+ });
82
+ this._userInputContext = new ContextProvider(this, {
83
+ context: chatUserInputContext,
84
+ initialValue: this._state,
85
+ });
86
+ this.resourceStrings = IgcChatResourceStringEN;
87
+ addThemingController(this, all);
88
+ }
89
+ _getRenderer(name) {
90
+ return this._state.options?.renderers
91
+ ? (this._state.options.renderers[name] ?? this._defaults[name])
92
+ : this._defaults[name];
93
+ }
94
+ _handleSuggestionClick(text) {
95
+ this._state.addMessageWithEvent({ text });
96
+ this._input?.focusInput();
97
+ }
98
+ scrollToMessage(messageId) {
99
+ if (!isEmpty(this.messages)) {
100
+ const message = this.renderRoot.querySelector(`#message-${messageId}`);
101
+ message?.scrollIntoView({ block: 'end', inline: 'end' });
102
+ }
103
+ }
104
+ addMessage(message) {
105
+ this._state.addMessage(message);
106
+ return last(this.messages);
107
+ }
108
+ updateMessage(message, data, scrollIntoView = false) {
109
+ Object.assign(message, data);
110
+ const messageElement = this.renderRoot.querySelector(`#message-${message.id}`);
111
+ if (messageElement) {
112
+ messageElement.requestUpdate();
113
+ if (scrollIntoView) {
114
+ messageElement.updateComplete.then(() => messageElement.scrollIntoView({ block: 'end', inline: 'end' }));
115
+ }
116
+ }
117
+ else {
118
+ this.requestUpdate('messages');
119
+ }
120
+ }
121
+ updated(properties) {
122
+ if ((properties.has('messages') ||
123
+ this._typingIndicator ||
124
+ this._suggestionsContainer) &&
125
+ !this._state.disableAutoScroll) {
126
+ this._scrollToBottom();
127
+ }
128
+ }
129
+ _scrollToBottom() {
130
+ if (isEmpty(this.messages))
131
+ return;
132
+ const lastMessage = this.renderRoot
133
+ .querySelectorAll(IgcChatMessageComponent.tagName)
134
+ .item(this.messages.length - 1);
135
+ const scrollTarget = this._typingIndicator ?? this._suggestionsContainer ?? lastMessage;
136
+ requestAnimationFrame(() => {
137
+ scrollTarget?.scrollIntoView({ block: 'end', inline: 'end' });
138
+ });
139
+ }
140
+ _renderHeader() {
141
+ const hasContent = this._slots.hasAssignedElements('prefix') ||
142
+ this._slots.hasAssignedElements('title') ||
143
+ this._slots.hasAssignedElements('actions') ||
144
+ this._state.options?.headerText;
145
+ return html `
146
+ <div part="header" ?hidden=${!hasContent}>
147
+ <slot
148
+ name="prefix"
149
+ part="prefix"
150
+ ?hidden=${!this._slots.hasAssignedElements('prefix')}
151
+ ></slot>
152
+ <slot name="title" part="title"
153
+ >${this._state.options?.headerText}</slot
154
+ >
155
+ <slot name="actions" part="actions"></slot>
156
+ </div>
157
+ `;
158
+ }
159
+ _renderMessages() {
160
+ const ctx = { defaults: this._defaults, instance: this };
161
+ return html `
162
+ <div part="message-list" tabindex="0">
163
+ ${repeat(this._state.messages, (message) => message.id, (message) => {
164
+ return html `
165
+ <igc-chat-message
166
+ id=${`message-${message.id}`}
167
+ part="message-item"
168
+ .message=${message}
169
+ exportparts="message-container, message-text, message-attachments, message-actions, sent,
170
+ attachments-container, attachment, attachment-header, attachment-content, attachment-icon, file-name, actions: attachment-actions"
171
+ >
172
+ </igc-chat-message>
173
+ `;
174
+ })}
175
+ ${this._state.options?.isTyping
176
+ ? html `<div part="typing-indicator">
177
+ ${this._getRenderer('typingIndicator')(ctx)}
178
+ </div>`
179
+ : nothing}
180
+ </div>
181
+ `;
182
+ }
183
+ _renderLoadingTemplate() {
184
+ return html `
185
+ <div part="typing-dot"></div>
186
+ <div part="typing-dot"></div>
187
+ <div part="typing-dot"></div>
188
+ <div part="typing-dot"></div>
189
+ `;
190
+ }
191
+ _renderSuggestionPrefix() {
192
+ return html `<igc-icon name="auto_suggest"></igc-icon>`;
193
+ }
194
+ _renderSuggestions() {
195
+ const hasContent = this._slots.hasAssignedElements('suggestions-header');
196
+ const suggestions = this._state.options?.suggestions ?? [];
197
+ const ctx = { instance: this };
198
+ return html `
199
+ <div part="suggestions-container">
200
+ <igc-list>
201
+ <igc-list-header part="suggestions-header">
202
+ <span ?hidden=${hasContent}>
203
+ ${this.resourceStrings.suggestionsHeader}
204
+ </span>
205
+ <slot name="suggestions-header"></slot>
206
+ </igc-list-header>
207
+ <slot name="suggestions" part="suggestions">
208
+ ${suggestions.map((suggestion) => html `
209
+ <slot name="suggestion" part="suggestion">
210
+ <igc-list-item
211
+ @click=${() => this._handleSuggestionClick(suggestion)}
212
+ >
213
+ <span slot="start">
214
+ ${this._getRenderer('suggestionPrefix')(ctx)}
215
+ </span>
216
+ <span slot="title">${suggestion}</span>
217
+ </igc-list-item>
218
+ </slot>
219
+ `)}
220
+ </slot>
221
+ <slot name="suggestions-actions" part="suggestions-actions"></slot>
222
+ </igc-list>
223
+ </div>
224
+ `;
225
+ }
226
+ _renderEmptyState() {
227
+ return html `
228
+ <div part="empty-state">
229
+ <slot name="empty-state"></slot>
230
+ </div>
231
+ `;
232
+ }
233
+ render() {
234
+ const hasMessages = !isEmpty(this.messages);
235
+ const suggestions = isEmpty(this._state.options?.suggestions ?? [])
236
+ ? nothing
237
+ : this._renderSuggestions();
238
+ return html `
239
+ <div
240
+ part="chat-container"
241
+ exportparts="
242
+ chat-container,
243
+ header,
244
+ prefix,
245
+ title,
246
+ actions,
247
+ chat-wrapper,
248
+ chat-messages,
249
+ empty-state,
250
+ suggestions-container,
251
+ suggestions-header,
252
+ suggestions,
253
+ suggestions-actions,
254
+ suggestion,
255
+ message-container,
256
+ message-list,
257
+ message-item,
258
+ message,
259
+ message-text,
260
+ message-attachments,
261
+ message-actions,
262
+ typing-indicator,
263
+ attachments-container,
264
+ attachment,
265
+ attachment-header,
266
+ attachment-content,
267
+ attachment-icon,
268
+ file-name,
269
+ attachment-actions,
270
+ sent
271
+ "
272
+ >
273
+ ${this._renderHeader()}
274
+
275
+ <div part="chat-wrapper">
276
+ ${cache(hasMessages || this._state.options?.isTyping
277
+ ? this._renderMessages()
278
+ : this._renderEmptyState())}
279
+ ${this._state.suggestionsPosition === 'below-messages'
280
+ ? suggestions
281
+ : nothing}
282
+ </div>
283
+
284
+ <igc-chat-input
285
+ exportparts="
286
+ input-container,
287
+ input-wrapper,
288
+ attachments: input-attachments-container,
289
+ attachments-wrapper: input-attachment,
290
+ attachment-name: input-attachment-name,
291
+ text-input,
292
+ buttons-container: input-buttons-container,
293
+ upload-button,
294
+ send-button"
295
+ >
296
+ </igc-chat-input>
297
+ ${this._state.suggestionsPosition === 'below-input'
298
+ ? suggestions
299
+ : nothing}
300
+ </div>
301
+ `;
302
+ }
303
+ }
304
+ __decorate([
305
+ query(IgcChatInputComponent.tagName)
306
+ ], IgcChatComponent.prototype, "_input", void 0);
307
+ __decorate([
308
+ query('[part="typing-indicator"]')
309
+ ], IgcChatComponent.prototype, "_typingIndicator", void 0);
310
+ __decorate([
311
+ query('[part="suggestions-container"]')
312
+ ], IgcChatComponent.prototype, "_suggestionsContainer", void 0);
313
+ __decorate([
314
+ property({ attribute: false })
315
+ ], IgcChatComponent.prototype, "messages", null);
316
+ __decorate([
317
+ property({ attribute: false })
318
+ ], IgcChatComponent.prototype, "draftMessage", null);
319
+ __decorate([
320
+ property({ attribute: false })
321
+ ], IgcChatComponent.prototype, "options", null);
322
+ __decorate([
323
+ property({ attribute: false })
324
+ ], IgcChatComponent.prototype, "resourceStrings", void 0);
325
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/components/chat/chat.ts"],"names":[],"mappings":"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","sourcesContent":["import { ContextProvider } from '@lit/context';\nimport { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property, query } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcButtonComponent from '../button/button.js';\nimport { chatContext, chatUserInputContext } from '../common/context.js';\nimport { addSlotController, setSlots } from '../common/controllers/slot.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { IgcChatResourceStringEN } from '../common/i18n/chat.resources.js';\nimport type { Constructor } from '../common/mixins/constructor.js';\nimport { EventEmitterMixin } from '../common/mixins/event-emitter.js';\nimport { isEmpty, last } from '../common/util.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport IgcListComponent from '../list/list.js';\nimport IgcToastComponent from '../toast/toast.js';\nimport IgcTooltipComponent from '../tooltip/tooltip.js';\nimport IgcChatInputComponent from './chat-input.js';\nimport IgcChatMessageComponent from './chat-message.js';\nimport { ChatState } from './chat-state.js';\nimport { styles } from './themes/chat.base.css.js';\nimport { styles as shared } from './themes/shared/chat.common.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n ChatRenderContext,\n ChatTemplateRenderer,\n IgcChatMessage,\n IgcChatMessageAttachment,\n IgcChatOptions,\n} from './types.js';\n\ntype DefaultChatRenderers = {\n typingIndicator: ChatTemplateRenderer<ChatRenderContext>;\n suggestionPrefix: ChatTemplateRenderer<ChatRenderContext>;\n};\n\n/**\n * Defines the custom events dispatched by the `<igc-chat>` component.\n */\nexport interface IgcChatComponentEventMap {\n /**\n * Dispatched when a new chat message is created (sent).\n */\n igcMessageCreated: CustomEvent<IgcChatMessage>;\n\n /**\n * Dispatched when a message is reacted to.\n */\n igcMessageReact: CustomEvent<{ message: IgcChatMessage; reaction: string }>;\n\n /**\n * Dispatched when a chat message attachment is clicked.\n */\n igcAttachmentClick: CustomEvent<IgcChatMessageAttachment>;\n\n /**\n * Dispatched when an attachment is changed (e.g., updated or removed).\n */\n igcAttachmentChange: CustomEvent<IgcChatMessageAttachment>;\n\n /**\n * Dispatched during an attachment drag operation.\n */\n igcAttachmentDrag: CustomEvent<void>;\n\n /**\n * Dispatched when an attachment is dropped (e.g., in a drag-and-drop operation).\n */\n igcAttachmentDrop: CustomEvent<void>;\n\n /**\n * Dispatched when the typing status changes (e.g., user starts or stops typing).\n */\n igcTypingChange: CustomEvent<boolean>;\n\n /**\n * Dispatched when the chat input field gains focus.\n */\n igcInputFocus: CustomEvent<void>;\n\n /**\n * Dispatched when the chat input field loses focus.\n */\n igcInputBlur: CustomEvent<void>;\n\n /**\n * Dispatched when the content of the chat input changes.\n */\n igcInputChange: CustomEvent<string>;\n}\n\nconst Slots = setSlots(\n 'prefix',\n 'title',\n 'actions',\n 'suggestions-header',\n 'suggestions',\n 'suggestions-actions',\n 'suggestion',\n 'empty-state'\n);\n\n/**\n * A chat UI component for displaying messages, attachments, and input interaction.\n *\n * @element igc-chat\n *\n * @fires igcMessageCreated - Dispatched when a new chat message is created (sent).\n * @fires igcMessageReact - Dispatched when a message is reacted to.\n * @fires igcAttachmentClick - Dispatched when a chat message attachment is clicked.\n * @fires igcAttachmentChange - Dispatched when a message attachment is changed (e.g., updated or removed).\n * @fires igcAttachmentDrag - Dispatched during an attachment drag operation.\n * @fires igcAttachmentDrop - Dispatched when an attachment is dropped (e.g., in a drag-and-drop operation).\n * @fires igcTypingChange - Dispatched when the typing status changes (e.g., user starts or stops typing).\n * @fires igcInputFocus - Dispatched when the chat input field gains focus.\n * @fires igcInputBlur - Dispatched when the chat input field loses focus.\n * @fires igcInputChange - Dispatched when the content of the chat input changes.\n *\n * @slot prefix - Slot for injecting content (e.g., avatar or icon) before the chat title.\n * @slot title - Slot for overriding the chat title content.\n * @slot actions - Slot for injecting header actions (e.g., buttons, menus).\n * @slot suggestions-header - Slot for rendering a custom header for the suggestions list.\n * @slot suggestions - Slot for rendering a custom list of quick reply suggestions.\n * @slot suggestions-actions - Slot for rendering additional actions.\n * @slot suggestion - Slot for rendering a single suggestion item.\n * @slot empty-state - Slot shown when there are no messages.\n *\n * @csspart header - Styles the header container.\n * @csspart prefix - Styles the element before the title (e.g., avatar).\n * @csspart title - Styles the chat header title.\n * @csspart suggestions - Styles the suggestion container.\n * @csspart suggestion - Styles each suggestion item.\n */\nexport default class IgcChatComponent extends EventEmitterMixin<\n IgcChatComponentEventMap,\n Constructor<LitElement>\n>(LitElement) {\n public static readonly tagName = 'igc-chat';\n\n public static styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatComponent,\n IgcChatInputComponent,\n IgcChatMessageComponent,\n IgcButtonComponent,\n IgcIconComponent,\n IgcListComponent,\n IgcTooltipComponent,\n IgcToastComponent\n );\n }\n\n private readonly _state = new ChatState(\n this,\n this._updateContext,\n this._updateUserInputContext\n );\n\n private readonly _defaults = Object.freeze<DefaultChatRenderers>({\n typingIndicator: () => this._renderLoadingTemplate(),\n suggestionPrefix: () => this._renderSuggestionPrefix(),\n });\n\n private readonly _slots = addSlotController(this, {\n slots: Slots,\n });\n\n private readonly _context = new ContextProvider(this, {\n context: chatContext,\n initialValue: this._state,\n });\n\n private readonly _userInputContext = new ContextProvider(this, {\n context: chatUserInputContext,\n initialValue: this._state,\n });\n\n @query(IgcChatInputComponent.tagName)\n private readonly _input?: IgcChatInputComponent;\n\n @query('[part=\"typing-indicator\"]')\n private readonly _typingIndicator?: HTMLElement;\n\n @query('[part=\"suggestions-container\"]')\n private readonly _suggestionsContainer?: HTMLElement;\n\n private _updateContext(): void {\n this._context.setValue(this._state, true);\n }\n\n private _updateUserInputContext(): void {\n this._userInputContext.setValue(this._state, true);\n }\n\n /**\n * The list of chat messages currently displayed.\n * Use this property to set or update the message history.\n */\n @property({ attribute: false })\n public set messages(value: IgcChatMessage[]) {\n this._state.messages = value;\n }\n\n public get messages(): IgcChatMessage[] {\n return this._state.messages;\n }\n\n /**\n * The chat message currently being composed but not yet sent.\n * Includes the draft text and any attachments.\n */\n @property({ attribute: false })\n public set draftMessage(value: {\n text: string;\n attachments?: IgcChatMessageAttachment[];\n }) {\n if (this._state && value) {\n this._state.inputValue = value.text;\n this._state.inputAttachments = value.attachments || [];\n this.requestUpdate();\n }\n }\n\n public get draftMessage(): {\n text: string;\n attachments?: IgcChatMessageAttachment[];\n } {\n return {\n text: this._state.inputValue,\n attachments: this._state.inputAttachments,\n };\n }\n\n /**\n * Controls the chat behavior and appearance through a configuration object.\n * Use this to toggle UI options, provide suggestions, templates, etc.\n */\n @property({ attribute: false })\n public set options(value: IgcChatOptions) {\n this._state.options = value;\n }\n\n public get options(): IgcChatOptions | undefined {\n return this._state.options;\n }\n\n /**\n * The resource strings of the chat.\n */\n @property({ attribute: false })\n public resourceStrings = IgcChatResourceStringEN;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n private _getRenderer<U extends keyof DefaultChatRenderers>(\n name: U\n ): DefaultChatRenderers[U] {\n return this._state.options?.renderers\n ? (this._state.options.renderers[name] ?? this._defaults[name])\n : this._defaults[name];\n }\n\n private _handleSuggestionClick(text: string): void {\n this._state.addMessageWithEvent({ text });\n this._input?.focusInput();\n }\n\n // REVIEW: Maybe accept an `IgcMessage` type as well?\n /**\n * Scrolls the view to a specific message by id.\n * @param messageId - The id of the message to scroll to\n */\n public scrollToMessage(messageId: string): void {\n if (!isEmpty(this.messages)) {\n const message = this.renderRoot.querySelector(`#message-${messageId}`);\n message?.scrollIntoView({ block: 'end', inline: 'end' });\n }\n }\n\n // REVIEW\n public addMessage(message: Partial<IgcChatMessage>): IgcChatMessage {\n this._state.addMessage(message);\n return last(this.messages);\n }\n\n // REVIEW\n public updateMessage(\n message: IgcChatMessage,\n data: Partial<IgcChatMessage>,\n scrollIntoView = false\n ) {\n Object.assign(message, data);\n const messageElement =\n this.renderRoot.querySelector<IgcChatMessageComponent>(\n `#message-${message.id}`\n );\n\n if (messageElement) {\n messageElement.requestUpdate();\n if (scrollIntoView) {\n messageElement.updateComplete.then(() =>\n messageElement.scrollIntoView({ block: 'end', inline: 'end' })\n );\n }\n } else {\n this.requestUpdate('messages');\n }\n }\n\n protected override updated(properties: PropertyValues<this>): void {\n if (\n (properties.has('messages') ||\n this._typingIndicator ||\n this._suggestionsContainer) &&\n !this._state.disableAutoScroll\n ) {\n this._scrollToBottom();\n }\n }\n\n private _scrollToBottom() {\n if (isEmpty(this.messages)) return;\n\n const lastMessage = this.renderRoot\n .querySelectorAll(IgcChatMessageComponent.tagName)\n .item(this.messages.length - 1);\n\n const scrollTarget =\n this._typingIndicator ?? this._suggestionsContainer ?? lastMessage;\n\n requestAnimationFrame(() => {\n scrollTarget?.scrollIntoView({ block: 'end', inline: 'end' });\n });\n }\n\n private _renderHeader() {\n const hasContent =\n this._slots.hasAssignedElements('prefix') ||\n this._slots.hasAssignedElements('title') ||\n this._slots.hasAssignedElements('actions') ||\n this._state.options?.headerText;\n\n return html`\n <div part=\"header\" ?hidden=${!hasContent}>\n <slot\n name=\"prefix\"\n part=\"prefix\"\n ?hidden=${!this._slots.hasAssignedElements('prefix')}\n ></slot>\n <slot name=\"title\" part=\"title\"\n >${this._state.options?.headerText}</slot\n >\n <slot name=\"actions\" part=\"actions\"></slot>\n </div>\n `;\n }\n\n private _renderMessages() {\n const ctx = { defaults: this._defaults, instance: this };\n\n return html`\n <div part=\"message-list\" tabindex=\"0\">\n ${repeat(\n this._state.messages,\n (message) => message.id,\n (message) => {\n return html`\n <igc-chat-message\n id=${`message-${message.id}`}\n part=\"message-item\"\n .message=${message}\n exportparts=\"message-container, message-text, message-attachments, message-actions, sent,\n attachments-container, attachment, attachment-header, attachment-content, attachment-icon, file-name, actions: attachment-actions\"\n >\n </igc-chat-message>\n `;\n }\n )}\n ${this._state.options?.isTyping\n ? html`<div part=\"typing-indicator\">\n ${this._getRenderer('typingIndicator')(ctx)}\n </div>`\n : nothing}\n </div>\n `;\n }\n\n private _renderLoadingTemplate() {\n return html`\n <div part=\"typing-dot\"></div>\n <div part=\"typing-dot\"></div>\n <div part=\"typing-dot\"></div>\n <div part=\"typing-dot\"></div>\n `;\n }\n\n private _renderSuggestionPrefix() {\n return html`<igc-icon name=\"auto_suggest\"></igc-icon>`;\n }\n\n private _renderSuggestions() {\n const hasContent = this._slots.hasAssignedElements('suggestions-header');\n const suggestions = this._state.options?.suggestions ?? [];\n const ctx = { instance: this };\n\n return html`\n <div part=\"suggestions-container\">\n <igc-list>\n <igc-list-header part=\"suggestions-header\">\n <span ?hidden=${hasContent}>\n ${this.resourceStrings.suggestionsHeader}\n </span>\n <slot name=\"suggestions-header\"></slot>\n </igc-list-header>\n <slot name=\"suggestions\" part=\"suggestions\">\n ${suggestions.map(\n (suggestion) => html`\n <slot name=\"suggestion\" part=\"suggestion\">\n <igc-list-item\n @click=${() => this._handleSuggestionClick(suggestion)}\n >\n <span slot=\"start\">\n ${this._getRenderer('suggestionPrefix')(ctx)}\n </span>\n <span slot=\"title\">${suggestion}</span>\n </igc-list-item>\n </slot>\n `\n )}\n </slot>\n <slot name=\"suggestions-actions\" part=\"suggestions-actions\"></slot>\n </igc-list>\n </div>\n `;\n }\n\n private _renderEmptyState() {\n return html`\n <div part=\"empty-state\">\n <slot name=\"empty-state\"></slot>\n </div>\n `;\n }\n\n protected override render() {\n const hasMessages = !isEmpty(this.messages);\n const suggestions = isEmpty(this._state.options?.suggestions ?? [])\n ? nothing\n : this._renderSuggestions();\n\n return html`\n <div\n part=\"chat-container\"\n exportparts=\"\n chat-container,\n header,\n prefix,\n title,\n actions,\n chat-wrapper,\n chat-messages,\n empty-state,\n suggestions-container,\n suggestions-header,\n suggestions,\n suggestions-actions,\n suggestion,\n message-container,\n message-list,\n message-item,\n message,\n message-text,\n message-attachments,\n message-actions,\n typing-indicator,\n attachments-container,\n attachment,\n attachment-header,\n attachment-content,\n attachment-icon,\n file-name,\n attachment-actions,\n sent\n \"\n >\n ${this._renderHeader()}\n\n <div part=\"chat-wrapper\">\n ${cache(\n hasMessages || this._state.options?.isTyping\n ? this._renderMessages()\n : this._renderEmptyState()\n )}\n ${this._state.suggestionsPosition === 'below-messages'\n ? suggestions\n : nothing}\n </div>\n\n <igc-chat-input\n exportparts=\"\n input-container,\n input-wrapper,\n attachments: input-attachments-container,\n attachments-wrapper: input-attachment,\n attachment-name: input-attachment-name,\n text-input,\n buttons-container: input-buttons-container,\n upload-button,\n send-button\"\n >\n </igc-chat-input>\n ${this._state.suggestionsPosition === 'below-input'\n ? suggestions\n : nothing}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat': IgcChatComponent;\n }\n}\n"]}
@@ -0,0 +1,26 @@
1
+ import type { IgcChatMessage } from '../types.js';
2
+ /**
3
+ * Options to configure the MarkdownMessageRenderer.
4
+ */
5
+ export interface MarkdownRendererOptions {
6
+ /**
7
+ * If true, disables syntax highlighting entirely.
8
+ */
9
+ noHighlighter?: boolean;
10
+ /**
11
+ * List of programming languages to support in syntax highlighting.
12
+ */
13
+ languages?: string[];
14
+ /**
15
+ * The theme used by the syntax highlighter (e.g., 'github-light').
16
+ */
17
+ theme?: {
18
+ light?: string;
19
+ dark?: string;
20
+ };
21
+ /**
22
+ * A custom HTML sanitization function. Defaults to DOMPurify.sanitize.
23
+ */
24
+ sanitizer?: (html: string) => string;
25
+ }
26
+ export declare function createMarkdownRenderer(options?: MarkdownRendererOptions): Promise<(message: IgcChatMessage) => Promise<unknown>>;
@@ -0,0 +1,49 @@
1
+ import DOMPurify from 'dompurify';
2
+ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
3
+ import { Marked } from 'marked';
4
+ import markedShiki from 'marked-shiki';
5
+ import { bundledThemes, createHighlighter } from 'shiki/bundle/web';
6
+ const DEFAULT_LANGUAGES = ['javascript', 'typescript', 'html', 'css'];
7
+ const DEFAULT_THEME = {
8
+ light: 'github-light',
9
+ dark: 'github-dark',
10
+ };
11
+ export async function createMarkdownRenderer(options) {
12
+ const sanitizer = options?.sanitizer ?? DOMPurify.sanitize;
13
+ const markdown = new Marked({
14
+ breaks: true,
15
+ gfm: true,
16
+ extensions: [
17
+ {
18
+ name: 'link',
19
+ renderer({ href, title, text }) {
20
+ return `<a href="${href}" target="_blank" rel="noopener noreferrer" ${title ? `title="${title}"` : ''}>${text}</a>`;
21
+ },
22
+ },
23
+ ],
24
+ });
25
+ if (!options?.noHighlighter) {
26
+ const themes = options?.theme ?? DEFAULT_THEME;
27
+ const langs = options?.languages ?? DEFAULT_LANGUAGES;
28
+ const highlighter = await createHighlighter({
29
+ langs,
30
+ themes: Object.keys(bundledThemes),
31
+ });
32
+ markdown.use(markedShiki({
33
+ highlight(code, lang, _) {
34
+ try {
35
+ return highlighter.codeToHtml(code, { lang, themes });
36
+ }
37
+ catch {
38
+ return `<pre><code>${sanitizer(code)}</code></pre>`;
39
+ }
40
+ },
41
+ }));
42
+ }
43
+ return async (message) => {
44
+ return message.text
45
+ ? unsafeHTML(sanitizer(await markdown.parse(message.text)))
46
+ : '';
47
+ };
48
+ }
49
+ //# sourceMappingURL=markdown-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markdown-renderer.js","sourceRoot":"","sources":["../../../../src/components/chat/extras/markdown-renderer.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,WAAW,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGpE,MAAM,iBAAiB,GAAG,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;AACtE,MAAM,aAAa,GAAG;IACpB,KAAK,EAAE,cAAc;IACrB,IAAI,EAAE,aAAa;CACpB,CAAC;AA8BF,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAiC;IAEjC,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC;IAE3D,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAC;QAC1B,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,IAAI;QACT,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,MAAM;gBACZ,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;oBAC5B,OAAO,YAAY,IAAI,+CAA+C,KAAK,CAAC,CAAC,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,MAAM,CAAC;gBACtH,CAAC;aACF;SACF;KACF,CAAC,CAAC;IAEH,IAAI,CAAC,OAAO,EAAE,aAAa,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,EAAE,KAAK,IAAI,aAAa,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO,EAAE,SAAS,IAAI,iBAAiB,CAAC;QAEtD,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC;YAC1C,KAAK;YACL,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;SACnC,CAAC,CAAC;QAEH,QAAQ,CAAC,GAAG,CACV,WAAW,CAAC;YACV,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC;oBACH,OAAO,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;gBACxD,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,cAAc,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC;gBACtD,CAAC;YACH,CAAC;SACF,CAAC,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAK,EAAE,OAAuB,EAAoB,EAAE;QACzD,OAAO,OAAO,CAAC,IAAI;YACjB,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3D,CAAC,CAAC,EAAE,CAAC;IACT,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import DOMPurify from 'dompurify';\nimport { unsafeHTML } from 'lit/directives/unsafe-html.js';\nimport { Marked } from 'marked';\nimport markedShiki from 'marked-shiki';\nimport { bundledThemes, createHighlighter } from 'shiki/bundle/web';\nimport type { IgcChatMessage } from '../types.js';\n\nconst DEFAULT_LANGUAGES = ['javascript', 'typescript', 'html', 'css'];\nconst DEFAULT_THEME = {\n light: 'github-light',\n dark: 'github-dark',\n};\n\n/**\n * Options to configure the MarkdownMessageRenderer.\n */\nexport interface MarkdownRendererOptions {\n /**\n * If true, disables syntax highlighting entirely.\n */\n noHighlighter?: boolean;\n\n /**\n * List of programming languages to support in syntax highlighting.\n */\n languages?: string[];\n\n /**\n * The theme used by the syntax highlighter (e.g., 'github-light').\n */\n theme?: {\n light?: string;\n dark?: string;\n };\n\n /**\n * A custom HTML sanitization function. Defaults to DOMPurify.sanitize.\n */\n sanitizer?: (html: string) => string;\n}\n\nexport async function createMarkdownRenderer(\n options?: MarkdownRendererOptions\n) {\n const sanitizer = options?.sanitizer ?? DOMPurify.sanitize;\n\n const markdown = new Marked({\n breaks: true,\n gfm: true,\n extensions: [\n {\n name: 'link',\n renderer({ href, title, text }) {\n return `<a href=\"${href}\" target=\"_blank\" rel=\"noopener noreferrer\" ${title ? `title=\"${title}\"` : ''}>${text}</a>`;\n },\n },\n ],\n });\n\n if (!options?.noHighlighter) {\n const themes = options?.theme ?? DEFAULT_THEME;\n const langs = options?.languages ?? DEFAULT_LANGUAGES;\n\n const highlighter = await createHighlighter({\n langs,\n themes: Object.keys(bundledThemes),\n });\n\n markdown.use(\n markedShiki({\n highlight(code, lang, _) {\n try {\n return highlighter.codeToHtml(code, { lang, themes });\n } catch {\n return `<pre><code>${sanitizer(code)}</code></pre>`;\n }\n },\n })\n );\n }\n\n return async (message: IgcChatMessage): Promise<unknown> => {\n return message.text\n ? unsafeHTML(sanitizer(await markdown.parse(message.text)))\n : '';\n };\n}\n"]}
@@ -0,0 +1,56 @@
1
+ import { LitElement } from 'lit';
2
+ import type { IgcChatMessage } from './types.js';
3
+ /**
4
+ * A component that renders message attachments within a chat.
5
+ *
6
+ * Displays attachments such as images or files, supporting custom templates
7
+ * and default rendering using expansion panels.
8
+ *
9
+ * @element igc-message-attachments
10
+ *
11
+ * @csspart attachments-container - Container wrapping all attachments.
12
+ * @csspart attachment - Wrapper for a single attachment.
13
+ * @csspart attachment-header - Wrapper for a single attachment header.
14
+ * @csspart attachments-content - Part representing the attachment preview.
15
+ * @csspart attachment-icon - Icon part representing the attachment type.
16
+ * @csspart file-name - Part representing the attachment's file name.
17
+ * @csspart actions - Container for header action buttons.
18
+ * @csspart image-attachment - Part for the image element inside an image attachment.
19
+ *
20
+ * @fires igcAttachmentClick - Fired when an attachment header is toggled (clicked).
21
+ */
22
+ export default class IgcMessageAttachmentsComponent extends LitElement {
23
+ static readonly tagName = "igc-message-attachments";
24
+ static styles: import("lit").CSSResult[];
25
+ static register(): void;
26
+ private readonly _defaults;
27
+ private readonly _state;
28
+ /**
29
+ * The array of attachments to render.
30
+ */
31
+ message?: IgcChatMessage;
32
+ constructor();
33
+ private _getRenderer;
34
+ private _handleHeaderClick;
35
+ /**
36
+ * Default attachment header template used when no custom template is provided.
37
+ * Renders the attachment icon and name.
38
+ * @param attachment The message attachment to render
39
+ * @returns TemplateResult containing the rendered attachment header
40
+ */
41
+ private renderHeader;
42
+ /**
43
+ * Default attachment content template used when no custom template is provided.
44
+ * Renders the attachment content based on its type.
45
+ * @param attachment The message attachment to render
46
+ * @returns TemplateResult containing the rendered attachment content
47
+ */
48
+ private _renderContent;
49
+ private _renderAttachment;
50
+ protected render(): import("lit-html").TemplateResult<1>;
51
+ }
52
+ declare global {
53
+ interface HTMLElementTagNameMap {
54
+ 'igc-message-attachments': IgcMessageAttachmentsComponent;
55
+ }
56
+ }
@@ -0,0 +1,132 @@
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 { repeat } from 'lit/directives/repeat.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 { chatContext } from '../common/context.js';
16
+ import { registerComponent } from '../common/definitions/register.js';
17
+ import { partMap } from '../common/part-map.js';
18
+ import IgcIconComponent from '../icon/icon.js';
19
+ import { all } from './themes/attachments.js';
20
+ import { styles } from './themes/message-attachments.base.css.js';
21
+ import { styles as shared } from './themes/shared/message-attachments/message-attachments.common.css.js';
22
+ import { ChatFileTypeIcons, createAttachmentURL, getFileExtension, isImageAttachment, } from './utils.js';
23
+ export default class IgcMessageAttachmentsComponent extends LitElement {
24
+ static { this.tagName = 'igc-message-attachments'; }
25
+ static { this.styles = [styles, shared]; }
26
+ static register() {
27
+ registerComponent(IgcMessageAttachmentsComponent, IgcIconComponent, IgcIconButtonComponent);
28
+ }
29
+ constructor() {
30
+ super();
31
+ this._defaults = Object.freeze({
32
+ attachment: (ctx) => this._renderAttachment(ctx.attachment),
33
+ attachmentHeader: (ctx) => this.renderHeader(ctx.attachment),
34
+ attachmentContent: (ctx) => this._renderContent(ctx.attachment),
35
+ });
36
+ this._handleHeaderClick = (attachment) => {
37
+ this._state.emitEvent('igcAttachmentClick', { detail: attachment });
38
+ };
39
+ addThemingController(this, all);
40
+ }
41
+ _getRenderer(name) {
42
+ return this._state.options?.renderers
43
+ ? (this._state.options.renderers[name] ?? this._defaults[name])
44
+ : this._defaults[name];
45
+ }
46
+ renderHeader(attachment) {
47
+ const isCurrentUser = this._state.isCurrentUserMessage(this.message);
48
+ const iconName = isImageAttachment(attachment)
49
+ ? 'attach_image'
50
+ : 'document_thumbnail';
51
+ return html `
52
+ ${!isCurrentUser
53
+ ? html `<igc-icon name=${iconName} part="attachment-icon"></igc-icon>`
54
+ : nothing}
55
+ <span part="file-name">${attachment.name}</span>
56
+ `;
57
+ }
58
+ _renderContent(attachment) {
59
+ const iconName = ChatFileTypeIcons.get(getFileExtension(attachment.name)) ??
60
+ ChatFileTypeIcons.get('default');
61
+ return isImageAttachment(attachment)
62
+ ? html `
63
+ <img
64
+ part="image-attachment"
65
+ src=${createAttachmentURL(attachment)}
66
+ alt=${attachment.name}
67
+ />
68
+ `
69
+ : html `<igc-icon part="file-attachment" name=${iconName}></igc-icon>`;
70
+ }
71
+ _renderAttachment(attachment) {
72
+ const isCurrentUser = this._state.isCurrentUserMessage(this.message);
73
+ const attachmentParts = {
74
+ attachment: true,
75
+ sent: isCurrentUser,
76
+ };
77
+ const contentParts = {
78
+ 'attachment-content': true,
79
+ sent: isCurrentUser,
80
+ };
81
+ const headerParts = {
82
+ 'attachment-header': true,
83
+ sent: isCurrentUser,
84
+ };
85
+ const ctx = {
86
+ attachment,
87
+ message: this.message,
88
+ instance: this._state.host,
89
+ };
90
+ const content = html `<div part=${partMap(contentParts)}>
91
+ ${until(this._getRenderer('attachmentContent')(ctx))}
92
+ </div>`;
93
+ const header = html ` <div
94
+ part=${partMap(headerParts)}
95
+ role="button"
96
+ @click=${() => this._handleHeaderClick(attachment)}
97
+ >
98
+ <div part="details">
99
+ ${until(this._getRenderer('attachmentHeader')(ctx))}
100
+ </div>
101
+ </div>`;
102
+ return html `
103
+ <div part=${partMap(attachmentParts)}>
104
+ ${isCurrentUser ? content : nothing} ${header}
105
+ ${!isCurrentUser ? content : nothing}
106
+ </div>
107
+ `;
108
+ }
109
+ render() {
110
+ const attachments = this.message?.attachments ?? [];
111
+ return html `${cache(this.message
112
+ ? html `
113
+ <div part="attachments-container">
114
+ ${repeat(attachments, (attachment) => attachment.id, (attachment) => html `
115
+ ${until(this._getRenderer('attachment')({
116
+ attachment,
117
+ message: this.message,
118
+ instance: this._state.host,
119
+ }))}
120
+ `)}
121
+ </div>
122
+ `
123
+ : nothing)}`;
124
+ }
125
+ }
126
+ __decorate([
127
+ consume({ context: chatContext, subscribe: true })
128
+ ], IgcMessageAttachmentsComponent.prototype, "_state", void 0);
129
+ __decorate([
130
+ property({ attribute: false })
131
+ ], IgcMessageAttachmentsComponent.prototype, "message", void 0);
132
+ //# sourceMappingURL=message-attachments.js.map