@mobilon-dev/chotto 0.3.85 → 0.3.87
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/chotto.css +1 -1
- package/dist/components/1_atoms/ButtonContextMenu/ButtonContextMenu.vue2.js +15 -13
- package/dist/components/1_atoms/ContactContextMenu/ContactContextMenu.vue2.js +4 -2
- package/dist/components/1_atoms/ContextMenu/ContextMenu.vue.js +43 -39
- package/dist/components/1_atoms/EmojiGlyph/EmojiGlyph.vue.js +7 -5
- package/dist/components/1_atoms/LoadingIndicator/LoadingIndicator.vue.js +19 -18
- package/dist/components/1_atoms/Tooltip/Tooltip.vue.js +2 -2
- package/dist/components/1_atoms/Tooltip/Tooltip.vue2.js +83 -72
- package/dist/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.js +174 -165
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.js +21 -18
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.js +32 -27
- package/dist/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.js +44 -35
- package/dist/components/2_blocks/FeedSearch/FeedSearch.vue2.js +11 -10
- package/dist/components/2_chatinput_elements/ButtonCommandsSelector/ButtonCommandsSelector.vue2.js +4 -2
- package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue2.js +18 -16
- package/dist/components/2_chatinput_elements/ButtonTemplateSelector/ButtonTemplateSelector.vue2.js +16 -14
- package/dist/components/2_chatinput_elements/ButtonWabaTemplateSelector/ButtonWabaTemplateSelector.vue.js +4 -2
- package/dist/components/2_chatinput_elements/FilePreview/FilePreview.vue2.js +4 -2
- package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue2.js +4 -2
- package/dist/components/2_chatinput_elements/StickerPicker/StickerPicker.vue2.js +4 -2
- package/dist/components/2_chatinput_elements/TemplateSelector/TemplateSelector.vue.js +4 -2
- package/dist/components/2_chatinput_elements/TextFormatToolbar/TextFormatToolbar.vue2.js +4 -3
- package/dist/components/2_chatinput_elements/WABAAttachmentSection/WABAAttachmentSection.vue2.js +4 -2
- package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue2.js +3 -2
- package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue2.js +4 -2
- package/dist/components/2_elements/ChannelSelector/ChannelSelector.vue.js +3 -2
- package/dist/components/2_elements/ThemeMode/ThemeMode.vue.js +7 -5
- package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue2.js +4 -2
- package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue.js +1 -1
- package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue2.js +387 -340
- package/dist/components/2_feed_elements/BaseEditMessage/BaseEditMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/BaseEditMessage/BaseEditMessage.vue2.js +34 -0
- package/dist/components/2_feed_elements/CallMessage/CallMessage.vue.js +2 -2
- package/dist/components/2_feed_elements/CallMessage/CallMessage.vue2.js +388 -352
- package/dist/components/2_feed_elements/DeletedMessageContent/DeletedMessageContent.vue.js +7 -0
- package/dist/components/2_feed_elements/DeletedMessageContent/DeletedMessageContent.vue2.js +63 -0
- package/dist/components/2_feed_elements/DeletedMessageContent/icons/DeletedMessageIcon.vue.js +21 -0
- package/dist/components/2_feed_elements/EditTextMessage/EditTextMessage.vue.js +7 -0
- package/dist/components/2_feed_elements/EditTextMessage/EditTextMessage.vue2.js +35 -0
- package/dist/components/2_feed_elements/FileMessage/FileMessage.vue.js +2 -2
- package/dist/components/2_feed_elements/FileMessage/FileMessage.vue2.js +204 -157
- package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue.js +3 -3
- package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue2.js +273 -226
- package/dist/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue2.js +9 -7
- package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue.js +2 -2
- package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue2.js +141 -117
- package/dist/components/2_feed_elements/MessageReactions/icons/DeleteIcon.vue.js +32 -0
- package/dist/components/2_feed_elements/MessageReactions/icons/EditIcon.vue.js +32 -0
- package/dist/components/2_feed_elements/MessageReactions/icons/MessageActionsIcon.vue.js +21 -0
- package/dist/components/2_feed_elements/MissedCallMessage/MissedCallMessage.vue.js +4 -4
- package/dist/components/2_feed_elements/MissedCallMessage/MissedCallMessage.vue2.js +102 -66
- package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue2.js +11 -9
- package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue2.js +14 -12
- package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue2.js +11 -9
- package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue2.js +13 -11
- package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue2.js +11 -9
- package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue2.js +4 -2
- package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue.js +2 -2
- package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue2.js +255 -210
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue.js +1 -1
- package/dist/components/2_feed_elements/TextMessage/TextMessage.vue2.js +241 -140
- package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue.js +3 -3
- package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue2.js +245 -200
- package/dist/components/2_modals/ConfirmDeleteMessage/ConfirmDeleteMessage.vue.js +7 -0
- package/dist/components/2_modals/ConfirmDeleteMessage/ConfirmDeleteMessage.vue3.js +58 -0
- package/dist/components/3_compounds/ChatInput/ChatInput.vue.js +2 -2
- package/dist/components/3_compounds/ChatInput/ChatInput.vue2.js +5 -4
- package/dist/components/3_compounds/ChatList/ChatListHeader.vue.js +8 -8
- package/dist/components/3_compounds/ChatList/icons/LogoIcon.vue.js +12 -13
- package/dist/components/3_compounds/Feed/Feed.vue.js +2 -2
- package/dist/components/3_compounds/Feed/Feed.vue2.js +187 -163
- package/dist/components/3_compounds/Feed/composables/useFeedComponents.js +41 -26
- package/dist/components/3_compounds/Feed/composables/useFeedReply.js +16 -11
- package/dist/components/3_compounds/Feed/utils/getDefaultMessageMenuActions.js +31 -0
- package/dist/hooks/messages/buildEditPayload.js +10 -0
- package/dist/hooks/messages/calculateMessageMenuPosition.js +70 -0
- package/dist/hooks/messages/getDeletedOriginalText.js +26 -0
- package/dist/hooks/messages/getEditTooltipLines.js +28 -0
- package/dist/hooks/messages/useMessageActions.js +94 -19
- package/dist/hooks/messages/useMessageMenuActions.js +18 -0
- package/dist/hooks/messages/useStartEdit.js +30 -0
- package/dist/hooks/messages/useStartReply.js +16 -14
- package/dist/hooks/modals/useConfirmDeleteMessage.js +24 -0
- package/dist/hooks/useMessageDraft.js +46 -66
- package/dist/hooks/validators/messages/messageValidator.js +29 -35
- package/dist/index.js +220 -194
- package/dist/locale/en.js +6 -1
- package/dist/locale/ru.js +6 -1
- package/dist/themes/dark.css +1 -1
- package/dist/themes/default.css +1 -1
- package/dist/themes/glass.css +1 -1
- package/dist/themes/green.css +1 -1
- package/dist/themes/mobilon1.css +1 -1
- package/dist/types/apps/data/messages.d.ts +0 -321
- package/dist/types/components/1_atoms/ContextMenu/ContextMenu.vue.d.ts +0 -2
- package/dist/types/components/1_atoms/ContextMenu/stories/ContextMenu.stories.d.ts +1 -0
- package/dist/types/components/1_atoms/ContextMenu/styles/types.d.ts +18 -0
- package/dist/types/components/1_atoms/LoadingIndicator/styles/types.d.ts +0 -2
- package/dist/types/components/1_atoms/Tooltip/Tooltip.vue.d.ts +12 -1
- package/dist/types/components/2_blocks/CommunicationPanel/CommunicationPanel.vue.d.ts +2 -0
- package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationActions.d.ts +3 -1
- package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationMenu.d.ts +3 -0
- package/dist/types/components/2_blocks/CommunicationPanel/composables/useCommunicationSubMenu.d.ts +4 -2
- package/dist/types/components/2_blocks/CommunicationPanel/stories/CommunicationPanel.stories.d.ts +1 -0
- package/dist/types/components/2_feed_elements/BaseEditMessage/BaseEditMessage.vue.d.ts +23 -0
- package/dist/types/components/2_feed_elements/BaseEditMessage/stories/BaseEditMessage.stories.d.ts +6 -0
- package/dist/types/components/2_feed_elements/DeletedMessageContent/DeletedMessageContent.vue.d.ts +31 -0
- package/dist/types/components/2_feed_elements/DeletedMessageContent/icons/DeletedMessageIcon.vue.d.ts +2 -0
- package/dist/types/components/2_feed_elements/DeletedMessageContent/styles/types.d.ts +35 -0
- package/dist/types/components/2_feed_elements/EditTextMessage/EditTextMessage.vue.d.ts +13 -0
- package/dist/types/components/2_feed_elements/EditTextMessage/stories/EditTextMessage.stories.d.ts +7 -0
- package/dist/types/components/2_feed_elements/FeedKeyboard/FeedKeyboard.vue.d.ts +1 -1
- package/dist/types/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue.d.ts +1 -1
- package/dist/types/components/2_feed_elements/MessageReactions/MessageReactions.vue.d.ts +35 -0
- package/dist/types/components/2_feed_elements/MessageReactions/icons/DeleteIcon.vue.d.ts +2 -0
- package/dist/types/components/2_feed_elements/MessageReactions/icons/EditIcon.vue.d.ts +2 -0
- package/dist/types/components/2_feed_elements/MessageReactions/icons/MessageActionsIcon.vue.d.ts +2 -0
- package/dist/types/components/2_feed_elements/TextMessage/TextMessage.vue.d.ts +11 -3
- package/dist/types/components/2_feed_elements/TextMessage/stories/TextMessage.stories.d.ts +1 -0
- package/dist/types/components/2_feed_elements/TextMessage/styles/types.d.ts +22 -0
- package/dist/types/components/2_feed_elements/VideoMessage/stories/VideoMessage.stories.d.ts +2 -2
- package/dist/types/components/2_feed_elements/types/components.d.ts +1 -2
- package/dist/types/components/2_feed_elements/types/messages.d.ts +116 -9
- package/dist/types/components/2_modals/ConfirmDeleteMessage/ConfirmDeleteMessage.vue.d.ts +22 -0
- package/dist/types/components/2_modals/ConfirmDeleteMessage/stories/ConfirmDeleteMessage.stories.d.ts +37 -0
- package/dist/types/components/2_modals/ConfirmDeleteMessage/styles/types.d.ts +97 -0
- package/dist/types/components/3_compounds/ChatInput/types/IInputMessage.d.ts +2 -1
- package/dist/types/components/3_compounds/ChatList/styles/types.d.ts +2 -2
- package/dist/types/components/3_compounds/Feed/Feed.vue.d.ts +20 -3
- package/dist/types/components/3_compounds/Feed/composables/useFeedComponents.d.ts +6 -2
- package/dist/types/components/3_compounds/Feed/composables/useFeedGrouping.d.ts +0 -1
- package/dist/types/components/3_compounds/Feed/composables/useFeedReply.d.ts +7 -1
- package/dist/types/components/3_compounds/Feed/utils/getDefaultMessageMenuActions.d.ts +3 -0
- package/dist/types/components/3_compounds/SideBar/SideBar.vue.d.ts +2 -2
- package/dist/types/components/index.d.ts +4 -0
- package/dist/types/hooks/messages/buildEditPayload.d.ts +7 -0
- package/dist/types/hooks/messages/calculateMessageMenuPosition.d.ts +16 -0
- package/dist/types/hooks/messages/getDeletedOriginalText.d.ts +28 -0
- package/dist/types/hooks/messages/getEditTooltipLines.d.ts +17 -0
- package/dist/types/hooks/messages/index.d.ts +6 -0
- package/dist/types/hooks/messages/useMessageActions.d.ts +33 -39
- package/dist/types/hooks/messages/useMessageMenuActions.d.ts +10 -0
- package/dist/types/hooks/messages/useStartEdit.d.ts +6 -0
- package/dist/types/hooks/modals/index.d.ts +1 -0
- package/dist/types/hooks/modals/useConfirmDeleteMessage.d.ts +2 -0
- package/dist/types/hooks/useMessageDraft.d.ts +10 -1
- package/dist/types/hooks/validators/messages/types.d.ts +0 -6
- package/dist/types/locale/en.d.ts +5 -0
- package/dist/types/locale/ru.d.ts +5 -0
- package/dist/types/main.d.ts +1 -0
- package/package.json +1 -1
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IAction } from '@types';
|
|
2
1
|
export interface Reply {
|
|
3
2
|
messageId: string;
|
|
4
3
|
type: string;
|
|
@@ -9,6 +8,72 @@ export interface Reply {
|
|
|
9
8
|
callDuration?: string;
|
|
10
9
|
isMissedCall?: boolean;
|
|
11
10
|
}
|
|
11
|
+
/** Сообщение в режиме редактирования (превью над инпутом) */
|
|
12
|
+
export interface Edit {
|
|
13
|
+
messageId: string;
|
|
14
|
+
type: string;
|
|
15
|
+
text?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Одна запись в истории правки сообщения
|
|
19
|
+
*/
|
|
20
|
+
export interface MessageEditRecord {
|
|
21
|
+
/** Текст сообщения после этой правки */
|
|
22
|
+
text?: string;
|
|
23
|
+
/** Кто изменил */
|
|
24
|
+
editedBy?: string;
|
|
25
|
+
/** Когда изменили (уже отформатированная строка, напр. «20.07.2026 в 11:08») */
|
|
26
|
+
editedAt?: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Снимок правки для метки «изменено» и тултипа.
|
|
30
|
+
* При отправке заполняется сразу; при наведении хост может обновить через fetchEditInfo.
|
|
31
|
+
*/
|
|
32
|
+
export interface MessageEditInfo {
|
|
33
|
+
/** Оригинальный текст до первой правки */
|
|
34
|
+
originalText?: string;
|
|
35
|
+
/** Кто изменил (последняя правка; для обратной совместимости) */
|
|
36
|
+
editedBy?: string;
|
|
37
|
+
/** Когда изменили (последняя правка; для обратной совместимости) */
|
|
38
|
+
editedAt?: string;
|
|
39
|
+
/** История правок от старых к новым */
|
|
40
|
+
history?: MessageEditRecord[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Данные удаления для тултипа «Сообщение удалено»:
|
|
44
|
+
* текст + «Имя, дата в время».
|
|
45
|
+
*/
|
|
46
|
+
export interface MessageDeleteInfo {
|
|
47
|
+
/** Кто удалил */
|
|
48
|
+
deletedBy?: string;
|
|
49
|
+
/** Когда удалили (уже отформатированная строка, напр. «20.07.26 в 11:08») */
|
|
50
|
+
deletedAt?: string;
|
|
51
|
+
}
|
|
52
|
+
/** Контекст сообщения для условий пунктов меню */
|
|
53
|
+
export type MessageMenuActionContext = {
|
|
54
|
+
messageId?: string;
|
|
55
|
+
position?: string;
|
|
56
|
+
type?: string;
|
|
57
|
+
deleted?: boolean;
|
|
58
|
+
/** Можно ли ещё редактировать (окно не истекло); `false` — пункт «Редактировать» disabled */
|
|
59
|
+
canEdit?: boolean;
|
|
60
|
+
/** Можно ли ещё удалить (окно не истекло); `false` — пункт «Удалить» disabled */
|
|
61
|
+
canDelete?: boolean;
|
|
62
|
+
};
|
|
63
|
+
/** Пункт контекстного меню сообщения (задаётся пропом Feed) */
|
|
64
|
+
export interface IFeedMessageMenuAction {
|
|
65
|
+
action?: string;
|
|
66
|
+
title?: string;
|
|
67
|
+
/** URL или Vue-компонент иконки */
|
|
68
|
+
icon?: string | object;
|
|
69
|
+
prime?: string;
|
|
70
|
+
/** Недоступен: флаг или функция от сообщения */
|
|
71
|
+
disabled?: boolean | ((message: MessageMenuActionContext) => boolean);
|
|
72
|
+
/** Красный пункт (например, «Удалить») */
|
|
73
|
+
danger?: boolean;
|
|
74
|
+
/** Разделитель между группами пунктов */
|
|
75
|
+
separator?: boolean;
|
|
76
|
+
}
|
|
12
77
|
export interface ILinkPreview {
|
|
13
78
|
title: string;
|
|
14
79
|
imageUrl: string;
|
|
@@ -84,7 +149,6 @@ export interface IAudioMessage {
|
|
|
84
149
|
avatar?: string;
|
|
85
150
|
header?: string;
|
|
86
151
|
subText?: string;
|
|
87
|
-
actions?: IAction[];
|
|
88
152
|
views?: number;
|
|
89
153
|
text?: string;
|
|
90
154
|
/** Транскрипт со статусом и HTML */
|
|
@@ -105,6 +169,12 @@ export interface IAudioMessage {
|
|
|
105
169
|
backgroundColor?: string;
|
|
106
170
|
hasMessengerAccount?: boolean;
|
|
107
171
|
isVoiceMessage?: boolean;
|
|
172
|
+
deleted?: boolean;
|
|
173
|
+
deletion?: MessageDeleteInfo;
|
|
174
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
175
|
+
canEdit?: boolean;
|
|
176
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
177
|
+
canDelete?: boolean;
|
|
108
178
|
}
|
|
109
179
|
/** Реплика в JSON из meta.transcript (ответ API) */
|
|
110
180
|
export interface ICallTranscriptReply {
|
|
@@ -144,7 +214,6 @@ export interface ICallMessage {
|
|
|
144
214
|
header?: string;
|
|
145
215
|
subText?: string;
|
|
146
216
|
text?: string;
|
|
147
|
-
actions?: IAction[];
|
|
148
217
|
views?: number;
|
|
149
218
|
/** Транскрипт со статусом и HTML */
|
|
150
219
|
transcript?: IAudioRecognitionPayload;
|
|
@@ -153,6 +222,12 @@ export interface ICallMessage {
|
|
|
153
222
|
reactions?: MessageReactions;
|
|
154
223
|
backgroundColor?: string;
|
|
155
224
|
hasMessengerAccount?: boolean;
|
|
225
|
+
deleted?: boolean;
|
|
226
|
+
deletion?: MessageDeleteInfo;
|
|
227
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
228
|
+
canEdit?: boolean;
|
|
229
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
230
|
+
canDelete?: boolean;
|
|
156
231
|
}
|
|
157
232
|
export interface IDateMessage {
|
|
158
233
|
messageId?: string;
|
|
@@ -170,7 +245,6 @@ export interface IFileMessage {
|
|
|
170
245
|
avatar?: string;
|
|
171
246
|
header?: string;
|
|
172
247
|
subText?: string;
|
|
173
|
-
actions?: IAction[];
|
|
174
248
|
views?: number;
|
|
175
249
|
text?: string;
|
|
176
250
|
reply?: Reply;
|
|
@@ -181,6 +255,12 @@ export interface IFileMessage {
|
|
|
181
255
|
direction?: string;
|
|
182
256
|
backgroundColor?: string;
|
|
183
257
|
hasMessengerAccount?: boolean;
|
|
258
|
+
deleted?: boolean;
|
|
259
|
+
deletion?: MessageDeleteInfo;
|
|
260
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
261
|
+
canEdit?: boolean;
|
|
262
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
263
|
+
canDelete?: boolean;
|
|
184
264
|
}
|
|
185
265
|
export interface IImageMessage {
|
|
186
266
|
messageId: string;
|
|
@@ -193,7 +273,6 @@ export interface IImageMessage {
|
|
|
193
273
|
avatar?: string;
|
|
194
274
|
header?: string;
|
|
195
275
|
subText?: string;
|
|
196
|
-
actions?: IAction[];
|
|
197
276
|
views?: number;
|
|
198
277
|
text?: string;
|
|
199
278
|
reply?: Reply;
|
|
@@ -203,6 +282,12 @@ export interface IImageMessage {
|
|
|
203
282
|
reactions?: MessageReactions;
|
|
204
283
|
backgroundColor?: string;
|
|
205
284
|
hasMessengerAccount?: boolean;
|
|
285
|
+
deleted?: boolean;
|
|
286
|
+
deletion?: MessageDeleteInfo;
|
|
287
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
288
|
+
canEdit?: boolean;
|
|
289
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
290
|
+
canDelete?: boolean;
|
|
206
291
|
}
|
|
207
292
|
export interface ISystemMessage {
|
|
208
293
|
messageId: string;
|
|
@@ -226,15 +311,22 @@ export interface ITextMessage {
|
|
|
226
311
|
avatar?: string;
|
|
227
312
|
header?: string;
|
|
228
313
|
subText?: string;
|
|
229
|
-
actions?: IAction[];
|
|
230
314
|
views?: number;
|
|
231
315
|
reply?: Reply;
|
|
316
|
+
/** Данные правки: наличие поля показывает метку «изменено» */
|
|
317
|
+
edited?: MessageEditInfo;
|
|
232
318
|
linkPreview?: ILinkPreview;
|
|
233
319
|
embed?: object;
|
|
234
320
|
keyboard?: IKeyBoard[];
|
|
235
321
|
reactions?: MessageReactions;
|
|
236
322
|
backgroundColor?: string;
|
|
237
323
|
hasMessengerAccount?: boolean;
|
|
324
|
+
deleted?: boolean;
|
|
325
|
+
deletion?: MessageDeleteInfo;
|
|
326
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
327
|
+
canEdit?: boolean;
|
|
328
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
329
|
+
canDelete?: boolean;
|
|
238
330
|
}
|
|
239
331
|
export interface ITypingMessage {
|
|
240
332
|
avatar?: string;
|
|
@@ -252,7 +344,6 @@ export interface IVideoMessage {
|
|
|
252
344
|
avatar?: string;
|
|
253
345
|
header?: string;
|
|
254
346
|
subText?: string;
|
|
255
|
-
actions?: IAction[];
|
|
256
347
|
views?: number;
|
|
257
348
|
text?: string;
|
|
258
349
|
reply?: Reply;
|
|
@@ -262,6 +353,12 @@ export interface IVideoMessage {
|
|
|
262
353
|
reactions?: MessageReactions;
|
|
263
354
|
backgroundColor?: string;
|
|
264
355
|
hasMessengerAccount?: boolean;
|
|
356
|
+
deleted?: boolean;
|
|
357
|
+
deletion?: MessageDeleteInfo;
|
|
358
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
359
|
+
canEdit?: boolean;
|
|
360
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
361
|
+
canDelete?: boolean;
|
|
265
362
|
}
|
|
266
363
|
export interface IStickerMessage {
|
|
267
364
|
messageId: string;
|
|
@@ -275,7 +372,6 @@ export interface IStickerMessage {
|
|
|
275
372
|
avatar?: string;
|
|
276
373
|
header?: string;
|
|
277
374
|
subText?: string;
|
|
278
|
-
actions?: IAction[];
|
|
279
375
|
views?: number;
|
|
280
376
|
text?: string;
|
|
281
377
|
reply?: Reply;
|
|
@@ -285,6 +381,12 @@ export interface IStickerMessage {
|
|
|
285
381
|
reactions?: MessageReactions;
|
|
286
382
|
backgroundColor?: string;
|
|
287
383
|
hasMessengerAccount?: boolean;
|
|
384
|
+
deleted?: boolean;
|
|
385
|
+
deletion?: MessageDeleteInfo;
|
|
386
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
387
|
+
canEdit?: boolean;
|
|
388
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
389
|
+
canDelete?: boolean;
|
|
288
390
|
}
|
|
289
391
|
export interface IMissedCallMessage {
|
|
290
392
|
messageId: string;
|
|
@@ -293,7 +395,12 @@ export interface IMissedCallMessage {
|
|
|
293
395
|
avatar?: string;
|
|
294
396
|
header?: string;
|
|
295
397
|
subText?: string;
|
|
296
|
-
actions?: IAction[];
|
|
297
398
|
backgroundColor?: string;
|
|
298
399
|
hasMessengerAccount?: boolean;
|
|
400
|
+
deleted?: boolean;
|
|
401
|
+
deletion?: MessageDeleteInfo;
|
|
402
|
+
/** Можно ли ещё редактировать (если `false` — пункт меню disabled) */
|
|
403
|
+
canEdit?: boolean;
|
|
404
|
+
/** Можно ли ещё удалить (если `false` — пункт меню disabled) */
|
|
405
|
+
canDelete?: boolean;
|
|
299
406
|
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
2
|
+
theme: {
|
|
3
|
+
type: StringConstructor;
|
|
4
|
+
required: false;
|
|
5
|
+
default: string;
|
|
6
|
+
};
|
|
7
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
8
|
+
cancel: () => any;
|
|
9
|
+
confirm: () => any;
|
|
10
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
11
|
+
theme: {
|
|
12
|
+
type: StringConstructor;
|
|
13
|
+
required: false;
|
|
14
|
+
default: string;
|
|
15
|
+
};
|
|
16
|
+
}>> & Readonly<{
|
|
17
|
+
onCancel?: (() => any) | undefined;
|
|
18
|
+
onConfirm?: (() => any) | undefined;
|
|
19
|
+
}>, {
|
|
20
|
+
theme: string;
|
|
21
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
22
|
+
export default _default;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { StoryObj } from '@storybook/vue3-vite';
|
|
2
|
+
declare const meta: {
|
|
3
|
+
title: string;
|
|
4
|
+
component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
|
|
5
|
+
theme: {
|
|
6
|
+
type: StringConstructor;
|
|
7
|
+
required: false;
|
|
8
|
+
default: string;
|
|
9
|
+
};
|
|
10
|
+
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
11
|
+
cancel: () => any;
|
|
12
|
+
confirm: () => any;
|
|
13
|
+
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
|
|
14
|
+
theme: {
|
|
15
|
+
type: StringConstructor;
|
|
16
|
+
required: false;
|
|
17
|
+
default: string;
|
|
18
|
+
};
|
|
19
|
+
}>> & Readonly<{
|
|
20
|
+
onCancel?: (() => any) | undefined;
|
|
21
|
+
onConfirm?: (() => any) | undefined;
|
|
22
|
+
}>, {
|
|
23
|
+
theme: string;
|
|
24
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
25
|
+
args: {
|
|
26
|
+
theme: string;
|
|
27
|
+
};
|
|
28
|
+
argTypes: {
|
|
29
|
+
theme: {
|
|
30
|
+
control: "select";
|
|
31
|
+
options: string[];
|
|
32
|
+
};
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export default meta;
|
|
36
|
+
type Story = StoryObj<typeof meta>;
|
|
37
|
+
export declare const Default: Story;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CSS переменные для компонента ConfirmDeleteMessage
|
|
3
|
+
*/
|
|
4
|
+
export interface ConfirmDeleteMessageThemeCSSVariables {
|
|
5
|
+
/** Позиционирование оверлея */
|
|
6
|
+
'--chotto-confirmdeletemessage-backdrop-position': string;
|
|
7
|
+
/** Фон оверлея */
|
|
8
|
+
'--chotto-confirmdeletemessage-backdrop-bg': string;
|
|
9
|
+
/** Фильтр оверлея */
|
|
10
|
+
'--chotto-confirmdeletemessage-backdrop-filter': string;
|
|
11
|
+
/** Отображение оверлея */
|
|
12
|
+
'--chotto-confirmdeletemessage-backdrop-display': string;
|
|
13
|
+
/** Выравнивание по горизонтали */
|
|
14
|
+
'--chotto-confirmdeletemessage-backdrop-justify': string;
|
|
15
|
+
/** Выравнивание по вертикали */
|
|
16
|
+
'--chotto-confirmdeletemessage-backdrop-align': string;
|
|
17
|
+
/** Z-index оверлея */
|
|
18
|
+
'--chotto-confirmdeletemessage-backdrop-z-index': string;
|
|
19
|
+
/** Ширина диалога */
|
|
20
|
+
'--chotto-confirmdeletemessage-width': string;
|
|
21
|
+
/** Высота диалога */
|
|
22
|
+
'--chotto-confirmdeletemessage-height': string;
|
|
23
|
+
/** Внутренние отступы диалога */
|
|
24
|
+
'--chotto-confirmdeletemessage-padding': string;
|
|
25
|
+
/** Фон диалога */
|
|
26
|
+
'--chotto-confirmdeletemessage-background': string;
|
|
27
|
+
/** Граница диалога */
|
|
28
|
+
'--chotto-confirmdeletemessage-border': string;
|
|
29
|
+
/** Тень диалога */
|
|
30
|
+
'--chotto-confirmdeletemessage-box-shadow': string;
|
|
31
|
+
/** Радиус границы диалога */
|
|
32
|
+
'--chotto-confirmdeletemessage-border-radius': string;
|
|
33
|
+
/** Отображение диалога */
|
|
34
|
+
'--chotto-confirmdeletemessage-display': string;
|
|
35
|
+
/** Направление flex диалога */
|
|
36
|
+
'--chotto-confirmdeletemessage-flex-direction': string;
|
|
37
|
+
/** Выравнивание элементов по горизонтали */
|
|
38
|
+
'--chotto-confirmdeletemessage-align-items': string;
|
|
39
|
+
/** Выравнивание содержимого по вертикали */
|
|
40
|
+
'--chotto-confirmdeletemessage-justify-content': string;
|
|
41
|
+
/** Максимальная ширина диалога */
|
|
42
|
+
'--chotto-confirmdeletemessage-max-width': string;
|
|
43
|
+
/** Отступы заголовка */
|
|
44
|
+
'--chotto-confirmdeletemessage-title-margin': string;
|
|
45
|
+
/** Ширина заголовка */
|
|
46
|
+
'--chotto-confirmdeletemessage-title-width': string;
|
|
47
|
+
/** Выравнивание текста заголовка */
|
|
48
|
+
'--chotto-confirmdeletemessage-title-text-align': string;
|
|
49
|
+
/** Семейство шрифтов заголовка */
|
|
50
|
+
'--chotto-confirmdeletemessage-title-font-family': string;
|
|
51
|
+
/** Жирность шрифта заголовка */
|
|
52
|
+
'--chotto-confirmdeletemessage-title-font-weight': string;
|
|
53
|
+
/** Размер шрифта заголовка */
|
|
54
|
+
'--chotto-confirmdeletemessage-title-font-size': string;
|
|
55
|
+
/** Высота строки заголовка */
|
|
56
|
+
'--chotto-confirmdeletemessage-title-line-height': string;
|
|
57
|
+
/** Цвет заголовка */
|
|
58
|
+
'--chotto-confirmdeletemessage-title-color': string;
|
|
59
|
+
/** Отображение блока кнопок */
|
|
60
|
+
'--chotto-confirmdeletemessage-actions-display': string;
|
|
61
|
+
/** Выравнивание кнопок по вертикали */
|
|
62
|
+
'--chotto-confirmdeletemessage-actions-align-items': string;
|
|
63
|
+
/** Выравнивание кнопок по горизонтали */
|
|
64
|
+
'--chotto-confirmdeletemessage-actions-justify-content': string;
|
|
65
|
+
/** Отступ между кнопками */
|
|
66
|
+
'--chotto-confirmdeletemessage-actions-gap': string;
|
|
67
|
+
/** Ширина кнопки */
|
|
68
|
+
'--chotto-confirmdeletemessage-btn-width': string;
|
|
69
|
+
/** Высота кнопки */
|
|
70
|
+
'--chotto-confirmdeletemessage-btn-height': string;
|
|
71
|
+
/** Семейство шрифтов кнопки */
|
|
72
|
+
'--chotto-confirmdeletemessage-btn-font-family': string;
|
|
73
|
+
/** Жирность шрифта кнопки */
|
|
74
|
+
'--chotto-confirmdeletemessage-btn-font-weight': string;
|
|
75
|
+
/** Размер шрифта кнопки */
|
|
76
|
+
'--chotto-confirmdeletemessage-btn-font-size': string;
|
|
77
|
+
/** Курсор кнопки */
|
|
78
|
+
'--chotto-confirmdeletemessage-btn-cursor': string;
|
|
79
|
+
/** Фон кнопки */
|
|
80
|
+
'--chotto-confirmdeletemessage-btn-background': string;
|
|
81
|
+
/** Цвет текста кнопки удаления */
|
|
82
|
+
'--chotto-confirmdeletemessage-btn-delete-color': string;
|
|
83
|
+
/** Граница кнопки удаления */
|
|
84
|
+
'--chotto-confirmdeletemessage-btn-delete-border': string;
|
|
85
|
+
/** Радиус границы кнопки удаления */
|
|
86
|
+
'--chotto-confirmdeletemessage-btn-delete-border-radius': string;
|
|
87
|
+
/** Цвет текста кнопки отмены */
|
|
88
|
+
'--chotto-confirmdeletemessage-btn-cancel-color': string;
|
|
89
|
+
/** Граница кнопки отмены */
|
|
90
|
+
'--chotto-confirmdeletemessage-btn-cancel-border': string;
|
|
91
|
+
/** Переход появления/скрытия */
|
|
92
|
+
'--chotto-confirmdeletemessage-transition': string;
|
|
93
|
+
/** Начальная прозрачность */
|
|
94
|
+
'--chotto-confirmdeletemessage-enter-opacity': string;
|
|
95
|
+
/** Конечная прозрачность */
|
|
96
|
+
'--chotto-confirmdeletemessage-enter-to-opacity': string;
|
|
97
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Reply } from "@/types";
|
|
1
|
+
import { Edit, Reply } from "@/types";
|
|
2
2
|
export interface IInputMessage {
|
|
3
3
|
type: string;
|
|
4
4
|
text?: string;
|
|
@@ -6,4 +6,5 @@ export interface IInputMessage {
|
|
|
6
6
|
filename?: string;
|
|
7
7
|
size?: string;
|
|
8
8
|
reply?: Reply;
|
|
9
|
+
edit?: Edit;
|
|
9
10
|
}
|
|
@@ -88,8 +88,8 @@ export interface ChatListThemeCSSVariables {
|
|
|
88
88
|
'--chotto-chatlist-title-logo-width': string;
|
|
89
89
|
/** Высота логотипа заголовка */
|
|
90
90
|
'--chotto-chatlist-title-logo-height': string;
|
|
91
|
-
/** Отступ
|
|
92
|
-
'--chotto-chatlist-title-logo-margin-
|
|
91
|
+
/** Отступ справа логотипа заголовка */
|
|
92
|
+
'--chotto-chatlist-title-logo-margin-right': string;
|
|
93
93
|
/** Коэффициент сжатия логотипа заголовка */
|
|
94
94
|
'--chotto-chatlist-title-logo-flex-shrink': string;
|
|
95
95
|
/** Отображение бейджа beta заголовка */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IFeedObject, IFeedTyping, IFeedUnreadButton, IFeedKeyboard } from '@/types';
|
|
1
|
+
import { IFeedObject, IFeedTyping, IFeedUnreadButton, IFeedKeyboard, IFeedMessageMenuAction } from '@/types';
|
|
2
2
|
declare var __VLS_1: {}, __VLS_47: {};
|
|
3
3
|
type __VLS_Slots = {} & {
|
|
4
4
|
prepend?: (props: typeof __VLS_1) => any;
|
|
@@ -104,6 +104,14 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
|
|
|
104
104
|
required: false;
|
|
105
105
|
default: undefined;
|
|
106
106
|
};
|
|
107
|
+
/**
|
|
108
|
+
* Пункты контекстного меню сообщений (с иконками).
|
|
109
|
+
* По умолчанию: Ответить, Редактировать, разделитель, Удалить (красный).
|
|
110
|
+
*/
|
|
111
|
+
messageMenuActions: {
|
|
112
|
+
type: () => IFeedMessageMenuAction[];
|
|
113
|
+
default: () => IFeedMessageMenuAction[];
|
|
114
|
+
};
|
|
107
115
|
}>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
108
116
|
loadMore: (...args: any[]) => void;
|
|
109
117
|
smsInvite: (...args: any[]) => void;
|
|
@@ -214,6 +222,14 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
|
|
|
214
222
|
required: false;
|
|
215
223
|
default: undefined;
|
|
216
224
|
};
|
|
225
|
+
/**
|
|
226
|
+
* Пункты контекстного меню сообщений (с иконками).
|
|
227
|
+
* По умолчанию: Ответить, Редактировать, разделитель, Удалить (красный).
|
|
228
|
+
*/
|
|
229
|
+
messageMenuActions: {
|
|
230
|
+
type: () => IFeedMessageMenuAction[];
|
|
231
|
+
default: () => IFeedMessageMenuAction[];
|
|
232
|
+
};
|
|
217
233
|
}>> & Readonly<{
|
|
218
234
|
onLoadMore?: ((...args: any[]) => any) | undefined;
|
|
219
235
|
onSmsInvite?: ((...args: any[]) => any) | undefined;
|
|
@@ -227,6 +243,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
|
|
|
227
243
|
onDelimiterRead?: ((...args: any[]) => any) | undefined;
|
|
228
244
|
}>, {
|
|
229
245
|
typing: boolean | IFeedTyping;
|
|
246
|
+
messageMenuActions: IFeedMessageMenuAction[];
|
|
230
247
|
chatBackground: string;
|
|
231
248
|
currentUserId: string | number | undefined;
|
|
232
249
|
reactionUserNames: Record<string, string>;
|
|
@@ -238,9 +255,9 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
|
|
|
238
255
|
buttonParams: IFeedUnreadButton;
|
|
239
256
|
scrollToBottom: boolean;
|
|
240
257
|
scrollTo: string;
|
|
241
|
-
keyboardAlign: "
|
|
258
|
+
keyboardAlign: "center" | "left" | "right";
|
|
242
259
|
feedKeyboards: IFeedKeyboard[];
|
|
243
|
-
feedKeyboardAlign: "
|
|
260
|
+
feedKeyboardAlign: "center" | "left" | "right";
|
|
244
261
|
isLoadingMore: boolean;
|
|
245
262
|
callMessageOnCallback: ((message: IFeedObject) => void) | undefined;
|
|
246
263
|
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Композабл для маппинга типов сообщений на
|
|
2
|
+
* Композабл для маппинга типов сообщений на компоненты.
|
|
3
|
+
* Удалённые сообщения ленты всегда рендерятся как TextMessage.
|
|
3
4
|
*/
|
|
4
5
|
export declare function useFeedComponents(): {
|
|
5
|
-
componentsMap: (
|
|
6
|
+
componentsMap: (object: {
|
|
7
|
+
type?: string;
|
|
8
|
+
deleted?: boolean;
|
|
9
|
+
} | string) => unknown;
|
|
6
10
|
};
|
|
@@ -4,7 +4,7 @@ interface UseFeedReplyOptions {
|
|
|
4
4
|
emit: (event: 'messageAction' | 'clickRepliedMessage', payload: IFeedObject | string) => void;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
7
|
-
* Композабл для обработки ответов
|
|
7
|
+
* Композабл для обработки ответов и редактирования сообщений
|
|
8
8
|
*/
|
|
9
9
|
export declare function useFeedReply({ enableDoubleClickReply, emit }: UseFeedReplyOptions): {
|
|
10
10
|
getMessage: () => {
|
|
@@ -26,6 +26,11 @@ export declare function useFeedReply({ enableDoubleClickReply, emit }: UseFeedRe
|
|
|
26
26
|
callDuration?: string | undefined;
|
|
27
27
|
isMissedCall?: boolean | undefined;
|
|
28
28
|
} | undefined;
|
|
29
|
+
edit?: {
|
|
30
|
+
messageId: string;
|
|
31
|
+
type: string;
|
|
32
|
+
text?: string | undefined;
|
|
33
|
+
} | undefined;
|
|
29
34
|
forceSend: boolean;
|
|
30
35
|
isRecording: boolean;
|
|
31
36
|
};
|
|
@@ -33,5 +38,6 @@ export declare function useFeedReply({ enableDoubleClickReply, emit }: UseFeedRe
|
|
|
33
38
|
handleClickReplied: (messageId: string) => void;
|
|
34
39
|
feedObjectDoubleClick: (event: MouseEvent, object: IFeedObject) => void;
|
|
35
40
|
handleResetReply: () => void;
|
|
41
|
+
handleResetEdit: () => void;
|
|
36
42
|
};
|
|
37
43
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
declare const _default: import("vue").DefineComponent<{}, {
|
|
2
2
|
$emit: (event: "selectItem" | "settingsClick", ...args: any[]) => void;
|
|
3
3
|
sidebarItems: unknown[];
|
|
4
|
-
horizontal: boolean;
|
|
5
4
|
menuActions: unknown[];
|
|
5
|
+
horizontal: boolean;
|
|
6
6
|
showSettings: boolean;
|
|
7
7
|
settingsButtonMode: string;
|
|
8
8
|
showSettingsIndicator: boolean;
|
|
@@ -11,8 +11,8 @@ declare const _default: import("vue").DefineComponent<{}, {
|
|
|
11
11
|
settingsIndicatorTooltipAutoShowMs: number;
|
|
12
12
|
$props: {
|
|
13
13
|
readonly sidebarItems?: unknown[] | undefined;
|
|
14
|
-
readonly horizontal?: boolean | undefined;
|
|
15
14
|
readonly menuActions?: unknown[] | undefined;
|
|
15
|
+
readonly horizontal?: boolean | undefined;
|
|
16
16
|
readonly showSettings?: boolean | undefined;
|
|
17
17
|
readonly settingsButtonMode?: string | undefined;
|
|
18
18
|
readonly showSettingsIndicator?: boolean | undefined;
|
|
@@ -49,11 +49,14 @@ export { default as UserProfile } from './2_elements/UserProfile/UserProfile.vue
|
|
|
49
49
|
export { default as VideoRecorder } from './2_elements/VideoRecorder/VideoRecorder.vue';
|
|
50
50
|
export { default as AudioMessage } from './2_feed_elements/AudioMessage/AudioMessage.vue';
|
|
51
51
|
export { default as BaseReplyMessage } from './2_feed_elements/BaseReplyMessage/BaseReplyMessage.vue';
|
|
52
|
+
export { default as BaseEditMessage } from './2_feed_elements/BaseEditMessage/BaseEditMessage.vue';
|
|
52
53
|
export { default as CallMessage } from './2_feed_elements/CallMessage/CallMessage.vue';
|
|
53
54
|
export { default as DateMessage } from './2_feed_elements/DateMessage/DateMessage.vue';
|
|
55
|
+
export { default as DeletedMessageContent } from './2_feed_elements/DeletedMessageContent/DeletedMessageContent.vue';
|
|
54
56
|
export { default as MissedCallMessage } from './2_feed_elements/MissedCallMessage/MissedCallMessage.vue';
|
|
55
57
|
export { default as DateMessageSticky } from './2_feed_elements/DateMessageSticky/DateMessageSticky.vue';
|
|
56
58
|
export { default as DelimiterMessage } from './2_feed_elements/DelimiterMessage/DelimiterMessage.vue';
|
|
59
|
+
export { default as EditTextMessage } from './2_feed_elements/EditTextMessage/EditTextMessage.vue';
|
|
57
60
|
export { default as FeedKeyboard } from './2_feed_elements/FeedKeyboard/FeedKeyboard.vue';
|
|
58
61
|
export { default as FileMessage } from './2_feed_elements/FileMessage/FileMessage.vue';
|
|
59
62
|
export { default as ImageMessage } from './2_feed_elements/ImageMessage/ImageMessage.vue';
|
|
@@ -76,6 +79,7 @@ export { default as VideoMessage } from './2_feed_elements/VideoMessage/VideoMes
|
|
|
76
79
|
export { default as Modal } from './2_modals/Modal/Modal.vue';
|
|
77
80
|
export { default as ModalFullscreen } from './2_modals/ModalFullscreen/ModalFullscreen.vue';
|
|
78
81
|
export { default as ModalNoFooter } from './2_modals/ModalNoFooter/ModalNoFooter.vue';
|
|
82
|
+
export { default as ConfirmDeleteMessage } from './2_modals/ConfirmDeleteMessage/ConfirmDeleteMessage.vue';
|
|
79
83
|
export { default as SelectUser } from './2_modals/SelectUser/SelectUser.vue';
|
|
80
84
|
export { default as ChatInput } from './3_compounds/ChatInput/ChatInput.vue';
|
|
81
85
|
export { default as ChatListHeader } from './3_compounds/ChatList/ChatListHeader.vue';
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type MenuTriggerRect = Pick<DOMRect, 'top' | 'right' | 'bottom' | 'left' | 'width' | 'height'>;
|
|
2
|
+
/**
|
|
3
|
+
* Границы приложения для встроек: .base__container / .base / .chat-app / [data-theme],
|
|
4
|
+
* пересечённые с viewport.
|
|
5
|
+
*/
|
|
6
|
+
export declare function findAppBoundsRect(element: HTMLElement | null): DOMRect;
|
|
7
|
+
/**
|
|
8
|
+
* Позиция контекстного меню рядом с кнопкой «три точки» (position: fixed).
|
|
9
|
+
* Не выходит за границы приложения (важно для встроек).
|
|
10
|
+
*/
|
|
11
|
+
export declare function calculateMessageMenuPosition(menuElement: HTMLElement | null, options: {
|
|
12
|
+
triggerRect: MenuTriggerRect | null;
|
|
13
|
+
boundsElement: HTMLElement | null;
|
|
14
|
+
estimatedWidth?: number;
|
|
15
|
+
estimatedHeight?: number;
|
|
16
|
+
}): Promise<Record<string, string>>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Текст и мета для тултипа удалённого сообщения
|
|
3
|
+
* (текст + «Имя, дата в время»).
|
|
4
|
+
*/
|
|
5
|
+
export type DeletedTooltipLines = {
|
|
6
|
+
original: string;
|
|
7
|
+
meta: string;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Строки тултипа для «Сообщение удалено»:
|
|
11
|
+
* original — исходный текст/подпись;
|
|
12
|
+
* meta — «Имя, дата в время».
|
|
13
|
+
*/
|
|
14
|
+
export declare function getDeletedTooltipLines(message: {
|
|
15
|
+
text?: string;
|
|
16
|
+
filename?: string;
|
|
17
|
+
alt?: string;
|
|
18
|
+
deletion?: {
|
|
19
|
+
deletedBy?: string;
|
|
20
|
+
deletedAt?: string;
|
|
21
|
+
} | null;
|
|
22
|
+
}): DeletedTooltipLines;
|
|
23
|
+
/** @deprecated используйте getDeletedTooltipLines().original */
|
|
24
|
+
export declare function getDeletedOriginalText(message: {
|
|
25
|
+
text?: string;
|
|
26
|
+
filename?: string;
|
|
27
|
+
alt?: string;
|
|
28
|
+
}): string;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { MessageEditInfo } from '@/types';
|
|
2
|
+
export type EditTooltipEntry = {
|
|
3
|
+
text: string;
|
|
4
|
+
meta: string;
|
|
5
|
+
};
|
|
6
|
+
export type EditTooltipLines = {
|
|
7
|
+
/** Оригинальный текст до первой правки */
|
|
8
|
+
original?: string;
|
|
9
|
+
/** Правки: текст версии и «Имя, дата в время» */
|
|
10
|
+
edits: EditTooltipEntry[];
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Строки тултипа для метки «изменено»:
|
|
14
|
+
* original — текст до первой правки;
|
|
15
|
+
* edits — для каждой правки: текст версии + «Имя, дата в время».
|
|
16
|
+
*/
|
|
17
|
+
export declare function getEditTooltipLines(edited?: MessageEditInfo | null): EditTooltipLines;
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
export * from './useMessageActions';
|
|
2
|
+
export * from './calculateMessageMenuPosition';
|
|
3
|
+
export * from './useMessageMenuActions';
|
|
2
4
|
export * from './useMessageLinks';
|
|
3
5
|
export * from './useChannelAccentColor';
|
|
4
6
|
export * from './useSubtextTooltip';
|
|
5
7
|
export * from './useStartReply';
|
|
8
|
+
export * from './useStartEdit';
|
|
6
9
|
export * from './buildReplyPayload';
|
|
10
|
+
export * from './buildEditPayload';
|
|
11
|
+
export * from './getEditTooltipLines';
|
|
12
|
+
export * from './getDeletedOriginalText';
|