@progress/kendo-angular-conversational-ui 20.1.2-develop.1 → 21.0.0-develop.10

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 (103) hide show
  1. package/chat/api/files-layout.d.ts +12 -0
  2. package/chat/api/index.d.ts +3 -1
  3. package/chat/api/message-settings.interface.d.ts +33 -0
  4. package/chat/api/message.interface.d.ts +5 -1
  5. package/chat/api/suggestions-layout.d.ts +20 -0
  6. package/chat/chat.component.d.ts +92 -34
  7. package/chat/chat.directives.d.ts +18 -0
  8. package/chat/chat.module.d.ts +15 -8
  9. package/chat/common/chat.service.d.ts +32 -3
  10. package/chat/common/models/model-fields.d.ts +0 -6
  11. package/chat/common/scroll-button.component.d.ts +32 -0
  12. package/chat/common/scroll.service.d.ts +39 -0
  13. package/chat/common/utils.d.ts +13 -1
  14. package/chat/l10n/messages.d.ts +9 -1
  15. package/chat/message-list.component.d.ts +20 -3
  16. package/chat/message.component.d.ts +40 -16
  17. package/chat/suggested-actions.component.d.ts +30 -5
  18. package/chat/templates/author-message-content-template.directive.d.ts +28 -0
  19. package/chat/templates/author-message-template.directive.d.ts +28 -0
  20. package/chat/templates/message-content-template.directive.d.ts +28 -0
  21. package/chat/templates/message-template.directive.d.ts +1 -1
  22. package/chat/templates/no-data-template.directive.d.ts +27 -0
  23. package/chat/templates/receiver-message-content-template.directive.d.ts +28 -0
  24. package/chat/templates/receiver-message-template.directive.d.ts +28 -0
  25. package/chat/templates/user-status-template.directive.d.ts +27 -0
  26. package/codemods/template-transformer/index.js +1 -2
  27. package/codemods/utils.js +2 -2
  28. package/codemods/v20/chat-user.js +1 -1
  29. package/conversational-ui.module.d.ts +18 -11
  30. package/directives.d.ts +9 -2
  31. package/esm2022/ai-prompt/aiprompt.component.mjs +13 -11
  32. package/esm2022/ai-prompt/aiprompt.module.mjs +4 -4
  33. package/esm2022/ai-prompt/common/aiprompt.service.mjs +3 -3
  34. package/esm2022/ai-prompt/common/output-card.component.mjs +4 -4
  35. package/esm2022/ai-prompt/common/toolbar-focusable.directive.mjs +4 -4
  36. package/esm2022/ai-prompt/common/toolbar-navigation.service.mjs +4 -4
  37. package/esm2022/ai-prompt/localization/custom-messages.component.mjs +4 -4
  38. package/esm2022/ai-prompt/localization/localized-messages.directive.mjs +4 -4
  39. package/esm2022/ai-prompt/localization/messages.mjs +3 -3
  40. package/esm2022/ai-prompt/templates/aiprompt-output-body-template.directive.mjs +4 -4
  41. package/esm2022/ai-prompt/templates/aiprompt-output-template.directive.mjs +4 -4
  42. package/esm2022/ai-prompt/templates/toolbar-actions.template.mjs +5 -5
  43. package/esm2022/ai-prompt/views/base-view.mjs +5 -5
  44. package/esm2022/ai-prompt/views/command-view.component.mjs +4 -4
  45. package/esm2022/ai-prompt/views/custom-view.component.mjs +4 -4
  46. package/esm2022/ai-prompt/views/output-view.component.mjs +4 -4
  47. package/esm2022/ai-prompt/views/prompt-view.component.mjs +4 -4
  48. package/esm2022/chat/api/index.mjs +3 -1
  49. package/{chat/api/message-toolbar-visibility.d.ts → esm2022/chat/api/message-settings.interface.mjs} +1 -4
  50. package/esm2022/chat/api/suggestions-layout.mjs +5 -0
  51. package/esm2022/chat/attachment.component.mjs +3 -3
  52. package/esm2022/chat/builtin-actions.mjs +2 -0
  53. package/esm2022/chat/cards/hero-card.component.mjs +3 -3
  54. package/esm2022/chat/chat-file.component.mjs +6 -6
  55. package/esm2022/chat/chat.component.mjs +268 -74
  56. package/esm2022/chat/chat.directives.mjs +18 -0
  57. package/esm2022/chat/chat.module.mjs +18 -11
  58. package/esm2022/chat/common/chat.service.mjs +86 -7
  59. package/esm2022/chat/common/models/default-model-fields.mjs +0 -1
  60. package/esm2022/chat/common/scroll-anchor.directive.mjs +4 -4
  61. package/esm2022/chat/common/scroll-button.component.mjs +81 -0
  62. package/esm2022/chat/common/scroll.service.mjs +110 -0
  63. package/esm2022/chat/common/utils.mjs +22 -3
  64. package/esm2022/chat/l10n/custom-messages.component.mjs +4 -4
  65. package/esm2022/chat/l10n/localized-messages.directive.mjs +4 -4
  66. package/esm2022/chat/l10n/messages.mjs +15 -3
  67. package/esm2022/chat/message-attachments.component.mjs +6 -6
  68. package/esm2022/chat/message-box.component.mjs +12 -7
  69. package/esm2022/chat/message-list.component.mjs +168 -22
  70. package/esm2022/chat/message-reference-content.component.mjs +4 -4
  71. package/esm2022/chat/message.component.mjs +491 -328
  72. package/esm2022/chat/suggested-actions.component.mjs +299 -81
  73. package/esm2022/chat/templates/attachment-template.directive.mjs +5 -5
  74. package/esm2022/chat/templates/author-message-content-template.directive.mjs +39 -0
  75. package/esm2022/chat/templates/author-message-template.directive.mjs +39 -0
  76. package/esm2022/chat/templates/header-template.directive.mjs +4 -4
  77. package/esm2022/chat/templates/message-box.directive.mjs +4 -4
  78. package/esm2022/chat/templates/message-content-template.directive.mjs +39 -0
  79. package/esm2022/chat/templates/message-template.directive.mjs +6 -6
  80. package/esm2022/chat/templates/no-data-template.directive.mjs +38 -0
  81. package/esm2022/chat/templates/receiver-message-content-template.directive.mjs +39 -0
  82. package/esm2022/chat/templates/receiver-message-template.directive.mjs +39 -0
  83. package/esm2022/chat/templates/status-template.directive.mjs +4 -4
  84. package/esm2022/chat/templates/suggestion-template.directive.mjs +4 -4
  85. package/esm2022/chat/templates/timestamp-template.directive.mjs +5 -5
  86. package/esm2022/chat/templates/user-status-template.directive.mjs +38 -0
  87. package/esm2022/conversational-ui.module.mjs +21 -14
  88. package/esm2022/directives.mjs +15 -1
  89. package/esm2022/index.mjs +7 -0
  90. package/esm2022/inline-ai-prompt/inlineaiprompt-content.component.mjs +5 -5
  91. package/esm2022/inline-ai-prompt/inlineaiprompt.component.mjs +4 -4
  92. package/esm2022/inline-ai-prompt/inlineaiprompt.module.mjs +4 -4
  93. package/esm2022/inline-ai-prompt/inlineaiprompt.service.mjs +4 -4
  94. package/esm2022/inline-ai-prompt/localization/custom-messages.component.mjs +4 -4
  95. package/esm2022/inline-ai-prompt/localization/localized-messages.directive.mjs +4 -4
  96. package/esm2022/inline-ai-prompt/localization/messages.mjs +3 -3
  97. package/esm2022/inline-ai-prompt/output-template.directive.mjs +5 -5
  98. package/esm2022/package-metadata.mjs +2 -2
  99. package/fesm2022/progress-kendo-angular-conversational-ui.mjs +1969 -739
  100. package/index.d.ts +7 -0
  101. package/package.json +18 -18
  102. package/schematics/ngAdd/index.js +1 -1
  103. /package/esm2022/chat/api/{message-toolbar-visibility.mjs → files-layout.mjs} +0 -0
@@ -0,0 +1,12 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * The layout of the files in the message bubble.
7
+ *
8
+ * 'horizontal' - Files are laid out in a row and are horizontally scrollable.
9
+ * 'vertical' - Files are displayed in a vertical stack.
10
+ * 'wrap' - Files wrap to new lines when space is limited.
11
+ */
12
+ export type FilesLayoutMode = 'horizontal' | 'vertical' | 'wrap';
@@ -8,11 +8,13 @@ export * from './chat-file-interface';
8
8
  export * from './chat-suggestion.interface';
9
9
  export * from './execute-action-event';
10
10
  export * from './message-action';
11
- export * from './message-toolbar-visibility';
12
11
  export * from './message-width-mode';
13
12
  export * from './message.interface';
13
+ export * from './message-settings.interface';
14
14
  export * from './post-message-event';
15
15
  export * from './user.interface';
16
16
  export * from './file-action';
17
17
  export * from './file-download-event.interface';
18
18
  export * from './send-button-settings';
19
+ export * from './files-layout';
20
+ export * from './suggestions-layout';
@@ -0,0 +1,33 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { FileAction } from "./file-action";
6
+ import { MessageAction } from "./message-action";
7
+ import { MessageWidthMode } from "./message-width-mode";
8
+ /**
9
+ * Represents the settings for the Chat message ([see example](slug:databinding_chat)).
10
+ *
11
+ */
12
+ export interface MessageSettings {
13
+ /**
14
+ * If set to `true`, enables the expanding/collapsing of long messages.
15
+ */
16
+ allowMessageCollapse?: boolean;
17
+ /**
18
+ * Sets the array of actions that will be displayed in the message toolbar.
19
+ */
20
+ messageToolbarActions?: MessageAction[];
21
+ /**
22
+ * Sets the array of actions that will be displayed in the message context menu.
23
+ */
24
+ messageContextMenuActions?: MessageAction[];
25
+ /**
26
+ * Sets the array of actions that will be displayed for the message files.
27
+ */
28
+ fileActions?: FileAction[];
29
+ /**
30
+ * Sets the mode that will be used to determine the message width.
31
+ */
32
+ messageWidthMode?: MessageWidthMode;
33
+ }
@@ -14,7 +14,7 @@ export interface Message {
14
14
  /**
15
15
  * Sets a unique ID for the message.
16
16
  */
17
- id?: string | number;
17
+ id: string | number;
18
18
  /**
19
19
  * Sets the text content for the message. Some messages may contain only attachments or quick actions.
20
20
  */
@@ -65,4 +65,8 @@ export interface Message {
65
65
  * Indicates if the message is still being typed by the user. If `true`, the Chat shows a typing indicator.
66
66
  */
67
67
  typing?: boolean;
68
+ /**
69
+ * Provides a reference to the original data item, if any.
70
+ */
71
+ dataItem?: any;
68
72
  }
@@ -0,0 +1,20 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * Defines the layout for the suggestions list.
7
+ *
8
+ * 'scroll' - The list is scrollable when the content overflows.
9
+ * 'wrap' - The list wraps to new lines when space is limited.
10
+ * 'scrollbuttons' - The list is scrollable with navigation buttons when the content overflows.
11
+ */
12
+ export type SuggestionsLayoutMode = 'scroll' | 'wrap' | 'scrollbuttons';
13
+ /**
14
+ * Defines the layout for the quick actions list.
15
+ *
16
+ * 'scroll' - The list is scrollable when the content overflows.
17
+ * 'wrap' - The list wraps to new lines when space is limited.
18
+ * 'scrollbuttons' - The list is scrollable with navigation buttons when the content overflows.
19
+ */
20
+ export type QuickActionsLayoutMode = 'scroll' | 'wrap' | 'scrollbuttons';
@@ -5,8 +5,7 @@
5
5
  import { AfterViewInit, ElementRef, EventEmitter, OnDestroy, NgZone, Renderer2, SimpleChanges, OnInit, ViewContainerRef } from '@angular/core';
6
6
  import { AttachmentTemplateDirective } from './templates/attachment-template.directive';
7
7
  import { LocalizationService } from '@progress/kendo-angular-l10n';
8
- import { MessageTemplateDirective } from './templates/message-template.directive';
9
- import { ExecuteActionEvent, FileAction, Message, SendMessageEvent, FileActionEvent, FileDownloadEvent, SendButtonSettings, MessageToolbarVisibility } from './api';
8
+ import { ExecuteActionEvent, FileAction, Message, SendMessageEvent, FileActionEvent, FileDownloadEvent, SendButtonSettings, FilesLayoutMode, MessageSettings } from './api';
10
9
  import { MessageBoxType } from './common/models/message-box-options';
11
10
  import { ChatMessageBoxTemplateDirective } from './templates/message-box.directive';
12
11
  import { MessageBoxComponent } from './message-box.component';
@@ -22,6 +21,10 @@ import { ConversationalUIModelFields } from './common/models/model-fields';
22
21
  import { ChatTimestampTemplateDirective } from './templates/timestamp-template.directive';
23
22
  import { ChatStatusTemplateDirective } from './templates/status-template.directive';
24
23
  import { ChatSuggestionTemplateDirective } from './templates/suggestion-template.directive';
24
+ import { ContextMenuComponent, ContextMenuPopupEvent } from '@progress/kendo-angular-menu';
25
+ import { NoDataTemplateDirective, MessageTemplateDirective, AuthorMessageContentTemplateDirective, ReceiverMessageContentTemplateDirective, ReceiverMessageTemplateDirective, AuthorMessageTemplateDirective, MessageContentTemplateDirective } from './chat.directives';
26
+ import { ChatUserStatusTemplateDirective } from './templates/user-status-template.directive';
27
+ import { QuickActionsLayoutMode, SuggestionsLayoutMode } from './api/suggestions-layout';
25
28
  import * as i0 from "@angular/core";
26
29
  /**
27
30
  * Represents the [Kendo UI Chat component for Angular](slug:overview_convui).
@@ -40,7 +43,7 @@ import * as i0 from "@angular/core";
40
43
  * ```
41
44
  *
42
45
  * @remarks
43
- * Supported children components are: {@link CustomMessagesComponent}, {@link HeroCardComponent}, {@link AttachmentTemplateDirective}, {@link ChatHeaderTemplateDirective}, {@link ChatMessageBoxTemplateDirective}, {@link MessageTemplateDirective}, {@link ChatStatusTemplateDirective}, {@link ChatSuggestionTemplateDirective}, {@link ChatTimestampTemplateDirective}.
46
+ * Supported children components are: {@link CustomMessagesComponent}, {@link HeroCardComponent}, {@link AttachmentTemplateDirective}, {@link ChatHeaderTemplateDirective}, {@link ChatMessageBoxTemplateDirective}, {@link MessageContentTemplateDirective}, {@link MessageTemplateDirective},{@link ChatStatusTemplateDirective}, {@link ChatSuggestionTemplateDirective}, {@link ChatTimestampTemplateDirective}, {@link ChatNoDataTemplateDirective}, {@link ChatUserStatusTemplateDirective}, {@link AuthorMessageContentTemplateDirective}, {@link ReceiverMessageContentTemplateDirective}, {@link ReceiverMessageTemplateDirective}, {@link AuthorMessageTemplateDirective}.
44
47
  */
45
48
  export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
46
49
  private localization;
@@ -49,13 +52,13 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
49
52
  private element;
50
53
  private chatService;
51
54
  /**
52
- * Defines the array of messages displayed in the Chat.
53
- * Each message can include a timestamp for unique identification.
54
- * For more information, see [ngFor - Change Tracking](link:site.data.urls.angular['ngforof']#change-propagation).
55
+ * Sets the Chat messages.
56
+ * Accepts an array of `Message` objects, but can also accept custom data structures.
57
+ * For more information, check [Data Binding](slug:databinding_chat) section in the documentation.
55
58
  */
56
- messages: Message[];
59
+ messages: any[];
57
60
  /**
58
- * Specifies the id representing the local user.
61
+ * Sets the ID that represents the local user.
59
62
  */
60
63
  authorId: string | number;
61
64
  /**
@@ -83,13 +86,14 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
83
86
  */
84
87
  placeholder: string;
85
88
  /**
86
- * Switches the width of the message between the predefined options.
89
+ * Controls the width of the message between the predefined options.
87
90
  *
88
91
  * @default 'standard'
89
92
  */
90
93
  messageWidthMode: MessageWidthMode;
91
94
  /**
92
95
  * Enables the expand or collapse functionality for messages.
96
+ *
93
97
  * @default false
94
98
  */
95
99
  allowMessageCollapse: boolean;
@@ -106,35 +110,47 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
106
110
  */
107
111
  enableFileSelect: boolean | FileSelectSettings;
108
112
  /**
109
- * Specifies the actions available in the message toolbar.
113
+ * Sets the actions of the message toolbar.
110
114
  * These actions display in the message toolbar and let you perform specific operations on the message.
115
+ *
111
116
  * @default []
112
117
  */
113
118
  messageToolbarActions: MessageAction[];
114
119
  /**
115
120
  * Sets the value of the Message Box.
121
+ *
116
122
  * @default ''
117
123
  */
118
124
  inputValue: string;
119
125
  /**
120
- * Specifies the default actions available in the message context menu.
126
+ * Sets the settings for the author's messages.
127
+ */
128
+ authorMessageSettings: MessageSettings;
129
+ /**
130
+ * Sets the settings for the receivers' messages.
131
+ */
132
+ receiverMessageSettings: MessageSettings;
133
+ /**
134
+ * Sets the default actions that display in the message context menu.
121
135
  *
122
136
  * @default [{ id: 'copy', label: 'Copy', icon: 'copy', svgIcon: copyIcon, disabled: false }, { id: 'reply', label: 'Reply', icon: 'undo', svgIcon: undoIcon, disabled: false }]
123
137
  */
124
138
  defaultContextMenuActions: MessageAction[];
125
139
  /**
126
- * Specifies the actions available in the message as a context menu.
140
+ * Sets the actions that display in the message as a context menu.
127
141
  * These actions display as menu items and let you perform specific operations on the message.
128
142
  * The default actions are `copy` and `reply` and are defined by their `id`.
129
143
  */
130
144
  set messageContextMenuActions(actions: MessageAction[] | null);
131
145
  get messageContextMenuActions(): MessageAction[];
132
146
  /**
133
- * Specifies the default actions available in the file actions DropDownButton.
147
+ * Sets the default actions that display in the file actions DropDownButton.
148
+ *
149
+ * @default [{ id: 'download', label: 'Download', icon: 'download', svgIcon: downloadIcon, disabled: false }]
134
150
  */
135
151
  defaultFileActions: FileAction[];
136
152
  /**
137
- * Specifies the actions available in the file as items of a DropDownButton.
153
+ * Sets the actions that display in the file as items of a DropDownButton.
138
154
  * These actions display when you click the file DropDownButton and let you perform specific operations on the file.
139
155
  * The default action is `download` and is defined by its `id`.
140
156
  *
@@ -143,17 +159,30 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
143
159
  set fileActions(actions: FileAction[] | null);
144
160
  get fileActions(): FileAction[];
145
161
  /**
146
- * Sets the suggestions to display in the message input box.
147
- * Suggestions display as a list of clickable items that let you quickly insert predefined text into the message input.
148
- * @default []
162
+ * Sets the layout of the files in the message bubble.
163
+ *
164
+ * @default 'vertical'
149
165
  */
150
- suggestions: ChatSuggestion[];
166
+ set messageFilesLayout(layout: FilesLayoutMode);
151
167
  /**
152
- * Sets the visibility of the message toolbar.
168
+ * Sets the layout of the suggestions above the message input box.
153
169
  *
154
- * @default 'hidden'
170
+ * @default 'scroll'
155
171
  */
156
- messageToolbarVisibility: MessageToolbarVisibility;
172
+ set suggestionsLayout(layoutMode: SuggestionsLayoutMode);
173
+ /**
174
+ * Sets the layout of the quick actions suggested below the messages.
175
+ *
176
+ * @default 'scroll'
177
+ */
178
+ set quickActionsLayout(layoutMode: QuickActionsLayoutMode);
179
+ /**
180
+ * Sets the suggestions that display in the message input box.
181
+ * Suggestions display as a list of clickable items that let you quickly insert predefined text into the message input.
182
+ *
183
+ * @default []
184
+ */
185
+ suggestions: ChatSuggestion[];
157
186
  /**
158
187
  * Sets the send button settings for the Chat component.
159
188
  * Allows customization of the send button appearance, icons and disabled state.
@@ -168,64 +197,72 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
168
197
  set modelFields(value: ConversationalUIModelFields);
169
198
  get modelFields(): ConversationalUIModelFields;
170
199
  /**
171
- * Emits when the user sends a message by clicking the **Send** button or pressing **Enter**.
200
+ * Fires when the user sends a message by clicking the **Send** button or pressing **Enter**.
172
201
  *
173
202
  * The message is not automatically added to the `messages` array.
174
203
  */
175
204
  sendMessage: EventEmitter<SendMessageEvent>;
176
205
  /**
177
- * Emits when the user clicks a quick action button in the message toolbar.
206
+ * Fires when the user clicks a quick action button in the message toolbar.
178
207
  */
179
208
  toolbarActionClick: EventEmitter<MessageActionEvent>;
180
209
  /**
181
- * Emits when the user clicks an action in the message context menu.
210
+ * Fires when the user clicks an action in the message context menu.
182
211
  */
183
212
  contextMenuActionClick: EventEmitter<MessageActionEvent>;
184
213
  /**
185
- * Emits when the user clicks an action in the file context menu.
214
+ * Fires when the user clicks an action in the file context menu.
186
215
  */
187
216
  fileActionClick: EventEmitter<FileActionEvent>;
188
217
  /**
189
- * Emits when the user clicks an action in the file context menu.
218
+ * Fires when the user clicks an action in the file context menu.
190
219
  */
191
220
  download: EventEmitter<FileDownloadEvent>;
192
221
  /**
193
- * Emits when the user clicks a quick action button.
222
+ * Fires when the user clicks a quick action button.
194
223
  * The Chat internally handles [known actions](slug:api_conversational-ui_actiontype) such as `reply`, `openUrl`, and `call`.
195
224
  *
196
225
  * The event is preventable. Calling [`preventDefault`](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) suppresses the built-in action.
197
226
  */
198
227
  executeAction: EventEmitter<ExecuteActionEvent>;
199
228
  /**
200
- * Emits when the user clicks a suggestion in the message input box.
229
+ * Fires when the user clicks a suggestion in the message input box.
201
230
  */
202
231
  suggestionExecute: EventEmitter<ChatSuggestion>;
203
232
  /**
204
- * Emits when the user selects a file in the message input box.
233
+ * Fires when the user selects a file in the message input box.
205
234
  */
206
235
  fileSelect: EventEmitter<SelectEvent>;
207
236
  /**
208
- * Emits when the user removes a file from the message input box.
237
+ * Fires when the user removes a file from the message input box.
209
238
  */
210
239
  fileRemove: EventEmitter<ChatFile>;
211
240
  /**
212
- * Emits when the user unpins the pinned message.
241
+ * Fires when the user unpins the pinned message.
213
242
  * This event triggers when the user clicks the delete button on the pinned message.
214
243
  */
215
244
  unpin: EventEmitter<Message>;
216
245
  /**
217
- * Emits when the user types in the message input box.
246
+ * Fires when the user types in the message input box.
218
247
  */
219
248
  inputValueChange: EventEmitter<string>;
220
249
  get className(): string;
221
250
  get dirAttr(): string;
251
+ set messagesContextMenu(contextMenu: ContextMenuComponent);
222
252
  attachmentTemplate: AttachmentTemplateDirective;
223
253
  chatHeaderTemplate: ChatHeaderTemplateDirective;
254
+ chatNoDataTemplate: NoDataTemplateDirective;
255
+ authorMessageContentTemplate: AuthorMessageContentTemplateDirective;
256
+ receiverMessageContentTemplate: ReceiverMessageContentTemplateDirective;
257
+ messageContentTemplate: MessageContentTemplateDirective;
258
+ authorMessageTemplate: AuthorMessageTemplateDirective;
259
+ receiverMessageTemplate: ReceiverMessageTemplateDirective;
224
260
  messageTemplate: MessageTemplateDirective;
225
261
  timestampTemplate: ChatTimestampTemplateDirective;
226
262
  suggestionTemplate: ChatSuggestionTemplateDirective;
227
263
  statusTemplate: ChatStatusTemplateDirective;
228
264
  messageBoxTemplate: ChatMessageBoxTemplateDirective;
265
+ userStatusTemplate: ChatUserStatusTemplateDirective;
229
266
  messageBox: MessageBoxComponent;
230
267
  /**
231
268
  * @hidden
@@ -233,9 +270,15 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
233
270
  messageList: ViewContainerRef;
234
271
  /**
235
272
  * @hidden
236
- * Returns processed messages when model fields are used, otherwise returns original messages
273
+ * Returns processed messages when model fields are used, otherwise returns original messages.
237
274
  */
238
275
  get processedMessages(): Message[];
276
+ /**
277
+ * Gets the actions available in the message context menu.
278
+ *
279
+ * @hidden
280
+ */
281
+ get contextMenuActions(): any[];
239
282
  /**
240
283
  * @hidden
241
284
  */
@@ -261,6 +304,9 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
261
304
  private _modelFields;
262
305
  private _messageContextMenuActions;
263
306
  private _fileActions;
307
+ private _cachedProcessedMessages;
308
+ private _lastMessagesReference;
309
+ private _lastModelFields;
264
310
  constructor(localization: LocalizationService, zone: NgZone, renderer: Renderer2, element: ElementRef, chatService: ChatService);
265
311
  /**
266
312
  * @hidden
@@ -290,9 +336,21 @@ export declare class ChatComponent implements OnInit, AfterViewInit, OnDestroy {
290
336
  * @hidden
291
337
  */
292
338
  scrollToPinnedMessage(): void;
339
+ /**
340
+ * @hidden
341
+ */
342
+ onContextMenuAction(action: MessageAction): void;
343
+ /**
344
+ * @hidden
345
+ */
346
+ handleMenuClose(event: ContextMenuPopupEvent): void;
347
+ /**
348
+ * @hidden
349
+ */
350
+ onActionButtonClick(event: MouseEvent): void;
293
351
  private findLastPinnedMessage;
294
352
  private updateChatServiceProperties;
295
353
  private mergeWithDefaultActions;
296
354
  static ɵfac: i0.ɵɵFactoryDeclaration<ChatComponent, never>;
297
- static ɵcmp: i0.ɵɵComponentDeclaration<ChatComponent, "kendo-chat", never, { "messages": { "alias": "messages"; "required": false; }; "authorId": { "alias": "authorId"; "required": false; }; "messageBoxType": { "alias": "messageBoxType"; "required": false; }; "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "messageWidthMode": { "alias": "messageWidthMode"; "required": false; }; "allowMessageCollapse": { "alias": "allowMessageCollapse"; "required": false; }; "enableSpeechToText": { "alias": "enableSpeechToText"; "required": false; }; "enableFileSelect": { "alias": "enableFileSelect"; "required": false; }; "messageToolbarActions": { "alias": "messageToolbarActions"; "required": false; }; "inputValue": { "alias": "inputValue"; "required": false; }; "messageContextMenuActions": { "alias": "messageContextMenuActions"; "required": false; }; "fileActions": { "alias": "fileActions"; "required": false; }; "suggestions": { "alias": "suggestions"; "required": false; }; "messageToolbarVisibility": { "alias": "messageToolbarVisibility"; "required": false; }; "sendButtonSettings": { "alias": "sendButtonSettings"; "required": false; }; "modelFields": { "alias": "modelFields"; "required": false; }; }, { "sendMessage": "sendMessage"; "toolbarActionClick": "toolbarActionClick"; "contextMenuActionClick": "contextMenuActionClick"; "fileActionClick": "fileActionClick"; "download": "download"; "executeAction": "executeAction"; "suggestionExecute": "suggestionExecute"; "fileSelect": "fileSelect"; "fileRemove": "fileRemove"; "unpin": "unpin"; "inputValueChange": "inputValueChange"; }, ["attachmentTemplate", "chatHeaderTemplate", "messageTemplate", "timestampTemplate", "suggestionTemplate", "statusTemplate", "messageBoxTemplate"], never, true, never>;
355
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChatComponent, "kendo-chat", never, { "messages": { "alias": "messages"; "required": false; }; "authorId": { "alias": "authorId"; "required": false; }; "messageBoxType": { "alias": "messageBoxType"; "required": false; }; "height": { "alias": "height"; "required": false; }; "width": { "alias": "width"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "messageWidthMode": { "alias": "messageWidthMode"; "required": false; }; "allowMessageCollapse": { "alias": "allowMessageCollapse"; "required": false; }; "enableSpeechToText": { "alias": "enableSpeechToText"; "required": false; }; "enableFileSelect": { "alias": "enableFileSelect"; "required": false; }; "messageToolbarActions": { "alias": "messageToolbarActions"; "required": false; }; "inputValue": { "alias": "inputValue"; "required": false; }; "authorMessageSettings": { "alias": "authorMessageSettings"; "required": false; }; "receiverMessageSettings": { "alias": "receiverMessageSettings"; "required": false; }; "messageContextMenuActions": { "alias": "messageContextMenuActions"; "required": false; }; "fileActions": { "alias": "fileActions"; "required": false; }; "messageFilesLayout": { "alias": "messageFilesLayout"; "required": false; }; "suggestionsLayout": { "alias": "suggestionsLayout"; "required": false; }; "quickActionsLayout": { "alias": "quickActionsLayout"; "required": false; }; "suggestions": { "alias": "suggestions"; "required": false; }; "sendButtonSettings": { "alias": "sendButtonSettings"; "required": false; }; "modelFields": { "alias": "modelFields"; "required": false; }; }, { "sendMessage": "sendMessage"; "toolbarActionClick": "toolbarActionClick"; "contextMenuActionClick": "contextMenuActionClick"; "fileActionClick": "fileActionClick"; "download": "download"; "executeAction": "executeAction"; "suggestionExecute": "suggestionExecute"; "fileSelect": "fileSelect"; "fileRemove": "fileRemove"; "unpin": "unpin"; "inputValueChange": "inputValueChange"; }, ["attachmentTemplate", "chatHeaderTemplate", "chatNoDataTemplate", "authorMessageContentTemplate", "receiverMessageContentTemplate", "messageContentTemplate", "authorMessageTemplate", "receiverMessageTemplate", "messageTemplate", "timestampTemplate", "suggestionTemplate", "statusTemplate", "messageBoxTemplate", "userStatusTemplate"], never, true, never>;
298
356
  }
@@ -0,0 +1,18 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ export { ChatComponent } from './chat.component';
6
+ export { AttachmentTemplateDirective } from './templates/attachment-template.directive';
7
+ export { MessageContentTemplateDirective } from './templates/message-content-template.directive';
8
+ export { MessageTemplateDirective } from './templates/message-template.directive';
9
+ export { ChatUserStatusTemplateDirective } from './templates/user-status-template.directive';
10
+ export { ChatMessageBoxTemplateDirective } from './templates/message-box.directive';
11
+ export { ChatHeaderTemplateDirective } from './templates/header-template.directive';
12
+ export { NoDataTemplateDirective } from './templates/no-data-template.directive';
13
+ export { ChatTimestampTemplateDirective } from './templates/timestamp-template.directive';
14
+ export { ChatStatusTemplateDirective } from './templates/status-template.directive';
15
+ export { AuthorMessageContentTemplateDirective } from './templates/author-message-content-template.directive';
16
+ export { ReceiverMessageContentTemplateDirective } from './templates/receiver-message-content-template.directive';
17
+ export { ReceiverMessageTemplateDirective } from './templates/receiver-message-template.directive';
18
+ export { AuthorMessageTemplateDirective } from './templates/author-message-template.directive';
@@ -6,13 +6,20 @@ import * as i0 from "@angular/core";
6
6
  import * as i1 from "./chat.component";
7
7
  import * as i2 from "./l10n/custom-messages.component";
8
8
  import * as i3 from "./templates/attachment-template.directive";
9
- import * as i4 from "./templates/message-template.directive";
10
- import * as i5 from "./cards/hero-card.component";
11
- import * as i6 from "./templates/message-box.directive";
12
- import * as i7 from "./templates/header-template.directive";
13
- import * as i8 from "./templates/timestamp-template.directive";
14
- import * as i9 from "./templates/status-template.directive";
15
- import * as i10 from "./templates/suggestion-template.directive";
9
+ import * as i4 from "./templates/author-message-content-template.directive";
10
+ import * as i5 from "./templates/receiver-message-content-template.directive";
11
+ import * as i6 from "./templates/message-content-template.directive";
12
+ import * as i7 from "./templates/author-message-template.directive";
13
+ import * as i8 from "./templates/receiver-message-template.directive";
14
+ import * as i9 from "./templates/message-template.directive";
15
+ import * as i10 from "./cards/hero-card.component";
16
+ import * as i11 from "./templates/message-box.directive";
17
+ import * as i12 from "./templates/header-template.directive";
18
+ import * as i13 from "./templates/no-data-template.directive";
19
+ import * as i14 from "./templates/timestamp-template.directive";
20
+ import * as i15 from "./templates/status-template.directive";
21
+ import * as i16 from "./templates/suggestion-template.directive";
22
+ import * as i17 from "./templates/user-status-template.directive";
16
23
  /**
17
24
  * Represents the [`NgModule`](link:site.data.urls.angular['ngmodules']) for the Chat component.
18
25
  *
@@ -36,6 +43,6 @@ import * as i10 from "./templates/suggestion-template.directive";
36
43
  */
37
44
  export declare class ChatModule {
38
45
  static ɵfac: i0.ɵɵFactoryDeclaration<ChatModule, never>;
39
- static ɵmod: i0.ɵɵNgModuleDeclaration<ChatModule, never, [typeof i1.ChatComponent, typeof i2.CustomMessagesComponent, typeof i3.AttachmentTemplateDirective, typeof i4.MessageTemplateDirective, typeof i5.HeroCardComponent, typeof i6.ChatMessageBoxTemplateDirective, typeof i7.ChatHeaderTemplateDirective, typeof i8.ChatTimestampTemplateDirective, typeof i9.ChatStatusTemplateDirective, typeof i10.ChatSuggestionTemplateDirective], [typeof i1.ChatComponent, typeof i2.CustomMessagesComponent, typeof i3.AttachmentTemplateDirective, typeof i4.MessageTemplateDirective, typeof i5.HeroCardComponent, typeof i6.ChatMessageBoxTemplateDirective, typeof i7.ChatHeaderTemplateDirective, typeof i8.ChatTimestampTemplateDirective, typeof i9.ChatStatusTemplateDirective, typeof i10.ChatSuggestionTemplateDirective]>;
46
+ static ɵmod: i0.ɵɵNgModuleDeclaration<ChatModule, never, [typeof i1.ChatComponent, typeof i2.CustomMessagesComponent, typeof i3.AttachmentTemplateDirective, typeof i4.AuthorMessageContentTemplateDirective, typeof i5.ReceiverMessageContentTemplateDirective, typeof i6.MessageContentTemplateDirective, typeof i7.AuthorMessageTemplateDirective, typeof i8.ReceiverMessageTemplateDirective, typeof i9.MessageTemplateDirective, typeof i10.HeroCardComponent, typeof i11.ChatMessageBoxTemplateDirective, typeof i12.ChatHeaderTemplateDirective, typeof i13.NoDataTemplateDirective, typeof i14.ChatTimestampTemplateDirective, typeof i15.ChatStatusTemplateDirective, typeof i16.ChatSuggestionTemplateDirective, typeof i17.ChatUserStatusTemplateDirective], [typeof i1.ChatComponent, typeof i2.CustomMessagesComponent, typeof i3.AttachmentTemplateDirective, typeof i4.AuthorMessageContentTemplateDirective, typeof i5.ReceiverMessageContentTemplateDirective, typeof i6.MessageContentTemplateDirective, typeof i7.AuthorMessageTemplateDirective, typeof i8.ReceiverMessageTemplateDirective, typeof i9.MessageTemplateDirective, typeof i10.HeroCardComponent, typeof i11.ChatMessageBoxTemplateDirective, typeof i12.ChatHeaderTemplateDirective, typeof i13.NoDataTemplateDirective, typeof i14.ChatTimestampTemplateDirective, typeof i15.ChatStatusTemplateDirective, typeof i16.ChatSuggestionTemplateDirective, typeof i17.ChatUserStatusTemplateDirective]>;
40
47
  static ɵinj: i0.ɵɵInjectorDeclaration<ChatModule>;
41
48
  }
@@ -5,8 +5,9 @@
5
5
  import { ViewContainerRef, ElementRef } from '@angular/core';
6
6
  import { SpeechToTextButtonSettings } from '@progress/kendo-angular-buttons';
7
7
  import { MessageWidthMode } from '../api/message-width-mode';
8
- import { FileAction, FileActionEvent, FileDownloadEvent, Message, MessageAction, MessageActionEvent, MessageToolbarVisibility, SendButtonSettings } from '../api';
8
+ import { FileAction, FileActionEvent, FileDownloadEvent, FilesLayoutMode, Message, MessageAction, MessageActionEvent, MessageSettings, QuickActionsLayoutMode, SendButtonSettings, SuggestionsLayoutMode } from '../api';
9
9
  import { FileSelectSettings } from '@progress/kendo-angular-upload';
10
+ import { ContextMenuComponent } from '@progress/kendo-angular-menu';
10
11
  import * as i0 from "@angular/core";
11
12
  /**
12
13
  * @hidden
@@ -14,19 +15,29 @@ import * as i0 from "@angular/core";
14
15
  export declare class ChatService {
15
16
  authorId: string | number;
16
17
  messageWidthMode: MessageWidthMode;
17
- allowMessageCollapse: boolean;
18
18
  messageToolbarActions: MessageAction[];
19
19
  messageContextMenuActions: MessageAction[];
20
+ calculatedContextMenuActions: MessageAction[];
20
21
  fileActions: FileAction[];
21
- messageToolbarVisibility: MessageToolbarVisibility;
22
22
  toggleMessageState: boolean;
23
23
  reply: Message;
24
24
  messages: Message[];
25
25
  chatElement: ViewContainerRef;
26
26
  messageElementsMap: Map<string | number, ElementRef>;
27
+ messagesContextMenu: ContextMenuComponent;
28
+ activeMessage: Message;
29
+ activeMessageElement: any;
30
+ selectOnMenuClose: boolean;
31
+ active: boolean;
32
+ messageFilesLayout: FilesLayoutMode;
27
33
  private _enableSpeechToText;
28
34
  private _enableFileSelect;
29
35
  private _sendButtonSettings;
36
+ private _suggestionsLayout;
37
+ private _quickActionsLayout;
38
+ _authorMessageSettings: MessageSettings;
39
+ _receiverMessageSettings: MessageSettings;
40
+ private _allowMessageCollapse;
30
41
  private subjects;
31
42
  toolbarAction$: import("rxjs").Observable<MessageActionEvent>;
32
43
  contextMenuAction$: import("rxjs").Observable<MessageActionEvent>;
@@ -34,17 +45,35 @@ export declare class ChatService {
34
45
  fileDownload$: import("rxjs").Observable<FileDownloadEvent>;
35
46
  replyReferenceClick$: import("rxjs").Observable<string | number>;
36
47
  inputValueChange$: import("rxjs").Observable<string>;
48
+ contextMenuVisibilityChange$: import("rxjs").Observable<boolean>;
49
+ suggestionsLayoutChange$: import("rxjs").Observable<SuggestionsLayoutMode>;
50
+ quickActionsLayoutChange$: import("rxjs").Observable<SuggestionsLayoutMode>;
51
+ authorMessageSettingsChange$: import("rxjs").Observable<MessageSettings>;
52
+ receiverMessageSettingsChange$: import("rxjs").Observable<MessageSettings>;
53
+ allowMessageCollapseChange$: import("rxjs").Observable<boolean>;
54
+ set authorMessageSettings(settings: MessageSettings);
55
+ get authorMessageSettings(): MessageSettings;
56
+ set receiverMessageSettings(settings: MessageSettings);
57
+ get receiverMessageSettings(): MessageSettings;
37
58
  set enableSpeechToText(settings: boolean | SpeechToTextButtonSettings);
38
59
  get enableSpeechToText(): SpeechToTextButtonSettings;
39
60
  set enableFileSelect(settings: boolean | FileSelectSettings);
40
61
  get enableFileSelect(): FileSelectSettings;
41
62
  set sendButtonSettings(settings: boolean | SendButtonSettings);
42
63
  get sendButtonSettings(): SendButtonSettings;
64
+ set suggestionsLayout(layoutMode: SuggestionsLayoutMode);
65
+ get suggestionsLayout(): SuggestionsLayoutMode;
66
+ set quickActionsLayout(layoutMode: QuickActionsLayoutMode);
67
+ get quickActionsLayout(): QuickActionsLayoutMode;
68
+ set allowMessageCollapse(value: boolean);
69
+ get allowMessageCollapse(): boolean;
70
+ calculateContextMenuActions(isOwn: boolean): void;
43
71
  emit(subjectKey: string, value?: any): void;
44
72
  getMessageById(id: string | number): Message | undefined;
45
73
  registerMessageElement(messageId: string | number, elementRef: ElementRef): void;
46
74
  unregisterMessageElement(messageId: string | number): void;
47
75
  scrollToMessage(messageId: string | number): void;
76
+ focusActiveMessageElement(): void;
48
77
  private updateComponentSettings;
49
78
  static ɵfac: i0.ɵɵFactoryDeclaration<ChatService, never>;
50
79
  static ɵprov: i0.ɵɵInjectableDeclaration<ChatService>;
@@ -84,12 +84,6 @@ export interface ConversationalUIModelFields {
84
84
  * @default "isPinned"
85
85
  */
86
86
  isPinnedField?: string;
87
- /**
88
- * Field name for the user who pinned the message.
89
- *
90
- * @default "pinnedBy"
91
- */
92
- pinnedByField?: string;
93
87
  /**
94
88
  * Field name for reply-to message ID.
95
89
  *
@@ -0,0 +1,32 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { ElementRef, Renderer2, NgZone, AfterViewInit, OnDestroy, EventEmitter } from '@angular/core';
6
+ import { SVGIcon } from '@progress/kendo-svg-icons';
7
+ import { LocalizationService } from '@progress/kendo-angular-l10n';
8
+ import { ScrollButtonType } from './utils';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * @hidden
12
+ */
13
+ export declare class ChatScrollableButtonComponent implements AfterViewInit, OnDestroy {
14
+ host: ElementRef;
15
+ private renderer;
16
+ private ngZone;
17
+ private localization;
18
+ role: string;
19
+ prev: boolean;
20
+ onClick: EventEmitter<ScrollButtonType>;
21
+ get scrollButtonIconClass(): string;
22
+ get scrollButtonSVGIcon(): SVGIcon;
23
+ private chevronLeftIcon;
24
+ private chevronRightIcon;
25
+ private subs;
26
+ constructor(host: ElementRef, renderer: Renderer2, ngZone: NgZone, localization: LocalizationService);
27
+ ngAfterViewInit(): void;
28
+ ngOnDestroy(): void;
29
+ private clickHandler;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<ChatScrollableButtonComponent, never>;
31
+ static ɵcmp: i0.ɵɵComponentDeclaration<ChatScrollableButtonComponent, "[kendoChatScrollableButton]", never, { "prev": { "alias": "prev"; "required": false; }; }, { "onClick": "onClick"; }, never, never, true, never>;
32
+ }
@@ -0,0 +1,39 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ import { NgZone } from '@angular/core';
6
+ import { Subject } from 'rxjs';
7
+ import { LocalizationService } from '@progress/kendo-angular-l10n';
8
+ import { SuggestedActionsComponent } from '../suggested-actions.component';
9
+ import * as i0 from "@angular/core";
10
+ /**
11
+ * @hidden
12
+ */
13
+ export type ScrollButtonActiveStateChange = {
14
+ buttonType: string;
15
+ active: boolean;
16
+ };
17
+ /**
18
+ * @hidden
19
+ */
20
+ export declare class SuggestionsScrollService {
21
+ private ngZone;
22
+ private localization;
23
+ owner: SuggestedActionsComponent;
24
+ position: number;
25
+ scrollButtonActiveStateChange: Subject<ScrollButtonActiveStateChange>;
26
+ get scrollElement(): HTMLElement;
27
+ get scrollContainerOverflowSize(): number;
28
+ get suggestionsOverflow(): boolean;
29
+ constructor(ngZone: NgZone, localization: LocalizationService);
30
+ toggleScrollButtonsState(): void;
31
+ onScroll(e: Event): void;
32
+ scrollSuggestions(direction: string): void;
33
+ updateScrollPosition(element: HTMLElement): void;
34
+ calculateListPosition(direction: string, scrollSpeed: number): void;
35
+ private toggleButtonActiveState;
36
+ private isDisabled;
37
+ static ɵfac: i0.ɵɵFactoryDeclaration<SuggestionsScrollService, never>;
38
+ static ɵprov: i0.ɵɵInjectableDeclaration<SuggestionsScrollService>;
39
+ }