@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.
- package/CHANGELOG.md +34 -0
- package/dist/cjs/_virtual/_commonjsHelpers.js +1 -0
- package/dist/cjs/_virtual/tim-js.js +1 -0
- package/dist/cjs/components/Checkbox/index.d.ts +16 -0
- package/dist/cjs/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreate.js +1 -1
- package/dist/cjs/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
- package/dist/cjs/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/cjs/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/cjs/components/ConversationPreview/utils.js +1 -1
- package/dist/cjs/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/cjs/components/DivWithEdit/DivWithEdit.d.ts +16 -0
- package/dist/cjs/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
- package/dist/cjs/components/Icon/Icon.d.ts +14 -0
- package/dist/cjs/components/Icon/config.js +1 -1
- package/dist/cjs/components/Icon/images/like.png.js +1 -0
- package/dist/cjs/components/Icon/images/liked.png.js +1 -0
- package/dist/cjs/components/Icon/images/living.png.js +1 -0
- package/dist/cjs/components/Icon/images/member.png.js +1 -0
- package/dist/cjs/components/Icon/images/owner.png.js +1 -0
- package/dist/cjs/components/Icon/images/send.png.js +1 -0
- package/dist/cjs/components/Icon/images/union.png.js +1 -0
- package/dist/cjs/components/Icon/images/unlike.png.js +1 -0
- package/dist/cjs/components/Icon/images/unliked.png.js +1 -0
- package/dist/cjs/components/Icon/images/ununion.png.js +1 -0
- package/dist/cjs/components/Icon/images/unvector.png.js +1 -0
- package/dist/cjs/components/Icon/images/vector.png.js +1 -0
- package/dist/cjs/components/Icon/images/voice.png.js +1 -0
- package/dist/cjs/components/Icon/type.d.ts +47 -0
- package/dist/cjs/components/Icon/type.js +1 -1
- package/dist/cjs/components/Input/Input.d.ts +7 -1
- package/dist/cjs/components/Model/index.d.ts +9 -0
- package/dist/cjs/components/Plugins/index.d.ts +17 -0
- package/dist/cjs/components/Plugins/index.js +1 -1
- package/dist/cjs/components/Popup/index.d.ts +12 -0
- package/dist/cjs/components/Switch/Switch.d.ts +16 -0
- package/dist/cjs/components/TUIChat/TUIChat.d.ts +8 -2
- package/dist/cjs/components/TUIChat/TUIChat.js +1 -1
- package/dist/cjs/components/TUIChat/TUIChatState.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
- package/dist/cjs/components/TUIChat/hooks/useCreateMessage.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useHandleMessage.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useHandleMessageList.js +1 -1
- package/dist/cjs/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
- package/dist/cjs/components/TUIChat/unitls.js +1 -1
- package/dist/cjs/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
- package/dist/cjs/components/TUIChatHeader/TUIChatHeader.js +1 -1
- package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
- package/dist/cjs/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/cjs/components/TUIConversation/TUIConversation.js +1 -1
- package/dist/cjs/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/cjs/components/TUIConversationList/hooks/useConversationList.js +1 -1
- package/dist/cjs/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/cjs/components/TUIKit/TUIKit.d.ts +2 -1
- package/dist/cjs/components/TUIKit/TUIKit.js +1 -1
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
- package/dist/cjs/components/TUIKit/hooks/useTUIKit.js +1 -1
- package/dist/cjs/components/TUIManage/TUIManage.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageAudio.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageAvatar.js +1 -0
- package/dist/cjs/components/TUIMessage/MessageBubble.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageContext.d.ts +3 -1
- package/dist/cjs/components/TUIMessage/MessageContext.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageFile.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageImage.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageMerger.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageName.js +1 -0
- package/dist/cjs/components/TUIMessage/MessagePlugins.d.ts +24 -0
- package/dist/cjs/components/TUIMessage/MessagePlugins.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageProgress.js +1 -0
- package/dist/cjs/components/TUIMessage/MessageRevoke.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageStatus.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageSystem.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageText.js +1 -1
- package/dist/cjs/components/TUIMessage/MessageTip.js +1 -1
- package/dist/cjs/components/TUIMessage/TUIMessage.d.ts +23 -3
- package/dist/cjs/components/TUIMessage/TUIMessage.js +1 -1
- package/dist/cjs/components/TUIMessage/TUIMessageDefault.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessageContextHandler.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessageHandler.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
- package/dist/cjs/components/TUIMessage/hooks/useMessageReply.js +1 -1
- package/dist/cjs/components/TUIMessage/utils/index.js +1 -1
- package/dist/cjs/components/TUIMessageInput/EmojiPicker.js +1 -1
- package/dist/cjs/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
- package/dist/cjs/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
- package/dist/cjs/components/TUIMessageInput/TUIMessageInput.js +1 -1
- package/dist/cjs/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
- package/dist/cjs/components/TUIMessageInput/Transmitter.js +1 -0
- package/dist/cjs/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/cjs/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/cjs/components/TUIMessageList/TUIMessageList.d.ts +3 -1
- package/dist/cjs/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/cjs/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/cjs/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/cjs/components/TUIProfile/hooks/useMyProfile.js +1 -1
- package/dist/cjs/components/Toast/index.d.ts +11 -0
- package/dist/cjs/components/untils.js +1 -1
- package/dist/cjs/constants.js +1 -1
- package/dist/cjs/context/ComponentContext.d.ts +1 -1
- package/dist/cjs/context/TUIChatActionContext.d.ts +11 -2
- package/dist/cjs/context/TUIChatStateContext.d.ts +10 -0
- package/dist/cjs/context/TUIConversationContext.js +1 -1
- package/dist/cjs/context/TUIMessageContext.d.ts +22 -1
- package/dist/cjs/context/TUIMessageContext.js +1 -1
- package/dist/cjs/context/TUIMessageInputContext.d.ts +4 -5
- package/dist/cjs/hooks/useConversation.js +1 -1
- package/dist/cjs/index.css +1 -1
- package/dist/cjs/index.d.css +342 -8
- package/dist/cjs/index.d.ts +18 -4
- package/dist/cjs/index.js +1 -1
- package/dist/esm/_virtual/_commonjsHelpers.js +1 -0
- package/dist/esm/_virtual/tim-js.js +1 -0
- package/dist/esm/components/Checkbox/index.d.ts +16 -0
- package/dist/esm/components/ConversationCreate/ConversationCreatGroupDetail.js +1 -1
- package/dist/esm/components/ConversationCreate/ConversationCreate.js +1 -1
- package/dist/esm/components/ConversationCreate/ConversationCreateUserSelectList.js +1 -1
- package/dist/esm/components/ConversationCreate/hooks/useConversationCreate.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreview.js +1 -1
- package/dist/esm/components/ConversationPreview/ConversationPreviewContent.js +1 -1
- package/dist/esm/components/ConversationPreview/utils.js +1 -1
- package/dist/esm/components/ConversationSearch/ConversationSearchResult.js +1 -1
- package/dist/esm/components/DivWithEdit/DivWithEdit.d.ts +16 -0
- package/dist/esm/components/EmptyStateIndicator/EmptyStateIndicator.d.ts +5 -1
- package/dist/esm/components/Icon/Icon.d.ts +14 -0
- package/dist/esm/components/Icon/config.js +1 -1
- package/dist/esm/components/Icon/images/like.png.js +1 -0
- package/dist/esm/components/Icon/images/liked.png.js +1 -0
- package/dist/esm/components/Icon/images/living.png.js +1 -0
- package/dist/esm/components/Icon/images/member.png.js +1 -0
- package/dist/esm/components/Icon/images/owner.png.js +1 -0
- package/dist/esm/components/Icon/images/send.png.js +1 -0
- package/dist/esm/components/Icon/images/union.png.js +1 -0
- package/dist/esm/components/Icon/images/unlike.png.js +1 -0
- package/dist/esm/components/Icon/images/unliked.png.js +1 -0
- package/dist/esm/components/Icon/images/ununion.png.js +1 -0
- package/dist/esm/components/Icon/images/unvector.png.js +1 -0
- package/dist/esm/components/Icon/images/vector.png.js +1 -0
- package/dist/esm/components/Icon/images/voice.png.js +1 -0
- package/dist/esm/components/Icon/type.d.ts +47 -0
- package/dist/esm/components/Icon/type.js +1 -1
- package/dist/esm/components/Input/Input.d.ts +7 -1
- package/dist/esm/components/Model/index.d.ts +9 -0
- package/dist/esm/components/Plugins/index.d.ts +17 -0
- package/dist/esm/components/Plugins/index.js +1 -1
- package/dist/esm/components/Popup/index.d.ts +12 -0
- package/dist/esm/components/Switch/Switch.d.ts +16 -0
- package/dist/esm/components/TUIChat/TUIChat.d.ts +8 -2
- package/dist/esm/components/TUIChat/TUIChat.js +1 -1
- package/dist/esm/components/TUIChat/TUIChatState.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useCreateMessage.d.ts +29 -1
- package/dist/esm/components/TUIChat/hooks/useCreateMessage.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useCreateTUIChatStateContext.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useHandleMessage.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useHandleMessageList.js +1 -1
- package/dist/esm/components/TUIChat/hooks/useMessageReceviedListener.js +1 -1
- package/dist/esm/components/TUIChat/unitls.js +1 -1
- package/dist/esm/components/TUIChatHeader/TUIChatHeader.d.ts +2 -0
- package/dist/esm/components/TUIChatHeader/TUIChatHeader.js +1 -1
- package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.d.ts +7 -3
- package/dist/esm/components/TUIChatHeader/TUIChatHeaderDefault.js +1 -1
- package/dist/esm/components/TUIConversation/TUIConversation.js +1 -1
- package/dist/esm/components/TUIConversationList/TUIConversationList.js +1 -1
- package/dist/esm/components/TUIConversationList/hooks/useConversationList.js +1 -1
- package/dist/esm/components/TUIConversationList/hooks/useConversationUpdate.js +1 -1
- package/dist/esm/components/TUIKit/TUIKit.d.ts +2 -1
- package/dist/esm/components/TUIKit/TUIKit.js +1 -1
- package/dist/esm/components/TUIKit/hooks/useTUIKit.d.ts +2 -1
- package/dist/esm/components/TUIKit/hooks/useTUIKit.js +1 -1
- package/dist/esm/components/TUIManage/TUIManage.js +1 -1
- package/dist/esm/components/TUIMessage/MessageAudio.js +1 -1
- package/dist/esm/components/TUIMessage/MessageAvatar.js +1 -0
- package/dist/esm/components/TUIMessage/MessageBubble.js +1 -1
- package/dist/esm/components/TUIMessage/MessageContext.d.ts +3 -1
- package/dist/esm/components/TUIMessage/MessageContext.js +1 -1
- package/dist/esm/components/TUIMessage/MessageCustom.js +1 -1
- package/dist/esm/components/TUIMessage/MessageFile.js +1 -1
- package/dist/esm/components/TUIMessage/MessageImage.js +1 -1
- package/dist/esm/components/TUIMessage/MessageMerger.js +1 -1
- package/dist/esm/components/TUIMessage/MessageName.js +1 -0
- package/dist/esm/components/TUIMessage/MessagePlugins.d.ts +24 -0
- package/dist/esm/components/TUIMessage/MessagePlugins.js +1 -1
- package/dist/esm/components/TUIMessage/MessageProgress.js +1 -0
- package/dist/esm/components/TUIMessage/MessageRevoke.js +1 -1
- package/dist/esm/components/TUIMessage/MessageStatus.js +1 -1
- package/dist/esm/components/TUIMessage/MessageSystem.js +1 -1
- package/dist/esm/components/TUIMessage/MessageText.js +1 -1
- package/dist/esm/components/TUIMessage/MessageTip.js +1 -1
- package/dist/esm/components/TUIMessage/TUIMessage.d.ts +23 -3
- package/dist/esm/components/TUIMessage/TUIMessage.js +1 -1
- package/dist/esm/components/TUIMessage/TUIMessageDefault.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessageContextHandler.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessageHandler.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessagePluginElement.js +1 -1
- package/dist/esm/components/TUIMessage/hooks/useMessageReply.js +1 -1
- package/dist/esm/components/TUIMessage/utils/index.js +1 -1
- package/dist/esm/components/TUIMessageInput/EmojiPicker.js +1 -1
- package/dist/esm/components/TUIMessageInput/InputPluginsDefalut.js +1 -1
- package/dist/esm/components/TUIMessageInput/InputQuoteDefalut.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIForward.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIMessageInput.d.ts +18 -7
- package/dist/esm/components/TUIMessageInput/TUIMessageInput.js +1 -1
- package/dist/esm/components/TUIMessageInput/TUIMessageInputDefault.js +1 -1
- package/dist/esm/components/TUIMessageInput/Transmitter.js +1 -0
- package/dist/esm/components/TUIMessageInput/hooks/useCreateMessageInputContext.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useEmojiPicker.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useHandleForwardMessage.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useHandleQuoteMessage.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useMessageInputState.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useMessageInputText.js +1 -1
- package/dist/esm/components/TUIMessageInput/hooks/useUploadPicker.js +1 -1
- package/dist/esm/components/TUIMessageList/TUIMessageList.d.ts +3 -1
- package/dist/esm/components/TUIMessageList/TUIMessageList.js +1 -1
- package/dist/esm/components/TUIMessageList/hooks/useMessageListElement.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfile.js +1 -1
- package/dist/esm/components/TUIProfile/TUIProfileDefault.js +1 -1
- package/dist/esm/components/TUIProfile/hooks/useMyProfile.js +1 -1
- package/dist/esm/components/Toast/index.d.ts +11 -0
- package/dist/esm/components/untils.js +1 -1
- package/dist/esm/constants.js +1 -1
- package/dist/esm/context/ComponentContext.d.ts +1 -1
- package/dist/esm/context/TUIChatActionContext.d.ts +11 -2
- package/dist/esm/context/TUIChatStateContext.d.ts +10 -0
- package/dist/esm/context/TUIConversationContext.js +1 -1
- package/dist/esm/context/TUIMessageContext.d.ts +22 -1
- package/dist/esm/context/TUIMessageContext.js +1 -1
- package/dist/esm/context/TUIMessageInputContext.d.ts +4 -5
- package/dist/esm/hooks/useConversation.js +1 -1
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.d.css +342 -8
- package/dist/esm/index.d.ts +18 -4
- package/dist/esm/index.js +1 -1
- package/package.json +2 -3
- package/src/components/Icon/config.ts +65 -0
- package/src/components/Icon/images/like.png +0 -0
- package/src/components/Icon/images/liked.png +0 -0
- package/src/components/Icon/images/living.png +0 -0
- package/src/components/Icon/images/member.png +0 -0
- package/src/components/Icon/images/owner.png +0 -0
- package/src/components/Icon/images/send.png +0 -0
- package/src/components/Icon/images/union.png +0 -0
- package/src/components/Icon/images/unlike.png +0 -0
- package/src/components/Icon/images/unliked.png +0 -0
- package/src/components/Icon/images/ununion.png +0 -0
- package/src/components/Icon/images/unvector.png +0 -0
- package/src/components/Icon/images/vector.png +0 -0
- package/src/components/Icon/images/voice.png +0 -0
- package/src/components/Icon/type.ts +13 -0
- package/src/components/Plugins/index.tsx +13 -11
- package/src/components/Plugins/styles/layout.scss +2 -1
- package/src/components/TUIChat/TUIChat.tsx +47 -8
- package/src/components/TUIChat/TUIChatState.tsx +27 -0
- package/src/components/TUIChat/hooks/useCreateMessage.tsx +85 -4
- package/src/components/TUIChat/hooks/useCreateTUIChatStateContext.tsx +12 -0
- package/src/components/TUIChat/hooks/useHandleMessage.tsx +24 -0
- package/src/components/TUIChat/hooks/useHandleMessageList.tsx +8 -0
- package/src/components/TUIChat/hooks/useMessageReceviedListener.tsx +2 -2
- package/src/components/TUIChat/unitls.ts +13 -0
- package/src/components/TUIChatHeader/TUIChatHeader.tsx +6 -0
- package/src/components/TUIChatHeader/TUIChatHeaderDefault.tsx +37 -18
- package/src/components/TUIChatHeader/styles/color.scss +0 -3
- package/src/components/TUIChatHeader/styles/layout.scss +8 -4
- package/src/components/TUIKit/TUIKit.tsx +8 -5
- package/src/components/TUIKit/hooks/useTUIKit.tsx +14 -4
- package/src/components/TUIKit/styles/reset.scss +4 -0
- package/src/components/TUIMessage/MessageAudio.tsx +61 -2
- package/src/components/TUIMessage/MessageAvatar.tsx +38 -0
- package/src/components/TUIMessage/MessageBubble.tsx +24 -6
- package/src/components/TUIMessage/MessageContext.tsx +5 -2
- package/src/components/TUIMessage/MessageCustom.tsx +15 -2
- package/src/components/TUIMessage/MessageFile.tsx +9 -3
- package/src/components/TUIMessage/MessageImage.tsx +2 -1
- package/src/components/TUIMessage/MessageMerger.tsx +2 -1
- package/src/components/TUIMessage/MessageName.tsx +41 -0
- package/src/components/TUIMessage/MessagePlugins.tsx +81 -14
- package/src/components/TUIMessage/MessageProgress.tsx +88 -0
- package/src/components/TUIMessage/MessageRevoke.tsx +1 -1
- package/src/components/TUIMessage/MessageStatus.tsx +6 -1
- package/src/components/TUIMessage/MessageText.tsx +3 -3
- package/src/components/TUIMessage/TUIMessage.tsx +68 -16
- package/src/components/TUIMessage/TUIMessageDefault.tsx +25 -15
- package/src/components/TUIMessage/hooks/useMessagePluginElement.tsx +15 -1
- package/src/components/TUIMessage/styles/layout.scss +97 -4
- package/src/components/TUIMessage/utils/index.ts +14 -14
- package/src/components/TUIMessageInput/EmojiPicker.tsx +7 -1
- package/src/components/TUIMessageInput/InputPluginsDefalut.tsx +51 -8
- package/src/components/TUIMessageInput/TUIMessageInput.tsx +47 -22
- package/src/components/TUIMessageInput/TUIMessageInputDefault.tsx +3 -2
- package/src/components/TUIMessageInput/Transmitter.tsx +15 -0
- package/src/components/TUIMessageInput/hooks/useCreateMessageInputContext.ts +3 -9
- package/src/components/TUIMessageInput/hooks/useMessageInputState.tsx +8 -7
- package/src/components/TUIMessageInput/hooks/useMessageInputText.tsx +28 -30
- package/src/components/TUIMessageInput/hooks/useUploadPicker.tsx +2 -0
- package/src/components/TUIMessageInput/styles/layout.scss +16 -0
- package/src/components/TUIMessageList/TUIMessageList.tsx +32 -10
- package/src/components/TUIMessageList/hooks/useMessageListElement.tsx +26 -6
- package/src/components/TUIMessageList/styles/layout.scss +13 -1
- package/src/components/index.ts +12 -0
- package/src/constants.ts +3 -0
- package/src/context/ComponentContext.tsx +1 -1
- package/src/context/TUIChatActionContext.tsx +14 -1
- package/src/context/TUIChatStateContext.tsx +8 -0
- package/src/context/TUIKitContext.tsx +5 -1
- package/src/context/TUIMessageContext.tsx +20 -0
- package/src/context/TUIMessageInputContext.tsx +2 -3
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
.message-default {
|
|
2
|
+
width: 100%;
|
|
3
|
+
flex: 1;
|
|
2
4
|
display: flex;
|
|
3
5
|
align-items: center;
|
|
4
6
|
cursor: pointer;
|
|
@@ -15,7 +17,6 @@
|
|
|
15
17
|
}
|
|
16
18
|
}
|
|
17
19
|
.content {
|
|
18
|
-
padding: 0 10px;
|
|
19
20
|
display: flex;
|
|
20
21
|
flex-direction: column;
|
|
21
22
|
align-items: flex-start;
|
|
@@ -27,16 +28,20 @@
|
|
|
27
28
|
}
|
|
28
29
|
|
|
29
30
|
.in {
|
|
31
|
+
flex: 1;
|
|
30
32
|
display: flex;
|
|
31
33
|
flex-direction: row;
|
|
32
34
|
justify-self: flex-start;
|
|
35
|
+
gap: 10px;
|
|
33
36
|
.content {
|
|
34
37
|
align-items: flex-start;
|
|
35
38
|
flex: 1;
|
|
36
39
|
}
|
|
37
40
|
}
|
|
38
41
|
.out {
|
|
42
|
+
flex: 1;
|
|
39
43
|
display: flex;
|
|
44
|
+
gap: 10px;
|
|
40
45
|
flex-direction: row-reverse;
|
|
41
46
|
justify-self: flex-end;
|
|
42
47
|
.content {
|
|
@@ -45,13 +50,17 @@
|
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
52
|
.tip {
|
|
48
|
-
justify-self: center;
|
|
53
|
+
justify-self: center !important;
|
|
54
|
+
width: auto;
|
|
49
55
|
}
|
|
50
56
|
|
|
51
57
|
.bubble {
|
|
52
58
|
padding: 8px 16px;
|
|
53
59
|
&-in {
|
|
54
60
|
border-radius: 16px 16px 16px 0;
|
|
61
|
+
&.group {
|
|
62
|
+
border-radius: 0px 16px 16px 16px;
|
|
63
|
+
}
|
|
55
64
|
}
|
|
56
65
|
&-out {
|
|
57
66
|
border-radius: 16px 16px 0 16px;
|
|
@@ -96,6 +105,10 @@
|
|
|
96
105
|
font-weight: 500;
|
|
97
106
|
font-size: 14px;
|
|
98
107
|
line-height: 17px;
|
|
108
|
+
&-p {
|
|
109
|
+
display: inline;
|
|
110
|
+
vertical-align: middle;
|
|
111
|
+
}
|
|
99
112
|
.message-status {
|
|
100
113
|
display: inline-flex;
|
|
101
114
|
float: right;
|
|
@@ -104,7 +117,7 @@
|
|
|
104
117
|
}
|
|
105
118
|
}
|
|
106
119
|
|
|
107
|
-
.message-text,
|
|
120
|
+
.message-text,
|
|
108
121
|
.message-tip {
|
|
109
122
|
font-family: PingFangSC-Regular;
|
|
110
123
|
font-style: normal;
|
|
@@ -114,6 +127,7 @@
|
|
|
114
127
|
.text-img {
|
|
115
128
|
width: 20px;
|
|
116
129
|
height: 20px;
|
|
130
|
+
vertical-align: middle;
|
|
117
131
|
}
|
|
118
132
|
}
|
|
119
133
|
|
|
@@ -261,6 +275,7 @@
|
|
|
261
275
|
&-context {
|
|
262
276
|
display: flex;
|
|
263
277
|
align-items: center;
|
|
278
|
+
gap: 10px;
|
|
264
279
|
.message-context{
|
|
265
280
|
flex: 1;
|
|
266
281
|
}
|
|
@@ -387,8 +402,86 @@
|
|
|
387
402
|
font-size: 14px;
|
|
388
403
|
line-height: 17px;
|
|
389
404
|
}
|
|
405
|
+
p {
|
|
406
|
+
font-family: PingFangSC-Regular;
|
|
407
|
+
font-size: 14px;
|
|
408
|
+
font-style: normal;
|
|
409
|
+
font-weight: 500;
|
|
410
|
+
line-height: 17px;
|
|
411
|
+
}
|
|
390
412
|
}
|
|
391
413
|
|
|
392
414
|
.message-revoke {
|
|
393
415
|
color: #999999;
|
|
394
|
-
}
|
|
416
|
+
}
|
|
417
|
+
|
|
418
|
+
.message-audio {
|
|
419
|
+
display: flex;
|
|
420
|
+
align-items: center;
|
|
421
|
+
.out {
|
|
422
|
+
transform: rotate(180deg);
|
|
423
|
+
}
|
|
424
|
+
&-none {
|
|
425
|
+
display: none;
|
|
426
|
+
}
|
|
427
|
+
&-content {
|
|
428
|
+
display: flex;
|
|
429
|
+
align-items: center;
|
|
430
|
+
gap: 10px;
|
|
431
|
+
}
|
|
432
|
+
&-out {
|
|
433
|
+
flex-direction: row-reverse;
|
|
434
|
+
}
|
|
435
|
+
.playing {
|
|
436
|
+
animation: playingAnimation 1s ease-in-out infinite;
|
|
437
|
+
}
|
|
438
|
+
|
|
439
|
+
@keyframes playingAnimation {
|
|
440
|
+
0% {
|
|
441
|
+
opacity: 1;
|
|
442
|
+
}
|
|
443
|
+
50% {
|
|
444
|
+
opacity: 0.3;
|
|
445
|
+
}
|
|
446
|
+
100% {
|
|
447
|
+
opacity: 1;
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
.high-lighted {
|
|
453
|
+
animation: highLightedAnimation 1s ease-in-out forwards;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
@keyframes highLightedAnimation {
|
|
457
|
+
0% {
|
|
458
|
+
opacity: 1;
|
|
459
|
+
}
|
|
460
|
+
25% {
|
|
461
|
+
opacity: 0.3;
|
|
462
|
+
}
|
|
463
|
+
50% {
|
|
464
|
+
opacity: 1;
|
|
465
|
+
}
|
|
466
|
+
75% {
|
|
467
|
+
opacity: 0.3;
|
|
468
|
+
}
|
|
469
|
+
100% {
|
|
470
|
+
opacity: 1;
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
.progress-box {
|
|
475
|
+
width: 100%;
|
|
476
|
+
height: 5px;
|
|
477
|
+
display: flex;
|
|
478
|
+
justify-content: flex-start;
|
|
479
|
+
.progress {
|
|
480
|
+
display: inline-block;
|
|
481
|
+
width: 0;
|
|
482
|
+
background: #147aff;
|
|
483
|
+
height: 5px;
|
|
484
|
+
border-radius: 2px;
|
|
485
|
+
box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.25);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
@@ -118,21 +118,21 @@ export function handleTipMessageShowContext(message: Message) {
|
|
|
118
118
|
}
|
|
119
119
|
switch (message.payload.operationType) {
|
|
120
120
|
case TIM.TYPES.GRP_TIP_MBR_JOIN:
|
|
121
|
-
options.text = `${userName} ${t('message.tip
|
|
121
|
+
options.text = `${userName} ${t('message.tip.Join in group')}`;
|
|
122
122
|
break;
|
|
123
123
|
case TIM.TYPES.GRP_TIP_MBR_QUIT:
|
|
124
|
-
options.text = `${t('message.tip
|
|
124
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.quit group')}`;
|
|
125
125
|
break;
|
|
126
126
|
case TIM.TYPES.GRP_TIP_MBR_KICKED_OUT:
|
|
127
|
-
options.text = `${t('message.tip
|
|
128
|
-
'message.tip
|
|
127
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by')}${message.payload.operatorID}${t(
|
|
128
|
+
'message.tip.kicked out of group',
|
|
129
129
|
)}`;
|
|
130
130
|
break;
|
|
131
131
|
case TIM.TYPES.GRP_TIP_MBR_SET_ADMIN:
|
|
132
|
-
options.text = `${t('message.tip
|
|
132
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.become admin')}`;
|
|
133
133
|
break;
|
|
134
134
|
case TIM.TYPES.GRP_TIP_MBR_CANCELED_ADMIN:
|
|
135
|
-
options.text = `${t('message.tip
|
|
135
|
+
options.text = `${t('message.tip.member')}:${userName} ${t('message.tip.by revoked administrator')}`;
|
|
136
136
|
break;
|
|
137
137
|
case TIM.TYPES.GRP_TIP_GRP_PROFILE_UPDATED:
|
|
138
138
|
// options.text = `${userName} 修改群组资料`;
|
|
@@ -141,15 +141,15 @@ export function handleTipMessageShowContext(message: Message) {
|
|
|
141
141
|
case TIM.TYPES.GRP_TIP_MBR_PROFILE_UPDATED:
|
|
142
142
|
message.payload.memberList.map((member:any) => {
|
|
143
143
|
if (member.muteTime > 0) {
|
|
144
|
-
options.text = `${t('message.tip
|
|
144
|
+
options.text = `${t('message.tip.member')}:${member.userID}${t('message.tip.muted')}`;
|
|
145
145
|
} else {
|
|
146
|
-
options.text = `${t('message.tip
|
|
146
|
+
options.text = `${t('message.tip.member')}:${member.userID}${t('message.tip.unmuted')}`;
|
|
147
147
|
}
|
|
148
148
|
return member;
|
|
149
149
|
});
|
|
150
150
|
break;
|
|
151
151
|
default:
|
|
152
|
-
options.text = `[${t('message.tip
|
|
152
|
+
options.text = `[${t('message.tip.reminder message')}]`;
|
|
153
153
|
break;
|
|
154
154
|
}
|
|
155
155
|
return options;
|
|
@@ -164,19 +164,19 @@ function handleTipGrpUpdated(message: Message) {
|
|
|
164
164
|
switch (name) {
|
|
165
165
|
case 'muteAllMembers':
|
|
166
166
|
if (newGroupProfile[name]) {
|
|
167
|
-
text = `${t('message.tip
|
|
167
|
+
text = `${t('message.tip.admin')} ${operatorID} ${t('message.tip.enable all staff mute')}`;
|
|
168
168
|
} else {
|
|
169
|
-
text = `${t('message.tip
|
|
169
|
+
text = `${t('message.tip.admin')} ${operatorID} ${t('message.tip.unmute everyone')}`;
|
|
170
170
|
}
|
|
171
171
|
break;
|
|
172
172
|
case 'ownerID':
|
|
173
|
-
text = `${newGroupProfile[name]} ${t('message.tip
|
|
173
|
+
text = `${newGroupProfile[name]} ${t('message.tip.become the new owner')}`;
|
|
174
174
|
break;
|
|
175
175
|
case 'groupName':
|
|
176
|
-
text = `${operatorID} ${t('message.tip
|
|
176
|
+
text = `${operatorID} ${t('message.tip.modify group name')} ${newGroupProfile[name]}`;
|
|
177
177
|
break;
|
|
178
178
|
case 'notification':
|
|
179
|
-
text = `${operatorID} ${t('message.tip
|
|
179
|
+
text = `${operatorID} ${t('message.tip.post a new announcement')}`;
|
|
180
180
|
break;
|
|
181
181
|
default:
|
|
182
182
|
break;
|
|
@@ -12,6 +12,7 @@ import type { EmojiData } from './hooks';
|
|
|
12
12
|
export function EmojiPicker():React.ReactElement {
|
|
13
13
|
const [show, setShow] = useState(false);
|
|
14
14
|
const [index, setIndex] = useState(0);
|
|
15
|
+
const [className, setClassName] = useState('');
|
|
15
16
|
|
|
16
17
|
const handleShow = () => {
|
|
17
18
|
setShow(!show);
|
|
@@ -37,13 +38,18 @@ export function EmojiPicker():React.ReactElement {
|
|
|
37
38
|
}
|
|
38
39
|
};
|
|
39
40
|
|
|
41
|
+
const handleVisible = (data) => {
|
|
42
|
+
setClassName(`${!data.top && 'emoji-plugin-top'} ${!data.left && 'emoji-plugin-right'}`);
|
|
43
|
+
};
|
|
44
|
+
|
|
40
45
|
return (
|
|
41
46
|
<div className="emoji-picker input-plugin-popup">
|
|
42
47
|
<Icon width={20} height={20} type={IconTypes.EMOJI} onClick={handleShow} />
|
|
43
48
|
<Popup
|
|
44
|
-
className=
|
|
49
|
+
className={`input-plugin-popup-box ${className}`}
|
|
45
50
|
show={show}
|
|
46
51
|
close={handleShow}
|
|
52
|
+
handleVisible={handleVisible}
|
|
47
53
|
>
|
|
48
54
|
<ul className="face-list">
|
|
49
55
|
{
|
|
@@ -7,18 +7,60 @@ import { useUploadElement } from './hooks/useUploadElement';
|
|
|
7
7
|
import { MESSAGE_TYPE_NAME } from '../../constants';
|
|
8
8
|
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
9
9
|
import { Icon, IconTypes } from '../Icon';
|
|
10
|
+
import { useTUIChatStateContext } from '../../context';
|
|
10
11
|
|
|
11
12
|
export function InputPluginsDefalut():React.ReactElement {
|
|
12
13
|
const {
|
|
13
14
|
sendUploadMessage,
|
|
14
|
-
|
|
15
|
-
showNumber,
|
|
16
|
-
MoreIcon,
|
|
15
|
+
pluginConfig: propsPluginConfig,
|
|
17
16
|
} = useTUIMessageInputContext('TUIMessageInputDefault');
|
|
18
17
|
|
|
18
|
+
const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
|
|
19
|
+
|
|
20
|
+
const propPlugins = propsPluginConfig?.plugins
|
|
21
|
+
|| TUIMessageInputConfig?.pluginConfig?.plugins || [];
|
|
22
|
+
const showNumber = propsPluginConfig?.showNumber
|
|
23
|
+
|| TUIMessageInputConfig?.pluginConfig?.showNumber || 1;
|
|
24
|
+
const MoreIcon = propsPluginConfig?.MoreIcon || TUIMessageInputConfig?.pluginConfig?.MoreIcon;
|
|
25
|
+
|
|
26
|
+
const handlePluginBoolenParams = (
|
|
27
|
+
porpsVal?:boolean | undefined,
|
|
28
|
+
contextVal?:boolean | undefined,
|
|
29
|
+
defaultVal?: boolean,
|
|
30
|
+
) => {
|
|
31
|
+
if (typeof (porpsVal) === 'boolean') {
|
|
32
|
+
return porpsVal;
|
|
33
|
+
}
|
|
34
|
+
if (typeof (contextVal) === 'boolean') {
|
|
35
|
+
return contextVal;
|
|
36
|
+
}
|
|
37
|
+
return defaultVal;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const isEmojiPicker = handlePluginBoolenParams(
|
|
41
|
+
propsPluginConfig?.isEmojiPicker,
|
|
42
|
+
TUIMessageInputConfig?.pluginConfig?.isEmojiPicker,
|
|
43
|
+
true,
|
|
44
|
+
);
|
|
45
|
+
const isImagePicker = handlePluginBoolenParams(
|
|
46
|
+
propsPluginConfig?.isImagePicker,
|
|
47
|
+
TUIMessageInputConfig?.pluginConfig?.isImagePicker,
|
|
48
|
+
true,
|
|
49
|
+
);
|
|
50
|
+
const isVideoPicker = handlePluginBoolenParams(
|
|
51
|
+
propsPluginConfig?.isVideoPicker,
|
|
52
|
+
TUIMessageInputConfig?.pluginConfig?.isVideoPicker,
|
|
53
|
+
true,
|
|
54
|
+
);
|
|
55
|
+
const isFilePicker = handlePluginBoolenParams(
|
|
56
|
+
propsPluginConfig?.isFilePicker,
|
|
57
|
+
TUIMessageInputConfig?.pluginConfig?.isFilePicker,
|
|
58
|
+
true,
|
|
59
|
+
);
|
|
60
|
+
|
|
19
61
|
const pluginsRef = useRef(null);
|
|
20
62
|
|
|
21
|
-
const ImagePicker = useUploadElement({
|
|
63
|
+
const ImagePicker = isImagePicker && useUploadElement({
|
|
22
64
|
children: (
|
|
23
65
|
<div className="input-plugin-item">
|
|
24
66
|
<Icon width={20} height={20} type={IconTypes.IMAGE} />
|
|
@@ -33,7 +75,7 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
33
75
|
},
|
|
34
76
|
});
|
|
35
77
|
|
|
36
|
-
const VideoPicker = useUploadElement({
|
|
78
|
+
const VideoPicker = isVideoPicker && useUploadElement({
|
|
37
79
|
children: (
|
|
38
80
|
<div className="input-plugin-item">
|
|
39
81
|
<Icon width={20} height={20} type={IconTypes.VIDEO} />
|
|
@@ -48,7 +90,7 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
48
90
|
},
|
|
49
91
|
});
|
|
50
92
|
|
|
51
|
-
const FilePicker = useUploadElement({
|
|
93
|
+
const FilePicker = isFilePicker && useUploadElement({
|
|
52
94
|
children: (
|
|
53
95
|
<div className="input-plugin-item">
|
|
54
96
|
<Icon width={20} height={20} type={IconTypes.DOCUMENT} />
|
|
@@ -62,8 +104,9 @@ export function InputPluginsDefalut():React.ReactElement {
|
|
|
62
104
|
sendUploadMessage({ file }, MESSAGE_TYPE_NAME.FILE);
|
|
63
105
|
},
|
|
64
106
|
});
|
|
65
|
-
const plugins =
|
|
66
|
-
|
|
107
|
+
const plugins = [
|
|
108
|
+
isEmojiPicker && <EmojiPicker />, ImagePicker, VideoPicker, FilePicker, ...propPlugins,
|
|
109
|
+
].filter((item) => item);
|
|
67
110
|
|
|
68
111
|
return <Plugins ref={pluginsRef} plugins={plugins} showNumber={showNumber} MoreIcon={MoreIcon} />;
|
|
69
112
|
}
|
|
@@ -14,43 +14,58 @@ import { InputQuoteDefalut } from './InputQuoteDefalut';
|
|
|
14
14
|
import { TUIMessageInputDefault } from './TUIMessageInputDefault';
|
|
15
15
|
import { InputPluginsDefalut } from './InputPluginsDefalut';
|
|
16
16
|
import { TUIForward } from './TUIForward';
|
|
17
|
+
import { Transmitter } from './Transmitter';
|
|
17
18
|
|
|
18
|
-
export interface
|
|
19
|
+
export interface PluginConfigProps {
|
|
20
|
+
plugins?: Array<React.ReactElement>,
|
|
21
|
+
showNumber?: number,
|
|
22
|
+
MoreIcon?: React.ReactElement,
|
|
23
|
+
isEmojiPicker?: boolean,
|
|
24
|
+
isImagePicker?: boolean,
|
|
25
|
+
isVideoPicker?: boolean,
|
|
26
|
+
isFilePicker?: boolean,
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export interface TUIMessageInputBasicProps {
|
|
19
30
|
disabled?: boolean,
|
|
31
|
+
focus?: boolean,
|
|
32
|
+
textareaRef?: MutableRefObject<HTMLTextAreaElement | undefined>,
|
|
33
|
+
isTransmitter?: boolean,
|
|
34
|
+
className?: string,
|
|
35
|
+
pluginConfig?: PluginConfigProps,
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface TUIMessageInputProps extends TUIMessageInputBasicProps {
|
|
20
39
|
TUIMessageInput?: React.ComponentType,
|
|
21
40
|
InputPlugins?: React.ComponentType<UnknowPorps>,
|
|
22
41
|
InputQuote?: React.ComponentType<UnknowPorps>,
|
|
23
|
-
focus?: boolean,
|
|
24
|
-
textareaRef?: MutableRefObject<HTMLTextAreaElement | undefined>,
|
|
25
|
-
plugins?: Array<React.ReactElement>,
|
|
26
|
-
showNumber?: number,
|
|
27
|
-
MoreIcon?: React.ReactElement,
|
|
28
42
|
}
|
|
43
|
+
|
|
29
44
|
function TUIMessageInputProvider<T extends TUIMessageInputProps>(props: PropsWithChildren<T>)
|
|
30
45
|
:React.ReactElement {
|
|
31
46
|
const {
|
|
32
47
|
children,
|
|
33
48
|
disabled: propsDisabled,
|
|
34
|
-
focus
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
MoreIcon,
|
|
49
|
+
focus: propsFoces,
|
|
50
|
+
pluginConfig,
|
|
51
|
+
textareaRef: propsTextareaRef,
|
|
38
52
|
} = props;
|
|
39
53
|
const messageInputState = useMessageInputState(props);
|
|
40
|
-
const { conversation } =
|
|
41
|
-
const { textareaRef } = useTUIChatStateContext('TUIMessageInput');
|
|
54
|
+
const { textareaRef, conversation } = useTUIChatStateContext('TUIMessageInput');
|
|
42
55
|
|
|
43
|
-
const contextDisabled = conversation
|
|
56
|
+
const contextDisabled = conversation?.type === TIM.TYPES.CONV_SYSTEM;
|
|
57
|
+
|
|
58
|
+
const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
|
|
59
|
+
|
|
60
|
+
const focus = propsFoces || TUIMessageInputConfig?.focus;
|
|
44
61
|
|
|
45
62
|
const messageInputContextValue = useCreateMessageInputContext({
|
|
46
63
|
...messageInputState,
|
|
47
64
|
...props,
|
|
48
|
-
textareaRef,
|
|
49
|
-
disabled: propsDisabled || contextDisabled,
|
|
50
|
-
focus,
|
|
51
|
-
|
|
52
|
-
showNumber,
|
|
53
|
-
MoreIcon,
|
|
65
|
+
textareaRef: propsTextareaRef || TUIMessageInputConfig?.textareaRef || textareaRef,
|
|
66
|
+
disabled: propsDisabled || TUIMessageInputConfig?.disabled || contextDisabled,
|
|
67
|
+
focus: typeof (focus) === 'boolean' ? focus : true,
|
|
68
|
+
pluginConfig,
|
|
54
69
|
});
|
|
55
70
|
|
|
56
71
|
return (
|
|
@@ -66,8 +81,15 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
|
|
|
66
81
|
TUIMessageInput: PropTUIMessageInput,
|
|
67
82
|
InputPlugins: PropInputPlugins,
|
|
68
83
|
InputQuote: PropInputQuote,
|
|
84
|
+
isTransmitter: propsIsTransmitter,
|
|
85
|
+
className: propsClassName,
|
|
69
86
|
} = props;
|
|
70
87
|
|
|
88
|
+
const { TUIMessageInputConfig } = useTUIChatStateContext('TUIMessageInput');
|
|
89
|
+
|
|
90
|
+
const className = propsClassName || TUIMessageInputConfig?.className;
|
|
91
|
+
const isTransmitter = propsIsTransmitter || TUIMessageInputConfig?.isTransmitter || false;
|
|
92
|
+
|
|
71
93
|
const {
|
|
72
94
|
TUIMessageInput: ContextInput,
|
|
73
95
|
InputPlugins: ContextInputPlugins,
|
|
@@ -78,13 +100,16 @@ function UnMemoizedTUIMessageInput<T extends TUIMessageInputProps>(props: PropsW
|
|
|
78
100
|
|| ContextInputPlugins || InputPluginsDefalut || EmptyStateIndicator;
|
|
79
101
|
const InputQuote = PropInputQuote || ContextInputQuote || InputQuoteDefalut;
|
|
80
102
|
return (
|
|
81
|
-
<div className=
|
|
103
|
+
<div className={`tui-message-input ${className}`}>
|
|
82
104
|
<TUIMessageInputProvider {...props}>
|
|
83
105
|
<TUIForward />
|
|
84
106
|
<InputQuote />
|
|
85
107
|
<div className="tui-message-input-main">
|
|
86
|
-
<
|
|
87
|
-
|
|
108
|
+
<div className="tui-message-input-box">
|
|
109
|
+
<InputPlugins />
|
|
110
|
+
<Input />
|
|
111
|
+
</div>
|
|
112
|
+
{isTransmitter && <Transmitter />}
|
|
88
113
|
</div>
|
|
89
114
|
</TUIMessageInputProvider>
|
|
90
115
|
</div>
|
|
@@ -3,6 +3,7 @@ import { MESSAGE_OPERATE } from '../../constants';
|
|
|
3
3
|
import { useTUIChatStateContext } from '../../context';
|
|
4
4
|
|
|
5
5
|
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
6
|
+
import { formatEmojiString } from '../TUIMessage/utils/emojiMap';
|
|
6
7
|
|
|
7
8
|
export function TUIMessageInputDefault():React.ReactElement {
|
|
8
9
|
const {
|
|
@@ -23,7 +24,7 @@ export function TUIMessageInputDefault():React.ReactElement {
|
|
|
23
24
|
// operateData
|
|
24
25
|
useEffect(() => {
|
|
25
26
|
if (operateData[MESSAGE_OPERATE.REVOKE]) {
|
|
26
|
-
setText(operateData[MESSAGE_OPERATE.REVOKE].payload.text);
|
|
27
|
+
setText(formatEmojiString(operateData[MESSAGE_OPERATE.REVOKE].payload.text, 1));
|
|
27
28
|
}
|
|
28
29
|
}, [operateData]);
|
|
29
30
|
|
|
@@ -31,7 +32,7 @@ export function TUIMessageInputDefault():React.ReactElement {
|
|
|
31
32
|
useEffect(() => {
|
|
32
33
|
if (focus && textareaRef.current) {
|
|
33
34
|
textareaRef.current.autofocus = true;
|
|
34
|
-
textareaRef
|
|
35
|
+
textareaRef?.current?.focus();
|
|
35
36
|
textareaRef?.current?.addEventListener('paste', handlePasete);
|
|
36
37
|
}
|
|
37
38
|
return () => {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import React, { useState } from 'react';
|
|
2
|
+
import { useTUIMessageInputContext } from '../../context/TUIMessageInputContext';
|
|
3
|
+
import { Icon, IconTypes } from '../Icon';
|
|
4
|
+
|
|
5
|
+
export function Transmitter():React.ReactElement {
|
|
6
|
+
const {
|
|
7
|
+
handleSubmit,
|
|
8
|
+
} = useTUIMessageInputContext('Transmitter');
|
|
9
|
+
|
|
10
|
+
return (
|
|
11
|
+
<div className="transmitter">
|
|
12
|
+
<Icon className="icon-send" type={IconTypes.SEND} onClick={handleSubmit} />
|
|
13
|
+
</div>
|
|
14
|
+
);
|
|
15
|
+
}
|
|
@@ -11,9 +11,7 @@ export const useCreateMessageInputContext = (value:any) => {
|
|
|
11
11
|
disabled,
|
|
12
12
|
focus,
|
|
13
13
|
operateData,
|
|
14
|
-
|
|
15
|
-
showNumber,
|
|
16
|
-
MoreIcon,
|
|
14
|
+
pluginConfig,
|
|
17
15
|
} = value;
|
|
18
16
|
const messageInputContext = useMemo(
|
|
19
17
|
() => ({
|
|
@@ -26,9 +24,7 @@ export const useCreateMessageInputContext = (value:any) => {
|
|
|
26
24
|
disabled,
|
|
27
25
|
focus,
|
|
28
26
|
operateData,
|
|
29
|
-
|
|
30
|
-
showNumber,
|
|
31
|
-
MoreIcon,
|
|
27
|
+
pluginConfig,
|
|
32
28
|
...value,
|
|
33
29
|
}),
|
|
34
30
|
[
|
|
@@ -40,10 +36,8 @@ export const useCreateMessageInputContext = (value:any) => {
|
|
|
40
36
|
sendFaceMessage,
|
|
41
37
|
disabled,
|
|
42
38
|
focus,
|
|
43
|
-
plugins,
|
|
44
|
-
showNumber,
|
|
45
|
-
MoreIcon,
|
|
46
39
|
operateData,
|
|
40
|
+
pluginConfig,
|
|
47
41
|
],
|
|
48
42
|
);
|
|
49
43
|
|
|
@@ -51,6 +51,13 @@ const reducer = (state:IinitState, action) => {
|
|
|
51
51
|
export const useMessageInputState = (props:TUIMessageInputProps) => {
|
|
52
52
|
const [state, dispatch] = useReducer(reducer, initState);
|
|
53
53
|
const { focus, textareaRef } = props;
|
|
54
|
+
|
|
55
|
+
const {
|
|
56
|
+
sendUploadMessage,
|
|
57
|
+
} = useUploadPicker({
|
|
58
|
+
state,
|
|
59
|
+
dispatch,
|
|
60
|
+
});
|
|
54
61
|
const {
|
|
55
62
|
handleChange,
|
|
56
63
|
handleSubmit,
|
|
@@ -64,6 +71,7 @@ export const useMessageInputState = (props:TUIMessageInputProps) => {
|
|
|
64
71
|
dispatch,
|
|
65
72
|
textareaRef,
|
|
66
73
|
focus,
|
|
74
|
+
sendUploadMessage,
|
|
67
75
|
});
|
|
68
76
|
|
|
69
77
|
const {
|
|
@@ -76,13 +84,6 @@ export const useMessageInputState = (props:TUIMessageInputProps) => {
|
|
|
76
84
|
insertText,
|
|
77
85
|
});
|
|
78
86
|
|
|
79
|
-
const {
|
|
80
|
-
sendUploadMessage,
|
|
81
|
-
} = useUploadPicker({
|
|
82
|
-
state,
|
|
83
|
-
dispatch,
|
|
84
|
-
});
|
|
85
|
-
|
|
86
87
|
return {
|
|
87
88
|
...state,
|
|
88
89
|
handleChange,
|