@progress/kendo-angular-conversational-ui 21.4.1-develop.1 → 22.0.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/ai-prompt/localization/messages.d.ts +1 -1
  2. package/ai-prompt/views/base-view.d.ts +1 -1
  3. package/chat/l10n/messages.d.ts +1 -1
  4. package/fesm2022/progress-kendo-angular-conversational-ui.mjs +182 -182
  5. package/inline-ai-prompt/localization/messages.d.ts +1 -1
  6. package/package.json +17 -25
  7. package/esm2022/ai-prompt/aiprompt.component.mjs +0 -556
  8. package/esm2022/ai-prompt/aiprompt.module.mjs +0 -53
  9. package/esm2022/ai-prompt/common/aiprompt.service.mjs +0 -75
  10. package/esm2022/ai-prompt/common/output-card.component.mjs +0 -230
  11. package/esm2022/ai-prompt/common/toolbar-focusable.directive.mjs +0 -72
  12. package/esm2022/ai-prompt/common/toolbar-navigation.service.mjs +0 -56
  13. package/esm2022/ai-prompt/localization/custom-messages.component.mjs +0 -54
  14. package/esm2022/ai-prompt/localization/localized-messages.directive.mjs +0 -39
  15. package/esm2022/ai-prompt/localization/messages.mjs +0 -77
  16. package/esm2022/ai-prompt/models/ai-prompt-settings.mjs +0 -5
  17. package/esm2022/ai-prompt/models/command-execute-event.mjs +0 -5
  18. package/esm2022/ai-prompt/models/command.interface.mjs +0 -5
  19. package/esm2022/ai-prompt/models/index.mjs +0 -5
  20. package/esm2022/ai-prompt/models/output-rating-change-event.mjs +0 -5
  21. package/esm2022/ai-prompt/models/prompt-output.interface.mjs +0 -5
  22. package/esm2022/ai-prompt/models/prompt-request-event.mjs +0 -5
  23. package/esm2022/ai-prompt/models/view-type.mjs +0 -5
  24. package/esm2022/ai-prompt/templates/aiprompt-output-body-template.directive.mjs +0 -33
  25. package/esm2022/ai-prompt/templates/aiprompt-output-template.directive.mjs +0 -33
  26. package/esm2022/ai-prompt/templates/toolbar-actions.template.mjs +0 -39
  27. package/esm2022/ai-prompt/utils.mjs +0 -26
  28. package/esm2022/ai-prompt/views/base-view.mjs +0 -98
  29. package/esm2022/ai-prompt/views/command-view.component.mjs +0 -100
  30. package/esm2022/ai-prompt/views/custom-view.component.mjs +0 -50
  31. package/esm2022/ai-prompt/views/index.mjs +0 -8
  32. package/esm2022/ai-prompt/views/output-view.component.mjs +0 -90
  33. package/esm2022/ai-prompt/views/prompt-view.component.mjs +0 -288
  34. package/esm2022/chat/api/action.interface.mjs +0 -5
  35. package/esm2022/chat/api/attachment.interface.mjs +0 -5
  36. package/esm2022/chat/api/chat-file-interface.mjs +0 -5
  37. package/esm2022/chat/api/chat-suggestion.interface.mjs +0 -5
  38. package/esm2022/chat/api/execute-action-event.mjs +0 -29
  39. package/esm2022/chat/api/file-action.mjs +0 -5
  40. package/esm2022/chat/api/file-download-event.interface.mjs +0 -5
  41. package/esm2022/chat/api/files-layout.mjs +0 -5
  42. package/esm2022/chat/api/index.mjs +0 -21
  43. package/esm2022/chat/api/message-action.mjs +0 -5
  44. package/esm2022/chat/api/message-settings.interface.mjs +0 -5
  45. package/esm2022/chat/api/message-width-mode.mjs +0 -5
  46. package/esm2022/chat/api/message.interface.mjs +0 -5
  47. package/esm2022/chat/api/post-message-event.mjs +0 -21
  48. package/esm2022/chat/api/preventable-event.mjs +0 -28
  49. package/esm2022/chat/api/send-button-settings.mjs +0 -5
  50. package/esm2022/chat/api/suggestions-layout.mjs +0 -5
  51. package/esm2022/chat/api/timestamp-visibility.mjs +0 -5
  52. package/esm2022/chat/api/user.interface.mjs +0 -5
  53. package/esm2022/chat/attachment.component.mjs +0 -105
  54. package/esm2022/chat/builtin-actions.mjs +0 -27
  55. package/esm2022/chat/cards/hero-card.component.mjs +0 -131
  56. package/esm2022/chat/chat-file.component.mjs +0 -144
  57. package/esm2022/chat/chat-item.mjs +0 -10
  58. package/esm2022/chat/chat-view.mjs +0 -80
  59. package/esm2022/chat/chat.component.mjs +0 -1015
  60. package/esm2022/chat/chat.directives.mjs +0 -18
  61. package/esm2022/chat/chat.module.mjs +0 -61
  62. package/esm2022/chat/common/chat.service.mjs +0 -179
  63. package/esm2022/chat/common/models/default-model-fields.mjs +0 -25
  64. package/esm2022/chat/common/models/formatted-text-parts.mjs +0 -5
  65. package/esm2022/chat/common/models/message-box-options.mjs +0 -5
  66. package/esm2022/chat/common/models/model-fields.mjs +0 -5
  67. package/esm2022/chat/common/scroll-anchor.directive.mjs +0 -80
  68. package/esm2022/chat/common/scroll-button.component.mjs +0 -81
  69. package/esm2022/chat/common/scroll.service.mjs +0 -110
  70. package/esm2022/chat/common/utils.mjs +0 -159
  71. package/esm2022/chat/l10n/custom-messages.component.mjs +0 -55
  72. package/esm2022/chat/l10n/localized-messages.directive.mjs +0 -40
  73. package/esm2022/chat/l10n/messages.mjs +0 -130
  74. package/esm2022/chat/message-attachments.component.mjs +0 -258
  75. package/esm2022/chat/message-box.component.mjs +0 -501
  76. package/esm2022/chat/message-list.component.mjs +0 -617
  77. package/esm2022/chat/message-reference-content.component.mjs +0 -86
  78. package/esm2022/chat/message.component.mjs +0 -740
  79. package/esm2022/chat/suggested-actions.component.mjs +0 -443
  80. package/esm2022/chat/templates/attachment-template.directive.mjs +0 -43
  81. package/esm2022/chat/templates/author-message-content-template.directive.mjs +0 -39
  82. package/esm2022/chat/templates/author-message-template.directive.mjs +0 -39
  83. package/esm2022/chat/templates/header-template.directive.mjs +0 -33
  84. package/esm2022/chat/templates/message-box.directive.mjs +0 -36
  85. package/esm2022/chat/templates/message-content-template.directive.mjs +0 -39
  86. package/esm2022/chat/templates/message-template.directive.mjs +0 -39
  87. package/esm2022/chat/templates/no-data-template.directive.mjs +0 -38
  88. package/esm2022/chat/templates/receiver-message-content-template.directive.mjs +0 -39
  89. package/esm2022/chat/templates/receiver-message-template.directive.mjs +0 -39
  90. package/esm2022/chat/templates/status-template.directive.mjs +0 -33
  91. package/esm2022/chat/templates/suggestion-template.directive.mjs +0 -36
  92. package/esm2022/chat/templates/timestamp-template.directive.mjs +0 -42
  93. package/esm2022/chat/templates/user-status-template.directive.mjs +0 -38
  94. package/esm2022/conversational-ui.module.mjs +0 -73
  95. package/esm2022/directives.mjs +0 -145
  96. package/esm2022/index.mjs +0 -40
  97. package/esm2022/inline-ai-prompt/inlineaiprompt-content.component.mjs +0 -548
  98. package/esm2022/inline-ai-prompt/inlineaiprompt.component.mjs +0 -351
  99. package/esm2022/inline-ai-prompt/inlineaiprompt.module.mjs +0 -46
  100. package/esm2022/inline-ai-prompt/inlineaiprompt.service.mjs +0 -92
  101. package/esm2022/inline-ai-prompt/localization/custom-messages.component.mjs +0 -51
  102. package/esm2022/inline-ai-prompt/localization/localized-messages.directive.mjs +0 -39
  103. package/esm2022/inline-ai-prompt/localization/messages.mjs +0 -35
  104. package/esm2022/inline-ai-prompt/models/command.interface.mjs +0 -5
  105. package/esm2022/inline-ai-prompt/models/index.mjs +0 -5
  106. package/esm2022/inline-ai-prompt/models/inlineaiprompt-popupsettings.mjs +0 -5
  107. package/esm2022/inline-ai-prompt/models/inlineaiprompt-settings.mjs +0 -59
  108. package/esm2022/inline-ai-prompt/models/messages.mjs +0 -8
  109. package/esm2022/inline-ai-prompt/models/output-action-click-event.mjs +0 -5
  110. package/esm2022/inline-ai-prompt/models/output-action.interface.mjs +0 -5
  111. package/esm2022/inline-ai-prompt/models/prompt-output.interface.mjs +0 -5
  112. package/esm2022/inline-ai-prompt/models/prompt-request-event.mjs +0 -5
  113. package/esm2022/inline-ai-prompt/output-template.directive.mjs +0 -38
  114. package/esm2022/inline-ai-prompt/utils.mjs +0 -57
  115. package/esm2022/package-metadata.mjs +0 -16
  116. package/esm2022/progress-kendo-angular-conversational-ui.mjs +0 -8
@@ -1,18 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 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';
@@ -1,61 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { ResizeBatchService } from '@progress/kendo-angular-common';
6
- import { NgModule } from '@angular/core';
7
- import { IconsService } from '@progress/kendo-angular-icons';
8
- import { KENDO_CHAT } from '../directives';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "./chat.component";
11
- import * as i2 from "./l10n/custom-messages.component";
12
- import * as i3 from "./templates/attachment-template.directive";
13
- import * as i4 from "./templates/author-message-content-template.directive";
14
- import * as i5 from "./templates/receiver-message-content-template.directive";
15
- import * as i6 from "./templates/message-content-template.directive";
16
- import * as i7 from "./templates/author-message-template.directive";
17
- import * as i8 from "./templates/receiver-message-template.directive";
18
- import * as i9 from "./templates/message-template.directive";
19
- import * as i10 from "./cards/hero-card.component";
20
- import * as i11 from "./templates/message-box.directive";
21
- import * as i12 from "./templates/header-template.directive";
22
- import * as i13 from "./templates/no-data-template.directive";
23
- import * as i14 from "./templates/timestamp-template.directive";
24
- import * as i15 from "./templates/status-template.directive";
25
- import * as i16 from "./templates/suggestion-template.directive";
26
- import * as i17 from "./templates/user-status-template.directive";
27
- // IMPORTANT: NgModule export kept for backwards compatibility
28
- /**
29
- * Represents the [`NgModule`](link:site.data.urls.angular['ngmodules']) for the Chat component.
30
- *
31
- * @example
32
- * ```ts-no-run
33
- * import { NgModule } from '@angular/core';
34
- * import { Component } from '@angular/core';
35
- * import { BrowserModule } from '@angular/platform-browser';
36
- *
37
- * import { ChatModule } from '@progress/kendo-angular-conversational-ui';
38
- * import { AppComponent } from './app.component';
39
- *
40
- * _@NgModule({
41
- * imports: [BrowserModule, ChatModule],
42
- * declarations: [AppComponent],
43
- * bootstrap: [AppComponent]
44
- * })
45
- *
46
- * export class AppModule { }
47
- * ```
48
- */
49
- export class ChatModule {
50
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
51
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, imports: [i1.ChatComponent, i2.CustomMessagesComponent, i3.AttachmentTemplateDirective, i4.AuthorMessageContentTemplateDirective, i5.ReceiverMessageContentTemplateDirective, i6.MessageContentTemplateDirective, i7.AuthorMessageTemplateDirective, i8.ReceiverMessageTemplateDirective, i9.MessageTemplateDirective, i10.HeroCardComponent, i11.ChatMessageBoxTemplateDirective, i12.ChatHeaderTemplateDirective, i13.NoDataTemplateDirective, i14.ChatTimestampTemplateDirective, i15.ChatStatusTemplateDirective, i16.ChatSuggestionTemplateDirective, i17.ChatUserStatusTemplateDirective], exports: [i1.ChatComponent, i2.CustomMessagesComponent, i3.AttachmentTemplateDirective, i4.AuthorMessageContentTemplateDirective, i5.ReceiverMessageContentTemplateDirective, i6.MessageContentTemplateDirective, i7.AuthorMessageTemplateDirective, i8.ReceiverMessageTemplateDirective, i9.MessageTemplateDirective, i10.HeroCardComponent, i11.ChatMessageBoxTemplateDirective, i12.ChatHeaderTemplateDirective, i13.NoDataTemplateDirective, i14.ChatTimestampTemplateDirective, i15.ChatStatusTemplateDirective, i16.ChatSuggestionTemplateDirective, i17.ChatUserStatusTemplateDirective] });
52
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, providers: [IconsService, ResizeBatchService], imports: [i1.ChatComponent, i10.HeroCardComponent] });
53
- }
54
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatModule, decorators: [{
55
- type: NgModule,
56
- args: [{
57
- exports: [...KENDO_CHAT],
58
- imports: [...KENDO_CHAT],
59
- providers: [IconsService, ResizeBatchService]
60
- }]
61
- }] });
@@ -1,179 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Injectable } from '@angular/core';
6
- import { Subject } from 'rxjs';
7
- import { STB_DEFAULT_SETTINGS, SEND_BTN_DEFAULT_SETTINGS, FILESELECT_DEFAULT_SETTINGS, SUGGESTIONS_LAYOUT_DEFAULT_SETTINGS } from './utils';
8
- import * as i0 from "@angular/core";
9
- /**
10
- * @hidden
11
- */
12
- export class ChatService {
13
- authorId;
14
- messageWidthMode;
15
- messageToolbarActions = [];
16
- messageContextMenuActions = [];
17
- calculatedContextMenuActions = [];
18
- fileActions = [];
19
- toggleMessageState = false;
20
- reply;
21
- messages = [];
22
- chatElement;
23
- messageElementsMap = new Map();
24
- messagesContextMenu;
25
- activeMessage;
26
- activeMessageElement;
27
- selectOnMenuClose = false;
28
- active = false;
29
- messageFilesLayout = 'vertical';
30
- timestampVisibility = 'focus';
31
- showUsername = true;
32
- showAvatar = true;
33
- _enableSpeechToText = STB_DEFAULT_SETTINGS;
34
- _enableFileSelect = FILESELECT_DEFAULT_SETTINGS;
35
- _sendButtonSettings = SEND_BTN_DEFAULT_SETTINGS;
36
- _suggestionsLayout = SUGGESTIONS_LAYOUT_DEFAULT_SETTINGS;
37
- _quickActionsLayout = SUGGESTIONS_LAYOUT_DEFAULT_SETTINGS;
38
- _authorMessageSettings;
39
- _receiverMessageSettings;
40
- _allowMessageCollapse;
41
- subjects = {
42
- toolbarAction: new Subject(),
43
- contextMenuAction: new Subject(),
44
- fileAction: new Subject(),
45
- fileDownload: new Subject(),
46
- replyReferenceClick: new Subject(),
47
- inputValueChange: new Subject(),
48
- contextMenuVisibilityChange: new Subject(),
49
- suggestionsLayoutChange: new Subject(),
50
- quickActionsLayoutChange: new Subject(),
51
- authorMessageSettingsChange: new Subject(),
52
- receiverMessageSettingsChange: new Subject(),
53
- allowMessageCollapseChange: new Subject(),
54
- };
55
- toolbarAction$ = this.subjects.toolbarAction.asObservable();
56
- contextMenuAction$ = this.subjects.contextMenuAction.asObservable();
57
- fileAction$ = this.subjects.fileAction.asObservable();
58
- fileDownload$ = this.subjects.fileDownload.asObservable();
59
- replyReferenceClick$ = this.subjects.replyReferenceClick.asObservable();
60
- inputValueChange$ = this.subjects.inputValueChange.asObservable();
61
- contextMenuVisibilityChange$ = this.subjects.contextMenuVisibilityChange.asObservable();
62
- suggestionsLayoutChange$ = this.subjects.suggestionsLayoutChange.asObservable();
63
- quickActionsLayoutChange$ = this.subjects.quickActionsLayoutChange.asObservable();
64
- authorMessageSettingsChange$ = this.subjects.authorMessageSettingsChange.asObservable();
65
- receiverMessageSettingsChange$ = this.subjects.receiverMessageSettingsChange.asObservable();
66
- allowMessageCollapseChange$ = this.subjects.allowMessageCollapseChange.asObservable();
67
- set authorMessageSettings(settings) {
68
- const previousSettings = this._authorMessageSettings;
69
- if (JSON.stringify(previousSettings) !== JSON.stringify(settings)) {
70
- this.updateComponentSettings('_authorMessageSettings', settings, null);
71
- this.emit('authorMessageSettingsChange', this._authorMessageSettings);
72
- }
73
- }
74
- get authorMessageSettings() {
75
- return this._authorMessageSettings;
76
- }
77
- set receiverMessageSettings(settings) {
78
- const previousSettings = this._receiverMessageSettings;
79
- if (JSON.stringify(previousSettings) !== JSON.stringify(settings)) {
80
- this.updateComponentSettings('_receiverMessageSettings', settings, null);
81
- this.emit('receiverMessageSettingsChange', this._receiverMessageSettings);
82
- }
83
- }
84
- get receiverMessageSettings() {
85
- return this._receiverMessageSettings;
86
- }
87
- set enableSpeechToText(settings) {
88
- this.updateComponentSettings('_enableSpeechToText', settings, STB_DEFAULT_SETTINGS);
89
- }
90
- get enableSpeechToText() {
91
- return this._enableSpeechToText;
92
- }
93
- set enableFileSelect(settings) {
94
- this.updateComponentSettings('_enableFileSelect', settings, FILESELECT_DEFAULT_SETTINGS);
95
- }
96
- get enableFileSelect() {
97
- return this._enableFileSelect;
98
- }
99
- set sendButtonSettings(settings) {
100
- this.updateComponentSettings('_sendButtonSettings', settings, SEND_BTN_DEFAULT_SETTINGS);
101
- }
102
- get sendButtonSettings() {
103
- return this._sendButtonSettings;
104
- }
105
- set suggestionsLayout(layoutMode) {
106
- this._suggestionsLayout = layoutMode;
107
- this.emit('suggestionsLayoutChange', this._suggestionsLayout);
108
- }
109
- get suggestionsLayout() {
110
- return this._suggestionsLayout;
111
- }
112
- set quickActionsLayout(layoutMode) {
113
- this._quickActionsLayout = layoutMode;
114
- this.emit('quickActionsLayoutChange', this._quickActionsLayout);
115
- }
116
- get quickActionsLayout() {
117
- return this._quickActionsLayout;
118
- }
119
- set allowMessageCollapse(value) {
120
- const previousValue = this._allowMessageCollapse;
121
- if (previousValue !== value) {
122
- this._allowMessageCollapse = value;
123
- this.emit('allowMessageCollapseChange', this._allowMessageCollapse);
124
- }
125
- }
126
- get allowMessageCollapse() {
127
- return this._allowMessageCollapse;
128
- }
129
- calculateContextMenuActions(isOwn) {
130
- const settings = isOwn ? this.authorMessageSettings : this.receiverMessageSettings;
131
- if (settings?.messageContextMenuActions) {
132
- this.calculatedContextMenuActions = settings.messageContextMenuActions;
133
- return;
134
- }
135
- this.calculatedContextMenuActions = this.messageContextMenuActions || [];
136
- }
137
- emit(subjectKey, value) {
138
- (this.subjects[subjectKey]).next(value);
139
- }
140
- getMessageById(id) {
141
- return this.messages.find(message => message.id === id);
142
- }
143
- registerMessageElement(messageId, elementRef) {
144
- this.messageElementsMap.set(messageId, elementRef);
145
- }
146
- unregisterMessageElement(messageId) {
147
- this.messageElementsMap.delete(messageId);
148
- if (this.reply?.id === messageId) {
149
- this.reply = null;
150
- }
151
- }
152
- scrollToMessage(messageId) {
153
- const elementRef = this.messageElementsMap.get(messageId);
154
- if (elementRef?.nativeElement) {
155
- elementRef.nativeElement.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
156
- }
157
- }
158
- focusActiveMessageElement() {
159
- if (this.activeMessageElement) {
160
- this.activeMessageElement.element?.nativeElement?.focus();
161
- }
162
- }
163
- updateComponentSettings(property, settings, defaultSettings) {
164
- if (settings === true) {
165
- this[property] = defaultSettings;
166
- }
167
- else if (settings === false) {
168
- this[property] = null;
169
- }
170
- else {
171
- this[property] = { ...defaultSettings, ...settings };
172
- }
173
- }
174
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
175
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatService });
176
- }
177
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatService, decorators: [{
178
- type: Injectable
179
- }] });
@@ -1,25 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- /**
6
- * @hidden
7
- */
8
- export const defaultModelFields = {
9
- idField: 'id',
10
- textField: 'text',
11
- authorIdField: 'authorId',
12
- authorNameField: 'authorName',
13
- authorImageUrlField: 'authorImageUrl',
14
- authorImageAltTextField: 'authorImageAltText',
15
- timestampField: 'timestamp',
16
- statusField: 'status',
17
- filesField: 'files',
18
- attachmentsField: 'attachments',
19
- attachmentLayoutField: 'attachmentLayout',
20
- suggestedActionsField: 'suggestedActions',
21
- isPinnedField: 'isPinned',
22
- replyToIdField: 'replyToId',
23
- isDeletedField: 'isDeleted',
24
- typingField: 'typing'
25
- };
@@ -1,5 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- export {};
@@ -1,5 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- export {};
@@ -1,5 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- export {};
@@ -1,80 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Directive, ElementRef, EventEmitter, HostBinding, Input, NgZone, Output, Renderer2 } from '@angular/core';
6
- import * as i0 from "@angular/core";
7
- // Consider scroll to be at the bottom when within this number of pixels from the container height.
8
- const maxDelta = 2;
9
- /**
10
- * @hidden
11
- */
12
- export class ScrollAnchorDirective {
13
- element;
14
- zone;
15
- renderer;
16
- autoScroll = true;
17
- autoScrollChange = new EventEmitter();
18
- overflowAnchor = 'none';
19
- scrolling = false;
20
- unsubscribe;
21
- constructor(element, zone, renderer) {
22
- this.element = element;
23
- this.zone = zone;
24
- this.renderer = renderer;
25
- }
26
- ngOnInit() {
27
- this.zone.runOutsideAngular(() => {
28
- this.unsubscribe = this.renderer.listen(this.element.nativeElement, 'scroll', () => this.onScroll());
29
- });
30
- }
31
- ngAfterViewInit() {
32
- this.scrollToBottom();
33
- }
34
- ngOnDestroy() {
35
- if (this.unsubscribe) {
36
- this.unsubscribe();
37
- }
38
- }
39
- onScroll() {
40
- if (this.scrolling) {
41
- return;
42
- }
43
- const el = this.element.nativeElement;
44
- const bottom = el.scrollTop + el.offsetHeight;
45
- const height = el.scrollHeight;
46
- const atBottom = height - bottom < maxDelta;
47
- if (this.autoScroll !== atBottom) {
48
- this.zone.run(() => {
49
- this.autoScroll = atBottom;
50
- this.autoScrollChange.emit(this.autoScroll);
51
- });
52
- }
53
- }
54
- scrollToBottom() {
55
- if (!this.autoScroll) {
56
- return;
57
- }
58
- const el = this.element.nativeElement;
59
- el.scrollTop = el.scrollHeight - el.clientHeight;
60
- this.scrolling = true;
61
- this.zone.runOutsideAngular(() => setTimeout(() => this.scrolling = false, 1000));
62
- }
63
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScrollAnchorDirective, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });
64
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScrollAnchorDirective, isStandalone: true, selector: "[kendoChatScrollAnchor]", inputs: { autoScroll: "autoScroll" }, outputs: { autoScrollChange: "autoScrollChange" }, host: { properties: { "style.overflow-anchor": "this.overflowAnchor" } }, exportAs: ["scrollAnchor"], ngImport: i0 });
65
- }
66
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScrollAnchorDirective, decorators: [{
67
- type: Directive,
68
- args: [{
69
- selector: '[kendoChatScrollAnchor]',
70
- exportAs: 'scrollAnchor',
71
- standalone: true
72
- }]
73
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: i0.Renderer2 }], propDecorators: { autoScroll: [{
74
- type: Input
75
- }], autoScrollChange: [{
76
- type: Output
77
- }], overflowAnchor: [{
78
- type: HostBinding,
79
- args: ['style.overflow-anchor']
80
- }] } });
@@ -1,81 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Component, ElementRef, HostBinding, Input, Renderer2, NgZone, Output, EventEmitter, } from '@angular/core';
6
- import { Subscription } from 'rxjs';
7
- import { chevronLeftIcon, chevronRightIcon } from '@progress/kendo-svg-icons';
8
- import { LocalizationService } from '@progress/kendo-angular-l10n';
9
- import { IconWrapperComponent } from '@progress/kendo-angular-icons';
10
- import * as i0 from "@angular/core";
11
- import * as i1 from "@progress/kendo-angular-l10n";
12
- const DIRECTION_CLASSES = {
13
- left: 'chevron-left',
14
- right: 'chevron-right',
15
- };
16
- /**
17
- * @hidden
18
- */
19
- export class ChatScrollableButtonComponent {
20
- host;
21
- renderer;
22
- ngZone;
23
- localization;
24
- role = 'button';
25
- prev = false;
26
- onClick = new EventEmitter();
27
- get scrollButtonIconClass() {
28
- const defaultPrevIcon = !this.localization.rtl ? DIRECTION_CLASSES.left : DIRECTION_CLASSES.right;
29
- const defaultNextIcon = !this.localization.rtl ? DIRECTION_CLASSES.right : DIRECTION_CLASSES.left;
30
- return this.prev ? defaultPrevIcon : defaultNextIcon;
31
- }
32
- get scrollButtonSVGIcon() {
33
- const defaultPrevSVGIcon = !this.localization.rtl ? this.chevronLeftIcon : this.chevronRightIcon;
34
- const defaultNextSVGIcon = !this.localization.rtl ? this.chevronRightIcon : this.chevronLeftIcon;
35
- return this.prev ? defaultPrevSVGIcon : defaultNextSVGIcon;
36
- }
37
- chevronLeftIcon = chevronLeftIcon;
38
- chevronRightIcon = chevronRightIcon;
39
- subs = new Subscription();
40
- constructor(host, renderer, ngZone, localization) {
41
- this.host = host;
42
- this.renderer = renderer;
43
- this.ngZone = ngZone;
44
- this.localization = localization;
45
- }
46
- ngAfterViewInit() {
47
- this.ngZone.runOutsideAngular(() => {
48
- this.subs.add(this.renderer.listen(this.host.nativeElement, 'click', () => this.clickHandler()));
49
- });
50
- }
51
- ngOnDestroy() {
52
- this.subs.unsubscribe();
53
- }
54
- clickHandler() {
55
- const buttonType = this.prev ? 'prev' : 'next';
56
- this.onClick.emit(buttonType);
57
- }
58
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatScrollableButtonComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Component });
59
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ChatScrollableButtonComponent, isStandalone: true, selector: "[kendoChatScrollableButton]", inputs: { prev: "prev" }, outputs: { onClick: "onClick" }, host: { properties: { "attr.role": "this.role" } }, ngImport: i0, template: `
60
- <kendo-icon-wrapper [name]="scrollButtonIconClass" [svgIcon]="scrollButtonSVGIcon" innerCssClass="k-button-icon"> </kendo-icon-wrapper>
61
- `, isInline: true, dependencies: [{ kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }] });
62
- }
63
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ChatScrollableButtonComponent, decorators: [{
64
- type: Component,
65
- args: [{
66
- template: `
67
- <kendo-icon-wrapper [name]="scrollButtonIconClass" [svgIcon]="scrollButtonSVGIcon" innerCssClass="k-button-icon"> </kendo-icon-wrapper>
68
- `,
69
- // eslint-disable-next-line @angular-eslint/component-selector
70
- selector: '[kendoChatScrollableButton]',
71
- standalone: true,
72
- imports: [IconWrapperComponent],
73
- }]
74
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.NgZone }, { type: i1.LocalizationService }], propDecorators: { role: [{
75
- type: HostBinding,
76
- args: ['attr.role']
77
- }], prev: [{
78
- type: Input
79
- }], onClick: [{
80
- type: Output
81
- }] } });
@@ -1,110 +0,0 @@
1
- /**-----------------------------------------------------------------------------------------
2
- * Copyright © 2026 Progress Software Corporation. All rights reserved.
3
- * Licensed under commercial license. See LICENSE.md in the project root for more information
4
- *-------------------------------------------------------------------------------------------*/
5
- import { Injectable, NgZone } from '@angular/core';
6
- import { isDocumentAvailable } from '@progress/kendo-angular-common';
7
- import { Subject } from 'rxjs';
8
- import { LocalizationService } from '@progress/kendo-angular-l10n';
9
- import * as i0 from "@angular/core";
10
- import * as i1 from "@progress/kendo-angular-l10n";
11
- const DEFAULT_SCROLL_BEHAVIOR = 'smooth';
12
- const DEFAULT_SCROLL_SPEED = 100;
13
- /**
14
- * @hidden
15
- */
16
- export class SuggestionsScrollService {
17
- ngZone;
18
- localization;
19
- owner;
20
- position = 0;
21
- scrollButtonActiveStateChange = new Subject();
22
- get scrollElement() {
23
- return this.owner.suggestionsContainer?.nativeElement;
24
- }
25
- get scrollContainerOverflowSize() {
26
- if (!isDocumentAvailable()) {
27
- return 0;
28
- }
29
- if (!this.scrollElement) {
30
- return 0;
31
- }
32
- const overflowSize = Math.floor(this.scrollElement.scrollWidth - this.scrollElement.offsetWidth);
33
- return overflowSize < 0 ? 0 : overflowSize;
34
- }
35
- get suggestionsOverflow() {
36
- return this.scrollContainerOverflowSize > 0;
37
- }
38
- constructor(ngZone, localization) {
39
- this.ngZone = ngZone;
40
- this.localization = localization;
41
- }
42
- toggleScrollButtonsState() {
43
- const suggestedActions = this.owner;
44
- if (!suggestedActions?.hasScrollButtons) {
45
- return;
46
- }
47
- const currentPrevButtonActive = !this.isDisabled('prev');
48
- const currentNextButtonActive = !this.isDisabled('next');
49
- const defaultOffset = 1;
50
- const rtlDelta = this.localization.rtl ? -1 : 1;
51
- const calculatedPrevButtonActive = (this.position * rtlDelta) > 0 && this.scrollContainerOverflowSize > 0;
52
- const calculatedNextButtonActive = (this.position * rtlDelta) < this.scrollContainerOverflowSize - defaultOffset && this.scrollContainerOverflowSize > 0;
53
- if (calculatedPrevButtonActive !== currentPrevButtonActive) {
54
- this.ngZone.run(() => this.toggleButtonActiveState('prev', calculatedPrevButtonActive));
55
- }
56
- if (calculatedNextButtonActive !== currentNextButtonActive) {
57
- this.ngZone.run(() => this.toggleButtonActiveState('next', calculatedNextButtonActive));
58
- }
59
- }
60
- onScroll(e) {
61
- this.position = e.target.scrollLeft;
62
- this.toggleScrollButtonsState();
63
- }
64
- scrollSuggestions(direction) {
65
- this.calculateListPosition(direction, DEFAULT_SCROLL_SPEED);
66
- if (this.scrollElement) {
67
- this.scrollElement.scrollTo({ left: this.position, behavior: DEFAULT_SCROLL_BEHAVIOR });
68
- }
69
- this.toggleScrollButtonsState();
70
- }
71
- updateScrollPosition(element) {
72
- this.position = element.scrollLeft;
73
- }
74
- calculateListPosition(direction, scrollSpeed) {
75
- if (direction === 'prev') {
76
- if (!this.localization.rtl) {
77
- this.position = this.position - scrollSpeed <= 0 ? 0 : this.position - scrollSpeed;
78
- }
79
- else {
80
- this.position = this.position + scrollSpeed >= 0 ? 0 : this.position + scrollSpeed;
81
- }
82
- }
83
- else if (direction === 'next' && this.position < this.scrollContainerOverflowSize) {
84
- if (this.position + scrollSpeed > this.scrollContainerOverflowSize) {
85
- if (this.localization.rtl) {
86
- this.position = -this.scrollContainerOverflowSize;
87
- }
88
- else {
89
- this.position = this.scrollContainerOverflowSize;
90
- }
91
- return;
92
- }
93
- if (this.localization.rtl) {
94
- this.position -= scrollSpeed;
95
- }
96
- else {
97
- this.position += scrollSpeed;
98
- }
99
- }
100
- }
101
- toggleButtonActiveState(buttonType, active) {
102
- this.scrollButtonActiveStateChange.next({ buttonType, active });
103
- }
104
- isDisabled = (buttonType) => this.owner[`${buttonType}ScrollButton`]?.nativeElement.classList.contains('k-disabled');
105
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SuggestionsScrollService, deps: [{ token: i0.NgZone }, { token: i1.LocalizationService }], target: i0.ɵɵFactoryTarget.Injectable });
106
- static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SuggestionsScrollService });
107
- }
108
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SuggestionsScrollService, decorators: [{
109
- type: Injectable
110
- }], ctorParameters: () => [{ type: i0.NgZone }, { type: i1.LocalizationService }] });