@bcc-code/vue-bcc-chat-ui 3.6.3 → 3.7.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/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.6.3",
5
+ "version": "3.7.1",
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.7",
37
- "@types/node": "^20.12.7",
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.75.0",
40
+ "sass": "^1.77.0",
41
41
  "typescript": "^5.4.5",
42
- "vite": "^5.2.8",
43
- "vite-plugin-dts": "^3.8.1",
44
- "vue": "^3.4.21"
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": "^4.0.4",
48
- "@cometchat/chat-uikit-vue": "^4.3.3",
49
- "@cometchat/uikit-resources": "^4.3.3",
50
- "@cometchat/uikit-shared": "^4.3.4",
51
- "dompurify": "^3.1.0",
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 "@cometchat/chat-uikit-vue";
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
- messageComposerConfiguration,
17
- messageListConfiguration,
18
- threadedMessagesConfiguration
20
+ getMessageComposerConfiguration,
21
+ getMessageListConfiguration,
22
+ getThreadedMessagesConfiguration
19
23
  } from "../chat/uiKit";
20
- import CometChatMessageListOverride from "./CometChatMessageListOverride.vue";
21
- CometChatMessages.components!.CometChatMessageList = CometChatMessageListOverride;
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,38 @@ onMounted(() => {
69
104
  style: { 'flex-shrink': '0' },
70
105
  shadowDomSelector: "link-preview",
71
106
  },
72
- // {
73
- // selector: ".messageinput",
74
- // style: {
75
- // "border-radius": "8px 8px 0 0",
76
- // "box-shadow":
77
- // "0px -1px 2px 0px rgba(17, 24, 39, 0.05), 1px -1px 3px 0px rgba(17, 24, 39, 0.1)",
78
- // },
79
- // },
80
- // {
81
- // selector: ".messageinput-input",
82
- // style: {
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
+ },
118
+ {
119
+ selector: ".cc__file__url",
120
+ style: {
121
+ "color": "var(--cc__text-color)"
122
+ },
123
+ shadowDomSelector: "cometchat-file-bubble",
124
+ },
125
+ {
126
+ selector: ".cc__file__subtitle",
127
+ style: {
128
+ "color": "var(--cc__accent)"
129
+ },
130
+ shadowDomSelector: "cometchat-file-bubble",
131
+ }
89
132
  ]);
90
133
  });
91
134
 
135
+ onBeforeUnmount(() => {
136
+ onMessageSend.unsubscribe();
137
+ })
138
+
92
139
  onUnmounted(async () => {
93
140
  await disconnect(componentId.value);
94
141
  });
@@ -96,7 +143,7 @@ onUnmounted(async () => {
96
143
  </script>
97
144
 
98
145
  <template>
99
- <div class="bcc-chat-message-list-wrapper">
146
+ <div class="bcc-chat-message-list-wrapper" :class="componentId">
100
147
  <!-- <div>
101
148
  <div>Connecting... <button @click="tryConnect(true)">[retry]</button></div>
102
149
  <div>Online status: {{chat.onlineStatus}}</div>
@@ -106,7 +153,7 @@ onUnmounted(async () => {
106
153
  <div>CometChat: {{cometChatStatus}} <button @click="getCometChatStatus()">[refresh]</button></div>
107
154
  </div> -->
108
155
  <div v-if="chatGroup" class="bcc-chat-message-list">
109
- <CometChatMessages
156
+ <CometChatMessages
110
157
  :hideMessageHeader="true"
111
158
  :disableSoundForMessages="true"
112
159
  :messageComposerConfiguration="messageComposerConfiguration"
@@ -212,6 +259,11 @@ accent900: text in avatar
212
259
  .cc-messagecomposer-wrapper {
213
260
  //padding: 0; //Use to remove side padding on composer
214
261
  }
262
+
263
+ /* 1.1.3 Wrapper for Messages Composer Header View */
264
+ .cc-messagecomposer-wrapper__headerview {
265
+ margin-bottom: 5px;
266
+ }
215
267
  }
216
268
  }
217
269
 
@@ -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
- :hideError="hideError"
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>