@uzum-tech/ui 1.11.2 → 1.12.1

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 (547) hide show
  1. package/dist/index.js +54230 -49889
  2. package/dist/index.prod.js +4 -4
  3. package/es/_internal/close/src/Close.d.ts +2 -2
  4. package/es/_internal/icons/BurgerMenuIcon.d.ts +2 -0
  5. package/es/_internal/icons/BurgerMenuIcon.js +4 -0
  6. package/es/_internal/icons/Logout.d.ts +2 -0
  7. package/es/_internal/icons/Logout.js +4 -0
  8. package/es/_internal/icons/OzbekFlag.d.ts +2 -0
  9. package/es/_internal/icons/OzbekFlag.js +15 -0
  10. package/es/_internal/icons/RussiaFlag.d.ts +2 -0
  11. package/es/_internal/icons/RussiaFlag.js +11 -0
  12. package/es/_internal/icons/SendFilled.d.ts +2 -0
  13. package/es/_internal/icons/SendFilled.js +9 -0
  14. package/es/_internal/icons/index.d.ts +5 -0
  15. package/es/_internal/icons/index.js +5 -0
  16. package/es/_internal/loading/src/Loading.d.ts +1 -1
  17. package/es/_internal/safe-top-scrollbar/src/SafeTopScrollbar.d.ts +2 -2
  18. package/es/_internal/scrollbar/src/Scrollbar.d.ts +2 -2
  19. package/es/_internal/select-menu/src/SelectMenu.d.ts +7 -7
  20. package/es/_internal/selection/src/Selection.d.ts +13 -13
  21. package/es/_internal/skeleton/src/Skeleton.d.ts +1 -1
  22. package/es/_internal/typography/index.d.ts +1 -0
  23. package/es/_internal/typography/src/text.d.ts +42 -3
  24. package/es/_internal/typography/src/text.js +17 -4
  25. package/es/_internal/typography/src/variants.d.ts +105 -4
  26. package/es/_internal/typography/src/variants.js +84 -42
  27. package/es/_internal/typography/styles/dark.js +1 -1
  28. package/es/_internal/typography/styles/light.d.ts +1 -1
  29. package/es/_internal/typography/styles/light.js +1 -1
  30. package/es/_styles/common/dark.js +1 -1
  31. package/es/_styles/common/light.d.ts +1 -0
  32. package/es/_styles/common/light.js +1 -1
  33. package/es/affix/src/Affix.d.ts +3 -3
  34. package/es/alert/src/Alert.d.ts +3 -3
  35. package/es/anchor/src/AnchorAdapter.d.ts +5 -5
  36. package/es/auto-complete/src/AutoComplete.d.ts +3 -3
  37. package/es/avatar/src/Avatar.d.ts +1 -1
  38. package/es/avatar-group/src/AvatarGroup.d.ts +1 -1
  39. package/es/back-top/src/BackTop.d.ts +1 -1
  40. package/es/badge/src/Badge.d.ts +1 -1
  41. package/es/button/src/Button.d.ts +7 -7
  42. package/es/card/src/Card.d.ts +3 -3
  43. package/es/card-list/src/CardList.d.ts +2 -2
  44. package/es/card-list/src/CardListItem.d.ts +1 -1
  45. package/es/carousel/src/Carousel.d.ts +8 -8
  46. package/es/carousel/src/CarouselDots.d.ts +2 -2
  47. package/es/cascader/src/Cascader.d.ts +12 -12
  48. package/es/cascader/src/CascaderMenu.d.ts +1 -1
  49. package/es/cascader/src/CascaderSelectMenu.d.ts +1 -1
  50. package/es/chat/src/Chat.d.ts +464 -83
  51. package/es/chat/src/Chat.js +17 -2
  52. package/es/chat/src/ChatListItems.d.ts +497 -94
  53. package/es/chat/src/ChatListItems.js +1 -1
  54. package/es/chat/src/ChatMessages.d.ts +501 -94
  55. package/es/chat/src/ChatMessages.js +115 -22
  56. package/es/chat/src/ChatParts/MainArea.d.ts +7 -3
  57. package/es/chat/src/ChatParts/MainArea.js +110 -14
  58. package/es/chat/src/ChatParts/Sidebar.d.ts +64 -11
  59. package/es/chat/src/interface.d.ts +18 -0
  60. package/es/chat/src/interface.js +6 -0
  61. package/es/chat/src/styles/index.cssr.js +22 -1
  62. package/es/chat/styles/dark.d.ts +41 -8
  63. package/es/chat/styles/dark.js +6 -2
  64. package/es/chat/styles/light.d.ts +42 -8
  65. package/es/chat/styles/light.js +7 -2
  66. package/es/checkbox/src/Checkbox.d.ts +5 -5
  67. package/es/code/src/Code.d.ts +1 -1
  68. package/es/collapse/src/Collapse.d.ts +1 -1
  69. package/es/collapse-transition/src/CollapseTransition.d.ts +1 -1
  70. package/es/color-picker/src/ColorPicker.d.ts +3 -3
  71. package/es/components.d.ts +3 -0
  72. package/es/components.js +3 -0
  73. package/es/config-provider/src/ConfigProvider.d.ts +7 -1
  74. package/es/config-provider/src/ConfigProvider.js +83 -12
  75. package/es/config-provider/src/interface.d.ts +1 -1
  76. package/es/config-provider/src/internal-interface.d.ts +212 -33
  77. package/es/countdown/src/Countdown.d.ts +1 -1
  78. package/es/create.js +34 -3
  79. package/es/data-table/src/DataTable.d.ts +6 -6
  80. package/es/data-table/src/HeaderButton/RenderFilter.d.ts +1 -1
  81. package/es/date-picker/src/DatePicker.d.ts +4 -4
  82. package/es/date-picker/src/panel/date.d.ts +1 -1
  83. package/es/date-picker/src/panel/daterange.d.ts +1 -1
  84. package/es/date-picker/src/panel/datetime.d.ts +1 -1
  85. package/es/date-picker/src/panel/datetimerange.d.ts +1 -1
  86. package/es/date-picker/src/panel/panelMonth.d.ts +9 -9
  87. package/es/date-picker/src/panel/panelMonthContent.d.ts +1 -1
  88. package/es/date-picker/src/panel/panelYear.d.ts +9 -9
  89. package/es/date-picker/src/panel/panelYearContent.d.ts +1 -1
  90. package/es/descriptions/src/Descriptions.d.ts +3 -3
  91. package/es/dialog/src/Dialog.d.ts +1 -1
  92. package/es/dialog/src/DialogEnvironment.d.ts +3 -3
  93. package/es/dialog/src/DialogProvider.d.ts +31 -29
  94. package/es/dialog/src/dialogProps.d.ts +1 -1
  95. package/es/drawer/src/Drawer.d.ts +7 -7
  96. package/es/drawer/src/DrawerBodyWrapper.d.ts +2 -2
  97. package/es/dropdown/src/Dropdown.d.ts +15 -15
  98. package/es/dropdown/src/DropdownMenu.d.ts +2 -2
  99. package/es/dropdown/src/DropdownOption.d.ts +1 -1
  100. package/es/dynamic-input/src/DynamicInput.d.ts +1 -1
  101. package/es/dynamic-tags/src/DynamicTags.d.ts +2 -2
  102. package/es/empty/src/Empty.d.ts +1 -1
  103. package/es/flex/src/Flex.d.ts +1 -1
  104. package/es/form/src/FormItem.d.ts +3 -3
  105. package/es/form/src/FormItemCol.d.ts +2 -2
  106. package/es/form/src/FormItemGridItem.d.ts +3 -3
  107. package/es/form/src/FormItemRow.d.ts +2 -2
  108. package/es/form/src/utils.d.ts +1 -1
  109. package/es/gradient-text/src/GradientText.d.ts +2 -2
  110. package/es/grid/src/Grid.d.ts +3 -3
  111. package/es/grid/src/GridItem.d.ts +2 -2
  112. package/es/header/demos/mock.d.ts +2 -0
  113. package/es/header/demos/mock.js +235 -0
  114. package/es/header/index.d.ts +12 -0
  115. package/es/header/index.js +10 -0
  116. package/es/header/src/Header.d.ts +604 -0
  117. package/es/header/src/Header.js +320 -0
  118. package/es/header/src/HeaderActions.d.ts +120 -0
  119. package/es/header/src/HeaderActions.js +166 -0
  120. package/es/header/src/HeaderDesktopLayout.d.ts +25 -0
  121. package/es/header/src/HeaderDesktopLayout.js +24 -0
  122. package/es/header/src/HeaderMobileLayout.d.ts +25 -0
  123. package/es/header/src/HeaderMobileLayout.js +21 -0
  124. package/es/header/src/HeaderNavigation.d.ts +128 -0
  125. package/es/header/src/HeaderNavigation.js +172 -0
  126. package/es/header/src/HeaderSearchDesktop.d.ts +79 -0
  127. package/es/header/src/HeaderSearchDesktop.js +77 -0
  128. package/es/header/src/HeaderSearchMobile.d.ts +73 -0
  129. package/es/header/src/HeaderSearchMobile.js +126 -0
  130. package/es/header/src/HeaderSearchResults.d.ts +81 -0
  131. package/es/header/src/HeaderSearchResults.js +74 -0
  132. package/es/header/src/constants.d.ts +1 -0
  133. package/es/header/src/constants.js +1 -0
  134. package/es/header/src/interface.d.ts +58 -0
  135. package/es/header/src/interface.js +1 -0
  136. package/es/header/src/mobile/HeaderMobile.d.ts +218 -0
  137. package/es/header/src/mobile/HeaderMobile.js +241 -0
  138. package/es/header/src/styles/index.cssr.d.ts +6 -0
  139. package/es/header/src/styles/index.cssr.js +519 -0
  140. package/es/header/src/utils.d.ts +12 -0
  141. package/es/header/src/utils.js +47 -0
  142. package/es/header/styles/dark.d.ts +36 -0
  143. package/es/header/styles/dark.js +9 -0
  144. package/es/header/styles/index.d.ts +3 -0
  145. package/es/header/styles/index.js +2 -0
  146. package/es/header/styles/light.d.ts +72 -0
  147. package/es/header/styles/light.js +45 -0
  148. package/es/icon/src/Icon.d.ts +3 -0
  149. package/es/icon/src/Icon.js +3 -2
  150. package/es/icon-bar/index.d.ts +4 -0
  151. package/es/icon-bar/index.js +2 -0
  152. package/es/icon-bar/src/IconBar.d.ts +175 -0
  153. package/es/icon-bar/src/IconBar.js +57 -0
  154. package/es/icon-bar/src/IconBarItem.d.ts +163 -0
  155. package/es/icon-bar/src/IconBarItem.js +50 -0
  156. package/es/icon-bar/src/styles/index.cssr.d.ts +2 -0
  157. package/es/icon-bar/src/styles/index.cssr.js +62 -0
  158. package/es/icon-bar/styles/dark.d.ts +3 -0
  159. package/es/icon-bar/styles/dark.js +8 -0
  160. package/es/icon-bar/styles/index.d.ts +3 -0
  161. package/es/icon-bar/styles/index.js +2 -0
  162. package/es/icon-bar/styles/light.d.ts +19 -0
  163. package/es/icon-bar/styles/light.js +23 -0
  164. package/es/icon-wrapper/src/IconWrapper.d.ts +1 -1
  165. package/es/input/src/Input.d.ts +8 -8
  166. package/es/input-number/src/InputNumber.d.ts +3 -3
  167. package/es/input-otp/src/InputOtp.d.ts +1 -1
  168. package/es/layout/src/LayoutSider.d.ts +2 -2
  169. package/es/legacy-grid/src/Row.d.ts +1 -1
  170. package/es/legacy-transfer/src/Transfer.d.ts +2 -2
  171. package/es/list/src/List.d.ts +6 -6
  172. package/es/list/src/ListItem.d.ts +4 -4
  173. package/es/locales/common/arDZ.js +11 -1
  174. package/es/locales/common/deDE.js +11 -1
  175. package/es/locales/common/enGB.js +11 -1
  176. package/es/locales/common/enUS.d.ts +10 -0
  177. package/es/locales/common/enUS.js +11 -1
  178. package/es/locales/common/eo.js +11 -1
  179. package/es/locales/common/esAR.js +11 -1
  180. package/es/locales/common/faIR.js +11 -1
  181. package/es/locales/common/frFR.js +11 -1
  182. package/es/locales/common/idID.js +11 -1
  183. package/es/locales/common/itIT.js +11 -1
  184. package/es/locales/common/jaJP.js +11 -1
  185. package/es/locales/common/koKR.js +11 -1
  186. package/es/locales/common/nbNO.js +11 -1
  187. package/es/locales/common/nlNL.js +11 -1
  188. package/es/locales/common/plPL.js +11 -1
  189. package/es/locales/common/ptBR.js +11 -1
  190. package/es/locales/common/ruRU.js +11 -1
  191. package/es/locales/common/skSK.js +11 -1
  192. package/es/locales/common/svSE.js +11 -1
  193. package/es/locales/common/thTH.js +11 -1
  194. package/es/locales/common/trTR.js +11 -1
  195. package/es/locales/common/ukUA.js +11 -1
  196. package/es/locales/common/viVN.js +11 -1
  197. package/es/locales/common/zhCN.js +11 -1
  198. package/es/locales/common/zhTW.js +11 -1
  199. package/es/log/src/Log.d.ts +2 -2
  200. package/es/mention/src/Mention.d.ts +3 -3
  201. package/es/menu/src/Menu.d.ts +5 -5
  202. package/es/menu/src/MenuOption.d.ts +1 -1
  203. package/es/menu/src/MenuOptionContent.d.ts +1 -1
  204. package/es/menu/src/MenuOptionGroup.d.ts +1 -1
  205. package/es/menu/src/Submenu.d.ts +1 -1
  206. package/es/message/src/MessageProvider.d.ts +1 -1
  207. package/es/modal/src/BodyWrapper.d.ts +3 -3
  208. package/es/modal/src/Modal.d.ts +6 -6
  209. package/es/modal/src/presetProps.d.ts +1 -1
  210. package/es/modal-fullscreen/src/ModalFull.d.ts +2 -2
  211. package/es/notification/src/Notification.d.ts +2 -2
  212. package/es/notification/src/NotificationEnvironment.d.ts +1 -1
  213. package/es/notification/src/NotificationProvider.d.ts +9 -9
  214. package/es/number-animation/src/NumberAnimation.d.ts +2 -2
  215. package/es/pagination/src/Pagination.d.ts +1 -1
  216. package/es/popconfirm/src/Popconfirm.d.ts +8 -8
  217. package/es/popover/src/Popover.d.ts +8 -8
  218. package/es/popover/src/PopoverBody.d.ts +2 -2
  219. package/es/popselect/src/Popselect.d.ts +81 -81
  220. package/es/popselect/src/PopselectPanel.d.ts +4 -4
  221. package/es/progress/src/Circle.d.ts +1 -1
  222. package/es/progress/src/MultipleCircle.d.ts +1 -1
  223. package/es/progress/src/Progress.d.ts +4 -4
  224. package/es/qr-code/index.d.ts +2 -0
  225. package/es/qr-code/index.js +1 -0
  226. package/es/qr-code/src/QrCode.d.ts +171 -0
  227. package/es/qr-code/src/QrCode.js +229 -0
  228. package/es/qr-code/src/qrcodegen.d.ts +95 -0
  229. package/es/qr-code/src/qrcodegen.js +949 -0
  230. package/es/qr-code/src/styles/index.cssr.d.ts +2 -0
  231. package/es/qr-code/src/styles/index.cssr.js +8 -0
  232. package/es/qr-code/styles/dark.d.ts +3 -0
  233. package/es/qr-code/styles/dark.js +11 -0
  234. package/es/qr-code/styles/index.d.ts +3 -0
  235. package/es/qr-code/styles/index.js +2 -0
  236. package/es/qr-code/styles/light.d.ts +9 -0
  237. package/es/qr-code/styles/light.js +12 -0
  238. package/es/radio/src/Radio.d.ts +1 -1
  239. package/es/rate/src/Rate.d.ts +3 -3
  240. package/es/result/src/Result.d.ts +1 -1
  241. package/es/select/src/Select.d.ts +19 -19
  242. package/es/skeleton/src/Skeleton.d.ts +1 -1
  243. package/es/slider/src/Slider.d.ts +4 -4
  244. package/es/space/src/Space.d.ts +1 -1
  245. package/es/spin/src/Spin.d.ts +2 -2
  246. package/es/steps/src/Steps.d.ts +1 -1
  247. package/es/switch/src/Switch.d.ts +1 -1
  248. package/es/tabs/src/Tab.d.ts +1 -1
  249. package/es/tabs/src/Tabs.d.ts +4 -4
  250. package/es/tag/src/Tag.d.ts +2 -2
  251. package/es/tag/src/TagGroup.d.ts +1 -1
  252. package/es/theme-editor/src/ThemeEditor.d.ts +1 -0
  253. package/es/themes/dark.js +7 -1
  254. package/es/themes/light.js +7 -1
  255. package/es/time/src/Time.d.ts +1 -1
  256. package/es/time-picker/src/Panel.d.ts +1 -1
  257. package/es/time-picker/src/TimePicker.d.ts +5 -5
  258. package/es/timeline/src/TimelineItem.d.ts +1 -1
  259. package/es/tooltip/src/Tooltip.d.ts +8 -8
  260. package/es/transfer/src/Transfer.d.ts +3 -3
  261. package/es/tree/src/Tree.d.ts +18 -18
  262. package/es/tree/src/TreeNodeCheckbox.d.ts +1 -1
  263. package/es/tree-select/src/TreeSelect.d.ts +15 -15
  264. package/es/typography/index.d.ts +1 -0
  265. package/es/typography/src/create-header.d.ts +1 -1
  266. package/es/typography/src/headers.d.ts +6 -6
  267. package/es/typography/src/text.d.ts +44 -5
  268. package/es/upload/src/Upload.d.ts +11 -11
  269. package/es/upload/src/UploadFile.d.ts +1 -1
  270. package/es/version.d.ts +1 -1
  271. package/es/version.js +1 -1
  272. package/es/virtual-list/src/VirtualList.d.ts +2 -2
  273. package/es/watermark/src/Watermark.d.ts +7 -7
  274. package/lib/_internal/close/src/Close.d.ts +2 -2
  275. package/lib/_internal/icons/BurgerMenuIcon.d.ts +2 -0
  276. package/lib/_internal/icons/BurgerMenuIcon.js +6 -0
  277. package/lib/_internal/icons/Logout.d.ts +2 -0
  278. package/lib/_internal/icons/Logout.js +6 -0
  279. package/lib/_internal/icons/OzbekFlag.d.ts +2 -0
  280. package/lib/_internal/icons/OzbekFlag.js +17 -0
  281. package/lib/_internal/icons/RussiaFlag.d.ts +2 -0
  282. package/lib/_internal/icons/RussiaFlag.js +13 -0
  283. package/lib/_internal/icons/SendFilled.d.ts +2 -0
  284. package/lib/_internal/icons/SendFilled.js +11 -0
  285. package/lib/_internal/icons/index.d.ts +5 -0
  286. package/lib/_internal/icons/index.js +11 -1
  287. package/lib/_internal/loading/src/Loading.d.ts +1 -1
  288. package/lib/_internal/safe-top-scrollbar/src/SafeTopScrollbar.d.ts +2 -2
  289. package/lib/_internal/scrollbar/src/Scrollbar.d.ts +2 -2
  290. package/lib/_internal/select-menu/src/SelectMenu.d.ts +7 -7
  291. package/lib/_internal/selection/src/Selection.d.ts +13 -13
  292. package/lib/_internal/skeleton/src/Skeleton.d.ts +1 -1
  293. package/lib/_internal/typography/index.d.ts +1 -0
  294. package/lib/_internal/typography/src/text.d.ts +42 -3
  295. package/lib/_internal/typography/src/text.js +18 -5
  296. package/lib/_internal/typography/src/variants.d.ts +105 -4
  297. package/lib/_internal/typography/src/variants.js +87 -43
  298. package/lib/_internal/typography/styles/dark.js +2 -2
  299. package/lib/_internal/typography/styles/light.d.ts +1 -1
  300. package/lib/_internal/typography/styles/light.js +2 -2
  301. package/lib/_styles/common/dark.js +1 -1
  302. package/lib/_styles/common/light.d.ts +1 -0
  303. package/lib/_styles/common/light.js +1 -1
  304. package/lib/affix/src/Affix.d.ts +3 -3
  305. package/lib/alert/src/Alert.d.ts +3 -3
  306. package/lib/anchor/src/AnchorAdapter.d.ts +5 -5
  307. package/lib/auto-complete/src/AutoComplete.d.ts +3 -3
  308. package/lib/avatar/src/Avatar.d.ts +1 -1
  309. package/lib/avatar-group/src/AvatarGroup.d.ts +1 -1
  310. package/lib/back-top/src/BackTop.d.ts +1 -1
  311. package/lib/badge/src/Badge.d.ts +1 -1
  312. package/lib/button/src/Button.d.ts +7 -7
  313. package/lib/card/src/Card.d.ts +3 -3
  314. package/lib/card-list/src/CardList.d.ts +2 -2
  315. package/lib/card-list/src/CardListItem.d.ts +1 -1
  316. package/lib/carousel/src/Carousel.d.ts +8 -8
  317. package/lib/carousel/src/CarouselDots.d.ts +2 -2
  318. package/lib/cascader/src/Cascader.d.ts +12 -12
  319. package/lib/cascader/src/CascaderMenu.d.ts +1 -1
  320. package/lib/cascader/src/CascaderSelectMenu.d.ts +1 -1
  321. package/lib/chat/src/Chat.d.ts +464 -83
  322. package/lib/chat/src/Chat.js +17 -2
  323. package/lib/chat/src/ChatListItems.d.ts +497 -94
  324. package/lib/chat/src/ChatListItems.js +1 -1
  325. package/lib/chat/src/ChatMessages.d.ts +501 -94
  326. package/lib/chat/src/ChatMessages.js +113 -20
  327. package/lib/chat/src/ChatParts/MainArea.d.ts +7 -3
  328. package/lib/chat/src/ChatParts/MainArea.js +108 -12
  329. package/lib/chat/src/ChatParts/Sidebar.d.ts +64 -11
  330. package/lib/chat/src/interface.d.ts +18 -0
  331. package/lib/chat/src/interface.js +7 -1
  332. package/lib/chat/src/styles/index.cssr.js +22 -1
  333. package/lib/chat/styles/dark.d.ts +41 -8
  334. package/lib/chat/styles/dark.js +6 -2
  335. package/lib/chat/styles/light.d.ts +42 -8
  336. package/lib/chat/styles/light.js +7 -2
  337. package/lib/checkbox/src/Checkbox.d.ts +5 -5
  338. package/lib/code/src/Code.d.ts +1 -1
  339. package/lib/collapse/src/Collapse.d.ts +1 -1
  340. package/lib/collapse-transition/src/CollapseTransition.d.ts +1 -1
  341. package/lib/color-picker/src/ColorPicker.d.ts +3 -3
  342. package/lib/components.d.ts +3 -0
  343. package/lib/components.js +3 -0
  344. package/lib/config-provider/src/ConfigProvider.d.ts +7 -1
  345. package/lib/config-provider/src/ConfigProvider.js +81 -10
  346. package/lib/config-provider/src/interface.d.ts +1 -1
  347. package/lib/config-provider/src/internal-interface.d.ts +212 -33
  348. package/lib/countdown/src/Countdown.d.ts +1 -1
  349. package/lib/create.js +34 -3
  350. package/lib/data-table/src/DataTable.d.ts +6 -6
  351. package/lib/data-table/src/HeaderButton/RenderFilter.d.ts +1 -1
  352. package/lib/date-picker/src/DatePicker.d.ts +4 -4
  353. package/lib/date-picker/src/panel/date.d.ts +1 -1
  354. package/lib/date-picker/src/panel/daterange.d.ts +1 -1
  355. package/lib/date-picker/src/panel/datetime.d.ts +1 -1
  356. package/lib/date-picker/src/panel/datetimerange.d.ts +1 -1
  357. package/lib/date-picker/src/panel/panelMonth.d.ts +9 -9
  358. package/lib/date-picker/src/panel/panelMonthContent.d.ts +1 -1
  359. package/lib/date-picker/src/panel/panelYear.d.ts +9 -9
  360. package/lib/date-picker/src/panel/panelYearContent.d.ts +1 -1
  361. package/lib/descriptions/src/Descriptions.d.ts +3 -3
  362. package/lib/dialog/src/Dialog.d.ts +1 -1
  363. package/lib/dialog/src/DialogEnvironment.d.ts +3 -3
  364. package/lib/dialog/src/DialogProvider.d.ts +31 -29
  365. package/lib/dialog/src/dialogProps.d.ts +1 -1
  366. package/lib/drawer/src/Drawer.d.ts +7 -7
  367. package/lib/drawer/src/DrawerBodyWrapper.d.ts +2 -2
  368. package/lib/dropdown/src/Dropdown.d.ts +15 -15
  369. package/lib/dropdown/src/DropdownMenu.d.ts +2 -2
  370. package/lib/dropdown/src/DropdownOption.d.ts +1 -1
  371. package/lib/dynamic-input/src/DynamicInput.d.ts +1 -1
  372. package/lib/dynamic-tags/src/DynamicTags.d.ts +2 -2
  373. package/lib/empty/src/Empty.d.ts +1 -1
  374. package/lib/flex/src/Flex.d.ts +1 -1
  375. package/lib/form/src/FormItem.d.ts +3 -3
  376. package/lib/form/src/FormItemCol.d.ts +2 -2
  377. package/lib/form/src/FormItemGridItem.d.ts +3 -3
  378. package/lib/form/src/FormItemRow.d.ts +2 -2
  379. package/lib/form/src/utils.d.ts +1 -1
  380. package/lib/gradient-text/src/GradientText.d.ts +2 -2
  381. package/lib/grid/src/Grid.d.ts +3 -3
  382. package/lib/grid/src/GridItem.d.ts +2 -2
  383. package/lib/header/demos/mock.d.ts +2 -0
  384. package/lib/header/demos/mock.js +238 -0
  385. package/lib/header/index.d.ts +12 -0
  386. package/lib/header/index.js +48 -0
  387. package/lib/header/src/Header.d.ts +604 -0
  388. package/lib/header/src/Header.js +349 -0
  389. package/lib/header/src/HeaderActions.d.ts +120 -0
  390. package/lib/header/src/HeaderActions.js +172 -0
  391. package/lib/header/src/HeaderDesktopLayout.d.ts +25 -0
  392. package/lib/header/src/HeaderDesktopLayout.js +27 -0
  393. package/lib/header/src/HeaderMobileLayout.d.ts +25 -0
  394. package/lib/header/src/HeaderMobileLayout.js +24 -0
  395. package/lib/header/src/HeaderNavigation.d.ts +128 -0
  396. package/lib/header/src/HeaderNavigation.js +175 -0
  397. package/lib/header/src/HeaderSearchDesktop.d.ts +79 -0
  398. package/lib/header/src/HeaderSearchDesktop.js +83 -0
  399. package/lib/header/src/HeaderSearchMobile.d.ts +73 -0
  400. package/lib/header/src/HeaderSearchMobile.js +132 -0
  401. package/lib/header/src/HeaderSearchResults.d.ts +81 -0
  402. package/lib/header/src/HeaderSearchResults.js +77 -0
  403. package/lib/header/src/constants.d.ts +1 -0
  404. package/lib/header/src/constants.js +4 -0
  405. package/lib/header/src/interface.d.ts +58 -0
  406. package/lib/header/src/interface.js +2 -0
  407. package/lib/header/src/mobile/HeaderMobile.d.ts +218 -0
  408. package/lib/header/src/mobile/HeaderMobile.js +244 -0
  409. package/lib/header/src/styles/index.cssr.d.ts +6 -0
  410. package/lib/header/src/styles/index.cssr.js +525 -0
  411. package/lib/header/src/utils.d.ts +12 -0
  412. package/lib/header/src/utils.js +58 -0
  413. package/lib/header/styles/dark.d.ts +36 -0
  414. package/lib/header/styles/dark.js +11 -0
  415. package/lib/header/styles/index.d.ts +3 -0
  416. package/lib/header/styles/index.js +10 -0
  417. package/lib/header/styles/light.d.ts +72 -0
  418. package/lib/header/styles/light.js +49 -0
  419. package/lib/icon/src/Icon.d.ts +3 -0
  420. package/lib/icon/src/Icon.js +3 -2
  421. package/lib/icon-bar/index.d.ts +4 -0
  422. package/lib/icon-bar/index.js +12 -0
  423. package/lib/icon-bar/src/IconBar.d.ts +175 -0
  424. package/lib/icon-bar/src/IconBar.js +63 -0
  425. package/lib/icon-bar/src/IconBarItem.d.ts +163 -0
  426. package/lib/icon-bar/src/IconBarItem.js +56 -0
  427. package/lib/icon-bar/src/styles/index.cssr.d.ts +2 -0
  428. package/lib/icon-bar/src/styles/index.cssr.js +67 -0
  429. package/lib/icon-bar/styles/dark.d.ts +3 -0
  430. package/lib/icon-bar/styles/dark.js +10 -0
  431. package/lib/icon-bar/styles/index.d.ts +3 -0
  432. package/lib/icon-bar/styles/index.js +10 -0
  433. package/lib/icon-bar/styles/light.d.ts +19 -0
  434. package/lib/icon-bar/styles/light.js +27 -0
  435. package/lib/icon-wrapper/src/IconWrapper.d.ts +1 -1
  436. package/lib/input/src/Input.d.ts +8 -8
  437. package/lib/input-number/src/InputNumber.d.ts +3 -3
  438. package/lib/input-otp/src/InputOtp.d.ts +1 -1
  439. package/lib/layout/src/LayoutSider.d.ts +2 -2
  440. package/lib/legacy-grid/src/Row.d.ts +1 -1
  441. package/lib/legacy-transfer/src/Transfer.d.ts +2 -2
  442. package/lib/list/src/List.d.ts +6 -6
  443. package/lib/list/src/ListItem.d.ts +4 -4
  444. package/lib/locales/common/arDZ.js +11 -1
  445. package/lib/locales/common/deDE.js +11 -1
  446. package/lib/locales/common/enGB.js +11 -1
  447. package/lib/locales/common/enUS.d.ts +10 -0
  448. package/lib/locales/common/enUS.js +11 -1
  449. package/lib/locales/common/eo.js +11 -1
  450. package/lib/locales/common/esAR.js +11 -1
  451. package/lib/locales/common/faIR.js +11 -1
  452. package/lib/locales/common/frFR.js +11 -1
  453. package/lib/locales/common/idID.js +11 -1
  454. package/lib/locales/common/itIT.js +11 -1
  455. package/lib/locales/common/jaJP.js +11 -1
  456. package/lib/locales/common/koKR.js +11 -1
  457. package/lib/locales/common/nbNO.js +11 -1
  458. package/lib/locales/common/nlNL.js +11 -1
  459. package/lib/locales/common/plPL.js +11 -1
  460. package/lib/locales/common/ptBR.js +11 -1
  461. package/lib/locales/common/ruRU.js +11 -1
  462. package/lib/locales/common/skSK.js +11 -1
  463. package/lib/locales/common/svSE.js +11 -1
  464. package/lib/locales/common/thTH.js +11 -1
  465. package/lib/locales/common/trTR.js +11 -1
  466. package/lib/locales/common/ukUA.js +11 -1
  467. package/lib/locales/common/viVN.js +11 -1
  468. package/lib/locales/common/zhCN.js +11 -1
  469. package/lib/locales/common/zhTW.js +11 -1
  470. package/lib/log/src/Log.d.ts +2 -2
  471. package/lib/mention/src/Mention.d.ts +3 -3
  472. package/lib/menu/src/Menu.d.ts +5 -5
  473. package/lib/menu/src/MenuOption.d.ts +1 -1
  474. package/lib/menu/src/MenuOptionContent.d.ts +1 -1
  475. package/lib/menu/src/MenuOptionGroup.d.ts +1 -1
  476. package/lib/menu/src/Submenu.d.ts +1 -1
  477. package/lib/message/src/MessageProvider.d.ts +1 -1
  478. package/lib/modal/src/BodyWrapper.d.ts +3 -3
  479. package/lib/modal/src/Modal.d.ts +6 -6
  480. package/lib/modal/src/presetProps.d.ts +1 -1
  481. package/lib/modal-fullscreen/src/ModalFull.d.ts +2 -2
  482. package/lib/notification/src/Notification.d.ts +2 -2
  483. package/lib/notification/src/NotificationEnvironment.d.ts +1 -1
  484. package/lib/notification/src/NotificationProvider.d.ts +9 -9
  485. package/lib/number-animation/src/NumberAnimation.d.ts +2 -2
  486. package/lib/pagination/src/Pagination.d.ts +1 -1
  487. package/lib/popconfirm/src/Popconfirm.d.ts +8 -8
  488. package/lib/popover/src/Popover.d.ts +8 -8
  489. package/lib/popover/src/PopoverBody.d.ts +2 -2
  490. package/lib/popselect/src/Popselect.d.ts +81 -81
  491. package/lib/popselect/src/PopselectPanel.d.ts +4 -4
  492. package/lib/progress/src/Circle.d.ts +1 -1
  493. package/lib/progress/src/MultipleCircle.d.ts +1 -1
  494. package/lib/progress/src/Progress.d.ts +4 -4
  495. package/lib/qr-code/index.d.ts +2 -0
  496. package/lib/qr-code/index.js +9 -0
  497. package/lib/qr-code/src/QrCode.d.ts +171 -0
  498. package/lib/qr-code/src/QrCode.js +235 -0
  499. package/lib/qr-code/src/qrcodegen.d.ts +95 -0
  500. package/lib/qr-code/src/qrcodegen.js +950 -0
  501. package/lib/qr-code/src/styles/index.cssr.d.ts +2 -0
  502. package/lib/qr-code/src/styles/index.cssr.js +13 -0
  503. package/lib/qr-code/styles/dark.d.ts +3 -0
  504. package/lib/qr-code/styles/dark.js +13 -0
  505. package/lib/qr-code/styles/index.d.ts +3 -0
  506. package/lib/qr-code/styles/index.js +10 -0
  507. package/lib/qr-code/styles/light.d.ts +9 -0
  508. package/lib/qr-code/styles/light.js +14 -0
  509. package/lib/radio/src/Radio.d.ts +1 -1
  510. package/lib/rate/src/Rate.d.ts +3 -3
  511. package/lib/result/src/Result.d.ts +1 -1
  512. package/lib/select/src/Select.d.ts +19 -19
  513. package/lib/skeleton/src/Skeleton.d.ts +1 -1
  514. package/lib/slider/src/Slider.d.ts +4 -4
  515. package/lib/space/src/Space.d.ts +1 -1
  516. package/lib/spin/src/Spin.d.ts +2 -2
  517. package/lib/steps/src/Steps.d.ts +1 -1
  518. package/lib/switch/src/Switch.d.ts +1 -1
  519. package/lib/tabs/src/Tab.d.ts +1 -1
  520. package/lib/tabs/src/Tabs.d.ts +4 -4
  521. package/lib/tag/src/Tag.d.ts +2 -2
  522. package/lib/tag/src/TagGroup.d.ts +1 -1
  523. package/lib/theme-editor/src/ThemeEditor.d.ts +1 -0
  524. package/lib/themes/dark.js +7 -1
  525. package/lib/themes/light.js +7 -1
  526. package/lib/time/src/Time.d.ts +1 -1
  527. package/lib/time-picker/src/Panel.d.ts +1 -1
  528. package/lib/time-picker/src/TimePicker.d.ts +5 -5
  529. package/lib/timeline/src/TimelineItem.d.ts +1 -1
  530. package/lib/tooltip/src/Tooltip.d.ts +8 -8
  531. package/lib/transfer/src/Transfer.d.ts +3 -3
  532. package/lib/tree/src/Tree.d.ts +18 -18
  533. package/lib/tree/src/TreeNodeCheckbox.d.ts +1 -1
  534. package/lib/tree-select/src/TreeSelect.d.ts +15 -15
  535. package/lib/typography/index.d.ts +1 -0
  536. package/lib/typography/src/create-header.d.ts +1 -1
  537. package/lib/typography/src/headers.d.ts +6 -6
  538. package/lib/typography/src/text.d.ts +44 -5
  539. package/lib/upload/src/Upload.d.ts +11 -11
  540. package/lib/upload/src/UploadFile.d.ts +1 -1
  541. package/lib/version.d.ts +1 -1
  542. package/lib/version.js +1 -1
  543. package/lib/virtual-list/src/VirtualList.d.ts +2 -2
  544. package/lib/watermark/src/Watermark.d.ts +7 -7
  545. package/package.json +1 -1
  546. package/volar.d.ts +166 -153
  547. package/web-types.json +912 -3
@@ -9,6 +9,7 @@ const interface_1 = require("./interface");
9
9
  const ChatAttachment_1 = __importDefault(require("./ChatParts/ChatAttachment"));
10
10
  const icon_1 = require("../../icon");
11
11
  const skeleton_1 = require("../../skeleton");
12
+ const dropdown_1 = require("../../dropdown");
12
13
  const index_cssr_1 = __importDefault(require("./styles/index.cssr"));
13
14
  const styles_1 = require("../styles");
14
15
  const _mixins_1 = require("../../_mixins");
@@ -65,6 +66,8 @@ exports.default = (0, vue_1.defineComponent)({
65
66
  const { mergedClsPrefixRef } = (0, _mixins_1.useConfig)(props);
66
67
  const themeRef = (_a = UChat === null || UChat === void 0 ? void 0 : UChat.mergedThemeRef) !== null && _a !== void 0 ? _a : (0, _mixins_1.useTheme)('Chat', '-chat', index_cssr_1.default, styles_1.chatLight, props, mergedClsPrefixRef);
67
68
  const { localeRef } = (0, _mixins_1.useLocale)('Chat');
69
+ const contextMenuShow = (0, vue_1.ref)(false);
70
+ const contextMenuMessage = (0, vue_1.ref)();
68
71
  const cssVarsRef = (0, vue_1.computed)(() => {
69
72
  const { common: { cubicBezierEaseInOut, brandPrimary500, staticGreen, staticRed, textPrimary, textSecondary, textTertiary }, self: { backgroundColor, borderColor, mainBackgroundColor, headerBackgroundColor, headerBorderColor, headerTitleColor, messageBubbleBackgroundColorOwn, messageBubbleBackgroundColorOther, messageBubbleTextColorOwn, messageBubbleTextColorOther, messageTimeColor, messageStatusColor, attachmentBackgroundColorOwn, attachmentBackgroundColorOther, unreadNotificationBackgroundColor, unreadNotificationTextColor, typingIndicatorColor, dateSeparatorColor, dateSeparatorBackgroundColor, borderRadius, errorColor } } = themeRef.value;
70
73
  return {
@@ -110,6 +113,50 @@ exports.default = (0, vue_1.defineComponent)({
110
113
  var _a;
111
114
  (_a = props.onMessageRetry) === null || _a === void 0 ? void 0 : _a.call(props, message);
112
115
  };
116
+ const messageContextMenuOptions = (0, vue_1.computed)(() => {
117
+ var _a;
118
+ const message = contextMenuMessage.value;
119
+ if (!message)
120
+ return;
121
+ const bubbleActions = (_a = UChat === null || UChat === void 0 ? void 0 : UChat.bubbleActionsRef) === null || _a === void 0 ? void 0 : _a.value;
122
+ if (!bubbleActions || bubbleActions.length === 0) {
123
+ return [];
124
+ }
125
+ const result = [];
126
+ for (const action of bubbleActions) {
127
+ if (action.visible && !action.visible(message)) {
128
+ continue;
129
+ }
130
+ const label = typeof action.label === 'function' ? action.label() : action.label;
131
+ result.push({
132
+ label,
133
+ key: String(action.key)
134
+ });
135
+ }
136
+ return result;
137
+ });
138
+ const handleContextMenuSelect = (key) => {
139
+ var _a, _b;
140
+ const message = contextMenuMessage.value;
141
+ if (!message)
142
+ return;
143
+ if (key === interface_1.ChatBubbleActionKey.EDIT) {
144
+ const startEditing = (_a = UChat === null || UChat === void 0 ? void 0 : UChat.startEditingMessage) === null || _a === void 0 ? void 0 : _a.value;
145
+ if (startEditing) {
146
+ startEditing(message);
147
+ }
148
+ contextMenuShow.value = false;
149
+ return;
150
+ }
151
+ const bubbleActions = (_b = UChat === null || UChat === void 0 ? void 0 : UChat.bubbleActionsRef) === null || _b === void 0 ? void 0 : _b.value;
152
+ if (!bubbleActions)
153
+ return;
154
+ const action = bubbleActions.find((action) => action.key === key);
155
+ if (action) {
156
+ action.handler(message);
157
+ }
158
+ contextMenuShow.value = false;
159
+ };
113
160
  const renderDateSeparator = (date) => {
114
161
  return ((0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__date-separator` },
115
162
  (0, vue_1.h)("span", null, date)));
@@ -135,35 +182,69 @@ exports.default = (0, vue_1.defineComponent)({
135
182
  ] }, message.content && (0, vue_1.h)("span", null, message.content)));
136
183
  };
137
184
  const renderMessage = (message) => {
185
+ var _a, _b, _c;
138
186
  const isOwn = message.isOwn;
139
187
  const attachments = message.attachment
140
188
  ? Array.isArray(message.attachment)
141
189
  ? message.attachment
142
190
  : [message.attachment]
143
191
  : [];
144
- return ((0, vue_1.h)("div", { key: message.id, class: [
192
+ const isContextMenuForThisMessage = contextMenuShow.value && ((_a = contextMenuMessage.value) === null || _a === void 0 ? void 0 : _a.id) === message.id;
193
+ const hasBubbleActionsSlot = slots.bubbleActions !== undefined;
194
+ const hasBubbleActionsConfig = ((_b = UChat === null || UChat === void 0 ? void 0 : UChat.bubbleActionsRef) === null || _b === void 0 ? void 0 : _b.value) &&
195
+ UChat.bubbleActionsRef.value.length > 0;
196
+ const messageBubbleContent = message.content || attachments.length > 1 ? ((0, vue_1.h)("div", { class: [
197
+ `${mergedClsPrefixRef.value}-chat-main__message-bubble`,
198
+ isOwn
199
+ ? `${mergedClsPrefixRef.value}-chat-main__message-bubble--own`
200
+ : `${mergedClsPrefixRef.value}-chat-main__message-bubble--other`
201
+ ] },
202
+ attachments.length > 0 && ((0, vue_1.h)(ChatAttachment_1.default, { message: message, attachments: attachments, uploadProps: props.uploadProps, withPadding: true }, {
203
+ default: slots.messageAttachment,
204
+ 'upload-file-title': slots.messageAttachmentTitle,
205
+ 'upload-file-subtitle': slots.messageAttachmentSubtitle
206
+ })),
207
+ message.content && ((0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__message-text` }, message.content)))) : attachments.length === 1 ? ((0, vue_1.h)(ChatAttachment_1.default, { message: message, attachments: attachments, uploadProps: props.uploadProps }, {
208
+ default: slots.messageAttachment,
209
+ 'upload-file-title': slots.messageAttachmentTitle,
210
+ 'upload-file-subtitle': slots.messageAttachmentSubtitle
211
+ })) : null;
212
+ const messageContent = ((0, vue_1.h)("div", { key: message.id, class: [
145
213
  `${mergedClsPrefixRef.value}-chat-main__message`,
146
214
  isOwn
147
215
  ? `${mergedClsPrefixRef.value}-chat-main__message--own`
148
216
  : `${mergedClsPrefixRef.value}-chat-main__message--other`
149
217
  ] },
150
218
  (0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__message-wrapper` },
151
- message.content || attachments.length > 1 ? ((0, vue_1.h)("div", { class: [
152
- `${mergedClsPrefixRef.value}-chat-main__message-bubble`,
153
- isOwn
154
- ? `${mergedClsPrefixRef.value}-chat-main__message-bubble--own`
155
- : `${mergedClsPrefixRef.value}-chat-main__message-bubble--other`
156
- ] },
157
- attachments.length > 0 && ((0, vue_1.h)(ChatAttachment_1.default, { message: message, attachments: attachments, uploadProps: props.uploadProps, withPadding: true }, {
158
- default: slots.messageAttachment,
159
- 'upload-file-title': slots.messageAttachmentTitle,
160
- 'upload-file-subtitle': slots.messageAttachmentSubtitle
161
- })),
162
- message.content && ((0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__message-text` }, message.content)))) : attachments.length === 1 ? ((0, vue_1.h)(ChatAttachment_1.default, { message: message, attachments: attachments, uploadProps: props.uploadProps }, {
163
- default: slots.messageAttachment,
164
- 'upload-file-title': slots.messageAttachmentTitle,
165
- 'upload-file-subtitle': slots.messageAttachmentSubtitle
166
- })) : null,
219
+ hasBubbleActionsSlot ? ((0, vue_1.h)("div", { onContextmenu: (e) => {
220
+ e.preventDefault();
221
+ contextMenuShow.value = false;
222
+ void (0, vue_1.nextTick)().then(() => {
223
+ contextMenuShow.value = true;
224
+ contextMenuMessage.value = message;
225
+ });
226
+ } }, (_c = slots.bubbleActions) === null || _c === void 0 ? void 0 :
227
+ _c.call(slots, message),
228
+ messageBubbleContent)) : hasBubbleActionsConfig ? ((0, vue_1.h)(dropdown_1.UDropdown, { show: isContextMenuForThisMessage, onUpdateShow: (show) => {
229
+ var _a;
230
+ if (!show && ((_a = contextMenuMessage.value) === null || _a === void 0 ? void 0 : _a.id) === message.id) {
231
+ contextMenuShow.value = false;
232
+ }
233
+ }, onClickoutside: () => {
234
+ var _a;
235
+ if (((_a = contextMenuMessage.value) === null || _a === void 0 ? void 0 : _a.id) === message.id) {
236
+ contextMenuShow.value = false;
237
+ }
238
+ }, trigger: "manual", placement: "bottom-start", options: messageContextMenuOptions.value, onSelect: handleContextMenuSelect }, {
239
+ default: () => ((0, vue_1.h)("div", { onContextmenu: (event) => {
240
+ event.preventDefault();
241
+ contextMenuShow.value = false;
242
+ void (0, vue_1.nextTick)().then(() => {
243
+ contextMenuShow.value = true;
244
+ contextMenuMessage.value = message;
245
+ });
246
+ } }, messageBubbleContent))
247
+ })) : (messageBubbleContent),
167
248
  (0, vue_1.h)("div", { class: [
168
249
  `${mergedClsPrefixRef.value}-chat-main__message-meta`,
169
250
  isOwn
@@ -174,7 +255,7 @@ exports.default = (0, vue_1.defineComponent)({
174
255
  ] }, message.status === interface_1.MessageStatus.RETRY ? ((0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__message-retry`, onClick: () => {
175
256
  handleMessageRetry(message);
176
257
  }, style: { cursor: 'pointer' } },
177
- (0, vue_1.h)(icon_1.UIcon, { size: 16, component: statusIconMapper[interface_1.MessageStatus.RETRY], class: `${mergedClsPrefixRef.value}-chat-main__message-retry-icon`, theme: themeRef.value.peers.Icon, themeOverrides: themeRef.value.peerOverrides.Icon }),
258
+ (0, vue_1.h)(icon_1.UIcon, { size: 16, component: statusIconMapper[interface_1.MessageStatus.RETRY], class: `${mergedClsPrefixRef.value}-chat-main__message-retry-icon`, theme: themeRef.value.peers.StatusIcon, themeOverrides: themeRef.value.peerOverrides.StatusIcon }),
178
259
  (0, vue_1.h)("span", { class: `${mergedClsPrefixRef.value}-chat-main__message-retry-text` }, mergedRetryTextRef.value))) : ((0, vue_1.h)(vue_1.Fragment, null,
179
260
  (0, vue_1.h)("span", { class: `${mergedClsPrefixRef.value}-chat-main__message-time` }, message.timestamp),
180
261
  isOwn && message.status && ((0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__message-status` }, slots.messageStatus
@@ -182,7 +263,8 @@ exports.default = (0, vue_1.defineComponent)({
182
263
  : statusIconMapper[message.status] && ((0, vue_1.h)(icon_1.UIcon, { size: 16, component: statusIconMapper[message.status], class: [
183
264
  `${mergedClsPrefixRef.value}-chat-main__message-status-icon`,
184
265
  `${mergedClsPrefixRef.value}-chat-main__message-status-icon--${String(message.status)}`
185
- ], theme: themeRef.value.peers.Icon, themeOverrides: themeRef.value.peerOverrides.Icon }))))))))));
266
+ ], theme: themeRef.value.peers.StatusIcon, themeOverrides: themeRef.value.peerOverrides.StatusIcon }))))))))));
267
+ return messageContent;
186
268
  };
187
269
  const renderTypingIndicator = () => {
188
270
  return ((0, vue_1.h)("div", { class: [
@@ -234,6 +316,10 @@ exports.default = (0, vue_1.defineComponent)({
234
316
  renderSkeletonMessage,
235
317
  renderDateSeparator,
236
318
  renderUnreadNotification,
319
+ contextMenuShow,
320
+ contextMenuMessage,
321
+ messageContextMenuOptions,
322
+ handleContextMenuSelect,
237
323
  cssVars: cssVarsRef,
238
324
  themeClass: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.themeClass,
239
325
  onRender: themeClassHandle === null || themeClassHandle === void 0 ? void 0 : themeClassHandle.onRender
@@ -311,7 +397,14 @@ exports.default = (0, vue_1.defineComponent)({
311
397
  padding: '0',
312
398
  background: 'transparent'
313
399
  } },
314
- (0, vue_1.h)("div", { class: `${mergedClsPrefixRef}-chat-main__messages-container` },
400
+ (0, vue_1.h)("div", { class: `${mergedClsPrefixRef}-chat-main__messages-container`, onContextmenu: (event) => {
401
+ const target = event.target;
402
+ const messagesContainer = event.currentTarget;
403
+ if (target === messagesContainer) {
404
+ event.preventDefault();
405
+ this.contextMenuShow = false;
406
+ }
407
+ } },
315
408
  messagesWithDates.map((item) => {
316
409
  var _a;
317
410
  if (item.type === 'date-separator') {
@@ -1,14 +1,18 @@
1
+ import { Ref } from 'vue';
2
+ import { type ChatMessageData } from '../interface';
1
3
  declare const _default: import("vue").DefineComponent<{}, {
2
4
  renderHeader: () => JSX.Element;
3
5
  renderMessages: () => JSX.Element;
6
+ renderEditingBlock: () => JSX.Element | null;
4
7
  renderFooter: () => JSX.Element;
5
- messagesBodyRef: import("vue").Ref<HTMLElement | {
8
+ messagesBodyRef: Ref<HTMLElement | {
6
9
  $el: HTMLElement;
7
10
  } | undefined>;
8
- inputRef: import("vue").Ref<HTMLInputElement | undefined>;
9
- inputValue: import("vue").Ref<string>;
11
+ inputRef: Ref<HTMLInputElement | undefined>;
12
+ inputValue: Ref<string>;
10
13
  handleSendMessage: () => Promise<void>;
11
14
  handleMessagesScroll: (e: Event) => void;
12
15
  scrollToBottom: () => void;
16
+ editingMessage: Ref<ChatMessageData | null>;
13
17
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{}>>, {}, {}>;
14
18
  export default _default;
@@ -23,13 +23,16 @@ const upload_1 = require("../../../upload");
23
23
  const flex_1 = require("../../../flex");
24
24
  const _utils_1 = require("../../../_utils");
25
25
  const typography_1 = require("../../../typography");
26
+ const list_1 = require("../../../list");
27
+ const _mixins_1 = require("../../../_mixins");
26
28
  const ChatMessages_1 = __importDefault(require("../ChatMessages"));
27
29
  const icons_1 = require("../../../_internal/icons");
28
30
  const SENDING_DELAY = 100;
29
31
  exports.default = (0, vue_1.defineComponent)({
30
32
  name: 'ChatMainArea',
31
33
  setup(_, { slots }) {
32
- const { mergedClsPrefixRef, mergedThemeRef, selectedChatRef, messagesRef, typingChatIdsRef, messagesLoadingRef, messagesLoadingCountRef, headerButtonPropsRef, headerIconPropsRef, headerShareButtonPropsRef, headerProfileButtonPropsRef, headerCloseButtonPropsRef, headerShareIconPropsRef, headerProfileIconPropsRef, messageUploadPropsRef, footerInputPropsRef, footerButtonPropsRef, footerUploadPropsRef, footerIconPropsRef, inputPlaceholderRef, retryTextRef, typingTextRef, closeButtonTextRef, shareButtonTooltipRef, profileButtonTooltipRef, unreadNotificationTextRef, notificationsShownSetRef, unreadCountsBeforeReadRef, markNotificationShown, handleMessageSend, handleMessageRetry, handleFooterInputChange, onAttachmentUpload, onChatClose, onChatShare, onUserProfile, onMessagesScrollToTop, onMessagesScrollToBottom
34
+ const { localeRef } = (0, _mixins_1.useLocale)('Chat');
35
+ const { mergedClsPrefixRef, mergedThemeRef, selectedChatRef, messagesRef, typingChatIdsRef, messagesLoadingRef, messagesLoadingCountRef, headerButtonPropsRef, headerIconPropsRef, headerShareButtonPropsRef, headerProfileButtonPropsRef, headerCloseButtonPropsRef, headerShareIconPropsRef, headerProfileIconPropsRef, messageUploadPropsRef, footerInputPropsRef, footerButtonPropsRef, footerUploadPropsRef, footerIconPropsRef, footerSuffixIconPropsRef, inputPlaceholderRef, retryTextRef, typingTextRef, closeButtonTextRef, shareButtonTooltipRef, profileButtonTooltipRef, unreadNotificationTextRef, notificationsShownSetRef, unreadCountsBeforeReadRef, markNotificationShown, handleMessageSend, handleMessageRetry, handleFooterInputChange, startEditingMessage: startEditingMessageRef, editMessageIdRef, bubbleActionsRef, onAttachmentUpload, onChatClose, onChatShare, onUserProfile, onMessagesScrollToTop, onMessagesScrollToBottom
33
36
  // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
34
37
  } = (0, vue_1.inject)(interface_1.chatInjectionKey);
35
38
  const messagesBodyRef = (0, vue_1.ref)();
@@ -40,6 +43,7 @@ exports.default = (0, vue_1.defineComponent)({
40
43
  const lastScrollTop = (0, vue_1.ref)(0);
41
44
  const scrollTopFired = (0, vue_1.ref)(false);
42
45
  const scrollBottomFired = (0, vue_1.ref)(false);
46
+ const editingMessage = (0, vue_1.ref)(null);
43
47
  const unreadMessagesCount = (0, vue_1.computed)(() => {
44
48
  if (!messagesRef.value)
45
49
  return 0;
@@ -63,6 +67,10 @@ exports.default = (0, vue_1.defineComponent)({
63
67
  shouldScrollOnLoad.value = true;
64
68
  attachmentFileList.value = [];
65
69
  uploadedAttachmentsMap.value.clear();
70
+ editingMessage.value = null;
71
+ if (editMessageIdRef) {
72
+ editMessageIdRef.value = null;
73
+ }
66
74
  if (unreadBeforeRead > 0 &&
67
75
  !notificationsShownSetRef.value.has(newChat.id)) {
68
76
  hasUnreadMessages.value = true;
@@ -194,8 +202,9 @@ exports.default = (0, vue_1.defineComponent)({
194
202
  buttons.push((0, vue_1.h)(tooltip_1.UTooltip, null, {
195
203
  trigger: () => ((0, vue_1.h)(button_1.UButton, Object.assign({ secondary: true, circle: true, size: "large" }, shareButtonProps, { theme: mergedThemeRef.value.peers.Button, themeOverrides: mergedThemeRef.value.peerOverrides
196
204
  .Button, onClick: () => { var _a; return (_a = onChatShare === null || onChatShare === void 0 ? void 0 : onChatShare.value) === null || _a === void 0 ? void 0 : _a.call(onChatShare); } }), {
197
- default: () => ((0, vue_1.h)(icon_1.UIcon, Object.assign({ size: 20 }, shareIconProps, { theme: mergedThemeRef.value.peers.Icon, themeOverrides: mergedThemeRef.value.peerOverrides
198
- .Icon }), {
205
+ default: () => ((0, vue_1.h)(icon_1.UIcon, Object.assign({ size: 20 }, shareIconProps, { theme: mergedThemeRef.value.peers
206
+ .HeaderShareIcon, themeOverrides: mergedThemeRef.value.peerOverrides
207
+ .HeaderShareIcon }), {
199
208
  default: () => ((0, vue_1.h)(icons_1.ArrowHookUpRight, null))
200
209
  }))
201
210
  })),
@@ -204,8 +213,9 @@ exports.default = (0, vue_1.defineComponent)({
204
213
  buttons.push((0, vue_1.h)(tooltip_1.UTooltip, null, {
205
214
  trigger: () => ((0, vue_1.h)(button_1.UButton, Object.assign({ secondary: true, circle: true, size: "large" }, profileButtonProps, { theme: mergedThemeRef.value.peers.Button, themeOverrides: mergedThemeRef.value.peerOverrides
206
215
  .Button, onClick: () => { var _a; return (_a = onUserProfile === null || onUserProfile === void 0 ? void 0 : onUserProfile.value) === null || _a === void 0 ? void 0 : _a.call(onUserProfile); } }), {
207
- default: () => ((0, vue_1.h)(icon_1.UIcon, Object.assign({ size: 20 }, profileIconProps, { theme: mergedThemeRef.value.peers.Icon, themeOverrides: mergedThemeRef.value.peerOverrides
208
- .Icon }), {
216
+ default: () => ((0, vue_1.h)(icon_1.UIcon, Object.assign({ size: 20 }, profileIconProps, { theme: mergedThemeRef.value.peers
217
+ .HeaderProfileIcon, themeOverrides: mergedThemeRef.value.peerOverrides
218
+ .HeaderProfileIcon }), {
209
219
  default: () => (0, vue_1.h)(icons_1.PersonNote, null)
210
220
  }))
211
221
  })),
@@ -226,9 +236,33 @@ exports.default = (0, vue_1.defineComponent)({
226
236
  messageAttachment: slots.messageAttachment,
227
237
  messageAttachmentTitle: slots.messageAttachmentTitle,
228
238
  messageAttachmentSubtitle: slots.messageAttachmentSubtitle,
229
- messageStatus: slots.messageStatus
239
+ messageStatus: slots.messageStatus,
240
+ bubbleActions: slots.bubbleActions
230
241
  }));
231
242
  };
243
+ const startEditingMessage = (message) => {
244
+ editingMessage.value = message;
245
+ if (editMessageIdRef) {
246
+ editMessageIdRef.value = message.id;
247
+ }
248
+ inputValue.value =
249
+ typeof message.content === 'string' ? message.content : '';
250
+ attachmentFileList.value = [];
251
+ uploadedAttachmentsMap.value.clear();
252
+ };
253
+ const cancelEditingMessage = () => {
254
+ editingMessage.value = null;
255
+ if (editMessageIdRef) {
256
+ editMessageIdRef.value = null;
257
+ }
258
+ inputValue.value = '';
259
+ if (selectedChatRef.value) {
260
+ inputValue.value = chatInputs.value[selectedChatRef.value.id] || '';
261
+ }
262
+ };
263
+ if (startEditingMessageRef) {
264
+ startEditingMessageRef.value = startEditingMessage;
265
+ }
232
266
  const isSending = (0, vue_1.ref)(false);
233
267
  const handleSendMessage = () => __awaiter(this, void 0, void 0, function* () {
234
268
  if (isSending.value) {
@@ -236,6 +270,36 @@ exports.default = (0, vue_1.defineComponent)({
236
270
  }
237
271
  const hasContent = inputValue.value.trim();
238
272
  const hasAttachments = attachmentFileList.value.length > 0;
273
+ if ((editMessageIdRef === null || editMessageIdRef === void 0 ? void 0 : editMessageIdRef.value) && hasContent) {
274
+ isSending.value = true;
275
+ try {
276
+ const messageToEdit = editingMessage.value;
277
+ if (messageToEdit) {
278
+ const updatedMessage = Object.assign(Object.assign({}, messageToEdit), { content: inputValue.value.trim() });
279
+ const bubbleActions = bubbleActionsRef === null || bubbleActionsRef === void 0 ? void 0 : bubbleActionsRef.value;
280
+ if (bubbleActions) {
281
+ const editAction = bubbleActions.find((action) => action.key === interface_1.ChatBubbleActionKey.EDIT);
282
+ if (editAction) {
283
+ editAction.handler(updatedMessage);
284
+ }
285
+ }
286
+ }
287
+ editingMessage.value = null;
288
+ if (editMessageIdRef) {
289
+ editMessageIdRef.value = null;
290
+ }
291
+ inputValue.value = '';
292
+ if (selectedChatRef.value) {
293
+ chatInputs.value[selectedChatRef.value.id] = '';
294
+ }
295
+ }
296
+ finally {
297
+ setTimeout(() => {
298
+ isSending.value = false;
299
+ }, SENDING_DELAY);
300
+ }
301
+ return;
302
+ }
239
303
  if ((hasContent || hasAttachments) &&
240
304
  selectedChatRef.value &&
241
305
  handleMessageSend) {
@@ -296,17 +360,37 @@ exports.default = (0, vue_1.defineComponent)({
296
360
  }))();
297
361
  }
298
362
  };
363
+ const renderEditingBlock = () => {
364
+ if (!(editMessageIdRef === null || editMessageIdRef === void 0 ? void 0 : editMessageIdRef.value) || !editingMessage.value)
365
+ return null;
366
+ return ((0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__editing-block` },
367
+ (0, vue_1.h)(list_1.UList, { bordered: true }, {
368
+ default: () => {
369
+ var _a;
370
+ return ((0, vue_1.h)(list_1.UListItem, { header: { text: localeRef.value.editingTitle }, description: { text: ((_a = editingMessage.value) === null || _a === void 0 ? void 0 : _a.content) || '' } }, {
371
+ suffix: () => ((0, vue_1.h)(button_1.UButton, { text: true, circle: true, size: "small", onClick: cancelEditingMessage, theme: mergedThemeRef.value.peers.Button, themeOverrides: mergedThemeRef.value.peerOverrides.Button }, {
372
+ icon: () => ((0, vue_1.h)(icon_1.UIcon, { size: 16 }, {
373
+ default: () => (0, vue_1.h)(icons_1.CloseIcon, null)
374
+ }))
375
+ }))
376
+ }));
377
+ }
378
+ })));
379
+ };
299
380
  const renderFooter = () => {
300
381
  return ((0, vue_1.h)("div", { class: `${mergedClsPrefixRef.value}-chat-main__footer` },
301
382
  (0, vue_1.h)(upload_1.UUpload, Object.assign({ abstract: true, multiple: true, defaultUpload: false, fileList: attachmentFileList.value, onUpdateFileList: handleFileListUpdate }, footerUploadPropsRef.value), {
302
- default: () => ((0, vue_1.h)(flex_1.UFlex, { align: "center", size: "small", class: `${mergedClsPrefixRef.value}-chat-main__input-container` }, {
383
+ default: () => ((0, vue_1.h)(flex_1.UFlex, { align: "end", size: "small", wrap: false, class: `${mergedClsPrefixRef.value}-chat-main__input-container` }, {
303
384
  default: () => ((0, vue_1.h)(vue_1.Fragment, null,
304
385
  (0, vue_1.h)(upload_1.UUploadTrigger, { abstract: true }, {
305
386
  default: ({ handleClick }) => {
306
387
  var _a;
307
- return ((0, vue_1.h)(button_1.UButton, Object.assign({ secondary: true, size: "large", class: `${mergedClsPrefixRef.value}-chat-main__attach-btn` }, footerButtonPropsRef.value, { disabled: (_a = footerInputPropsRef.value) === null || _a === void 0 ? void 0 : _a.disabled, theme: mergedThemeRef.value.peers.Button, themeOverrides: mergedThemeRef.value.peerOverrides.Button, onClick: handleClick }), {
308
- default: () => ((0, vue_1.h)(icon_1.UIcon, Object.assign({ size: 24 }, footerIconPropsRef.value, { theme: mergedThemeRef.value.peers.Icon, themeOverrides: mergedThemeRef.value.peerOverrides.Icon }), {
309
- default: () => (0, vue_1.h)(icons_1.AttachIcon, null)
388
+ return ((0, vue_1.h)(button_1.UButton, Object.assign({ secondary: true, size: "large", class: `${mergedClsPrefixRef.value}-chat-main__attach-btn` }, footerButtonPropsRef.value, { disabled: ((_a = footerInputPropsRef.value) === null || _a === void 0 ? void 0 : _a.disabled) ||
389
+ !!(editMessageIdRef === null || editMessageIdRef === void 0 ? void 0 : editMessageIdRef.value), theme: mergedThemeRef.value.peers.Button, themeOverrides: mergedThemeRef.value.peerOverrides.Button, onClick: handleClick }), {
390
+ default: () => ((0, vue_1.h)(icon_1.UIcon, Object.assign({ size: 24 }, footerIconPropsRef.value, { theme: mergedThemeRef.value.peers
391
+ .FooterAttachIcon, themeOverrides: mergedThemeRef.value.peerOverrides
392
+ .FooterAttachIcon }), {
393
+ default: () => (0, _utils_1.resolveSlot)(slots.footerAttachIcon, () => [(0, vue_1.h)(icons_1.AttachIcon, null)])
310
394
  }))
311
395
  }));
312
396
  }
@@ -322,20 +406,32 @@ exports.default = (0, vue_1.defineComponent)({
322
406
  e.stopPropagation();
323
407
  void handleSendMessage();
324
408
  }
325
- } }))))
409
+ } }), {
410
+ prefix: () => renderEditingBlock(),
411
+ suffix: () => ((0, vue_1.h)(icon_1.UIcon, Object.assign({ size: 24, class: `${mergedClsPrefixRef.value}-chat-main__input-suffix` }, footerSuffixIconPropsRef.value, { theme: mergedThemeRef.value.peers.FooterSuffixIcon, themeOverrides: mergedThemeRef.value.peerOverrides
412
+ .FooterSuffixIcon, onClick: () => {
413
+ void handleSendMessage();
414
+ } }), {
415
+ default: () => (0, _utils_1.resolveSlot)(slots.footerSuffixIcon, () => [
416
+ (0, vue_1.h)(icons_1.SendFilled, null)
417
+ ])
418
+ }))
419
+ })))
326
420
  }))
327
421
  })));
328
422
  };
329
423
  return {
330
424
  renderHeader,
331
425
  renderMessages,
426
+ renderEditingBlock,
332
427
  renderFooter,
333
428
  messagesBodyRef,
334
429
  inputRef,
335
430
  inputValue,
336
431
  handleSendMessage,
337
432
  handleMessagesScroll,
338
- scrollToBottom
433
+ scrollToBottom,
434
+ editingMessage
339
435
  };
340
436
  },
341
437
  render() {
@@ -38,6 +38,7 @@ declare const _default: import("vue").DefineComponent<{}, {
38
38
  footerBorderColor: string;
39
39
  inputBackgroundColor: string;
40
40
  inputBorderColor: string;
41
+ inputSuffixColor: string;
41
42
  unreadNotificationBackgroundColor: string;
42
43
  unreadNotificationTextColor: string;
43
44
  typingIndicatorColor: string;
@@ -572,14 +573,6 @@ declare const _default: import("vue").DefineComponent<{}, {
572
573
  iconSizeLarge: string;
573
574
  rippleDuration: string;
574
575
  }, any>;
575
- Icon: import("../../../_mixins").Theme<"Icon", {
576
- color: string;
577
- opacity1Depth: string;
578
- opacity2Depth: string;
579
- opacity3Depth: string;
580
- opacity4Depth: string;
581
- opacity5Depth: string;
582
- }, any>;
583
576
  List: import("../../../_mixins").Theme<"List", {
584
577
  iconSize: string;
585
578
  iconSpace: string;
@@ -675,6 +668,46 @@ declare const _default: import("vue").DefineComponent<{}, {
675
668
  codeColor: string;
676
669
  codeBorder: string;
677
670
  }, any>;
671
+ StatusIcon: import("../../../_mixins").Theme<"Icon", {
672
+ color: string;
673
+ opacity1Depth: string;
674
+ opacity2Depth: string;
675
+ opacity3Depth: string;
676
+ opacity4Depth: string;
677
+ opacity5Depth: string;
678
+ }, any>;
679
+ FooterAttachIcon: import("../../../_mixins").Theme<"Icon", {
680
+ color: string;
681
+ opacity1Depth: string;
682
+ opacity2Depth: string;
683
+ opacity3Depth: string;
684
+ opacity4Depth: string;
685
+ opacity5Depth: string;
686
+ }, any>;
687
+ FooterSuffixIcon: import("../../../_mixins").Theme<"Icon", {
688
+ color: string;
689
+ opacity1Depth: string;
690
+ opacity2Depth: string;
691
+ opacity3Depth: string;
692
+ opacity4Depth: string;
693
+ opacity5Depth: string;
694
+ }, any>;
695
+ HeaderShareIcon: import("../../../_mixins").Theme<"Icon", {
696
+ color: string;
697
+ opacity1Depth: string;
698
+ opacity2Depth: string;
699
+ opacity3Depth: string;
700
+ opacity4Depth: string;
701
+ opacity5Depth: string;
702
+ }, any>;
703
+ HeaderProfileIcon: import("../../../_mixins").Theme<"Icon", {
704
+ color: string;
705
+ opacity1Depth: string;
706
+ opacity2Depth: string;
707
+ opacity3Depth: string;
708
+ opacity4Depth: string;
709
+ opacity5Depth: string;
710
+ }, any>;
678
711
  };
679
712
  peerOverrides: {
680
713
  Input?: {
@@ -894,17 +927,37 @@ declare const _default: import("vue").DefineComponent<{}, {
894
927
  [x: string]: any;
895
928
  } | undefined;
896
929
  } | undefined;
897
- Icon?: {
930
+ List?: {
898
931
  peers?: {
899
932
  [x: string]: any;
900
933
  } | undefined;
901
934
  } | undefined;
902
- List?: {
935
+ Typography?: {
903
936
  peers?: {
904
937
  [x: string]: any;
905
938
  } | undefined;
906
939
  } | undefined;
907
- Typography?: {
940
+ StatusIcon?: {
941
+ peers?: {
942
+ [x: string]: any;
943
+ } | undefined;
944
+ } | undefined;
945
+ FooterAttachIcon?: {
946
+ peers?: {
947
+ [x: string]: any;
948
+ } | undefined;
949
+ } | undefined;
950
+ FooterSuffixIcon?: {
951
+ peers?: {
952
+ [x: string]: any;
953
+ } | undefined;
954
+ } | undefined;
955
+ HeaderShareIcon?: {
956
+ peers?: {
957
+ [x: string]: any;
958
+ } | undefined;
959
+ } | undefined;
960
+ HeaderProfileIcon?: {
908
961
  peers?: {
909
962
  [x: string]: any;
910
963
  } | undefined;
@@ -25,6 +25,11 @@ export declare enum ChatMarkType {
25
25
  EVENT = "event",
26
26
  DIVIDER = "divider"
27
27
  }
28
+ export declare enum ChatBubbleActionKey {
29
+ EDIT = "edit",
30
+ COPY = "copy",
31
+ DELETE = "delete"
32
+ }
28
33
  export type ChatId = string | number | symbol;
29
34
  export interface ChatListItemData {
30
35
  id: ChatId;
@@ -150,6 +155,7 @@ export interface ChatProps {
150
155
  footerUploadProps?: Partial<UploadProps>;
151
156
  footerUploadTriggerProps?: any;
152
157
  footerIconProps?: Partial<IconProps>;
158
+ footerSuffixIconProps?: Partial<IconProps>;
153
159
  emptyProps?: Partial<EmptyProps>;
154
160
  retryText?: string;
155
161
  typingText?: string;
@@ -164,6 +170,7 @@ export interface ChatProps {
164
170
  onChatSelect?: OnChatSelect;
165
171
  onMessageSend?: OnMessageSend;
166
172
  onMessageRetry?: (message: ChatMessageData) => void;
173
+ bubbleActions?: ChatBubbleAction[];
167
174
  onAttachmentUpload?: OnAttachmentUpload;
168
175
  onAttachmentDownload?: OnAttachmentDownload;
169
176
  onFilterChange?: OnFilterChange;
@@ -190,6 +197,7 @@ export interface ChatSlots {
190
197
  messageAttachment?: (message: ChatMessageData) => VNodeChild;
191
198
  messageAttachmentTitle?: (file: any) => VNodeChild;
192
199
  messageAttachmentSubtitle?: (file: any) => VNodeChild;
200
+ bubbleActions?: (message: ChatMessageData) => VNodeChild;
193
201
  }
194
202
  export interface ChatListItemSlots {
195
203
  avatar?: () => VNodeChild;
@@ -203,6 +211,12 @@ export interface ChatMessageSlots {
203
211
  timestamp?: () => VNodeChild;
204
212
  status?: () => VNodeChild;
205
213
  }
214
+ export interface ChatBubbleAction {
215
+ key: ChatBubbleActionKey | string;
216
+ label: string | (() => VNodeChild);
217
+ handler: (message: ChatMessageData) => void;
218
+ visible?: (message: ChatMessageData) => boolean;
219
+ }
206
220
  export interface ChatListHeaderProps {
207
221
  title?: string | (() => VNodeChild);
208
222
  actions?: Array<() => VNodeChild>;
@@ -282,6 +296,7 @@ export declare const chatInjectionKey: InjectionKey<{
282
296
  footerUploadPropsRef: Ref<Partial<UploadProps> | undefined>;
283
297
  footerUploadTriggerPropsRef: Ref<Record<string, any> | undefined>;
284
298
  footerIconPropsRef: Ref<Partial<IconProps> | undefined>;
299
+ footerSuffixIconPropsRef: Ref<Partial<IconProps> | undefined>;
285
300
  inputPlaceholderRef: Ref<string>;
286
301
  retryTextRef: Ref<string>;
287
302
  typingTextRef: Ref<string>;
@@ -295,6 +310,9 @@ export declare const chatInjectionKey: InjectionKey<{
295
310
  handleChatSelect: (chatId: ChatId) => void;
296
311
  handleMessageSend: (content: string, attachments?: ChatAttachment[]) => void;
297
312
  handleMessageRetry: (message: ChatMessageData) => void;
313
+ startEditingMessage?: Ref<((message: ChatMessageData) => void) | undefined>;
314
+ editMessageIdRef?: Ref<ChatId | null>;
315
+ bubbleActionsRef?: Ref<ChatBubbleAction[] | undefined>;
298
316
  handleFooterInputChange: (value: string, chatId: ChatId) => void;
299
317
  markMessagesAsRead?: (chatId: ChatId) => void;
300
318
  handleFilterChange: (filter: {
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.chatInjectionKey = exports.ChatMarkType = exports.ChatMessageType = exports.MessageStatus = void 0;
3
+ exports.chatInjectionKey = exports.ChatBubbleActionKey = exports.ChatMarkType = exports.ChatMessageType = exports.MessageStatus = void 0;
4
4
  const _utils_1 = require("../../_utils");
5
5
  var MessageStatus;
6
6
  (function (MessageStatus) {
@@ -22,4 +22,10 @@ var ChatMarkType;
22
22
  ChatMarkType["EVENT"] = "event";
23
23
  ChatMarkType["DIVIDER"] = "divider";
24
24
  })(ChatMarkType || (exports.ChatMarkType = ChatMarkType = {}));
25
+ var ChatBubbleActionKey;
26
+ (function (ChatBubbleActionKey) {
27
+ ChatBubbleActionKey["EDIT"] = "edit";
28
+ ChatBubbleActionKey["COPY"] = "copy";
29
+ ChatBubbleActionKey["DELETE"] = "delete";
30
+ })(ChatBubbleActionKey || (exports.ChatBubbleActionKey = ChatBubbleActionKey = {}));
25
31
  exports.chatInjectionKey = (0, _utils_1.createInjectionKey)('chat');