tuikit-atomicx-vue3 3.3.0-beta.3 → 3.3.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.
- package/dist/AttachmentPicker.module-BesmtGyl.js +11 -0
- package/dist/FilePicker.vue_vue_type_script_setup_true_lang-CdJ4DUzE.js +76 -0
- package/dist/ImagePicker.vue_vue_type_script_setup_true_lang-CbNUofpK.js +76 -0
- package/dist/{MessageInput.vue_vue_type_script_setup_true_lang-XRL7A5Gj.js → MessageInput.vue_vue_type_script_setup_true_lang-wUJPjWbx.js} +23 -18
- package/dist/VideoPicker.vue_vue_type_script_setup_true_lang-CmxjbNDJ.js +76 -0
- package/dist/chat/index.d.ts +3747 -2386
- package/dist/chat/index.js +12 -11
- package/dist/components/BarrageInput/BarrageInputH5.js +32 -8
- package/dist/components/BarrageInput/EmojiPicker/EmojiPicker.js +9 -5
- package/dist/components/BarrageInput/TextEditor/index.js +14 -6
- package/dist/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue.d.ts +4 -4
- package/dist/components/BarrageList/Message/TextMessage/TextMessage.js +12 -4
- package/dist/components/BarrageList/i18n/en-US/index.d.ts +1 -0
- package/dist/components/BarrageList/i18n/en-US/index.js +2 -1
- package/dist/components/BarrageList/i18n/zh-CN/index.d.ts +1 -0
- package/dist/components/BarrageList/i18n/zh-CN/index.js +2 -1
- package/dist/components/ChatSetting/GroupChatSetting/GroupActions/GroupActions.js +5 -3
- package/dist/components/ChatSetting/GroupChatSetting/GroupChatSetting.js +3 -3
- package/dist/components/ChatSetting/GroupChatSetting/GroupInfo/GroupInfo.js +3 -3
- package/dist/components/ChatSetting/GroupChatSetting/GroupManagement/GroupManagement.js +3 -3
- package/dist/components/ChatSetting/GroupChatSetting/GroupMembers/GroupMembers.js +3 -3
- package/dist/components/ChatSetting/SettingItem/SettingItem.js +21 -21
- package/dist/components/ChatSetting/i18n/en-US.js +3 -3
- package/dist/components/ChatSetting/i18n/zh-CN.js +3 -3
- package/dist/components/ChatSetting/index.d.ts +1 -4
- package/dist/components/ChatSetting/index.js +3 -6
- package/dist/components/CoGuestPanel/CoGuestPanel.js +1 -1
- package/dist/components/ContactList/ContactInfo/ContactInfo.js +17 -17
- package/dist/components/ContactList/ContactInfo/ContactInfo.vue.d.ts +26 -2
- package/dist/components/ContactList/ContactInfo/GroupInfo/GroupInfo.js +2 -1
- package/dist/components/ContactList/ContactList.js +19 -10
- package/dist/components/ContactList/ContactList.vue.d.ts +109 -1
- package/dist/components/ContactList/index.d.ts +158 -26
- package/dist/components/ConversationList/ConversationActions/ConversationActions.js +8 -9
- package/dist/components/ConversationList/ConversationCreate/ConversationCreate.js +2 -1
- package/dist/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.js +8 -8
- package/dist/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.js +1 -2
- package/dist/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.js +8 -8
- package/dist/components/ConversationList/ConversationList.js +18 -44
- package/dist/components/ConversationList/ConversationList.vue.d.ts +197 -1535
- package/dist/components/ConversationList/ConversationListContent/ConversationListContent.js +8 -11
- package/dist/components/ConversationList/ConversationListContent/ConversationListContent.vue.d.ts +22 -340
- package/dist/components/ConversationList/ConversationPreview/ConversationPreview.vue.d.ts +80 -134
- package/dist/components/ConversationList/ConversationPreview/ConversationPreviewAbstract.js +14 -14
- package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTimestamp.js +14 -14
- package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.js +19 -30
- package/dist/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue.d.ts +0 -2
- package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.js +14 -15
- package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUI.vue.d.ts +12 -24
- package/dist/components/ConversationList/ConversationPreview/ConversationPreviewUnread.js +14 -14
- package/dist/components/ConversationList/ConversationPreview/index.d.ts +1 -1
- package/dist/components/ConversationList/ConversationPreview/index.js +17 -21
- package/dist/components/ConversationList/ConversationSearch/ConversationSearch.js +1 -0
- package/dist/components/ConversationList/index.d.ts +468 -2400
- package/dist/components/ConversationList/index.js +1 -1
- package/dist/components/LiveAudienceList/LiveAudienceListH5.js +1 -1
- package/dist/components/LiveCoreView/index.js +113 -58
- package/dist/components/LiveCoreView/index.vue.d.ts +9 -0
- package/dist/components/LiveList/LiveList.js +7 -5
- package/dist/components/LiveList/LiveListH5.js +77 -71
- package/dist/components/LiveList/i18n/en-US/index.d.ts +5 -0
- package/dist/components/LiveList/i18n/en-US/index.js +6 -1
- package/dist/components/LiveList/i18n/zh-CN/index.d.ts +5 -0
- package/dist/components/LiveList/i18n/zh-CN/index.js +6 -1
- package/dist/components/LiveList/pullToRefresh.js +204 -0
- package/dist/components/LiveList/pullToRefresh.vue.d.ts +86 -0
- package/dist/components/LiveScenePanel/CameraSettingDialog.js +6 -5
- package/dist/components/LiveScenePanel/index.js +3 -3
- package/dist/components/MessageInput/AttachmentPicker/AttachmentPicker.vue.d.ts +0 -4
- package/dist/components/MessageInput/AttachmentPicker/FilePicker.js +1 -1
- package/dist/components/MessageInput/AttachmentPicker/ImagePicker.js +1 -1
- package/dist/components/MessageInput/AttachmentPicker/VideoPicker.js +1 -1
- package/dist/components/MessageInput/AttachmentPicker/index.js +14 -19
- package/dist/components/MessageInput/EmojiPicker/EmojiPicker.js +3 -3
- package/dist/components/MessageInput/MessageInput.js +1 -1
- package/dist/components/MessageInput/MessageInput.vue.d.ts +6 -9
- package/dist/components/MessageInput/TextEditor/TextEditor.vue.d.ts +2 -2
- package/dist/components/MessageInput/TextEditor/index.js +18 -9
- package/dist/components/MessageInput/index.d.ts +5 -41
- package/dist/components/MessageInput/index.js +4 -4
- package/dist/components/MessageList/Message/CustomMessage/index.js +2 -2
- package/dist/components/MessageList/Message/FaceMessage/FaceMessage.js +7 -5
- package/dist/components/MessageList/Message/FaceMessage/FaceMessage.vue.d.ts +8 -8
- package/dist/components/MessageList/Message/LocationMessage/LocationMessage.js +2 -1
- package/dist/components/MessageList/Message/MergerMessage/MergerMessage.js +2 -1
- package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.js +12 -4
- package/dist/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.vue.d.ts +3 -3
- package/dist/components/MessageList/MessageForward/MessageForward.js +2 -3
- package/dist/components/MessageList/MessageList.js +14 -7
- package/dist/components/MessageList/MessageList.vue.d.ts +1 -1
- package/dist/components/MessageList/MessageTimeDivider/MessageTimeDivider.js +5 -5
- package/dist/components/MessageList/MessageTimeDivider/MessageTimeDivider.vue.d.ts +10 -10
- package/dist/components/MessageList/index.d.ts +143 -5
- package/dist/components/MessageList/index.js +5 -5
- package/dist/components/Search/Search.js +1 -3
- package/dist/components/Search/SearchResults/EmptyResult/EmptyResult.js +4 -6
- package/dist/components/Search/SearchResults/Loading/Loading.js +2 -4
- package/dist/components/Search/SearchResults/SearchResults.js +20 -22
- package/dist/components/Search/SearchResults/SearchResultsItem/Conversation/Conversation.js +6 -8
- package/dist/components/Search/SearchResults/SearchResultsItem/Group/Group.js +5 -7
- package/dist/components/Search/SearchResults/SearchResultsItem/Message/Message.js +19 -21
- package/dist/components/Search/SearchResults/SearchResultsItem/SearchResultsItem.js +1 -3
- package/dist/components/Search/SearchResults/SearchResultsItem/User/User.js +5 -7
- package/dist/components/StreamMixer/LocalMixer/index.js +11 -5
- package/dist/components/StreamView/manager/mediaManager.js +1 -1
- package/dist/components/UserPicker/UserPicker.js +2 -2
- package/dist/components/UserPicker/UserPicker.vue.d.ts +7 -8
- package/dist/components/UserPicker/components/ListMode/ListMode.js +14 -17
- package/dist/components/UserPicker/components/ListMode/ListMode.vue.d.ts +2 -2
- package/dist/components/UserPicker/components/SelectedPanel/SelectedPanel.vue.d.ts +2 -2
- package/dist/components/UserPicker/components/TreeMode/TreeMode.vue.d.ts +3 -3
- package/dist/components/UserPicker/components/TreeMode/TreeNode.vue.d.ts +4 -4
- package/dist/components/UserPicker/hooks/useSearchFilter.d.ts +3 -3
- package/dist/components/UserPicker/hooks/useSelection.d.ts +8 -8
- package/dist/components/UserPicker/hooks/useTreeState.d.ts +3 -3
- package/dist/components/UserPicker/index.d.ts +134 -3
- package/dist/components/UserPicker/index.js +3 -2
- package/dist/components/UserPicker/type.d.ts +18 -18
- package/dist/index.js +6 -3
- package/dist/rtc/index.d.ts +9 -0
- package/dist/states/GroupSettingState/GroupSettingState.js +3 -3
- package/dist/states/LiveSeatState/usePlayStream/MixStreamPlayer.js +3 -0
- package/dist/states/LoginState.js +1 -0
- package/dist/states/MessageInputState/MessageInputState.js +25 -5
- package/dist/styles/index.css +1294 -3578
- package/dist/types/contact.d.ts +13 -12
- package/dist/types/conversation.d.ts +12 -14
- package/dist/types/engine.d.ts +12 -0
- package/dist/types/engine.js +15 -0
- package/dist/types/index.js +2 -1
- package/dist/utils/json.js +0 -1
- package/package.json +7 -3
- package/src/chat/index.ts +12 -4
- package/src/components/BarrageInput/BarrageInputH5.vue +50 -4
- package/src/components/BarrageInput/EmojiPicker/EmojiPicker.module.scss +1 -0
- package/src/components/BarrageInput/EmojiPicker/EmojiPicker.vue +1 -1
- package/src/components/BarrageInput/TextEditor/Editor.scss +1 -1
- package/src/components/BarrageInput/TextEditor/TextEditor.module.scss +2 -0
- package/src/components/BarrageInput/TextEditor/TextEditor.vue +6 -0
- package/src/components/BarrageList/Message/GroupTipMessage/GroupTipMessage.vue +8 -8
- package/src/components/BarrageList/Message/TextMessage/TextMessage.vue +10 -0
- package/src/components/BarrageList/i18n/en-US/index.ts +1 -0
- package/src/components/BarrageList/i18n/zh-CN/index.ts +1 -0
- package/src/components/ChatSetting/GroupChatSetting/GroupActions/GroupActions.vue +5 -2
- package/src/components/ChatSetting/GroupChatSetting/GroupChatSetting.vue +5 -4
- package/src/components/ChatSetting/GroupChatSetting/GroupInfo/GroupInfo.vue +2 -2
- package/src/components/ChatSetting/GroupChatSetting/GroupManagement/GroupManagement.vue +3 -2
- package/src/components/ChatSetting/GroupChatSetting/GroupMembers/GroupMembers.vue +3 -3
- package/src/components/ChatSetting/SettingItem/SettingItem.vue +10 -7
- package/src/components/ChatSetting/i18n/en-US.ts +3 -3
- package/src/components/ChatSetting/i18n/zh-CN.ts +3 -3
- package/src/components/ChatSetting/index.ts +3 -3
- package/src/components/CoGuestPanel/CoGuestPanel.vue +9 -0
- package/src/components/ContactList/ContactInfo/BlacklistInfo/BlacklistInfo.scss +2 -0
- package/src/components/ContactList/ContactInfo/ContactInfo.vue +17 -9
- package/src/components/ContactList/ContactInfo/FriendApplicationInfo/FriendApplicationInfo.scss +2 -0
- package/src/components/ContactList/ContactInfo/FriendInfo/FriendInfo.scss +4 -3
- package/src/components/ContactList/ContactInfo/GroupApplicationInfo/GroupApplicationInfo.scss +2 -0
- package/src/components/ContactList/ContactInfo/GroupInfo/GroupInfo.scss +2 -0
- package/src/components/ContactList/ContactInfo/GroupInfo/GroupInfo.vue +1 -0
- package/src/components/ContactList/ContactInfo/SearchGroupInfo/SearchGroupInfo.scss +2 -2
- package/src/components/ContactList/ContactInfo/SearchUserInfo/SearchUserInfo.scss +3 -2
- package/src/components/ContactList/ContactList.scss +2 -1
- package/src/components/ContactList/ContactList.vue +18 -3
- package/src/components/ContactList/ContactListItem/BlacklistItem/BlacklistItem.scss +3 -3
- package/src/components/ContactList/ContactListItem/FriendApplicationItem/FriendApplicationItem.scss +5 -6
- package/src/components/ContactList/ContactListItem/FriendItem/FriendItem.scss +3 -3
- package/src/components/ContactList/ContactListItem/GroupApplicationItem/GroupApplicationItem.scss +5 -6
- package/src/components/ContactList/ContactListItem/GroupItem/GroupItem.scss +3 -3
- package/src/components/ConversationList/ConversationActions/ConversationActions.scss +2 -12
- package/src/components/ConversationList/ConversationActions/ConversationActions.vue +2 -2
- package/src/components/ConversationList/ConversationCreate/ConversationCreate.vue +1 -0
- package/src/components/ConversationList/ConversationCreate/ConversationCreateGroupDetail/ConversationCreateGroupDetail.scss +2 -1
- package/src/components/ConversationList/ConversationCreate/ConversationCreateUserSelectList/ConversationCreateUserSelectList.vue +2 -2
- package/src/components/ConversationList/ConversationCreate/ConversationGroupTypeInfo/ConversationGroupTypeInfo.scss +2 -1
- package/src/components/ConversationList/ConversationList.scss +0 -5
- package/src/components/ConversationList/ConversationList.vue +15 -41
- package/src/components/ConversationList/ConversationListContent/ConversationListContent.scss +1 -0
- package/src/components/ConversationList/ConversationListContent/ConversationListContent.vue +13 -18
- package/src/components/ConversationList/ConversationPreview/ConversationPreview.scss +11 -9
- package/src/components/ConversationList/ConversationPreview/ConversationPreview.vue +14 -16
- package/src/components/ConversationList/ConversationPreview/ConversationPreviewTitle.vue +2 -14
- package/src/components/ConversationList/ConversationPreview/index.ts +1 -1
- package/src/components/ConversationList/ConversationSearch/ConversationSearch.vue +1 -0
- package/src/components/LiveAudienceList/LiveAudienceListH5.vue +2 -2
- package/src/components/LiveCoreView/index.vue +145 -79
- package/src/components/LiveList/LiveList.vue +3 -0
- package/src/components/LiveList/LiveListH5.vue +60 -85
- package/src/components/LiveList/i18n/en-US/index.ts +5 -0
- package/src/components/LiveList/i18n/zh-CN/index.ts +5 -0
- package/src/components/LiveList/pullToRefresh.vue +364 -0
- package/src/components/LiveScenePanel/CameraSettingDialog.vue +6 -5
- package/src/components/LiveScenePanel/index.vue +2 -2
- package/src/components/MessageInput/AttachmentPicker/AttachmentPicker.module.scss +4 -0
- package/src/components/MessageInput/AttachmentPicker/AttachmentPicker.vue +12 -17
- package/src/components/MessageInput/AttachmentPicker/FilePicker.vue +3 -2
- package/src/components/MessageInput/AttachmentPicker/ImagePicker.vue +3 -2
- package/src/components/MessageInput/AttachmentPicker/VideoPicker.vue +3 -2
- package/src/components/MessageInput/EmojiPicker/EmojiPicker.module.scss +1 -0
- package/src/components/MessageInput/MessageInput.vue +21 -15
- package/src/components/MessageInput/TextEditor/Editor.scss +1 -0
- package/src/components/MessageInput/TextEditor/TextEditor.vue +16 -6
- package/src/components/MessageInput/types.d.ts +3 -4
- package/src/components/MessageList/Message/CustomMessage/CustomMessage.vue +1 -1
- package/src/components/MessageList/Message/FaceMessage/FaceMessage.vue +10 -7
- package/src/components/MessageList/Message/LocationMessage/LocationMessage.vue +3 -1
- package/src/components/MessageList/Message/MergerMessage/MergerMessage.vue +1 -1
- package/src/components/MessageList/Message/MessageLayout/MessageActionDropdown/MessageActionDropdown.vue +2 -2
- package/src/components/MessageList/MessageForward/MessageForward.vue +3 -3
- package/src/components/MessageList/MessageList.vue +17 -5
- package/src/components/MessageList/MessageTimeDivider/MessageTimeDivider.vue +9 -9
- package/src/components/MessageList/index.ts +5 -4
- package/src/components/Search/Search.scss +0 -3
- package/src/components/Search/SearchResults/EmptyResult/EmptyResult.scss +0 -3
- package/src/components/Search/SearchResults/Loading/Loading.scss +0 -3
- package/src/components/Search/SearchResults/SearchResults.scss +7 -16
- package/src/components/Search/SearchResults/SearchResultsItem/Conversation/Conversation.scss +5 -11
- package/src/components/Search/SearchResults/SearchResultsItem/Group/Group.scss +5 -11
- package/src/components/Search/SearchResults/SearchResultsItem/Message/Message.scss +5 -11
- package/src/components/Search/SearchResults/SearchResultsItem/SearchResultsItem.scss +0 -3
- package/src/components/Search/SearchResults/SearchResultsItem/User/User.scss +5 -6
- package/src/components/StreamMixer/LocalMixer/index.vue +9 -4
- package/src/components/StreamView/manager/mediaManager.ts +1 -1
- package/src/components/UserPicker/UserPicker.vue +6 -9
- package/src/components/UserPicker/components/ListMode/ListMode.vue +3 -7
- package/src/components/UserPicker/components/SelectedPanel/SelectedPanel.vue +2 -2
- package/src/components/UserPicker/components/TreeMode/TreeMode.vue +3 -3
- package/src/components/UserPicker/components/TreeMode/TreeNode.vue +3 -3
- package/src/components/UserPicker/hooks/useSearchFilter.ts +15 -14
- package/src/components/UserPicker/hooks/useSelection.ts +32 -32
- package/src/components/UserPicker/hooks/useTreeState.ts +4 -4
- package/src/components/UserPicker/index.ts +16 -14
- package/src/components/UserPicker/type.ts +18 -18
- package/src/types/contact.ts +13 -12
- package/src/types/conversation.ts +12 -14
- package/src/types/engine.ts +15 -0
- package/src/utils/json.ts +0 -4
- package/dist/AttachmentPicker.module-0_DWsAtr.js +0 -11
- package/dist/FilePicker.vue_vue_type_script_setup_true_lang-CaSj3Gh_.js +0 -72
- package/dist/ImagePicker.vue_vue_type_script_setup_true_lang-CrzGMmrh.js +0 -72
- package/dist/VideoPicker.vue_vue_type_script_setup_true_lang-DTv6TJKr.js +0 -72
- package/dist/states/UIOpenControlState/UIOpenControlState.d.ts +0 -15
- package/dist/states/UIOpenControlState/UIOpenControlState.js +0 -28
- package/dist/states/UIOpenControlState/index.d.ts +0 -1
- package/dist/states/UIOpenControlState/index.js +0 -4
package/dist/types/contact.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { Component } from 'vue';
|
|
1
2
|
import { GroupModel } from './engine';
|
|
2
3
|
import { default as TUIChatEngine } from '@tencentcloud/chat-uikit-engine';
|
|
3
4
|
|
|
@@ -135,10 +136,10 @@ export interface ContactListProps {
|
|
|
135
136
|
groupConfig?: Partial<Record<ContactItemType, CustomGroupConfig>>;
|
|
136
137
|
searchPlaceholder?: string;
|
|
137
138
|
emptyText?: string;
|
|
138
|
-
ContactItem?:
|
|
139
|
-
ContactSearchComponent?:
|
|
140
|
-
GroupHeader?:
|
|
141
|
-
PlaceholderEmptyList?:
|
|
139
|
+
ContactItem?: Component;
|
|
140
|
+
ContactSearchComponent?: Component;
|
|
141
|
+
GroupHeader?: Component;
|
|
142
|
+
PlaceholderEmptyList?: Component;
|
|
142
143
|
onContactItemClick?: (item: ContactGroupItem) => void;
|
|
143
144
|
onFriendApplicationAction?: (action: 'accept' | 'refuse', application: FriendApplication) => void;
|
|
144
145
|
onGroupApplicationAction?: (action: 'accept' | 'refuse', application: GroupApplication) => void;
|
|
@@ -149,14 +150,14 @@ export interface ContactInfoBaseProps {
|
|
|
149
150
|
}
|
|
150
151
|
export interface ContactInfoProps extends ContactInfoBaseProps {
|
|
151
152
|
contactItem?: ContactGroupItem | undefined;
|
|
152
|
-
PlaceholderEmpty?:
|
|
153
|
-
FriendInfoComponent?:
|
|
154
|
-
GroupInfoComponent?:
|
|
155
|
-
BlacklistInfoComponent?:
|
|
156
|
-
FriendApplicationInfoComponent?:
|
|
157
|
-
GroupApplicationInfoComponent?:
|
|
158
|
-
SearchGroupInfoComponent?:
|
|
159
|
-
SearchUserInfoComponent?:
|
|
153
|
+
PlaceholderEmpty?: Component;
|
|
154
|
+
FriendInfoComponent?: Component;
|
|
155
|
+
GroupInfoComponent?: Component;
|
|
156
|
+
BlacklistInfoComponent?: Component;
|
|
157
|
+
FriendApplicationInfoComponent?: Component;
|
|
158
|
+
GroupApplicationInfoComponent?: Component;
|
|
159
|
+
SearchGroupInfoComponent?: Component;
|
|
160
|
+
SearchUserInfoComponent?: Component;
|
|
160
161
|
onSendMessage?: (friend: Friend) => void;
|
|
161
162
|
onDeleteFriend?: (friend: Friend) => void;
|
|
162
163
|
onUpdateFriendRemark?: (friend: Friend, remark: string) => void;
|
|
@@ -26,11 +26,11 @@ export interface ConversationListProps {
|
|
|
26
26
|
/** Specifies a vue component to customize the conversation actions in conversation preview. */
|
|
27
27
|
ConversationActions?: Component<ConversationActionsProps>;
|
|
28
28
|
/** Specifies a vue component to display when the chat list is empty. */
|
|
29
|
-
PlaceholderEmptyList?:
|
|
29
|
+
PlaceholderEmptyList?: Component;
|
|
30
30
|
/** Specifies a vue component to display while the chat list is loading. */
|
|
31
|
-
PlaceholderLoading?:
|
|
31
|
+
PlaceholderLoading?: Component;
|
|
32
32
|
/** Specifies a vue component to display when there is an error loading the chat list. */
|
|
33
|
-
PlaceholderLoadError?:
|
|
33
|
+
PlaceholderLoadError?: Component;
|
|
34
34
|
/** Specifies a vue component to customize the avatar in list. */
|
|
35
35
|
Avatar?: Component<AvatarProps>;
|
|
36
36
|
/** Specifies a function to filter conversations in the conversation list. */
|
|
@@ -70,11 +70,11 @@ export interface ConversationListContentProps {
|
|
|
70
70
|
/** Indicates whether there was an error loading the chat list */
|
|
71
71
|
error?: boolean;
|
|
72
72
|
/** A custom component to display when the chat list is empty */
|
|
73
|
-
PlaceholderEmptyList?:
|
|
73
|
+
PlaceholderEmptyList?: Component;
|
|
74
74
|
/** A custom component to display while the chat list is loading */
|
|
75
|
-
PlaceholderLoading?:
|
|
75
|
+
PlaceholderLoading?: Component;
|
|
76
76
|
/** A custom component to display when there is an error loading the chat list */
|
|
77
|
-
PlaceholderLoadError?:
|
|
77
|
+
PlaceholderLoadError?: Component;
|
|
78
78
|
/** The custom class name */
|
|
79
79
|
className?: string;
|
|
80
80
|
/** The custom class style */
|
|
@@ -87,18 +87,16 @@ export interface ConversationPreviewUIProps {
|
|
|
87
87
|
isSelected?: boolean;
|
|
88
88
|
/** Whether to show the ConversationActions */
|
|
89
89
|
enableActions?: boolean;
|
|
90
|
-
/** The string to be highlighted in the title */
|
|
91
|
-
highlightMatchString?: string;
|
|
92
90
|
/** The custom Avatar component */
|
|
93
91
|
Avatar?: Component<AvatarProps>;
|
|
94
92
|
/** The custom Title component */
|
|
95
|
-
Title?: string |
|
|
93
|
+
Title?: string | Component;
|
|
96
94
|
/** The custom last message abstract component */
|
|
97
|
-
LastMessageAbstract?: string |
|
|
95
|
+
LastMessageAbstract?: string | Component;
|
|
98
96
|
/** The custom last message abstract component */
|
|
99
|
-
LastMessageTimestamp?: string |
|
|
97
|
+
LastMessageTimestamp?: string | Component;
|
|
100
98
|
/** The custom Unread component */
|
|
101
|
-
Unread?: string |
|
|
99
|
+
Unread?: string | Component;
|
|
102
100
|
/** The custom ConversationActions component */
|
|
103
101
|
ConversationActions?: Component<ConversationActionsProps>;
|
|
104
102
|
/** Callback when the user click a conversation from conversation list */
|
|
@@ -153,9 +151,9 @@ export interface ConversationActionsConfig extends ConversationActionsBaseConfig
|
|
|
153
151
|
*/
|
|
154
152
|
customConversationActions?: Record<string, ConversationActionItem>;
|
|
155
153
|
/** The icon vue element to be displayed in the action popup. */
|
|
156
|
-
PopupIcon?:
|
|
154
|
+
PopupIcon?: Component;
|
|
157
155
|
/** An array of vue elements to be displayed in the action popup. */
|
|
158
|
-
PopupElements?:
|
|
156
|
+
PopupElements?: Component[];
|
|
159
157
|
/** The function to be called when the action popup is clicked. */
|
|
160
158
|
onClick?: (e: Event, key?: string, conversation?: ConversationModel) => void;
|
|
161
159
|
/** Function to be called when the actions modal is closed (H5 only). */
|
package/dist/types/engine.d.ts
CHANGED
package/dist/types/engine.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import TUIChatEngine from "@tencentcloud/chat-uikit-engine";
|
|
1
2
|
var SearchType = /* @__PURE__ */ ((SearchType2) => {
|
|
2
3
|
SearchType2["MESSAGE"] = "message";
|
|
3
4
|
SearchType2["CHAT_MESSAGE"] = "chat_message";
|
|
@@ -5,6 +6,20 @@ var SearchType = /* @__PURE__ */ ((SearchType2) => {
|
|
|
5
6
|
SearchType2["GROUP"] = "group";
|
|
6
7
|
return SearchType2;
|
|
7
8
|
})(SearchType || {});
|
|
9
|
+
var MessageType = ((MessageType2) => {
|
|
10
|
+
MessageType2[MessageType2["TEXT"] = TUIChatEngine.TYPES.MSG_TEXT] = "TEXT";
|
|
11
|
+
MessageType2[MessageType2["IMAGE"] = TUIChatEngine.TYPES.MSG_IMAGE] = "IMAGE";
|
|
12
|
+
MessageType2[MessageType2["AUDIO"] = TUIChatEngine.TYPES.MSG_AUDIO] = "AUDIO";
|
|
13
|
+
MessageType2[MessageType2["VIDEO"] = TUIChatEngine.TYPES.MSG_VIDEO] = "VIDEO";
|
|
14
|
+
MessageType2[MessageType2["FILE"] = TUIChatEngine.TYPES.MSG_FILE] = "FILE";
|
|
15
|
+
MessageType2[MessageType2["FACE"] = TUIChatEngine.TYPES.MSG_FACE] = "FACE";
|
|
16
|
+
MessageType2[MessageType2["LOCATION"] = TUIChatEngine.TYPES.MSG_LOCATION] = "LOCATION";
|
|
17
|
+
MessageType2[MessageType2["GRP_TIP"] = TUIChatEngine.TYPES.MSG_GRP_TIP] = "GRP_TIP";
|
|
18
|
+
MessageType2[MessageType2["CUSTOM"] = TUIChatEngine.TYPES.MSG_CUSTOM] = "CUSTOM";
|
|
19
|
+
MessageType2[MessageType2["MERGER"] = TUIChatEngine.TYPES.MSG_MERGER] = "MERGER";
|
|
20
|
+
return MessageType2;
|
|
21
|
+
})(MessageType || {});
|
|
8
22
|
export {
|
|
23
|
+
MessageType,
|
|
9
24
|
SearchType
|
|
10
25
|
};
|
package/dist/types/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { LocalRoomStatus, RoomAction } from "./room.js";
|
|
|
8
8
|
import { MonitorDeviceStatus } from "./monitor.js";
|
|
9
9
|
import { CoGuestStatus } from "./coGuest.js";
|
|
10
10
|
import { VariantType, defaultTypeLabels } from "./search.js";
|
|
11
|
-
import { SearchType } from "./engine.js";
|
|
11
|
+
import { MessageType, SearchType } from "./engine.js";
|
|
12
12
|
import { CreateConvTypes, GroupLabelTypes, GroupType, PageStateTypes, PlaceHolderTypes } from "./conversation.js";
|
|
13
13
|
import { ContactItemType, GroupApplicationType } from "./contact.js";
|
|
14
14
|
export {
|
|
@@ -30,6 +30,7 @@ export {
|
|
|
30
30
|
LiveType,
|
|
31
31
|
LocalRoomStatus,
|
|
32
32
|
MediaSettingDisplayMode,
|
|
33
|
+
MessageType,
|
|
33
34
|
MonitorDeviceStatus,
|
|
34
35
|
PageStateTypes,
|
|
35
36
|
PlaceHolderTypes,
|
package/dist/utils/json.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tuikit-atomicx-vue3",
|
|
3
|
-
"version": "3.3.
|
|
3
|
+
"version": "3.3.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -22,6 +22,10 @@
|
|
|
22
22
|
"./rtc": {
|
|
23
23
|
"types": "./dist/rtc/index.d.ts",
|
|
24
24
|
"import": "./dist/rtc/index.js"
|
|
25
|
+
},
|
|
26
|
+
"./types": {
|
|
27
|
+
"types": "./dist/types/index.d.ts",
|
|
28
|
+
"import": "./dist/types/index.js"
|
|
25
29
|
}
|
|
26
30
|
},
|
|
27
31
|
"scripts": {
|
|
@@ -47,8 +51,8 @@
|
|
|
47
51
|
"@tencentcloud/chat": "^3.5.4",
|
|
48
52
|
"@tencentcloud/chat-uikit-engine": "~2.5.1",
|
|
49
53
|
"@tencentcloud/tui-core": "latest",
|
|
50
|
-
"@tencentcloud/tuiroom-engine-js": "~3.3.
|
|
51
|
-
"@tencentcloud/uikit-base-component-vue3": "0.
|
|
54
|
+
"@tencentcloud/tuiroom-engine-js": "~3.3.1",
|
|
55
|
+
"@tencentcloud/uikit-base-component-vue3": "1.0.1",
|
|
52
56
|
"vue": "^3.4.21"
|
|
53
57
|
},
|
|
54
58
|
"dependencies": {
|
package/src/chat/index.ts
CHANGED
|
@@ -12,12 +12,17 @@ import {
|
|
|
12
12
|
ConversationListHeader as ConversationListHeaderComponent,
|
|
13
13
|
ConversationListContent as ConversationListContentComponent,
|
|
14
14
|
ConversationPreview as ConversationPreviewComponent,
|
|
15
|
+
ConversationPreviewUI as ConversationPreviewUIComponent,
|
|
16
|
+
ConversationSearch as ConversationSearchComponent,
|
|
15
17
|
} from '../components/ConversationList';
|
|
16
18
|
import {
|
|
17
19
|
MessageInput as MessageInputComponent,
|
|
18
20
|
EmojiPicker as EmojiPickerComponent,
|
|
19
21
|
} from '../components/MessageInput';
|
|
20
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
MessageList as MessageListComponent,
|
|
24
|
+
Message as MessageComponent,
|
|
25
|
+
} from '../components/MessageList';
|
|
21
26
|
import {
|
|
22
27
|
Search as SearchComponent,
|
|
23
28
|
SearchAdvanced as SearchAdvancedComponent,
|
|
@@ -33,7 +38,6 @@ import { useMessageActionState as messageActionState } from '../states/MessageAc
|
|
|
33
38
|
import { useMessageInputState as messageInputState } from '../states/MessageInputState';
|
|
34
39
|
import { useMessageListState as messageListState } from '../states/MessageListState';
|
|
35
40
|
import { useSearchState as searchState } from '../states/SearchState';
|
|
36
|
-
import { useUIOpenControlState as uiOpenControlState } from '../states/UIOpenControlState';
|
|
37
41
|
|
|
38
42
|
import ChatLoginServer from './server';
|
|
39
43
|
|
|
@@ -52,11 +56,14 @@ const ConversationActions = ConversationActionsComponent;
|
|
|
52
56
|
const ConversationListHeader = ConversationListHeaderComponent;
|
|
53
57
|
const ConversationListContent = ConversationListContentComponent;
|
|
54
58
|
const ConversationPreview = ConversationPreviewComponent;
|
|
59
|
+
const ConversationPreviewUI = ConversationPreviewUIComponent;
|
|
60
|
+
const ConversationSearch = ConversationSearchComponent;
|
|
55
61
|
const ContactList = ContactListComponent;
|
|
56
62
|
const ContactListItem = ContactListItemComponent;
|
|
57
63
|
const ContactInfo = ContactInfoComponent;
|
|
58
64
|
|
|
59
65
|
const MessageList = MessageListComponent;
|
|
66
|
+
const Message = MessageComponent;
|
|
60
67
|
const MessageInput = MessageInputComponent;
|
|
61
68
|
const EmojiPicker = EmojiPickerComponent;
|
|
62
69
|
const ChatSetting = ChatSettingComponent;
|
|
@@ -71,7 +78,6 @@ const useMessageActionState = messageActionState;
|
|
|
71
78
|
const useMessageInputState = messageInputState;
|
|
72
79
|
const useMessageListState = messageListState;
|
|
73
80
|
const useSearchState = searchState;
|
|
74
|
-
const useUIOpenControlState = uiOpenControlState;
|
|
75
81
|
|
|
76
82
|
export {
|
|
77
83
|
// component
|
|
@@ -87,7 +93,10 @@ export {
|
|
|
87
93
|
ConversationListHeader,
|
|
88
94
|
ConversationListContent,
|
|
89
95
|
ConversationPreview,
|
|
96
|
+
ConversationPreviewUI,
|
|
97
|
+
ConversationSearch,
|
|
90
98
|
MessageList,
|
|
99
|
+
Message,
|
|
91
100
|
MessageInput,
|
|
92
101
|
EmojiPicker,
|
|
93
102
|
ChatSetting,
|
|
@@ -105,5 +114,4 @@ export {
|
|
|
105
114
|
useMessageActionState,
|
|
106
115
|
useConversationListState,
|
|
107
116
|
useSearchState,
|
|
108
|
-
useUIOpenControlState,
|
|
109
117
|
};
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="live-message-input-h5">
|
|
3
|
+
<div v-if="!editorShow" class="placeholder-container" :style="{width: props.width}" @click="handleShowEditor">
|
|
4
|
+
<div class="input-actions">
|
|
5
|
+
<EmojiPicker :disabled="disabled" :trigger-style="{ display: 'flex' }" />
|
|
6
|
+
</div>
|
|
7
|
+
<span>{{ placeholderText }}</span>
|
|
8
|
+
</div>
|
|
9
|
+
|
|
3
10
|
<BarrageInput
|
|
11
|
+
v-if="editorShow"
|
|
4
12
|
:autoFocus="props.autoFocus"
|
|
5
13
|
:containerClass="inputClass"
|
|
6
14
|
:containerStyle="props.containerStyle"
|
|
@@ -8,7 +16,7 @@
|
|
|
8
16
|
:height="props.height"
|
|
9
17
|
:minHeight="props.minHeight"
|
|
10
18
|
:maxHeight="props.maxHeight"
|
|
11
|
-
:placeholder="
|
|
19
|
+
:placeholder="placeholderText"
|
|
12
20
|
:disabled="disabled"
|
|
13
21
|
:maxLength="props.maxLength"
|
|
14
22
|
@focus="handleFocus"
|
|
@@ -26,12 +34,13 @@
|
|
|
26
34
|
</template>
|
|
27
35
|
|
|
28
36
|
<script setup lang="ts">
|
|
29
|
-
import { ref, withDefaults, defineProps, defineEmits, computed } from 'vue';
|
|
37
|
+
import { ref, withDefaults, defineProps, defineEmits, computed, nextTick } from 'vue';
|
|
30
38
|
import { useUIKit, TUIButton, TUIToast } from '@tencentcloud/uikit-base-component-vue3';
|
|
31
39
|
import { useLiveAudienceState } from '../../states/LiveAudienceState';
|
|
32
40
|
import { useLoginState } from '../../states/LoginState';
|
|
33
41
|
import { useMessageInputState } from '../../states/MessageInputState';
|
|
34
42
|
import BarrageInput from './BarrageInput.vue';
|
|
43
|
+
import EmojiPicker from './EmojiPicker/EmojiPicker.vue';
|
|
35
44
|
import { ERROR_MESSAGE } from './constants';
|
|
36
45
|
|
|
37
46
|
const emit = defineEmits<{
|
|
@@ -52,6 +61,8 @@ interface Props {
|
|
|
52
61
|
maxLength?: number;
|
|
53
62
|
}
|
|
54
63
|
|
|
64
|
+
const { t } = useUIKit();
|
|
65
|
+
|
|
55
66
|
const props = withDefaults(defineProps<Props>(), {
|
|
56
67
|
containerClass: '',
|
|
57
68
|
containerStyle: () => ({}),
|
|
@@ -63,6 +74,7 @@ const props = withDefaults(defineProps<Props>(), {
|
|
|
63
74
|
maxLength: 80,
|
|
64
75
|
});
|
|
65
76
|
|
|
77
|
+
const placeholderText = computed(() => props.placeholder || t('Say something'));
|
|
66
78
|
const { loginUserInfo } = useLoginState();
|
|
67
79
|
const { audienceList } = useLiveAudienceState();
|
|
68
80
|
|
|
@@ -72,9 +84,9 @@ const disabled = computed(() => {
|
|
|
72
84
|
return props.disabled || localUser?.isMessageDisabled;
|
|
73
85
|
});
|
|
74
86
|
|
|
75
|
-
const {
|
|
76
|
-
const { inputRawValue, setContent, sendMessage, blurEditor } = useMessageInputState();
|
|
87
|
+
const { inputRawValue, setContent, sendMessage, blurEditor, focusEditor } = useMessageInputState();
|
|
77
88
|
const isFocus = ref(false);
|
|
89
|
+
const editorShow = ref(false);
|
|
78
90
|
const isTouching = ref(false);
|
|
79
91
|
|
|
80
92
|
const handleTouchStart = () => {
|
|
@@ -113,6 +125,12 @@ const handleBlur = () => {
|
|
|
113
125
|
isFocus.value = false;
|
|
114
126
|
emit('blur');
|
|
115
127
|
};
|
|
128
|
+
|
|
129
|
+
const handleShowEditor = async () => {
|
|
130
|
+
editorShow.value = true;
|
|
131
|
+
await nextTick();
|
|
132
|
+
focusEditor();
|
|
133
|
+
}
|
|
116
134
|
</script>
|
|
117
135
|
|
|
118
136
|
<style lang="scss" scoped>
|
|
@@ -129,5 +147,33 @@ const handleBlur = () => {
|
|
|
129
147
|
border-radius: 100px;
|
|
130
148
|
border: 1px solid var(--stroke-color-primary)
|
|
131
149
|
}
|
|
150
|
+
|
|
151
|
+
.placeholder-container {
|
|
152
|
+
position: relative;
|
|
153
|
+
display: flex;
|
|
154
|
+
align-items: center;
|
|
155
|
+
background-color: var(--bg-color-operate);
|
|
156
|
+
overflow: auto;
|
|
157
|
+
box-sizing: border-box;
|
|
158
|
+
height: 36px;
|
|
159
|
+
max-height: 140px;
|
|
160
|
+
min-height: 36px;
|
|
161
|
+
padding: 2px 12px;
|
|
162
|
+
border-radius: 100px;
|
|
163
|
+
border: 1px solid var(--stroke-color-primary);
|
|
164
|
+
color: var(--text-color-secondary);
|
|
165
|
+
text-align: center;
|
|
166
|
+
line-height: 1.5;
|
|
167
|
+
font-size: 14px;
|
|
168
|
+
user-select: none;
|
|
169
|
+
|
|
170
|
+
.input-actions {
|
|
171
|
+
display: flex;
|
|
172
|
+
align-items: center;
|
|
173
|
+
gap: 12px;
|
|
174
|
+
margin-right: 12px;
|
|
175
|
+
flex-shrink: 0;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
132
178
|
}
|
|
133
179
|
</style>
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
</PopoverTrigger>
|
|
7
7
|
<PopoverPortal>
|
|
8
8
|
<PopoverContent side="top" align="center" :side-offset="8" style="box-sizing: border-box; z-index: 1000">
|
|
9
|
-
<div class="flex flex-col gap-2.5">
|
|
9
|
+
<div class="flex flex-col gap-2.5" tabindex="-1" style="outline: none;">
|
|
10
10
|
<div :class="styles['emoji-picker__list']">
|
|
11
11
|
<div
|
|
12
12
|
v-for="emojiKey in Object.keys(emojiUrlMap)"
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
.tiptap.ProseMirror {
|
|
2
2
|
height: 100%;
|
|
3
|
-
flex: 1 0 auto;
|
|
4
3
|
word-wrap: break-word;
|
|
5
4
|
word-break: break-word;
|
|
6
5
|
white-space: pre-wrap;
|
|
@@ -12,6 +11,7 @@
|
|
|
12
11
|
display: flex;
|
|
13
12
|
flex-direction: column;
|
|
14
13
|
justify-content: center;
|
|
14
|
+
flex: auto;
|
|
15
15
|
|
|
16
16
|
&::-webkit-scrollbar {
|
|
17
17
|
width: 6px;
|
|
@@ -86,10 +86,16 @@ const createEditorInstance = (p: ITextEditorProps) => {
|
|
|
86
86
|
},
|
|
87
87
|
onFocus: () => {
|
|
88
88
|
isFocused.value = true;
|
|
89
|
+
if (navigator && "virtualKeyboard" in navigator) {
|
|
90
|
+
(navigator?.virtualKeyboard as any)?.show()
|
|
91
|
+
}
|
|
89
92
|
emit('focus');
|
|
90
93
|
},
|
|
91
94
|
onBlur: () => {
|
|
92
95
|
isFocused.value = false;
|
|
96
|
+
if (navigator && "virtualKeyboard" in navigator) {
|
|
97
|
+
(navigator?.virtualKeyboard as any)?.hide()
|
|
98
|
+
}
|
|
93
99
|
emit('blur');
|
|
94
100
|
},
|
|
95
101
|
});
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
import { defineProps } from 'vue';
|
|
3
3
|
import { useUIKit } from '@tencentcloud/uikit-base-component-vue3';
|
|
4
4
|
import cs from 'classnames';
|
|
5
|
-
import type { IMessageModel } from '@tencentcloud/chat-uikit-engine';
|
|
5
|
+
import type { IMessageModel as MessageModel } from '@tencentcloud/chat-uikit-engine';
|
|
6
6
|
|
|
7
|
-
interface
|
|
8
|
-
message:
|
|
7
|
+
interface GroupTipMessageProps {
|
|
8
|
+
message: MessageModel;
|
|
9
9
|
}
|
|
10
10
|
|
|
11
|
-
interface
|
|
11
|
+
interface GroupTipMessageContent {
|
|
12
12
|
text: string;
|
|
13
13
|
businessID?: string;
|
|
14
14
|
showName?: string;
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
-
interface
|
|
17
|
+
interface CustomMessageContent {
|
|
18
18
|
businessID?: string;
|
|
19
19
|
showName?: string;
|
|
20
20
|
custom?: string;
|
|
@@ -24,11 +24,11 @@ enum CustomMessageAsGroupTipEnum {
|
|
|
24
24
|
GROUP_CREATE = 'group_create',
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
-
const props = defineProps<
|
|
27
|
+
const props = defineProps<GroupTipMessageProps>();
|
|
28
28
|
|
|
29
29
|
const { t } = useUIKit();
|
|
30
30
|
|
|
31
|
-
const messageContent = props.message.getMessageContent() as
|
|
31
|
+
const messageContent = props.message.getMessageContent() as GroupTipMessageContent & CustomMessageContent;
|
|
32
32
|
|
|
33
33
|
const renderText = () => {
|
|
34
34
|
switch (messageContent.businessID) {
|
|
@@ -50,6 +50,6 @@ const renderText = () => {
|
|
|
50
50
|
.group-tip-message {
|
|
51
51
|
color: var(--text-color-secondary);
|
|
52
52
|
text-align: center;
|
|
53
|
-
font-size:
|
|
53
|
+
font-size: 12px;
|
|
54
54
|
}
|
|
55
55
|
</style>
|
|
@@ -26,6 +26,7 @@
|
|
|
26
26
|
:is="context.slots['user-badge']"
|
|
27
27
|
:message="message"
|
|
28
28
|
/>
|
|
29
|
+
<span class="user-badge" v-if="message.from === currentLive?.liveOwner.userId && !context.slots['user-badge']">{{ t('Anchor') }}</span>
|
|
29
30
|
<span
|
|
30
31
|
class="text-message__content__nick"
|
|
31
32
|
@click="handleNickClick"
|
|
@@ -62,11 +63,13 @@ import { useUIKit, TUIToast } from '@tencentcloud/uikit-base-component-vue3';
|
|
|
62
63
|
import cs from 'classnames';
|
|
63
64
|
import { useScroll } from '../../../../hooks/useScroll';
|
|
64
65
|
import { useBarrageListState } from '../../../../states/BarrageListState';
|
|
66
|
+
import { useLiveState } from '../../../../states/LiveState';
|
|
65
67
|
import { safeJSONParse } from '../../../../utils/json';
|
|
66
68
|
import { useMessageListContext } from '../../MessageListContext';
|
|
67
69
|
import type { ICloudCustomData } from '../../../../types/message';
|
|
68
70
|
import type { IMessageModel } from '@tencentcloud/chat-uikit-engine';
|
|
69
71
|
|
|
72
|
+
const { currentLive } = useLiveState();
|
|
70
73
|
const context: {
|
|
71
74
|
slots: Record<string, () => VueElement>;
|
|
72
75
|
nickClick: (payload: { message: IMessageModel; event: MouseEvent }) => void;
|
|
@@ -217,6 +220,13 @@ const handleNickClick = (event: MouseEvent) => {
|
|
|
217
220
|
word-spacing: 0.2em;
|
|
218
221
|
letter-spacing: 0.1em;
|
|
219
222
|
|
|
223
|
+
.user-badge {
|
|
224
|
+
background-color: var(--uikit-color-theme-6);
|
|
225
|
+
border-radius: 12px;
|
|
226
|
+
padding: 0px 8px;
|
|
227
|
+
margin-right: 6px;
|
|
228
|
+
}
|
|
229
|
+
|
|
220
230
|
&__nick {
|
|
221
231
|
color: var(--uikit-color-theme-8);
|
|
222
232
|
cursor: pointer;
|
|
@@ -39,6 +39,7 @@
|
|
|
39
39
|
|
|
40
40
|
<!-- Transfer Group Owner Dialog -->
|
|
41
41
|
<TUIDialog
|
|
42
|
+
appendTo="body"
|
|
42
43
|
:visible="isShowTransferDialog"
|
|
43
44
|
:title="t('ChatSetting.transfer_group_owner')"
|
|
44
45
|
:custom-classes="['user-picker-dialog']"
|
|
@@ -62,6 +63,7 @@
|
|
|
62
63
|
|
|
63
64
|
<!-- Dismiss Group Dialog -->
|
|
64
65
|
<TUIDialog
|
|
66
|
+
appendTo="body"
|
|
65
67
|
:visible="isShowDismissDialog"
|
|
66
68
|
:title="t('ChatSetting.dismiss_group')"
|
|
67
69
|
@close="() => isShowDismissDialog = false"
|
|
@@ -71,6 +73,7 @@
|
|
|
71
73
|
|
|
72
74
|
<!-- Quit Group Dialog -->
|
|
73
75
|
<TUIDialog
|
|
76
|
+
appendTo="body"
|
|
74
77
|
:visible="isShowQuitDialog"
|
|
75
78
|
:title="t('ChatSetting.quit_group')"
|
|
76
79
|
@close="() => isShowQuitDialog = false"
|
|
@@ -89,7 +92,7 @@ import { ref, computed } from 'vue';
|
|
|
89
92
|
import { TUIButton, TUIDialog, TUIToast, useUIKit } from '@tencentcloud/uikit-base-component-vue3';
|
|
90
93
|
import { useGroupSettingState, GroupPermission } from '../../../../states/GroupSettingState';
|
|
91
94
|
import { UserPicker } from '../../../UserPicker';
|
|
92
|
-
import type {
|
|
95
|
+
import type { UserPickerRef } from '../../../UserPicker';
|
|
93
96
|
|
|
94
97
|
const { t } = useUIKit();
|
|
95
98
|
|
|
@@ -107,7 +110,7 @@ const isShowDismissDialog = ref(false);
|
|
|
107
110
|
const isShowQuitDialog = ref(false);
|
|
108
111
|
const loading = ref(false);
|
|
109
112
|
|
|
110
|
-
const userPickerRef = ref<
|
|
113
|
+
const userPickerRef = ref<UserPickerRef>();
|
|
111
114
|
|
|
112
115
|
// Check permissions for different actions
|
|
113
116
|
const canDismissGroup = computed(() => hasPermission(GroupPermission.DISMISS_GROUP));
|
|
@@ -11,7 +11,7 @@ import { GroupManagement } from './GroupManagement';
|
|
|
11
11
|
import { GroupManagementEntry } from './GroupManagementEntry';
|
|
12
12
|
import { GroupMembers } from './GroupMembers';
|
|
13
13
|
import { PersonalSettings } from './PersonalSettings';
|
|
14
|
-
import type {
|
|
14
|
+
import type { UserPickerRow, UserPickerRef } from '../../UserPicker';
|
|
15
15
|
|
|
16
16
|
enum ViewMode {
|
|
17
17
|
MAIN = 'main',
|
|
@@ -42,11 +42,11 @@ const loading = ref(false);
|
|
|
42
42
|
const hasMore = ref(true);
|
|
43
43
|
const currentView = ref<ViewMode>(ViewMode.MAIN);
|
|
44
44
|
const isShowUserPickerDialog = ref(false);
|
|
45
|
-
const memberDataSource = ref<
|
|
46
|
-
const userPickerLockedItems = ref<
|
|
45
|
+
const memberDataSource = ref<UserPickerRow[]>([]);
|
|
46
|
+
const userPickerLockedItems = ref<UserPickerRow[]>([]);
|
|
47
47
|
const memberActionType = ref<'remove' | 'add' | null>(null);
|
|
48
48
|
|
|
49
|
-
const userPickerRef = ref<
|
|
49
|
+
const userPickerRef = ref<UserPickerRef>();
|
|
50
50
|
|
|
51
51
|
// Initialize member list when component mounts
|
|
52
52
|
onMounted(() => {
|
|
@@ -260,6 +260,7 @@ const userPickerDialogTitle = computed(() => {
|
|
|
260
260
|
<PersonalSettings />
|
|
261
261
|
<GroupActions />
|
|
262
262
|
<TUIDialog
|
|
263
|
+
appendTo="body"
|
|
263
264
|
:visible="isShowUserPickerDialog"
|
|
264
265
|
:title="userPickerDialogTitle"
|
|
265
266
|
:custom-classes="['user-picker-dialog']"
|
|
@@ -51,7 +51,7 @@ const validateGroupName = (value: string, originalValue?: string) => {
|
|
|
51
51
|
if (value.length === 0) {
|
|
52
52
|
return t('ChatSetting.group_name_required');
|
|
53
53
|
}
|
|
54
|
-
if (value.length >
|
|
54
|
+
if (value.length > 30) {
|
|
55
55
|
return t('ChatSetting.group_name_max_length');
|
|
56
56
|
}
|
|
57
57
|
if (value === (originalValue || '')) {
|
|
@@ -65,7 +65,7 @@ const validateNotification = (value: string, originalValue?: string) => {
|
|
|
65
65
|
if (typeof value !== 'string') {
|
|
66
66
|
return t('ChatSetting.group_notification_required_string');
|
|
67
67
|
}
|
|
68
|
-
if (value.length >
|
|
68
|
+
if (value.length > 130) {
|
|
69
69
|
return t('ChatSetting.group_notification_max_length');
|
|
70
70
|
}
|
|
71
71
|
if (value === (originalValue || '')) {
|
|
@@ -63,6 +63,7 @@
|
|
|
63
63
|
|
|
64
64
|
<!-- User Picker Dialog -->
|
|
65
65
|
<TUIDialog
|
|
66
|
+
appendTo="body"
|
|
66
67
|
:custom-classes="['user-picker-dialog']"
|
|
67
68
|
:visible="isShowUserPickerDialog"
|
|
68
69
|
:title="userPickerTitle"
|
|
@@ -92,7 +93,7 @@ import {
|
|
|
92
93
|
import { UserPicker } from '../../../UserPicker';
|
|
93
94
|
import { SettingItem } from '../../SettingItem';
|
|
94
95
|
import { GroupMembers } from '../GroupMembers';
|
|
95
|
-
import type {
|
|
96
|
+
import type { UserPickerRow, UserPickerRef } from '../../../UserPicker';
|
|
96
97
|
|
|
97
98
|
const emit = defineEmits<{
|
|
98
99
|
back: [];
|
|
@@ -119,7 +120,7 @@ const isShowUserPickerDialog = ref(false);
|
|
|
119
120
|
const userPickerTitle = ref('');
|
|
120
121
|
const userPickerLockedItems = ref<any[]>([]);
|
|
121
122
|
|
|
122
|
-
const userPickerRef = ref<
|
|
123
|
+
const userPickerRef = ref<UserPickerRef>();
|
|
123
124
|
const memberActionRef = ref<'promote_admin' | 'demote_admin' | 'mute' | 'unmute' | null>(null);
|
|
124
125
|
|
|
125
126
|
// Filter muted members
|