@tencentcloud/chat-uikit-react 0.0.3 → 1.0.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 (316) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/cjs/_virtual/_commonjsHelpers.js +1 -0
  3. package/dist/cjs/_virtual/tim-js.js +1 -0
  4. package/dist/cjs/components/Checkbox/index.d.ts +16 -0
  5. package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  6. package/dist/cjs/components/ConversationCreate/ConversationCreate.js +1 -1
  7. package/dist/cjs/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  8. package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  9. package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
  10. package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  11. package/dist/cjs/components/ConversationPreview/utils.js +1 -1
  12. package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
  13. package/dist/cjs/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  14. package/dist/cjs/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  15. package/dist/cjs/components/Icon/Icon.d.ts +14 -0
  16. package/dist/cjs/components/Icon/config.js +1 -1
  17. package/dist/cjs/components/Icon/images/like.png.js +1 -0
  18. package/dist/cjs/components/Icon/images/liked.png.js +1 -0
  19. package/dist/cjs/components/Icon/images/living.png.js +1 -0
  20. package/dist/cjs/components/Icon/images/member.png.js +1 -0
  21. package/dist/cjs/components/Icon/images/owner.png.js +1 -0
  22. package/dist/cjs/components/Icon/images/send.png.js +1 -0
  23. package/dist/cjs/components/Icon/images/union.png.js +1 -0
  24. package/dist/cjs/components/Icon/images/unlike.png.js +1 -0
  25. package/dist/cjs/components/Icon/images/unliked.png.js +1 -0
  26. package/dist/cjs/components/Icon/images/ununion.png.js +1 -0
  27. package/dist/cjs/components/Icon/images/unvector.png.js +1 -0
  28. package/dist/cjs/components/Icon/images/vector.png.js +1 -0
  29. package/dist/cjs/components/Icon/images/voice.png.js +1 -0
  30. package/dist/cjs/components/Icon/type.d.ts +47 -0
  31. package/dist/cjs/components/Icon/type.js +1 -1
  32. package/dist/cjs/components/Input/Input.d.ts +7 -1
  33. package/dist/cjs/components/Model/index.d.ts +9 -0
  34. package/dist/cjs/components/Plugins/index.d.ts +17 -0
  35. package/dist/cjs/components/Plugins/index.js +1 -1
  36. package/dist/cjs/components/Popup/index.d.ts +12 -0
  37. package/dist/cjs/components/Switch/Switch.d.ts +16 -0
  38. package/dist/cjs/components/TUIChat/TUIChat.d.ts +8 -2
  39. package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
  40. package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
  41. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  42. package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +1 -1
  43. package/dist/cjs/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  44. package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
  45. package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  46. package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  47. package/dist/cjs/components/TUIChat/unitls.js +1 -1
  48. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  49. package/dist/cjs/components/TUIChatHeader/TUIChatHeader.js +1 -1
  50. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  51. package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  52. package/dist/cjs/components/TUIConversation/TUIConversation.js +1 -1
  53. package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
  54. package/dist/cjs/components/TUIConversationList/hooks/useConversationList.js +1 -1
  55. package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  56. package/dist/cjs/components/TUIKit/TUIKit.d.ts +2 -1
  57. package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
  58. package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  59. package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +1 -1
  60. package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
  61. package/dist/cjs/components/TUIMessage/MessageAudio.js +1 -1
  62. package/dist/cjs/components/TUIMessage/MessageAvatar.js +1 -0
  63. package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
  64. package/dist/cjs/components/TUIMessage/MessageContext.d.ts +3 -1
  65. package/dist/cjs/components/TUIMessage/MessageContext.js +1 -1
  66. package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
  67. package/dist/cjs/components/TUIMessage/MessageFile.js +1 -1
  68. package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
  69. package/dist/cjs/components/TUIMessage/MessageMerger.js +1 -1
  70. package/dist/cjs/components/TUIMessage/MessageName.js +1 -0
  71. package/dist/cjs/components/TUIMessage/MessagePlugins.d.ts +24 -0
  72. package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
  73. package/dist/cjs/components/TUIMessage/MessageProgress.js +1 -0
  74. package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
  75. package/dist/cjs/components/TUIMessage/MessageStatus.js +1 -1
  76. package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
  77. package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
  78. package/dist/cjs/components/TUIMessage/MessageTip.js +1 -1
  79. package/dist/cjs/components/TUIMessage/TUIMessage.d.ts +23 -3
  80. package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
  81. package/dist/cjs/components/TUIMessage/TUIMessageDefault.js +1 -1
  82. package/dist/cjs/components/TUIMessage/hooks/useMessageContextHandler.js +1 -1
  83. package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  84. package/dist/cjs/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  85. package/dist/cjs/components/TUIMessage/hooks/useMessageReply.js +1 -1
  86. package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
  87. package/dist/cjs/components/TUIMessageInput/EmojiPicker.js +1 -1
  88. package/dist/cjs/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  89. package/dist/cjs/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  90. package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
  91. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  92. package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
  93. package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  94. package/dist/cjs/components/TUIMessageInput/Transmitter.js +1 -0
  95. package/dist/cjs/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  96. package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  97. package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  98. package/dist/cjs/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  99. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  100. package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  101. package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  102. package/dist/cjs/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  103. package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
  104. package/dist/cjs/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  105. package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
  106. package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
  107. package/dist/cjs/components/TUIProfile/hooks/useMyProfile.js +1 -1
  108. package/dist/cjs/components/Toast/index.d.ts +11 -0
  109. package/dist/cjs/components/untils.js +1 -1
  110. package/dist/cjs/constants.js +1 -1
  111. package/dist/cjs/context/ComponentContext.d.ts +1 -1
  112. package/dist/cjs/context/TUIChatActionContext.d.ts +11 -2
  113. package/dist/cjs/context/TUIChatStateContext.d.ts +10 -0
  114. package/dist/cjs/context/TUIConversationContext.js +1 -1
  115. package/dist/cjs/context/TUIMessageContext.d.ts +22 -1
  116. package/dist/cjs/context/TUIMessageContext.js +1 -1
  117. package/dist/cjs/context/TUIMessageInputContext.d.ts +4 -5
  118. package/dist/cjs/hooks/useConversation.js +1 -1
  119. package/dist/cjs/index.css +1 -1
  120. package/dist/cjs/index.d.css +342 -8
  121. package/dist/cjs/index.d.ts +18 -4
  122. package/dist/cjs/index.js +1 -1
  123. package/dist/esm/_virtual/_commonjsHelpers.js +1 -0
  124. package/dist/esm/_virtual/tim-js.js +1 -0
  125. package/dist/esm/components/Checkbox/index.d.ts +16 -0
  126. package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
  127. package/dist/esm/components/ConversationCreate/ConversationCreate.js +1 -1
  128. package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
  129. package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
  130. package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
  131. package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
  132. package/dist/esm/components/ConversationPreview/utils.js +1 -1
  133. package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
  134. package/dist/esm/components/DivWithEdit/DivWithEdit.d.ts +16 -0
  135. package/dist/esm/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
  136. package/dist/esm/components/Icon/Icon.d.ts +14 -0
  137. package/dist/esm/components/Icon/config.js +1 -1
  138. package/dist/esm/components/Icon/images/like.png.js +1 -0
  139. package/dist/esm/components/Icon/images/liked.png.js +1 -0
  140. package/dist/esm/components/Icon/images/living.png.js +1 -0
  141. package/dist/esm/components/Icon/images/member.png.js +1 -0
  142. package/dist/esm/components/Icon/images/owner.png.js +1 -0
  143. package/dist/esm/components/Icon/images/send.png.js +1 -0
  144. package/dist/esm/components/Icon/images/union.png.js +1 -0
  145. package/dist/esm/components/Icon/images/unlike.png.js +1 -0
  146. package/dist/esm/components/Icon/images/unliked.png.js +1 -0
  147. package/dist/esm/components/Icon/images/ununion.png.js +1 -0
  148. package/dist/esm/components/Icon/images/unvector.png.js +1 -0
  149. package/dist/esm/components/Icon/images/vector.png.js +1 -0
  150. package/dist/esm/components/Icon/images/voice.png.js +1 -0
  151. package/dist/esm/components/Icon/type.d.ts +47 -0
  152. package/dist/esm/components/Icon/type.js +1 -1
  153. package/dist/esm/components/Input/Input.d.ts +7 -1
  154. package/dist/esm/components/Model/index.d.ts +9 -0
  155. package/dist/esm/components/Plugins/index.d.ts +17 -0
  156. package/dist/esm/components/Plugins/index.js +1 -1
  157. package/dist/esm/components/Popup/index.d.ts +12 -0
  158. package/dist/esm/components/Switch/Switch.d.ts +16 -0
  159. package/dist/esm/components/TUIChat/TUIChat.d.ts +8 -2
  160. package/dist/esm/components/TUIChat/TUIChat.js +1 -1
  161. package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
  162. package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
  163. package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +1 -1
  164. package/dist/esm/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
  165. package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
  166. package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
  167. package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
  168. package/dist/esm/components/TUIChat/unitls.js +1 -1
  169. package/dist/esm/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
  170. package/dist/esm/components/TUIChatHeader/TUIChatHeader.js +1 -1
  171. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
  172. package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
  173. package/dist/esm/components/TUIConversation/TUIConversation.js +1 -1
  174. package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
  175. package/dist/esm/components/TUIConversationList/hooks/useConversationList.js +1 -1
  176. package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
  177. package/dist/esm/components/TUIKit/TUIKit.d.ts +2 -1
  178. package/dist/esm/components/TUIKit/TUIKit.js +1 -1
  179. package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
  180. package/dist/esm/components/TUIKit/hooks/useTUIKit.js +1 -1
  181. package/dist/esm/components/TUIManage/TUIManage.js +1 -1
  182. package/dist/esm/components/TUIMessage/MessageAudio.js +1 -1
  183. package/dist/esm/components/TUIMessage/MessageAvatar.js +1 -0
  184. package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
  185. package/dist/esm/components/TUIMessage/MessageContext.d.ts +3 -1
  186. package/dist/esm/components/TUIMessage/MessageContext.js +1 -1
  187. package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
  188. package/dist/esm/components/TUIMessage/MessageFile.js +1 -1
  189. package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
  190. package/dist/esm/components/TUIMessage/MessageMerger.js +1 -1
  191. package/dist/esm/components/TUIMessage/MessageName.js +1 -0
  192. package/dist/esm/components/TUIMessage/MessagePlugins.d.ts +24 -0
  193. package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
  194. package/dist/esm/components/TUIMessage/MessageProgress.js +1 -0
  195. package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
  196. package/dist/esm/components/TUIMessage/MessageStatus.js +1 -1
  197. package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
  198. package/dist/esm/components/TUIMessage/MessageText.js +1 -1
  199. package/dist/esm/components/TUIMessage/MessageTip.js +1 -1
  200. package/dist/esm/components/TUIMessage/TUIMessage.d.ts +23 -3
  201. package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
  202. package/dist/esm/components/TUIMessage/TUIMessageDefault.js +1 -1
  203. package/dist/esm/components/TUIMessage/hooks/useMessageContextHandler.js +1 -1
  204. package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
  205. package/dist/esm/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
  206. package/dist/esm/components/TUIMessage/hooks/useMessageReply.js +1 -1
  207. package/dist/esm/components/TUIMessage/utils/index.js +1 -1
  208. package/dist/esm/components/TUIMessageInput/EmojiPicker.js +1 -1
  209. package/dist/esm/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
  210. package/dist/esm/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
  211. package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
  212. package/dist/esm/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
  213. package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
  214. package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
  215. package/dist/esm/components/TUIMessageInput/Transmitter.js +1 -0
  216. package/dist/esm/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
  217. package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
  218. package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
  219. package/dist/esm/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
  220. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
  221. package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
  222. package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
  223. package/dist/esm/components/TUIMessageList/TUIMessageList.d.ts +3 -1
  224. package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
  225. package/dist/esm/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
  226. package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
  227. package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
  228. package/dist/esm/components/TUIProfile/hooks/useMyProfile.js +1 -1
  229. package/dist/esm/components/Toast/index.d.ts +11 -0
  230. package/dist/esm/components/untils.js +1 -1
  231. package/dist/esm/constants.js +1 -1
  232. package/dist/esm/context/ComponentContext.d.ts +1 -1
  233. package/dist/esm/context/TUIChatActionContext.d.ts +11 -2
  234. package/dist/esm/context/TUIChatStateContext.d.ts +10 -0
  235. package/dist/esm/context/TUIConversationContext.js +1 -1
  236. package/dist/esm/context/TUIMessageContext.d.ts +22 -1
  237. package/dist/esm/context/TUIMessageContext.js +1 -1
  238. package/dist/esm/context/TUIMessageInputContext.d.ts +4 -5
  239. package/dist/esm/hooks/useConversation.js +1 -1
  240. package/dist/esm/index.css +1 -1
  241. package/dist/esm/index.d.css +342 -8
  242. package/dist/esm/index.d.ts +18 -4
  243. package/dist/esm/index.js +1 -1
  244. package/package.json +2 -3
  245. package/src/components/Icon/config.ts +65 -0
  246. package/src/components/Icon/images/like.png +0 -0
  247. package/src/components/Icon/images/liked.png +0 -0
  248. package/src/components/Icon/images/living.png +0 -0
  249. package/src/components/Icon/images/member.png +0 -0
  250. package/src/components/Icon/images/owner.png +0 -0
  251. package/src/components/Icon/images/send.png +0 -0
  252. package/src/components/Icon/images/union.png +0 -0
  253. package/src/components/Icon/images/unlike.png +0 -0
  254. package/src/components/Icon/images/unliked.png +0 -0
  255. package/src/components/Icon/images/ununion.png +0 -0
  256. package/src/components/Icon/images/unvector.png +0 -0
  257. package/src/components/Icon/images/vector.png +0 -0
  258. package/src/components/Icon/images/voice.png +0 -0
  259. package/src/components/Icon/type.ts +13 -0
  260. package/src/components/Plugins/index.tsx +13 -11
  261. package/src/components/Plugins/styles/layout.scss +2 -1
  262. package/src/components/TUIChat/TUIChat.tsx +47 -8
  263. package/src/components/TUIChat/TUIChatState.tsx +27 -0
  264. package/src/components/TUIChat/hooks/useCreateMessage.tsx +85 -4
  265. package/src/components/TUIChat/hooks/useCreateTUIChatStateContext.tsx +12 -0
  266. package/src/components/TUIChat/hooks/useHandleMessage.tsx +24 -0
  267. package/src/components/TUIChat/hooks/useHandleMessageList.tsx +8 -0
  268. package/src/components/TUIChat/hooks/useMessageReceviedListener.tsx +2 -2
  269. package/src/components/TUIChat/unitls.ts +13 -0
  270. package/src/components/TUIChatHeader/TUIChatHeader.tsx +6 -0
  271. package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +37 -18
  272. package/src/components/TUIChatHeader/styles/color.scss +0 -3
  273. package/src/components/TUIChatHeader/styles/layout.scss +8 -4
  274. package/src/components/TUIKit/TUIKit.tsx +8 -5
  275. package/src/components/TUIKit/hooks/useTUIKit.tsx +14 -4
  276. package/src/components/TUIKit/styles/reset.scss +4 -0
  277. package/src/components/TUIMessage/MessageAudio.tsx +61 -2
  278. package/src/components/TUIMessage/MessageAvatar.tsx +38 -0
  279. package/src/components/TUIMessage/MessageBubble.tsx +24 -6
  280. package/src/components/TUIMessage/MessageContext.tsx +5 -2
  281. package/src/components/TUIMessage/MessageCustom.tsx +15 -2
  282. package/src/components/TUIMessage/MessageFile.tsx +9 -3
  283. package/src/components/TUIMessage/MessageImage.tsx +2 -1
  284. package/src/components/TUIMessage/MessageMerger.tsx +2 -1
  285. package/src/components/TUIMessage/MessageName.tsx +41 -0
  286. package/src/components/TUIMessage/MessagePlugins.tsx +81 -14
  287. package/src/components/TUIMessage/MessageProgress.tsx +88 -0
  288. package/src/components/TUIMessage/MessageRevoke.tsx +1 -1
  289. package/src/components/TUIMessage/MessageStatus.tsx +6 -1
  290. package/src/components/TUIMessage/MessageText.tsx +3 -3
  291. package/src/components/TUIMessage/TUIMessage.tsx +68 -16
  292. package/src/components/TUIMessage/TUIMessageDefault.tsx +25 -15
  293. package/src/components/TUIMessage/hooks/useMessagePluginElement.tsx +15 -1
  294. package/src/components/TUIMessage/styles/layout.scss +97 -4
  295. package/src/components/TUIMessage/utils/index.ts +14 -14
  296. package/src/components/TUIMessageInput/EmojiPicker.tsx +7 -1
  297. package/src/components/TUIMessageInput/InputPluginsDefalut.tsx +51 -8
  298. package/src/components/TUIMessageInput/TUIMessageInput.tsx +47 -22
  299. package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +3 -2
  300. package/src/components/TUIMessageInput/Transmitter.tsx +15 -0
  301. package/src/components/TUIMessageInput/hooks/useCreateMessageInputContext.ts +3 -9
  302. package/src/components/TUIMessageInput/hooks/useMessageInputState.tsx +8 -7
  303. package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +28 -30
  304. package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +2 -0
  305. package/src/components/TUIMessageInput/styles/layout.scss +16 -0
  306. package/src/components/TUIMessageList/TUIMessageList.tsx +32 -10
  307. package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +26 -6
  308. package/src/components/TUIMessageList/styles/layout.scss +13 -1
  309. package/src/components/index.ts +12 -0
  310. package/src/constants.ts +3 -0
  311. package/src/context/ComponentContext.tsx +1 -1
  312. package/src/context/TUIChatActionContext.tsx +14 -1
  313. package/src/context/TUIChatStateContext.tsx +8 -0
  314. package/src/context/TUIKitContext.tsx +5 -1
  315. package/src/context/TUIMessageContext.tsx +20 -0
  316. package/src/context/TUIMessageInputContext.tsx +2 -3
@@ -1,4 +1,4 @@
1
- import { useLayoutEffect } from 'react';
1
+ import { useEffect } from 'react';
2
2
  import TIM, { Message } from 'tim-js-sdk';
3
3
  import { useTUIKitContext } from '../../../context';
4
4
 
@@ -10,7 +10,7 @@ export function useMessageReceviedListener(
10
10
  ) => void,
11
11
  ) {
12
12
  const { tim } = useTUIKitContext('useMessageReceviedListener');
13
- useLayoutEffect(() => {
13
+ useEffect(() => {
14
14
  const handleMessageRecevied = (event: any) => {
15
15
  if (customHandler && typeof customHandler === 'function') {
16
16
  customHandler(setMessageList, event);
@@ -53,3 +53,16 @@ export const handleRemoveMessage = (
53
53
  list.splice(index, 1);
54
54
  return list;
55
55
  };
56
+
57
+ export const handleUploadPenddingMessage = (
58
+ messageList: Array<Message>,
59
+ message: Message,
60
+ ) => {
61
+ const list = [...messageList];
62
+ if (!list.some((item:Message) => item.ID === message.ID)) {
63
+ list.push(message);
64
+ }
65
+ const index = list.findIndex((item) => item?.ID === message?.ID);
66
+ list[index] = message;
67
+ return list;
68
+ };
@@ -11,6 +11,8 @@ interface TUIChatHeaderProps {
11
11
  title?: string,
12
12
  TUIChatHeader?: React.ComponentType<TUIChatHeaderDefaultProps>,
13
13
  conversation?: Conversation,
14
+ avatar?: React.ReactElement | string,
15
+ headerOpateIcon?: React.ReactElement | string,
14
16
  }
15
17
 
16
18
  function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
@@ -20,6 +22,8 @@ function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
20
22
  title,
21
23
  conversation: propsConversation,
22
24
  TUIChatHeader: propTUIChatHeader,
25
+ avatar,
26
+ headerOpateIcon,
23
27
  } = props;
24
28
 
25
29
  const { conversation: contextConversation } = useTUIChatStateContext('TUIChatHeader');
@@ -33,6 +37,8 @@ function UnMemoizedTUIChatHeader<T extends TUIChatHeaderProps>(
33
37
  <TUIChatHeaderUIComponent
34
38
  title={title}
35
39
  conversation={conversation}
40
+ avatar={avatar}
41
+ opateIcon={headerOpateIcon}
36
42
  />
37
43
  );
38
44
  }
@@ -9,28 +9,37 @@ import { useTUIKitContext } from '../../context';
9
9
 
10
10
  export interface TUIChatHeaderDefaultProps {
11
11
  title?: string,
12
- avatar?: string,
12
+ avatar?: React.ReactElement | string,
13
13
  isOnline?: boolean,
14
14
  conversation?: Conversation,
15
15
  pluginComponentList?: Array<React.ComponentType>,
16
16
  }
17
17
 
18
- function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
18
+ export interface TUIChatHeaderBasicProps extends TUIChatHeaderDefaultProps {
19
+ isLive?: boolean,
20
+ opateIcon?: React.ReactElement | string,
21
+ }
22
+
23
+ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderBasicProps>(
19
24
  props: PropsWithChildren<T>,
20
25
  ):React.ReactElement {
21
26
  const {
22
- title: propTitle,
27
+ title: propTitle = '',
23
28
  avatar: propAvatar,
24
29
  isOnline,
25
30
  conversation,
31
+ isLive,
32
+ opateIcon,
26
33
  } = props;
27
34
 
28
- const [title, setTitle] = useState('');
29
- const [avatar, setAvatar] = useState('');
35
+ const [title, setTitle] = useState(propTitle);
36
+ const [avatar, setAvatar] = useState<React.ReactElement | string>('');
30
37
 
31
38
  useEffect(() => {
32
39
  setTitle(propTitle);
33
- setAvatar(propAvatar);
40
+ if (propAvatar) {
41
+ setAvatar(propAvatar);
42
+ }
34
43
  switch (conversation?.type) {
35
44
  case TIM.TYPES.CONV_C2C:
36
45
  handleC2C(conversation.userProfile);
@@ -51,8 +60,8 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
51
60
  if (!title) {
52
61
  setTitle(userProfile?.nick || userProfile?.userID);
53
62
  }
54
- if (!avatar) {
55
- setAvatar(handleDisplayAvatar(userProfile.avatar));
63
+ if (!propAvatar) {
64
+ setAvatar(<Avatar size={32} image={handleDisplayAvatar(userProfile.avatar)} />);
56
65
  }
57
66
  };
58
67
 
@@ -60,8 +69,11 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
60
69
  if (!title) {
61
70
  setTitle(groupProfile?.name || groupProfile?.groupID);
62
71
  }
63
- if (!avatar) {
64
- setAvatar(handleDisplayAvatar(groupProfile.avatar, TIM.TYPES.CONV_GROUP));
72
+ if (!propAvatar) {
73
+ setAvatar(<Avatar
74
+ size={32}
75
+ image={handleDisplayAvatar(groupProfile.avatar, TIM.TYPES.CONV_GROUP)}
76
+ />);
65
77
  }
66
78
  };
67
79
  const { setTUIManageShow } = useTUIKitContext();
@@ -70,16 +82,23 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
70
82
  };
71
83
 
72
84
  return (
73
- <header className="tui-chat-header" key={conversation?.conversationID}>
74
- <div className={`tui-chat-header-left ${conversation?.type === TIM.TYPES.CONV_SYSTEM ? 'system' : ''}`}>
75
- {conversation?.type !== TIM.TYPES.CONV_SYSTEM && <Avatar size={32} image={avatar} />}
76
- <div className="header-content">
77
- <h3 className="title">{title}</h3>
78
- </div>
85
+ <header
86
+ className={`tui-chat-header ${isLive ? 'tui-chat-live-header' : ''}`}
87
+ key={conversation?.conversationID}
88
+ >
89
+ <div
90
+ className={`tui-chat-header-left ${conversation?.type === TIM.TYPES.CONV_SYSTEM ? 'system' : ''}`}
91
+ >
92
+ {conversation?.type !== TIM.TYPES.CONV_SYSTEM && avatar}
93
+ </div>
94
+ <div className="header-content">
95
+ <h3 className="title">{title}</h3>
79
96
  </div>
80
97
  <div className="tui-chat-header-right">
81
98
  <div className="header-handle">
82
- <Icon className="header-handle-more" onClick={openTUIManage} type={IconTypes.ELLIPSE} width={18} height={5} />
99
+ {
100
+ opateIcon || <Icon className="header-handle-more" onClick={openTUIManage} type={IconTypes.ELLIPSE} width={18} height={5} />
101
+ }
83
102
  </div>
84
103
  </div>
85
104
 
@@ -90,7 +109,7 @@ function TUIChatHeaderDefaultWithContext <T extends TUIChatHeaderDefaultProps>(
90
109
  const MemoizedTUIChatHeaderDefault = React.memo(TUIChatHeaderDefaultWithContext) as
91
110
  typeof TUIChatHeaderDefaultWithContext;
92
111
 
93
- export function TUIChatHeaderDefault(props: TUIChatHeaderDefaultProps)
112
+ export function TUIChatHeaderDefault(props: TUIChatHeaderBasicProps)
94
113
  :React.ReactElement {
95
114
  const options = { ...props };
96
115
  return <MemoizedTUIChatHeaderDefault {...options} />;
@@ -1,3 +0,0 @@
1
- .tui-chat-header {
2
- background: #FFFFFF;
3
- }
@@ -7,10 +7,10 @@
7
7
  &-left {
8
8
  display: flex;
9
9
  align-items: center;
10
- .header-content {
11
- padding: 0 8px;
12
- }
13
-
10
+ }
11
+ .header-content {
12
+ flex: 1;
13
+ padding: 0 8px;
14
14
  }
15
15
  &-right {
16
16
  .header-handle {
@@ -30,3 +30,7 @@
30
30
  height: 32px;
31
31
  }
32
32
  }
33
+
34
+ .tui-chat-live-header {
35
+
36
+ }
@@ -1,5 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
- import { ChatSDK } from 'tim-js-sdk';
2
+ import { ChatSDK, Conversation } from 'tim-js-sdk';
3
3
  import { useTUIKit } from './hooks/useTUIKit';
4
4
  import { useCreateTUIKitContext } from './hooks/useCreateTUIKitContext';
5
5
  import { TUIKitProvider } from '../../context/TUIKitContext';
@@ -9,15 +9,18 @@ import { TUIChat } from '../TUIChat';
9
9
  import { TUIManage } from '../TUIManage';
10
10
 
11
11
  export interface ChatProps {
12
- tim?: ChatSDK | null,
13
- customClasses?: unknown
12
+ tim?: ChatSDK | null,
13
+ customClasses?: unknown,
14
+ activeConversation?: Conversation,
14
15
  }
15
16
  export function TUIKit<
16
17
  T extends ChatProps
17
18
  >(
18
19
  props:PropsWithChildren<T>,
19
20
  ):React.ReactElement {
20
- const { children, tim, customClasses } = props;
21
+ const {
22
+ children, tim, customClasses, activeConversation,
23
+ } = props;
21
24
  (window as any).tencent_cloud_im_csig_react_uikit_23F_xa = true;
22
25
  const {
23
26
  conversation,
@@ -27,7 +30,7 @@ export function TUIKit<
27
30
  setTUIManageShow,
28
31
  TUIProfileShow,
29
32
  setTUIProfileShow,
30
- } = useTUIKit({ tim });
33
+ } = useTUIKit({ tim, activeConversation });
31
34
  const chatContextValue = useCreateTUIKitContext({
32
35
  tim,
33
36
  conversation,
@@ -1,11 +1,17 @@
1
1
  import React, { useState, useCallback, useEffect } from 'react';
2
- import { ChatSDK, Conversation, Profile } from 'tim-js-sdk';
2
+ import TIM, {
3
+ ChatSDK,
4
+ Conversation,
5
+ Group,
6
+ Profile,
7
+ } from 'tim-js-sdk';
3
8
 
4
9
  export interface UseChatParams{
5
- tim: ChatSDK
10
+ tim: ChatSDK,
11
+ activeConversation?: Conversation,
6
12
  }
7
- export const useTUIKit = ({ tim }:UseChatParams) => {
8
- const [conversation, setConversation] = useState<Conversation>();
13
+ export const useTUIKit = ({ tim, activeConversation: paramsActiveConversation }:UseChatParams) => {
14
+ const [conversation, setConversation] = useState<Conversation>(paramsActiveConversation);
9
15
  const [myProfile, setMyProfile] = useState<Profile>();
10
16
  const [TUIManageShow, setTUIManageShow] = useState<boolean>(false);
11
17
  const [TUIProfileShow, setTUIProfileShow] = useState<boolean>(false);
@@ -28,6 +34,10 @@ export const useTUIKit = ({ tim }:UseChatParams) => {
28
34
  },
29
35
  [tim],
30
36
  );
37
+
38
+ useEffect(() => {
39
+ setConversation(paramsActiveConversation);
40
+ }, [paramsActiveConversation]);
31
41
  return {
32
42
  conversation,
33
43
  setActiveConversation,
@@ -18,6 +18,10 @@ time, mark, audio, video {
18
18
  font: inherit;
19
19
  vertical-align: baseline;
20
20
  }
21
+ a,a:link,a:visited,a:hover,a:active{
22
+ text-decoration: none;
23
+ color:inherit;
24
+ }
21
25
  /* HTML5 display-role reset for older browsers */
22
26
  article, aside, details, figcaption, figure,
23
27
  footer, header, hgroup, menu, nav, section {
@@ -1,4 +1,8 @@
1
- import React, { PropsWithChildren } from 'react';
1
+ import React, {
2
+ PropsWithChildren, useCallback, useEffect, useRef, useState,
3
+ } from 'react';
4
+ import { useTUIChatActionContext, useTUIChatStateContext } from '../../context';
5
+ import { Icon, IconTypes } from '../Icon';
2
6
  import type { MessageContextProps } from './MessageText';
3
7
 
4
8
  function MessageAudioWithContext <T extends MessageContextProps>(
@@ -10,9 +14,64 @@ function MessageAudioWithContext <T extends MessageContextProps>(
10
14
  children,
11
15
  } = props;
12
16
 
17
+ const { setAudioSource } = useTUIChatActionContext('MessageAudioWithContext');
18
+ const { audioSource } = useTUIChatStateContext('MessageAudioWithContext');
19
+ const [currentTime, setCurrentTime] = useState(0);
20
+ const audioRef = useRef<HTMLAudioElement>(null);
21
+ const [playClassName, setPlayClassName] = useState(false);
22
+
23
+ const play = useCallback(() => {
24
+ if (audioSource && audioSource !== audioRef?.current) {
25
+ audioSource.pause();
26
+ audioSource.currentTime = 0;
27
+ setAudioSource(null);
28
+ }
29
+ if (audioRef?.current) {
30
+ if (!audioRef.current.paused) {
31
+ audioRef.current.pause();
32
+ endFunction();
33
+ } else {
34
+ audioRef.current.play();
35
+ setPlayClassName(true);
36
+ setAudioSource(audioRef.current);
37
+ }
38
+ }
39
+ }, [audioRef, audioSource]);
40
+
41
+ const pauseFunction = () => {
42
+ setPlayClassName(false);
43
+ };
44
+ const endFunction = () => {
45
+ setAudioSource(null);
46
+ audioRef.current.currentTime = 0;
47
+ pauseFunction();
48
+ };
49
+
50
+ useEffect(() => {
51
+ if (audioRef?.current) {
52
+ audioRef.current.addEventListener('pause', pauseFunction);
53
+ audioRef.current.addEventListener('ended', endFunction);
54
+ audioRef.current.addEventListener('canplay', () => {
55
+ setCurrentTime(parseInt(`${audioRef.current.duration}`, 10));
56
+ });
57
+ }
58
+ return () => {
59
+ if (audioRef?.current) {
60
+ audioRef.current.removeEventListener('pause', pauseFunction);
61
+ audioRef.current.removeEventListener('ended', endFunction);
62
+ }
63
+ };
64
+ }, [audioRef]);
65
+
13
66
  return (
14
67
  <div className="message-audio">
15
- <audio muted src={context.url} />
68
+ <div className={`message-audio-content message-audio-${message.flow}`}>
69
+ <Icon className={`${message?.flow} ${playClassName ? 'playing' : ''}`} type={IconTypes.VOICE} width={16} height={16} onClick={play} />
70
+ <span>{`${currentTime}s`}</span>
71
+ </div>
72
+ <audio src={context?.url} ref={audioRef} controls className="message-audio-none">
73
+ <track kind="captions" />
74
+ </audio>
16
75
  {children}
17
76
  </div>
18
77
  );
@@ -0,0 +1,38 @@
1
+ import React, {
2
+ PropsWithChildren,
3
+ } from 'react';
4
+ import TIM, { Message } from 'tim-js-sdk';
5
+ import { MESSAGE_FLOW } from '../../constants';
6
+ import { messageShowType } from '../../context';
7
+ import { Avatar } from '../Avatar';
8
+ import { handleDisplayAvatar } from '../untils';
9
+
10
+ export interface MessageAvatarProps {
11
+ CustomAvatar?: React.ReactElement,
12
+ className?: string,
13
+ message?: Message,
14
+ showType?: messageShowType,
15
+ }
16
+
17
+ export function MessageAvatar <T extends MessageAvatarProps>(
18
+ props: PropsWithChildren<T>,
19
+ ):React.ReactElement {
20
+ const {
21
+ className,
22
+ CustomAvatar,
23
+ message,
24
+ showType,
25
+ } = props;
26
+
27
+ const show = showType === messageShowType.ALL || message?.flow === showType;
28
+
29
+ if (!show || showType === messageShowType.NONE) {
30
+ return null;
31
+ }
32
+
33
+ if (CustomAvatar) {
34
+ return CustomAvatar;
35
+ }
36
+
37
+ return (<Avatar size={32} image={handleDisplayAvatar(message?.avatar)} />);
38
+ }
@@ -5,15 +5,17 @@ import React, {
5
5
  } from 'react';
6
6
  import TIM, { Message } from 'tim-js-sdk';
7
7
  import { MESSAGE_STATUS } from '../../constants';
8
+ import { useTUIChatActionContext } from '../../context';
8
9
  import { Icon, IconTypes } from '../Icon';
9
10
  import { useMessageReply } from './hooks/useMessageReply';
11
+ import { MessageProgress } from './MessageProgress';
10
12
 
11
13
  export interface MessageBubbleProps {
12
14
  message?: Message,
13
15
  className?: string,
14
16
  children?: ReactNode,
15
17
  Context?: React.ComponentType<any>,
16
- Plugins?: React.ComponentType<any>,
18
+ Plugins?: React.ComponentType<any> | undefined,
17
19
  }
18
20
 
19
21
  function MessageBubbleWithContext <T extends MessageBubbleProps>(
@@ -34,6 +36,8 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
34
36
  sender,
35
37
  } = useMessageReply({ message });
36
38
 
39
+ const { setHighlightedMessageId } = useTUIChatActionContext('MessageBubbleWithContext');
40
+
37
41
  const handleLoading = () => !!((
38
42
  message?.type === TIM.TYPES.MSG_IMAGE
39
43
  || message?.type === TIM.TYPES.MSG_VIDEO
@@ -47,6 +51,10 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
47
51
  setPluginsShow(false);
48
52
  };
49
53
 
54
+ const handleReplyMessage = () => {
55
+ setHighlightedMessageId(replyMessage?.ID);
56
+ };
57
+
50
58
  return (
51
59
  <div className="meesage-bubble">
52
60
  <div
@@ -63,17 +71,27 @@ function MessageBubbleWithContext <T extends MessageBubbleProps>(
63
71
  >
64
72
  {
65
73
  messageReply && (
66
- <main className="meesage-bubble-reply-main">
74
+ <div
75
+ className="meesage-bubble-reply-main"
76
+ role="menuitem"
77
+ tabIndex={0}
78
+ onClick={handleReplyMessage}
79
+ >
67
80
  <header className="title">{sender}</header>
68
81
  {Context && <Context message={replyMessage} />}
69
- </main>
82
+ </div>
70
83
  )
71
84
  }
72
85
  {children}
86
+ <MessageProgress message={message} />
73
87
  </div>
74
- <div className="message-plugin">
75
- {PluginsShow && Plugins && <Plugins />}
76
- </div>
88
+ {
89
+ Plugins && (
90
+ <div className="message-plugin">
91
+ {PluginsShow && <Plugins />}
92
+ </div>
93
+ )
94
+ }
77
95
  </div>
78
96
  <div className="message-bubble-status icon">
79
97
  {
@@ -64,9 +64,12 @@ function MessageContextWithContext <T extends MessageContextProps>(
64
64
  };
65
65
 
66
66
  const Elements = CustemComponents[message?.type] || components[message?.type];
67
-
68
67
  return Elements
69
- && <Elements context={context} message={message}><MessageStatus message={message} /></Elements>;
68
+ && (
69
+ <Elements context={context} message={message}>
70
+ <MessageStatus message={message} />
71
+ </Elements>
72
+ );
70
73
  }
71
74
 
72
75
  const MemoizedMessageContext = React.memo(MessageContextWithContext) as
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import { JSONStringToParse } from '../untils';
3
4
  import type { MessageContextProps } from './MessageText';
4
5
 
@@ -14,7 +15,19 @@ function MessageCustomWithContext <T extends MessageContextProps>(
14
15
  const handleContext = (data) => {
15
16
  if (data.data === 'Hyperlink') {
16
17
  const extension = JSONStringToParse(data?.extension);
17
- return extension?.item.map((item) => <a target="_blank" key={item.value} href={item.value} rel="noreferrer">{item.value}</a>);
18
+ if (extension?.item) {
19
+ return extension?.item.map((item) => <a target="_blank" key={item.value} href={item.value} rel="noreferrer">{item.value}</a>);
20
+ }
21
+ if (extension?.hyperlinks_text) {
22
+ const hyperlinks = extension.hyperlinks_text;
23
+ return (
24
+ <>
25
+ {extension.title}
26
+ {' '}
27
+ <a target="_blank" key={hyperlinks?.value} href={hyperlinks?.value} rel="noreferrer">{hyperlinks.key}</a>
28
+ </>
29
+ );
30
+ }
18
31
  }
19
32
  if (data.data === 'group_create') {
20
33
  return `${message?.nick || message?.from} Create a group`;
@@ -23,7 +36,7 @@ function MessageCustomWithContext <T extends MessageContextProps>(
23
36
  };
24
37
 
25
38
  return (
26
- <div className={`bubble message-custom bubble-${message.flow}`}>
39
+ <div className={`bubble message-custom bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
27
40
  {handleContext(context?.custom)}
28
41
  {children}
29
42
  </div>
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import { Icon, IconTypes } from '../Icon';
3
4
  import type { MessageContextProps } from './MessageText';
4
5
 
@@ -10,9 +11,14 @@ function MessageFileWithContext <T extends MessageContextProps>(
10
11
  message,
11
12
  children,
12
13
  } = props;
13
-
14
14
  return (
15
- <div className={`bubble message-file bubble-${message.flow}`}>
15
+ <a
16
+ href={context.url}
17
+ download={context.name}
18
+ target="_parent"
19
+ className={`bubble message-file bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}
20
+ rel="noreferrer"
21
+ >
16
22
  <main className="message-file-main">
17
23
  <Icon className="icon" width={15} height={20} type={IconTypes.FILE} />
18
24
  <label htmlFor="message-file">{ context.name }</label>
@@ -21,7 +27,7 @@ function MessageFileWithContext <T extends MessageContextProps>(
21
27
  <span className="message-file-size">{ context.size }</span>
22
28
  {children}
23
29
  </div>
24
- </div>
30
+ </a>
25
31
  );
26
32
  }
27
33
 
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren, useState } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import { Model } from '../Model';
3
4
  import type { MessageContextProps } from './MessageText';
4
5
 
@@ -18,7 +19,7 @@ function MessageImageWithContext <T extends MessageContextProps>(
18
19
  return (
19
20
  <div className="message-image">
20
21
  <div role="button" tabIndex={0} onClick={() => { setShow(true); }}>
21
- <img className={`img bubble-${message.flow}`} src={context.url} alt="" />
22
+ <img className={`img bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`} src={context.url} alt="" />
22
23
  </div>
23
24
  {children}
24
25
  {
@@ -1,4 +1,5 @@
1
1
  import React, { PropsWithChildren } from 'react';
2
+ import TIM from 'tim-js-sdk';
2
3
  import type { MessageContextProps } from './MessageText';
3
4
 
4
5
  function MessageMergerWithContext <T extends MessageContextProps>(
@@ -11,7 +12,7 @@ function MessageMergerWithContext <T extends MessageContextProps>(
11
12
  } = props;
12
13
 
13
14
  return (
14
- <div className={`bubble message-merger bubble-${message.flow}`}>
15
+ <div className={`bubble message-merger bubble-${message.flow} ${message?.conversationType === TIM.TYPES.CONV_GROUP ? 'group' : ''}`}>
15
16
  <h3>{context.title}</h3>
16
17
  <ul className="message-merger-list">
17
18
  {
@@ -0,0 +1,41 @@
1
+ import React, {
2
+ PropsWithChildren,
3
+ } from 'react';
4
+ import TIM, { Message } from 'tim-js-sdk';
5
+ import { MESSAGE_FLOW } from '../../constants';
6
+ import { messageShowType } from '../../context';
7
+
8
+ export interface MessageNameProps {
9
+ CustomName?: React.ReactElement,
10
+ className?: string,
11
+ message?: Message,
12
+ showType?: messageShowType,
13
+ }
14
+
15
+ export function MessageName <T extends MessageNameProps>(
16
+ props: PropsWithChildren<T>,
17
+ ):React.ReactElement {
18
+ const {
19
+ className,
20
+ CustomName,
21
+ message,
22
+ showType,
23
+ } = props;
24
+
25
+ const show = (showType === messageShowType.ALL || message?.flow === showType)
26
+ && message?.conversationType === TIM.TYPES.CONV_GROUP;
27
+
28
+ if (!show || showType === messageShowType.NONE) {
29
+ return null;
30
+ }
31
+
32
+ if (CustomName) {
33
+ return CustomName;
34
+ }
35
+
36
+ return (
37
+ <label htmlFor="content" className="name">
38
+ {message?.nick || message?.from}
39
+ </label>
40
+ );
41
+ }