cax-design-system 3.0.0 → 3.0.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 (1046) hide show
  1. package/README.md +1 -1
  2. package/accordion/index.d.ts +286 -3
  3. package/animate/index.d.ts +41 -3
  4. package/animateonscroll/index.d.ts +75 -3
  5. package/api/index.d.ts +1849 -3
  6. package/autocomplete/index.d.ts +817 -3
  7. package/autofocus/index.d.ts +29 -3
  8. package/avatar/index.d.ts +102 -3
  9. package/avatargroup/index.d.ts +30 -3
  10. package/badge/index.d.ts +71 -5
  11. package/baseicon/index.d.ts +18 -5
  12. package/blockui/index.d.ts +77 -3
  13. package/breadcrumb/index.d.ts +105 -3
  14. package/button/index.d.ts +179 -3
  15. package/buttongroup/index.d.ts +14 -5
  16. package/calendar/index.d.ts +957 -3
  17. package/card/index.d.ts +88 -3
  18. package/carousel/index.d.ts +290 -3
  19. package/cascadeselect/index.d.ts +594 -3
  20. package/categorycard/index.d.ts +20 -5
  21. package/chart/index.d.ts +88 -3
  22. package/checkbox/index.d.ts +204 -3
  23. package/chip/index.d.ts +63 -3
  24. package/colorpicker/index.d.ts +265 -3
  25. package/commentbox/index.d.ts +138 -5
  26. package/comments/index.d.ts +91 -5
  27. package/comparecard/index.d.ts +57 -5
  28. package/confirmdialog/index.d.ts +327 -3
  29. package/confirmpopup/index.d.ts +148 -3
  30. package/contextmenu/index.d.ts +261 -3
  31. package/dataview/index.d.ts +457 -3
  32. package/defer/index.d.ts +40 -3
  33. package/dialog/index.d.ts +411 -3
  34. package/divider/index.d.ts +64 -3
  35. package/dock/index.d.ts +136 -3
  36. package/dom/index.d.ts +105 -3
  37. package/dragdrop/index.d.ts +120 -3
  38. package/dropdown/index.d.ts +841 -3
  39. package/dynamicdialog/index.d.ts +490 -3
  40. package/editor/index.d.ts +182 -3
  41. package/fesm2022/cax-design-system-accordion.mjs +10 -10
  42. package/fesm2022/cax-design-system-accordion.mjs.map +1 -1
  43. package/fesm2022/cax-design-system-animate.mjs +7 -7
  44. package/fesm2022/cax-design-system-animate.mjs.map +1 -1
  45. package/fesm2022/cax-design-system-animateonscroll.mjs +7 -7
  46. package/fesm2022/cax-design-system-animateonscroll.mjs.map +1 -1
  47. package/fesm2022/cax-design-system-api.mjs +39 -39
  48. package/fesm2022/cax-design-system-api.mjs.map +1 -1
  49. package/fesm2022/cax-design-system-autocomplete.mjs +17 -17
  50. package/fesm2022/cax-design-system-autocomplete.mjs.map +1 -1
  51. package/fesm2022/cax-design-system-autofocus.mjs +7 -7
  52. package/fesm2022/cax-design-system-autofocus.mjs.map +1 -1
  53. package/fesm2022/cax-design-system-avatar.mjs +7 -7
  54. package/fesm2022/cax-design-system-avatar.mjs.map +1 -1
  55. package/fesm2022/cax-design-system-avatargroup.mjs +7 -7
  56. package/fesm2022/cax-design-system-avatargroup.mjs.map +1 -1
  57. package/fesm2022/cax-design-system-badge.mjs +10 -10
  58. package/fesm2022/cax-design-system-badge.mjs.map +1 -1
  59. package/fesm2022/cax-design-system-baseicon.mjs +3 -3
  60. package/fesm2022/cax-design-system-baseicon.mjs.map +1 -1
  61. package/fesm2022/cax-design-system-blockui.mjs +7 -7
  62. package/fesm2022/cax-design-system-blockui.mjs.map +1 -1
  63. package/fesm2022/cax-design-system-breadcrumb.mjs +7 -7
  64. package/fesm2022/cax-design-system-breadcrumb.mjs.map +1 -1
  65. package/fesm2022/cax-design-system-button.mjs +10 -10
  66. package/fesm2022/cax-design-system-button.mjs.map +1 -1
  67. package/fesm2022/cax-design-system-buttongroup.mjs +7 -7
  68. package/fesm2022/cax-design-system-calendar.mjs +7 -7
  69. package/fesm2022/cax-design-system-calendar.mjs.map +1 -1
  70. package/fesm2022/cax-design-system-card.mjs +8 -8
  71. package/fesm2022/cax-design-system-card.mjs.map +1 -1
  72. package/fesm2022/cax-design-system-carousel.mjs +7 -7
  73. package/fesm2022/cax-design-system-carousel.mjs.map +1 -1
  74. package/fesm2022/cax-design-system-cascadeselect.mjs +16 -16
  75. package/fesm2022/cax-design-system-cascadeselect.mjs.map +1 -1
  76. package/fesm2022/cax-design-system-categorycard.mjs +7 -7
  77. package/fesm2022/cax-design-system-categorycard.mjs.map +1 -1
  78. package/fesm2022/cax-design-system-chart.mjs +7 -7
  79. package/fesm2022/cax-design-system-chart.mjs.map +1 -1
  80. package/fesm2022/cax-design-system-checkbox.mjs +7 -7
  81. package/fesm2022/cax-design-system-checkbox.mjs.map +1 -1
  82. package/fesm2022/cax-design-system-chip.mjs +7 -7
  83. package/fesm2022/cax-design-system-chip.mjs.map +1 -1
  84. package/fesm2022/cax-design-system-colorpicker.mjs +7 -7
  85. package/fesm2022/cax-design-system-colorpicker.mjs.map +1 -1
  86. package/fesm2022/cax-design-system-commentbox.mjs +8 -8
  87. package/fesm2022/cax-design-system-commentbox.mjs.map +1 -1
  88. package/fesm2022/cax-design-system-comments.mjs +11 -11
  89. package/fesm2022/cax-design-system-comments.mjs.map +1 -1
  90. package/fesm2022/cax-design-system-comparecard.mjs +8 -8
  91. package/fesm2022/cax-design-system-comparecard.mjs.map +1 -1
  92. package/fesm2022/cax-design-system-confirmdialog.mjs +7 -7
  93. package/fesm2022/cax-design-system-confirmdialog.mjs.map +1 -1
  94. package/fesm2022/cax-design-system-confirmpopup.mjs +7 -7
  95. package/fesm2022/cax-design-system-confirmpopup.mjs.map +1 -1
  96. package/fesm2022/cax-design-system-contextmenu.mjs +14 -14
  97. package/fesm2022/cax-design-system-contextmenu.mjs.map +1 -1
  98. package/fesm2022/cax-design-system-dataview.mjs +10 -10
  99. package/fesm2022/cax-design-system-dataview.mjs.map +1 -1
  100. package/fesm2022/cax-design-system-defer.mjs +7 -7
  101. package/fesm2022/cax-design-system-defer.mjs.map +1 -1
  102. package/fesm2022/cax-design-system-dialog.mjs +7 -7
  103. package/fesm2022/cax-design-system-dialog.mjs.map +1 -1
  104. package/fesm2022/cax-design-system-divider.mjs +7 -7
  105. package/fesm2022/cax-design-system-divider.mjs.map +1 -1
  106. package/fesm2022/cax-design-system-dock.mjs +7 -7
  107. package/fesm2022/cax-design-system-dock.mjs.map +1 -1
  108. package/fesm2022/cax-design-system-dragdrop.mjs +10 -10
  109. package/fesm2022/cax-design-system-dragdrop.mjs.map +1 -1
  110. package/fesm2022/cax-design-system-dropdown.mjs +20 -20
  111. package/fesm2022/cax-design-system-dropdown.mjs.map +1 -1
  112. package/fesm2022/cax-design-system-dynamicdialog.mjs +14 -14
  113. package/fesm2022/cax-design-system-dynamicdialog.mjs.map +1 -1
  114. package/fesm2022/cax-design-system-editor.mjs +7 -7
  115. package/fesm2022/cax-design-system-editor.mjs.map +1 -1
  116. package/fesm2022/cax-design-system-fieldset.mjs +7 -7
  117. package/fesm2022/cax-design-system-fieldset.mjs.map +1 -1
  118. package/fesm2022/cax-design-system-fileupload.mjs +7 -7
  119. package/fesm2022/cax-design-system-fileupload.mjs.map +1 -1
  120. package/fesm2022/cax-design-system-floatlabel.mjs +7 -7
  121. package/fesm2022/cax-design-system-focustrap.mjs +7 -7
  122. package/fesm2022/cax-design-system-focustrap.mjs.map +1 -1
  123. package/fesm2022/cax-design-system-galleria.mjs +19 -19
  124. package/fesm2022/cax-design-system-galleria.mjs.map +1 -1
  125. package/fesm2022/cax-design-system-iconfield.mjs +7 -7
  126. package/fesm2022/cax-design-system-iconfield.mjs.map +1 -1
  127. package/fesm2022/cax-design-system-icons-angledoubledown.mjs +3 -3
  128. package/fesm2022/cax-design-system-icons-angledoubleleft.mjs +3 -3
  129. package/fesm2022/cax-design-system-icons-angledoubleright.mjs +3 -3
  130. package/fesm2022/cax-design-system-icons-angledoubleup.mjs +3 -3
  131. package/fesm2022/cax-design-system-icons-angledown.mjs +3 -3
  132. package/fesm2022/cax-design-system-icons-angleleft.mjs +3 -3
  133. package/fesm2022/cax-design-system-icons-angleright.mjs +3 -3
  134. package/fesm2022/cax-design-system-icons-angleup.mjs +3 -3
  135. package/fesm2022/cax-design-system-icons-arrowdown.mjs +3 -3
  136. package/fesm2022/cax-design-system-icons-arrowdownleft.mjs +3 -3
  137. package/fesm2022/cax-design-system-icons-arrowdownright.mjs +3 -3
  138. package/fesm2022/cax-design-system-icons-arrowleft.mjs +3 -3
  139. package/fesm2022/cax-design-system-icons-arrowright.mjs +3 -3
  140. package/fesm2022/cax-design-system-icons-arrowup.mjs +3 -3
  141. package/fesm2022/cax-design-system-icons-ban.mjs +3 -3
  142. package/fesm2022/cax-design-system-icons-bars.mjs +3 -3
  143. package/fesm2022/cax-design-system-icons-blank.mjs +3 -3
  144. package/fesm2022/cax-design-system-icons-calendar.mjs +3 -3
  145. package/fesm2022/cax-design-system-icons-caretleft.mjs +3 -3
  146. package/fesm2022/cax-design-system-icons-caretright.mjs +3 -3
  147. package/fesm2022/cax-design-system-icons-check.mjs +3 -3
  148. package/fesm2022/cax-design-system-icons-chevrondown.mjs +3 -3
  149. package/fesm2022/cax-design-system-icons-chevronleft.mjs +3 -3
  150. package/fesm2022/cax-design-system-icons-chevronright.mjs +3 -3
  151. package/fesm2022/cax-design-system-icons-chevronup.mjs +3 -3
  152. package/fesm2022/cax-design-system-icons-exclamationtriangle.mjs +3 -3
  153. package/fesm2022/cax-design-system-icons-eye.mjs +3 -3
  154. package/fesm2022/cax-design-system-icons-eyeslash.mjs +3 -3
  155. package/fesm2022/cax-design-system-icons-filter.mjs +3 -3
  156. package/fesm2022/cax-design-system-icons-filterslash.mjs +3 -3
  157. package/fesm2022/cax-design-system-icons-home.mjs +3 -3
  158. package/fesm2022/cax-design-system-icons-infocircle.mjs +3 -3
  159. package/fesm2022/cax-design-system-icons-minus.mjs +3 -3
  160. package/fesm2022/cax-design-system-icons-pencil.mjs +3 -3
  161. package/fesm2022/cax-design-system-icons-plus.mjs +3 -3
  162. package/fesm2022/cax-design-system-icons-refresh.mjs +3 -3
  163. package/fesm2022/cax-design-system-icons-search.mjs +3 -3
  164. package/fesm2022/cax-design-system-icons-searchminus.mjs +3 -3
  165. package/fesm2022/cax-design-system-icons-searchplus.mjs +3 -3
  166. package/fesm2022/cax-design-system-icons-sortalt.mjs +3 -3
  167. package/fesm2022/cax-design-system-icons-sortamountdown.mjs +3 -3
  168. package/fesm2022/cax-design-system-icons-sortamountupalt.mjs +3 -3
  169. package/fesm2022/cax-design-system-icons-spinner.mjs +3 -3
  170. package/fesm2022/cax-design-system-icons-star.mjs +3 -3
  171. package/fesm2022/cax-design-system-icons-starfill.mjs +3 -3
  172. package/fesm2022/cax-design-system-icons-thlarge.mjs +3 -3
  173. package/fesm2022/cax-design-system-icons-times.mjs +3 -3
  174. package/fesm2022/cax-design-system-icons-timescircle.mjs +3 -3
  175. package/fesm2022/cax-design-system-icons-trash.mjs +3 -3
  176. package/fesm2022/cax-design-system-icons-undo.mjs +3 -3
  177. package/fesm2022/cax-design-system-icons-upload.mjs +3 -3
  178. package/fesm2022/cax-design-system-icons-windowmaximize.mjs +3 -3
  179. package/fesm2022/cax-design-system-icons-windowminimize.mjs +3 -3
  180. package/fesm2022/cax-design-system-image.mjs +7 -7
  181. package/fesm2022/cax-design-system-image.mjs.map +1 -1
  182. package/fesm2022/cax-design-system-inplace.mjs +13 -13
  183. package/fesm2022/cax-design-system-inplace.mjs.map +1 -1
  184. package/fesm2022/cax-design-system-inputchips.mjs +7 -7
  185. package/fesm2022/cax-design-system-inputchips.mjs.map +1 -1
  186. package/fesm2022/cax-design-system-inputgroup.mjs +7 -7
  187. package/fesm2022/cax-design-system-inputgroup.mjs.map +1 -1
  188. package/fesm2022/cax-design-system-inputgroupaddon.mjs +7 -7
  189. package/fesm2022/cax-design-system-inputgroupaddon.mjs.map +1 -1
  190. package/fesm2022/cax-design-system-inputicon.mjs +7 -7
  191. package/fesm2022/cax-design-system-inputicon.mjs.map +1 -1
  192. package/fesm2022/cax-design-system-inputmask.mjs +7 -7
  193. package/fesm2022/cax-design-system-inputmask.mjs.map +1 -1
  194. package/fesm2022/cax-design-system-inputnumber.mjs +7 -7
  195. package/fesm2022/cax-design-system-inputnumber.mjs.map +1 -1
  196. package/fesm2022/cax-design-system-inputotp.mjs +7 -7
  197. package/fesm2022/cax-design-system-inputotp.mjs.map +1 -1
  198. package/fesm2022/cax-design-system-inputswitch.mjs +7 -7
  199. package/fesm2022/cax-design-system-inputswitch.mjs.map +1 -1
  200. package/fesm2022/cax-design-system-inputtext.mjs +10 -10
  201. package/fesm2022/cax-design-system-inputtext.mjs.map +1 -1
  202. package/fesm2022/cax-design-system-inputtextarea.mjs +10 -10
  203. package/fesm2022/cax-design-system-inputtextarea.mjs.map +1 -1
  204. package/fesm2022/cax-design-system-keyfilter.mjs +7 -7
  205. package/fesm2022/cax-design-system-keyfilter.mjs.map +1 -1
  206. package/fesm2022/cax-design-system-knob.mjs +7 -7
  207. package/fesm2022/cax-design-system-knob.mjs.map +1 -1
  208. package/fesm2022/cax-design-system-listbox.mjs +13 -13
  209. package/fesm2022/cax-design-system-listbox.mjs.map +1 -1
  210. package/fesm2022/cax-design-system-logo.mjs +7 -7
  211. package/fesm2022/cax-design-system-logo.mjs.map +1 -1
  212. package/fesm2022/cax-design-system-logocard.mjs +7 -7
  213. package/fesm2022/cax-design-system-logocard.mjs.map +1 -1
  214. package/fesm2022/cax-design-system-megamenu.mjs +12 -12
  215. package/fesm2022/cax-design-system-megamenu.mjs.map +1 -1
  216. package/fesm2022/cax-design-system-menu.mjs +16 -16
  217. package/fesm2022/cax-design-system-menu.mjs.map +1 -1
  218. package/fesm2022/cax-design-system-menubar.mjs +16 -16
  219. package/fesm2022/cax-design-system-menubar.mjs.map +1 -1
  220. package/fesm2022/cax-design-system-message.mjs +7 -7
  221. package/fesm2022/cax-design-system-message.mjs.map +1 -1
  222. package/fesm2022/cax-design-system-messages.mjs +7 -7
  223. package/fesm2022/cax-design-system-messages.mjs.map +1 -1
  224. package/fesm2022/cax-design-system-metergroup.mjs +10 -10
  225. package/fesm2022/cax-design-system-metergroup.mjs.map +1 -1
  226. package/fesm2022/cax-design-system-multiselect.mjs +19 -19
  227. package/fesm2022/cax-design-system-multiselect.mjs.map +1 -1
  228. package/fesm2022/cax-design-system-navigation.mjs +21 -9
  229. package/fesm2022/cax-design-system-navigation.mjs.map +1 -1
  230. package/fesm2022/cax-design-system-orderlist.mjs +8 -8
  231. package/fesm2022/cax-design-system-orderlist.mjs.map +1 -1
  232. package/fesm2022/cax-design-system-organizationchart.mjs +10 -10
  233. package/fesm2022/cax-design-system-organizationchart.mjs.map +1 -1
  234. package/fesm2022/cax-design-system-overlay.mjs +7 -7
  235. package/fesm2022/cax-design-system-overlay.mjs.map +1 -1
  236. package/fesm2022/cax-design-system-overlaypanel.mjs +7 -7
  237. package/fesm2022/cax-design-system-overlaypanel.mjs.map +1 -1
  238. package/fesm2022/cax-design-system-paginator.mjs +7 -7
  239. package/fesm2022/cax-design-system-paginator.mjs.map +1 -1
  240. package/fesm2022/cax-design-system-panel.mjs +7 -7
  241. package/fesm2022/cax-design-system-panel.mjs.map +1 -1
  242. package/fesm2022/cax-design-system-panelmenu.mjs +18 -18
  243. package/fesm2022/cax-design-system-panelmenu.mjs.map +1 -1
  244. package/fesm2022/cax-design-system-password.mjs +13 -13
  245. package/fesm2022/cax-design-system-password.mjs.map +1 -1
  246. package/fesm2022/cax-design-system-picklist.mjs +8 -8
  247. package/fesm2022/cax-design-system-picklist.mjs.map +1 -1
  248. package/fesm2022/cax-design-system-productcard.mjs +7 -7
  249. package/fesm2022/cax-design-system-productcard.mjs.map +1 -1
  250. package/fesm2022/cax-design-system-progressbar.mjs +7 -7
  251. package/fesm2022/cax-design-system-progressbar.mjs.map +1 -1
  252. package/fesm2022/cax-design-system-progressspinner.mjs +7 -7
  253. package/fesm2022/cax-design-system-progressspinner.mjs.map +1 -1
  254. package/fesm2022/cax-design-system-radiobutton.mjs +10 -10
  255. package/fesm2022/cax-design-system-radiobutton.mjs.map +1 -1
  256. package/fesm2022/cax-design-system-rating.mjs +8 -8
  257. package/fesm2022/cax-design-system-rating.mjs.map +1 -1
  258. package/fesm2022/cax-design-system-ripple.mjs +7 -7
  259. package/fesm2022/cax-design-system-scroller.mjs +7 -7
  260. package/fesm2022/cax-design-system-scroller.mjs.map +1 -1
  261. package/fesm2022/cax-design-system-scrollpanel.mjs +7 -7
  262. package/fesm2022/cax-design-system-scrollpanel.mjs.map +1 -1
  263. package/fesm2022/cax-design-system-scrolltop.mjs +7 -7
  264. package/fesm2022/cax-design-system-scrolltop.mjs.map +1 -1
  265. package/fesm2022/cax-design-system-selectbutton.mjs +7 -7
  266. package/fesm2022/cax-design-system-selectbutton.mjs.map +1 -1
  267. package/fesm2022/cax-design-system-sidebar.mjs +8 -8
  268. package/fesm2022/cax-design-system-sidebar.mjs.map +1 -1
  269. package/fesm2022/cax-design-system-skeleton.mjs +7 -7
  270. package/fesm2022/cax-design-system-skeleton.mjs.map +1 -1
  271. package/fesm2022/cax-design-system-slidemenu.mjs +13 -13
  272. package/fesm2022/cax-design-system-slidemenu.mjs.map +1 -1
  273. package/fesm2022/cax-design-system-slider.mjs +88 -8
  274. package/fesm2022/cax-design-system-slider.mjs.map +1 -1
  275. package/fesm2022/cax-design-system-speeddial.mjs +8 -8
  276. package/fesm2022/cax-design-system-speeddial.mjs.map +1 -1
  277. package/fesm2022/cax-design-system-spinner.mjs +7 -7
  278. package/fesm2022/cax-design-system-spinner.mjs.map +1 -1
  279. package/fesm2022/cax-design-system-splitbutton.mjs +8 -8
  280. package/fesm2022/cax-design-system-splitbutton.mjs.map +1 -1
  281. package/fesm2022/cax-design-system-splitter.mjs +7 -7
  282. package/fesm2022/cax-design-system-splitter.mjs.map +1 -1
  283. package/fesm2022/cax-design-system-stepper.mjs +19 -19
  284. package/fesm2022/cax-design-system-stepper.mjs.map +1 -1
  285. package/fesm2022/cax-design-system-steps.mjs +7 -7
  286. package/fesm2022/cax-design-system-steps.mjs.map +1 -1
  287. package/fesm2022/cax-design-system-styleclass.mjs +7 -7
  288. package/fesm2022/cax-design-system-styleclass.mjs.map +1 -1
  289. package/fesm2022/cax-design-system-subscriptioncard.mjs +7 -7
  290. package/fesm2022/cax-design-system-subscriptioncard.mjs.map +1 -1
  291. package/fesm2022/cax-design-system-table-paginator.mjs +7 -8
  292. package/fesm2022/cax-design-system-table-paginator.mjs.map +1 -1
  293. package/fesm2022/cax-design-system-table.mjs +92 -92
  294. package/fesm2022/cax-design-system-table.mjs.map +1 -1
  295. package/fesm2022/cax-design-system-tableconfiguration.mjs +7 -7
  296. package/fesm2022/cax-design-system-tableconfiguration.mjs.map +1 -1
  297. package/fesm2022/cax-design-system-tabmenu.mjs +8 -8
  298. package/fesm2022/cax-design-system-tabmenu.mjs.map +1 -1
  299. package/fesm2022/cax-design-system-tabview.mjs +10 -10
  300. package/fesm2022/cax-design-system-tabview.mjs.map +1 -1
  301. package/fesm2022/cax-design-system-tag.mjs +7 -7
  302. package/fesm2022/cax-design-system-tag.mjs.map +1 -1
  303. package/fesm2022/cax-design-system-terminal.mjs +10 -10
  304. package/fesm2022/cax-design-system-terminal.mjs.map +1 -1
  305. package/fesm2022/cax-design-system-tieredmenu.mjs +15 -15
  306. package/fesm2022/cax-design-system-tieredmenu.mjs.map +1 -1
  307. package/fesm2022/cax-design-system-timeline.mjs +7 -7
  308. package/fesm2022/cax-design-system-timeline.mjs.map +1 -1
  309. package/fesm2022/cax-design-system-toast.mjs +10 -10
  310. package/fesm2022/cax-design-system-toast.mjs.map +1 -1
  311. package/fesm2022/cax-design-system-togglebutton.mjs +7 -7
  312. package/fesm2022/cax-design-system-togglebutton.mjs.map +1 -1
  313. package/fesm2022/cax-design-system-toggleswitch.mjs +7 -7
  314. package/fesm2022/cax-design-system-toggleswitch.mjs.map +1 -1
  315. package/fesm2022/cax-design-system-toolbar.mjs +7 -7
  316. package/fesm2022/cax-design-system-toolbar.mjs.map +1 -1
  317. package/fesm2022/cax-design-system-tooltip.mjs +7 -7
  318. package/fesm2022/cax-design-system-tooltip.mjs.map +1 -1
  319. package/fesm2022/cax-design-system-tree.mjs +10 -10
  320. package/fesm2022/cax-design-system-tree.mjs.map +1 -1
  321. package/fesm2022/cax-design-system-treeselect.mjs +7 -7
  322. package/fesm2022/cax-design-system-treeselect.mjs.map +1 -1
  323. package/fesm2022/cax-design-system-treetable.mjs +55 -55
  324. package/fesm2022/cax-design-system-treetable.mjs.map +1 -1
  325. package/fesm2022/cax-design-system-tristatecheckbox.mjs +7 -7
  326. package/fesm2022/cax-design-system-tristatecheckbox.mjs.map +1 -1
  327. package/fesm2022/cax-design-system-upload.mjs +7 -7
  328. package/fesm2022/cax-design-system-upload.mjs.map +1 -1
  329. package/fesm2022/cax-design-system-virtualscroller.mjs +7 -7
  330. package/fesm2022/cax-design-system-virtualscroller.mjs.map +1 -1
  331. package/fieldset/index.d.ts +140 -3
  332. package/fileupload/index.d.ts +606 -3
  333. package/floatlabel/index.d.ts +19 -3
  334. package/focustrap/index.d.ts +35 -3
  335. package/galleria/index.d.ts +502 -3
  336. package/iconfield/index.d.ts +26 -3
  337. package/icons/angledoubledown/index.d.ts +9 -5
  338. package/icons/angledoubleleft/index.d.ts +9 -5
  339. package/icons/angledoubleright/index.d.ts +9 -5
  340. package/icons/angledoubleup/index.d.ts +9 -5
  341. package/icons/angledown/index.d.ts +9 -5
  342. package/icons/angleleft/index.d.ts +9 -5
  343. package/icons/angleright/index.d.ts +9 -5
  344. package/icons/angleup/index.d.ts +9 -5
  345. package/icons/arrowdown/index.d.ts +12 -5
  346. package/icons/arrowdownleft/index.d.ts +9 -5
  347. package/icons/arrowdownright/index.d.ts +9 -5
  348. package/icons/arrowleft/index.d.ts +11 -5
  349. package/icons/arrowright/index.d.ts +9 -5
  350. package/icons/arrowup/index.d.ts +11 -5
  351. package/icons/ban/index.d.ts +11 -5
  352. package/icons/bars/index.d.ts +9 -5
  353. package/icons/blank/index.d.ts +9 -5
  354. package/icons/calendar/index.d.ts +9 -5
  355. package/icons/caretleft/index.d.ts +9 -5
  356. package/icons/caretright/index.d.ts +9 -5
  357. package/icons/check/index.d.ts +9 -5
  358. package/icons/chevrondown/index.d.ts +9 -5
  359. package/icons/chevronleft/index.d.ts +9 -5
  360. package/icons/chevronright/index.d.ts +9 -5
  361. package/icons/chevronup/index.d.ts +9 -5
  362. package/icons/exclamationtriangle/index.d.ts +12 -5
  363. package/icons/eye/index.d.ts +9 -5
  364. package/icons/eyeslash/index.d.ts +11 -5
  365. package/icons/filter/index.d.ts +11 -5
  366. package/icons/filterslash/index.d.ts +11 -5
  367. package/icons/home/index.d.ts +11 -5
  368. package/icons/infocircle/index.d.ts +11 -5
  369. package/icons/minus/index.d.ts +9 -5
  370. package/icons/pencil/index.d.ts +11 -5
  371. package/icons/plus/index.d.ts +11 -5
  372. package/icons/refresh/index.d.ts +11 -5
  373. package/icons/search/index.d.ts +11 -5
  374. package/icons/searchminus/index.d.ts +11 -5
  375. package/icons/searchplus/index.d.ts +11 -5
  376. package/icons/sortalt/index.d.ts +11 -5
  377. package/icons/sortamountdown/index.d.ts +11 -5
  378. package/icons/sortamountupalt/index.d.ts +11 -5
  379. package/icons/spinner/index.d.ts +11 -5
  380. package/icons/star/index.d.ts +11 -5
  381. package/icons/starfill/index.d.ts +11 -5
  382. package/icons/thlarge/index.d.ts +11 -5
  383. package/icons/times/index.d.ts +9 -5
  384. package/icons/timescircle/index.d.ts +11 -5
  385. package/icons/trash/index.d.ts +11 -5
  386. package/icons/undo/index.d.ts +11 -5
  387. package/icons/upload/index.d.ts +11 -5
  388. package/icons/windowmaximize/index.d.ts +11 -5
  389. package/icons/windowminimize/index.d.ts +11 -5
  390. package/image/index.d.ts +228 -3
  391. package/index.d.ts +2 -5
  392. package/inplace/index.d.ts +130 -3
  393. package/inputchips/index.d.ts +323 -3
  394. package/inputgroup/index.d.ts +79 -3
  395. package/inputgroupaddon/index.d.ts +35 -3
  396. package/inputicon/index.d.ts +22 -3
  397. package/inputmask/index.d.ts +310 -3
  398. package/inputnumber/index.d.ts +469 -3
  399. package/inputotp/index.d.ts +189 -3
  400. package/inputswitch/index.d.ts +123 -3
  401. package/inputtext/index.d.ts +79 -5
  402. package/inputtextarea/index.d.ts +130 -3
  403. package/keyfilter/index.d.ts +65 -3
  404. package/knob/index.d.ts +179 -3
  405. package/listbox/index.d.ts +631 -3
  406. package/logo/index.d.ts +20 -5
  407. package/logocard/index.d.ts +15 -5
  408. package/megamenu/index.d.ts +230 -3
  409. package/menu/index.d.ts +222 -3
  410. package/menubar/index.d.ts +290 -3
  411. package/message/index.d.ts +53 -3
  412. package/messages/index.d.ts +129 -3
  413. package/metergroup/index.d.ts +224 -3
  414. package/multiselect/index.d.ts +1000 -3
  415. package/navigation/index.d.ts +110 -5
  416. package/orderlist/index.d.ts +381 -3
  417. package/organizationchart/index.d.ts +192 -3
  418. package/overlay/index.d.ts +246 -3
  419. package/overlaypanel/index.d.ts +175 -3
  420. package/package.json +387 -387
  421. package/paginator/index.d.ts +249 -3
  422. package/panel/index.d.ts +185 -3
  423. package/panelmenu/index.d.ts +249 -3
  424. package/password/index.d.ts +342 -3
  425. package/picklist/index.d.ts +696 -3
  426. package/productcard/index.d.ts +28 -5
  427. package/progressbar/index.d.ts +76 -3
  428. package/progressspinner/index.d.ts +58 -3
  429. package/radiobutton/index.d.ts +174 -3
  430. package/rating/index.d.ts +181 -3
  431. package/resources/cax.min.scss +26 -4
  432. package/resources/cax.scss +25 -4
  433. package/resources/components/navigation/navigation.scss +2 -1
  434. package/resources/components/slider/slider.scss +41 -0
  435. package/resources/components/table/table.scss +3 -3
  436. package/ripple/index.d.ts +37 -3
  437. package/scroller/index.d.ts +528 -3
  438. package/scrollpanel/index.d.ts +116 -3
  439. package/scrolltop/index.d.ts +117 -3
  440. package/selectbutton/index.d.ts +233 -3
  441. package/sidebar/index.d.ts +213 -3
  442. package/skeleton/index.d.ts +69 -3
  443. package/slidemenu/index.d.ts +339 -3
  444. package/slider/index.d.ts +224 -3
  445. package/speeddial/index.d.ts +324 -3
  446. package/spinner/index.d.ts +93 -5
  447. package/splitbutton/index.d.ts +264 -3
  448. package/splitter/index.d.ts +201 -3
  449. package/stepper/index.d.ts +145 -3
  450. package/steps/index.d.ts +95 -3
  451. package/styleclass/index.d.ts +109 -3
  452. package/subscriptioncard/index.d.ts +46 -5
  453. package/table/index.d.ts +2530 -3
  454. package/table-paginator/index.d.ts +59 -3
  455. package/tableconfiguration/index.d.ts +27 -5
  456. package/tabmenu/index.d.ts +160 -3
  457. package/tabview/index.d.ts +360 -3
  458. package/tag/index.d.ts +120 -3
  459. package/terminal/index.d.ts +68 -3
  460. package/tieredmenu/index.d.ts +312 -3
  461. package/timeline/index.d.ts +100 -3
  462. package/toast/index.d.ts +194 -3
  463. package/togglebutton/index.d.ts +150 -3
  464. package/toggleswitch/index.d.ts +30 -5
  465. package/toolbar/index.d.ts +64 -3
  466. package/tooltip/index.d.ts +218 -3
  467. package/tree/index.d.ts +673 -3
  468. package/treeselect/index.d.ts +517 -3
  469. package/treetable/index.d.ts +1461 -3
  470. package/tristatecheckbox/index.d.ts +155 -3
  471. package/ts-helpers/index.d.ts +6 -5
  472. package/upload/index.d.ts +113 -5
  473. package/utils/index.d.ts +35 -5
  474. package/virtualscroller/index.d.ts +161 -3
  475. package/accordion/accordion.d.ts +0 -224
  476. package/accordion/accordion.interface.d.ts +0 -49
  477. package/accordion/accordion.module.d.ts +0 -13
  478. package/accordion/public_api.d.ts +0 -3
  479. package/animate/animate.d.ts +0 -40
  480. package/animate/public_api.d.ts +0 -1
  481. package/animateonscroll/animateonscroll.d.ts +0 -75
  482. package/animateonscroll/public_api.d.ts +0 -1
  483. package/api/blockableui.d.ts +0 -10
  484. package/api/caxconfig.d.ts +0 -24
  485. package/api/confirmaeventtype.d.ts +0 -8
  486. package/api/confirmation.d.ts +0 -90
  487. package/api/confirmationservice.d.ts +0 -30
  488. package/api/contextmenuservice.d.ts +0 -11
  489. package/api/filtermatchmode.d.ts +0 -22
  490. package/api/filtermetadata.d.ts +0 -18
  491. package/api/filteroperator.d.ts +0 -4
  492. package/api/filterservice.d.ts +0 -10
  493. package/api/lazyloadevent.d.ts +0 -47
  494. package/api/lazyloadmeta.d.ts +0 -19
  495. package/api/megamenuitem.d.ts +0 -130
  496. package/api/menuitem.d.ts +0 -176
  497. package/api/message.d.ts +0 -29
  498. package/api/messageservice.d.ts +0 -32
  499. package/api/overlayoptions.d.ts +0 -188
  500. package/api/overlayservice.d.ts +0 -9
  501. package/api/primeicons.d.ts +0 -313
  502. package/api/public_api.d.ts +0 -34
  503. package/api/scrolleroptions.d.ts +0 -116
  504. package/api/selectitem.d.ts +0 -12
  505. package/api/selectitemgroup.d.ts +0 -10
  506. package/api/shared.d.ts +0 -24
  507. package/api/sortevent.d.ts +0 -12
  508. package/api/sortmeta.d.ts +0 -8
  509. package/api/tablestate.d.ts +0 -60
  510. package/api/themegeneratorservice.d.ts +0 -12
  511. package/api/tooltipoptions.d.ts +0 -69
  512. package/api/translation.d.ts +0 -135
  513. package/api/translationkeys.d.ts +0 -50
  514. package/api/treedragdropservice.d.ts +0 -12
  515. package/api/treenode.d.ts +0 -91
  516. package/api/treenodedragevent.d.ts +0 -27
  517. package/api/treetablenode.d.ts +0 -36
  518. package/autocomplete/autocomplete.d.ts +0 -633
  519. package/autocomplete/autocomplete.interface.d.ts +0 -164
  520. package/autocomplete/autocomplete.module.d.ts +0 -21
  521. package/autocomplete/public_api.d.ts +0 -3
  522. package/autofocus/autofocus.d.ts +0 -28
  523. package/autofocus/public_api.d.ts +0 -1
  524. package/avatar/avatar.d.ts +0 -95
  525. package/avatar/avatar.module.d.ts +0 -7
  526. package/avatar/public_api.d.ts +0 -2
  527. package/avatargroup/avatargroup.d.ts +0 -21
  528. package/avatargroup/avatargroup.module.d.ts +0 -9
  529. package/avatargroup/public_api.d.ts +0 -2
  530. package/badge/badge.d.ts +0 -25
  531. package/badge/badge.directive.d.ts +0 -35
  532. package/badge/badge.module.d.ts +0 -10
  533. package/badge/public_api.d.ts +0 -3
  534. package/baseicon/baseicon.d.ts +0 -15
  535. package/baseicon/public_api.d.ts +0 -1
  536. package/blockui/blockui.d.ts +0 -64
  537. package/blockui/blockui.interface.d.ts +0 -11
  538. package/blockui/public_api.d.ts +0 -2
  539. package/breadcrumb/breadcrumb.d.ts +0 -55
  540. package/breadcrumb/breadcrumb.interface.d.ts +0 -38
  541. package/breadcrumb/breadcrumb.module.d.ts +0 -13
  542. package/breadcrumb/public_api.d.ts +0 -3
  543. package/button/button.d.ts +0 -92
  544. package/button/button.directive.d.ts +0 -51
  545. package/button/button.interface.d.ts +0 -30
  546. package/button/button.module.d.ts +0 -9
  547. package/button/public_api.d.ts +0 -4
  548. package/buttongroup/buttongroup.d.ts +0 -11
  549. package/buttongroup/public_api.d.ts +0 -1
  550. package/calendar/calendar.d.ts +0 -744
  551. package/calendar/calendar.interface.d.ts +0 -204
  552. package/calendar/calendar.module.d.ts +0 -9
  553. package/calendar/public_api.d.ts +0 -3
  554. package/card/card.d.ts +0 -49
  555. package/card/card.interface.d.ts +0 -27
  556. package/card/card.module.d.ts +0 -11
  557. package/card/public_api.d.ts +0 -3
  558. package/carousel/carousel.d.ts +0 -227
  559. package/carousel/carousel.interface.d.ts +0 -63
  560. package/carousel/public_api.d.ts +0 -2
  561. package/cascadeselect/cascadeselect.d.ts +0 -465
  562. package/cascadeselect/cascadeselect.interface.d.ts +0 -115
  563. package/cascadeselect/cascadeselect.module.d.ts +0 -15
  564. package/cascadeselect/public_api.d.ts +0 -3
  565. package/categorycard/categorycard.d.ts +0 -11
  566. package/categorycard/categorycard.module.d.ts +0 -7
  567. package/categorycard/public_api.d.ts +0 -2
  568. package/chart/chart.d.ts +0 -87
  569. package/chart/public_api.d.ts +0 -1
  570. package/checkbox/checkbox.d.ts +0 -168
  571. package/checkbox/checkbox.interface.d.ts +0 -26
  572. package/checkbox/checkbox.module.d.ts +0 -10
  573. package/checkbox/public_api.d.ts +0 -3
  574. package/chip/chip.d.ts +0 -37
  575. package/chip/chip.interface.d.ts +0 -15
  576. package/chip/chip.module.d.ts +0 -10
  577. package/chip/public_api.d.ts +0 -3
  578. package/colorpicker/colorpicker.d.ts +0 -240
  579. package/colorpicker/colorpicker.interface.d.ts +0 -15
  580. package/colorpicker/colorpicker.module.d.ts +0 -9
  581. package/colorpicker/public_api.d.ts +0 -3
  582. package/commentbox/commentbox.d.ts +0 -120
  583. package/commentbox/commentbox.module.d.ts +0 -17
  584. package/commentbox/public_api.d.ts +0 -2
  585. package/comments/comments.d.ts +0 -83
  586. package/comments/comments.module.d.ts +0 -7
  587. package/comments/public_api.d.ts +0 -2
  588. package/comparecard/comaparecard.module.d.ts +0 -11
  589. package/comparecard/comparecard.component.d.ts +0 -44
  590. package/comparecard/public_api.d.ts +0 -2
  591. package/confirmdialog/confirmdialog.d.ts +0 -272
  592. package/confirmdialog/confirmdialog.interface.d.ts +0 -39
  593. package/confirmdialog/confirmdialog.module.d.ts +0 -15
  594. package/confirmdialog/public_api.d.ts +0 -3
  595. package/confirmpopup/confirmpopup.d.ts +0 -119
  596. package/confirmpopup/confirmpopup.interface.d.ts +0 -27
  597. package/confirmpopup/public_api.d.ts +0 -2
  598. package/contextmenu/contextmenu.d.ts +0 -260
  599. package/contextmenu/public_api.d.ts +0 -1
  600. package/dataview/dataview.d.ts +0 -274
  601. package/dataview/dataview.interface.d.ts +0 -183
  602. package/dataview/public_api.d.ts +0 -2
  603. package/defer/defer.d.ts +0 -39
  604. package/defer/public_api.d.ts +0 -1
  605. package/dialog/dialog.d.ts +0 -364
  606. package/dialog/dialog.interface.d.ts +0 -31
  607. package/dialog/dialog.module.d.ts +0 -15
  608. package/dialog/public_api.d.ts +0 -3
  609. package/divider/divider.d.ts +0 -57
  610. package/divider/divider.module.d.ts +0 -7
  611. package/divider/public_api.d.ts +0 -2
  612. package/dock/dock.d.ts +0 -115
  613. package/dock/dock.interface.d.ts +0 -19
  614. package/dock/public_api.d.ts +0 -2
  615. package/dom/connectedoverlayscrollhandler.d.ts +0 -9
  616. package/dom/domhandler.d.ts +0 -95
  617. package/dom/public_api.d.ts +0 -2
  618. package/dragdrop/dragdrop.d.ts +0 -112
  619. package/dragdrop/dragdrop.module.d.ts +0 -8
  620. package/dragdrop/public_api.d.ts +0 -2
  621. package/dropdown/dropdown-item.d.ts +0 -31
  622. package/dropdown/dropdown.d.ts +0 -650
  623. package/dropdown/dropdown.interface.d.ts +0 -154
  624. package/dropdown/dropdown.module.d.ts +0 -11
  625. package/dropdown/public_api.d.ts +0 -4
  626. package/dynamicdialog/dialogservice.d.ts +0 -35
  627. package/dynamicdialog/dynamicdialog-config.d.ts +0 -221
  628. package/dynamicdialog/dynamicdialog-injector.d.ts +0 -7
  629. package/dynamicdialog/dynamicdialog-ref.d.ts +0 -101
  630. package/dynamicdialog/dynamicdialog.d.ts +0 -124
  631. package/dynamicdialog/dynamicdialogcontent.d.ts +0 -8
  632. package/dynamicdialog/public_api.d.ts +0 -6
  633. package/editor/editor.d.ts +0 -109
  634. package/editor/editor.interface.d.ts +0 -64
  635. package/editor/editor.module.d.ts +0 -9
  636. package/editor/public_api.d.ts +0 -3
  637. package/fieldset/fieldset.d.ts +0 -93
  638. package/fieldset/fieldset.interface.d.ts +0 -46
  639. package/fieldset/public_api.d.ts +0 -2
  640. package/fileupload/fileupload.d.ts +0 -380
  641. package/fileupload/fileupload.interface.d.ts +0 -226
  642. package/fileupload/public_api.d.ts +0 -2
  643. package/floatlabel/floatlabel.d.ts +0 -9
  644. package/floatlabel/floatlabel.module.d.ts +0 -10
  645. package/floatlabel/public_api.d.ts +0 -2
  646. package/focustrap/focustrap.d.ts +0 -34
  647. package/focustrap/public_api.d.ts +0 -1
  648. package/galleria/galleria.d.ts +0 -404
  649. package/galleria/galleria.interface.d.ts +0 -97
  650. package/galleria/public_api.d.ts +0 -2
  651. package/iconfield/iconfield.d.ts +0 -25
  652. package/iconfield/public_api.d.ts +0 -1
  653. package/icons/angledoubledown/angledoubledown.d.ts +0 -6
  654. package/icons/angledoubledown/public_api.d.ts +0 -1
  655. package/icons/angledoubleleft/angledoubleleft.d.ts +0 -6
  656. package/icons/angledoubleleft/public_api.d.ts +0 -1
  657. package/icons/angledoubleright/angledoubleright.d.ts +0 -6
  658. package/icons/angledoubleright/public_api.d.ts +0 -1
  659. package/icons/angledoubleup/angledoubleup.d.ts +0 -6
  660. package/icons/angledoubleup/public_api.d.ts +0 -1
  661. package/icons/angledown/angledown.d.ts +0 -6
  662. package/icons/angledown/public_api.d.ts +0 -1
  663. package/icons/angleleft/angleleft.d.ts +0 -6
  664. package/icons/angleleft/public_api.d.ts +0 -1
  665. package/icons/angleright/angleright.d.ts +0 -6
  666. package/icons/angleright/public_api.d.ts +0 -1
  667. package/icons/angleup/angleup.d.ts +0 -6
  668. package/icons/angleup/public_api.d.ts +0 -1
  669. package/icons/arrowdown/arrowdown.d.ts +0 -9
  670. package/icons/arrowdown/public_api.d.ts +0 -1
  671. package/icons/arrowdownleft/arrowdownleft.d.ts +0 -6
  672. package/icons/arrowdownleft/public_api.d.ts +0 -1
  673. package/icons/arrowdownright/arrowdownright.d.ts +0 -6
  674. package/icons/arrowdownright/public_api.d.ts +0 -1
  675. package/icons/arrowleft/arrowleft.d.ts +0 -8
  676. package/icons/arrowleft/public_api.d.ts +0 -1
  677. package/icons/arrowright/arrowright.d.ts +0 -6
  678. package/icons/arrowright/public_api.d.ts +0 -1
  679. package/icons/arrowup/arrowup.d.ts +0 -8
  680. package/icons/arrowup/public_api.d.ts +0 -1
  681. package/icons/ban/ban.d.ts +0 -8
  682. package/icons/ban/public_api.d.ts +0 -1
  683. package/icons/bars/bars.d.ts +0 -6
  684. package/icons/bars/public_api.d.ts +0 -1
  685. package/icons/blank/blank.d.ts +0 -6
  686. package/icons/blank/public_api.d.ts +0 -1
  687. package/icons/calendar/calendar.d.ts +0 -6
  688. package/icons/calendar/public_api.d.ts +0 -1
  689. package/icons/caretleft/caretleft.d.ts +0 -6
  690. package/icons/caretleft/public_api.d.ts +0 -1
  691. package/icons/caretright/caretright.d.ts +0 -6
  692. package/icons/caretright/public_api.d.ts +0 -1
  693. package/icons/check/check.d.ts +0 -6
  694. package/icons/check/public_api.d.ts +0 -1
  695. package/icons/chevrondown/chevrondown.d.ts +0 -6
  696. package/icons/chevrondown/public_api.d.ts +0 -1
  697. package/icons/chevronleft/chevronleft.d.ts +0 -6
  698. package/icons/chevronleft/public_api.d.ts +0 -1
  699. package/icons/chevronright/chevronright.d.ts +0 -6
  700. package/icons/chevronright/public_api.d.ts +0 -1
  701. package/icons/chevronup/chevronup.d.ts +0 -6
  702. package/icons/chevronup/public_api.d.ts +0 -1
  703. package/icons/exclamationtriangle/exclamationtriangle.d.ts +0 -9
  704. package/icons/exclamationtriangle/public_api.d.ts +0 -1
  705. package/icons/eye/eye.d.ts +0 -6
  706. package/icons/eye/public_api.d.ts +0 -1
  707. package/icons/eyeslash/eyeslash.d.ts +0 -8
  708. package/icons/eyeslash/public_api.d.ts +0 -1
  709. package/icons/filter/filter.d.ts +0 -8
  710. package/icons/filter/public_api.d.ts +0 -1
  711. package/icons/filterslash/filterslash.d.ts +0 -8
  712. package/icons/filterslash/public_api.d.ts +0 -1
  713. package/icons/home/home.d.ts +0 -8
  714. package/icons/home/public_api.d.ts +0 -1
  715. package/icons/infocircle/infocircle.d.ts +0 -8
  716. package/icons/infocircle/public_api.d.ts +0 -1
  717. package/icons/minus/minus.d.ts +0 -6
  718. package/icons/minus/public_api.d.ts +0 -1
  719. package/icons/pencil/pencil.d.ts +0 -8
  720. package/icons/pencil/public_api.d.ts +0 -1
  721. package/icons/plus/plus.d.ts +0 -8
  722. package/icons/plus/public_api.d.ts +0 -1
  723. package/icons/refresh/public_api.d.ts +0 -1
  724. package/icons/refresh/refresh.d.ts +0 -8
  725. package/icons/search/public_api.d.ts +0 -1
  726. package/icons/search/search.d.ts +0 -8
  727. package/icons/searchminus/public_api.d.ts +0 -1
  728. package/icons/searchminus/searchminus.d.ts +0 -8
  729. package/icons/searchplus/public_api.d.ts +0 -1
  730. package/icons/searchplus/searchplus.d.ts +0 -8
  731. package/icons/sortalt/public_api.d.ts +0 -1
  732. package/icons/sortalt/sortalt.d.ts +0 -8
  733. package/icons/sortamountdown/public_api.d.ts +0 -1
  734. package/icons/sortamountdown/sortamountdown.d.ts +0 -8
  735. package/icons/sortamountupalt/public_api.d.ts +0 -1
  736. package/icons/sortamountupalt/sortamountupalt.d.ts +0 -8
  737. package/icons/spinner/public_api.d.ts +0 -1
  738. package/icons/spinner/spinner.d.ts +0 -8
  739. package/icons/star/public_api.d.ts +0 -1
  740. package/icons/star/star.d.ts +0 -8
  741. package/icons/starfill/public_api.d.ts +0 -1
  742. package/icons/starfill/starfill.d.ts +0 -8
  743. package/icons/thlarge/public_api.d.ts +0 -1
  744. package/icons/thlarge/thlarge.d.ts +0 -8
  745. package/icons/times/public_api.d.ts +0 -1
  746. package/icons/times/times.d.ts +0 -6
  747. package/icons/timescircle/public_api.d.ts +0 -1
  748. package/icons/timescircle/timescircle.d.ts +0 -8
  749. package/icons/trash/public_api.d.ts +0 -1
  750. package/icons/trash/trash.d.ts +0 -8
  751. package/icons/undo/public_api.d.ts +0 -1
  752. package/icons/undo/undo.d.ts +0 -8
  753. package/icons/upload/public_api.d.ts +0 -1
  754. package/icons/upload/upload.d.ts +0 -8
  755. package/icons/windowmaximize/public_api.d.ts +0 -1
  756. package/icons/windowmaximize/windowmaximize.d.ts +0 -8
  757. package/icons/windowminimize/public_api.d.ts +0 -1
  758. package/icons/windowminimize/windowminimize.d.ts +0 -8
  759. package/image/image.d.ts +0 -188
  760. package/image/image.interface.d.ts +0 -31
  761. package/image/image.module.d.ts +0 -8
  762. package/image/public_api.d.ts +0 -3
  763. package/inplace/inplace.d.ts +0 -109
  764. package/inplace/inplace.interface.d.ts +0 -19
  765. package/inplace/public_api.d.ts +0 -2
  766. package/inputchips/inputchips.d.ts +0 -251
  767. package/inputchips/inputchips.interface.d.ts +0 -58
  768. package/inputchips/inputchips.module.d.ts +0 -14
  769. package/inputchips/public_api.d.ts +0 -3
  770. package/inputgroup/inputgroup.d.ts +0 -64
  771. package/inputgroup/inputgroup.module.d.ts +0 -15
  772. package/inputgroup/public_api.d.ts +0 -2
  773. package/inputgroupaddon/inputgroupaddon.d.ts +0 -21
  774. package/inputgroupaddon/inputgroupaddon.module.d.ts +0 -14
  775. package/inputgroupaddon/public_api.d.ts +0 -2
  776. package/inputicon/inputicon.d.ts +0 -21
  777. package/inputicon/public_api.d.ts +0 -1
  778. package/inputmask/inputmask.d.ts +0 -279
  779. package/inputmask/inputmask.interface.d.ts +0 -19
  780. package/inputmask/inputmask.module.d.ts +0 -12
  781. package/inputmask/public_api.d.ts +0 -3
  782. package/inputnumber/inputnumber.d.ts +0 -423
  783. package/inputnumber/inputnumber.interface.d.ts +0 -38
  784. package/inputnumber/inputnumber.module.d.ts +0 -8
  785. package/inputnumber/public_api.d.ts +0 -3
  786. package/inputotp/inputotp.d.ts +0 -123
  787. package/inputotp/inputotp.interface.d.ts +0 -65
  788. package/inputotp/public_api.d.ts +0 -2
  789. package/inputswitch/inputswitch.d.ts +0 -106
  790. package/inputswitch/inputswitch.interface.d.ts +0 -15
  791. package/inputswitch/public_api.d.ts +0 -2
  792. package/inputtext/inputtext.component.d.ts +0 -44
  793. package/inputtext/inputtext.directive.d.ts +0 -27
  794. package/inputtext/inputtext.module.d.ts +0 -10
  795. package/inputtext/public_api.d.ts +0 -3
  796. package/inputtextarea/inputtextarea.component.d.ts +0 -64
  797. package/inputtextarea/inputtextarea.directive.d.ts +0 -58
  798. package/inputtextarea/inputtextarea.module.d.ts +0 -10
  799. package/inputtextarea/public_api.d.ts +0 -3
  800. package/keyfilter/keyfilter.d.ts +0 -58
  801. package/keyfilter/keyfilter.interface.d.ts +0 -5
  802. package/keyfilter/public_api.d.ts +0 -2
  803. package/knob/knob.d.ts +0 -178
  804. package/knob/public_api.d.ts +0 -1
  805. package/listbox/listbox.d.ts +0 -461
  806. package/listbox/listbox.interface.d.ts +0 -156
  807. package/listbox/listbox.module.d.ts +0 -14
  808. package/listbox/public_api.d.ts +0 -3
  809. package/logo/logo.d.ts +0 -11
  810. package/logo/logo.module.d.ts +0 -7
  811. package/logo/public_api.d.ts +0 -2
  812. package/logocard/logocard.d.ts +0 -6
  813. package/logocard/logocard.module.d.ts +0 -7
  814. package/logocard/public_api.d.ts +0 -2
  815. package/megamenu/megamenu.d.ts +0 -198
  816. package/megamenu/megamenu.interface.d.ts +0 -31
  817. package/megamenu/public_api.d.ts +0 -2
  818. package/menu/menu.d.ts +0 -210
  819. package/menu/menu.module.d.ts +0 -12
  820. package/menu/public_api.d.ts +0 -2
  821. package/menubar/menubar.d.ts +0 -248
  822. package/menubar/menubar.interface.d.ts +0 -40
  823. package/menubar/public_api.d.ts +0 -2
  824. package/message/message.d.ts +0 -52
  825. package/message/public_api.d.ts +0 -1
  826. package/messages/messages.d.ts +0 -106
  827. package/messages/messages.interface.d.ts +0 -16
  828. package/messages/messages.module.d.ts +0 -8
  829. package/messages/public_api.d.ts +0 -3
  830. package/metergroup/metergroup.d.ts +0 -101
  831. package/metergroup/metergroup.interface.d.ts +0 -122
  832. package/metergroup/public_api.d.ts +0 -2
  833. package/multiselect/multiselect.d.ts +0 -736
  834. package/multiselect/multiselect.interface.d.ts +0 -247
  835. package/multiselect/multiselect.module.d.ts +0 -20
  836. package/multiselect/public_api.d.ts +0 -3
  837. package/navigation/navigation.d.ts +0 -75
  838. package/navigation/navigation.interface.d.ts +0 -26
  839. package/navigation/navigation.module.d.ts +0 -7
  840. package/navigation/public_api.d.ts +0 -2
  841. package/orderlist/orderlist.d.ts +0 -270
  842. package/orderlist/orderlist.interface.d.ts +0 -110
  843. package/orderlist/public_api.d.ts +0 -2
  844. package/organizationchart/organizationchart.d.ts +0 -132
  845. package/organizationchart/organizationchart.interface.d.ts +0 -59
  846. package/organizationchart/public_api.d.ts +0 -2
  847. package/overlay/overlay.d.ts +0 -238
  848. package/overlay/overlay.module.d.ts +0 -8
  849. package/overlay/public_api.d.ts +0 -2
  850. package/overlaypanel/overlaypanel.d.ts +0 -167
  851. package/overlaypanel/overlaypanel.module.d.ts +0 -8
  852. package/overlaypanel/public_api.d.ts +0 -2
  853. package/paginator/paginator.d.ts +0 -195
  854. package/paginator/paginator.interface.d.ts +0 -37
  855. package/paginator/paginator.module.d.ts +0 -17
  856. package/paginator/public_api.d.ts +0 -3
  857. package/panel/panel.d.ts +0 -126
  858. package/panel/panel.interface.d.ts +0 -58
  859. package/panel/public_api.d.ts +0 -2
  860. package/panelmenu/panelmenu.d.ts +0 -225
  861. package/panelmenu/panelmenu.interface.d.ts +0 -23
  862. package/panelmenu/public_api.d.ts +0 -2
  863. package/password/password.d.ts +0 -342
  864. package/password/public_api.d.ts +0 -1
  865. package/picklist/picklist.d.ts +0 -453
  866. package/picklist/picklist.interface.d.ts +0 -242
  867. package/picklist/public_api.d.ts +0 -2
  868. package/productcard/productcard.d.ts +0 -19
  869. package/productcard/productcard.module.d.ts +0 -7
  870. package/productcard/public_api.d.ts +0 -2
  871. package/progressbar/progressbar.d.ts +0 -69
  872. package/progressbar/progressbar.module.d.ts +0 -8
  873. package/progressbar/public_api.d.ts +0 -2
  874. package/progressspinner/progressspinner.d.ts +0 -50
  875. package/progressspinner/progressspinner.module.d.ts +0 -8
  876. package/progressspinner/public_api.d.ts +0 -2
  877. package/public_api.d.ts +0 -2
  878. package/radiobutton/public_api.d.ts +0 -3
  879. package/radiobutton/radiobutton.d.ts +0 -151
  880. package/radiobutton/radiobutton.interface.d.ts +0 -15
  881. package/radiobutton/radiobutton.module.d.ts +0 -7
  882. package/rating/public_api.d.ts +0 -2
  883. package/rating/rating.d.ts +0 -146
  884. package/rating/rating.interface.d.ts +0 -34
  885. package/ripple/public_api.d.ts +0 -2
  886. package/ripple/ripple.d.ts +0 -30
  887. package/ripple/ripple.module.d.ts +0 -7
  888. package/scroller/public_api.d.ts +0 -3
  889. package/scroller/scroller.d.ts +0 -343
  890. package/scroller/scroller.interface.d.ts +0 -177
  891. package/scroller/scroller.module.d.ts +0 -8
  892. package/scrollpanel/public_api.d.ts +0 -2
  893. package/scrollpanel/scrollpanel.d.ts +0 -103
  894. package/scrollpanel/scrollpanel.interface.d.ts +0 -11
  895. package/scrolltop/public_api.d.ts +0 -2
  896. package/scrolltop/scrolltop.d.ts +0 -97
  897. package/scrolltop/scrolltop.interface.d.ts +0 -18
  898. package/selectbutton/public_api.d.ts +0 -3
  899. package/selectbutton/selectbutton.d.ts +0 -177
  900. package/selectbutton/selectbutton.interface.d.ts +0 -45
  901. package/selectbutton/selectbutton.module.d.ts +0 -11
  902. package/sidebar/public_api.d.ts +0 -3
  903. package/sidebar/sidebar.d.ts +0 -173
  904. package/sidebar/sidebar.interface.d.ts +0 -27
  905. package/sidebar/sidebar.module.d.ts +0 -12
  906. package/skeleton/public_api.d.ts +0 -2
  907. package/skeleton/skeleton.d.ts +0 -61
  908. package/skeleton/skeleton.module.d.ts +0 -8
  909. package/slidemenu/public_api.d.ts +0 -2
  910. package/slidemenu/slidemenu.d.ts +0 -322
  911. package/slidemenu/slidemenu.interface.d.ts +0 -15
  912. package/slider/public_api.d.ts +0 -3
  913. package/slider/slider.d.ts +0 -167
  914. package/slider/slider.interface.d.ts +0 -38
  915. package/slider/slider.module.d.ts +0 -9
  916. package/speeddial/public_api.d.ts +0 -3
  917. package/speeddial/speeddial.d.ts +0 -282
  918. package/speeddial/speeddial.interface.d.ts +0 -28
  919. package/speeddial/speeddial.module.d.ts +0 -14
  920. package/spinner/public_api.d.ts +0 -1
  921. package/spinner/spinner.d.ts +0 -90
  922. package/splitbutton/public_api.d.ts +0 -3
  923. package/splitbutton/splitbutton.d.ts +0 -222
  924. package/splitbutton/splitbutton.interface.d.ts +0 -30
  925. package/splitbutton/splitbutton.module.d.ts +0 -13
  926. package/splitter/public_api.d.ts +0 -3
  927. package/splitter/splitter.d.ts +0 -158
  928. package/splitter/splitter.interface.d.ts +0 -34
  929. package/splitter/splitter.module.d.ts +0 -9
  930. package/stepper/public_api.d.ts +0 -2
  931. package/stepper/stepper.d.ts +0 -117
  932. package/stepper/stepper.interface.d.ts +0 -26
  933. package/steps/public_api.d.ts +0 -2
  934. package/steps/steps.d.ts +0 -84
  935. package/steps/steps.module.d.ts +0 -11
  936. package/styleclass/public_api.d.ts +0 -1
  937. package/styleclass/styleclass.d.ts +0 -108
  938. package/subscriptioncard/public_api.d.ts +0 -2
  939. package/subscriptioncard/subscriptioncard.component.d.ts +0 -33
  940. package/subscriptioncard/subscriptioncard.module.d.ts +0 -11
  941. package/table/columnfilter.interface.d.ts +0 -247
  942. package/table/components/cell-editor/cell-editor.d.ts +0 -20
  943. package/table/components/column-filter/column-filter.d.ts +0 -257
  944. package/table/components/column-filter-form-element/column-filter-form-element.d.ts +0 -37
  945. package/table/components/sort-icon/sort-icon.d.ts +0 -22
  946. package/table/components/table-body/table-body.d.ts +0 -36
  947. package/table/components/table-checkbox/table-checkbox.d.ts +0 -32
  948. package/table/components/table-header-checkbox/table-header-checkbox.d.ts +0 -31
  949. package/table/components/table-radio-button/table-radio-button.d.ts +0 -29
  950. package/table/directives/cancel-editable-row.directive.d.ts +0 -11
  951. package/table/directives/cell-extend.directive.d.ts +0 -14
  952. package/table/directives/cell-highlight.directive.d.ts +0 -12
  953. package/table/directives/content-menu-row.directive.d.ts +0 -22
  954. package/table/directives/dynamic-column-width.directive.d.ts +0 -12
  955. package/table/directives/editable-column.directive.d.ts +0 -40
  956. package/table/directives/editable-row.directive.d.ts +0 -12
  957. package/table/directives/frozen-column.directive.d.ts +0 -16
  958. package/table/directives/init-editable-row.directive.d.ts +0 -11
  959. package/table/directives/reorderable-column.directive.d.ts +0 -32
  960. package/table/directives/reorderable-row-handle.directive.d.ts +0 -9
  961. package/table/directives/reorderable-row.directive.d.ts +0 -34
  962. package/table/directives/resizable-column.directive.d.ts +0 -35
  963. package/table/directives/row-group-header.directive.d.ts +0 -9
  964. package/table/directives/row-toggler.directive.d.ts +0 -13
  965. package/table/directives/save-editable-row.directive.d.ts +0 -11
  966. package/table/directives/selectable-row-double-click.directive.d.ts +0 -22
  967. package/table/directives/selectable-row.directive.d.ts +0 -37
  968. package/table/directives/sortable-column.directive.d.ts +0 -24
  969. package/table/public_api.d.ts +0 -31
  970. package/table/table.d.ts +0 -845
  971. package/table/table.interface.d.ts +0 -644
  972. package/table/table.module.d.ts +0 -35
  973. package/table/table.service.d.ts +0 -24
  974. package/table-paginator/public_api.d.ts +0 -3
  975. package/table-paginator/table-paginator.component.d.ts +0 -28
  976. package/table-paginator/table-paginator.interface.d.ts +0 -21
  977. package/table-paginator/table-paginator.module.d.ts +0 -9
  978. package/tableconfiguration/public_api.d.ts +0 -2
  979. package/tableconfiguration/tableconfiguration.d.ts +0 -18
  980. package/tableconfiguration/tableconfiguration.module.d.ts +0 -7
  981. package/tabmenu/public_api.d.ts +0 -2
  982. package/tabmenu/tabmenu.d.ts +0 -126
  983. package/tabmenu/tabmenu.interface.d.ts +0 -32
  984. package/tabview/public_api.d.ts +0 -3
  985. package/tabview/tabview.d.ts +0 -295
  986. package/tabview/tabview.interface.d.ts +0 -49
  987. package/tabview/tabview.module.d.ts +0 -16
  988. package/tag/public_api.d.ts +0 -3
  989. package/tag/tag.d.ts +0 -99
  990. package/tag/tag.interface.d.ts +0 -11
  991. package/tag/tag.module.d.ts +0 -9
  992. package/terminal/public_api.d.ts +0 -2
  993. package/terminal/terminal.d.ts +0 -56
  994. package/terminal/terminalservice.d.ts +0 -11
  995. package/tieredmenu/public_api.d.ts +0 -3
  996. package/tieredmenu/tieredmenu.d.ts +0 -271
  997. package/tieredmenu/tieredmenu.interface.d.ts +0 -27
  998. package/tieredmenu/tiredmenu.module.d.ts +0 -13
  999. package/timeline/public_api.d.ts +0 -3
  1000. package/timeline/timeline.d.ts +0 -47
  1001. package/timeline/timeline.interface.d.ts +0 -43
  1002. package/timeline/timeline.module.d.ts +0 -9
  1003. package/toast/public_api.d.ts +0 -3
  1004. package/toast/toast.d.ts +0 -134
  1005. package/toast/toast.interface.d.ts +0 -52
  1006. package/toast/toast.module.d.ts +0 -9
  1007. package/toast/toastitem.d.ts +0 -37
  1008. package/togglebutton/public_api.d.ts +0 -2
  1009. package/togglebutton/togglebutton.d.ts +0 -115
  1010. package/togglebutton/togglebutton.interface.d.ts +0 -34
  1011. package/toggleswitch/public_api.d.ts +0 -2
  1012. package/toggleswitch/toggleswitch.d.ts +0 -19
  1013. package/toggleswitch/toggleswitch.module.d.ts +0 -9
  1014. package/toolbar/public_api.d.ts +0 -2
  1015. package/toolbar/toolbar.d.ts +0 -43
  1016. package/toolbar/toolbar.interface.d.ts +0 -19
  1017. package/tooltip/public_api.d.ts +0 -2
  1018. package/tooltip/tooltip.d.ts +0 -208
  1019. package/tooltip/tooltip.module.d.ts +0 -10
  1020. package/tree/public_api.d.ts +0 -3
  1021. package/tree/tree.d.ts +0 -461
  1022. package/tree/tree.interface.d.ts +0 -193
  1023. package/tree/tree.module.d.ts +0 -21
  1024. package/treeselect/public_api.d.ts +0 -3
  1025. package/treeselect/treeselect.d.ts +0 -394
  1026. package/treeselect/treeselect.interface.d.ts +0 -108
  1027. package/treeselect/treeselect.module.d.ts +0 -16
  1028. package/treetable/public_api.d.ts +0 -2
  1029. package/treetable/treetable.d.ts +0 -988
  1030. package/treetable/treetable.interface.d.ts +0 -472
  1031. package/tristatecheckbox/public_api.d.ts +0 -3
  1032. package/tristatecheckbox/tristatecheckbox.d.ts +0 -117
  1033. package/tristatecheckbox/tristatecheckbox.interface.d.ts +0 -30
  1034. package/tristatecheckbox/tristatecheckbox.module.d.ts +0 -8
  1035. package/ts-helpers/public_api.d.ts +0 -1
  1036. package/ts-helpers/ts-helpers.d.ts +0 -4
  1037. package/upload/public_api.d.ts +0 -2
  1038. package/upload/upload.component.d.ts +0 -99
  1039. package/upload/upload.component.module.d.ts +0 -11
  1040. package/utils/objectutils.d.ts +0 -24
  1041. package/utils/public_api.d.ts +0 -4
  1042. package/utils/uniquecomponentid.d.ts +0 -2
  1043. package/utils/zindexutils.d.ts +0 -7
  1044. package/virtualscroller/public_api.d.ts +0 -2
  1045. package/virtualscroller/virtualscroller.d.ts +0 -89
  1046. package/virtualscroller/virtualscroller.interface.d.ts +0 -72
@@ -1 +1 @@
1
- {"version":3,"file":"cax-design-system-commentbox.mjs","sources":["../../src/app/components/commentbox/commentbox.ts","../../src/app/components/commentbox/commentbox.html","../../src/app/components/commentbox/commentbox.module.ts","../../src/app/components/commentbox/cax-design-system-commentbox.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, HostListener, NgZone } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n// Add this interface at the top of the file\ninterface Comment {\n text: string;\n date: Date;\n files?: Array<{ name: string; size: string }>;\n isAdmin?: boolean;\n sender?: string;\n}\n\ninterface GroupedComments {\n date: Date;\n items: Comment[];\n}\n\n@Component({\n selector: 'cax-commentbox',\n templateUrl: './commentbox.html',\n styleUrls: ['./commentbox.scss'],\n standalone: false\n})\nexport class CommentboxComponent {\n private _comments: Comment[] = [];\n @Input() set comments(value: Comment[]) {\n this._comments = Array.isArray(value) ? value : [];\n this.recomputeGroupedComments();\n }\n get comments(): Comment[] {\n return this._comments;\n }\n @Input() mentionSuggestions: any[] = [];\n @Input() hashtagSuggestions: any[] = [];\n @Input() sidebarHeader: string;\n @Input() isAdmin: boolean = true;\n @Input() placeholder: string = 'Comment or mention others with @, ‘#’ for columns';\n @Output() commentAdded = new EventEmitter<any>();\n @Output() fileSelected = new EventEmitter<File>();\n @Output() fileDownload = new EventEmitter<{ name: string; size: string }>();\n @Output() visibleChange = new EventEmitter<boolean>();\n @Output() onSidebarHide = new EventEmitter<void>();\n newComment: string = '';\n\n isMentioning: boolean = false;\n isHashtagging: boolean = false;\n suggestions: any[] = [];\n selectedSuggestion: any = null;\n selectedSuggestionIndex: number = -1;\n filteredSuggestions: any[] = [];\n currentTokenType: 'mention' | 'hashtag' | null = null;\n cursorPosition: number = 0;\n\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n @ViewChild('suggestionPanel') suggestionPanel!: ElementRef;\n @ViewChild('inputText') inputText!: ElementRef;\n @ViewChild('commentsList') private commentsList!: ElementRef;\n @ViewChild('countChip') countChip!: ElementRef;\n selectedFiles: Array<{ name: string; size: string }> = [];\n selectedFilesMap: Map<number, { name: string; size: string }> = new Map();\n\n today: Date = new Date();\n groupedCommentsCache: GroupedComments[] = [];\n\n overlayVisible: boolean = false;\n filesOverlayVisible: boolean = false;\n overlayPosition = { top: 0, left: 0 };\n\n private dateUpdateInterval: any;\n\n // Keep track of should auto scroll\n private shouldAutoScroll = true;\n private isUserScrolling = false;\n\n // Add new property for mutation observer\n private observer: MutationObserver;\n private scrollQueued: boolean = false;\n\n constructor(\n private sanitizer: DomSanitizer,\n private ngZone: NgZone\n ) {\n this.updateCurrentDate();\n // Run the interval outside Angular to avoid frequent change detection in docs/canvas\n this.ngZone.runOutsideAngular(() => {\n this.dateUpdateInterval = setInterval(() => {\n this.ngZone.run(() => this.updateCurrentDate());\n }, 60000);\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.forceScrollToBottom();\n }, 100);\n\n // Set up observer to auto-scroll when content changes (outside Angular)\n if (this.commentsList?.nativeElement) {\n this.ngZone.runOutsideAngular(() => {\n this.observer = new MutationObserver(() => {\n if (this.scrollQueued) return;\n this.scrollQueued = true;\n requestAnimationFrame(() => {\n this.forceScrollToBottom();\n this.scrollQueued = false;\n });\n });\n this.observer.observe(this.commentsList.nativeElement, {\n childList: true\n });\n });\n }\n }\n\n ngOnDestroy() {\n if (this.dateUpdateInterval) {\n clearInterval(this.dateUpdateInterval);\n }\n // Disconnect the observer\n if (this.observer) this.observer.disconnect();\n\n // Remove event listeners\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n private updateCurrentDate(): void {\n this.today = new Date();\n }\n\n formatDate(date: Date): string {\n return date.toLocaleDateString(undefined, {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n });\n }\n\n formatMessageWithTags(text: string): SafeHtml {\n if (!text) return '';\n const sanitizedText = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n const htmlContent = sanitizedText.replace(/(@\\w+|#\\w+)/g, (match) => {\n if (match.startsWith('@')) {\n return `<span class=\"mention\" style=\"color: #0C4AF3; font-weight: 600;\">${match}</span>`;\n } else if (match.startsWith('#')) {\n return `<span class=\"hashtag\" style=\"color: #0C4AF3; font-weight: 600;\">${match}</span>`;\n }\n return match;\n });\n\n return this.sanitizer.bypassSecurityTrustHtml(htmlContent);\n }\n\n addComment() {\n if (this.newComment.trim() || this.selectedFiles.length > 0) {\n const newComment: Comment = {\n text: this.newComment,\n date: new Date(),\n files: this.selectedFiles.length > 0 ? [...this.selectedFiles] : undefined,\n isAdmin: this.isAdmin,\n sender: this.isAdmin ? 'System Admin' : 'User'\n };\n\n this.comments = [...this.comments, newComment];\n this.commentAdded.emit(newComment);\n this.newComment = '';\n this.selectedFiles = [];\n this.selectedFilesMap.clear();\n this.filesOverlayVisible = false;\n\n if (this.suggestionPanel?.nativeElement) {\n this.suggestionPanel.nativeElement.style.display = 'none';\n }\n\n // Always scroll to bottom immediately\n this.scrollToBottom(true);\n this.recomputeGroupedComments();\n }\n }\n\n private forceScrollToBottom(): void {\n if (!this.commentsList?.nativeElement) return;\n const element = this.commentsList.nativeElement;\n try {\n element.scrollTop = element.scrollHeight;\n } catch {\n // no-op\n }\n }\n\n private scrollToBottom(force = false): void {\n if (force) {\n this.forceScrollToBottom();\n return;\n }\n if (!this.commentsList?.nativeElement) return;\n\n const element = this.commentsList.nativeElement;\n\n // Single RAF to avoid nested scheduling overhead in Storybook\n requestAnimationFrame(() => {\n try {\n element.scrollTop = element.scrollHeight;\n element.scrollTo({ top: element.scrollHeight });\n } catch {\n element.scrollTop = element.scrollHeight;\n }\n });\n }\n\n @Input() set visible(value: boolean) {\n if (this._visible !== value) {\n this._visible = value;\n if (this._visible) {\n this.shouldAutoScroll = true;\n setTimeout(() => this.scrollToBottom(true), 300);\n }\n }\n }\n\n get visible(): boolean {\n return this._visible;\n }\n\n private _visible: boolean = false;\n\n toggleComments() {\n if (this._visible) {\n this.hideComments();\n } else {\n this.showComments();\n }\n }\n\n showComments() {\n if (!this._visible) {\n this._visible = true;\n this.visibleChange.emit(true);\n this.shouldAutoScroll = true;\n setTimeout(() => this.scrollToBottom(true), 300);\n }\n }\n\n hideComments() {\n if (this._visible) {\n this._visible = false;\n this.visibleChange.emit(false);\n this.onSidebarHide.emit();\n }\n }\n\n handleSidebarHide() {\n this.hideComments();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const isInputClick = this.inputText?.nativeElement?.contains(target);\n const isPanelClick = this.suggestionPanel?.nativeElement?.contains(target);\n\n if (!isInputClick && !isPanelClick) {\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n }\n }\n\n handleKeyUp(event: any): void {\n // Update cursor position on every key press\n const input = event.target;\n this.cursorPosition = input.selectionStart || 0;\n\n if (event.key === 'Escape') {\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n return;\n }\n\n if (event.key === '@' || event.key === '#') {\n this.currentTokenType = event.key === '@' ? 'mention' : 'hashtag';\n this.filteredSuggestions = this.currentTokenType === 'mention' ? this.mentionSuggestions : this.hashtagSuggestions;\n this.selectedSuggestionIndex = 0;\n\n const rect = input.getBoundingClientRect();\n const cursorPosition = this.getCursorPosition(input);\n\n this.overlayVisible = true;\n setTimeout(() => {\n const panel = this.suggestionPanel?.nativeElement;\n if (panel) {\n panel.style.left = `${rect.left + cursorPosition.left}px`;\n panel.style.top = `${rect.top - 10}px`;\n }\n });\n }\n\n if (this.currentTokenType) {\n const token = this.getTokenAtCursor(input.value, this.cursorPosition);\n if (token) {\n const searchTerm = token.slice(1).toLowerCase();\n this.filteredSuggestions = (this.currentTokenType === 'mention' ? this.mentionSuggestions : this.hashtagSuggestions).filter((item) => item.name.toLowerCase().includes(searchTerm) || item.id.toLowerCase().includes(searchTerm));\n\n if (this.filteredSuggestions.length > 0) {\n this.overlayVisible = true;\n // Only reset selection index if we have new suggestions\n if (this.selectedSuggestionIndex < 0 || this.selectedSuggestionIndex >= this.filteredSuggestions.length) {\n this.selectedSuggestionIndex = 0;\n }\n } else {\n this.overlayVisible = false;\n this.selectedSuggestionIndex = -1;\n }\n } else {\n this.overlayVisible = false;\n this.currentTokenType = null;\n }\n }\n }\n\n getTokenAtCursor(text: string, cursorPos: number): string | null {\n const beforeCursor = text.slice(0, cursorPos);\n const match = beforeCursor.match(/[@#][^\\s]*$/);\n return match ? match[0] : null;\n }\n\n getWordAtPosition(text: string, position: number): string {\n const left = text.slice(0, position).search(/[@#][^\\s]*$/);\n if (left === -1) return '';\n return text.slice(left, position);\n }\n\n selectSuggestion(suggestion: any) {\n const input = this.newComment;\n const wordStart = input.slice(0, this.cursorPosition).search(/[@#][^\\s]*$/);\n\n this.newComment = input.slice(0, wordStart) + suggestion.value + ' ' + input.slice(this.cursorPosition);\n\n this.isMentioning = false;\n this.isHashtagging = false;\n }\n\n onSuggestionSelect(item: any) {\n const input = this.newComment;\n const beforeCursor = input.slice(0, this.cursorPosition);\n const afterCursor = input.slice(this.cursorPosition);\n const lastTokenIndex = Math.max(beforeCursor.lastIndexOf('@'), beforeCursor.lastIndexOf('#'));\n\n if (lastTokenIndex >= 0) {\n // Insert the suggestion at the cursor position\n this.newComment = beforeCursor.slice(0, lastTokenIndex) + item.id + ' ' + afterCursor;\n }\n\n this.suggestionPanel.nativeElement.style.display = 'none';\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n this.selectedSuggestionIndex = -1;\n\n setTimeout(() => {\n const inputEl = this.inputText.nativeElement.querySelector('input');\n if (inputEl) {\n inputEl.focus();\n }\n });\n }\n\n onSuggestionPanelHide() {\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n this.selectedSuggestionIndex = -1;\n }\n\n getCursorPosition(input: HTMLInputElement): { left: number; top: number } {\n const selectionStart = input.selectionStart || 0;\n const textBeforeCursor = input.value.substring(0, selectionStart);\n const span = document.createElement('span');\n span.textContent = textBeforeCursor;\n span.style.cssText = window.getComputedStyle(input, null).cssText;\n span.style.visibility = 'hidden';\n document.body.appendChild(span);\n const position = {\n left: span.offsetWidth,\n top: span.offsetHeight\n };\n document.body.removeChild(span);\n return position;\n }\n\n onFileIconClick(event: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.click();\n }\n }\n\n onFileSelect(event: Event) {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n Array.from(input.files).forEach((file) => {\n // Check if file already exists in selection\n const fileExists = this.selectedFiles.some((existingFile) => existingFile.name === file.name && existingFile.size === this.formatFileSize(file.size));\n\n if (!fileExists) {\n const fileInfo = {\n name: file.name,\n size: this.formatFileSize(file.size)\n };\n this.selectedFiles.push(fileInfo);\n this.selectedFilesMap.set(this.selectedFiles.length - 1, fileInfo);\n this.fileSelected.emit(file);\n }\n });\n\n input.value = '';\n const inputEl = document.querySelector('.chat-input input');\n if (inputEl instanceof HTMLElement) {\n inputEl.focus();\n }\n }\n }\n\n private updateFileState(index: number, fromChip: boolean = true) {\n const actualIndex = fromChip ? index : index + 4;\n this.selectedFiles = this.selectedFiles.filter((_, i) => i !== actualIndex);\n this.selectedFilesMap.clear();\n this.selectedFiles.forEach((file, i) => {\n this.selectedFilesMap.set(i, file);\n });\n }\n\n removeFile(index: number, fromChip: boolean = true) {\n this.updateFileState(index, fromChip);\n if (this.selectedFiles.length <= 4) {\n this.hideFilesOverlay();\n }\n }\n\n getOverflowCount(): number {\n // Return count of files beyond the first 4\n return Math.max(0, this.selectedFiles.length - 4);\n }\n\n showFilesOverlay(event: MouseEvent) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n\n // Position the overlay below the count chip\n this.overlayPosition = {\n top: rect.bottom + 5,\n left: rect.left - 250 + rect.width / 2 // Center the overlay horizontally\n };\n\n this.filesOverlayVisible = true;\n\n // Add a click outside listener to close the overlay\n setTimeout(() => {\n document.addEventListener('click', this.handleClickOutside);\n });\n }\n\n hideFilesOverlay() {\n this.filesOverlayVisible = false;\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n private handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const overlay = document.querySelector('.files-overlay');\n const countChip = document.querySelector('.count-chip');\n\n if (overlay && !overlay.contains(target) && countChip && !countChip.contains(target)) {\n this.hideFilesOverlay();\n }\n };\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n showSuggestions(_event: any, type: 'mention' | 'hashtag') {\n this.currentTokenType = type;\n this.filteredSuggestions = type === 'mention' ? this.mentionSuggestions : this.hashtagSuggestions;\n if (this.suggestionPanel) {\n this.suggestionPanel.nativeElement.style.display = 'block';\n }\n }\n onKeyDown(event: KeyboardEvent) {\n // If suggestions are visible, handle keyboard navigation\n if (this.overlayVisible && this.filteredSuggestions.length > 0) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.selectedSuggestionIndex = Math.min(this.selectedSuggestionIndex + 1, this.filteredSuggestions.length - 1);\n this.scrollSuggestionIntoView();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.selectedSuggestionIndex = Math.max(this.selectedSuggestionIndex - 1, 0);\n this.scrollSuggestionIntoView();\n break;\n case 'Tab':\n event.preventDefault();\n if (event.shiftKey) {\n // Shift+Tab - move up\n this.selectedSuggestionIndex = Math.max(this.selectedSuggestionIndex - 1, 0);\n } else {\n // Tab - move down\n this.selectedSuggestionIndex = Math.min(this.selectedSuggestionIndex + 1, this.filteredSuggestions.length - 1);\n }\n this.scrollSuggestionIntoView();\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedSuggestionIndex >= 0) {\n this.onSuggestionSelect(this.filteredSuggestions[this.selectedSuggestionIndex]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.onSuggestionPanelHide();\n break;\n }\n return;\n }\n\n // If no suggestions are visible, handle normal enter key press\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.addComment();\n }\n }\n\n // Helper method to scroll the selected suggestion into view\n private scrollSuggestionIntoView(): void {\n setTimeout(() => {\n const suggestionList = this.suggestionPanel?.nativeElement.querySelector('.suggestion-list');\n const selectedItem = suggestionList?.querySelector('.suggestion-item.selected');\n\n if (suggestionList && selectedItem) {\n const listRect = suggestionList.getBoundingClientRect();\n const itemRect = selectedItem.getBoundingClientRect();\n\n // Check if the selected item is outside the visible area\n if (itemRect.bottom > listRect.bottom) {\n // Item is below the visible area\n selectedItem.scrollIntoView({ block: 'end', behavior: 'smooth' });\n } else if (itemRect.top < listRect.top) {\n // Item is above the visible area\n selectedItem.scrollIntoView({ block: 'start', behavior: 'smooth' });\n }\n }\n });\n }\n\n onFileDownload(file: { name: string; size: string }) {\n this.fileDownload.emit(file);\n }\n\n private recomputeGroupedComments(): void {\n const groups = this._comments.reduce((acc: GroupedComments[], comment: Comment) => {\n const commentDate = new Date(comment.date);\n commentDate.setHours(0, 0, 0, 0);\n\n const existingGroup = acc.find((group) => {\n const groupDate = new Date(group.date);\n groupDate.setHours(0, 0, 0, 0);\n return groupDate.getTime() === commentDate.getTime();\n });\n\n if (existingGroup) {\n existingGroup.items.push(comment);\n } else {\n acc.push({ date: commentDate, items: [comment] });\n }\n return acc;\n }, []);\n\n this.groupedCommentsCache = groups.sort((a, b) => a.date.getTime() - b.date.getTime());\n }\n\n getShortFileName(filename: string): string {\n if (filename.length <= 4) return filename;\n\n // Get file extension\n const lastDotIndex = filename.lastIndexOf('.');\n const extension = lastDotIndex !== -1 ? filename.substring(lastDotIndex) : '';\n\n // Truncate the name part and add the extension\n const namePart = filename.substring(0, lastDotIndex !== -1 ? lastDotIndex : filename.length);\n return namePart.substring(0, 4) + '..' + extension;\n }\n}\n","<div *ngIf=\"visible\" class=\"cax-commentbox-wrapper\">\n <!-- <ng-template caxTemplate=\"content\"> -->\n <div class=\"cax-commentbox-container\">\n <div class=\"cax-commentbox-list\" #commentsList>\n <ng-container *ngFor=\"let group of groupedCommentsCache\">\n <div class=\"cax-date-header\">{{ formatDate(group.date) }}</div>\n <div\n class=\"cax-comment-item\"\n *ngFor=\"let comment of group.items; let i = index\"\n [ngClass]=\"{\n 'cax-user-comment': !comment.isAdmin,\n 'cax-admin-comment': comment.isAdmin,\n 'consecutive-message': i > 0 && comment.isAdmin === group.items[i-1].isAdmin && comment.sender === group.items[i-1].sender,\n 'new-sender': i > 0 && comment.sender !== group.items[i-1].sender,\n 'new-date': i === 0 && group.items.length > 0\n }\"\n >\n <!-- User Message (Left Aligned) -->\n <ng-container *ngIf=\"!comment.isAdmin\">\n <div class=\"cax-commentbox-avatar-container\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">\n <cax-avatar [label]=\"comment.sender?.substring(0, 2).toUpperCase() || 'U'\" [avatarSize]=\"'xs'\" [shape]=\"'circle'\" styleclass=\"cax-commentbox-avatar\"> </cax-avatar>\n </div>\n <div class=\"cax-comment-content\" [class.no-avatar]=\"i > 0 && group.items[i-1].sender === comment.sender\">\n <div class=\"cax-comment-sender\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">{{comment.sender}}</div>\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\n <div class=\"file-details\">\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\n <span class=\"file-size\">{{file.size}}</span>\n </div>\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\n </div>\n </div>\n <div class=\"cax-comment-message-container\">\n <span class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></span>\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\n </div>\n </div>\n </ng-container>\n\n <!-- Admin Message (Right Aligned) -->\n <ng-container *ngIf=\"comment.isAdmin\">\n <div class=\"cax-comment-content admin\">\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\n <div class=\"file-details\">\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\n <span class=\"file-size\">{{file.size}}</span>\n </div>\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\n </div>\n </div>\n <div class=\"cax-comment-message-container\">\n <span class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></span>\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <!-- </ng-template> -->\n <cax-overlay #suggestionPanel [(visible)]=\"overlayVisible\" [appendTo]=\"inputText\" (onHide)=\"onSuggestionPanelHide()\" [styleClass]=\"'suggestion-panel'\">\n <div class=\"suggestion-list\">\n <div *ngFor=\"let item of filteredSuggestions; let i = index\" class=\"suggestion-item\" [ngClass]=\"{'selected': selectedSuggestionIndex === i}\" (click)=\"onSuggestionSelect(item)\" (mouseenter)=\"selectedSuggestionIndex = i\">\n <span class=\"suggestion-label\">{{item.name}}</span>\n <small class=\"suggestion-id\" *ngIf=\"currentTokenType === 'mention'\">{{item.id}}</small>\n </div>\n </div>\n </cax-overlay>\n <cax-overlay\n [(visible)]=\"filesOverlayVisible\"\n [appendTo]=\"countChip\"\n [showTransitionOptions]=\"'0.12s ease-out'\"\n [hideTransitionOptions]=\"'0.1s ease-in'\"\n [style]=\"{ width: '224px', right: '5%' }\"\n styleClass=\"files-list-overlay\"\n (onHide)=\"hideFilesOverlay()\"\n >\n <div class=\"files-overlay-content\">\n <div *ngFor=\"let file of selectedFiles.slice(4); let i = index\" class=\"file-item\">\n <span class=\"file-name\">{{getShortFileName(file.name)}}</span>\n <i class=\"cax cax-close-circle\" (click)=\"removeFile(i + 4)\"></i>\n </div>\n </div>\n </cax-overlay>\n\n <!-- <ng-template caxTemplate=\"footer\"> -->\n <div class=\"chat-footer\">\n <div class=\"selected-files\" *ngIf=\"selectedFiles.length > 0\">\n <cax-chip *ngFor=\"let file of selectedFiles.slice(0, 4); let i = index\" [label]=\"getShortFileName(file.name)\" [removable]=\"true\" [size]=\"'lg'\" (onRemove)=\"removeFile(i, true)\">\n <ng-template caxTemplate=\"content\">\n <i class=\"cax cax-paperclip\"></i>\n </ng-template>\n </cax-chip>\n <cax-chip #countChip *ngIf=\"selectedFiles.length > 4\" [label]=\"'+' + getOverflowCount()\" [size]=\"'lg'\" (mouseenter)=\"showFilesOverlay($event)\"> </cax-chip>\n </div>\n <div class=\"cax-chat-input-container\">\n <div class=\"input-wrapper\">\n <cax-inputtext\n [(ngModel)]=\"newComment\"\n [size]=\"'lg'\"\n [rightIcon]=\"true\"\n [clearIcon]=\"false\"\n [rightIconClass]=\"'cax cax-paperclip'\"\n [rightIconClickable]=\"true\"\n (rightIconClick)=\"onFileIconClick($event)\"\n [placeholder]=\"placeholder\"\n (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{'chat-input': true, 'admin-input': isAdmin}\"\n [style]=\"{'border-radius': '8px', background: '#ffffff'}\"\n #inputText\n >\n </cax-inputtext>\n </div>\n\n <cax-button [icon]=\"'cax cax-plain'\" [severity]=\"'primary'\" [size]=\"'large'\" (click)=\"addComment()\" [disabled]=\"!newComment.trim() && selectedFiles.length === 0\" class=\"send-button\"> </cax-button>\n </div>\n\n <input #fileInput type=\"file\" (change)=\"onFileSelect($event)\" style=\"display: none\" accept=\"*/*\" multiple />\n </div>\n <!-- </ng-template> -->\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { CommentboxComponent } from './commentbox';\nimport { InputTextModule } from 'cax-design-system/inputtext';\nimport { ButtonModule } from 'cax-design-system/button';\nimport { ChipModule } from 'cax-design-system/chip';\nimport { OverlayModule } from 'cax-design-system/overlay';\nimport { AvatarModule } from 'cax-design-system/avatar';\nimport { SharedModule } from 'cax-design-system/api';\nimport { RippleModule } from 'cax-design-system/ripple';\nimport { Sidebar } from 'cax-design-system/sidebar';\n\n@NgModule({\n declarations: [CommentboxComponent],\n imports: [CommonModule, FormsModule, Sidebar, InputTextModule, ButtonModule, ChipModule, OverlayModule, AvatarModule, RippleModule, SharedModule],\n exports: [CommentboxComponent]\n})\nexport class CommentboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cax-design-system-commentbox.mjs","sources":["../../src/app/components/commentbox/commentbox.ts","../../src/app/components/commentbox/commentbox.html","../../src/app/components/commentbox/commentbox.module.ts","../../src/app/components/commentbox/cax-design-system-commentbox.ts"],"sourcesContent":["import { Component, Input, Output, EventEmitter, ViewChild, ElementRef, HostListener, NgZone } from '@angular/core';\nimport { DomSanitizer, SafeHtml } from '@angular/platform-browser';\n\n// Add this interface at the top of the file\ninterface Comment {\n text: string;\n date: Date;\n files?: Array<{ name: string; size: string }>;\n isAdmin?: boolean;\n sender?: string;\n}\n\ninterface GroupedComments {\n date: Date;\n items: Comment[];\n}\n\n@Component({\n selector: 'cax-commentbox',\n templateUrl: './commentbox.html',\n styleUrls: ['./commentbox.scss'],\n standalone: false\n})\nexport class CommentboxComponent {\n private _comments: Comment[] = [];\n @Input() set comments(value: Comment[]) {\n this._comments = Array.isArray(value) ? value : [];\n this.recomputeGroupedComments();\n }\n get comments(): Comment[] {\n return this._comments;\n }\n @Input() mentionSuggestions: any[] = [];\n @Input() hashtagSuggestions: any[] = [];\n @Input() sidebarHeader: string;\n @Input() isAdmin: boolean = true;\n @Input() placeholder: string = 'Comment or mention others with @, ‘#’ for columns';\n @Output() commentAdded = new EventEmitter<any>();\n @Output() fileSelected = new EventEmitter<File>();\n @Output() fileDownload = new EventEmitter<{ name: string; size: string }>();\n @Output() visibleChange = new EventEmitter<boolean>();\n @Output() onSidebarHide = new EventEmitter<void>();\n newComment: string = '';\n\n isMentioning: boolean = false;\n isHashtagging: boolean = false;\n suggestions: any[] = [];\n selectedSuggestion: any = null;\n selectedSuggestionIndex: number = -1;\n filteredSuggestions: any[] = [];\n currentTokenType: 'mention' | 'hashtag' | null = null;\n cursorPosition: number = 0;\n\n @ViewChild('fileInput') fileInput!: ElementRef<HTMLInputElement>;\n @ViewChild('suggestionPanel') suggestionPanel!: ElementRef;\n @ViewChild('inputText') inputText!: ElementRef;\n @ViewChild('commentsList') private commentsList!: ElementRef;\n @ViewChild('countChip') countChip!: ElementRef;\n selectedFiles: Array<{ name: string; size: string }> = [];\n selectedFilesMap: Map<number, { name: string; size: string }> = new Map();\n\n today: Date = new Date();\n groupedCommentsCache: GroupedComments[] = [];\n\n overlayVisible: boolean = false;\n filesOverlayVisible: boolean = false;\n overlayPosition = { top: 0, left: 0 };\n\n private dateUpdateInterval: any;\n\n // Keep track of should auto scroll\n private shouldAutoScroll = true;\n private isUserScrolling = false;\n\n // Add new property for mutation observer\n private observer: MutationObserver;\n private scrollQueued: boolean = false;\n\n constructor(\n private sanitizer: DomSanitizer,\n private ngZone: NgZone\n ) {\n this.updateCurrentDate();\n // Run the interval outside Angular to avoid frequent change detection in docs/canvas\n this.ngZone.runOutsideAngular(() => {\n this.dateUpdateInterval = setInterval(() => {\n this.ngZone.run(() => this.updateCurrentDate());\n }, 60000);\n });\n }\n\n ngAfterViewInit() {\n setTimeout(() => {\n this.forceScrollToBottom();\n }, 100);\n\n // Set up observer to auto-scroll when content changes (outside Angular)\n if (this.commentsList?.nativeElement) {\n this.ngZone.runOutsideAngular(() => {\n this.observer = new MutationObserver(() => {\n if (this.scrollQueued) return;\n this.scrollQueued = true;\n requestAnimationFrame(() => {\n this.forceScrollToBottom();\n this.scrollQueued = false;\n });\n });\n this.observer.observe(this.commentsList.nativeElement, {\n childList: true\n });\n });\n }\n }\n\n ngOnDestroy() {\n if (this.dateUpdateInterval) {\n clearInterval(this.dateUpdateInterval);\n }\n // Disconnect the observer\n if (this.observer) this.observer.disconnect();\n\n // Remove event listeners\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n private updateCurrentDate(): void {\n this.today = new Date();\n }\n\n formatDate(date: Date): string {\n return date.toLocaleDateString(undefined, {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: Intl.DateTimeFormat().resolvedOptions().timeZone\n });\n }\n\n formatMessageWithTags(text: string): SafeHtml {\n if (!text) return '';\n const sanitizedText = text.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');\n const htmlContent = sanitizedText.replace(/(@\\w+|#\\w+)/g, (match) => {\n if (match.startsWith('@')) {\n return `<span class=\"mention\" style=\"color: #0C4AF3; font-weight: 600;\">${match}</span>`;\n } else if (match.startsWith('#')) {\n return `<span class=\"hashtag\" style=\"color: #0C4AF3; font-weight: 600;\">${match}</span>`;\n }\n return match;\n });\n\n return this.sanitizer.bypassSecurityTrustHtml(htmlContent);\n }\n\n addComment() {\n if (this.newComment.trim() || this.selectedFiles.length > 0) {\n const newComment: Comment = {\n text: this.newComment,\n date: new Date(),\n files: this.selectedFiles.length > 0 ? [...this.selectedFiles] : undefined,\n isAdmin: this.isAdmin,\n sender: this.isAdmin ? 'System Admin' : 'User'\n };\n\n this.comments = [...this.comments, newComment];\n this.commentAdded.emit(newComment);\n this.newComment = '';\n this.selectedFiles = [];\n this.selectedFilesMap.clear();\n this.filesOverlayVisible = false;\n\n if (this.suggestionPanel?.nativeElement) {\n this.suggestionPanel.nativeElement.style.display = 'none';\n }\n\n // Always scroll to bottom immediately\n this.scrollToBottom(true);\n this.recomputeGroupedComments();\n }\n }\n\n private forceScrollToBottom(): void {\n if (!this.commentsList?.nativeElement) return;\n const element = this.commentsList.nativeElement;\n try {\n element.scrollTop = element.scrollHeight;\n } catch {\n // no-op\n }\n }\n\n private scrollToBottom(force = false): void {\n if (force) {\n this.forceScrollToBottom();\n return;\n }\n if (!this.commentsList?.nativeElement) return;\n\n const element = this.commentsList.nativeElement;\n\n // Single RAF to avoid nested scheduling overhead in Storybook\n requestAnimationFrame(() => {\n try {\n element.scrollTop = element.scrollHeight;\n element.scrollTo({ top: element.scrollHeight });\n } catch {\n element.scrollTop = element.scrollHeight;\n }\n });\n }\n\n @Input() set visible(value: boolean) {\n if (this._visible !== value) {\n this._visible = value;\n if (this._visible) {\n this.shouldAutoScroll = true;\n setTimeout(() => this.scrollToBottom(true), 300);\n }\n }\n }\n\n get visible(): boolean {\n return this._visible;\n }\n\n private _visible: boolean = false;\n\n toggleComments() {\n if (this._visible) {\n this.hideComments();\n } else {\n this.showComments();\n }\n }\n\n showComments() {\n if (!this._visible) {\n this._visible = true;\n this.visibleChange.emit(true);\n this.shouldAutoScroll = true;\n setTimeout(() => this.scrollToBottom(true), 300);\n }\n }\n\n hideComments() {\n if (this._visible) {\n this._visible = false;\n this.visibleChange.emit(false);\n this.onSidebarHide.emit();\n }\n }\n\n handleSidebarHide() {\n this.hideComments();\n }\n\n @HostListener('document:click', ['$event'])\n onDocumentClick(event: MouseEvent) {\n const target = event.target as HTMLElement;\n const isInputClick = this.inputText?.nativeElement?.contains(target);\n const isPanelClick = this.suggestionPanel?.nativeElement?.contains(target);\n\n if (!isInputClick && !isPanelClick) {\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n }\n }\n\n handleKeyUp(event: any): void {\n // Update cursor position on every key press\n const input = event.target;\n this.cursorPosition = input.selectionStart || 0;\n\n if (event.key === 'Escape') {\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n return;\n }\n\n if (event.key === '@' || event.key === '#') {\n this.currentTokenType = event.key === '@' ? 'mention' : 'hashtag';\n this.filteredSuggestions = this.currentTokenType === 'mention' ? this.mentionSuggestions : this.hashtagSuggestions;\n this.selectedSuggestionIndex = 0;\n\n const rect = input.getBoundingClientRect();\n const cursorPosition = this.getCursorPosition(input);\n\n this.overlayVisible = true;\n setTimeout(() => {\n const panel = this.suggestionPanel?.nativeElement;\n if (panel) {\n panel.style.left = `${rect.left + cursorPosition.left}px`;\n panel.style.top = `${rect.top - 10}px`;\n }\n });\n }\n\n if (this.currentTokenType) {\n const token = this.getTokenAtCursor(input.value, this.cursorPosition);\n if (token) {\n const searchTerm = token.slice(1).toLowerCase();\n this.filteredSuggestions = (this.currentTokenType === 'mention' ? this.mentionSuggestions : this.hashtagSuggestions).filter((item) => item.name.toLowerCase().includes(searchTerm) || item.id.toLowerCase().includes(searchTerm));\n\n if (this.filteredSuggestions.length > 0) {\n this.overlayVisible = true;\n // Only reset selection index if we have new suggestions\n if (this.selectedSuggestionIndex < 0 || this.selectedSuggestionIndex >= this.filteredSuggestions.length) {\n this.selectedSuggestionIndex = 0;\n }\n } else {\n this.overlayVisible = false;\n this.selectedSuggestionIndex = -1;\n }\n } else {\n this.overlayVisible = false;\n this.currentTokenType = null;\n }\n }\n }\n\n getTokenAtCursor(text: string, cursorPos: number): string | null {\n const beforeCursor = text.slice(0, cursorPos);\n const match = beforeCursor.match(/[@#][^\\s]*$/);\n return match ? match[0] : null;\n }\n\n getWordAtPosition(text: string, position: number): string {\n const left = text.slice(0, position).search(/[@#][^\\s]*$/);\n if (left === -1) return '';\n return text.slice(left, position);\n }\n\n selectSuggestion(suggestion: any) {\n const input = this.newComment;\n const wordStart = input.slice(0, this.cursorPosition).search(/[@#][^\\s]*$/);\n\n this.newComment = input.slice(0, wordStart) + suggestion.value + ' ' + input.slice(this.cursorPosition);\n\n this.isMentioning = false;\n this.isHashtagging = false;\n }\n\n onSuggestionSelect(item: any) {\n const input = this.newComment;\n const beforeCursor = input.slice(0, this.cursorPosition);\n const afterCursor = input.slice(this.cursorPosition);\n const lastTokenIndex = Math.max(beforeCursor.lastIndexOf('@'), beforeCursor.lastIndexOf('#'));\n\n if (lastTokenIndex >= 0) {\n // Insert the suggestion at the cursor position\n this.newComment = beforeCursor.slice(0, lastTokenIndex) + item.id + ' ' + afterCursor;\n }\n\n this.suggestionPanel.nativeElement.style.display = 'none';\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n this.selectedSuggestionIndex = -1;\n\n setTimeout(() => {\n const inputEl = this.inputText.nativeElement.querySelector('input');\n if (inputEl) {\n inputEl.focus();\n }\n });\n }\n\n onSuggestionPanelHide() {\n this.overlayVisible = false;\n this.currentTokenType = null;\n this.filteredSuggestions = [];\n this.selectedSuggestionIndex = -1;\n }\n\n getCursorPosition(input: HTMLInputElement): { left: number; top: number } {\n const selectionStart = input.selectionStart || 0;\n const textBeforeCursor = input.value.substring(0, selectionStart);\n const span = document.createElement('span');\n span.textContent = textBeforeCursor;\n span.style.cssText = window.getComputedStyle(input, null).cssText;\n span.style.visibility = 'hidden';\n document.body.appendChild(span);\n const position = {\n left: span.offsetWidth,\n top: span.offsetHeight\n };\n document.body.removeChild(span);\n return position;\n }\n\n onFileIconClick(event: Event): void {\n event?.preventDefault();\n event?.stopPropagation();\n if (this.fileInput?.nativeElement) {\n this.fileInput.nativeElement.click();\n }\n }\n\n onFileSelect(event: Event) {\n const input = event.target as HTMLInputElement;\n if (input.files && input.files.length > 0) {\n Array.from(input.files).forEach((file) => {\n // Check if file already exists in selection\n const fileExists = this.selectedFiles.some((existingFile) => existingFile.name === file.name && existingFile.size === this.formatFileSize(file.size));\n\n if (!fileExists) {\n const fileInfo = {\n name: file.name,\n size: this.formatFileSize(file.size)\n };\n this.selectedFiles.push(fileInfo);\n this.selectedFilesMap.set(this.selectedFiles.length - 1, fileInfo);\n this.fileSelected.emit(file);\n }\n });\n\n input.value = '';\n const inputEl = document.querySelector('.chat-input input');\n if (inputEl instanceof HTMLElement) {\n inputEl.focus();\n }\n }\n }\n\n private updateFileState(index: number, fromChip: boolean = true) {\n const actualIndex = fromChip ? index : index + 4;\n this.selectedFiles = this.selectedFiles.filter((_, i) => i !== actualIndex);\n this.selectedFilesMap.clear();\n this.selectedFiles.forEach((file, i) => {\n this.selectedFilesMap.set(i, file);\n });\n }\n\n removeFile(index: number, fromChip: boolean = true) {\n this.updateFileState(index, fromChip);\n if (this.selectedFiles.length <= 4) {\n this.hideFilesOverlay();\n }\n }\n\n getOverflowCount(): number {\n // Return count of files beyond the first 4\n return Math.max(0, this.selectedFiles.length - 4);\n }\n\n showFilesOverlay(event: MouseEvent) {\n const target = event.currentTarget as HTMLElement;\n const rect = target.getBoundingClientRect();\n\n // Position the overlay below the count chip\n this.overlayPosition = {\n top: rect.bottom + 5,\n left: rect.left - 250 + rect.width / 2 // Center the overlay horizontally\n };\n\n this.filesOverlayVisible = true;\n\n // Add a click outside listener to close the overlay\n setTimeout(() => {\n document.addEventListener('click', this.handleClickOutside);\n });\n }\n\n hideFilesOverlay() {\n this.filesOverlayVisible = false;\n document.removeEventListener('click', this.handleClickOutside);\n }\n\n private handleClickOutside = (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const overlay = document.querySelector('.files-overlay');\n const countChip = document.querySelector('.count-chip');\n\n if (overlay && !overlay.contains(target) && countChip && !countChip.contains(target)) {\n this.hideFilesOverlay();\n }\n };\n\n formatFileSize(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];\n }\n\n showSuggestions(_event: any, type: 'mention' | 'hashtag') {\n this.currentTokenType = type;\n this.filteredSuggestions = type === 'mention' ? this.mentionSuggestions : this.hashtagSuggestions;\n if (this.suggestionPanel) {\n this.suggestionPanel.nativeElement.style.display = 'block';\n }\n }\n onKeyDown(event: KeyboardEvent) {\n // If suggestions are visible, handle keyboard navigation\n if (this.overlayVisible && this.filteredSuggestions.length > 0) {\n switch (event.key) {\n case 'ArrowDown':\n event.preventDefault();\n this.selectedSuggestionIndex = Math.min(this.selectedSuggestionIndex + 1, this.filteredSuggestions.length - 1);\n this.scrollSuggestionIntoView();\n break;\n case 'ArrowUp':\n event.preventDefault();\n this.selectedSuggestionIndex = Math.max(this.selectedSuggestionIndex - 1, 0);\n this.scrollSuggestionIntoView();\n break;\n case 'Tab':\n event.preventDefault();\n if (event.shiftKey) {\n // Shift+Tab - move up\n this.selectedSuggestionIndex = Math.max(this.selectedSuggestionIndex - 1, 0);\n } else {\n // Tab - move down\n this.selectedSuggestionIndex = Math.min(this.selectedSuggestionIndex + 1, this.filteredSuggestions.length - 1);\n }\n this.scrollSuggestionIntoView();\n break;\n case 'Enter':\n event.preventDefault();\n if (this.selectedSuggestionIndex >= 0) {\n this.onSuggestionSelect(this.filteredSuggestions[this.selectedSuggestionIndex]);\n }\n break;\n case 'Escape':\n event.preventDefault();\n this.onSuggestionPanelHide();\n break;\n }\n return;\n }\n\n // If no suggestions are visible, handle normal enter key press\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n this.addComment();\n }\n }\n\n // Helper method to scroll the selected suggestion into view\n private scrollSuggestionIntoView(): void {\n setTimeout(() => {\n const suggestionList = this.suggestionPanel?.nativeElement.querySelector('.suggestion-list');\n const selectedItem = suggestionList?.querySelector('.suggestion-item.selected');\n\n if (suggestionList && selectedItem) {\n const listRect = suggestionList.getBoundingClientRect();\n const itemRect = selectedItem.getBoundingClientRect();\n\n // Check if the selected item is outside the visible area\n if (itemRect.bottom > listRect.bottom) {\n // Item is below the visible area\n selectedItem.scrollIntoView({ block: 'end', behavior: 'smooth' });\n } else if (itemRect.top < listRect.top) {\n // Item is above the visible area\n selectedItem.scrollIntoView({ block: 'start', behavior: 'smooth' });\n }\n }\n });\n }\n\n onFileDownload(file: { name: string; size: string }) {\n this.fileDownload.emit(file);\n }\n\n private recomputeGroupedComments(): void {\n const groups = this._comments.reduce((acc: GroupedComments[], comment: Comment) => {\n const commentDate = new Date(comment.date);\n commentDate.setHours(0, 0, 0, 0);\n\n const existingGroup = acc.find((group) => {\n const groupDate = new Date(group.date);\n groupDate.setHours(0, 0, 0, 0);\n return groupDate.getTime() === commentDate.getTime();\n });\n\n if (existingGroup) {\n existingGroup.items.push(comment);\n } else {\n acc.push({ date: commentDate, items: [comment] });\n }\n return acc;\n }, []);\n\n this.groupedCommentsCache = groups.sort((a, b) => a.date.getTime() - b.date.getTime());\n }\n\n getShortFileName(filename: string): string {\n if (filename.length <= 4) return filename;\n\n // Get file extension\n const lastDotIndex = filename.lastIndexOf('.');\n const extension = lastDotIndex !== -1 ? filename.substring(lastDotIndex) : '';\n\n // Truncate the name part and add the extension\n const namePart = filename.substring(0, lastDotIndex !== -1 ? lastDotIndex : filename.length);\n return namePart.substring(0, 4) + '..' + extension;\n }\n}\n","<div *ngIf=\"visible\" class=\"cax-commentbox-wrapper\">\n <!-- <ng-template caxTemplate=\"content\"> -->\n <div class=\"cax-commentbox-container\">\n <div class=\"cax-commentbox-list\" #commentsList>\n <ng-container *ngFor=\"let group of groupedCommentsCache\">\n <div class=\"cax-date-header\">{{ formatDate(group.date) }}</div>\n <div\n class=\"cax-comment-item\"\n *ngFor=\"let comment of group.items; let i = index\"\n [ngClass]=\"{\n 'cax-user-comment': !comment.isAdmin,\n 'cax-admin-comment': comment.isAdmin,\n 'consecutive-message': i > 0 && comment.isAdmin === group.items[i-1].isAdmin && comment.sender === group.items[i-1].sender,\n 'new-sender': i > 0 && comment.sender !== group.items[i-1].sender,\n 'new-date': i === 0 && group.items.length > 0\n }\"\n >\n <!-- User Message (Left Aligned) -->\n <ng-container *ngIf=\"!comment.isAdmin\">\n <div class=\"cax-commentbox-avatar-container\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">\n <cax-avatar [label]=\"comment.sender?.substring(0, 2).toUpperCase() || 'U'\" [avatarSize]=\"'xs'\" [shape]=\"'circle'\" styleclass=\"cax-commentbox-avatar\"> </cax-avatar>\n </div>\n <div class=\"cax-comment-content\" [class.no-avatar]=\"i > 0 && group.items[i-1].sender === comment.sender\">\n <div class=\"cax-comment-sender\" *ngIf=\"i === 0 || group.items[i-1].sender !== comment.sender\">{{comment.sender}}</div>\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\n <div class=\"file-details\">\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\n <span class=\"file-size\">{{file.size}}</span>\n </div>\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\n </div>\n </div>\n <div class=\"cax-comment-message-container\">\n <span class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></span>\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\n </div>\n </div>\n </ng-container>\n\n <!-- Admin Message (Right Aligned) -->\n <ng-container *ngIf=\"comment.isAdmin\">\n <div class=\"cax-comment-content admin\">\n <div class=\"cax-file-attachment\" *ngIf=\"comment.files?.length\">\n <div *ngFor=\"let file of comment.files\" class=\"file-item\">\n <div class=\"file-details\">\n <span class=\"file-name\">{{ file.name.slice(0, 20) }}{{ file.name.includes('.') ? '.' + file.name.split('.').pop() : '' }}</span>\n <span class=\"file-size\">{{file.size}}</span>\n </div>\n <i class=\"cax cax-download\" (click)=\"onFileDownload(file)\" role=\"button\" tabindex=\"0\"></i>\n </div>\n </div>\n <div class=\"cax-comment-message-container\">\n <span class=\"cax-comment-text\" [innerHTML]=\"formatMessageWithTags(comment.text)\"></span>\n <span class=\"cax-comment-date\">{{ comment.date | date: 'shortTime' }}</span>\n </div>\n </div>\n </ng-container>\n </div>\n </ng-container>\n </div>\n </div>\n <!-- </ng-template> -->\n <cax-overlay #suggestionPanel [(visible)]=\"overlayVisible\" [appendTo]=\"inputText\" (onHide)=\"onSuggestionPanelHide()\" [styleClass]=\"'suggestion-panel'\">\n <div class=\"suggestion-list\">\n <div *ngFor=\"let item of filteredSuggestions; let i = index\" class=\"suggestion-item\" [ngClass]=\"{'selected': selectedSuggestionIndex === i}\" (click)=\"onSuggestionSelect(item)\" (mouseenter)=\"selectedSuggestionIndex = i\">\n <span class=\"suggestion-label\">{{item.name}}</span>\n <small class=\"suggestion-id\" *ngIf=\"currentTokenType === 'mention'\">{{item.id}}</small>\n </div>\n </div>\n </cax-overlay>\n <cax-overlay\n [(visible)]=\"filesOverlayVisible\"\n [appendTo]=\"countChip\"\n [showTransitionOptions]=\"'0.12s ease-out'\"\n [hideTransitionOptions]=\"'0.1s ease-in'\"\n [style]=\"{ width: '224px', right: '5%' }\"\n styleClass=\"files-list-overlay\"\n (onHide)=\"hideFilesOverlay()\"\n >\n <div class=\"files-overlay-content\">\n <div *ngFor=\"let file of selectedFiles.slice(4); let i = index\" class=\"file-item\">\n <span class=\"file-name\">{{getShortFileName(file.name)}}</span>\n <i class=\"cax cax-close-circle\" (click)=\"removeFile(i + 4)\"></i>\n </div>\n </div>\n </cax-overlay>\n\n <!-- <ng-template caxTemplate=\"footer\"> -->\n <div class=\"chat-footer\">\n <div class=\"selected-files\" *ngIf=\"selectedFiles.length > 0\">\n <cax-chip *ngFor=\"let file of selectedFiles.slice(0, 4); let i = index\" [label]=\"getShortFileName(file.name)\" [removable]=\"true\" [size]=\"'lg'\" (onRemove)=\"removeFile(i, true)\">\n <ng-template caxTemplate=\"content\">\n <i class=\"cax cax-paperclip\"></i>\n </ng-template>\n </cax-chip>\n <cax-chip #countChip *ngIf=\"selectedFiles.length > 4\" [label]=\"'+' + getOverflowCount()\" [size]=\"'lg'\" (mouseenter)=\"showFilesOverlay($event)\"> </cax-chip>\n </div>\n <div class=\"cax-chat-input-container\">\n <div class=\"input-wrapper\">\n <cax-inputtext\n [(ngModel)]=\"newComment\"\n [size]=\"'lg'\"\n [rightIcon]=\"true\"\n [clearIcon]=\"false\"\n [rightIconClass]=\"'cax cax-paperclip'\"\n [rightIconClickable]=\"true\"\n (rightIconClick)=\"onFileIconClick($event)\"\n [placeholder]=\"placeholder\"\n (keyup)=\"handleKeyUp($event)\"\n (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{'chat-input': true, 'admin-input': isAdmin}\"\n [style]=\"{'border-radius': '8px', background: '#ffffff'}\"\n #inputText\n >\n </cax-inputtext>\n </div>\n\n <cax-button [icon]=\"'cax cax-plain'\" [severity]=\"'primary'\" [size]=\"'large'\" (click)=\"addComment()\" [disabled]=\"!newComment.trim() && selectedFiles.length === 0\" class=\"send-button\"> </cax-button>\n </div>\n\n <input #fileInput type=\"file\" (change)=\"onFileSelect($event)\" style=\"display: none\" accept=\"*/*\" multiple />\n </div>\n <!-- </ng-template> -->\n</div>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { FormsModule } from '@angular/forms';\nimport { CommentboxComponent } from './commentbox';\nimport { InputTextModule } from 'cax-design-system/inputtext';\nimport { ButtonModule } from 'cax-design-system/button';\nimport { ChipModule } from 'cax-design-system/chip';\nimport { OverlayModule } from 'cax-design-system/overlay';\nimport { AvatarModule } from 'cax-design-system/avatar';\nimport { SharedModule } from 'cax-design-system/api';\nimport { RippleModule } from 'cax-design-system/ripple';\nimport { Sidebar } from 'cax-design-system/sidebar';\n\n@NgModule({\n declarations: [CommentboxComponent],\n imports: [CommonModule, FormsModule, Sidebar, InputTextModule, ButtonModule, ChipModule, OverlayModule, AvatarModule, RippleModule, SharedModule],\n exports: [CommentboxComponent]\n})\nexport class CommentboxModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}
@@ -109,7 +109,7 @@ class CommentsComponent {
109
109
  processedMessage = processedMessage.replace(/<p><\/p>/g, '<br/>');
110
110
  processedMessage = processedMessage.replace(/<p>&nbsp;<\/p>/g, '<br/>');
111
111
  // Extract and validate mentions
112
- this._mentionSuggestions.forEach((suggestion) => {
112
+ this._mentionSuggestions?.forEach((suggestion) => {
113
113
  const username = suggestion.userName;
114
114
  // Only wrap if not already wrapped in the mention span
115
115
  // This regex checks for @username NOT preceded by the mention span start tag
@@ -117,7 +117,7 @@ class CommentsComponent {
117
117
  processedMessage = processedMessage.replace(regex, `<span class="cax-comment-mention">@${username}</span>`);
118
118
  });
119
119
  // Extract and validate hashtags
120
- this._hashTagSuggestions.forEach((tag) => {
120
+ this._hashTagSuggestions?.forEach((tag) => {
121
121
  // Only wrap if not already wrapped in the hashtag span
122
122
  const regex = new RegExp(`(?<!class="cax-comment-hashtag">)#${tag}\\b`, 'g');
123
123
  processedMessage = processedMessage.replace(regex, `<span class="cax-comment-hashtag">#${tag}</span>`);
@@ -264,10 +264,10 @@ class CommentsComponent {
264
264
  this.filteredSuggestions = this.suggestionType === '@' ? [...this._mentionSuggestions] : [...this._hashTagSuggestions];
265
265
  }
266
266
  else if (this.suggestionType === '@') {
267
- this.filteredSuggestions = this._mentionSuggestions.filter((s) => s.firstName.toLowerCase().includes(term) || s.lastName.toLowerCase().includes(term) || s.userName.toLowerCase().includes(term));
267
+ this.filteredSuggestions = this._mentionSuggestions?.filter((s) => s.firstName.toLowerCase().includes(term) || s.lastName.toLowerCase().includes(term) || s.userName.toLowerCase().includes(term));
268
268
  }
269
269
  else {
270
- this.filteredSuggestions = this._hashTagSuggestions.filter((s) => s.toLowerCase().includes(term));
270
+ this.filteredSuggestions = this._hashTagSuggestions?.filter((s) => s.toLowerCase().includes(term));
271
271
  }
272
272
  if (this.filteredSuggestions.length === 0 && searchTerm !== '') {
273
273
  this.hideSuggestions();
@@ -331,10 +331,10 @@ class CommentsComponent {
331
331
  this.visibilityObserver.observe(this.scrollContainer.nativeElement);
332
332
  }
333
333
  }
334
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: CommentsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
335
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.21", type: CommentsComponent, isStandalone: true, selector: "cax-comments", inputs: { comments: "comments", commentPlaceholder: "commentPlaceholder", mentionSuggestions: "mentionSuggestions", hashTagSuggestions: "hashTagSuggestions", acceptedFiles: "acceptedFiles" }, outputs: { onSendComment: "onSendComment", onFileSelect: "onFileSelect", onDownloadFile: "onDownloadFile" }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "suggestionOverlay", first: true, predicate: ["suggestionOverlay"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], ngImport: i0, template: "<div class=\"cax-comments\">\n <div class=\"cax-comments-container\" #scrollContainer>\n <div class=\"cax-comments-empty\" *ngIf=\"groupedComments.length === 0\">\n <i class=\"cax cax-chat-line-bold\"></i>\n <div>\n <span class=\"cax-text-action-md-medium\">No comments yet</span>\n <span class=\"cax-text-action-sm-regular\">You can post a comment here to start the conversation. All feedback and discussions will appear here.</span>\n </div>\n </div>\n <div class=\"cax-comments-group\" *ngFor=\"let group of groupedComments\">\n <div class=\"cax-comments-date\">\n <span class=\"cax-text-action-xsm-semibold\">{{ group.date | date: 'MMM d, y' }}</span>\n </div>\n <div class=\"cax-comment-row\" *ngFor=\"let comment of group.comments; let i = index\" [class.current-user]=\"comment.currentUser\" [class.consecutive]=\"isConsecutive(group.comments, i)\">\n <div class=\"cax-avatar-container\" *ngIf=\"!comment.currentUser\">\n <cax-avatar *ngIf=\"isLastInGroup(group.comments, i); else avatarSpacer\" [label]=\"getInitials(comment.author)\" shape=\"square\" avatarSize=\"sm\"></cax-avatar>\n <ng-template #avatarSpacer>\n <div class=\"avatar-spacer\"></div>\n </ng-template>\n </div>\n <div class=\"cax-comment-bubble\">\n <div class=\"cax-comment-message-container\">\n <span class=\"cax-comment-username cax-text-body-sm-semibold\" *ngIf=\"!comment.currentUser\">{{ comment.author?.firstName }} {{ comment.author?.lastName }}</span>\n <div class=\"cax-comment-attachments\" *ngIf=\"comment.attachments?.length\">\n <div *ngFor=\"let file of comment.attachments\" class=\"cax-comment-file-preview\">\n <span class=\"cax-comment-file-name cax-text-action-md-medium\">{{ file.name }}</span>\n <span class=\"cax-comment-file-size cax-text-action-sm-medium\">{{ formatBytes(file.size) }}</span>\n <span class=\"cax cax-download cax-comment-file-download\" (click)=\"onDownload(file)\"></span>\n </div>\n </div>\n <span class=\"cax-comment-message cax-text-body-md-regular\" [innerHTML]=\"comment.message\"></span>\n <span class=\"cax-comment-time cax-text-action-sm-medium\">{{ comment.timestamp | date: 'shortTime' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cax-comment-bar\">\n <div class=\"cax-comment-input-wrapper\" [class.toolbar-hidden]=\"!isRichText\" (keydown)=\"onEditorKeyDown($event)\">\n <cax-editor #editor [placeholder]=\"commentPlaceholder\" [style]=\"{ maxHeight: '300px' }\" [(ngModel)]=\"commentValue\" (onTextChange)=\"onEditorTextChange($event)\">\n <ng-template caxTemplate=\"header\">\n <span class=\"ql-formats\">\n <button type=\"button\" class=\"ql-bold\" aria-label=\"Bold\"></button>\n <button type=\"button\" class=\"ql-italic\" aria-label=\"Italic\"></button>\n <button type=\"button\" class=\"ql-underline\" aria-label=\"Underline\"></button>\n <button type=\"button\" class=\"ql-list\" value=\"bullet\" aria-label=\"Bullet List\"></button>\n <button type=\"button\" class=\"ql-link\" aria-label=\"Insert Link\"></button>\n <button type=\"button\" class=\"ql-image\" aria-label=\"Insert Image\"></button>\n <button type=\"button\" class=\"ql-code-block\" aria-label=\"Code Block\"></button>\n </span>\n </ng-template>\n </cax-editor>\n <div class=\"cax-comment-input-footer\">\n <div class=\"cax-comment-attached-files\">\n <div class=\"cax-comment-attached-file\" *ngFor=\"let file of attachedFiles; let i = index\">\n <span class=\"file-name cax-text-action-md-medium\">{{ file.name }}</span>\n <i class=\"cax cax-close\" (click)=\"removeAttachedFile(i)\"></i>\n </div>\n </div>\n <div class=\"cax-comment-bar-actions\">\n <div (click)=\"toggleRichText()\" [class.active]=\"isRichText\">\n <i class=\"cax cax-text-icon\"></i>\n </div>\n <div (click)=\"fileInput.click()\">\n <i class=\"cax cax-paperclip\"></i>\n <input type=\"file\" #fileInput [accept]=\"acceptFileTypes\" style=\"display: none\" (change)=\"onFileSelected($event)\" multiple />\n </div>\n </div>\n </div>\n </div>\n <div class=\"cax-comment-bar-actions\">\n <cax-button [icon]=\"'cax cax-plain'\" [rounded]=\"true\" [size]=\"'lg'\" [disabled]=\"!commentValue && attachedFiles.length === 0\" (click)=\"onSendMessage()\"></cax-button>\n </div>\n </div>\n\n <cax-overlayPanel styleClass=\"cax-comments-suggestion-overlay\" #suggestionOverlay [style]=\"{ width: '250px', 'max-height': '300px' }\" (onHide)=\"hideSuggestions()\">\n <div class=\"cax-comments-suggestion-list\">\n <div class=\"cax-comments-suggestion-item\" *ngFor=\"let item of filteredSuggestions\" (mousedown)=\"$event.preventDefault(); onSuggestionSelect(item)\">\n <ng-container *ngIf=\"suggestionType === '@'\">\n <cax-avatar [label]=\"getInitials(item)\" shape=\"circle\" avatarSize=\"sm\"></cax-avatar>\n <div class=\"cax-comments-suggestion-info\">\n <span class=\"cax-comments-suggestion-label\">{{ item.firstName }} {{ item.lastName }}</span>\n <span class=\"cax-comments-suggestion-subtext\">&#64;{{ item.userName }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"suggestionType === '#'\">\n <div class=\"cax-comments-suggestion-info\">\n <span class=\"cax-comments-suggestion-label\">{{ item }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </cax-overlayPanel>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }, { kind: "component", type: Avatar, selector: "cax-avatar", inputs: ["label", "icon", "image", "avatarSize", "shape", "style", "styleClass", "textColor", "backgroundColor", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "cax-button", inputs: ["type", "iconPos", "icon", "badge", "rightIcon", "leftIcon", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.CaxTemplate, selector: "[caxTemplate]", inputs: ["type", "caxTemplate"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i4.Editor, selector: "cax-editor", inputs: ["style", "styleClass", "placeholder", "disabled", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayPanelModule }, { kind: "component", type: i6.OverlayPanel, selector: "cax-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "variant", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ListboxModule }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: ChipModule }] });
334
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CommentsComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
335
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.25", type: CommentsComponent, isStandalone: true, selector: "cax-comments", inputs: { comments: "comments", commentPlaceholder: "commentPlaceholder", mentionSuggestions: "mentionSuggestions", hashTagSuggestions: "hashTagSuggestions", acceptedFiles: "acceptedFiles" }, outputs: { onSendComment: "onSendComment", onFileSelect: "onFileSelect", onDownloadFile: "onDownloadFile" }, viewQueries: [{ propertyName: "scrollContainer", first: true, predicate: ["scrollContainer"], descendants: true }, { propertyName: "suggestionOverlay", first: true, predicate: ["suggestionOverlay"], descendants: true }, { propertyName: "editor", first: true, predicate: ["editor"], descendants: true }], ngImport: i0, template: "<div class=\"cax-comments\">\n <div class=\"cax-comments-container\" #scrollContainer>\n <div class=\"cax-comments-empty\" *ngIf=\"groupedComments.length === 0\">\n <i class=\"cax cax-chat-line-bold\"></i>\n <div>\n <span class=\"cax-text-action-md-medium\">No comments yet</span>\n <span class=\"cax-text-action-sm-regular\">You can post a comment here to start the conversation. All feedback and discussions will appear here.</span>\n </div>\n </div>\n <div class=\"cax-comments-group\" *ngFor=\"let group of groupedComments\">\n <div class=\"cax-comments-date\">\n <span class=\"cax-text-action-xsm-semibold\">{{ group.date | date: 'MMM d, y' }}</span>\n </div>\n <div class=\"cax-comment-row\" *ngFor=\"let comment of group.comments; let i = index\" [class.current-user]=\"comment.currentUser\" [class.consecutive]=\"isConsecutive(group.comments, i)\">\n <div class=\"cax-avatar-container\" *ngIf=\"!comment.currentUser\">\n <cax-avatar *ngIf=\"isLastInGroup(group.comments, i); else avatarSpacer\" [label]=\"getInitials(comment.author)\" shape=\"square\" avatarSize=\"sm\"></cax-avatar>\n <ng-template #avatarSpacer>\n <div class=\"avatar-spacer\"></div>\n </ng-template>\n </div>\n <div class=\"cax-comment-bubble\">\n <div class=\"cax-comment-message-container\">\n <span class=\"cax-comment-username cax-text-body-sm-semibold\" *ngIf=\"!comment.currentUser\">{{ comment.author?.firstName }} {{ comment.author?.lastName }}</span>\n <div class=\"cax-comment-attachments\" *ngIf=\"comment.attachments?.length\">\n <div *ngFor=\"let file of comment.attachments\" class=\"cax-comment-file-preview\">\n <span class=\"cax-comment-file-name cax-text-action-md-medium\">{{ file.name }}</span>\n <span class=\"cax-comment-file-size cax-text-action-sm-medium\">{{ formatBytes(file.size) }}</span>\n <span class=\"cax cax-download cax-comment-file-download\" (click)=\"onDownload(file)\"></span>\n </div>\n </div>\n <span class=\"cax-comment-message cax-text-body-md-regular\" [innerHTML]=\"comment.message\"></span>\n <span class=\"cax-comment-time cax-text-action-sm-medium\">{{ comment.timestamp | date: 'shortTime' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cax-comment-bar\">\n <div class=\"cax-comment-input-wrapper\" [class.toolbar-hidden]=\"!isRichText\" (keydown)=\"onEditorKeyDown($event)\">\n <cax-editor #editor [placeholder]=\"commentPlaceholder\" [style]=\"{ maxHeight: '300px' }\" [(ngModel)]=\"commentValue\" (onTextChange)=\"onEditorTextChange($event)\">\n <ng-template caxTemplate=\"header\">\n <span class=\"ql-formats\">\n <button type=\"button\" class=\"ql-bold\" aria-label=\"Bold\"></button>\n <button type=\"button\" class=\"ql-italic\" aria-label=\"Italic\"></button>\n <button type=\"button\" class=\"ql-underline\" aria-label=\"Underline\"></button>\n <button type=\"button\" class=\"ql-list\" value=\"bullet\" aria-label=\"Bullet List\"></button>\n <button type=\"button\" class=\"ql-link\" aria-label=\"Insert Link\"></button>\n <button type=\"button\" class=\"ql-image\" aria-label=\"Insert Image\"></button>\n <button type=\"button\" class=\"ql-code-block\" aria-label=\"Code Block\"></button>\n </span>\n </ng-template>\n </cax-editor>\n <div class=\"cax-comment-input-footer\">\n <div class=\"cax-comment-attached-files\">\n <div class=\"cax-comment-attached-file\" *ngFor=\"let file of attachedFiles; let i = index\">\n <span class=\"file-name cax-text-action-md-medium\">{{ file.name }}</span>\n <i class=\"cax cax-close\" (click)=\"removeAttachedFile(i)\"></i>\n </div>\n </div>\n <div class=\"cax-comment-bar-actions\">\n <div (click)=\"toggleRichText()\" [class.active]=\"isRichText\">\n <i class=\"cax cax-text-icon\"></i>\n </div>\n <div (click)=\"fileInput.click()\">\n <i class=\"cax cax-paperclip\"></i>\n <input type=\"file\" #fileInput [accept]=\"acceptFileTypes\" style=\"display: none\" (change)=\"onFileSelected($event)\" multiple />\n </div>\n </div>\n </div>\n </div>\n <div class=\"cax-comment-bar-actions\">\n <cax-button [icon]=\"'cax cax-plain'\" [rounded]=\"true\" [size]=\"'lg'\" [disabled]=\"!commentValue && attachedFiles.length === 0\" (click)=\"onSendMessage()\"></cax-button>\n </div>\n </div>\n\n <cax-overlayPanel styleClass=\"cax-comments-suggestion-overlay\" #suggestionOverlay [style]=\"{ width: '250px', 'max-height': '300px' }\" (onHide)=\"hideSuggestions()\">\n <div class=\"cax-comments-suggestion-list\">\n <div class=\"cax-comments-suggestion-item\" *ngFor=\"let item of filteredSuggestions\" (mousedown)=\"$event.preventDefault(); onSuggestionSelect(item)\">\n <ng-container *ngIf=\"suggestionType === '@'\">\n <cax-avatar [label]=\"getInitials(item)\" shape=\"circle\" avatarSize=\"sm\"></cax-avatar>\n <div class=\"cax-comments-suggestion-info\">\n <span class=\"cax-comments-suggestion-label\">{{ item.firstName }} {{ item.lastName }}</span>\n <span class=\"cax-comments-suggestion-subtext\">&#64;{{ item.userName }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"suggestionType === '#'\">\n <div class=\"cax-comments-suggestion-info\">\n <span class=\"cax-comments-suggestion-label\">{{ item }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </cax-overlayPanel>\n</div>\n", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: Avatar, selector: "cax-avatar", inputs: ["label", "icon", "image", "avatarSize", "shape", "style", "styleClass", "textColor", "backgroundColor", "ariaLabel", "ariaLabelledBy"], outputs: ["onImageError"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "cax-button", inputs: ["type", "iconPos", "icon", "badge", "rightIcon", "leftIcon", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.CaxTemplate, selector: "[caxTemplate]", inputs: ["type", "caxTemplate"] }, { kind: "ngmodule", type: EditorModule }, { kind: "component", type: i4.Editor, selector: "cax-editor", inputs: ["style", "styleClass", "placeholder", "disabled", "formats", "modules", "bounds", "scrollingContainer", "debug", "readonly"], outputs: ["onInit", "onTextChange", "onSelectionChange"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i5.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i5.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: OverlayPanelModule }, { kind: "component", type: i6.OverlayPanel, selector: "cax-overlayPanel", inputs: ["ariaLabel", "ariaLabelledBy", "dismissable", "showCloseIcon", "style", "styleClass", "appendTo", "autoZIndex", "ariaCloseLabel", "baseZIndex", "variant", "focusOnShow", "showTransitionOptions", "hideTransitionOptions"], outputs: ["onShow", "onHide"] }, { kind: "ngmodule", type: ListboxModule }, { kind: "ngmodule", type: SharedModule }, { kind: "ngmodule", type: ChipModule }, { kind: "pipe", type: i1.DatePipe, name: "date" }] });
336
336
  }
337
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: CommentsComponent, decorators: [{
337
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CommentsComponent, decorators: [{
338
338
  type: Component,
339
339
  args: [{ selector: 'cax-comments', standalone: true, imports: [CommonModule, Avatar, ButtonModule, EditorModule, FormsModule, OverlayPanelModule, ListboxModule, SharedModule, ChipModule], template: "<div class=\"cax-comments\">\n <div class=\"cax-comments-container\" #scrollContainer>\n <div class=\"cax-comments-empty\" *ngIf=\"groupedComments.length === 0\">\n <i class=\"cax cax-chat-line-bold\"></i>\n <div>\n <span class=\"cax-text-action-md-medium\">No comments yet</span>\n <span class=\"cax-text-action-sm-regular\">You can post a comment here to start the conversation. All feedback and discussions will appear here.</span>\n </div>\n </div>\n <div class=\"cax-comments-group\" *ngFor=\"let group of groupedComments\">\n <div class=\"cax-comments-date\">\n <span class=\"cax-text-action-xsm-semibold\">{{ group.date | date: 'MMM d, y' }}</span>\n </div>\n <div class=\"cax-comment-row\" *ngFor=\"let comment of group.comments; let i = index\" [class.current-user]=\"comment.currentUser\" [class.consecutive]=\"isConsecutive(group.comments, i)\">\n <div class=\"cax-avatar-container\" *ngIf=\"!comment.currentUser\">\n <cax-avatar *ngIf=\"isLastInGroup(group.comments, i); else avatarSpacer\" [label]=\"getInitials(comment.author)\" shape=\"square\" avatarSize=\"sm\"></cax-avatar>\n <ng-template #avatarSpacer>\n <div class=\"avatar-spacer\"></div>\n </ng-template>\n </div>\n <div class=\"cax-comment-bubble\">\n <div class=\"cax-comment-message-container\">\n <span class=\"cax-comment-username cax-text-body-sm-semibold\" *ngIf=\"!comment.currentUser\">{{ comment.author?.firstName }} {{ comment.author?.lastName }}</span>\n <div class=\"cax-comment-attachments\" *ngIf=\"comment.attachments?.length\">\n <div *ngFor=\"let file of comment.attachments\" class=\"cax-comment-file-preview\">\n <span class=\"cax-comment-file-name cax-text-action-md-medium\">{{ file.name }}</span>\n <span class=\"cax-comment-file-size cax-text-action-sm-medium\">{{ formatBytes(file.size) }}</span>\n <span class=\"cax cax-download cax-comment-file-download\" (click)=\"onDownload(file)\"></span>\n </div>\n </div>\n <span class=\"cax-comment-message cax-text-body-md-regular\" [innerHTML]=\"comment.message\"></span>\n <span class=\"cax-comment-time cax-text-action-sm-medium\">{{ comment.timestamp | date: 'shortTime' }}</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"cax-comment-bar\">\n <div class=\"cax-comment-input-wrapper\" [class.toolbar-hidden]=\"!isRichText\" (keydown)=\"onEditorKeyDown($event)\">\n <cax-editor #editor [placeholder]=\"commentPlaceholder\" [style]=\"{ maxHeight: '300px' }\" [(ngModel)]=\"commentValue\" (onTextChange)=\"onEditorTextChange($event)\">\n <ng-template caxTemplate=\"header\">\n <span class=\"ql-formats\">\n <button type=\"button\" class=\"ql-bold\" aria-label=\"Bold\"></button>\n <button type=\"button\" class=\"ql-italic\" aria-label=\"Italic\"></button>\n <button type=\"button\" class=\"ql-underline\" aria-label=\"Underline\"></button>\n <button type=\"button\" class=\"ql-list\" value=\"bullet\" aria-label=\"Bullet List\"></button>\n <button type=\"button\" class=\"ql-link\" aria-label=\"Insert Link\"></button>\n <button type=\"button\" class=\"ql-image\" aria-label=\"Insert Image\"></button>\n <button type=\"button\" class=\"ql-code-block\" aria-label=\"Code Block\"></button>\n </span>\n </ng-template>\n </cax-editor>\n <div class=\"cax-comment-input-footer\">\n <div class=\"cax-comment-attached-files\">\n <div class=\"cax-comment-attached-file\" *ngFor=\"let file of attachedFiles; let i = index\">\n <span class=\"file-name cax-text-action-md-medium\">{{ file.name }}</span>\n <i class=\"cax cax-close\" (click)=\"removeAttachedFile(i)\"></i>\n </div>\n </div>\n <div class=\"cax-comment-bar-actions\">\n <div (click)=\"toggleRichText()\" [class.active]=\"isRichText\">\n <i class=\"cax cax-text-icon\"></i>\n </div>\n <div (click)=\"fileInput.click()\">\n <i class=\"cax cax-paperclip\"></i>\n <input type=\"file\" #fileInput [accept]=\"acceptFileTypes\" style=\"display: none\" (change)=\"onFileSelected($event)\" multiple />\n </div>\n </div>\n </div>\n </div>\n <div class=\"cax-comment-bar-actions\">\n <cax-button [icon]=\"'cax cax-plain'\" [rounded]=\"true\" [size]=\"'lg'\" [disabled]=\"!commentValue && attachedFiles.length === 0\" (click)=\"onSendMessage()\"></cax-button>\n </div>\n </div>\n\n <cax-overlayPanel styleClass=\"cax-comments-suggestion-overlay\" #suggestionOverlay [style]=\"{ width: '250px', 'max-height': '300px' }\" (onHide)=\"hideSuggestions()\">\n <div class=\"cax-comments-suggestion-list\">\n <div class=\"cax-comments-suggestion-item\" *ngFor=\"let item of filteredSuggestions\" (mousedown)=\"$event.preventDefault(); onSuggestionSelect(item)\">\n <ng-container *ngIf=\"suggestionType === '@'\">\n <cax-avatar [label]=\"getInitials(item)\" shape=\"circle\" avatarSize=\"sm\"></cax-avatar>\n <div class=\"cax-comments-suggestion-info\">\n <span class=\"cax-comments-suggestion-label\">{{ item.firstName }} {{ item.lastName }}</span>\n <span class=\"cax-comments-suggestion-subtext\">&#64;{{ item.userName }}</span>\n </div>\n </ng-container>\n <ng-container *ngIf=\"suggestionType === '#'\">\n <div class=\"cax-comments-suggestion-info\">\n <span class=\"cax-comments-suggestion-label\">{{ item }}</span>\n </div>\n </ng-container>\n </div>\n </div>\n </cax-overlayPanel>\n</div>\n" }]
340
340
  }], ctorParameters: () => [{ type: i0.ChangeDetectorRef }], propDecorators: { scrollContainer: [{
@@ -365,11 +365,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImpo
365
365
  }] } });
366
366
 
367
367
  class CommentsModule {
368
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: CommentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
369
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.21", ngImport: i0, type: CommentsModule, imports: [CommentsComponent], exports: [CommentsComponent] });
370
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: CommentsModule, imports: [CommentsComponent] });
368
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CommentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
369
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.25", ngImport: i0, type: CommentsModule, imports: [CommentsComponent], exports: [CommentsComponent] });
370
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CommentsModule, imports: [CommentsComponent] });
371
371
  }
372
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: CommentsModule, decorators: [{
372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.25", ngImport: i0, type: CommentsModule, decorators: [{
373
373
  type: NgModule,
374
374
  args: [{
375
375
  imports: [CommentsComponent],