@progress/kendo-angular-conversational-ui 21.0.0-develop.8 → 21.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/chat/api/files-layout.d.ts +12 -0
- package/chat/api/index.d.ts +4 -1
- package/chat/api/message-settings.interface.d.ts +41 -0
- package/chat/api/message-width-mode.d.ts +1 -1
- package/chat/api/message.interface.d.ts +5 -1
- package/chat/api/suggestions-layout.d.ts +20 -0
- package/chat/api/timestamp-visibility.d.ts +10 -0
- package/chat/chat.component.d.ts +114 -35
- package/chat/chat.directives.d.ts +18 -0
- package/chat/chat.module.d.ts +15 -8
- package/chat/common/chat.service.d.ts +36 -3
- package/chat/common/models/model-fields.d.ts +0 -6
- package/chat/common/scroll-button.component.d.ts +32 -0
- package/chat/common/scroll.service.d.ts +39 -0
- package/chat/common/utils.d.ts +13 -1
- package/chat/l10n/messages.d.ts +9 -1
- package/chat/message-list.component.d.ts +22 -3
- package/chat/message.component.d.ts +40 -16
- package/chat/suggested-actions.component.d.ts +30 -5
- package/chat/templates/author-message-content-template.directive.d.ts +28 -0
- package/chat/templates/author-message-template.directive.d.ts +28 -0
- package/chat/templates/message-content-template.directive.d.ts +28 -0
- package/chat/templates/message-template.directive.d.ts +1 -1
- package/chat/templates/no-data-template.directive.d.ts +27 -0
- package/chat/templates/receiver-message-content-template.directive.d.ts +28 -0
- package/chat/templates/receiver-message-template.directive.d.ts +28 -0
- package/chat/templates/user-status-template.directive.d.ts +27 -0
- package/codemods/utils.js +477 -375
- package/codemods/v20/chat-user.js +7 -5
- package/codemods/v21/chat-messagetoolbarvisibility.js +53 -0
- package/codemods/v21/chat-pinnedbyfield.js +19 -0
- package/conversational-ui.module.d.ts +18 -11
- package/directives.d.ts +9 -2
- package/esm2022/chat/api/index.mjs +4 -1
- package/{chat/api/message-toolbar-visibility.d.ts → esm2022/chat/api/message-settings.interface.mjs} +1 -4
- package/esm2022/chat/api/suggestions-layout.mjs +5 -0
- package/esm2022/chat/api/timestamp-visibility.mjs +5 -0
- package/esm2022/chat/builtin-actions.mjs +2 -0
- package/esm2022/chat/chat-file.component.mjs +2 -2
- package/esm2022/chat/chat.component.mjs +298 -72
- package/esm2022/chat/chat.directives.mjs +18 -0
- package/esm2022/chat/chat.module.mjs +16 -9
- package/esm2022/chat/common/chat.service.mjs +86 -4
- package/esm2022/chat/common/models/default-model-fields.mjs +0 -1
- package/esm2022/chat/common/scroll-button.component.mjs +81 -0
- package/esm2022/chat/common/scroll.service.mjs +110 -0
- package/esm2022/chat/common/utils.mjs +22 -3
- package/esm2022/chat/l10n/messages.mjs +13 -1
- package/esm2022/chat/message-attachments.component.mjs +2 -2
- package/esm2022/chat/message-box.component.mjs +5 -2
- package/esm2022/chat/message-list.component.mjs +184 -40
- package/esm2022/chat/message.component.mjs +487 -326
- package/esm2022/chat/suggested-actions.component.mjs +298 -80
- package/esm2022/chat/templates/author-message-content-template.directive.mjs +39 -0
- package/esm2022/chat/templates/author-message-template.directive.mjs +39 -0
- package/esm2022/chat/templates/message-content-template.directive.mjs +39 -0
- package/esm2022/chat/templates/message-template.directive.mjs +1 -1
- package/esm2022/chat/templates/no-data-template.directive.mjs +38 -0
- package/esm2022/chat/templates/receiver-message-content-template.directive.mjs +39 -0
- package/esm2022/chat/templates/receiver-message-template.directive.mjs +39 -0
- package/esm2022/chat/templates/user-status-template.directive.mjs +38 -0
- package/esm2022/conversational-ui.module.mjs +19 -12
- package/esm2022/directives.mjs +15 -1
- package/esm2022/index.mjs +7 -0
- package/esm2022/package-metadata.mjs +2 -2
- package/fesm2022/progress-kendo-angular-conversational-ui.mjs +1825 -568
- package/index.d.ts +7 -0
- package/package.json +26 -14
- /package/esm2022/chat/api/{message-toolbar-visibility.mjs → files-layout.mjs} +0 -0
|
@@ -6,7 +6,6 @@ import { Component, ContentChild, ElementRef, EventEmitter, HostBinding, Input,
|
|
|
6
6
|
import { AttachmentTemplateDirective } from './templates/attachment-template.directive';
|
|
7
7
|
import { L10N_PREFIX, LocalizationService } from '@progress/kendo-angular-l10n';
|
|
8
8
|
import { makeHandler } from './builtin-actions';
|
|
9
|
-
import { MessageTemplateDirective } from './templates/message-template.directive';
|
|
10
9
|
import { Subscription } from 'rxjs';
|
|
11
10
|
import { validatePackage } from '@progress/kendo-licensing';
|
|
12
11
|
import { packageMetadata } from '../package-metadata';
|
|
@@ -24,11 +23,15 @@ import { KENDO_BUTTON } from '@progress/kendo-angular-buttons';
|
|
|
24
23
|
import { pinIcon, xIcon } from '@progress/kendo-svg-icons';
|
|
25
24
|
import { IconWrapperComponent } from '@progress/kendo-angular-icons';
|
|
26
25
|
import { defaultModelFields } from './common/models/default-model-fields';
|
|
27
|
-
import { processMessages, SEND_BTN_DEFAULT_SETTINGS, FILE_ACTIONS, CONTEXT_MENU_ACTIONS } from './common/utils';
|
|
26
|
+
import { processMessages, SEND_BTN_DEFAULT_SETTINGS, FILE_ACTIONS, CONTEXT_MENU_ACTIONS, transformActions, MENU_ITEM_SELECTOR } from './common/utils';
|
|
28
27
|
import { ChatTimestampTemplateDirective } from './templates/timestamp-template.directive';
|
|
29
28
|
import { MessageReferenceComponent } from './message-reference-content.component';
|
|
30
29
|
import { ChatStatusTemplateDirective } from './templates/status-template.directive';
|
|
31
30
|
import { ChatSuggestionTemplateDirective } from './templates/suggestion-template.directive';
|
|
31
|
+
import { ContextMenuComponent } from '@progress/kendo-angular-menu';
|
|
32
|
+
import { NoDataTemplateDirective, MessageTemplateDirective, AuthorMessageContentTemplateDirective, ReceiverMessageContentTemplateDirective, ReceiverMessageTemplateDirective, AuthorMessageTemplateDirective, MessageContentTemplateDirective } from './chat.directives';
|
|
33
|
+
import { ChatUserStatusTemplateDirective } from './templates/user-status-template.directive';
|
|
34
|
+
import { SuggestionsScrollService } from './common/scroll.service';
|
|
32
35
|
import * as i0 from "@angular/core";
|
|
33
36
|
import * as i1 from "@progress/kendo-angular-l10n";
|
|
34
37
|
import * as i2 from "./common/chat.service";
|
|
@@ -50,7 +53,7 @@ import * as i3 from "@progress/kendo-angular-buttons";
|
|
|
50
53
|
* ```
|
|
51
54
|
*
|
|
52
55
|
* @remarks
|
|
53
|
-
* Supported children components are: {@link CustomMessagesComponent}, {@link HeroCardComponent}, {@link AttachmentTemplateDirective}, {@link ChatHeaderTemplateDirective}, {@link ChatMessageBoxTemplateDirective}, {@link
|
|
56
|
+
* 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}.
|
|
54
57
|
*/
|
|
55
58
|
export class ChatComponent {
|
|
56
59
|
localization;
|
|
@@ -59,13 +62,13 @@ export class ChatComponent {
|
|
|
59
62
|
element;
|
|
60
63
|
chatService;
|
|
61
64
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
64
|
-
* For more information,
|
|
65
|
+
* Sets the Chat messages.
|
|
66
|
+
* Accepts an array of `Message` objects, but can also accept custom data types.
|
|
67
|
+
* For more information, check [Data Binding](slug:databinding_chat) section in the documentation.
|
|
65
68
|
*/
|
|
66
69
|
messages;
|
|
67
70
|
/**
|
|
68
|
-
*
|
|
71
|
+
* Sets the ID that represents the local user.
|
|
69
72
|
*/
|
|
70
73
|
authorId;
|
|
71
74
|
/**
|
|
@@ -93,13 +96,34 @@ export class ChatComponent {
|
|
|
93
96
|
*/
|
|
94
97
|
placeholder;
|
|
95
98
|
/**
|
|
96
|
-
*
|
|
99
|
+
* Controls the width of the message between the predefined options.
|
|
97
100
|
*
|
|
98
101
|
* @default 'standard'
|
|
99
102
|
*/
|
|
100
103
|
messageWidthMode = 'standard';
|
|
104
|
+
/**
|
|
105
|
+
* Controls the visibility of timestamps in messages.
|
|
106
|
+
*
|
|
107
|
+
* @default 'focus'
|
|
108
|
+
*/
|
|
109
|
+
timestampVisibility = 'focus';
|
|
110
|
+
/**
|
|
111
|
+
* Controls the visibility of usernames in messages.
|
|
112
|
+
* When set to `true`, the username displays above each message bubble.
|
|
113
|
+
*
|
|
114
|
+
* @default true
|
|
115
|
+
*/
|
|
116
|
+
showUsername = true;
|
|
117
|
+
/**
|
|
118
|
+
* Controls the avatar visibility for the messages.
|
|
119
|
+
* When set to `true`, the user avatar displays next to each message bubble.
|
|
120
|
+
*
|
|
121
|
+
* @default true
|
|
122
|
+
*/
|
|
123
|
+
showAvatar = true;
|
|
101
124
|
/**
|
|
102
125
|
* Enables the expand or collapse functionality for messages.
|
|
126
|
+
*
|
|
103
127
|
* @default false
|
|
104
128
|
*/
|
|
105
129
|
allowMessageCollapse = false;
|
|
@@ -116,24 +140,34 @@ export class ChatComponent {
|
|
|
116
140
|
*/
|
|
117
141
|
enableFileSelect = true;
|
|
118
142
|
/**
|
|
119
|
-
*
|
|
143
|
+
* Sets the actions of the message toolbar.
|
|
120
144
|
* These actions display in the message toolbar and let you perform specific operations on the message.
|
|
145
|
+
*
|
|
121
146
|
* @default []
|
|
122
147
|
*/
|
|
123
148
|
messageToolbarActions = [];
|
|
124
149
|
/**
|
|
125
150
|
* Sets the value of the Message Box.
|
|
151
|
+
*
|
|
126
152
|
* @default ''
|
|
127
153
|
*/
|
|
128
154
|
inputValue = '';
|
|
129
155
|
/**
|
|
130
|
-
*
|
|
156
|
+
* Sets the settings for the author's messages.
|
|
157
|
+
*/
|
|
158
|
+
authorMessageSettings;
|
|
159
|
+
/**
|
|
160
|
+
* Sets the settings for the receivers' messages.
|
|
161
|
+
*/
|
|
162
|
+
receiverMessageSettings;
|
|
163
|
+
/**
|
|
164
|
+
* Sets the default actions that display in the message context menu.
|
|
131
165
|
*
|
|
132
166
|
* @default [{ id: 'copy', label: 'Copy', icon: 'copy', svgIcon: copyIcon, disabled: false }, { id: 'reply', label: 'Reply', icon: 'undo', svgIcon: undoIcon, disabled: false }]
|
|
133
167
|
*/
|
|
134
168
|
defaultContextMenuActions = CONTEXT_MENU_ACTIONS;
|
|
135
169
|
/**
|
|
136
|
-
*
|
|
170
|
+
* Sets the actions that display in the message as a context menu.
|
|
137
171
|
* These actions display as menu items and let you perform specific operations on the message.
|
|
138
172
|
* The default actions are `copy` and `reply` and are defined by their `id`.
|
|
139
173
|
*/
|
|
@@ -144,11 +178,13 @@ export class ChatComponent {
|
|
|
144
178
|
return this._messageContextMenuActions;
|
|
145
179
|
}
|
|
146
180
|
/**
|
|
147
|
-
*
|
|
181
|
+
* Sets the default actions that display in the file actions DropDownButton.
|
|
182
|
+
*
|
|
183
|
+
* @default [{ id: 'download', label: 'Download', icon: 'download', svgIcon: downloadIcon, disabled: false }]
|
|
148
184
|
*/
|
|
149
185
|
defaultFileActions = FILE_ACTIONS;
|
|
150
186
|
/**
|
|
151
|
-
*
|
|
187
|
+
* Sets the actions that display in the file as items of a DropDownButton.
|
|
152
188
|
* These actions display when you click the file DropDownButton and let you perform specific operations on the file.
|
|
153
189
|
* The default action is `download` and is defined by its `id`.
|
|
154
190
|
*
|
|
@@ -161,17 +197,40 @@ export class ChatComponent {
|
|
|
161
197
|
return this._fileActions;
|
|
162
198
|
}
|
|
163
199
|
/**
|
|
164
|
-
* Sets the
|
|
165
|
-
*
|
|
166
|
-
* @default
|
|
200
|
+
* Sets the layout of the files in the message bubble.
|
|
201
|
+
*
|
|
202
|
+
* @default 'vertical'
|
|
167
203
|
*/
|
|
168
|
-
|
|
204
|
+
set messageFilesLayout(layout) {
|
|
205
|
+
this.chatService.messageFilesLayout = layout;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Sets the layout of the suggestions above the message input box.
|
|
209
|
+
*
|
|
210
|
+
* @default 'scroll'
|
|
211
|
+
*/
|
|
212
|
+
set suggestionsLayout(layoutMode) {
|
|
213
|
+
if (layoutMode) {
|
|
214
|
+
this.chatService.suggestionsLayout = layoutMode;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Sets the layout of the quick actions suggested below the messages.
|
|
219
|
+
*
|
|
220
|
+
* @default 'scroll'
|
|
221
|
+
*/
|
|
222
|
+
set quickActionsLayout(layoutMode) {
|
|
223
|
+
if (layoutMode) {
|
|
224
|
+
this.chatService.quickActionsLayout = layoutMode;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
169
227
|
/**
|
|
170
|
-
* Sets the
|
|
228
|
+
* Sets the suggestions that display in the message input box.
|
|
229
|
+
* Suggestions display as a list of clickable items that let you quickly insert predefined text into the message input.
|
|
171
230
|
*
|
|
172
|
-
* @default
|
|
231
|
+
* @default []
|
|
173
232
|
*/
|
|
174
|
-
|
|
233
|
+
suggestions = [];
|
|
175
234
|
/**
|
|
176
235
|
* Sets the send button settings for the Chat component.
|
|
177
236
|
* Allows customization of the send button appearance, icons and disabled state.
|
|
@@ -181,7 +240,7 @@ export class ChatComponent {
|
|
|
181
240
|
sendButtonSettings = SEND_BTN_DEFAULT_SETTINGS;
|
|
182
241
|
/**
|
|
183
242
|
* Sets the names of the model fields from which the Chat reads its data.
|
|
184
|
-
* Lets you map custom data
|
|
243
|
+
* Lets you map custom data types to the expected `Message` format.
|
|
185
244
|
*/
|
|
186
245
|
set modelFields(value) {
|
|
187
246
|
this._modelFields = { ...defaultModelFields, ...value };
|
|
@@ -190,53 +249,53 @@ export class ChatComponent {
|
|
|
190
249
|
return this._modelFields;
|
|
191
250
|
}
|
|
192
251
|
/**
|
|
193
|
-
*
|
|
252
|
+
* Fires when the user sends a message by clicking the **Send** button or pressing **Enter**.
|
|
194
253
|
*
|
|
195
254
|
* The message is not automatically added to the `messages` array.
|
|
196
255
|
*/
|
|
197
256
|
sendMessage = new EventEmitter();
|
|
198
257
|
/**
|
|
199
|
-
*
|
|
258
|
+
* Fires when the user clicks a quick action button in the message toolbar.
|
|
200
259
|
*/
|
|
201
260
|
toolbarActionClick = new EventEmitter();
|
|
202
261
|
/**
|
|
203
|
-
*
|
|
262
|
+
* Fires when the user clicks an action in the message context menu.
|
|
204
263
|
*/
|
|
205
264
|
contextMenuActionClick = new EventEmitter();
|
|
206
265
|
/**
|
|
207
|
-
*
|
|
266
|
+
* Fires when the user clicks an action in the file context menu.
|
|
208
267
|
*/
|
|
209
268
|
fileActionClick = new EventEmitter();
|
|
210
269
|
/**
|
|
211
|
-
*
|
|
270
|
+
* Fires when the user clicks an action in the file context menu.
|
|
212
271
|
*/
|
|
213
272
|
download = new EventEmitter();
|
|
214
273
|
/**
|
|
215
|
-
*
|
|
274
|
+
* Fires when the user clicks a quick action button.
|
|
216
275
|
* The Chat internally handles [known actions](slug:api_conversational-ui_actiontype) such as `reply`, `openUrl`, and `call`.
|
|
217
276
|
*
|
|
218
277
|
* The event is preventable. Calling [`preventDefault`](https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault) suppresses the built-in action.
|
|
219
278
|
*/
|
|
220
279
|
executeAction = new EventEmitter();
|
|
221
280
|
/**
|
|
222
|
-
*
|
|
281
|
+
* Fires when the user clicks a suggestion in the message input box.
|
|
223
282
|
*/
|
|
224
283
|
suggestionExecute = new EventEmitter();
|
|
225
284
|
/**
|
|
226
|
-
*
|
|
285
|
+
* Fires when the user selects a file in the message input box.
|
|
227
286
|
*/
|
|
228
287
|
fileSelect = new EventEmitter();
|
|
229
288
|
/**
|
|
230
|
-
*
|
|
289
|
+
* Fires when the user removes a file from the message input box.
|
|
231
290
|
*/
|
|
232
291
|
fileRemove = new EventEmitter();
|
|
233
292
|
/**
|
|
234
|
-
*
|
|
293
|
+
* Fires when the user unpins the pinned message.
|
|
235
294
|
* This event triggers when the user clicks the delete button on the pinned message.
|
|
236
295
|
*/
|
|
237
296
|
unpin = new EventEmitter();
|
|
238
297
|
/**
|
|
239
|
-
*
|
|
298
|
+
* Fires when the user types in the message input box.
|
|
240
299
|
*/
|
|
241
300
|
inputValueChange = new EventEmitter();
|
|
242
301
|
get className() {
|
|
@@ -245,13 +304,23 @@ export class ChatComponent {
|
|
|
245
304
|
get dirAttr() {
|
|
246
305
|
return this.direction;
|
|
247
306
|
}
|
|
307
|
+
set messagesContextMenu(contextMenu) {
|
|
308
|
+
this.chatService.messagesContextMenu = contextMenu;
|
|
309
|
+
}
|
|
248
310
|
attachmentTemplate;
|
|
249
311
|
chatHeaderTemplate;
|
|
312
|
+
chatNoDataTemplate;
|
|
313
|
+
authorMessageContentTemplate;
|
|
314
|
+
receiverMessageContentTemplate;
|
|
315
|
+
messageContentTemplate;
|
|
316
|
+
authorMessageTemplate;
|
|
317
|
+
receiverMessageTemplate;
|
|
250
318
|
messageTemplate;
|
|
251
319
|
timestampTemplate;
|
|
252
320
|
suggestionTemplate;
|
|
253
321
|
statusTemplate;
|
|
254
322
|
messageBoxTemplate;
|
|
323
|
+
userStatusTemplate;
|
|
255
324
|
messageBox;
|
|
256
325
|
/**
|
|
257
326
|
* @hidden
|
|
@@ -259,17 +328,30 @@ export class ChatComponent {
|
|
|
259
328
|
messageList;
|
|
260
329
|
/**
|
|
261
330
|
* @hidden
|
|
262
|
-
* Returns processed messages when model fields are used, otherwise returns original messages
|
|
331
|
+
* Returns processed messages when model fields are used, otherwise returns original messages.
|
|
263
332
|
*/
|
|
264
333
|
get processedMessages() {
|
|
265
334
|
if (!this.messages || this.messages.length === 0) {
|
|
266
335
|
return [];
|
|
267
336
|
}
|
|
268
337
|
if (this._modelFields && Object.keys(this._modelFields).some(key => this._modelFields[key] !== defaultModelFields[key])) {
|
|
269
|
-
|
|
338
|
+
if (this.messages !== this._lastMessagesReference || this._modelFields !== this._lastModelFields) {
|
|
339
|
+
this._cachedProcessedMessages = processMessages(this.messages, this._modelFields);
|
|
340
|
+
this._lastMessagesReference = this.messages;
|
|
341
|
+
this._lastModelFields = this._modelFields;
|
|
342
|
+
}
|
|
343
|
+
return this._cachedProcessedMessages;
|
|
270
344
|
}
|
|
271
345
|
return this.messages;
|
|
272
346
|
}
|
|
347
|
+
/**
|
|
348
|
+
* Gets the actions available in the message context menu.
|
|
349
|
+
*
|
|
350
|
+
* @hidden
|
|
351
|
+
*/
|
|
352
|
+
get contextMenuActions() {
|
|
353
|
+
return transformActions(this.chatService.calculatedContextMenuActions);
|
|
354
|
+
}
|
|
273
355
|
/**
|
|
274
356
|
* @hidden
|
|
275
357
|
*/
|
|
@@ -297,6 +379,9 @@ export class ChatComponent {
|
|
|
297
379
|
_modelFields = defaultModelFields;
|
|
298
380
|
_messageContextMenuActions = CONTEXT_MENU_ACTIONS;
|
|
299
381
|
_fileActions = FILE_ACTIONS;
|
|
382
|
+
_cachedProcessedMessages = [];
|
|
383
|
+
_lastMessagesReference = null;
|
|
384
|
+
_lastModelFields = null;
|
|
300
385
|
constructor(localization, zone, renderer, element, chatService) {
|
|
301
386
|
this.localization = localization;
|
|
302
387
|
this.zone = zone;
|
|
@@ -314,6 +399,9 @@ export class ChatComponent {
|
|
|
314
399
|
*/
|
|
315
400
|
ngOnInit() {
|
|
316
401
|
this.chatService.messageWidthMode = this.messageWidthMode;
|
|
402
|
+
this.chatService.timestampVisibility = this.timestampVisibility;
|
|
403
|
+
this.chatService.showUsername = this.showUsername;
|
|
404
|
+
this.chatService.showAvatar = this.showAvatar;
|
|
317
405
|
this.chatService.allowMessageCollapse = this.allowMessageCollapse;
|
|
318
406
|
this.chatService.enableSpeechToText = this.enableSpeechToText;
|
|
319
407
|
this.chatService.sendButtonSettings = this.sendButtonSettings;
|
|
@@ -321,7 +409,8 @@ export class ChatComponent {
|
|
|
321
409
|
this.chatService.messageToolbarActions = this.messageToolbarActions;
|
|
322
410
|
this.chatService.messageContextMenuActions = this.messageContextMenuActions;
|
|
323
411
|
this.chatService.fileActions = this.fileActions;
|
|
324
|
-
this.chatService.
|
|
412
|
+
this.chatService.authorMessageSettings = this.authorMessageSettings;
|
|
413
|
+
this.chatService.receiverMessageSettings = this.receiverMessageSettings;
|
|
325
414
|
this.chatService.messages = this.processedMessages || [];
|
|
326
415
|
this.chatService.chatElement = this.messageList;
|
|
327
416
|
this.subs.add(this.chatService.toolbarAction$.subscribe((actionEvent) => {
|
|
@@ -362,6 +451,9 @@ export class ChatComponent {
|
|
|
362
451
|
this.updateChatServiceProperties([
|
|
363
452
|
'authorId',
|
|
364
453
|
'messageWidthMode',
|
|
454
|
+
'timestampVisibility',
|
|
455
|
+
'showUsername',
|
|
456
|
+
'showAvatar',
|
|
365
457
|
'allowMessageCollapse',
|
|
366
458
|
'enableSpeechToText',
|
|
367
459
|
'sendButtonSettings',
|
|
@@ -369,7 +461,8 @@ export class ChatComponent {
|
|
|
369
461
|
'messageToolbarActions',
|
|
370
462
|
'messageContextMenuActions',
|
|
371
463
|
'fileActions',
|
|
372
|
-
'
|
|
464
|
+
'authorMessageSettings',
|
|
465
|
+
'receiverMessageSettings'
|
|
373
466
|
], changes);
|
|
374
467
|
}
|
|
375
468
|
/**
|
|
@@ -418,6 +511,43 @@ export class ChatComponent {
|
|
|
418
511
|
this.chatService.scrollToMessage(this.pinnedMessage?.id);
|
|
419
512
|
}
|
|
420
513
|
}
|
|
514
|
+
/**
|
|
515
|
+
* @hidden
|
|
516
|
+
*/
|
|
517
|
+
onContextMenuAction(action) {
|
|
518
|
+
if (action.id === 'reply') {
|
|
519
|
+
this.chatService.reply = this.chatService.activeMessage;
|
|
520
|
+
}
|
|
521
|
+
if (action.id === 'copy') {
|
|
522
|
+
navigator.clipboard.writeText(this.chatService.activeMessage.text);
|
|
523
|
+
}
|
|
524
|
+
this.chatService.emit('contextMenuAction', { action, message: this.chatService.activeMessage });
|
|
525
|
+
}
|
|
526
|
+
/**
|
|
527
|
+
* @hidden
|
|
528
|
+
*/
|
|
529
|
+
handleMenuClose(event) {
|
|
530
|
+
if (event) {
|
|
531
|
+
const originalEvent = event.originalEvent;
|
|
532
|
+
originalEvent && this.onActionButtonClick(originalEvent);
|
|
533
|
+
}
|
|
534
|
+
this.chatService.activeMessage = null;
|
|
535
|
+
this.chatService.emit('contextMenuVisibilityChange', false);
|
|
536
|
+
if (this.chatService.selectOnMenuClose) {
|
|
537
|
+
this.chatService.activeMessageElement.selected = true;
|
|
538
|
+
this.chatService.focusActiveMessageElement();
|
|
539
|
+
}
|
|
540
|
+
}
|
|
541
|
+
/**
|
|
542
|
+
* @hidden
|
|
543
|
+
*/
|
|
544
|
+
onActionButtonClick(event) {
|
|
545
|
+
const clickOutsideMessage = event instanceof MouseEvent && !event.target?.closest('.k-chat-bubble');
|
|
546
|
+
const menuItemClick = event instanceof MouseEvent && event.target?.closest(MENU_ITEM_SELECTOR);
|
|
547
|
+
if (clickOutsideMessage && !menuItemClick) {
|
|
548
|
+
this.chatService.selectOnMenuClose = false;
|
|
549
|
+
}
|
|
550
|
+
}
|
|
421
551
|
findLastPinnedMessage() {
|
|
422
552
|
return [...this.processedMessages].reverse().find((message) => message.isPinned);
|
|
423
553
|
}
|
|
@@ -441,14 +571,15 @@ export class ChatComponent {
|
|
|
441
571
|
});
|
|
442
572
|
}
|
|
443
573
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatComponent, deps: [{ token: i1.LocalizationService }, { token: i0.NgZone }, { token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i2.ChatService }], target: i0.ɵɵFactoryTarget.Component });
|
|
444
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatComponent, isStandalone: true, selector: "kendo-chat", inputs: { messages: "messages", authorId: "authorId", messageBoxType: "messageBoxType", height: "height", width: "width", placeholder: "placeholder", messageWidthMode: "messageWidthMode", allowMessageCollapse: "allowMessageCollapse", enableSpeechToText: "enableSpeechToText", enableFileSelect: "enableFileSelect", messageToolbarActions: "messageToolbarActions", inputValue: "inputValue", messageContextMenuActions: "messageContextMenuActions", fileActions: "fileActions",
|
|
574
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatComponent, isStandalone: true, selector: "kendo-chat", inputs: { messages: "messages", authorId: "authorId", messageBoxType: "messageBoxType", height: "height", width: "width", placeholder: "placeholder", messageWidthMode: "messageWidthMode", timestampVisibility: "timestampVisibility", showUsername: "showUsername", showAvatar: "showAvatar", allowMessageCollapse: "allowMessageCollapse", enableSpeechToText: "enableSpeechToText", enableFileSelect: "enableFileSelect", messageToolbarActions: "messageToolbarActions", inputValue: "inputValue", authorMessageSettings: "authorMessageSettings", receiverMessageSettings: "receiverMessageSettings", messageContextMenuActions: "messageContextMenuActions", fileActions: "fileActions", messageFilesLayout: "messageFilesLayout", suggestionsLayout: "suggestionsLayout", quickActionsLayout: "quickActionsLayout", suggestions: "suggestions", sendButtonSettings: "sendButtonSettings", modelFields: "modelFields" }, outputs: { sendMessage: "sendMessage", toolbarActionClick: "toolbarActionClick", contextMenuActionClick: "contextMenuActionClick", fileActionClick: "fileActionClick", download: "download", executeAction: "executeAction", suggestionExecute: "suggestionExecute", fileSelect: "fileSelect", fileRemove: "fileRemove", unpin: "unpin", inputValueChange: "inputValueChange" }, host: { properties: { "class": "this.className", "attr.dir": "this.dirAttr" } }, providers: [
|
|
445
575
|
LocalizationService,
|
|
446
576
|
ChatService,
|
|
577
|
+
SuggestionsScrollService,
|
|
447
578
|
{
|
|
448
579
|
provide: L10N_PREFIX,
|
|
449
580
|
useValue: 'kendo.chat'
|
|
450
581
|
}
|
|
451
|
-
], queries: [{ propertyName: "attachmentTemplate", first: true, predicate: AttachmentTemplateDirective, descendants: true }, { propertyName: "chatHeaderTemplate", first: true, predicate: ChatHeaderTemplateDirective, descendants: true }, { propertyName: "messageTemplate", first: true, predicate: MessageTemplateDirective, descendants: true }, { propertyName: "timestampTemplate", first: true, predicate: ChatTimestampTemplateDirective, descendants: true }, { propertyName: "suggestionTemplate", first: true, predicate: ChatSuggestionTemplateDirective, descendants: true }, { propertyName: "statusTemplate", first: true, predicate: ChatStatusTemplateDirective, descendants: true }, { propertyName: "messageBoxTemplate", first: true, predicate: ChatMessageBoxTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "messageBox", first: true, predicate: ["messageBox"], descendants: true }, { propertyName: "messageList", first: true, predicate: ["messageList"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
582
|
+
], queries: [{ propertyName: "attachmentTemplate", first: true, predicate: AttachmentTemplateDirective, descendants: true }, { propertyName: "chatHeaderTemplate", first: true, predicate: ChatHeaderTemplateDirective, descendants: true }, { propertyName: "chatNoDataTemplate", first: true, predicate: NoDataTemplateDirective, descendants: true }, { propertyName: "authorMessageContentTemplate", first: true, predicate: AuthorMessageContentTemplateDirective, descendants: true }, { propertyName: "receiverMessageContentTemplate", first: true, predicate: ReceiverMessageContentTemplateDirective, descendants: true }, { propertyName: "messageContentTemplate", first: true, predicate: MessageContentTemplateDirective, descendants: true }, { propertyName: "authorMessageTemplate", first: true, predicate: AuthorMessageTemplateDirective, descendants: true }, { propertyName: "receiverMessageTemplate", first: true, predicate: ReceiverMessageTemplateDirective, descendants: true }, { propertyName: "messageTemplate", first: true, predicate: MessageTemplateDirective, descendants: true }, { propertyName: "timestampTemplate", first: true, predicate: ChatTimestampTemplateDirective, descendants: true }, { propertyName: "suggestionTemplate", first: true, predicate: ChatSuggestionTemplateDirective, descendants: true }, { propertyName: "statusTemplate", first: true, predicate: ChatStatusTemplateDirective, descendants: true }, { propertyName: "messageBoxTemplate", first: true, predicate: ChatMessageBoxTemplateDirective, descendants: true }, { propertyName: "userStatusTemplate", first: true, predicate: ChatUserStatusTemplateDirective, descendants: true }], viewQueries: [{ propertyName: "messagesContextMenu", first: true, predicate: ["messagesContextMenu"], descendants: true }, { propertyName: "messageBox", first: true, predicate: ["messageBox"], descendants: true }, { propertyName: "messageList", first: true, predicate: ["messageList"], descendants: true, read: ViewContainerRef, static: true }], usesOnChanges: true, ngImport: i0, template: `
|
|
452
583
|
<ng-container kendoChatLocalizedMessages
|
|
453
584
|
i18n-deletedMessageSenderText="kendo.chat.deletedMessageSenderText|The text that is displayed when the sender deletes a message"
|
|
454
585
|
deletedMessageSenderText="You removed this message."
|
|
@@ -497,10 +628,16 @@ export class ChatComponent {
|
|
|
497
628
|
|
|
498
629
|
i18n-downloadAllFilesText="kendo.chat.downloadAllFilesText|Sets the text that is displayed in the download section of the message."
|
|
499
630
|
downloadAllFilesText="Download all"
|
|
631
|
+
|
|
632
|
+
i18n-previousSuggestionsButtonTitle="kendo.chat.previousSuggestionsButtonTitle|The title of the button that scrolls to the previous suggestions"
|
|
633
|
+
previousSuggestionsButtonTitle="Scroll left"
|
|
634
|
+
|
|
635
|
+
i18n-nextSuggestionsButtonTitle="kendo.chat.nextSuggestionsButtonTitle|The title of the button that scrolls to the next suggestions"
|
|
636
|
+
nextSuggestionsButtonTitle="Scroll right"
|
|
500
637
|
>
|
|
501
638
|
</ng-container>
|
|
502
639
|
|
|
503
|
-
<kendo-appbar *ngIf="chatHeaderTemplate" class="k-chat-header" positionMode="sticky">
|
|
640
|
+
<kendo-appbar *ngIf="chatHeaderTemplate" class="k-chat-header" positionMode="sticky" themeColor="inherit">
|
|
504
641
|
<ng-container *ngTemplateOutlet="chatHeaderTemplate.templateRef"></ng-container>
|
|
505
642
|
</kendo-appbar>
|
|
506
643
|
<div class="k-message-reference k-message-reference-receiver k-message-pinned" *ngIf="pinnedMessage" (click)="scrollToPinnedMessage()">
|
|
@@ -516,7 +653,7 @@ export class ChatComponent {
|
|
|
516
653
|
</div>
|
|
517
654
|
<div
|
|
518
655
|
#messageList
|
|
519
|
-
class="k-message-list
|
|
656
|
+
class="k-message-list"
|
|
520
657
|
aria-live="polite"
|
|
521
658
|
role="log"
|
|
522
659
|
kendoChatScrollAnchor
|
|
@@ -524,19 +661,32 @@ export class ChatComponent {
|
|
|
524
661
|
#anchor="scrollAnchor"
|
|
525
662
|
[(autoScroll)]="autoScroll"
|
|
526
663
|
>
|
|
527
|
-
<
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
664
|
+
<div *ngIf="processedMessages && processedMessages.length === 0; else chatMessageList" class="k-message-list-content k-message-list-content-empty">
|
|
665
|
+
<ng-template
|
|
666
|
+
[ngTemplateOutlet]="chatNoDataTemplate?.templateRef">
|
|
667
|
+
</ng-template>
|
|
668
|
+
</div>
|
|
669
|
+
<ng-template #chatMessageList>
|
|
670
|
+
<kendo-chat-message-list
|
|
671
|
+
[messages]="processedMessages"
|
|
672
|
+
[authorMessageContentTemplate]="authorMessageContentTemplate"
|
|
673
|
+
[receiverMessageContentTemplate]="receiverMessageContentTemplate"
|
|
674
|
+
[messageContentTemplate]="messageContentTemplate"
|
|
675
|
+
[authorMessageTemplate]="authorMessageTemplate"
|
|
676
|
+
[receiverMessageTemplate]="receiverMessageTemplate"
|
|
677
|
+
[messageTemplate]="messageTemplate"
|
|
678
|
+
[timestampTemplate]="timestampTemplate"
|
|
679
|
+
[statusTemplate]="statusTemplate"
|
|
680
|
+
[userStatusTemplate]="userStatusTemplate"
|
|
681
|
+
[localization]="localizationText"
|
|
682
|
+
[attachmentTemplate]="attachmentTemplate"
|
|
683
|
+
[authorId]="authorId"
|
|
684
|
+
(executeAction)="dispatchAction($event)"
|
|
685
|
+
(resize)="anchor.scrollToBottom()"
|
|
686
|
+
(navigate)="this.autoScroll = false"
|
|
687
|
+
>
|
|
688
|
+
</kendo-chat-message-list>
|
|
689
|
+
</ng-template>
|
|
540
690
|
</div>
|
|
541
691
|
<kendo-message-box
|
|
542
692
|
#messageBox
|
|
@@ -554,7 +704,16 @@ export class ChatComponent {
|
|
|
554
704
|
(fileRemove)="fileRemove.emit($event)"
|
|
555
705
|
>
|
|
556
706
|
</kendo-message-box>
|
|
557
|
-
|
|
707
|
+
|
|
708
|
+
<kendo-contextmenu
|
|
709
|
+
#messagesContextMenu
|
|
710
|
+
[items]="contextMenuActions"
|
|
711
|
+
[popupAlign]="{ horizontal: 'right', vertical: 'top' }"
|
|
712
|
+
[collision]="{ horizontal: 'flip', vertical: 'flip'}"
|
|
713
|
+
(popupClose)="handleMenuClose($event)"
|
|
714
|
+
(select)="onContextMenuAction($event.item.originalAction)"
|
|
715
|
+
></kendo-contextmenu>
|
|
716
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: LocalizedMessagesDirective, selector: "[kendoChatLocalizedMessages]" }, { kind: "directive", type: ScrollAnchorDirective, selector: "[kendoChatScrollAnchor]", inputs: ["autoScroll"], outputs: ["autoScrollChange"], exportAs: ["scrollAnchor"] }, { kind: "component", type: MessageListComponent, selector: "kendo-chat-message-list", inputs: ["messages", "attachmentTemplate", "authorMessageContentTemplate", "receiverMessageContentTemplate", "messageContentTemplate", "authorMessageTemplate", "receiverMessageTemplate", "messageTemplate", "timestampTemplate", "statusTemplate", "userStatusTemplate", "localization", "authorId"], outputs: ["executeAction", "navigate", "resize"] }, { kind: "component", type: MessageBoxComponent, selector: "kendo-message-box", inputs: ["authorId", "autoScroll", "suggestions", "placeholder", "inputValue", "localization", "messageBoxTemplate", "suggestionTemplate"], outputs: ["sendMessage", "executeSuggestion", "fileSelect", "fileRemove"] }, { kind: "component", type: MessageReferenceComponent, selector: "chat-message-reference-content", inputs: ["message"] }, { kind: "component", type: AppBarComponent, selector: "kendo-appbar", inputs: ["position", "positionMode", "themeColor"], exportAs: ["kendoAppBar"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[kendoButton]", inputs: ["arrowIcon", "toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }, { kind: "component", type: ContextMenuComponent, selector: "kendo-contextmenu", inputs: ["showOn", "target", "filter", "alignToAnchor", "vertical", "popupAnimate", "popupAlign", "anchorAlign", "collision", "appendTo", "ariaLabel"], outputs: ["popupOpen", "popupClose", "select", "open", "close"], exportAs: ["kendoContextMenu"] }] });
|
|
558
717
|
}
|
|
559
718
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatComponent, decorators: [{
|
|
560
719
|
type: Component,
|
|
@@ -562,6 +721,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
562
721
|
providers: [
|
|
563
722
|
LocalizationService,
|
|
564
723
|
ChatService,
|
|
724
|
+
SuggestionsScrollService,
|
|
565
725
|
{
|
|
566
726
|
provide: L10N_PREFIX,
|
|
567
727
|
useValue: 'kendo.chat'
|
|
@@ -617,10 +777,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
617
777
|
|
|
618
778
|
i18n-downloadAllFilesText="kendo.chat.downloadAllFilesText|Sets the text that is displayed in the download section of the message."
|
|
619
779
|
downloadAllFilesText="Download all"
|
|
780
|
+
|
|
781
|
+
i18n-previousSuggestionsButtonTitle="kendo.chat.previousSuggestionsButtonTitle|The title of the button that scrolls to the previous suggestions"
|
|
782
|
+
previousSuggestionsButtonTitle="Scroll left"
|
|
783
|
+
|
|
784
|
+
i18n-nextSuggestionsButtonTitle="kendo.chat.nextSuggestionsButtonTitle|The title of the button that scrolls to the next suggestions"
|
|
785
|
+
nextSuggestionsButtonTitle="Scroll right"
|
|
620
786
|
>
|
|
621
787
|
</ng-container>
|
|
622
788
|
|
|
623
|
-
<kendo-appbar *ngIf="chatHeaderTemplate" class="k-chat-header" positionMode="sticky">
|
|
789
|
+
<kendo-appbar *ngIf="chatHeaderTemplate" class="k-chat-header" positionMode="sticky" themeColor="inherit">
|
|
624
790
|
<ng-container *ngTemplateOutlet="chatHeaderTemplate.templateRef"></ng-container>
|
|
625
791
|
</kendo-appbar>
|
|
626
792
|
<div class="k-message-reference k-message-reference-receiver k-message-pinned" *ngIf="pinnedMessage" (click)="scrollToPinnedMessage()">
|
|
@@ -636,7 +802,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
636
802
|
</div>
|
|
637
803
|
<div
|
|
638
804
|
#messageList
|
|
639
|
-
class="k-message-list
|
|
805
|
+
class="k-message-list"
|
|
640
806
|
aria-live="polite"
|
|
641
807
|
role="log"
|
|
642
808
|
kendoChatScrollAnchor
|
|
@@ -644,19 +810,32 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
644
810
|
#anchor="scrollAnchor"
|
|
645
811
|
[(autoScroll)]="autoScroll"
|
|
646
812
|
>
|
|
647
|
-
<
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
813
|
+
<div *ngIf="processedMessages && processedMessages.length === 0; else chatMessageList" class="k-message-list-content k-message-list-content-empty">
|
|
814
|
+
<ng-template
|
|
815
|
+
[ngTemplateOutlet]="chatNoDataTemplate?.templateRef">
|
|
816
|
+
</ng-template>
|
|
817
|
+
</div>
|
|
818
|
+
<ng-template #chatMessageList>
|
|
819
|
+
<kendo-chat-message-list
|
|
820
|
+
[messages]="processedMessages"
|
|
821
|
+
[authorMessageContentTemplate]="authorMessageContentTemplate"
|
|
822
|
+
[receiverMessageContentTemplate]="receiverMessageContentTemplate"
|
|
823
|
+
[messageContentTemplate]="messageContentTemplate"
|
|
824
|
+
[authorMessageTemplate]="authorMessageTemplate"
|
|
825
|
+
[receiverMessageTemplate]="receiverMessageTemplate"
|
|
826
|
+
[messageTemplate]="messageTemplate"
|
|
827
|
+
[timestampTemplate]="timestampTemplate"
|
|
828
|
+
[statusTemplate]="statusTemplate"
|
|
829
|
+
[userStatusTemplate]="userStatusTemplate"
|
|
830
|
+
[localization]="localizationText"
|
|
831
|
+
[attachmentTemplate]="attachmentTemplate"
|
|
832
|
+
[authorId]="authorId"
|
|
833
|
+
(executeAction)="dispatchAction($event)"
|
|
834
|
+
(resize)="anchor.scrollToBottom()"
|
|
835
|
+
(navigate)="this.autoScroll = false"
|
|
836
|
+
>
|
|
837
|
+
</kendo-chat-message-list>
|
|
838
|
+
</ng-template>
|
|
660
839
|
</div>
|
|
661
840
|
<kendo-message-box
|
|
662
841
|
#messageBox
|
|
@@ -674,9 +853,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
674
853
|
(fileRemove)="fileRemove.emit($event)"
|
|
675
854
|
>
|
|
676
855
|
</kendo-message-box>
|
|
856
|
+
|
|
857
|
+
<kendo-contextmenu
|
|
858
|
+
#messagesContextMenu
|
|
859
|
+
[items]="contextMenuActions"
|
|
860
|
+
[popupAlign]="{ horizontal: 'right', vertical: 'top' }"
|
|
861
|
+
[collision]="{ horizontal: 'flip', vertical: 'flip'}"
|
|
862
|
+
(popupClose)="handleMenuClose($event)"
|
|
863
|
+
(select)="onContextMenuAction($event.item.originalAction)"
|
|
864
|
+
></kendo-contextmenu>
|
|
677
865
|
`,
|
|
678
866
|
standalone: true,
|
|
679
|
-
imports: [LocalizedMessagesDirective, ScrollAnchorDirective, MessageListComponent, MessageBoxComponent, MessageReferenceComponent, AppBarComponent, NgTemplateOutlet, NgIf, IconWrapperComponent, KENDO_BUTTON]
|
|
867
|
+
imports: [LocalizedMessagesDirective, ScrollAnchorDirective, MessageListComponent, MessageBoxComponent, MessageReferenceComponent, AppBarComponent, NgTemplateOutlet, NgIf, IconWrapperComponent, KENDO_BUTTON, ContextMenuComponent]
|
|
680
868
|
}]
|
|
681
869
|
}], ctorParameters: () => [{ type: i1.LocalizationService }, { type: i0.NgZone }, { type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i2.ChatService }], propDecorators: { messages: [{
|
|
682
870
|
type: Input
|
|
@@ -692,6 +880,12 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
692
880
|
type: Input
|
|
693
881
|
}], messageWidthMode: [{
|
|
694
882
|
type: Input
|
|
883
|
+
}], timestampVisibility: [{
|
|
884
|
+
type: Input
|
|
885
|
+
}], showUsername: [{
|
|
886
|
+
type: Input
|
|
887
|
+
}], showAvatar: [{
|
|
888
|
+
type: Input
|
|
695
889
|
}], allowMessageCollapse: [{
|
|
696
890
|
type: Input
|
|
697
891
|
}], enableSpeechToText: [{
|
|
@@ -702,13 +896,21 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
702
896
|
type: Input
|
|
703
897
|
}], inputValue: [{
|
|
704
898
|
type: Input
|
|
899
|
+
}], authorMessageSettings: [{
|
|
900
|
+
type: Input
|
|
901
|
+
}], receiverMessageSettings: [{
|
|
902
|
+
type: Input
|
|
705
903
|
}], messageContextMenuActions: [{
|
|
706
904
|
type: Input
|
|
707
905
|
}], fileActions: [{
|
|
708
906
|
type: Input
|
|
709
|
-
}],
|
|
907
|
+
}], messageFilesLayout: [{
|
|
908
|
+
type: Input
|
|
909
|
+
}], suggestionsLayout: [{
|
|
710
910
|
type: Input
|
|
711
|
-
}],
|
|
911
|
+
}], quickActionsLayout: [{
|
|
912
|
+
type: Input
|
|
913
|
+
}], suggestions: [{
|
|
712
914
|
type: Input
|
|
713
915
|
}], sendButtonSettings: [{
|
|
714
916
|
type: Input
|
|
@@ -742,12 +944,33 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
742
944
|
}], dirAttr: [{
|
|
743
945
|
type: HostBinding,
|
|
744
946
|
args: ['attr.dir']
|
|
947
|
+
}], messagesContextMenu: [{
|
|
948
|
+
type: ViewChild,
|
|
949
|
+
args: ['messagesContextMenu']
|
|
745
950
|
}], attachmentTemplate: [{
|
|
746
951
|
type: ContentChild,
|
|
747
952
|
args: [AttachmentTemplateDirective]
|
|
748
953
|
}], chatHeaderTemplate: [{
|
|
749
954
|
type: ContentChild,
|
|
750
955
|
args: [ChatHeaderTemplateDirective]
|
|
956
|
+
}], chatNoDataTemplate: [{
|
|
957
|
+
type: ContentChild,
|
|
958
|
+
args: [NoDataTemplateDirective]
|
|
959
|
+
}], authorMessageContentTemplate: [{
|
|
960
|
+
type: ContentChild,
|
|
961
|
+
args: [AuthorMessageContentTemplateDirective]
|
|
962
|
+
}], receiverMessageContentTemplate: [{
|
|
963
|
+
type: ContentChild,
|
|
964
|
+
args: [ReceiverMessageContentTemplateDirective]
|
|
965
|
+
}], messageContentTemplate: [{
|
|
966
|
+
type: ContentChild,
|
|
967
|
+
args: [MessageContentTemplateDirective]
|
|
968
|
+
}], authorMessageTemplate: [{
|
|
969
|
+
type: ContentChild,
|
|
970
|
+
args: [AuthorMessageTemplateDirective]
|
|
971
|
+
}], receiverMessageTemplate: [{
|
|
972
|
+
type: ContentChild,
|
|
973
|
+
args: [ReceiverMessageTemplateDirective]
|
|
751
974
|
}], messageTemplate: [{
|
|
752
975
|
type: ContentChild,
|
|
753
976
|
args: [MessageTemplateDirective]
|
|
@@ -763,6 +986,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
763
986
|
}], messageBoxTemplate: [{
|
|
764
987
|
type: ContentChild,
|
|
765
988
|
args: [ChatMessageBoxTemplateDirective]
|
|
989
|
+
}], userStatusTemplate: [{
|
|
990
|
+
type: ContentChild,
|
|
991
|
+
args: [ChatUserStatusTemplateDirective]
|
|
766
992
|
}], messageBox: [{
|
|
767
993
|
type: ViewChild,
|
|
768
994
|
args: ['messageBox']
|