igniteui-webcomponents 6.1.1-alpha.0 → 6.1.2

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 (374) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/animations/player.d.ts +1 -1
  3. package/animations/player.js.map +1 -1
  4. package/components/avatar/avatar.d.ts +1 -0
  5. package/components/avatar/avatar.js +9 -12
  6. package/components/avatar/avatar.js.map +1 -1
  7. package/components/badge/badge.d.ts +1 -0
  8. package/components/badge/badge.js +9 -12
  9. package/components/badge/badge.js.map +1 -1
  10. package/components/banner/banner.js +6 -9
  11. package/components/banner/banner.js.map +1 -1
  12. package/components/button/button.d.ts +1 -0
  13. package/components/button/button.js +9 -12
  14. package/components/button/button.js.map +1 -1
  15. package/components/button/icon-button.d.ts +1 -0
  16. package/components/button/icon-button.js +9 -12
  17. package/components/button/icon-button.js.map +1 -1
  18. package/components/button-group/button-group.js +6 -9
  19. package/components/button-group/button-group.js.map +1 -1
  20. package/components/button-group/toggle-button.d.ts +1 -0
  21. package/components/button-group/toggle-button.js +6 -6
  22. package/components/button-group/toggle-button.js.map +1 -1
  23. package/components/calendar/calendar.d.ts +1 -0
  24. package/components/calendar/calendar.js +11 -17
  25. package/components/calendar/calendar.js.map +1 -1
  26. package/components/calendar/days-view/days-view.js +3 -3
  27. package/components/calendar/days-view/days-view.js.map +1 -1
  28. package/components/calendar/months-view/months-view.js +3 -3
  29. package/components/calendar/months-view/months-view.js.map +1 -1
  30. package/components/calendar/themes/calendar.base.css.js +1 -1
  31. package/components/calendar/themes/calendar.base.css.js.map +1 -1
  32. package/components/calendar/themes/dark/calendar.bootstrap.css.js +1 -1
  33. package/components/calendar/themes/dark/calendar.bootstrap.css.js.map +1 -1
  34. package/components/calendar/themes/dark/calendar.fluent.css.js +1 -1
  35. package/components/calendar/themes/dark/calendar.fluent.css.js.map +1 -1
  36. package/components/calendar/themes/dark/calendar.indigo.css.js +1 -1
  37. package/components/calendar/themes/dark/calendar.indigo.css.js.map +1 -1
  38. package/components/calendar/themes/dark/calendar.material.css.js +1 -1
  39. package/components/calendar/themes/dark/calendar.material.css.js.map +1 -1
  40. package/components/calendar/themes/light/calendar.bootstrap.css.js +1 -1
  41. package/components/calendar/themes/light/calendar.bootstrap.css.js.map +1 -1
  42. package/components/calendar/themes/light/calendar.fluent.css.js +1 -1
  43. package/components/calendar/themes/light/calendar.fluent.css.js.map +1 -1
  44. package/components/calendar/themes/light/calendar.indigo.css.js +1 -1
  45. package/components/calendar/themes/light/calendar.indigo.css.js.map +1 -1
  46. package/components/calendar/themes/light/calendar.material.css.js +1 -1
  47. package/components/calendar/themes/light/calendar.material.css.js.map +1 -1
  48. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
  49. package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
  50. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js +1 -1
  51. package/components/calendar/themes/shared/fluent/calendar.fluent.css.js.map +1 -1
  52. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
  53. package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
  54. package/components/calendar/themes/shared/material/calendar.material.css.js +1 -1
  55. package/components/calendar/themes/shared/material/calendar.material.css.js.map +1 -1
  56. package/components/calendar/years-view/years-view.js +3 -3
  57. package/components/calendar/years-view/years-view.js.map +1 -1
  58. package/components/card/card.actions.d.ts +1 -0
  59. package/components/card/card.actions.js +9 -12
  60. package/components/card/card.actions.js.map +1 -1
  61. package/components/card/card.content.d.ts +1 -0
  62. package/components/card/card.content.js +8 -14
  63. package/components/card/card.content.js.map +1 -1
  64. package/components/card/card.d.ts +1 -0
  65. package/components/card/card.header.d.ts +1 -0
  66. package/components/card/card.header.js +8 -14
  67. package/components/card/card.header.js.map +1 -1
  68. package/components/card/card.js +10 -13
  69. package/components/card/card.js.map +1 -1
  70. package/components/carousel/carousel-indicator-container.d.ts +1 -0
  71. package/components/carousel/carousel-indicator-container.js +8 -17
  72. package/components/carousel/carousel-indicator-container.js.map +1 -1
  73. package/components/carousel/carousel.d.ts +4 -6
  74. package/components/carousel/carousel.js +36 -60
  75. package/components/carousel/carousel.js.map +1 -1
  76. package/components/checkbox/checkbox.d.ts +1 -1
  77. package/components/checkbox/checkbox.js +10 -14
  78. package/components/checkbox/checkbox.js.map +1 -1
  79. package/components/checkbox/switch.d.ts +1 -0
  80. package/components/checkbox/switch.js +9 -18
  81. package/components/checkbox/switch.js.map +1 -1
  82. package/components/chip/chip.js +6 -9
  83. package/components/chip/chip.js.map +1 -1
  84. package/components/combo/combo-header.d.ts +1 -0
  85. package/components/combo/combo-header.js +8 -14
  86. package/components/combo/combo-header.js.map +1 -1
  87. package/components/combo/combo-item.d.ts +1 -0
  88. package/components/combo/combo-item.js +9 -12
  89. package/components/combo/combo-item.js.map +1 -1
  90. package/components/combo/combo.js +2 -2
  91. package/components/combo/combo.js.map +1 -1
  92. package/components/combo/themes/dark/combo.bootstrap.css.js +1 -1
  93. package/components/combo/themes/dark/combo.bootstrap.css.js.map +1 -1
  94. package/components/combo/themes/light/combo.bootstrap.css.js +1 -1
  95. package/components/combo/themes/light/combo.bootstrap.css.js.map +1 -1
  96. package/components/combo/themes/light/combo.shared.css.js +1 -1
  97. package/components/combo/themes/light/combo.shared.css.js.map +1 -1
  98. package/components/common/context.d.ts +1 -5
  99. package/components/common/context.js +1 -2
  100. package/components/common/context.js.map +1 -1
  101. package/components/common/definitions/defineAllComponents.js +0 -2
  102. package/components/common/definitions/defineAllComponents.js.map +1 -1
  103. package/components/common/mixins/alert.d.ts +7 -8
  104. package/components/common/mixins/alert.js +23 -34
  105. package/components/common/mixins/alert.js.map +1 -1
  106. package/components/date-picker/date-picker.d.ts +1 -1
  107. package/components/date-picker/date-picker.js +7 -9
  108. package/components/date-picker/date-picker.js.map +1 -1
  109. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js +1 -1
  110. package/components/date-picker/themes/dark/date-picker.bootstrap.css.js.map +1 -1
  111. package/components/date-picker/themes/dark/date-picker.fluent.css.js +1 -1
  112. package/components/date-picker/themes/dark/date-picker.fluent.css.js.map +1 -1
  113. package/components/date-picker/themes/dark/date-picker.indigo.css.js +1 -1
  114. package/components/date-picker/themes/dark/date-picker.indigo.css.js.map +1 -1
  115. package/components/date-picker/themes/dark/date-picker.material.css.js +1 -1
  116. package/components/date-picker/themes/dark/date-picker.material.css.js.map +1 -1
  117. package/components/date-picker/themes/light/date-picker.bootstrap.css.js +1 -1
  118. package/components/date-picker/themes/light/date-picker.bootstrap.css.js.map +1 -1
  119. package/components/date-picker/themes/light/date-picker.fluent.css.js +1 -1
  120. package/components/date-picker/themes/light/date-picker.fluent.css.js.map +1 -1
  121. package/components/date-picker/themes/light/date-picker.indigo.css.js +1 -1
  122. package/components/date-picker/themes/light/date-picker.indigo.css.js.map +1 -1
  123. package/components/date-picker/themes/light/date-picker.material.css.js +1 -1
  124. package/components/date-picker/themes/light/date-picker.material.css.js.map +1 -1
  125. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
  126. package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
  127. package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
  128. package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
  129. package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
  130. package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
  131. package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
  132. package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
  133. package/components/date-range-picker/date-range-picker.d.ts +1 -1
  134. package/components/date-range-picker/date-range-picker.js +5 -7
  135. package/components/date-range-picker/date-range-picker.js.map +1 -1
  136. package/components/date-range-picker/predefined-ranges-area.d.ts +1 -0
  137. package/components/date-range-picker/predefined-ranges-area.js +9 -12
  138. package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
  139. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js +1 -1
  140. package/components/date-range-picker/themes/dark/date-range-picker.bootstrap.css.js.map +1 -1
  141. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js +1 -1
  142. package/components/date-range-picker/themes/dark/date-range-picker.fluent.css.js.map +1 -1
  143. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js +1 -1
  144. package/components/date-range-picker/themes/dark/date-range-picker.indigo.css.js.map +1 -1
  145. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js +1 -1
  146. package/components/date-range-picker/themes/dark/date-range-picker.material.css.js.map +1 -1
  147. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
  148. package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
  149. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
  150. package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
  151. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
  152. package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
  153. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
  154. package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
  155. package/components/dialog/dialog.d.ts +1 -0
  156. package/components/dialog/dialog.js +12 -12
  157. package/components/dialog/dialog.js.map +1 -1
  158. package/components/divider/divider.d.ts +1 -0
  159. package/components/divider/divider.js +18 -21
  160. package/components/divider/divider.js.map +1 -1
  161. package/components/dropdown/dropdown-group.js +6 -9
  162. package/components/dropdown/dropdown-group.js.map +1 -1
  163. package/components/dropdown/dropdown-header.d.ts +1 -0
  164. package/components/dropdown/dropdown-header.js +8 -14
  165. package/components/dropdown/dropdown-header.js.map +1 -1
  166. package/components/dropdown/dropdown-item.d.ts +1 -0
  167. package/components/dropdown/dropdown-item.js +8 -14
  168. package/components/dropdown/dropdown-item.js.map +1 -1
  169. package/components/dropdown/dropdown.js +2 -2
  170. package/components/dropdown/dropdown.js.map +1 -1
  171. package/components/dropdown/themes/item.js +7 -0
  172. package/components/dropdown/themes/item.js.map +1 -1
  173. package/components/dropdown/themes/shared/item/dropdown-item.bootstrap.css.js +3 -0
  174. package/components/dropdown/themes/shared/item/dropdown-item.bootstrap.css.js.map +1 -0
  175. package/components/expansion-panel/expansion-panel.js +7 -10
  176. package/components/expansion-panel/expansion-panel.js.map +1 -1
  177. package/components/file-input/file-input.d.ts +1 -1
  178. package/components/file-input/file-input.js +18 -21
  179. package/components/file-input/file-input.js.map +1 -1
  180. package/components/file-input/themes/dark/file-input.bootstrap.css.js +3 -0
  181. package/components/file-input/themes/dark/file-input.bootstrap.css.js.map +1 -0
  182. package/components/file-input/themes/dark/file-input.fluent.css.js +3 -0
  183. package/components/file-input/themes/dark/file-input.fluent.css.js.map +1 -0
  184. package/components/file-input/themes/dark/file-input.indigo.css.js +3 -0
  185. package/components/file-input/themes/dark/file-input.indigo.css.js.map +1 -0
  186. package/components/file-input/themes/dark/file-input.material.css.js +3 -0
  187. package/components/file-input/themes/dark/file-input.material.css.js.map +1 -0
  188. package/components/file-input/themes/file-input.base.css.js +1 -1
  189. package/components/file-input/themes/file-input.base.css.js.map +1 -1
  190. package/components/file-input/themes/light/file-input.bootstrap.css.d.ts +1 -0
  191. package/components/file-input/themes/light/file-input.bootstrap.css.js +3 -0
  192. package/components/file-input/themes/light/file-input.bootstrap.css.js.map +1 -0
  193. package/components/file-input/themes/light/file-input.fluent.css.d.ts +1 -0
  194. package/components/file-input/themes/light/file-input.fluent.css.js +3 -0
  195. package/components/file-input/themes/light/file-input.fluent.css.js.map +1 -0
  196. package/components/file-input/themes/light/file-input.indigo.css.d.ts +1 -0
  197. package/components/file-input/themes/light/file-input.indigo.css.js +3 -0
  198. package/components/file-input/themes/light/file-input.indigo.css.js.map +1 -0
  199. package/components/file-input/themes/light/file-input.material.css.d.ts +1 -0
  200. package/components/file-input/themes/light/file-input.material.css.js +3 -0
  201. package/components/file-input/themes/light/file-input.material.css.js.map +1 -0
  202. package/components/file-input/themes/light/file-input.shared.css.d.ts +1 -0
  203. package/components/file-input/themes/light/file-input.shared.css.js +3 -0
  204. package/components/file-input/themes/light/file-input.shared.css.js.map +1 -0
  205. package/components/file-input/themes/shared/file-input.bootstrap.css.js +1 -1
  206. package/components/file-input/themes/shared/file-input.bootstrap.css.js.map +1 -1
  207. package/components/file-input/themes/shared/file-input.indigo.css.js +1 -1
  208. package/components/file-input/themes/shared/file-input.indigo.css.js.map +1 -1
  209. package/components/file-input/themes/shared/file-input.material.css.js +1 -1
  210. package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
  211. package/components/file-input/themes/themes.js +19 -0
  212. package/components/file-input/themes/themes.js.map +1 -1
  213. package/components/icon/icon.d.ts +1 -0
  214. package/components/icon/icon.js +11 -10
  215. package/components/icon/icon.js.map +1 -1
  216. package/components/input/input-base.d.ts +1 -1
  217. package/components/input/input-base.js +5 -6
  218. package/components/input/input-base.js.map +1 -1
  219. package/components/input/themes/shared/input.bootstrap.css.js +1 -1
  220. package/components/input/themes/shared/input.bootstrap.css.js.map +1 -1
  221. package/components/input/themes/shared/input.indigo.css.js +1 -1
  222. package/components/input/themes/shared/input.indigo.css.js.map +1 -1
  223. package/components/input/themes/shared/input.material.css.js +1 -1
  224. package/components/input/themes/shared/input.material.css.js.map +1 -1
  225. package/components/list/list-header.js +5 -14
  226. package/components/list/list-header.js.map +1 -1
  227. package/components/list/list-item.js +6 -9
  228. package/components/list/list-item.js.map +1 -1
  229. package/components/list/list.js +5 -14
  230. package/components/list/list.js.map +1 -1
  231. package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -0
  232. package/components/nav-drawer/nav-drawer-header-item.js +8 -14
  233. package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
  234. package/components/nav-drawer/nav-drawer-item.d.ts +1 -0
  235. package/components/nav-drawer/nav-drawer-item.js +9 -12
  236. package/components/nav-drawer/nav-drawer-item.js.map +1 -1
  237. package/components/nav-drawer/nav-drawer.d.ts +1 -0
  238. package/components/nav-drawer/nav-drawer.js +9 -12
  239. package/components/nav-drawer/nav-drawer.js.map +1 -1
  240. package/components/navbar/navbar.d.ts +1 -0
  241. package/components/navbar/navbar.js +8 -14
  242. package/components/navbar/navbar.js.map +1 -1
  243. package/components/progress/circular-progress.d.ts +1 -0
  244. package/components/progress/circular-progress.js +10 -13
  245. package/components/progress/circular-progress.js.map +1 -1
  246. package/components/progress/linear-progress.d.ts +1 -0
  247. package/components/progress/linear-progress.js +9 -12
  248. package/components/progress/linear-progress.js.map +1 -1
  249. package/components/radio/radio.js +7 -10
  250. package/components/radio/radio.js.map +1 -1
  251. package/components/radio-group/radio-group.js +6 -9
  252. package/components/radio-group/radio-group.js.map +1 -1
  253. package/components/rating/rating.js +6 -9
  254. package/components/rating/rating.js.map +1 -1
  255. package/components/resize-container/resize-container.js +6 -9
  256. package/components/resize-container/resize-container.js.map +1 -1
  257. package/components/select/select-group.js +6 -9
  258. package/components/select/select-group.js.map +1 -1
  259. package/components/select/select-header.d.ts +1 -0
  260. package/components/select/select-header.js +8 -14
  261. package/components/select/select-header.js.map +1 -1
  262. package/components/select/select-item.d.ts +1 -0
  263. package/components/select/select-item.js +9 -9
  264. package/components/select/select-item.js.map +1 -1
  265. package/components/select/select.js +2 -2
  266. package/components/select/select.js.map +1 -1
  267. package/components/select/themes/shared/select.bootstrap.css.js +1 -1
  268. package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
  269. package/components/slider/slider-base.js +2 -2
  270. package/components/slider/slider-base.js.map +1 -1
  271. package/components/snackbar/snackbar.d.ts +4 -5
  272. package/components/snackbar/snackbar.js +14 -17
  273. package/components/snackbar/snackbar.js.map +1 -1
  274. package/components/stepper/step.d.ts +1 -0
  275. package/components/stepper/step.js +9 -12
  276. package/components/stepper/step.js.map +1 -1
  277. package/components/stepper/stepper.d.ts +1 -0
  278. package/components/stepper/stepper.js +18 -12
  279. package/components/stepper/stepper.js.map +1 -1
  280. package/components/tabs/tab.d.ts +1 -0
  281. package/components/tabs/tab.js +10 -13
  282. package/components/tabs/tab.js.map +1 -1
  283. package/components/tabs/tabs.js +6 -9
  284. package/components/tabs/tabs.js.map +1 -1
  285. package/components/textarea/textarea.d.ts +1 -1
  286. package/components/textarea/textarea.js +5 -6
  287. package/components/textarea/textarea.js.map +1 -1
  288. package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
  289. package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
  290. package/components/textarea/themes/shared/textarea.common.css.js +1 -1
  291. package/components/textarea/themes/shared/textarea.common.css.js.map +1 -1
  292. package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
  293. package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
  294. package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
  295. package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
  296. package/components/textarea/themes/shared/textarea.material.css.js +1 -1
  297. package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
  298. package/components/tile-manager/tile-manager.js +2 -2
  299. package/components/tile-manager/tile-manager.js.map +1 -1
  300. package/components/tile-manager/tile.d.ts +1 -0
  301. package/components/tile-manager/tile.js +53 -56
  302. package/components/tile-manager/tile.js.map +1 -1
  303. package/components/toast/toast.d.ts +2 -2
  304. package/components/toast/toast.js +9 -18
  305. package/components/toast/toast.js.map +1 -1
  306. package/components/tooltip/tooltip.d.ts +1 -0
  307. package/components/tooltip/tooltip.js +39 -42
  308. package/components/tooltip/tooltip.js.map +1 -1
  309. package/components/tree/tree-item.js +6 -9
  310. package/components/tree/tree-item.js.map +1 -1
  311. package/components/tree/tree.js +2 -2
  312. package/components/tree/tree.js.map +1 -1
  313. package/components/validation-container/validation-container.d.ts +8 -5
  314. package/components/validation-container/validation-container.js +59 -49
  315. package/components/validation-container/validation-container.js.map +1 -1
  316. package/custom-elements.json +17604 -18460
  317. package/igniteui-webcomponents.css-data.json +1 -1
  318. package/igniteui-webcomponents.html-data.json +1 -1
  319. package/index.d.ts +0 -7
  320. package/index.js +0 -5
  321. package/index.js.map +1 -1
  322. package/package.json +1 -1
  323. package/theming/config.d.ts +3 -3
  324. package/theming/config.js +14 -18
  325. package/theming/config.js.map +1 -1
  326. package/theming/theming-controller.d.ts +17 -13
  327. package/theming/theming-controller.js +28 -22
  328. package/theming/theming-controller.js.map +1 -1
  329. package/theming/theming-event.d.ts +1 -0
  330. package/theming/theming-event.js.map +1 -1
  331. package/theming/types.d.ts +3 -14
  332. package/theming/types.js.map +1 -1
  333. package/theming/utils.js +24 -23
  334. package/theming/utils.js.map +1 -1
  335. package/web-types.json +2 -2
  336. package/components/chat/chat-input.d.ts +0 -41
  337. package/components/chat/chat-input.js +0 -254
  338. package/components/chat/chat-input.js.map +0 -1
  339. package/components/chat/chat-message-list.d.ts +0 -24
  340. package/components/chat/chat-message-list.js +0 -88
  341. package/components/chat/chat-message-list.js.map +0 -1
  342. package/components/chat/chat-message.d.ts +0 -21
  343. package/components/chat/chat-message.js +0 -52
  344. package/components/chat/chat-message.js.map +0 -1
  345. package/components/chat/chat.d.ts +0 -41
  346. package/components/chat/chat.js +0 -98
  347. package/components/chat/chat.js.map +0 -1
  348. package/components/chat/markdown-util.d.ts +0 -2
  349. package/components/chat/markdown-util.js +0 -22
  350. package/components/chat/markdown-util.js.map +0 -1
  351. package/components/chat/message-attachments.d.ts +0 -28
  352. package/components/chat/message-attachments.js +0 -168
  353. package/components/chat/message-attachments.js.map +0 -1
  354. package/components/chat/themes/chat.base.css.js +0 -3
  355. package/components/chat/themes/chat.base.css.js.map +0 -1
  356. package/components/chat/themes/input.base.css.js +0 -3
  357. package/components/chat/themes/input.base.css.js.map +0 -1
  358. package/components/chat/themes/message-attachments.base.css.js +0 -3
  359. package/components/chat/themes/message-attachments.base.css.js.map +0 -1
  360. package/components/chat/themes/message-list.base.css.js +0 -3
  361. package/components/chat/themes/message-list.base.css.js.map +0 -1
  362. package/components/chat/themes/message.base.css.js +0 -3
  363. package/components/chat/themes/message.base.css.js.map +0 -1
  364. package/components/chat/types.d.ts +0 -46
  365. package/components/chat/types.js +0 -8
  366. package/components/chat/types.js.map +0 -1
  367. package/theming/theming-decorator.d.ts +0 -43
  368. package/theming/theming-decorator.js +0 -25
  369. package/theming/theming-decorator.js.map +0 -1
  370. /package/components/{chat/themes/chat.base.css.d.ts → dropdown/themes/shared/item/dropdown-item.bootstrap.css.d.ts} +0 -0
  371. /package/components/{chat/themes/input.base.css.d.ts → file-input/themes/dark/file-input.bootstrap.css.d.ts} +0 -0
  372. /package/components/{chat/themes/message-attachments.base.css.d.ts → file-input/themes/dark/file-input.fluent.css.d.ts} +0 -0
  373. /package/components/{chat/themes/message-list.base.css.d.ts → file-input/themes/dark/file-input.indigo.css.d.ts} +0 -0
  374. /package/components/{chat/themes/message.base.css.d.ts → file-input/themes/dark/file-input.material.css.d.ts} +0 -0
@@ -1,41 +0,0 @@
1
- import { LitElement } from 'lit';
2
- /**
3
- *
4
- * @element igc-chat-input
5
- *
6
- */
7
- export default class IgcChatInputComponent extends LitElement {
8
- /** @private */
9
- static readonly tagName = "igc-chat-input";
10
- static styles: import("lit").CSSResult;
11
- private _chat?;
12
- static register(): void;
13
- private textInputElement;
14
- protected acceptedFilesChange(): void;
15
- private inputValue;
16
- private attachments;
17
- private dragClass;
18
- private _acceptedTypesCache;
19
- constructor();
20
- protected firstUpdated(): void;
21
- private handleInput;
22
- private handleKeyDown;
23
- private setupDragAndDrop;
24
- private handleDragEnter;
25
- private handleDragOver;
26
- private handleDragLeave;
27
- private handleDrop;
28
- private adjustTextareaHeight;
29
- private sendMessage;
30
- private handleFileUpload;
31
- private attachFiles;
32
- private updateAcceptedTypesCache;
33
- private isFileTypeAccepted;
34
- private removeAttachment;
35
- protected render(): import("lit-html").TemplateResult<1>;
36
- }
37
- declare global {
38
- interface HTMLElementTagNameMap {
39
- 'igc-chat-input': IgcChatInputComponent;
40
- }
41
- }
@@ -1,254 +0,0 @@
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 { LitElement, html } from 'lit';
9
- import { query, state } from 'lit/decorators.js';
10
- import IgcIconButtonComponent from '../button/icon-button.js';
11
- import IgcChipComponent from '../chip/chip.js';
12
- import { chatContext } from '../common/context.js';
13
- import { watch } from '../common/decorators/watch.js';
14
- import { registerComponent } from '../common/definitions/register.js';
15
- import IgcFileInputComponent from '../file-input/file-input.js';
16
- import IgcIconComponent from '../icon/icon.js';
17
- import { registerIconFromText } from '../icon/icon.registry.js';
18
- import IgcTextareaComponent from '../textarea/textarea.js';
19
- import { styles } from './themes/input.base.css.js';
20
- import { attachmentIcon, sendButtonIcon, } from './types.js';
21
- class IgcChatInputComponent extends LitElement {
22
- static register() {
23
- registerComponent(IgcChatInputComponent, IgcTextareaComponent, IgcIconButtonComponent, IgcChipComponent, IgcFileInputComponent, IgcIconComponent);
24
- }
25
- acceptedFilesChange() {
26
- this.updateAcceptedTypesCache();
27
- }
28
- constructor() {
29
- super();
30
- this.inputValue = '';
31
- this.attachments = [];
32
- this.dragClass = '';
33
- this._acceptedTypesCache = null;
34
- registerIconFromText('attachment', attachmentIcon, 'material');
35
- registerIconFromText('send-message', sendButtonIcon, 'material');
36
- }
37
- firstUpdated() {
38
- this.setupDragAndDrop();
39
- this.updateAcceptedTypesCache();
40
- }
41
- handleInput(e) {
42
- const target = e.target;
43
- this.inputValue = target.value;
44
- this.adjustTextareaHeight();
45
- }
46
- handleKeyDown(e) {
47
- if (e.key === 'Enter' && !e.shiftKey) {
48
- e.preventDefault();
49
- this.sendMessage();
50
- }
51
- }
52
- setupDragAndDrop() {
53
- const container = this.shadowRoot?.querySelector('.input-container');
54
- if (container) {
55
- container.addEventListener('dragenter', this.handleDragEnter.bind(this));
56
- container.addEventListener('dragover', this.handleDragOver.bind(this));
57
- container.addEventListener('dragleave', this.handleDragLeave.bind(this));
58
- container.addEventListener('drop', this.handleDrop.bind(this));
59
- }
60
- }
61
- handleDragEnter(e) {
62
- e.preventDefault();
63
- e.stopPropagation();
64
- const files = Array.from(e.dataTransfer?.items || []).filter((item) => item.kind === 'file');
65
- const hasValidFiles = files.some((item) => this.isFileTypeAccepted(item.getAsFile(), item.type));
66
- this.dragClass = hasValidFiles ? 'dragging' : '';
67
- }
68
- handleDragOver(e) {
69
- e.preventDefault();
70
- e.stopPropagation();
71
- }
72
- handleDragLeave(e) {
73
- e.preventDefault();
74
- e.stopPropagation();
75
- const rect = e.currentTarget.getBoundingClientRect();
76
- const x = e.clientX;
77
- const y = e.clientY;
78
- if (x <= rect.left ||
79
- x >= rect.right ||
80
- y <= rect.top ||
81
- y >= rect.bottom) {
82
- this.dragClass = '';
83
- }
84
- }
85
- handleDrop(e) {
86
- e.preventDefault();
87
- e.stopPropagation();
88
- this.dragClass = '';
89
- const files = Array.from(e.dataTransfer?.files || []);
90
- if (files.length === 0)
91
- return;
92
- const validFiles = files.filter((file) => this.isFileTypeAccepted(file));
93
- this.attachFiles(validFiles);
94
- }
95
- adjustTextareaHeight() {
96
- const textarea = this.textInputElement;
97
- if (!textarea)
98
- return;
99
- textarea.style.height = 'auto';
100
- const newHeight = Math.min(textarea.scrollHeight, 120);
101
- textarea.style.height = `${newHeight}px`;
102
- }
103
- sendMessage() {
104
- if (!this.inputValue.trim() && this.attachments.length === 0)
105
- return;
106
- const messageEvent = new CustomEvent('message-created', {
107
- detail: { text: this.inputValue, attachments: this.attachments },
108
- });
109
- this.dispatchEvent(messageEvent);
110
- this.inputValue = '';
111
- this.attachments = [];
112
- if (this.textInputElement) {
113
- this.textInputElement.style.height = 'auto';
114
- }
115
- setTimeout(() => {
116
- this.textInputElement?.focus();
117
- }, 0);
118
- }
119
- handleFileUpload(e) {
120
- const input = e.target.input;
121
- if (!input.files || input.files.length === 0)
122
- return;
123
- const files = Array.from(input.files);
124
- this.attachFiles(files);
125
- }
126
- attachFiles(files) {
127
- const newAttachments = [];
128
- let count = this.attachments.length;
129
- files.forEach((file) => {
130
- const isImage = file.type.startsWith('image/');
131
- newAttachments.push({
132
- id: Date.now().toString() + count++,
133
- url: URL.createObjectURL(file),
134
- name: file.name,
135
- file: file,
136
- thumbnail: isImage ? URL.createObjectURL(file) : undefined,
137
- });
138
- });
139
- this.attachments = [...this.attachments, ...newAttachments];
140
- }
141
- updateAcceptedTypesCache() {
142
- if (!this._chat?.options?.acceptedFiles) {
143
- this._acceptedTypesCache = null;
144
- return;
145
- }
146
- const types = this._chat?.options?.acceptedFiles
147
- .split(',')
148
- .map((type) => type.trim().toLowerCase());
149
- this._acceptedTypesCache = {
150
- extensions: new Set(types.filter((t) => t.startsWith('.'))),
151
- mimeTypes: new Set(types.filter((t) => !t.startsWith('.') && !t.endsWith('/*'))),
152
- wildcardTypes: new Set(types.filter((t) => t.endsWith('/*')).map((t) => t.slice(0, -2))),
153
- };
154
- }
155
- isFileTypeAccepted(file, type = '') {
156
- if (!this._acceptedTypesCache)
157
- return true;
158
- if (file === null && type === '')
159
- return false;
160
- const fileType = file != null ? file.type.toLowerCase() : type.toLowerCase();
161
- const fileExtension = file != null
162
- ? `.${file.name.split('.').pop()?.toLowerCase()}`
163
- : `.${type.split('/').pop()?.toLowerCase()}`;
164
- if (this._acceptedTypesCache.extensions.has(fileExtension)) {
165
- return true;
166
- }
167
- if (this._acceptedTypesCache.mimeTypes.has(fileType)) {
168
- return true;
169
- }
170
- const [fileBaseType] = fileType.split('/');
171
- return this._acceptedTypesCache.wildcardTypes.has(fileBaseType);
172
- }
173
- removeAttachment(index) {
174
- this.attachments = this.attachments.filter((_, i) => i !== index);
175
- }
176
- render() {
177
- return html `
178
- <div class="input-container ${this.dragClass}">
179
- ${this._chat?.options?.disableAttachments
180
- ? ''
181
- : html `
182
- <igc-file-input
183
- multiple
184
- .accept=${this._chat?.options?.acceptedFiles}
185
- @igcChange=${this.handleFileUpload}
186
- >
187
- <igc-icon
188
- slot="file-selector-text"
189
- name="attachment"
190
- collection="material"
191
- ></igc-icon>
192
- </igc-file-input>
193
- `}
194
-
195
- <div class="input-wrapper">
196
- <igc-textarea
197
- class="text-input"
198
- placeholder="Type a message..."
199
- rows="1"
200
- .value=${this.inputValue}
201
- @input=${this.handleInput}
202
- @keydown=${this.handleKeyDown}
203
- ></igc-textarea>
204
- </div>
205
-
206
- <div class="buttons-container">
207
- <igc-icon-button
208
- name="send-message"
209
- collection="material"
210
- variant="contained"
211
- class="small"
212
- ?disabled=${!this.inputValue.trim() &&
213
- this.attachments.length === 0}
214
- @click=${this.sendMessage}
215
- ></igc-icon-button>
216
- </div>
217
- </div>
218
- <div>
219
- ${this.attachments?.map((attachment, index) => html `
220
- <div class="attachment-wrapper">
221
- <igc-chip
222
- removable
223
- @igcRemove=${() => this.removeAttachment(index)}
224
- >
225
- <span class="attachment-name">${attachment.name}</span>
226
- </igc-chip>
227
- </div>
228
- `)}
229
- </div>
230
- `;
231
- }
232
- }
233
- IgcChatInputComponent.tagName = 'igc-chat-input';
234
- IgcChatInputComponent.styles = styles;
235
- export default IgcChatInputComponent;
236
- __decorate([
237
- consume({ context: chatContext, subscribe: true })
238
- ], IgcChatInputComponent.prototype, "_chat", void 0);
239
- __decorate([
240
- query('textarea')
241
- ], IgcChatInputComponent.prototype, "textInputElement", void 0);
242
- __decorate([
243
- watch('acceptedFiles', { waitUntilFirstUpdate: true })
244
- ], IgcChatInputComponent.prototype, "acceptedFilesChange", null);
245
- __decorate([
246
- state()
247
- ], IgcChatInputComponent.prototype, "inputValue", void 0);
248
- __decorate([
249
- state()
250
- ], IgcChatInputComponent.prototype, "attachments", void 0);
251
- __decorate([
252
- state()
253
- ], IgcChatInputComponent.prototype, "dragClass", void 0);
254
- //# sourceMappingURL=chat-input.js.map
@@ -1 +0,0 @@
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 { LitElement, html } from 'lit';\nimport { query, state } from 'lit/decorators.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport IgcChipComponent from '../chip/chip.js';\nimport { chatContext } from '../common/context.js';\nimport { watch } from '../common/decorators/watch.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport IgcFileInputComponent from '../file-input/file-input.js';\nimport IgcIconComponent from '../icon/icon.js';\nimport { registerIconFromText } from '../icon/icon.registry.js';\nimport IgcTextareaComponent from '../textarea/textarea.js';\nimport type IgcChatComponent from './chat.js';\nimport { styles } from './themes/input.base.css.js';\nimport {\n type IgcMessageAttachment,\n attachmentIcon,\n sendButtonIcon,\n} from './types.js';\n\n/**\n *\n * @element igc-chat-input\n *\n */\nexport default class IgcChatInputComponent extends LitElement {\n /** @private */\n public static readonly tagName = 'igc-chat-input';\n\n public static override styles = styles;\n\n @consume({ context: chatContext, subscribe: true })\n private _chat?: IgcChatComponent;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcChatInputComponent,\n IgcTextareaComponent,\n IgcIconButtonComponent,\n IgcChipComponent,\n IgcFileInputComponent,\n IgcIconComponent\n );\n }\n\n @query('textarea')\n private textInputElement!: HTMLTextAreaElement;\n\n @watch('acceptedFiles', { waitUntilFirstUpdate: true })\n protected acceptedFilesChange(): void {\n this.updateAcceptedTypesCache();\n }\n\n @state()\n private inputValue = '';\n\n @state()\n private attachments: IgcMessageAttachment[] = [];\n\n @state()\n private dragClass = '';\n\n // Cache for accepted file types\n private _acceptedTypesCache: {\n extensions: Set<string>;\n mimeTypes: Set<string>;\n wildcardTypes: Set<string>;\n } | null = null;\n\n constructor() {\n super();\n registerIconFromText('attachment', attachmentIcon, 'material');\n registerIconFromText('send-message', sendButtonIcon, 'material');\n }\n\n protected override firstUpdated() {\n this.setupDragAndDrop();\n this.updateAcceptedTypesCache();\n }\n\n private handleInput(e: Event) {\n const target = e.target as HTMLTextAreaElement;\n this.inputValue = target.value;\n this.adjustTextareaHeight();\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n this.sendMessage();\n }\n }\n\n private setupDragAndDrop() {\n const container = this.shadowRoot?.querySelector(\n '.input-container'\n ) as HTMLElement;\n if (container) {\n container.addEventListener('dragenter', this.handleDragEnter.bind(this));\n container.addEventListener('dragover', this.handleDragOver.bind(this));\n container.addEventListener('dragleave', this.handleDragLeave.bind(this));\n container.addEventListener('drop', this.handleDrop.bind(this));\n }\n }\n\n private handleDragEnter(e: DragEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n const files = Array.from(e.dataTransfer?.items || []).filter(\n (item) => item.kind === 'file'\n );\n const hasValidFiles = files.some((item) =>\n this.isFileTypeAccepted(item.getAsFile() as File, item.type)\n );\n\n this.dragClass = hasValidFiles ? 'dragging' : '';\n }\n\n private handleDragOver(e: DragEvent) {\n e.preventDefault();\n e.stopPropagation();\n }\n\n private handleDragLeave(e: DragEvent) {\n e.preventDefault();\n e.stopPropagation();\n\n // Check if we're actually leaving the container\n const rect = (e.currentTarget as HTMLElement).getBoundingClientRect();\n const x = e.clientX;\n const y = e.clientY;\n\n if (\n x <= rect.left ||\n x >= rect.right ||\n y <= rect.top ||\n y >= rect.bottom\n ) {\n this.dragClass = '';\n }\n }\n\n private handleDrop(e: DragEvent) {\n e.preventDefault();\n e.stopPropagation();\n this.dragClass = '';\n\n const files = Array.from(e.dataTransfer?.files || []);\n if (files.length === 0) return;\n\n const validFiles = files.filter((file) => this.isFileTypeAccepted(file));\n\n this.attachFiles(validFiles);\n }\n\n private adjustTextareaHeight() {\n const textarea = this.textInputElement;\n if (!textarea) return;\n\n textarea.style.height = 'auto';\n const newHeight = Math.min(textarea.scrollHeight, 120);\n textarea.style.height = `${newHeight}px`;\n }\n\n private sendMessage() {\n if (!this.inputValue.trim() && this.attachments.length === 0) return;\n\n const messageEvent = new CustomEvent('message-created', {\n detail: { text: this.inputValue, attachments: this.attachments },\n });\n\n this.dispatchEvent(messageEvent);\n this.inputValue = '';\n this.attachments = [];\n\n if (this.textInputElement) {\n this.textInputElement.style.height = 'auto';\n }\n\n setTimeout(() => {\n this.textInputElement?.focus();\n }, 0);\n }\n\n private handleFileUpload(e: Event) {\n const input = (e.target as any).input as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const files = Array.from(input.files);\n this.attachFiles(files);\n }\n\n private attachFiles(files: File[]) {\n const newAttachments: IgcMessageAttachment[] = [];\n let count = this.attachments.length;\n files.forEach((file) => {\n const isImage = file.type.startsWith('image/');\n newAttachments.push({\n id: Date.now().toString() + count++,\n // type: isImage ? 'image' : 'file',\n url: URL.createObjectURL(file),\n name: file.name,\n file: file,\n thumbnail: isImage ? URL.createObjectURL(file) : undefined,\n });\n });\n this.attachments = [...this.attachments, ...newAttachments];\n }\n\n private updateAcceptedTypesCache() {\n if (!this._chat?.options?.acceptedFiles) {\n this._acceptedTypesCache = null;\n return;\n }\n\n const types = this._chat?.options?.acceptedFiles\n .split(',')\n .map((type) => type.trim().toLowerCase());\n this._acceptedTypesCache = {\n extensions: new Set(types.filter((t) => t.startsWith('.'))),\n mimeTypes: new Set(\n types.filter((t) => !t.startsWith('.') && !t.endsWith('/*'))\n ),\n wildcardTypes: new Set(\n types.filter((t) => t.endsWith('/*')).map((t) => t.slice(0, -2))\n ),\n };\n }\n\n private isFileTypeAccepted(file: File, type = ''): boolean {\n if (!this._acceptedTypesCache) return true;\n\n if (file === null && type === '') return false;\n\n const fileType =\n file != null ? file.type.toLowerCase() : type.toLowerCase();\n const fileExtension =\n file != null\n ? `.${file.name.split('.').pop()?.toLowerCase()}`\n : `.${type.split('/').pop()?.toLowerCase()}`;\n\n // Check file extension\n if (this._acceptedTypesCache.extensions.has(fileExtension)) {\n return true;\n }\n\n // Check exact MIME type\n if (this._acceptedTypesCache.mimeTypes.has(fileType)) {\n return true;\n }\n\n // Check wildcard MIME types\n const [fileBaseType] = fileType.split('/');\n return this._acceptedTypesCache.wildcardTypes.has(fileBaseType);\n }\n\n private removeAttachment(index: number) {\n this.attachments = this.attachments.filter((_, i) => i !== index);\n }\n\n protected override render() {\n return html`\n <div class=\"input-container ${this.dragClass}\">\n ${this._chat?.options?.disableAttachments\n ? ''\n : html`\n <igc-file-input\n multiple\n .accept=${this._chat?.options?.acceptedFiles}\n @igcChange=${this.handleFileUpload}\n >\n <igc-icon\n slot=\"file-selector-text\"\n name=\"attachment\"\n collection=\"material\"\n ></igc-icon>\n </igc-file-input>\n `}\n\n <div class=\"input-wrapper\">\n <igc-textarea\n class=\"text-input\"\n placeholder=\"Type a message...\"\n rows=\"1\"\n .value=${this.inputValue}\n @input=${this.handleInput}\n @keydown=${this.handleKeyDown}\n ></igc-textarea>\n </div>\n\n <div class=\"buttons-container\">\n <igc-icon-button\n name=\"send-message\"\n collection=\"material\"\n variant=\"contained\"\n class=\"small\"\n ?disabled=${!this.inputValue.trim() &&\n this.attachments.length === 0}\n @click=${this.sendMessage}\n ></igc-icon-button>\n </div>\n </div>\n <div>\n ${this.attachments?.map(\n (attachment, index) => html`\n <div class=\"attachment-wrapper\">\n <igc-chip\n removable\n @igcRemove=${() => this.removeAttachment(index)}\n >\n <span class=\"attachment-name\">${attachment.name}</span>\n </igc-chip>\n </div>\n `\n )}\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-input': IgcChatInputComponent;\n }\n}\n"]}
@@ -1,24 +0,0 @@
1
- import { LitElement } from 'lit';
2
- /**
3
- *
4
- * @element igc-chat-message-list
5
- *
6
- */
7
- export default class IgcChatMessageListComponent extends LitElement {
8
- /** @private */
9
- static readonly tagName = "igc-chat-message-list";
10
- static styles: import("lit").CSSResult;
11
- private _chat?;
12
- static register(): void;
13
- private formatDate;
14
- private groupMessagesByDate;
15
- private scrollToBottom;
16
- protected updated(): void;
17
- protected firstUpdated(): void;
18
- protected render(): import("lit-html").TemplateResult<1>;
19
- }
20
- declare global {
21
- interface HTMLElementTagNameMap {
22
- 'igc-chat-message-list': IgcChatMessageListComponent;
23
- }
24
- }
@@ -1,88 +0,0 @@
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 { LitElement, html } from 'lit';
9
- import { repeat } from 'lit/directives/repeat.js';
10
- import { chatContext } from '../common/context.js';
11
- import { registerComponent } from '../common/definitions/register.js';
12
- import IgcChatMessageComponent from './chat-message.js';
13
- import { styles } from './themes/message-list.base.css.js';
14
- class IgcChatMessageListComponent extends LitElement {
15
- static register() {
16
- registerComponent(IgcChatMessageListComponent, IgcChatMessageComponent);
17
- }
18
- formatDate(date) {
19
- const today = new Date();
20
- const yesterday = new Date(today);
21
- yesterday.setDate(yesterday.getDate() - 1);
22
- if (date.toDateString() === today.toDateString()) {
23
- return 'Today';
24
- }
25
- if (date.toDateString() === yesterday.toDateString()) {
26
- return 'Yesterday';
27
- }
28
- return date.toLocaleDateString('en-US', {
29
- weekday: 'long',
30
- month: 'short',
31
- day: 'numeric',
32
- });
33
- }
34
- groupMessagesByDate(messages) {
35
- const grouped = {};
36
- messages.forEach((message) => {
37
- const dateStr = this.formatDate(message.timestamp);
38
- if (!grouped[dateStr]) {
39
- grouped[dateStr] = [];
40
- }
41
- grouped[dateStr].push(message);
42
- });
43
- return Object.keys(grouped).map((date) => ({
44
- date,
45
- messages: grouped[date],
46
- }));
47
- }
48
- scrollToBottom() {
49
- requestAnimationFrame(() => {
50
- const container = this.shadowRoot?.host;
51
- if (container) {
52
- container.scrollTop = container.scrollHeight;
53
- }
54
- });
55
- }
56
- updated() {
57
- if (!this._chat?.options?.disableAutoScroll) {
58
- this.scrollToBottom();
59
- }
60
- }
61
- firstUpdated() {
62
- if (!this._chat?.options?.disableAutoScroll) {
63
- this.scrollToBottom();
64
- }
65
- }
66
- render() {
67
- const groupedMessages = this.groupMessagesByDate(this._chat?.messages ?? []);
68
- return html `
69
- <div class='message-container'></div>
70
- <div class="message-list">
71
- ${repeat(groupedMessages, (group) => group.date, (group) => html `
72
- ${repeat(group.messages, (message) => message.id, (message) => html `
73
- <igc-chat-message .message=${message}></igc-chat-message>
74
- `)}
75
- `)}
76
- ${''}
77
- </div>
78
- </div>
79
- `;
80
- }
81
- }
82
- IgcChatMessageListComponent.tagName = 'igc-chat-message-list';
83
- IgcChatMessageListComponent.styles = styles;
84
- export default IgcChatMessageListComponent;
85
- __decorate([
86
- consume({ context: chatContext, subscribe: true })
87
- ], IgcChatMessageListComponent.prototype, "_chat", void 0);
88
- //# sourceMappingURL=chat-message-list.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-message-list.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message-list.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport { LitElement, html } from 'lit';\nimport { repeat } from 'lit/directives/repeat.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport IgcChatMessageComponent from './chat-message.js';\nimport type IgcChatComponent from './chat.js';\nimport { styles } from './themes/message-list.base.css.js';\nimport type { IgcMessage } from './types.js';\n\n/**\n *\n * @element igc-chat-message-list\n *\n */\nexport default class IgcChatMessageListComponent extends LitElement {\n /** @private */\n public static readonly tagName = 'igc-chat-message-list';\n\n public static override styles = styles;\n\n @consume({ context: chatContext, subscribe: true })\n private _chat?: IgcChatComponent;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(IgcChatMessageListComponent, IgcChatMessageComponent);\n }\n\n private formatDate(date: Date): string {\n const today = new Date();\n const yesterday = new Date(today);\n yesterday.setDate(yesterday.getDate() - 1);\n\n if (date.toDateString() === today.toDateString()) {\n return 'Today';\n }\n\n if (date.toDateString() === yesterday.toDateString()) {\n return 'Yesterday';\n }\n\n return date.toLocaleDateString('en-US', {\n weekday: 'long',\n month: 'short',\n day: 'numeric',\n });\n }\n\n private groupMessagesByDate(\n messages: IgcMessage[]\n ): { date: string; messages: IgcMessage[] }[] {\n const grouped: { [key: string]: IgcMessage[] } = {};\n\n messages.forEach((message) => {\n const dateStr = this.formatDate(message.timestamp);\n if (!grouped[dateStr]) {\n grouped[dateStr] = [];\n }\n grouped[dateStr].push(message);\n });\n\n return Object.keys(grouped).map((date) => ({\n date,\n messages: grouped[date],\n }));\n }\n\n private scrollToBottom() {\n requestAnimationFrame(() => {\n const container = this.shadowRoot?.host as HTMLElement;\n if (container) {\n container.scrollTop = container.scrollHeight;\n }\n });\n }\n\n protected override updated() {\n if (!this._chat?.options?.disableAutoScroll) {\n this.scrollToBottom();\n }\n }\n\n protected override firstUpdated() {\n if (!this._chat?.options?.disableAutoScroll) {\n this.scrollToBottom();\n }\n }\n\n protected override render() {\n const groupedMessages = this.groupMessagesByDate(\n this._chat?.messages ?? []\n );\n\n return html`\n <div class='message-container'></div>\n <div class=\"message-list\">\n ${repeat(\n groupedMessages,\n (group) => group.date,\n (group) => html`\n ${repeat(\n group.messages,\n (message) => message.id,\n (message) => html`\n <igc-chat-message .message=${message}></igc-chat-message>\n `\n )}\n `\n )}\n ${\n ''\n // this.isAiResponding\n // ? html`\n // <div class=\"typing-indicator\">\n // <div class=\"typing-dot\"></div>\n // <div class=\"typing-dot\"></div>\n // <div class=\"typing-dot\"></div>\n // </div>\n // `\n // : ''\n }\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message-list': IgcChatMessageListComponent;\n }\n}\n"]}
@@ -1,21 +0,0 @@
1
- import { LitElement } from 'lit';
2
- import type { IgcMessage } from './types.js';
3
- /**
4
- *
5
- * @element igc-chat-message
6
- *
7
- */
8
- export default class IgcChatMessageComponent extends LitElement {
9
- /** @private */
10
- static readonly tagName = "igc-chat-message";
11
- static styles: import("lit").CSSResult;
12
- private _chat?;
13
- static register(): void;
14
- message: IgcMessage | undefined;
15
- protected render(): import("lit-html").TemplateResult<1>;
16
- }
17
- declare global {
18
- interface HTMLElementTagNameMap {
19
- 'igc-chat-message': IgcChatMessageComponent;
20
- }
21
- }
@@ -1,52 +0,0 @@
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 { LitElement, html } from 'lit';
9
- import { property } from 'lit/decorators.js';
10
- import IgcAvatarComponent from '../avatar/avatar.js';
11
- import { chatContext } from '../common/context.js';
12
- import { registerComponent } from '../common/definitions/register.js';
13
- import { renderMarkdown } from './markdown-util.js';
14
- import IgcMessageAttachmentsComponent from './message-attachments.js';
15
- import { styles } from './themes/message.base.css.js';
16
- class IgcChatMessageComponent extends LitElement {
17
- static register() {
18
- registerComponent(IgcChatMessageComponent, IgcMessageAttachmentsComponent, IgcAvatarComponent);
19
- }
20
- render() {
21
- const containerClass = `message-container ${this.message?.sender === 'user' ? 'sent' : ''}`;
22
- return html `
23
- <div class=${containerClass}>
24
- <div class="bubble">
25
- ${this.message?.text.trim()
26
- ? html ` <div>${renderMarkdown(this.message?.text)}</div>`
27
- : ''}
28
- ${this.message?.attachments && this.message?.attachments.length > 0
29
- ? html `<igc-message-attachments
30
- .attachments=${this.message?.attachments}
31
- >
32
- </igc-message-attachments>`
33
- : ''}
34
- ${this._chat?.options?.templates?.messageActionsTemplate &&
35
- this.message
36
- ? this._chat.options.templates.messageActionsTemplate(this.message)
37
- : ''}
38
- </div>
39
- </div>
40
- `;
41
- }
42
- }
43
- IgcChatMessageComponent.tagName = 'igc-chat-message';
44
- IgcChatMessageComponent.styles = styles;
45
- export default IgcChatMessageComponent;
46
- __decorate([
47
- consume({ context: chatContext, subscribe: true })
48
- ], IgcChatMessageComponent.prototype, "_chat", void 0);
49
- __decorate([
50
- property({ reflect: true, attribute: false })
51
- ], IgcChatMessageComponent.prototype, "message", void 0);
52
- //# sourceMappingURL=chat-message.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AAEtE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,8BAA8B,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AAQtD,MAAqB,uBAAwB,SAAQ,UAAU;IAUtD,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,uBAAuB,EACvB,8BAA8B,EAC9B,kBAAkB,CACnB,CAAC;IACJ,CAAC;IAKkB,MAAM;QACvB,MAAM,cAAc,GAAG,qBAAqB,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAE5F,OAAO,IAAI,CAAA;mBACI,cAAc;;YAErB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE;YACzB,CAAC,CAAC,IAAI,CAAA,SAAS,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ;YACzD,CAAC,CAAC,EAAE;YACJ,IAAI,CAAC,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,GAAG,CAAC;YACjE,CAAC,CAAC,IAAI,CAAA;+BACa,IAAI,CAAC,OAAO,EAAE,WAAW;;yCAEf;YAC7B,CAAC,CAAC,EAAE;YACJ,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,sBAAsB;YACxD,IAAI,CAAC,OAAO;YACV,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC;YACnE,CAAC,CAAC,EAAE;;;KAGX,CAAC;IACJ,CAAC;;AAzCsB,+BAAO,GAAG,kBAAkB,CAAC;AAE7B,8BAAM,GAAG,MAAM,CAAC;eAJpB,uBAAuB;AAOlC;IADP,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;sDAClB;AAY1B;IADN,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;wDACP","sourcesContent":["import { consume } from '@lit/context';\nimport { LitElement, html } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport IgcAvatarComponent from '../avatar/avatar.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport type IgcChatComponent from './chat.js';\nimport { renderMarkdown } from './markdown-util.js';\nimport IgcMessageAttachmentsComponent from './message-attachments.js';\nimport { styles } from './themes/message.base.css.js';\nimport type { IgcMessage } from './types.js';\n\n/**\n *\n * @element igc-chat-message\n *\n */\nexport default class IgcChatMessageComponent extends LitElement {\n /** @private */\n public static readonly tagName = 'igc-chat-message';\n\n public static override styles = styles;\n\n @consume({ context: chatContext, subscribe: true })\n private _chat?: IgcChatComponent;\n\n /* blazorSuppress */\n public static register() {\n registerComponent(\n IgcChatMessageComponent,\n IgcMessageAttachmentsComponent,\n IgcAvatarComponent\n );\n }\n\n @property({ reflect: true, attribute: false })\n public message: IgcMessage | undefined;\n\n protected override render() {\n const containerClass = `message-container ${this.message?.sender === 'user' ? 'sent' : ''}`;\n\n return html`\n <div class=${containerClass}>\n <div class=\"bubble\">\n ${this.message?.text.trim()\n ? html` <div>${renderMarkdown(this.message?.text)}</div>`\n : ''}\n ${this.message?.attachments && this.message?.attachments.length > 0\n ? html`<igc-message-attachments\n .attachments=${this.message?.attachments}\n >\n </igc-message-attachments>`\n : ''}\n ${this._chat?.options?.templates?.messageActionsTemplate &&\n this.message\n ? this._chat.options.templates.messageActionsTemplate(this.message)\n : ''}\n </div>\n </div>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message': IgcChatMessageComponent;\n }\n}\n"]}
@@ -1,41 +0,0 @@
1
- import { LitElement } from 'lit';
2
- import type { Constructor } from '../common/mixins/constructor.js';
3
- import type { IgcChatOptions, IgcMessage, IgcMessageAttachment } from './types.js';
4
- export interface IgcChatComponentEventMap {
5
- igcMessageCreated: CustomEvent<IgcMessage>;
6
- igcAttachmentClick: CustomEvent<IgcMessageAttachment>;
7
- igcAttachmentChange: CustomEvent<IgcMessageAttachment>;
8
- igcTypingChange: CustomEvent<boolean>;
9
- igcInputFocus: CustomEvent<void>;
10
- igcInputBlur: CustomEvent<void>;
11
- igcInputChange: CustomEvent<string>;
12
- igcMessageCopied: CustomEvent<IgcMessage>;
13
- }
14
- declare const IgcChatComponent_base: Constructor<import("../common/mixins/event-emitter.js").EventEmitterInterface<IgcChatComponentEventMap>> & Constructor<LitElement>;
15
- /**
16
- *
17
- * @element igc-chat
18
- *
19
- */
20
- export default class IgcChatComponent extends IgcChatComponent_base {
21
- /** @private */
22
- static readonly tagName = "igc-chat";
23
- static styles: import("lit").CSSResult;
24
- static register(): void;
25
- private _context;
26
- messages: IgcMessage[];
27
- options?: IgcChatOptions;
28
- protected contextChanged(): void;
29
- connectedCallback(): void;
30
- disconnectedCallback(): void;
31
- private handleSendMessage;
32
- private handleAttachmentClick;
33
- protected firstUpdated(): void;
34
- protected render(): import("lit-html").TemplateResult<1>;
35
- }
36
- declare global {
37
- interface HTMLElementTagNameMap {
38
- 'igc-chat': IgcChatComponent;
39
- }
40
- }
41
- export {};