@bcc-code/vue-bcc-chat-ui 3.6.3 → 3.7.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.
- package/dist/chat/cometChatPatches.d.ts +4 -0
- package/dist/chat/data.d.ts +4 -2
- package/dist/chat/index.d.ts +35 -33
- package/dist/chat/replyExtension.d.ts +27 -0
- package/dist/chat/replyStyle.d.ts +31 -0
- package/dist/chat/theme.d.ts +30 -30
- package/dist/chat/types.d.ts +9 -0
- package/dist/chat/uiKit.d.ts +5 -3
- package/dist/components/BccChatMessageBubble.vue.d.ts +1 -1
- package/dist/components/BccChatMessageList.vue.d.ts +1 -1
- package/dist/components/BccReplyBox.vue.d.ts +37 -0
- package/dist/components/BccReplyPreview.vue.d.ts +31 -0
- package/dist/components/CometChatMessageListOverride.vue.d.ts +1 -89
- package/dist/offline/offlineStoreLocalStorage.d.ts +3 -0
- package/dist/offline/types.d.ts +4 -0
- package/dist/style.css +1 -1
- package/dist/vue-bcc-chat-ui.js +24525 -24083
- package/package.json +12 -12
- package/src/components/BccChatMessageBubble.vue +46 -1
- package/src/components/BccChatMessageList.vue +63 -25
- package/src/components/BccReplyBox.vue +128 -0
- package/src/components/BccReplyPreview.vue +113 -0
- package/src/components/CometChatMessageListOverride.vue +2 -120
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@bcc-code/vue-bcc-chat-ui",
|
|
3
3
|
"author": "bcc-code",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
|
-
"version": "3.
|
|
5
|
+
"version": "3.7.0",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"private": false,
|
|
8
8
|
"files": [
|
|
@@ -33,22 +33,22 @@
|
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/dompurify": "^3.0.5",
|
|
36
|
-
"@types/markdown-it": "^13.0.
|
|
37
|
-
"@types/node": "^20.12.
|
|
36
|
+
"@types/markdown-it": "^13.0.8",
|
|
37
|
+
"@types/node": "^20.12.10",
|
|
38
38
|
"@vitejs/plugin-vue": "^4.6.2",
|
|
39
39
|
"path": "^0.12.7",
|
|
40
|
-
"sass": "^1.
|
|
40
|
+
"sass": "^1.77.0",
|
|
41
41
|
"typescript": "^5.4.5",
|
|
42
|
-
"vite": "^5.2.
|
|
43
|
-
"vite-plugin-dts": "^3.
|
|
44
|
-
"vue": "^3.4.
|
|
42
|
+
"vite": "^5.2.11",
|
|
43
|
+
"vite-plugin-dts": "^3.9.1",
|
|
44
|
+
"vue": "^3.4.27"
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
|
-
"@cometchat/chat-sdk-javascript": "
|
|
48
|
-
"@cometchat/chat-uikit-vue": "
|
|
49
|
-
"@cometchat/uikit-resources": "
|
|
50
|
-
"@cometchat/uikit-shared": "
|
|
51
|
-
"dompurify": "^3.1.
|
|
47
|
+
"@cometchat/chat-sdk-javascript": "4.0.5",
|
|
48
|
+
"@cometchat/chat-uikit-vue": "4.3.6",
|
|
49
|
+
"@cometchat/uikit-resources": "4.3.7",
|
|
50
|
+
"@cometchat/uikit-shared": "4.3.7",
|
|
51
|
+
"dompurify": "^3.1.2",
|
|
52
52
|
"jwt-decode": "^4.0.0",
|
|
53
53
|
"markdown-it": "^14.1.0"
|
|
54
54
|
},
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import MarkdownIt from 'markdown-it'
|
|
3
|
-
import { User } from '@cometchat/chat-sdk-javascript'
|
|
3
|
+
import { BaseMessage, CometChat, User } from '@cometchat/chat-sdk-javascript'
|
|
4
4
|
import DOMPurify from 'dompurify';
|
|
5
|
+
import { inject, ref } from 'vue';
|
|
6
|
+
import { CometChatTheme, fontHelper } from '@cometchat/uikit-resources';
|
|
7
|
+
import BccReplyPreview from "./BccReplyPreview.vue";
|
|
5
8
|
|
|
6
9
|
const props = defineProps<{
|
|
7
10
|
text: string,
|
|
@@ -54,10 +57,31 @@ function formatMentionsInText(text: string) {
|
|
|
54
57
|
});
|
|
55
58
|
}
|
|
56
59
|
|
|
60
|
+
let parentMsgRef = ref<BaseMessage>();
|
|
61
|
+
if (props.metadata?.replyToMessageId) {
|
|
62
|
+
CometChat.getMessageDetails(props.metadata.replyToMessageId).then((msg: BaseMessage) => parentMsgRef.value = msg).catch(() => parentMsgRef.value = new CometChat.TextMessage("","Unknown message",""));
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
const { theme } = inject("theme", { theme: ref(new CometChatTheme({})) });
|
|
66
|
+
const replyPreviewStyle = {
|
|
67
|
+
previewWrapperPadding: "6px 12px 6px 9px",
|
|
68
|
+
barLeftPosition: "0px",
|
|
69
|
+
titleColor: theme.value.palette.getAccent800(),
|
|
70
|
+
subtitleColor: theme.value.palette.getAccent800(),
|
|
71
|
+
titleFont: fontHelper(theme.value.typography.title2),
|
|
72
|
+
};
|
|
57
73
|
</script>
|
|
58
74
|
|
|
59
75
|
<template>
|
|
60
76
|
<div>
|
|
77
|
+
<div v-if="metadata?.replyToMessageId" class="bcc-chat-msg-bubble">
|
|
78
|
+
<div class="bcc-chat-msg-bubble--reply">
|
|
79
|
+
<BccReplyPreview
|
|
80
|
+
:replyToMessage="parentMsgRef"
|
|
81
|
+
:previewStyle="replyPreviewStyle"
|
|
82
|
+
/>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
61
85
|
<div v-if="metadata && metadata.translated_message" v-html="toMarkdownHtml(metadata.translated_message)"
|
|
62
86
|
class="bcc-chat-msg-bubble bcc-chat-msg-bubble--translation" />
|
|
63
87
|
<div v-html="toMarkdownHtml(text)" class="bcc-chat-msg-bubble"
|
|
@@ -141,5 +165,26 @@ function formatMentionsInText(text: string) {
|
|
|
141
165
|
display: block;
|
|
142
166
|
}
|
|
143
167
|
}
|
|
168
|
+
|
|
169
|
+
&--reply {
|
|
170
|
+
position: relative;
|
|
171
|
+
z-index: 0;
|
|
172
|
+
margin-top: 3px;
|
|
173
|
+
margin-bottom: -8px;
|
|
174
|
+
border-radius: 6px;
|
|
175
|
+
overflow: hidden;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
&--reply::before {
|
|
179
|
+
content: "";
|
|
180
|
+
position: absolute;
|
|
181
|
+
top: 0;
|
|
182
|
+
left: 0;
|
|
183
|
+
width: 100%;
|
|
184
|
+
height: 100%;
|
|
185
|
+
opacity: .5;
|
|
186
|
+
z-index: -1;
|
|
187
|
+
background-color: var(--cc__background);
|
|
188
|
+
}
|
|
144
189
|
}
|
|
145
190
|
</style>
|
|
@@ -1,24 +1,28 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import {
|
|
3
|
+
Ref,
|
|
3
4
|
onBeforeMount,
|
|
5
|
+
onBeforeUnmount,
|
|
4
6
|
onMounted,
|
|
5
7
|
onUnmounted,
|
|
8
|
+
provide,
|
|
6
9
|
ref,
|
|
7
10
|
watch,
|
|
11
|
+
watchEffect,
|
|
8
12
|
} from "vue";
|
|
9
13
|
import chat from "../chat";
|
|
10
14
|
import { connect, disconnect } from "../chat/connection";
|
|
11
15
|
import { loggedIn } from "../chat/login";
|
|
12
|
-
import { CometChatMessages } from "
|
|
16
|
+
import { CometChatMessages } from "../chat/cometChatPatches";
|
|
13
17
|
import { Group } from "@cometchat/chat-sdk-javascript";
|
|
14
18
|
import { watchAndApplyStyle } from "../chat/styleFix";
|
|
15
19
|
import {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
getMessageComposerConfiguration,
|
|
21
|
+
getMessageListConfiguration,
|
|
22
|
+
getThreadedMessagesConfiguration
|
|
19
23
|
} from "../chat/uiKit";
|
|
20
|
-
import
|
|
21
|
-
|
|
24
|
+
import { ChatInstance } from "../chat/types";
|
|
25
|
+
import { CometChatMessageEvents, MessageStatus } from "@cometchat/uikit-resources";
|
|
22
26
|
|
|
23
27
|
const props = defineProps({
|
|
24
28
|
chatUid: { type: String, required: true },
|
|
@@ -29,6 +33,37 @@ const componentId = ref(
|
|
|
29
33
|
);
|
|
30
34
|
const chatGroup = ref<Group>();
|
|
31
35
|
|
|
36
|
+
const chatInstance: Ref<ChatInstance> = ref({
|
|
37
|
+
componentId: componentId,
|
|
38
|
+
replyToMessage: null
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
const messageComposerConfiguration = getMessageComposerConfiguration();
|
|
42
|
+
const messageListConfiguration = getMessageListConfiguration(chatInstance);
|
|
43
|
+
const threadedMessagesConfiguration = getThreadedMessagesConfiguration();
|
|
44
|
+
|
|
45
|
+
provide("chatInstance", chatInstance);
|
|
46
|
+
const onMessageSend = CometChatMessageEvents.ccMessageSent.subscribe(({ message, status }) => {
|
|
47
|
+
if (status === MessageStatus.inprogress && chatInstance.value.replyToMessage) {
|
|
48
|
+
(message as any).setMetadata({
|
|
49
|
+
replyToMessageId: chatInstance.value.replyToMessage?.getId()
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
watchEffect(() => {
|
|
55
|
+
if (!chatInstance.value.replyToMessage) {
|
|
56
|
+
messageComposerConfiguration.value.headerView = undefined;
|
|
57
|
+
} else {
|
|
58
|
+
messageComposerConfiguration.value.headerView = {
|
|
59
|
+
componentName: "bcc-reply-box",
|
|
60
|
+
props: {
|
|
61
|
+
replyToMessage: chatInstance.value.replyToMessage,
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
|
|
32
67
|
watch([loggedIn, ()=> props.chatUid, chat.initialized], async ([_loggedIn, _chatUid, _initialized]) => {
|
|
33
68
|
if (_loggedIn && _chatUid && _initialized) {
|
|
34
69
|
chatGroup.value = (await chat.getGroup(props.chatUid)) ?? undefined;
|
|
@@ -69,26 +104,24 @@ onMounted(() => {
|
|
|
69
104
|
style: { 'flex-shrink': '0' },
|
|
70
105
|
shadowDomSelector: "link-preview",
|
|
71
106
|
},
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
// "font-size": "16px",
|
|
84
|
-
// padding: "8px",
|
|
85
|
-
// "max-height": "none",
|
|
86
|
-
// height: "64px",
|
|
87
|
-
// },
|
|
88
|
-
// },
|
|
107
|
+
{
|
|
108
|
+
selector: ".cc__preview__subtitle",
|
|
109
|
+
style: {
|
|
110
|
+
"overflow": "hidden",
|
|
111
|
+
"display": "-webkit-box",
|
|
112
|
+
"-webkit-box-orient": "vertical",
|
|
113
|
+
"-webkit-line-clamp": "1",
|
|
114
|
+
"word-break": "break-all"
|
|
115
|
+
},
|
|
116
|
+
shadowDomSelector: "cometchat-preview",
|
|
117
|
+
}
|
|
89
118
|
]);
|
|
90
119
|
});
|
|
91
120
|
|
|
121
|
+
onBeforeUnmount(() => {
|
|
122
|
+
onMessageSend.unsubscribe();
|
|
123
|
+
})
|
|
124
|
+
|
|
92
125
|
onUnmounted(async () => {
|
|
93
126
|
await disconnect(componentId.value);
|
|
94
127
|
});
|
|
@@ -96,7 +129,7 @@ onUnmounted(async () => {
|
|
|
96
129
|
</script>
|
|
97
130
|
|
|
98
131
|
<template>
|
|
99
|
-
<div class="bcc-chat-message-list-wrapper">
|
|
132
|
+
<div class="bcc-chat-message-list-wrapper" :class="componentId">
|
|
100
133
|
<!-- <div>
|
|
101
134
|
<div>Connecting... <button @click="tryConnect(true)">[retry]</button></div>
|
|
102
135
|
<div>Online status: {{chat.onlineStatus}}</div>
|
|
@@ -106,7 +139,7 @@ onUnmounted(async () => {
|
|
|
106
139
|
<div>CometChat: {{cometChatStatus}} <button @click="getCometChatStatus()">[refresh]</button></div>
|
|
107
140
|
</div> -->
|
|
108
141
|
<div v-if="chatGroup" class="bcc-chat-message-list">
|
|
109
|
-
<CometChatMessages
|
|
142
|
+
<CometChatMessages
|
|
110
143
|
:hideMessageHeader="true"
|
|
111
144
|
:disableSoundForMessages="true"
|
|
112
145
|
:messageComposerConfiguration="messageComposerConfiguration"
|
|
@@ -212,6 +245,11 @@ accent900: text in avatar
|
|
|
212
245
|
.cc-messagecomposer-wrapper {
|
|
213
246
|
//padding: 0; //Use to remove side padding on composer
|
|
214
247
|
}
|
|
248
|
+
|
|
249
|
+
/* 1.1.3 Wrapper for Messages Composer Header View */
|
|
250
|
+
.cc-messagecomposer-wrapper__headerview {
|
|
251
|
+
margin-bottom: 5px;
|
|
252
|
+
}
|
|
215
253
|
}
|
|
216
254
|
}
|
|
217
255
|
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import {
|
|
3
|
+
CometChatMessageEvents,
|
|
4
|
+
CometChatTheme,
|
|
5
|
+
MessageStatus,
|
|
6
|
+
} from "@cometchat/uikit-resources";
|
|
7
|
+
import { CloseIcon } from "@cometchat/chat-uikit-vue";
|
|
8
|
+
import {
|
|
9
|
+
getCurrentInstance,
|
|
10
|
+
ref,
|
|
11
|
+
inject,
|
|
12
|
+
Ref,
|
|
13
|
+
onBeforeUnmount,
|
|
14
|
+
onBeforeMount,
|
|
15
|
+
} from "vue";
|
|
16
|
+
import { ChatInstance } from "../chat/types";
|
|
17
|
+
import { ReplyPreviewStyle } from "../chat/replyStyle";
|
|
18
|
+
import { BaseMessage } from "@cometchat/chat-sdk-javascript";
|
|
19
|
+
import BccReplyPreview from "./BccReplyPreview.vue";
|
|
20
|
+
|
|
21
|
+
const props = defineProps({
|
|
22
|
+
replyToMessage: { type: BaseMessage },
|
|
23
|
+
titlePrefix: { type: String },
|
|
24
|
+
closeButtonIconURL: { type: String, default: CloseIcon },
|
|
25
|
+
previewStyle: { type: Object, default: {} },
|
|
26
|
+
});
|
|
27
|
+
|
|
28
|
+
const chatInstance = inject<Ref<ChatInstance>>("chatInstance");
|
|
29
|
+
const vueInstance: any = getCurrentInstance();
|
|
30
|
+
|
|
31
|
+
const { theme } = inject("theme", { theme: ref(new CometChatTheme({})) });
|
|
32
|
+
const previewStyle = new ReplyPreviewStyle(props.previewStyle, theme.value);
|
|
33
|
+
|
|
34
|
+
function closePreview(_event?: MouseEvent) {
|
|
35
|
+
if (chatInstance) {
|
|
36
|
+
chatInstance.value.replyToMessage = null;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
const onMessageEditStart = CometChatMessageEvents.ccMessageEdited.subscribe(
|
|
41
|
+
({ status }) => {
|
|
42
|
+
if (status === MessageStatus.inprogress) {
|
|
43
|
+
closePreview();
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
const onMessageSend = CometChatMessageEvents.ccMessageSent.subscribe(
|
|
49
|
+
({ status }) => {
|
|
50
|
+
if (status === MessageStatus.inprogress) {
|
|
51
|
+
closePreview();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
);
|
|
55
|
+
|
|
56
|
+
onBeforeMount(() => {
|
|
57
|
+
vueInstance?.parent?.setupState?.closePreview();
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
onBeforeUnmount(() => {
|
|
61
|
+
onMessageEditStart.unsubscribe();
|
|
62
|
+
onMessageSend.unsubscribe();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
const closeBtnIconStyle = () => {
|
|
66
|
+
return {
|
|
67
|
+
buttonIconTint: previewStyle?.closeButtonIconTint,
|
|
68
|
+
height: "14px",
|
|
69
|
+
width: "14px",
|
|
70
|
+
border: "none",
|
|
71
|
+
borderRadius: "0",
|
|
72
|
+
background: "transparent",
|
|
73
|
+
display: "flex",
|
|
74
|
+
justifyContent: "center",
|
|
75
|
+
alignItems: "center",
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
|
|
79
|
+
const wrapperStyle = () => {
|
|
80
|
+
return {
|
|
81
|
+
background: previewStyle?.background,
|
|
82
|
+
border: previewStyle?.border,
|
|
83
|
+
height: previewStyle?.height,
|
|
84
|
+
width: previewStyle?.width,
|
|
85
|
+
borderRadius: previewStyle?.borderRadius,
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
</script>
|
|
89
|
+
|
|
90
|
+
<template>
|
|
91
|
+
<div class="bcc__reply_box" :style="wrapperStyle()">
|
|
92
|
+
<BccReplyPreview
|
|
93
|
+
titlePrefix="Reply to "
|
|
94
|
+
:replyToMessage="props.replyToMessage"
|
|
95
|
+
:previewStyle="previewStyle"
|
|
96
|
+
/>
|
|
97
|
+
<div class="bcc__reply_preview__close" @click="closePreview">
|
|
98
|
+
<cometchat-button
|
|
99
|
+
:buttonStyle="closeBtnIconStyle()"
|
|
100
|
+
:iconURL="props.closeButtonIconURL"
|
|
101
|
+
></cometchat-button>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
</template>
|
|
105
|
+
|
|
106
|
+
<style>
|
|
107
|
+
.cc-messagecomposer-wrapper__headerview {
|
|
108
|
+
position: static !important;
|
|
109
|
+
}
|
|
110
|
+
</style>
|
|
111
|
+
<style scoped>
|
|
112
|
+
* {
|
|
113
|
+
box-sizing: border-box;
|
|
114
|
+
}
|
|
115
|
+
.bcc__reply_box {
|
|
116
|
+
padding: 8px;
|
|
117
|
+
display: flex;
|
|
118
|
+
flex-direction: row;
|
|
119
|
+
justify-content: space-between;
|
|
120
|
+
margin: 0;
|
|
121
|
+
min-height: 30px;
|
|
122
|
+
}
|
|
123
|
+
.bcc__reply_preview__close {
|
|
124
|
+
width: 14px;
|
|
125
|
+
height: 14px;
|
|
126
|
+
display: inline-block;
|
|
127
|
+
}
|
|
128
|
+
</style>
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
<script setup lang="ts">
|
|
2
|
+
import { CometChatTheme, CometChatUIKitConstants } from "@cometchat/uikit-resources";
|
|
3
|
+
import { inject, ref } from "vue";
|
|
4
|
+
import { ReplyPreviewStyle } from "../chat/replyStyle";
|
|
5
|
+
import { BaseMessage, MediaMessage } from "@cometchat/chat-sdk-javascript";
|
|
6
|
+
import { getMessageTextPreview, proxyImage } from "../chat/data";
|
|
7
|
+
|
|
8
|
+
const props = defineProps({
|
|
9
|
+
replyToMessage: { type: BaseMessage },
|
|
10
|
+
titlePrefix: { type: String, default: "" },
|
|
11
|
+
previewStyle: { type: Object, default: {} },
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
const { theme } = inject("theme", { theme: ref(new CometChatTheme({})) });
|
|
15
|
+
const previewStyle = new ReplyPreviewStyle(props.previewStyle, theme.value);
|
|
16
|
+
|
|
17
|
+
const subtitleStyle = () => {
|
|
18
|
+
return {
|
|
19
|
+
font: previewStyle?.subtitleFont,
|
|
20
|
+
color: previewStyle?.subtitleColor,
|
|
21
|
+
};
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const titleStyle = () => {
|
|
25
|
+
return {
|
|
26
|
+
font: previewStyle?.titleFont,
|
|
27
|
+
color: previewStyle?.titleColor,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const barStyle = () => {
|
|
32
|
+
return {
|
|
33
|
+
insetInlineStart: previewStyle?.barLeftPosition,
|
|
34
|
+
width: previewStyle?.barWidth,
|
|
35
|
+
background: previewStyle?.barBackground,
|
|
36
|
+
opacity: previewStyle?.barOpacity,
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
const previewWrapperStyle = () => {
|
|
41
|
+
return {
|
|
42
|
+
padding: previewStyle?.previewWrapperPadding,
|
|
43
|
+
opacity: previewStyle?.previewWrapperOpacity,
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
function getThumbnailURL() {
|
|
48
|
+
const msg = props.replyToMessage as MediaMessage;
|
|
49
|
+
const url =
|
|
50
|
+
(msg?.getMetadata() as any)?.['@injected']?.extensions?.['thumbnail-generation']?.url_small ||
|
|
51
|
+
(msg?.getData() as any)?.url;
|
|
52
|
+
return proxyImage(url);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<template>
|
|
58
|
+
<div class="bcc__reply_preview__content_wrapper" :style="previewWrapperStyle()">
|
|
59
|
+
<div class="bcc__reply_preview__content_bar" :style="barStyle()"></div>
|
|
60
|
+
<div v-if="props.replyToMessage?.getType() === CometChatUIKitConstants.MessageTypes.image" class="bcc__reply_preview__thumbnail">
|
|
61
|
+
<img :src="getThumbnailURL()" />
|
|
62
|
+
</div>
|
|
63
|
+
<div class="bcc__reply_preview__content">
|
|
64
|
+
<p class="bcc__reply_preview__title" :style="titleStyle()">
|
|
65
|
+
{{ props.titlePrefix + ( props?.replyToMessage?.getSender()?.getName() || "" ) || "Reply to ..." }}
|
|
66
|
+
</p>
|
|
67
|
+
<p class="cc__preview__subtitle" :style="subtitleStyle()">
|
|
68
|
+
{{ getMessageTextPreview(props?.replyToMessage) || "" }}
|
|
69
|
+
</p>
|
|
70
|
+
</div>
|
|
71
|
+
</div>
|
|
72
|
+
</template>
|
|
73
|
+
|
|
74
|
+
<style scoped>
|
|
75
|
+
.bcc__reply_preview__content_wrapper {
|
|
76
|
+
padding: 0 12px;
|
|
77
|
+
position: relative;
|
|
78
|
+
display: grid;
|
|
79
|
+
}
|
|
80
|
+
.bcc__reply_preview__content_bar {
|
|
81
|
+
position: absolute;
|
|
82
|
+
top: 0;
|
|
83
|
+
bottom: 0;
|
|
84
|
+
border-radius: 25px;
|
|
85
|
+
}
|
|
86
|
+
.bcc__reply_preview__content {
|
|
87
|
+
grid-column: 2;
|
|
88
|
+
}
|
|
89
|
+
.bcc__reply_preview__content > p {
|
|
90
|
+
margin: 0;
|
|
91
|
+
overflow: hidden;
|
|
92
|
+
display: -webkit-box;
|
|
93
|
+
-webkit-box-orient: vertical;
|
|
94
|
+
-webkit-line-clamp: 1;
|
|
95
|
+
word-break: break-all;
|
|
96
|
+
}
|
|
97
|
+
.bcc__reply_preview__content > .bcc__reply_preview__title {
|
|
98
|
+
margin-bottom: 2px;
|
|
99
|
+
}
|
|
100
|
+
.bcc__reply_preview__thumbnail {
|
|
101
|
+
grid-column: 1;
|
|
102
|
+
width: 2rem;
|
|
103
|
+
height: 2rem;
|
|
104
|
+
align-self: center;
|
|
105
|
+
border-radius: 3px;
|
|
106
|
+
overflow: hidden;
|
|
107
|
+
margin-right: 5px;
|
|
108
|
+
}
|
|
109
|
+
.bcc__reply_preview__thumbnail > img {
|
|
110
|
+
width: 100%;
|
|
111
|
+
height: 100%;
|
|
112
|
+
}
|
|
113
|
+
</style>
|
|
@@ -3,127 +3,9 @@ import {
|
|
|
3
3
|
CometChatMessageList,
|
|
4
4
|
} from "@cometchat/chat-uikit-vue";
|
|
5
5
|
import chat from "../chat";
|
|
6
|
-
|
|
7
|
-
defineProps({
|
|
8
|
-
hideError: {},
|
|
9
|
-
scrollToBottomOnNewMessages: {},
|
|
10
|
-
errorStateView: {},
|
|
11
|
-
loadingStateView: {},
|
|
12
|
-
emptyStateView: {},
|
|
13
|
-
state: {},
|
|
14
|
-
thresholdValue: {},
|
|
15
|
-
errorStateText: {},
|
|
16
|
-
emptyStateText: {},
|
|
17
|
-
loadingIconURL: {},
|
|
18
|
-
user: {},
|
|
19
|
-
group: {},
|
|
20
|
-
disableReceipt: {},
|
|
21
|
-
onError: {},
|
|
22
|
-
disableSoundForMessages: {},
|
|
23
|
-
customSoundForMessages: {},
|
|
24
|
-
readIcon: {},
|
|
25
|
-
deliveredIcon: {},
|
|
26
|
-
sentIcon: {},
|
|
27
|
-
waitIcon: {},
|
|
28
|
-
errorIcon: {},
|
|
29
|
-
alignment: {},
|
|
30
|
-
showAvatar: {},
|
|
31
|
-
timestampAlignment: {},
|
|
32
|
-
DateSeparatorPattern: {},
|
|
33
|
-
templates: {},
|
|
34
|
-
messagesRequestBuilder: {},
|
|
35
|
-
newMessageIndicatorText: {},
|
|
36
|
-
onThreadRepliesClick: {},
|
|
37
|
-
headerView: {},
|
|
38
|
-
footerView: {},
|
|
39
|
-
datePattern: {},
|
|
40
|
-
parentMessageId: {},
|
|
41
|
-
avatarStyle: {},
|
|
42
|
-
dateSeparatorStyle: {},
|
|
43
|
-
messageListStyle: {},
|
|
44
|
-
messageInformationConfiguration: {},
|
|
45
|
-
reactionsConfiguration: {},
|
|
46
|
-
disableReactions: {},
|
|
47
|
-
emojiKeyboardStyle: {},
|
|
48
|
-
threadIndicatorIcon: {},
|
|
49
|
-
disableMentions: {},
|
|
50
|
-
textFormatters: {}
|
|
51
|
-
});
|
|
52
6
|
</script>
|
|
53
7
|
|
|
54
8
|
<template>
|
|
55
|
-
<CometChatMessageList v-if="chat.connected.value"
|
|
56
|
-
|
|
57
|
-
:disableSoundForMessages="disableSoundForMessages"
|
|
58
|
-
:customSoundForMessages="customSoundForMessages"
|
|
59
|
-
:emptyStateView="emptyStateView"
|
|
60
|
-
:loadingStateView="loadingStateView"
|
|
61
|
-
:user="user"
|
|
62
|
-
:group="group"
|
|
63
|
-
:errorStateView="errorStateView"
|
|
64
|
-
:disableReceipt="disableReceipt"
|
|
65
|
-
:readIcon="readIcon"
|
|
66
|
-
:deliveredIcon="deliveredIcon"
|
|
67
|
-
:sentIcon="sentIcon"
|
|
68
|
-
:waitIcon="waitIcon"
|
|
69
|
-
:errorIcon="errorIcon"
|
|
70
|
-
:alignment="alignment"
|
|
71
|
-
:showAvatar="showAvatar"
|
|
72
|
-
:datePattern="datePattern"
|
|
73
|
-
:timestampAlignment="timestampAlignment"
|
|
74
|
-
:DateSeparatorPattern="DateSeparatorPattern"
|
|
75
|
-
:templates="templates"
|
|
76
|
-
:messagesRequestBuilder="messagesRequestBuilder"
|
|
77
|
-
:thresholdValue="thresholdValue"
|
|
78
|
-
:onThreadRepliesClick="onThreadRepliesClick"
|
|
79
|
-
:headerView="headerView"
|
|
80
|
-
:footerView="footerView"
|
|
81
|
-
:avatarStyle="avatarStyle"
|
|
82
|
-
:dateSeparatorStyle="dateSeparatorStyle"
|
|
83
|
-
:messageListStyle="messageListStyle"
|
|
84
|
-
:onError="onError"
|
|
85
|
-
:reactionsConfiguration="reactionsConfiguration"
|
|
86
|
-
:disableReactions="disableReactions"
|
|
87
|
-
:emojiKeyboardStyle="emojiKeyboardStyle"
|
|
88
|
-
:threadIndicatorIcon="threadIndicatorIcon"
|
|
89
|
-
:disableMentions="disableMentions"
|
|
90
|
-
:textFormatters="textFormatters"
|
|
91
|
-
/>
|
|
92
|
-
<CometChatMessageList v-else
|
|
93
|
-
:hideError="hideError"
|
|
94
|
-
:disableSoundForMessages="disableSoundForMessages"
|
|
95
|
-
:customSoundForMessages="customSoundForMessages"
|
|
96
|
-
:emptyStateView="emptyStateView"
|
|
97
|
-
:loadingStateView="loadingStateView"
|
|
98
|
-
:user="user"
|
|
99
|
-
:group="group"
|
|
100
|
-
:errorStateView="errorStateView"
|
|
101
|
-
:disableReceipt="disableReceipt"
|
|
102
|
-
:readIcon="readIcon"
|
|
103
|
-
:deliveredIcon="deliveredIcon"
|
|
104
|
-
:sentIcon="sentIcon"
|
|
105
|
-
:waitIcon="waitIcon"
|
|
106
|
-
:errorIcon="errorIcon"
|
|
107
|
-
:alignment="alignment"
|
|
108
|
-
:showAvatar="showAvatar"
|
|
109
|
-
:datePattern="datePattern"
|
|
110
|
-
:timestampAlignment="timestampAlignment"
|
|
111
|
-
:DateSeparatorPattern="DateSeparatorPattern"
|
|
112
|
-
:templates="templates"
|
|
113
|
-
:messagesRequestBuilder="messagesRequestBuilder"
|
|
114
|
-
:thresholdValue="thresholdValue"
|
|
115
|
-
:onThreadRepliesClick="onThreadRepliesClick"
|
|
116
|
-
:headerView="headerView"
|
|
117
|
-
:footerView="footerView"
|
|
118
|
-
:avatarStyle="avatarStyle"
|
|
119
|
-
:dateSeparatorStyle="dateSeparatorStyle"
|
|
120
|
-
:messageListStyle="messageListStyle"
|
|
121
|
-
:onError="onError"
|
|
122
|
-
:reactionsConfiguration="reactionsConfiguration"
|
|
123
|
-
:disableReactions="disableReactions"
|
|
124
|
-
:emojiKeyboardStyle="emojiKeyboardStyle"
|
|
125
|
-
:threadIndicatorIcon="threadIndicatorIcon"
|
|
126
|
-
:disableMentions="disableMentions"
|
|
127
|
-
:textFormatters="textFormatters"
|
|
128
|
-
/>
|
|
9
|
+
<CometChatMessageList v-if="chat.connected.value" v-bind="$attrs"/>
|
|
10
|
+
<CometChatMessageList v-else v-bind="$attrs"/>
|
|
129
11
|
</template>
|