@mobilon-dev/chotto 0.3.86 → 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.
Files changed (142) hide show
  1. package/dist/chotto.css +1 -1
  2. package/dist/components/1_atoms/ButtonContextMenu/ButtonContextMenu.vue2.js +15 -13
  3. package/dist/components/1_atoms/ContactContextMenu/ContactContextMenu.vue2.js +4 -2
  4. package/dist/components/1_atoms/ContextMenu/ContextMenu.vue.js +43 -39
  5. package/dist/components/1_atoms/EmojiGlyph/EmojiGlyph.vue.js +7 -5
  6. package/dist/components/1_atoms/LoadingIndicator/LoadingIndicator.vue.js +19 -18
  7. package/dist/components/1_atoms/Tooltip/Tooltip.vue.js +2 -2
  8. package/dist/components/1_atoms/Tooltip/Tooltip.vue2.js +83 -72
  9. package/dist/components/2_blocks/FeedSearch/FeedSearch.vue2.js +11 -10
  10. package/dist/components/2_chatinput_elements/ButtonCommandsSelector/ButtonCommandsSelector.vue2.js +4 -2
  11. package/dist/components/2_chatinput_elements/ButtonEmojiPicker/ButtonEmojiPicker.vue2.js +18 -16
  12. package/dist/components/2_chatinput_elements/ButtonTemplateSelector/ButtonTemplateSelector.vue2.js +16 -14
  13. package/dist/components/2_chatinput_elements/ButtonWabaTemplateSelector/ButtonWabaTemplateSelector.vue.js +4 -2
  14. package/dist/components/2_chatinput_elements/FilePreview/FilePreview.vue2.js +4 -2
  15. package/dist/components/2_chatinput_elements/FileUploader/FileUploader.vue2.js +4 -2
  16. package/dist/components/2_chatinput_elements/StickerPicker/StickerPicker.vue2.js +4 -2
  17. package/dist/components/2_chatinput_elements/TemplateSelector/TemplateSelector.vue.js +4 -2
  18. package/dist/components/2_chatinput_elements/TextFormatToolbar/TextFormatToolbar.vue2.js +4 -3
  19. package/dist/components/2_chatinput_elements/WABAAttachmentSection/WABAAttachmentSection.vue2.js +4 -2
  20. package/dist/components/2_chatlist_elements/ChatItem/ChatItem.vue2.js +3 -2
  21. package/dist/components/2_elements/AudioRecorder/AudioRecorder.vue2.js +4 -2
  22. package/dist/components/2_elements/ChannelSelector/ChannelSelector.vue.js +3 -2
  23. package/dist/components/2_elements/ThemeMode/ThemeMode.vue.js +7 -5
  24. package/dist/components/2_elements/VideoRecorder/VideoRecorder.vue2.js +4 -2
  25. package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue.js +1 -1
  26. package/dist/components/2_feed_elements/AudioMessage/AudioMessage.vue2.js +387 -340
  27. package/dist/components/2_feed_elements/BaseEditMessage/BaseEditMessage.vue.js +7 -0
  28. package/dist/components/2_feed_elements/BaseEditMessage/BaseEditMessage.vue2.js +34 -0
  29. package/dist/components/2_feed_elements/CallMessage/CallMessage.vue.js +2 -2
  30. package/dist/components/2_feed_elements/CallMessage/CallMessage.vue2.js +388 -352
  31. package/dist/components/2_feed_elements/DeletedMessageContent/DeletedMessageContent.vue.js +7 -0
  32. package/dist/components/2_feed_elements/DeletedMessageContent/DeletedMessageContent.vue2.js +63 -0
  33. package/dist/components/2_feed_elements/DeletedMessageContent/icons/DeletedMessageIcon.vue.js +21 -0
  34. package/dist/components/2_feed_elements/EditTextMessage/EditTextMessage.vue.js +7 -0
  35. package/dist/components/2_feed_elements/EditTextMessage/EditTextMessage.vue2.js +35 -0
  36. package/dist/components/2_feed_elements/FileMessage/FileMessage.vue.js +2 -2
  37. package/dist/components/2_feed_elements/FileMessage/FileMessage.vue2.js +204 -157
  38. package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue.js +3 -3
  39. package/dist/components/2_feed_elements/ImageMessage/ImageMessage.vue2.js +273 -226
  40. package/dist/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue2.js +9 -7
  41. package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue.js +2 -2
  42. package/dist/components/2_feed_elements/MessageReactions/MessageReactions.vue2.js +141 -117
  43. package/dist/components/2_feed_elements/MessageReactions/icons/DeleteIcon.vue.js +32 -0
  44. package/dist/components/2_feed_elements/MessageReactions/icons/EditIcon.vue.js +32 -0
  45. package/dist/components/2_feed_elements/MessageReactions/icons/MessageActionsIcon.vue.js +21 -0
  46. package/dist/components/2_feed_elements/MissedCallMessage/MissedCallMessage.vue.js +4 -4
  47. package/dist/components/2_feed_elements/MissedCallMessage/MissedCallMessage.vue2.js +102 -66
  48. package/dist/components/2_feed_elements/ReplyAudioMessage/ReplyAudioMessage.vue2.js +11 -9
  49. package/dist/components/2_feed_elements/ReplyFileMessage/ReplyFileMessage.vue2.js +14 -12
  50. package/dist/components/2_feed_elements/ReplyImageMessage/ReplyImageMessage.vue2.js +11 -9
  51. package/dist/components/2_feed_elements/ReplyStickerMessage/ReplyStickerMessage.vue2.js +13 -11
  52. package/dist/components/2_feed_elements/ReplyTextMessage/ReplyTextMessage.vue2.js +11 -9
  53. package/dist/components/2_feed_elements/ReplyVideoMessage/ReplyVideoMessage.vue2.js +4 -2
  54. package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue.js +2 -2
  55. package/dist/components/2_feed_elements/StickerMessage/StickerMessage.vue2.js +255 -210
  56. package/dist/components/2_feed_elements/TextMessage/TextMessage.vue.js +1 -1
  57. package/dist/components/2_feed_elements/TextMessage/TextMessage.vue2.js +241 -140
  58. package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue.js +3 -3
  59. package/dist/components/2_feed_elements/VideoMessage/VideoMessage.vue2.js +245 -200
  60. package/dist/components/2_modals/ConfirmDeleteMessage/ConfirmDeleteMessage.vue.js +7 -0
  61. package/dist/components/2_modals/ConfirmDeleteMessage/ConfirmDeleteMessage.vue3.js +58 -0
  62. package/dist/components/3_compounds/ChatInput/ChatInput.vue.js +2 -2
  63. package/dist/components/3_compounds/ChatInput/ChatInput.vue2.js +5 -4
  64. package/dist/components/3_compounds/ChatList/ChatListHeader.vue.js +8 -8
  65. package/dist/components/3_compounds/ChatList/icons/LogoIcon.vue.js +12 -13
  66. package/dist/components/3_compounds/Feed/Feed.vue.js +2 -2
  67. package/dist/components/3_compounds/Feed/Feed.vue2.js +187 -163
  68. package/dist/components/3_compounds/Feed/composables/useFeedComponents.js +41 -26
  69. package/dist/components/3_compounds/Feed/composables/useFeedReply.js +16 -11
  70. package/dist/components/3_compounds/Feed/utils/getDefaultMessageMenuActions.js +31 -0
  71. package/dist/hooks/messages/buildEditPayload.js +10 -0
  72. package/dist/hooks/messages/calculateMessageMenuPosition.js +70 -0
  73. package/dist/hooks/messages/getDeletedOriginalText.js +26 -0
  74. package/dist/hooks/messages/getEditTooltipLines.js +28 -0
  75. package/dist/hooks/messages/useMessageActions.js +94 -19
  76. package/dist/hooks/messages/useMessageMenuActions.js +18 -0
  77. package/dist/hooks/messages/useStartEdit.js +30 -0
  78. package/dist/hooks/messages/useStartReply.js +16 -14
  79. package/dist/hooks/modals/useConfirmDeleteMessage.js +24 -0
  80. package/dist/hooks/useMessageDraft.js +46 -66
  81. package/dist/hooks/validators/messages/messageValidator.js +29 -35
  82. package/dist/index.js +220 -194
  83. package/dist/locale/en.js +6 -1
  84. package/dist/locale/ru.js +6 -1
  85. package/dist/themes/dark.css +1 -1
  86. package/dist/themes/default.css +1 -1
  87. package/dist/themes/glass.css +1 -1
  88. package/dist/themes/green.css +1 -1
  89. package/dist/themes/mobilon1.css +1 -1
  90. package/dist/types/apps/data/messages.d.ts +0 -321
  91. package/dist/types/components/1_atoms/ContextMenu/ContextMenu.vue.d.ts +0 -2
  92. package/dist/types/components/1_atoms/ContextMenu/stories/ContextMenu.stories.d.ts +1 -0
  93. package/dist/types/components/1_atoms/ContextMenu/styles/types.d.ts +18 -0
  94. package/dist/types/components/1_atoms/LoadingIndicator/styles/types.d.ts +0 -2
  95. package/dist/types/components/1_atoms/Tooltip/Tooltip.vue.d.ts +12 -1
  96. package/dist/types/components/2_feed_elements/BaseEditMessage/BaseEditMessage.vue.d.ts +23 -0
  97. package/dist/types/components/2_feed_elements/BaseEditMessage/stories/BaseEditMessage.stories.d.ts +6 -0
  98. package/dist/types/components/2_feed_elements/DeletedMessageContent/DeletedMessageContent.vue.d.ts +31 -0
  99. package/dist/types/components/2_feed_elements/DeletedMessageContent/icons/DeletedMessageIcon.vue.d.ts +2 -0
  100. package/dist/types/components/2_feed_elements/DeletedMessageContent/styles/types.d.ts +35 -0
  101. package/dist/types/components/2_feed_elements/EditTextMessage/EditTextMessage.vue.d.ts +13 -0
  102. package/dist/types/components/2_feed_elements/EditTextMessage/stories/EditTextMessage.stories.d.ts +7 -0
  103. package/dist/types/components/2_feed_elements/FeedKeyboard/FeedKeyboard.vue.d.ts +1 -1
  104. package/dist/types/components/2_feed_elements/MessageKeyboard/MessageKeyboard.vue.d.ts +1 -1
  105. package/dist/types/components/2_feed_elements/MessageReactions/MessageReactions.vue.d.ts +35 -0
  106. package/dist/types/components/2_feed_elements/MessageReactions/icons/DeleteIcon.vue.d.ts +2 -0
  107. package/dist/types/components/2_feed_elements/MessageReactions/icons/EditIcon.vue.d.ts +2 -0
  108. package/dist/types/components/2_feed_elements/MessageReactions/icons/MessageActionsIcon.vue.d.ts +2 -0
  109. package/dist/types/components/2_feed_elements/TextMessage/TextMessage.vue.d.ts +11 -3
  110. package/dist/types/components/2_feed_elements/TextMessage/stories/TextMessage.stories.d.ts +1 -0
  111. package/dist/types/components/2_feed_elements/TextMessage/styles/types.d.ts +22 -0
  112. package/dist/types/components/2_feed_elements/VideoMessage/stories/VideoMessage.stories.d.ts +2 -2
  113. package/dist/types/components/2_feed_elements/types/components.d.ts +1 -2
  114. package/dist/types/components/2_feed_elements/types/messages.d.ts +116 -9
  115. package/dist/types/components/2_modals/ConfirmDeleteMessage/ConfirmDeleteMessage.vue.d.ts +22 -0
  116. package/dist/types/components/2_modals/ConfirmDeleteMessage/stories/ConfirmDeleteMessage.stories.d.ts +37 -0
  117. package/dist/types/components/2_modals/ConfirmDeleteMessage/styles/types.d.ts +97 -0
  118. package/dist/types/components/3_compounds/ChatInput/types/IInputMessage.d.ts +2 -1
  119. package/dist/types/components/3_compounds/ChatList/styles/types.d.ts +2 -2
  120. package/dist/types/components/3_compounds/Feed/Feed.vue.d.ts +20 -3
  121. package/dist/types/components/3_compounds/Feed/composables/useFeedComponents.d.ts +6 -2
  122. package/dist/types/components/3_compounds/Feed/composables/useFeedGrouping.d.ts +0 -1
  123. package/dist/types/components/3_compounds/Feed/composables/useFeedReply.d.ts +7 -1
  124. package/dist/types/components/3_compounds/Feed/utils/getDefaultMessageMenuActions.d.ts +3 -0
  125. package/dist/types/components/3_compounds/SideBar/SideBar.vue.d.ts +2 -2
  126. package/dist/types/components/index.d.ts +4 -0
  127. package/dist/types/hooks/messages/buildEditPayload.d.ts +7 -0
  128. package/dist/types/hooks/messages/calculateMessageMenuPosition.d.ts +16 -0
  129. package/dist/types/hooks/messages/getDeletedOriginalText.d.ts +28 -0
  130. package/dist/types/hooks/messages/getEditTooltipLines.d.ts +17 -0
  131. package/dist/types/hooks/messages/index.d.ts +6 -0
  132. package/dist/types/hooks/messages/useMessageActions.d.ts +33 -39
  133. package/dist/types/hooks/messages/useMessageMenuActions.d.ts +10 -0
  134. package/dist/types/hooks/messages/useStartEdit.d.ts +6 -0
  135. package/dist/types/hooks/modals/index.d.ts +1 -0
  136. package/dist/types/hooks/modals/useConfirmDeleteMessage.d.ts +2 -0
  137. package/dist/types/hooks/useMessageDraft.d.ts +10 -1
  138. package/dist/types/hooks/validators/messages/types.d.ts +0 -6
  139. package/dist/types/locale/en.d.ts +5 -0
  140. package/dist/types/locale/ru.d.ts +5 -0
  141. package/dist/types/main.d.ts +1 -0
  142. package/package.json +1 -1
@@ -2,11 +2,9 @@ declare const _default: import("vue").DefineComponent<{}, {
2
2
  $emit: (event: "click" | "mouseenter" | "mouseleave", ...args: any[]) => void;
3
3
  actions: unknown[];
4
4
  id: string;
5
- dataTheme: string;
6
5
  $props: {
7
6
  readonly actions?: unknown[] | undefined;
8
7
  readonly id?: string | undefined;
9
- readonly dataTheme?: string | undefined;
10
8
  };
11
9
  }, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
12
10
  export default _default;
@@ -6,3 +6,4 @@ type Story = StoryObj<typeof ContextMenu>;
6
6
  export declare const Standard: Story;
7
7
  export declare const WithIcons: Story;
8
8
  export declare const FileDropDownMenu: Story;
9
+ export declare const WithSeparatorAndDanger: Story;
@@ -54,6 +54,10 @@ export interface ContextMenuThemeCSSVariables {
54
54
  '--chotto-contextmenu-item-width': string;
55
55
  /** Промежуток между элементами внутри элемента контекстного меню */
56
56
  '--chotto-contextmenu-item-gap': string;
57
+ /** Box-sizing элемента контекстного меню */
58
+ '--chotto-contextmenu-item-box-sizing': string;
59
+ /** Высота элемента контекстного меню */
60
+ '--chotto-contextmenu-item-height': string;
57
61
  /** Отступ справа иконки элемента контекстного меню */
58
62
  '--chotto-contextmenu-item-icon-margin-right': string;
59
63
  /** Коэффициент сжатия иконки элемента контекстного меню */
@@ -66,4 +70,18 @@ export interface ContextMenuThemeCSSVariables {
66
70
  '--chotto-contextmenu-item-disabled-opacity': string;
67
71
  /** Курсор отключенного элемента контекстного меню */
68
72
  '--chotto-contextmenu-item-disabled-cursor': string;
73
+ /** Отображение разделителя контекстного меню */
74
+ '--chotto-contextmenu-separator-display': string;
75
+ /** Высота разделителя контекстного меню */
76
+ '--chotto-contextmenu-separator-height': string;
77
+ /** Ширина разделителя контекстного меню */
78
+ '--chotto-contextmenu-separator-width': string;
79
+ /** Отступы разделителя контекстного меню */
80
+ '--chotto-contextmenu-separator-margin': string;
81
+ /** Внутренние отступы разделителя контекстного меню */
82
+ '--chotto-contextmenu-separator-padding': string;
83
+ /** Цвет фона разделителя контекстного меню */
84
+ '--chotto-contextmenu-separator-background-color': string;
85
+ /** Выравнивание разделителя по главной оси (grid) */
86
+ '--chotto-contextmenu-separator-justify-self': string;
69
87
  }
@@ -26,8 +26,6 @@ export interface LoadingIndicatorThemeCSSVariables {
26
26
  '--chotto-loadingindicator-small-bottom': string;
27
27
  /** Высота индикатора */
28
28
  '--chotto-loadingindicator-small-height': string;
29
- /** Цвет обводки точек */
30
- '--chotto-loadingindicator-dot-stroke': string;
31
29
  /** Толщина обводки точек */
32
30
  '--chotto-loadingindicator-dot-stroke-width': string;
33
31
  /** Заливка точек */
@@ -1,6 +1,8 @@
1
- declare var __VLS_1: {};
1
+ declare var __VLS_1: {}, __VLS_11: {};
2
2
  type __VLS_Slots = {} & {
3
3
  default?: (props: typeof __VLS_1) => any;
4
+ } & {
5
+ content?: (props: typeof __VLS_11) => any;
4
6
  };
5
7
  declare const __VLS_component: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
6
8
  text: {
@@ -41,6 +43,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
41
43
  type: StringConstructor;
42
44
  default: string;
43
45
  };
46
+ bubbleStyle: {
47
+ type: () => Record<string, string>;
48
+ default: () => {};
49
+ };
44
50
  }>, {
45
51
  startAutoShow: () => void;
46
52
  clearAutoTimer: () => void;
@@ -84,6 +90,10 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
84
90
  type: StringConstructor;
85
91
  default: string;
86
92
  };
93
+ bubbleStyle: {
94
+ type: () => Record<string, string>;
95
+ default: () => {};
96
+ };
87
97
  }>> & Readonly<{}>, {
88
98
  text: string;
89
99
  position: string;
@@ -94,6 +104,7 @@ declare const __VLS_component: import("vue").DefineComponent<import("vue").Extra
94
104
  delay: number;
95
105
  hideOnClick: boolean;
96
106
  maxWidth: string;
107
+ bubbleStyle: Record<string, string>;
97
108
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
98
109
  declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>;
99
110
  export default _default;
@@ -0,0 +1,23 @@
1
+ import { Edit } from '@/types';
2
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
+ message: {
4
+ type: () => Edit;
5
+ default: () => Edit;
6
+ };
7
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
8
+ action: (...args: any[]) => void;
9
+ edit: (...args: any[]) => void;
10
+ reset: (...args: any[]) => void;
11
+ }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
12
+ message: {
13
+ type: () => Edit;
14
+ default: () => Edit;
15
+ };
16
+ }>> & Readonly<{
17
+ onAction?: ((...args: any[]) => any) | undefined;
18
+ onEdit?: ((...args: any[]) => any) | undefined;
19
+ onReset?: ((...args: any[]) => any) | undefined;
20
+ }>, {
21
+ message: Edit;
22
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
23
+ export default _default;
@@ -0,0 +1,6 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import BaseEditMessage from '../BaseEditMessage.vue';
3
+ declare const meta: Meta<typeof BaseEditMessage>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof BaseEditMessage>;
6
+ export declare const ChatInputEditMessage: Story;
@@ -0,0 +1,31 @@
1
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
2
+ /** Оригинальный текст удалённого сообщения */
3
+ originalText: {
4
+ type: StringConstructor;
5
+ required: false;
6
+ default: string;
7
+ };
8
+ /** Строка мета: «Имя, дата в время» */
9
+ meta: {
10
+ type: StringConstructor;
11
+ required: false;
12
+ default: string;
13
+ };
14
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
15
+ /** Оригинальный текст удалённого сообщения */
16
+ originalText: {
17
+ type: StringConstructor;
18
+ required: false;
19
+ default: string;
20
+ };
21
+ /** Строка мета: «Имя, дата в время» */
22
+ meta: {
23
+ type: StringConstructor;
24
+ required: false;
25
+ default: string;
26
+ };
27
+ }>> & Readonly<{}>, {
28
+ meta: string;
29
+ originalText: string;
30
+ }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
31
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * CSS переменные для компонента DeletedMessageContent
3
+ */
4
+ export interface DeletedMessageContentThemeCSSVariables {
5
+ /** Отображение контейнера */
6
+ '--chotto-deletedmessagecontent-display': string;
7
+ /** Выравнивание элементов */
8
+ '--chotto-deletedmessagecontent-align-items': string;
9
+ /** Отступ между иконкой и текстом */
10
+ '--chotto-deletedmessagecontent-gap': string;
11
+ /** Семейство шрифтов */
12
+ '--chotto-deletedmessagecontent-font-family': string;
13
+ /** Размер иконки */
14
+ '--chotto-deletedmessagecontent-icon-size': string;
15
+ /** Цвет текста (серый) */
16
+ '--chotto-deletedmessagecontent-text-color': string;
17
+ /** Размер шрифта текста */
18
+ '--chotto-deletedmessagecontent-text-font-size': string;
19
+ /** Жирность шрифта текста */
20
+ '--chotto-deletedmessagecontent-text-font-weight': string;
21
+ /** Высота строки текста */
22
+ '--chotto-deletedmessagecontent-text-line-height': string;
23
+ /** Курсор на заглушке */
24
+ '--chotto-deletedmessagecontent-cursor': string;
25
+ /** Отображение тултипа */
26
+ '--chotto-deletedmessagecontent-tooltip-display': string;
27
+ /** Направление flex тултипа */
28
+ '--chotto-deletedmessagecontent-tooltip-flex-direction': string;
29
+ /** Отступ между строками тултипа */
30
+ '--chotto-deletedmessagecontent-tooltip-row-gap': string;
31
+ /** Цвет оригинального текста в тултипе */
32
+ '--chotto-deletedmessagecontent-tooltip-original-color': string;
33
+ /** Цвет мета-строки в тултипе */
34
+ '--chotto-deletedmessagecontent-tooltip-meta-color': string;
35
+ }
@@ -0,0 +1,13 @@
1
+ import { Edit } from '@/types';
2
+ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
+ message: {
4
+ type: () => Edit;
5
+ required: true;
6
+ };
7
+ }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
8
+ message: {
9
+ type: () => Edit;
10
+ required: true;
11
+ };
12
+ }>> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
13
+ export default _default;
@@ -0,0 +1,7 @@
1
+ import type { Meta, StoryObj } from '@storybook/vue3-vite';
2
+ import EditTextMessage from '../EditTextMessage.vue';
3
+ declare const meta: Meta<typeof EditTextMessage>;
4
+ export default meta;
5
+ type Story = StoryObj<typeof EditTextMessage>;
6
+ export declare const Default: Story;
7
+ export declare const LongText: Story;
@@ -27,6 +27,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
27
27
  onAction?: ((...args: any[]) => any) | undefined;
28
28
  }>, {
29
29
  buttons: IFeedKeyboard[];
30
- align: "left" | "right" | "center";
30
+ align: "center" | "left" | "right";
31
31
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
32
32
  export default _default;
@@ -52,6 +52,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
52
52
  }>> & Readonly<{
53
53
  onAction?: ((...args: any[]) => any) | undefined;
54
54
  }>, {
55
- align: "left" | "right" | "center";
55
+ align: "center" | "left" | "right";
56
56
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
57
57
  export default _default;
@@ -47,7 +47,24 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
47
47
  type: BooleanConstructor;
48
48
  default: boolean;
49
49
  };
50
+ /** Показывать кнопку меню действий сообщения в панели быстрых реакций */
51
+ menuEnabled: {
52
+ type: BooleanConstructor;
53
+ default: boolean;
54
+ };
50
55
  }>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {} & {
56
+ menu: (payload: {
57
+ messageId: string | number;
58
+ triggerRect?: {
59
+ top: number;
60
+ right: number;
61
+ bottom: number;
62
+ left: number;
63
+ width: number;
64
+ height: number;
65
+ };
66
+ event?: MouseEvent;
67
+ }) => any;
51
68
  "toggle-reaction": (payload: {
52
69
  messageId: string | number;
53
70
  key: string;
@@ -106,7 +123,24 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
106
123
  type: BooleanConstructor;
107
124
  default: boolean;
108
125
  };
126
+ /** Показывать кнопку меню действий сообщения в панели быстрых реакций */
127
+ menuEnabled: {
128
+ type: BooleanConstructor;
129
+ default: boolean;
130
+ };
109
131
  }>> & Readonly<{
132
+ onMenu?: ((payload: {
133
+ messageId: string | number;
134
+ triggerRect?: {
135
+ top: number;
136
+ right: number;
137
+ bottom: number;
138
+ left: number;
139
+ width: number;
140
+ height: number;
141
+ };
142
+ event?: MouseEvent;
143
+ }) => any) | undefined;
110
144
  "onToggle-reaction"?: ((payload: {
111
145
  messageId: string | number;
112
146
  key: string;
@@ -129,5 +163,6 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
129
163
  currentUserName: string;
130
164
  reactionUserNames: Record<string, string>;
131
165
  replyEnabled: boolean;
166
+ menuEnabled: boolean;
132
167
  }, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
133
168
  export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -0,0 +1,2 @@
1
+ declare const _default: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
+ export default _default;
@@ -1,7 +1,11 @@
1
- import { ITextMessage } from '@/types';
1
+ import { ITextMessage, MessageDeleteInfo } from '@/types';
2
2
  declare const _default: import("vue").DefineComponent<import("vue").ExtractPropTypes<{
3
3
  message: {
4
- type: () => ITextMessage;
4
+ type: () => ITextMessage & {
5
+ filename?: string;
6
+ alt?: string;
7
+ deletion?: MessageDeleteInfo;
8
+ };
5
9
  required: true;
6
10
  };
7
11
  applyStyle: {
@@ -45,7 +49,11 @@ declare const _default: import("vue").DefineComponent<import("vue").ExtractPropT
45
49
  "sms-invite": (...args: any[]) => void;
46
50
  }, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<{
47
51
  message: {
48
- type: () => ITextMessage;
52
+ type: () => ITextMessage & {
53
+ filename?: string;
54
+ alt?: string;
55
+ deletion?: MessageDeleteInfo;
56
+ };
49
57
  required: true;
50
58
  };
51
59
  applyStyle: {
@@ -8,6 +8,7 @@ export declare const LeftMessages: Story;
8
8
  export declare const RightMessages: Story;
9
9
  export declare const LeftMessageMax: Story;
10
10
  export declare const RightMessageMax: Story;
11
+ export declare const MessagesWithEdit: Story;
11
12
  export declare const MessagesWithLinks: Story;
12
13
  export declare const MessagesWithReply: Story;
13
14
  export declare const MessagesWithPreviewAndEmbed: Story;
@@ -96,6 +96,28 @@ export interface TextMessageThemeCSSVariables {
96
96
  '--chotto-textmessage-views-p-font-size': string;
97
97
  /** Цвет текста просмотров */
98
98
  '--chotto-textmessage-views-p-color': string;
99
+ /** Размер шрифта метки «изменено» */
100
+ '--chotto-textmessage-edited-font-size': string;
101
+ /** Цвет метки «изменено» */
102
+ '--chotto-textmessage-edited-color': string;
103
+ /** Стиль шрифта метки «изменено» */
104
+ '--chotto-textmessage-edited-font-style': string;
105
+ /** Курсор метки «изменено» */
106
+ '--chotto-textmessage-edited-cursor': string;
107
+ /** Перенос строк метки «изменено» */
108
+ '--chotto-textmessage-edited-white-space': string;
109
+ /** Отображение контейнера тултипа правки */
110
+ '--chotto-textmessage-edit-tooltip-display': string;
111
+ /** Направление flex контейнера тултипа правки */
112
+ '--chotto-textmessage-edit-tooltip-flex-direction': string;
113
+ /** Промежуток между строками тултипа правки */
114
+ '--chotto-textmessage-edit-tooltip-row-gap': string;
115
+ /** Рамка тултипа правки */
116
+ '--chotto-textmessage-edit-tooltip-border': string;
117
+ /** Цвет оригинального текста в тултипе правки */
118
+ '--chotto-textmessage-edit-tooltip-original-color': string;
119
+ /** Цвет мета-строки (автор, дата) в тултипе правки */
120
+ '--chotto-textmessage-edit-tooltip-meta-color': string;
99
121
  /** Размер шрифта времени */
100
122
  '--chotto-textmessage-time-font-size': string;
101
123
  /** Цвет времени */
@@ -12,8 +12,8 @@ export declare const LeftMessageWithAvatarAndSubtext: Story;
12
12
  export declare const RightMessageWithAvatarAndSubtext: Story;
13
13
  export declare const LeftMessageWithMarkdownText: Story;
14
14
  export declare const RightMessageWithMarkdownText: Story;
15
- export declare const LeftMessageWithTextAndActions: Story;
16
- export declare const RightMessageWithTextAndActions: Story;
15
+ export declare const LeftMessageWithText: Story;
16
+ export declare const RightMessageWithText: Story;
17
17
  export declare const RightMessageWithStatusSent: Story;
18
18
  export declare const RightMessageWithStatusReceived: Story;
19
19
  export declare const RightMessageWithStatusRead: Story;
@@ -1,4 +1,4 @@
1
- import { IAudioMessage, ICallMessage, IDateMessage, IFileMessage, IImageMessage, IKeyBoard, ILinkPreview, ISystemMessage, ITextMessage, ITypingMessage, IVideoMessage, Reply, IAction } from "@/types";
1
+ import { IAudioMessage, ICallMessage, IDateMessage, IFileMessage, IImageMessage, IKeyBoard, ILinkPreview, ISystemMessage, ITextMessage, ITypingMessage, IVideoMessage, Reply } from "@/types";
2
2
  export interface IFeedObject {
3
3
  messageId: string;
4
4
  type: string;
@@ -12,7 +12,6 @@ export interface IFeedObject {
12
12
  filename?: string;
13
13
  avatar?: string;
14
14
  subtext?: string;
15
- actions?: IAction[];
16
15
  views?: number;
17
16
  callDuration?: string;
18
17
  isMissedCall?: boolean;
@@ -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
  }