tuikit-atomicx-vue3 3.3.0-beta.3 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/dist/AttachmentPicker.module-BesmtGyl.js +11 -0
  2. package/dist/FilePicker.vue_vue_type_script_setup_true_lang-CdJ4DUzE.js +76 -0
  3. package/dist/ImagePicker.vue_vue_type_script_setup_true_lang-CbNUofpK.js +76 -0
  4. package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-XRL7A5Gj.js → MessageInput.vue_vue_type_script_setup_true_lang-wUJPjWbx.js} +23 -18
  5. package/dist/VideoPicker.vue_vue_type_script_setup_true_lang-CmxjbNDJ.js +76 -0
  6. package/dist/chat/index.d.ts +3747 -2386
  7. package/dist/chat/index.js +12 -11
  8. package/dist/components/BarrageInput/BarrageInputH5.js +32 -8
  9. package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +9 -5
  10. package/dist/components/BarrageInput/TextEditor/index.js +14 -6
  11. package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue.d.ts +4 -4
  12. package/dist/components/BarrageList/Message/TextMessage/TextMessage.js +12 -4
  13. package/dist/components/BarrageList/i18n/en-US/index.d.ts +1 -0
  14. package/dist/components/BarrageList/i18n/en-US/index.js +2 -1
  15. package/dist/components/BarrageList/i18n/zh-CN/index.d.ts +1 -0
  16. package/dist/components/BarrageList/i18n/zh-CN/index.js +2 -1
  17. package/dist/components/ChatSetting/GroupChatSetting/GroupActions/GroupActions.js +5 -3
  18. package/dist/components/ChatSetting/GroupChatSetting/GroupChatSetting.js +3 -3
  19. package/dist/components/ChatSetting/GroupChatSetting/GroupInfo/GroupInfo.js +3 -3
  20. package/dist/components/ChatSetting/GroupChatSetting/GroupManagement/GroupManagement.js +3 -3
  21. package/dist/components/ChatSetting/GroupChatSetting/GroupMembers/GroupMembers.js +3 -3
  22. package/dist/components/ChatSetting/SettingItem/SettingItem.js +21 -21
  23. package/dist/components/ChatSetting/i18n/en-US.js +3 -3
  24. package/dist/components/ChatSetting/i18n/zh-CN.js +3 -3
  25. package/dist/components/ChatSetting/index.d.ts +1 -4
  26. package/dist/components/ChatSetting/index.js +3 -6
  27. package/dist/components/CoGuestPanel/CoGuestPanel.js +1 -1
  28. package/dist/components/ContactList/ContactInfo/ContactInfo.js +17 -17
  29. package/dist/components/ContactList/ContactInfo/ContactInfo.vue.d.ts +26 -2
  30. package/dist/components/ContactList/ContactInfo/GroupInfo/GroupInfo.js +2 -1
  31. package/dist/components/ContactList/ContactList.js +19 -10
  32. package/dist/components/ContactList/ContactList.vue.d.ts +109 -1
  33. package/dist/components/ContactList/index.d.ts +158 -26
  34. package/dist/components/ConversationList/ConversationActions/ConversationActions.js +8 -9
  35. package/dist/components/ConversationList/ConversationCreate/ConversationCreate.js +2 -1
  36. package/dist/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.js +8 -8
  37. package/dist/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.js +1 -2
  38. package/dist/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.js +8 -8
  39. package/dist/components/ConversationList/ConversationList.js +18 -44
  40. package/dist/components/ConversationList/ConversationList.vue.d.ts +197 -1535
  41. package/dist/components/ConversationList/ConversationListContent/ConversationListContent.js +8 -11
  42. package/dist/components/ConversationList/ConversationListContent/ConversationListContent.vue.d.ts +22 -340
  43. package/dist/components/ConversationList/ConversationPreview/ConversationPreview.vue.d.ts +80 -134
  44. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.js +14 -14
  45. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTimestamp.js +14 -14
  46. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.js +19 -30
  47. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue.d.ts +0 -2
  48. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.js +14 -15
  49. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.vue.d.ts +12 -24
  50. package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUnread.js +14 -14
  51. package/dist/components/ConversationList/ConversationPreview/index.d.ts +1 -1
  52. package/dist/components/ConversationList/ConversationPreview/index.js +17 -21
  53. package/dist/components/ConversationList/ConversationSearch/ConversationSearch.js +1 -0
  54. package/dist/components/ConversationList/index.d.ts +468 -2400
  55. package/dist/components/ConversationList/index.js +1 -1
  56. package/dist/components/LiveCoreView/index.js +113 -58
  57. package/dist/components/LiveCoreView/index.vue.d.ts +9 -0
  58. package/dist/components/LiveList/LiveList.js +7 -5
  59. package/dist/components/LiveList/LiveListH5.js +77 -71
  60. package/dist/components/LiveList/i18n/en-US/index.d.ts +5 -0
  61. package/dist/components/LiveList/i18n/en-US/index.js +6 -1
  62. package/dist/components/LiveList/i18n/zh-CN/index.d.ts +5 -0
  63. package/dist/components/LiveList/i18n/zh-CN/index.js +6 -1
  64. package/dist/components/LiveList/pullToRefresh.js +204 -0
  65. package/dist/components/LiveList/pullToRefresh.vue.d.ts +86 -0
  66. package/dist/components/LiveScenePanel/CameraSettingDialog.js +6 -5
  67. package/dist/components/LiveScenePanel/index.js +3 -3
  68. package/dist/components/MessageInput/AttachmentPicker/AttachmentPicker.vue.d.ts +0 -4
  69. package/dist/components/MessageInput/AttachmentPicker/FilePicker.js +1 -1
  70. package/dist/components/MessageInput/AttachmentPicker/ImagePicker.js +1 -1
  71. package/dist/components/MessageInput/AttachmentPicker/VideoPicker.js +1 -1
  72. package/dist/components/MessageInput/AttachmentPicker/index.js +14 -19
  73. package/dist/components/MessageInput/EmojiPicker/EmojiPicker.js +3 -3
  74. package/dist/components/MessageInput/MessageInput.js +1 -1
  75. package/dist/components/MessageInput/MessageInput.vue.d.ts +6 -9
  76. package/dist/components/MessageInput/TextEditor/TextEditor.vue.d.ts +2 -2
  77. package/dist/components/MessageInput/TextEditor/index.js +18 -9
  78. package/dist/components/MessageInput/index.d.ts +5 -41
  79. package/dist/components/MessageInput/index.js +4 -4
  80. package/dist/components/MessageList/Message/CustomMessage/index.js +2 -2
  81. package/dist/components/MessageList/Message/FaceMessage/FaceMessage.js +7 -5
  82. package/dist/components/MessageList/Message/FaceMessage/FaceMessage.vue.d.ts +8 -8
  83. package/dist/components/MessageList/Message/LocationMessage/LocationMessage.js +2 -1
  84. package/dist/components/MessageList/Message/MergerMessage/MergerMessage.js +2 -1
  85. package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.js +12 -4
  86. package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.vue.d.ts +3 -3
  87. package/dist/components/MessageList/MessageForward/MessageForward.js +2 -3
  88. package/dist/components/MessageList/MessageList.js +14 -7
  89. package/dist/components/MessageList/MessageList.vue.d.ts +1 -1
  90. package/dist/components/MessageList/MessageTimeDivider/MessageTimeDivider.js +5 -5
  91. package/dist/components/MessageList/MessageTimeDivider/MessageTimeDivider.vue.d.ts +10 -10
  92. package/dist/components/MessageList/index.d.ts +143 -5
  93. package/dist/components/MessageList/index.js +5 -5
  94. package/dist/components/Search/Search.js +1 -3
  95. package/dist/components/Search/SearchResults/EmptyResult/EmptyResult.js +4 -6
  96. package/dist/components/Search/SearchResults/Loading/Loading.js +2 -4
  97. package/dist/components/Search/SearchResults/SearchResults.js +20 -22
  98. package/dist/components/Search/SearchResults/SearchResultsItem/Conversation/Conversation.js +6 -8
  99. package/dist/components/Search/SearchResults/SearchResultsItem/Group/Group.js +5 -7
  100. package/dist/components/Search/SearchResults/SearchResultsItem/Message/Message.js +19 -21
  101. package/dist/components/Search/SearchResults/SearchResultsItem/SearchResultsItem.js +1 -3
  102. package/dist/components/Search/SearchResults/SearchResultsItem/User/User.js +5 -7
  103. package/dist/components/StreamMixer/LocalMixer/index.js +11 -5
  104. package/dist/components/StreamView/manager/mediaManager.js +1 -1
  105. package/dist/components/UserPicker/UserPicker.js +2 -2
  106. package/dist/components/UserPicker/UserPicker.vue.d.ts +7 -8
  107. package/dist/components/UserPicker/components/ListMode/ListMode.js +14 -17
  108. package/dist/components/UserPicker/components/ListMode/ListMode.vue.d.ts +2 -2
  109. package/dist/components/UserPicker/components/SelectedPanel/SelectedPanel.vue.d.ts +2 -2
  110. package/dist/components/UserPicker/components/TreeMode/TreeMode.vue.d.ts +3 -3
  111. package/dist/components/UserPicker/components/TreeMode/TreeNode.vue.d.ts +4 -4
  112. package/dist/components/UserPicker/hooks/useSearchFilter.d.ts +3 -3
  113. package/dist/components/UserPicker/hooks/useSelection.d.ts +8 -8
  114. package/dist/components/UserPicker/hooks/useTreeState.d.ts +3 -3
  115. package/dist/components/UserPicker/index.d.ts +134 -3
  116. package/dist/components/UserPicker/index.js +3 -2
  117. package/dist/components/UserPicker/type.d.ts +18 -18
  118. package/dist/index.js +6 -3
  119. package/dist/rtc/index.d.ts +9 -0
  120. package/dist/states/GroupSettingState/GroupSettingState.js +3 -3
  121. package/dist/states/LiveSeatState/usePlayStream/MixStreamPlayer.js +3 -0
  122. package/dist/states/LoginState.js +1 -0
  123. package/dist/states/MessageInputState/MessageInputState.js +25 -5
  124. package/dist/styles/index.css +1275 -3559
  125. package/dist/types/contact.d.ts +13 -12
  126. package/dist/types/conversation.d.ts +12 -14
  127. package/dist/types/engine.d.ts +12 -0
  128. package/dist/types/engine.js +15 -0
  129. package/dist/types/index.js +2 -1
  130. package/dist/utils/json.js +0 -1
  131. package/package.json +7 -3
  132. package/src/chat/index.ts +12 -4
  133. package/src/components/BarrageInput/BarrageInputH5.vue +50 -4
  134. package/src/components/BarrageInput/EmojiPicker/EmojiPicker.module.scss +1 -0
  135. package/src/components/BarrageInput/EmojiPicker/EmojiPicker.vue +1 -1
  136. package/src/components/BarrageInput/TextEditor/Editor.scss +1 -1
  137. package/src/components/BarrageInput/TextEditor/TextEditor.module.scss +2 -0
  138. package/src/components/BarrageInput/TextEditor/TextEditor.vue +6 -0
  139. package/src/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue +8 -8
  140. package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +10 -0
  141. package/src/components/BarrageList/i18n/en-US/index.ts +1 -0
  142. package/src/components/BarrageList/i18n/zh-CN/index.ts +1 -0
  143. package/src/components/ChatSetting/GroupChatSetting/GroupActions/GroupActions.vue +5 -2
  144. package/src/components/ChatSetting/GroupChatSetting/GroupChatSetting.vue +5 -4
  145. package/src/components/ChatSetting/GroupChatSetting/GroupInfo/GroupInfo.vue +2 -2
  146. package/src/components/ChatSetting/GroupChatSetting/GroupManagement/GroupManagement.vue +3 -2
  147. package/src/components/ChatSetting/GroupChatSetting/GroupMembers/GroupMembers.vue +3 -3
  148. package/src/components/ChatSetting/SettingItem/SettingItem.vue +10 -7
  149. package/src/components/ChatSetting/i18n/en-US.ts +3 -3
  150. package/src/components/ChatSetting/i18n/zh-CN.ts +3 -3
  151. package/src/components/ChatSetting/index.ts +3 -3
  152. package/src/components/CoGuestPanel/CoGuestPanel.vue +9 -0
  153. package/src/components/ContactList/ContactInfo/BlacklistInfo/BlacklistInfo.scss +2 -0
  154. package/src/components/ContactList/ContactInfo/ContactInfo.vue +17 -9
  155. package/src/components/ContactList/ContactInfo/FriendApplicationInfo/FriendApplicationInfo.scss +2 -0
  156. package/src/components/ContactList/ContactInfo/FriendInfo/FriendInfo.scss +4 -3
  157. package/src/components/ContactList/ContactInfo/GroupApplicationInfo/GroupApplicationInfo.scss +2 -0
  158. package/src/components/ContactList/ContactInfo/GroupInfo/GroupInfo.scss +2 -0
  159. package/src/components/ContactList/ContactInfo/GroupInfo/GroupInfo.vue +1 -0
  160. package/src/components/ContactList/ContactInfo/SearchGroupInfo/SearchGroupInfo.scss +2 -2
  161. package/src/components/ContactList/ContactInfo/SearchUserInfo/SearchUserInfo.scss +3 -2
  162. package/src/components/ContactList/ContactList.scss +2 -1
  163. package/src/components/ContactList/ContactList.vue +18 -3
  164. package/src/components/ContactList/ContactListItem/BlacklistItem/BlacklistItem.scss +3 -3
  165. package/src/components/ContactList/ContactListItem/FriendApplicationItem/FriendApplicationItem.scss +5 -6
  166. package/src/components/ContactList/ContactListItem/FriendItem/FriendItem.scss +3 -3
  167. package/src/components/ContactList/ContactListItem/GroupApplicationItem/GroupApplicationItem.scss +5 -6
  168. package/src/components/ContactList/ContactListItem/GroupItem/GroupItem.scss +3 -3
  169. package/src/components/ConversationList/ConversationActions/ConversationActions.scss +2 -12
  170. package/src/components/ConversationList/ConversationActions/ConversationActions.vue +2 -2
  171. package/src/components/ConversationList/ConversationCreate/ConversationCreate.vue +1 -0
  172. package/src/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.scss +2 -1
  173. package/src/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.vue +2 -2
  174. package/src/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.scss +2 -1
  175. package/src/components/ConversationList/ConversationList.scss +0 -5
  176. package/src/components/ConversationList/ConversationList.vue +15 -41
  177. package/src/components/ConversationList/ConversationListContent/ConversationListContent.scss +1 -0
  178. package/src/components/ConversationList/ConversationListContent/ConversationListContent.vue +13 -18
  179. package/src/components/ConversationList/ConversationPreview/ConversationPreview.scss +11 -9
  180. package/src/components/ConversationList/ConversationPreview/ConversationPreview.vue +14 -16
  181. package/src/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue +2 -14
  182. package/src/components/ConversationList/ConversationPreview/index.ts +1 -1
  183. package/src/components/ConversationList/ConversationSearch/ConversationSearch.vue +1 -0
  184. package/src/components/LiveCoreView/index.vue +144 -78
  185. package/src/components/LiveList/LiveList.vue +3 -0
  186. package/src/components/LiveList/LiveListH5.vue +60 -85
  187. package/src/components/LiveList/i18n/en-US/index.ts +5 -0
  188. package/src/components/LiveList/i18n/zh-CN/index.ts +5 -0
  189. package/src/components/LiveList/pullToRefresh.vue +364 -0
  190. package/src/components/LiveScenePanel/CameraSettingDialog.vue +6 -5
  191. package/src/components/LiveScenePanel/index.vue +2 -2
  192. package/src/components/MessageInput/AttachmentPicker/AttachmentPicker.module.scss +4 -0
  193. package/src/components/MessageInput/AttachmentPicker/AttachmentPicker.vue +12 -17
  194. package/src/components/MessageInput/AttachmentPicker/FilePicker.vue +3 -2
  195. package/src/components/MessageInput/AttachmentPicker/ImagePicker.vue +3 -2
  196. package/src/components/MessageInput/AttachmentPicker/VideoPicker.vue +3 -2
  197. package/src/components/MessageInput/EmojiPicker/EmojiPicker.module.scss +1 -0
  198. package/src/components/MessageInput/MessageInput.vue +21 -15
  199. package/src/components/MessageInput/TextEditor/Editor.scss +1 -0
  200. package/src/components/MessageInput/TextEditor/TextEditor.vue +16 -6
  201. package/src/components/MessageInput/types.d.ts +3 -4
  202. package/src/components/MessageList/Message/CustomMessage/CustomMessage.vue +1 -1
  203. package/src/components/MessageList/Message/FaceMessage/FaceMessage.vue +10 -7
  204. package/src/components/MessageList/Message/LocationMessage/LocationMessage.vue +3 -1
  205. package/src/components/MessageList/Message/MergerMessage/MergerMessage.vue +1 -1
  206. package/src/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.vue +2 -2
  207. package/src/components/MessageList/MessageForward/MessageForward.vue +3 -3
  208. package/src/components/MessageList/MessageList.vue +17 -5
  209. package/src/components/MessageList/MessageTimeDivider/MessageTimeDivider.vue +9 -9
  210. package/src/components/MessageList/index.ts +5 -4
  211. package/src/components/Search/Search.scss +0 -3
  212. package/src/components/Search/SearchResults/EmptyResult/EmptyResult.scss +0 -3
  213. package/src/components/Search/SearchResults/Loading/Loading.scss +0 -3
  214. package/src/components/Search/SearchResults/SearchResults.scss +7 -16
  215. package/src/components/Search/SearchResults/SearchResultsItem/Conversation/Conversation.scss +5 -11
  216. package/src/components/Search/SearchResults/SearchResultsItem/Group/Group.scss +5 -11
  217. package/src/components/Search/SearchResults/SearchResultsItem/Message/Message.scss +5 -11
  218. package/src/components/Search/SearchResults/SearchResultsItem/SearchResultsItem.scss +0 -3
  219. package/src/components/Search/SearchResults/SearchResultsItem/User/User.scss +5 -6
  220. package/src/components/StreamMixer/LocalMixer/index.vue +9 -4
  221. package/src/components/StreamView/manager/mediaManager.ts +1 -1
  222. package/src/components/UserPicker/UserPicker.vue +6 -9
  223. package/src/components/UserPicker/components/ListMode/ListMode.vue +3 -7
  224. package/src/components/UserPicker/components/SelectedPanel/SelectedPanel.vue +2 -2
  225. package/src/components/UserPicker/components/TreeMode/TreeMode.vue +3 -3
  226. package/src/components/UserPicker/components/TreeMode/TreeNode.vue +3 -3
  227. package/src/components/UserPicker/hooks/useSearchFilter.ts +15 -14
  228. package/src/components/UserPicker/hooks/useSelection.ts +32 -32
  229. package/src/components/UserPicker/hooks/useTreeState.ts +4 -4
  230. package/src/components/UserPicker/index.ts +16 -14
  231. package/src/components/UserPicker/type.ts +18 -18
  232. package/src/types/contact.ts +13 -12
  233. package/src/types/conversation.ts +12 -14
  234. package/src/types/engine.ts +15 -0
  235. package/src/utils/json.ts +0 -4
  236. package/dist/AttachmentPicker.module-0_DWsAtr.js +0 -11
  237. package/dist/FilePicker.vue_vue_type_script_setup_true_lang-CaSj3Gh_.js +0 -72
  238. package/dist/ImagePicker.vue_vue_type_script_setup_true_lang-CrzGMmrh.js +0 -72
  239. package/dist/VideoPicker.vue_vue_type_script_setup_true_lang-DTv6TJKr.js +0 -72
  240. package/dist/states/UIOpenControlState/UIOpenControlState.d.ts +0 -15
  241. package/dist/states/UIOpenControlState/UIOpenControlState.js +0 -28
  242. package/dist/states/UIOpenControlState/index.d.ts +0 -1
  243. package/dist/states/UIOpenControlState/index.js +0 -4
@@ -1,29 +1,26 @@
1
1
  <template>
2
- <div :class="[styles['attachment-picker'], className]">
2
+ <div :class="[styles['attachment-picker']]">
3
3
  <template v-if="isCollapsed">
4
4
  <PopoverRoot>
5
5
  <PopoverTrigger as="span">
6
6
  <IconPlus
7
7
  :class="styles['attachment-picker__icon']"
8
- size="24"
8
+ size="20"
9
9
  />
10
10
  </PopoverTrigger>
11
11
  <PopoverPortal>
12
12
  <PopoverContent
13
- side="top"
14
- align="start"
15
- :side-offset="5"
16
- class="rounded-lg p-5 w-[260px] bg-white shadow-sm border will-change-[transform,opacity] data-[state=open]:data-[side=top]:animate-slideDownAndFade data-[state=open]:data-[side=right]:animate-slideLeftAndFade data-[state=open]:data-[side=bottom]:animate-slideUpAndFade data-[state=open]:data-[side=left]:animate-slideRightAndFade"
13
+ side="top"
14
+ align="start"
15
+ :side-offset="5"
17
16
  >
18
- <div class="flex flex-col gap-2.5">
19
- <div :class="styles['attachment-picker__popup']">
20
- <component
21
- :is="picker.Component"
22
- v-for="(picker, index) in pickerItems"
23
- :key="index"
24
- v-bind="picker.props"
25
- />
26
- </div>
17
+ <div :class="styles['attachment-picker__popup']">
18
+ <component
19
+ :is="picker.Component"
20
+ v-for="(picker, index) in pickerItems"
21
+ :key="index"
22
+ v-bind="picker.props"
23
+ />
27
24
  </div>
28
25
  </PopoverContent>
29
26
  </PopoverPortal>
@@ -52,7 +49,6 @@ import ImagePicker from './ImagePicker.vue';
52
49
  import VideoPicker from './VideoPicker.vue';
53
50
 
54
51
  interface Props {
55
- className?: string;
56
52
  attachmentPickerMode?: 'collapsed' | 'expanded';
57
53
  }
58
54
 
@@ -62,7 +58,6 @@ const ICON_SIZE = {
62
58
  };
63
59
 
64
60
  const props = withDefaults(defineProps<Props>(), {
65
- className: '',
66
61
  attachmentPickerMode: 'collapsed',
67
62
  });
68
63
 
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div>
2
+ <View>
3
3
  <template v-if="label">
4
4
  <button
5
5
  :class="[styles['attachment-picker__item'], className]"
@@ -27,13 +27,14 @@
27
27
  hidden
28
28
  @change="handleFileInput"
29
29
  >
30
- </div>
30
+ </View>
31
31
  </template>
32
32
 
33
33
  <script setup lang="ts">
34
34
  import { ref } from 'vue';
35
35
  import { IconFile } from '@tencentcloud/uikit-base-component-vue3';
36
36
  import { MessageContentType, useMessageInputState } from '../../../states/MessageInputState';
37
+ import { View } from '../../../baseComp/View';
37
38
  import styles from './AttachmentPicker.module.scss';
38
39
 
39
40
  const PICKER_CONSTANTS = {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div>
2
+ <View>
3
3
  <template v-if="label">
4
4
  <button
5
5
  :class="[styles['attachment-picker__item'], className]"
@@ -27,13 +27,14 @@
27
27
  hidden
28
28
  @change="handleFileInput"
29
29
  >
30
- </div>
30
+ </View>
31
31
  </template>
32
32
 
33
33
  <script setup lang="ts">
34
34
  import { ref } from 'vue';
35
35
  import { IconImage } from '@tencentcloud/uikit-base-component-vue3';
36
36
  import { MessageContentType, useMessageInputState } from '../../../states/MessageInputState';
37
+ import { View } from '../../../baseComp/View';
37
38
  import styles from './AttachmentPicker.module.scss';
38
39
 
39
40
  const PICKER_CONSTANTS = {
@@ -1,5 +1,5 @@
1
1
  <template>
2
- <div>
2
+ <View>
3
3
  <template v-if="label">
4
4
  <button
5
5
  :class="[styles['attachment-picker__item'], className]"
@@ -27,13 +27,14 @@
27
27
  hidden
28
28
  @change="handleFileInput"
29
29
  >
30
- </div>
30
+ </View>
31
31
  </template>
32
32
 
33
33
  <script setup lang="ts">
34
34
  import { ref } from 'vue';
35
35
  import { IconVideo } from '@tencentcloud/uikit-base-component-vue3';
36
36
  import { MessageContentType, useMessageInputState } from '../../../states/MessageInputState';
37
+ import { View } from '../../../baseComp/View';
37
38
  import styles from './AttachmentPicker.module.scss';
38
39
 
39
40
  const PICKER_CONSTANTS = {
@@ -2,6 +2,7 @@
2
2
 
3
3
  &__icon {
4
4
  cursor: pointer;
5
+ display: flex;
5
6
  }
6
7
 
7
8
  &__list {
@@ -1,7 +1,6 @@
1
1
  <template>
2
2
  <div
3
- :class="[styles['message-input'], className]"
4
- :style="style"
3
+ :class="[styles['message-input']]"
5
4
  >
6
5
  <slot name="headerToolbar">
7
6
  <div :class="styles['message-input__toolbar']">
@@ -18,13 +17,21 @@
18
17
  <div :class="styles['message-input__leftInline']">
19
18
  <slot name="leftInline" />
20
19
  </div>
21
- <TextEditor
22
- :autoFocus="autoFocus"
23
- :disabled="disabled"
24
- :placeholder="placeholder"
25
- :prefix="slots?.inputPrefix"
26
- :suffix="slots?.inputSuffix"
27
- />
20
+ <slot name="textEditor">
21
+ <DefaultTextEditor
22
+ :autoFocus="autoFocus"
23
+ :disabled="disabled"
24
+ :placeholder="placeholder"
25
+ :key="disabled ? 'disabled-editor' : 'enabled-editor'"
26
+ >
27
+ <template #inputPrefix>
28
+ <slot name="inputPrefix" />
29
+ </template>
30
+ <template #inputSuffix>
31
+ <slot name="inputSuffix" />
32
+ </template>
33
+ </DefaultTextEditor>
34
+ </slot>
28
35
  <div :class="styles['message-input__rightInline']">
29
36
  <slot name="rightInline" />
30
37
  </div>
@@ -34,7 +41,7 @@
34
41
  <SendButton
35
42
  v-if="!hideSendButton"
36
43
  :class="styles['message-input__send-button']"
37
- :disabled="!inputRawValue"
44
+ :disabled="props.disabled"
38
45
  @click="sendInputMessage"
39
46
  />
40
47
  </div>
@@ -50,8 +57,8 @@ import { EmojiPicker } from './EmojiPicker';
50
57
  import styles from './MessageInput.module.scss';
51
58
  import { QuotedMessagePreview } from './QuotedMessagePreview';
52
59
  import { SendButton } from './SendButton';
53
- import { TextEditor } from './TextEditor';
54
- import type { CustomAction, IMessageInputProps } from './types';
60
+ import { TextEditor as DefaultTextEditor } from './TextEditor';
61
+ import type { CustomAction, MessageInputProps } from './types';
55
62
 
56
63
  const DEFAULT_ACTIONS = [
57
64
  { key: 'EmojiPicker', component: EmojiPicker },
@@ -61,16 +68,15 @@ const DEFAULT_ACTIONS = [
61
68
  { key: 'VideoPicker', component: VideoPicker },
62
69
  ];
63
70
 
64
- const props = withDefaults(defineProps<IMessageInputProps>(), {
71
+ const props = withDefaults(defineProps<MessageInputProps>(), {
65
72
  autoFocus: true,
66
73
  disabled: false,
67
74
  hideSendButton: false,
68
75
  placeholder: '',
69
- className: '',
70
- style: () => ({}),
71
76
  attachmentPickerMode: 'collapsed',
72
77
  actions: () => ['EmojiPicker', 'ImagePicker', 'FilePicker', 'VideoPicker'],
73
78
  });
79
+
74
80
  const { inputRawValue, setContent, sendMessage } = useMessageInputState();
75
81
 
76
82
  const pickProps = <T extends object, K extends keyof T>(
@@ -12,6 +12,7 @@
12
12
  overflow-y: auto;
13
13
  border: none !important;
14
14
  outline: none !important;
15
+ justify-content: flex-start;
15
16
 
16
17
  @include scrollbar.scrollbar-base();
17
18
 
@@ -1,14 +1,15 @@
1
1
  <template>
2
2
  <div :class="[styles['input-wrapper'], props.disabled && styles.disabled]">
3
3
  <div :class="styles['input-prefix']">
4
- <slot name="prefix" />
4
+ <slot name="inputPrefix" />
5
5
  </div>
6
6
  <div
7
- ref="editorRef"
7
+ ref="editorDomRef"
8
+ :key="props.disabled ? 'disabled' : 'enabled'"
8
9
  :class="styles['editor']"
9
10
  />
10
11
  <div :class="styles['input-suffix']">
11
- <slot name="suffix" />
12
+ <slot name="inputSuffix" />
12
13
  </div>
13
14
  </div>
14
15
  </template>
@@ -38,7 +39,7 @@ const { t } = useUIKit();
38
39
  const { activeConversation } = useConversationListState();
39
40
  const { updateRawValue, sendMessage, setEditorInstance, setContent } = useMessageInputState();
40
41
 
41
- const editorRef = ref<HTMLDivElement | null>(null);
42
+ const editorDomRef = ref<HTMLDivElement | null>(null);
42
43
  const isFocused = ref(props.autoFocus);
43
44
 
44
45
  const placeholderText = computed(() => (props.disabled ? '' : props.placeholder || t('MessageInput.enter_a_message')));
@@ -46,7 +47,7 @@ const placeholderText = computed(() => (props.disabled ? '' : props.placeholder
46
47
  let editorInstance: Editor | null = null;
47
48
 
48
49
  onMounted(() => {
49
- const element = editorRef.value;
50
+ const element = editorDomRef.value;
50
51
  if (!element) {
51
52
  return;
52
53
  }
@@ -79,7 +80,7 @@ onMounted(() => {
79
80
  });
80
81
 
81
82
  onUnmounted(() => {
82
- const element = editorRef.value;
83
+ const element = editorDomRef.value;
83
84
  if (editorInstance && element) {
84
85
  editorInstance.destroy();
85
86
  element.removeAttribute('data-editor-created');
@@ -92,4 +93,13 @@ watch(activeConversation, (newConversation, oldConversation) => {
92
93
  setContent('');
93
94
  }
94
95
  });
96
+
97
+ watch(() => props.disabled, (newDisabled) => {
98
+ if (editorInstance) {
99
+ editorInstance.setEditable(!newDisabled);
100
+ if (newDisabled) {
101
+ setContent('');
102
+ }
103
+ }
104
+ });
95
105
  </script>
@@ -20,13 +20,11 @@ export type MessageInputActions = Array<BuiltInAction | CustomAction>;
20
20
 
21
21
  export type MessageInputAttachmentPickerMode = 'collapsed' | 'expanded';
22
22
 
23
- export interface IMessageInputProps {
23
+ export interface MessageInputProps {
24
24
  autoFocus?: boolean;
25
25
  disabled?: boolean;
26
26
  hideSendButton?: boolean;
27
27
  placeholder?: string;
28
- className?: string;
29
- style?: CSSProperties;
30
28
  attachmentPickerMode?: MessageInputAttachmentPickerMode;
31
29
  actions?: MessageInputActions;
32
30
  slots?: MessageInputSlots;
@@ -39,4 +37,5 @@ export interface MessageInputSlots {
39
37
  rightInline?: () => VNode[];
40
38
  inputPrefix?: () => VNode[];
41
39
  inputSuffix?: () => VNode[];
42
- }
40
+ textEditor?: () => VNode[];
41
+ }
@@ -3,5 +3,5 @@
3
3
  </script>
4
4
 
5
5
  <template>
6
- [Custom Message]
6
+ <div>undefined custom Message</div>
7
7
  </template>
@@ -9,13 +9,13 @@
9
9
 
10
10
  <script lang="ts" setup>
11
11
  import cs from 'classnames';
12
- import type { IMessageModel } from '@tencentcloud/chat-uikit-engine';
12
+ import type { MessageModel } from '../../../../types/engine';
13
13
 
14
- interface IFaceMessageProps {
15
- message: IMessageModel;
14
+ interface FaceMessageProps {
15
+ message: MessageModel;
16
16
  }
17
17
 
18
- interface IFaceMessageContent {
18
+ interface FaceMessageContent {
19
19
  /** sender show name */
20
20
  showName: string;
21
21
  /** face image name [yz00@2x] */
@@ -26,11 +26,14 @@ interface IFaceMessageContent {
26
26
  url: string;
27
27
  }
28
28
 
29
- const props = withDefaults(defineProps<IFaceMessageProps>(), {
30
- message: () => ({} as IMessageModel),
29
+ const props = withDefaults(defineProps<FaceMessageProps>(), {
30
+ message: () => ({} as MessageModel),
31
31
  });
32
32
 
33
- const messageContent = props.message.getMessageContent() as IFaceMessageContent;
33
+ const messageContent = {
34
+ url: 'https://web.sdk.qcloud.com/im/assets/face-elem/yz13@2x.png',
35
+ name: 'yz13@2x',
36
+ };
34
37
  </script>
35
38
 
36
39
  <style lang="scss" scoped>
@@ -2,5 +2,7 @@
2
2
  </script>
3
3
 
4
4
  <template>
5
- [Location Message]
5
+ <div>
6
+ [undefined location Message]
7
+ </div>
6
8
  </template>
@@ -2,5 +2,5 @@
2
2
  </script>
3
3
 
4
4
  <template>
5
- [Merger Message]
5
+ <div>undefined merger Message</div>
6
6
  </template>
@@ -14,12 +14,12 @@ import classes from './MessageActionDropdown.module.scss';
14
14
  import type { MessageAction } from '../../../../../hooks/useMessageActions';
15
15
  import type { IMessageModel as MessageModel } from '@tencentcloud/chat-uikit-engine';
16
16
 
17
- interface IMessageActionDropdownProps {
17
+ interface MessageActionDropdownProps {
18
18
  message: MessageModel;
19
19
  messageActionList?: MessageAction[] | undefined;
20
20
  }
21
21
 
22
- const props = withDefaults(defineProps<IMessageActionDropdownProps>(), {
22
+ const props = withDefaults(defineProps<MessageActionDropdownProps>(), {
23
23
  messageActionList: undefined,
24
24
  message: () => ({}) as MessageModel,
25
25
  });
@@ -8,7 +8,7 @@ import { View } from '../../../baseComp/View';
8
8
  import { useConversationListState } from '../../../states/ConversationListState';
9
9
  import { useMessageActionState } from '../../../states/MessageActionState';
10
10
  import { UserPicker } from '../../UserPicker';
11
- import type { IUserPickerRef, IUserPickerRow } from '../../UserPicker/type';
11
+ import type { UserPickerRef, UserPickerRow } from '../../UserPicker/type';
12
12
  import type { IConversationModel } from '@tencentcloud/chat-uikit-engine';
13
13
 
14
14
  const { t } = useUIKit();
@@ -24,7 +24,7 @@ const {
24
24
  } = useConversationListState();
25
25
 
26
26
  // UserPicker ref
27
- const userPickerRef = ref<IUserPickerRef<undefined> | null>(null);
27
+ const userPickerRef = ref<UserPickerRef<undefined> | null>(null);
28
28
 
29
29
  // Convert conversation list to UserPicker data format
30
30
  const forwardListDataSource = computed((): any[] => {
@@ -34,7 +34,7 @@ const forwardListDataSource = computed((): any[] => {
34
34
 
35
35
  return conversationList.value.map((conversation: IConversationModel) => {
36
36
  const { type, remark, groupProfile, userProfile } = conversation;
37
- const userPickerRow: IUserPickerRow<undefined> = {
37
+ const userPickerRow: UserPickerRow<undefined> = {
38
38
  key: conversation.conversationID,
39
39
  label: '',
40
40
  avatarUrl: conversation.getAvatar() || '',
@@ -77,6 +77,7 @@ const {
77
77
  activeConversationID,
78
78
  isDisableScroll,
79
79
  setIsDisableScroll,
80
+ setEnableReadReceipt,
80
81
  } = useMessageListState();
81
82
 
82
83
  const { scrollToBottom } = useScroll();
@@ -109,13 +110,18 @@ const messageChunks = computed(() => {
109
110
 
110
111
  filteredMessageList.forEach((message, index, messages) => {
111
112
  const messageTime = message.time;
112
- const lastChunk = chunks[chunks.length - 1];
113
+ const lastChunk = chunks.length > 0 ? chunks[chunks.length - 1] : undefined;
114
+ const lastMessage = index > 0 ? messages[index - 1] : undefined;
113
115
 
114
116
  const shouldCreateNewChunk = !lastChunk
115
117
  || messageTime - lastChunk.timestamp > MAX_TIME_BETWEEN_MESSAGE_GROUP
116
118
  || lastChunk.messages[0].from !== message.from
117
119
  || message.isRevoked
118
- || (index > 0 && messages[index - 1].isRevoked);
120
+ || (lastMessage && lastMessage.isRevoked)
121
+ || message.status === 'fail'
122
+ || (lastMessage && lastMessage.status === 'fail')
123
+ || message.hasRiskContent
124
+ || (lastMessage && lastMessage.hasRiskContent);
119
125
 
120
126
  if (shouldCreateNewChunk) {
121
127
  chunks.push({
@@ -239,6 +245,12 @@ watch(messageList, (newMessages, oldMessages) => {
239
245
  }
240
246
  });
241
247
 
248
+ watch(() => props.enableReadReceipt, (newEnableReadReceipt) => {
249
+ setEnableReadReceipt(newEnableReadReceipt);
250
+ }, {
251
+ immediate: true,
252
+ });
253
+
242
254
  onMounted(() => {
243
255
  if (scrollContainer.value) {
244
256
  scrollContainer.value.addEventListener('scroll', handleScroll);
@@ -277,8 +289,8 @@ onUnmounted(() => {
277
289
  <!-- Time Divider -->
278
290
  <component
279
291
  :is="props.MessageTimeDivider || DefaultMessageTimeDivider"
280
- :previous-message="chunkIndex > 0 ? messageChunks[chunkIndex-1].messages[0] : undefined"
281
- :message="chunk.messages[0]"
292
+ :previousMessage="chunkIndex > 0 ? messageChunks[chunkIndex-1].messages[0] : undefined"
293
+ :currentMessage="chunk.messages[0]"
282
294
  />
283
295
 
284
296
  <!-- Message Chunk -->
@@ -392,7 +404,7 @@ onUnmounted(() => {
392
404
 
393
405
  .scroll-to-bottom {
394
406
  position: absolute;
395
- bottom: 105px;
407
+ bottom: 95px;
396
408
  right: 8px;
397
409
  }
398
410
  </style>
@@ -1,25 +1,25 @@
1
1
  <script lang="ts" setup>
2
2
  import { h, computed, Fragment } from 'vue';
3
3
  import { getTimeStampAuto } from '../../../utils/time';
4
- import type { IMessageModel } from '@tencentcloud/chat-uikit-engine';
4
+ import type { MessageModel } from '../../../types';
5
5
 
6
- interface IMessageTimeDividerProps {
7
- previousMessage: IMessageModel | undefined;
8
- message: IMessageModel;
6
+ interface MessageTimeDividerProps {
7
+ previousMessage: MessageModel | undefined;
8
+ currentMessage: MessageModel;
9
9
  }
10
10
 
11
- const props = withDefaults(defineProps<IMessageTimeDividerProps>(), {
11
+ const props = withDefaults(defineProps<MessageTimeDividerProps>(), {
12
12
  previousMessage: undefined,
13
- message: () => ({}) as IMessageModel,
13
+ currentMessage: () => ({}) as MessageModel,
14
14
  });
15
15
 
16
16
  const shouldShowTimeDivider = computed(() => {
17
- if (!props.message?.time) {
17
+ if (!props.currentMessage?.time) {
18
18
  return false;
19
19
  }
20
20
 
21
21
  const prevTime = props.previousMessage?.time || 0;
22
- const currentTime = props.message.time;
22
+ const currentTime = props.currentMessage.time;
23
23
 
24
24
  return currentTime - prevTime > 5 * 60;
25
25
  });
@@ -29,7 +29,7 @@ const renderDefaultContent = () => {
29
29
  return h(Fragment, null, []);
30
30
  }
31
31
 
32
- const currentTime = props.message.time;
32
+ const currentTime = props.currentMessage.time;
33
33
 
34
34
  return h('div', { class: 'message-time-divider' }, [
35
35
  h('span', {}, getTimeStampAuto(currentTime * 1000)),
@@ -1,14 +1,15 @@
1
- import { Message } from './Message';
2
- import { MessageActionDropdown } from './Message/MessageLayout/MessageActionDropdown';
3
- import MessageList from './MessageList.vue';
1
+ import { Message as MessageComponent } from './Message';
2
+ import MessageListComponent from './MessageList.vue';
4
3
  import { addI18n } from '../../i18n';
5
4
  import { resources } from './i18n';
6
5
 
7
6
  addI18n('en-US', { translation: { MessageList: resources['en-US'] } });
8
7
  addI18n('zh-CN', { translation: { MessageList: resources['zh-CN'] } });
9
8
 
9
+ const Message = MessageComponent;
10
+ const MessageList = MessageListComponent;
11
+
10
12
  export {
11
13
  Message,
12
14
  MessageList,
13
- MessageActionDropdown,
14
15
  };
@@ -1,6 +1,3 @@
1
- @use "sass:map";
2
- @use "@tencentcloud/uikit-base-component-vue3/src/providers/UIKitProvider/styles/variables.scss" as *;
3
-
4
1
  .Search {
5
2
  display: flex;
6
3
  flex-direction: column;
@@ -1,6 +1,3 @@
1
- @use "sass:map";
2
- @use "@tencentcloud/uikit-base-component-vue3/src/providers/UIKitProvider/styles/variables.scss" as *;
3
-
4
1
  .SearchEmpty {
5
2
  display: flex;
6
3
  flex-direction: column;
@@ -1,6 +1,3 @@
1
- @use "sass:map";
2
- @use "@tencentcloud/uikit-base-component-vue3/src/providers/UIKitProvider/styles/variables.scss" as *;
3
-
4
1
  .SearchLoading {
5
2
  padding: 32px;
6
3
  text-align: center;
@@ -1,6 +1,4 @@
1
- @use "sass:map";
2
- @use "@tencentcloud/uikit-base-component-vue3/src/providers/UIKitProvider/styles/variables.scss" as *;
3
-
1
+ @use '../../../styles/mixins' as mixins;
4
2
  .SearchResults {
5
3
  flex: 1;
6
4
  overflow: hidden;
@@ -64,11 +62,8 @@
64
62
  display: flex;
65
63
  flex-direction: column;
66
64
  gap: 8px;
67
- scrollbar-width: none;
68
- -ms-overflow-style: none;
69
- &::-webkit-scrollbar {
70
- display: none;
71
- }
65
+
66
+ @include mixins.scrollbar-hidden();
72
67
  }
73
68
 
74
69
  .SearchResults__error {
@@ -155,19 +150,15 @@
155
150
  text-align: center;
156
151
  margin: 0;
157
152
  padding: 0 12px;
158
- white-space: nowrap;
159
- overflow: hidden;
160
- text-overflow: ellipsis;
153
+
154
+ @include mixins.text-ellipsis();
161
155
  }
162
156
 
163
157
  .SearchResults__message-detail-content {
164
158
  flex: 1;
165
159
  overflow-y: auto;
166
- scrollbar-width: none;
167
- -ms-overflow-style: none;
168
- &::-webkit-scrollbar {
169
- display: none;
170
- }
160
+
161
+ @include mixins.scrollbar-hidden();
171
162
  }
172
163
 
173
164
  .SearchResults__result-section {
@@ -1,6 +1,4 @@
1
- @use "sass:map";
2
- @use "@tencentcloud/uikit-base-component-vue3/src/providers/UIKitProvider/styles/variables.scss" as *;
3
-
1
+ @use '../../../../../styles/mixins' as mixins;
4
2
  .conversationItem {
5
3
  display: flex;
6
4
  align-items: flex-start;
@@ -28,20 +26,16 @@
28
26
  .name {
29
27
  font-weight: 500;
30
28
  font-size: 14px;
31
- overflow: hidden;
32
- text-overflow: ellipsis;
33
- white-space: nowrap;
34
29
  color: var(--text-color-primary);
30
+
31
+ @include mixins.text-ellipsis();
35
32
  }
36
33
 
37
34
  .showText {
38
35
  font-size: 12px;
39
36
  line-height: 1.5;
40
- overflow: hidden;
41
- text-overflow: ellipsis;
42
- display: -webkit-box;
43
- -webkit-line-clamp: 3;
44
- -webkit-box-orient: vertical;
45
37
  word-break: break-word;
46
38
  color: var(--text-color-secondary);
39
+
40
+ @include mixins.multi-line-ellipsis(3);
47
41
  }