@progress/kendo-angular-conversational-ui 13.4.0-develop.1 → 13.4.0-develop.3

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.
@@ -9,6 +9,7 @@ import { ComponentMessages, LocalizationService, L10N_PREFIX } from '@progress/k
9
9
  import { validatePackage } from '@progress/kendo-licensing';
10
10
  import * as i6 from '@progress/kendo-angular-common';
11
11
  import { Keys, ResizeSensorModule } from '@progress/kendo-angular-common';
12
+ import { paperPlaneIcon, chevronLeftIcon, chevronRightIcon } from '@progress/kendo-svg-icons';
12
13
  import * as i1 from '@progress/kendo-angular-buttons';
13
14
  import { ButtonModule } from '@progress/kendo-angular-buttons';
14
15
  import * as i2 from '@angular/common';
@@ -16,7 +17,6 @@ import { CommonModule } from '@angular/common';
16
17
  import * as i1$1 from '@progress/kendo-angular-intl';
17
18
  import { fromEvent, Subscription } from 'rxjs';
18
19
  import { debounceTime } from 'rxjs/operators';
19
- import { chevronLeftIcon, chevronRightIcon } from '@progress/kendo-svg-icons';
20
20
 
21
21
  /**
22
22
  * Defines a template that will be used for displaying message attachments. To define an attachment
@@ -115,8 +115,8 @@ const packageMetadata = {
115
115
  name: '@progress/kendo-angular-conversational-ui',
116
116
  productName: 'Kendo UI for Angular',
117
117
  productCodes: ['KENDOUIANGULAR', 'KENDOUICOMPLETE'],
118
- publishDate: 1692286422,
119
- version: '13.4.0-develop.1',
118
+ publishDate: 1692370663,
119
+ version: '13.4.0-develop.3',
120
120
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
121
121
  };
122
122
 
@@ -171,8 +171,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
171
171
  args: ['focusout']
172
172
  }] } });
173
173
 
174
- // tslint:disable-next-line:max-line-length
175
- const sendIcon = '<svg version="1.1" xmlns="http://www.w3.org/2000/svg" x="0px" y="0px" viewBox="0 0 16 16"><path d="M0,14.3c-0.1,0.6,0.3,0.8,0.8,0.6l14.8-6.5c0.5-0.2,0.5-0.6,0-0.8L0.8,1.1C0.3,0.9-0.1,1.1,0,1.7l0.7,4.2C0.8,6.5,1.4,7,1.9,7.1l8.8,0.8c0.6,0.1,0.6,0.1,0,0.2L1.9,8.9C1.4,9,0.8,9.5,0.7,10.1L0,14.3z"/></svg>';
176
174
  /**
177
175
  * @hidden
178
176
  */
@@ -180,6 +178,10 @@ class MessageBoxComponent {
180
178
  constructor() {
181
179
  this.hostClasses = 'k-message-box k-input k-input-md k-rounded-md k-input-solid';
182
180
  this.sendMessage = new EventEmitter();
181
+ /**
182
+ * @hidden
183
+ */
184
+ this.sendIcon = paperPlaneIcon;
183
185
  }
184
186
  get messageBoxValue() {
185
187
  return this.type === 'textarea';
@@ -237,7 +239,47 @@ class MessageBoxComponent {
237
239
  }
238
240
  }
239
241
  MessageBoxComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessageBoxComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
240
- MessageBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MessageBoxComponent, selector: "kendo-message-box", inputs: { user: "user", autoScroll: "autoScroll", type: "type", localization: "localization", messageBoxTemplate: "messageBoxTemplate" }, outputs: { sendMessage: "sendMessage" }, host: { properties: { "class": "this.hostClasses", "class.!k-align-items-end": "this.messageBoxValue" } }, viewQueries: [{ propertyName: "messageBoxInput", first: true, predicate: ["messageBoxInput"], descendants: true }], ngImport: i0, template: "\n <ng-container *ngIf=\"!messageBoxTemplate\">\n <input\n *ngIf=\"type === 'textbox'\"\n #messageBoxInput\n [attr.role]=\"'textbox'\"\n kendoChatFocusedState\n type=\"text\"\n class=\"k-textbox k-input k-input-md k-input-solid\"\n [attr.aria-label]=\"textFor('messageBoxInputLabel')\"\n [placeholder]=\"textFor('messagePlaceholder')\"\n (keydown)=\"inputKeydown($event)\"\n />\n\n <textarea\n *ngIf=\"type === 'textarea'\"\n #messageBoxInput\n [attr.role]=\"'textbox'\"\n kendoChatFocusedState\n [rows]=\"3\"\n class=\"k-textarea k-input k-input-md k-input-solid !k-overflow-y-auto k-resize-none\"\n [attr.aria-label]=\"textFor('messageBoxInputLabel')\"\n [placeholder]=\"textFor('messagePlaceholder')\"\n (keydown)=\"textAreaKeydown($event)\"\n ></textarea>\n\n <button\n kendoButton\n fillMode=\"flat\"\n class=\"k-button-send\"\n [tabindex]=\"0\"\n [attr.title]=\"textFor('send')\"\n (click)=\"sendClick()\"\n >\n <svg version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" x=\"0px\" y=\"0px\" viewBox=\"0 0 16 16\"><path d=\"M0,14.3c-0.1,0.6,0.3,0.8,0.8,0.6l14.8-6.5c0.5-0.2,0.5-0.6,0-0.8L0.8,1.1C0.3,0.9-0.1,1.1,0,1.7l0.7,4.2C0.8,6.5,1.4,7,1.9,7.1l8.8,0.8c0.6,0.1,0.6,0.1,0,0.2L1.9,8.9C1.4,9,0.8,9.5,0.7,10.1L0,14.3z\"/></svg>\n </button>\n </ng-container>\n\n <ng-template *ngIf=\"messageBoxTemplate\" [ngTemplateOutlet]=\"messageBoxTemplate?.templateRef\"></ng-template>\n", isInline: true, components: [{ type: i1.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusedStateDirective, selector: "[kendoChatFocusedState]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
242
+ MessageBoxComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MessageBoxComponent, selector: "kendo-message-box", inputs: { user: "user", autoScroll: "autoScroll", type: "type", localization: "localization", messageBoxTemplate: "messageBoxTemplate" }, outputs: { sendMessage: "sendMessage" }, host: { properties: { "class": "this.hostClasses", "class.!k-align-items-end": "this.messageBoxValue" } }, viewQueries: [{ propertyName: "messageBoxInput", first: true, predicate: ["messageBoxInput"], descendants: true }], ngImport: i0, template: `
243
+ <ng-container *ngIf="!messageBoxTemplate">
244
+ <input
245
+ *ngIf="type === 'textbox'"
246
+ #messageBoxInput
247
+ [attr.role]="'textbox'"
248
+ kendoChatFocusedState
249
+ type="text"
250
+ class="k-textbox k-input k-input-md k-input-solid"
251
+ [attr.aria-label]="textFor('messageBoxInputLabel')"
252
+ [placeholder]="textFor('messagePlaceholder')"
253
+ (keydown)="inputKeydown($event)"
254
+ />
255
+
256
+ <textarea
257
+ *ngIf="type === 'textarea'"
258
+ #messageBoxInput
259
+ [attr.role]="'textbox'"
260
+ kendoChatFocusedState
261
+ [rows]="3"
262
+ class="k-textarea k-input k-input-md k-input-solid !k-overflow-y-auto k-resize-none"
263
+ [attr.aria-label]="textFor('messageBoxInputLabel')"
264
+ [placeholder]="textFor('messagePlaceholder')"
265
+ (keydown)="textAreaKeydown($event)"
266
+ ></textarea>
267
+
268
+ <button
269
+ kendoButton
270
+ fillMode="flat"
271
+ class="k-chat-send"
272
+ icon="paper-plane"
273
+ [svgIcon]="sendIcon"
274
+ [tabindex]="0"
275
+ [attr.title]="textFor('send')"
276
+ (click)="sendClick()"
277
+ >
278
+ </button>
279
+ </ng-container>
280
+
281
+ <ng-template *ngIf="messageBoxTemplate" [ngTemplateOutlet]="messageBoxTemplate?.templateRef"></ng-template>
282
+ `, isInline: true, components: [{ type: i1.ButtonComponent, selector: "button[kendoButton], span[kendoButton], kendo-button", inputs: ["toggleable", "togglable", "selected", "tabIndex", "imageUrl", "iconClass", "icon", "disabled", "size", "rounded", "fillMode", "themeColor", "svgIcon", "role", "primary", "look"], outputs: ["selectedChange", "click"], exportAs: ["kendoButton"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: FocusedStateDirective, selector: "[kendoChatFocusedState]" }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
241
283
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessageBoxComponent, decorators: [{
242
284
  type: Component,
243
285
  args: [{
@@ -271,12 +313,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
271
313
  <button
272
314
  kendoButton
273
315
  fillMode="flat"
274
- class="k-button-send"
316
+ class="k-chat-send"
317
+ icon="paper-plane"
318
+ [svgIcon]="sendIcon"
275
319
  [tabindex]="0"
276
320
  [attr.title]="textFor('send')"
277
321
  (click)="sendClick()"
278
322
  >
279
- ${sendIcon}
280
323
  </button>
281
324
  </ng-container>
282
325
 
@@ -565,41 +608,41 @@ MessageComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", versi
565
608
  useExisting: forwardRef(() => MessageComponent)
566
609
  }], usesInheritance: true, ngImport: i0, template: `
567
610
  <time
568
- [attr.aria-hidden]="!selected"
569
- class="k-message-time"
570
- *ngIf="message.timestamp"
611
+ [attr.aria-hidden]="!selected"
612
+ class="k-message-time"
613
+ *ngIf="message.timestamp"
571
614
  >
572
- {{ formatTimeStamp(message.timestamp) }}
615
+ {{ formatTimeStamp(message.timestamp) }}
573
616
  </time>
574
617
 
575
618
  <ng-container *ngIf="!message.typing; else typing">
576
- <div class="k-bubble" *ngIf="template">
577
- <ng-container
578
- *ngTemplateOutlet="template.templateRef; context: { $implicit: message };"
579
- >
580
- </ng-container>
581
- </div>
619
+ <div class="k-chat-bubble" *ngIf="template">
620
+ <ng-container
621
+ *ngTemplateOutlet="template.templateRef; context: { $implicit: message };"
622
+ >
623
+ </ng-container>
624
+ </div>
582
625
 
583
- <div class="k-bubble" *ngIf="!template && message.text">
584
- {{message.text}}
585
- </div>
626
+ <div class="k-chat-bubble" *ngIf="!template && message.text">
627
+ {{message.text}}
628
+ </div>
586
629
  </ng-container>
587
630
 
588
631
  <span
589
- class="k-message-status"
590
- *ngIf="message.status"
632
+ class="k-message-status"
633
+ *ngIf="message.status"
591
634
  >
592
- {{ message.status }}
635
+ {{ message.status }}
593
636
  </span>
594
637
 
595
638
  <ng-template #typing>
596
- <div class="k-bubble">
597
- <div class="k-typing-indicator">
598
- <span></span>
599
- <span></span>
600
- <span></span>
639
+ <div class="k-chat-bubble">
640
+ <div class="k-typing-indicator">
641
+ <span></span>
642
+ <span></span>
643
+ <span></span>
644
+ </div>
601
645
  </div>
602
- </div>
603
646
  </ng-template>
604
647
  `, isInline: true, directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet"] }] });
605
648
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessageComponent, decorators: [{
@@ -612,41 +655,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
612
655
  }],
613
656
  template: `
614
657
  <time
615
- [attr.aria-hidden]="!selected"
616
- class="k-message-time"
617
- *ngIf="message.timestamp"
658
+ [attr.aria-hidden]="!selected"
659
+ class="k-message-time"
660
+ *ngIf="message.timestamp"
618
661
  >
619
- {{ formatTimeStamp(message.timestamp) }}
662
+ {{ formatTimeStamp(message.timestamp) }}
620
663
  </time>
621
664
 
622
665
  <ng-container *ngIf="!message.typing; else typing">
623
- <div class="k-bubble" *ngIf="template">
624
- <ng-container
625
- *ngTemplateOutlet="template.templateRef; context: { $implicit: message };"
626
- >
627
- </ng-container>
628
- </div>
666
+ <div class="k-chat-bubble" *ngIf="template">
667
+ <ng-container
668
+ *ngTemplateOutlet="template.templateRef; context: { $implicit: message };"
669
+ >
670
+ </ng-container>
671
+ </div>
629
672
 
630
- <div class="k-bubble" *ngIf="!template && message.text">
631
- {{message.text}}
632
- </div>
673
+ <div class="k-chat-bubble" *ngIf="!template && message.text">
674
+ {{message.text}}
675
+ </div>
633
676
  </ng-container>
634
677
 
635
678
  <span
636
- class="k-message-status"
637
- *ngIf="message.status"
679
+ class="k-message-status"
680
+ *ngIf="message.status"
638
681
  >
639
- {{ message.status }}
682
+ {{ message.status }}
640
683
  </span>
641
684
 
642
685
  <ng-template #typing>
643
- <div class="k-bubble">
644
- <div class="k-typing-indicator">
645
- <span></span>
646
- <span></span>
647
- <span></span>
686
+ <div class="k-chat-bubble">
687
+ <div class="k-typing-indicator">
688
+ <span></span>
689
+ <span></span>
690
+ <span></span>
691
+ </div>
648
692
  </div>
649
- </div>
650
693
  </ng-template>
651
694
  `
652
695
  }]
@@ -862,21 +905,25 @@ MessageAttachmentsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.
862
905
  icon="chevron-left"
863
906
  >
864
907
  </button>
865
- <div #deck [class.k-card-deck]="carousel">
866
- <kendo-chat-attachment #item
867
- *ngFor="let att of attachments; index as index; first as first; last as last"
868
- [attachment]="att"
869
- [template]="template"
870
- [class.k-selected]="isSelected(index)"
871
- [class.k-focus]="isSelected(index)"
872
- [class.k-card-wrap]="true"
873
- [class.k-first]="first"
874
- [class.k-last]="last"
875
- [attr.tabindex]="tabbable && isSelected(index) ? '0' : '-1'"
876
- (click)="itemClick(index)"
877
- (keydown)="itemKeydown($event, att)"
908
+ <div
909
+ #deck
910
+ [class.k-card-deck]="carousel"
911
+ [class.k-card-list]="!carousel"
878
912
  >
879
- </kendo-chat-attachment>
913
+ <kendo-chat-attachment #item
914
+ *ngFor="let att of attachments; index as index; first as first; last as last"
915
+ [attachment]="att"
916
+ [template]="template"
917
+ [class.k-selected]="isSelected(index)"
918
+ [class.k-focus]="isSelected(index)"
919
+ [class.k-card-wrap]="true"
920
+ [class.k-first]="first"
921
+ [class.k-last]="last"
922
+ [attr.tabindex]="tabbable && isSelected(index) ? '0' : '-1'"
923
+ (click)="itemClick(index)"
924
+ (keydown)="itemKeydown($event, att)"
925
+ >
926
+ </kendo-chat-attachment>
880
927
  </div>
881
928
  <button
882
929
  *ngIf="carousel && scrollPosition < 1"
@@ -908,21 +955,25 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
908
955
  icon="chevron-left"
909
956
  >
910
957
  </button>
911
- <div #deck [class.k-card-deck]="carousel">
912
- <kendo-chat-attachment #item
913
- *ngFor="let att of attachments; index as index; first as first; last as last"
914
- [attachment]="att"
915
- [template]="template"
916
- [class.k-selected]="isSelected(index)"
917
- [class.k-focus]="isSelected(index)"
918
- [class.k-card-wrap]="true"
919
- [class.k-first]="first"
920
- [class.k-last]="last"
921
- [attr.tabindex]="tabbable && isSelected(index) ? '0' : '-1'"
922
- (click)="itemClick(index)"
923
- (keydown)="itemKeydown($event, att)"
958
+ <div
959
+ #deck
960
+ [class.k-card-deck]="carousel"
961
+ [class.k-card-list]="!carousel"
924
962
  >
925
- </kendo-chat-attachment>
963
+ <kendo-chat-attachment #item
964
+ *ngFor="let att of attachments; index as index; first as first; last as last"
965
+ [attachment]="att"
966
+ [template]="template"
967
+ [class.k-selected]="isSelected(index)"
968
+ [class.k-focus]="isSelected(index)"
969
+ [class.k-card-wrap]="true"
970
+ [class.k-first]="first"
971
+ [class.k-last]="last"
972
+ [attr.tabindex]="tabbable && isSelected(index) ? '0' : '-1'"
973
+ (click)="itemClick(index)"
974
+ (keydown)="itemKeydown($event, att)"
975
+ >
976
+ </kendo-chat-attachment>
926
977
  </div>
927
978
  <button
928
979
  *ngIf="carousel && scrollPosition < 1"
@@ -1091,73 +1142,84 @@ class MessageListComponent {
1091
1142
  MessageListComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: MessageListComponent, deps: [{ token: i0.ElementRef }, { token: i1$1.IntlService }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
1092
1143
  MessageListComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: MessageListComponent, selector: "kendo-chat-message-list", inputs: { messages: "messages", attachmentTemplate: "attachmentTemplate", messageTemplate: "messageTemplate", localization: "localization", user: "user" }, outputs: { executeAction: "executeAction", navigate: "navigate", resize: "resize" }, host: { properties: { "class.k-message-list-content": "this.cssClass" } }, viewQueries: [{ propertyName: "items", predicate: ChatItem, descendants: true }], ngImport: i0, template: `
1093
1144
  <ng-container *ngFor="let group of view; last as lastGroup; trackBy: trackGroup">
1094
- <ng-container [ngSwitch]="group.type">
1095
- <div
1096
- *ngSwitchCase="'date-marker'"
1097
- class="k-timestamp"
1098
- >
1099
- {{ formatTimeStamp(group.timestamp) }}
1100
- </div>
1101
- <div
1102
- *ngSwitchCase="'message-group'"
1103
- class="k-message-group"
1104
- [class.k-alt]="isOwnMessage(group.messages[0])"
1105
- [class.k-no-avatar]="!group.author.avatarUrl"
1106
- >
1107
- <img
1108
- *ngIf="group.author.avatarUrl"
1109
- [attr.src]="group.author.avatarUrl"
1110
- [alt]="textFor('messageAvatarAlt')"
1111
- class="k-avatar"
1112
- />
1113
- <p *ngIf="group.author.name" class="k-author">{{ group.author.name }}</p>
1114
- <ng-container
1115
- *ngFor="let msg of group.messages; first as firstMessage; last as lastMessage"
1116
- >
1117
- <img *ngIf="msg.user?.avatarUrl" [src]="msg.user?.avatarUrl" class="k-avatar">
1118
- <kendo-chat-message #message
1119
- [message]="msg"
1120
- [tabbable]="lastGroup && lastMessage"
1121
- [template]="messageTemplate"
1122
- (click)="select(message)"
1123
- (focus)="select(message)"
1124
- [class.k-only]="group.messages.length === 1"
1125
- [class.k-first]="group.messages.length > 1 && firstMessage"
1126
- [class.k-last]="group.messages.length > 1 && lastMessage"
1145
+ <ng-container [ngSwitch]="group.type">
1146
+ <div
1147
+ *ngSwitchCase="'date-marker'"
1148
+ class="k-timestamp"
1149
+ >
1150
+ {{ formatTimeStamp(group.timestamp) }}
1151
+ </div>
1152
+ <div
1153
+ *ngSwitchCase="'message-group'"
1154
+ class="k-message-group"
1155
+ [class.k-alt]="isOwnMessage(group.messages[0])"
1156
+ [class.k-no-avatar]="!group.author.avatarUrl"
1127
1157
  >
1128
- </kendo-chat-message>
1158
+ <div
1159
+ *ngIf="group.author.avatarUrl"
1160
+ class="k-avatar k-avatar-md k-avatar-solid k-avatar-solid-primary k-rounded-full"
1161
+ >
1162
+ <span class="k-avatar-image">
1163
+ <img
1164
+ [attr.src]="group.author.avatarUrl"
1165
+ [alt]="textFor('messageAvatarAlt')"
1166
+ />
1167
+ </span>
1168
+ </div>
1169
+ <ng-container
1170
+ *ngFor="let msg of group.messages; first as firstMessage; last as lastMessage"
1171
+ >
1172
+ <div
1173
+ *ngIf="msg.user?.avatarUrl"
1174
+ class="k-avatar k-avatar-md k-avatar-solid k-avatar-solid-primary k-rounded-full"
1175
+ >
1176
+ <span class="k-avatar-image">
1177
+ <img [src]="msg.user?.avatarUrl">
1178
+ </span>
1179
+ </div>
1180
+ <kendo-chat-message #message
1181
+ [message]="msg"
1182
+ [tabbable]="lastGroup && lastMessage"
1183
+ [template]="messageTemplate"
1184
+ (click)="select(message)"
1185
+ (focus)="select(message)"
1186
+ [class.k-only]="group.messages.length === 1"
1187
+ [class.k-first]="group.messages.length > 1 && firstMessage"
1188
+ [class.k-last]="group.messages.length > 1 && lastMessage"
1189
+ >
1190
+ </kendo-chat-message>
1191
+
1192
+ <kendo-chat-attachment
1193
+ *ngIf="msg.attachments && msg.attachments.length === 1"
1194
+ [attachment]="msg.attachments[0]"
1195
+ [template]="attachmentTemplate"
1196
+ >
1197
+ </kendo-chat-attachment>
1198
+ </ng-container>
1199
+ </div>
1129
1200
 
1130
- <kendo-chat-attachment
1131
- *ngIf="msg.attachments && msg.attachments.length === 1"
1132
- [attachment]="msg.attachments[0]"
1133
- [template]="attachmentTemplate"
1201
+ <kendo-chat-message-attachments #attachments
1202
+ *ngSwitchCase="'attachment-group'"
1203
+ [attachments]="group.attachments"
1204
+ [layout]="group.attachmentLayout"
1205
+ [localization]="localization"
1206
+ [tabbable]="lastGroup"
1207
+ [template]="attachmentTemplate"
1208
+ (click)="select(attachments)"
1209
+ (focus)="select(attachments)"
1134
1210
  >
1135
- </kendo-chat-attachment>
1136
- </ng-container>
1137
- </div>
1211
+ </kendo-chat-message-attachments>
1138
1212
 
1139
- <kendo-chat-message-attachments #attachments
1140
- *ngSwitchCase="'attachment-group'"
1141
- [attachments]="group.attachments"
1142
- [layout]="group.attachmentLayout"
1143
- [localization]="localization"
1144
- [tabbable]="lastGroup"
1145
- [template]="attachmentTemplate"
1146
- (click)="select(attachments)"
1147
- (focus)="select(attachments)"
1148
- >
1149
- </kendo-chat-message-attachments>
1150
-
1151
- <kendo-chat-suggested-actions #actions
1152
- *ngSwitchCase="'action-group'"
1153
- [actions]="group.actions"
1154
- [tabbable]="lastGroup"
1155
- (dispatch)="dispatchAction($event, last(group.messages))"
1156
- (click)="select(actions)"
1157
- (focus)="select(actions)"
1158
- >
1159
- </kendo-chat-suggested-actions>
1160
- </ng-container>
1213
+ <kendo-chat-suggested-actions #actions
1214
+ *ngSwitchCase="'action-group'"
1215
+ [actions]="group.actions"
1216
+ [tabbable]="lastGroup"
1217
+ (dispatch)="dispatchAction($event, last(group.messages))"
1218
+ (click)="select(actions)"
1219
+ (focus)="select(actions)"
1220
+ >
1221
+ </kendo-chat-suggested-actions>
1222
+ </ng-container>
1161
1223
  </ng-container>
1162
1224
  <kendo-resize-sensor (resize)="onResize()">
1163
1225
  </kendo-resize-sensor>
@@ -1168,73 +1230,84 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
1168
1230
  selector: 'kendo-chat-message-list',
1169
1231
  template: `
1170
1232
  <ng-container *ngFor="let group of view; last as lastGroup; trackBy: trackGroup">
1171
- <ng-container [ngSwitch]="group.type">
1172
- <div
1173
- *ngSwitchCase="'date-marker'"
1174
- class="k-timestamp"
1175
- >
1176
- {{ formatTimeStamp(group.timestamp) }}
1177
- </div>
1178
- <div
1179
- *ngSwitchCase="'message-group'"
1180
- class="k-message-group"
1181
- [class.k-alt]="isOwnMessage(group.messages[0])"
1182
- [class.k-no-avatar]="!group.author.avatarUrl"
1183
- >
1184
- <img
1185
- *ngIf="group.author.avatarUrl"
1186
- [attr.src]="group.author.avatarUrl"
1187
- [alt]="textFor('messageAvatarAlt')"
1188
- class="k-avatar"
1189
- />
1190
- <p *ngIf="group.author.name" class="k-author">{{ group.author.name }}</p>
1191
- <ng-container
1192
- *ngFor="let msg of group.messages; first as firstMessage; last as lastMessage"
1193
- >
1194
- <img *ngIf="msg.user?.avatarUrl" [src]="msg.user?.avatarUrl" class="k-avatar">
1195
- <kendo-chat-message #message
1196
- [message]="msg"
1197
- [tabbable]="lastGroup && lastMessage"
1198
- [template]="messageTemplate"
1199
- (click)="select(message)"
1200
- (focus)="select(message)"
1201
- [class.k-only]="group.messages.length === 1"
1202
- [class.k-first]="group.messages.length > 1 && firstMessage"
1203
- [class.k-last]="group.messages.length > 1 && lastMessage"
1233
+ <ng-container [ngSwitch]="group.type">
1234
+ <div
1235
+ *ngSwitchCase="'date-marker'"
1236
+ class="k-timestamp"
1237
+ >
1238
+ {{ formatTimeStamp(group.timestamp) }}
1239
+ </div>
1240
+ <div
1241
+ *ngSwitchCase="'message-group'"
1242
+ class="k-message-group"
1243
+ [class.k-alt]="isOwnMessage(group.messages[0])"
1244
+ [class.k-no-avatar]="!group.author.avatarUrl"
1204
1245
  >
1205
- </kendo-chat-message>
1246
+ <div
1247
+ *ngIf="group.author.avatarUrl"
1248
+ class="k-avatar k-avatar-md k-avatar-solid k-avatar-solid-primary k-rounded-full"
1249
+ >
1250
+ <span class="k-avatar-image">
1251
+ <img
1252
+ [attr.src]="group.author.avatarUrl"
1253
+ [alt]="textFor('messageAvatarAlt')"
1254
+ />
1255
+ </span>
1256
+ </div>
1257
+ <ng-container
1258
+ *ngFor="let msg of group.messages; first as firstMessage; last as lastMessage"
1259
+ >
1260
+ <div
1261
+ *ngIf="msg.user?.avatarUrl"
1262
+ class="k-avatar k-avatar-md k-avatar-solid k-avatar-solid-primary k-rounded-full"
1263
+ >
1264
+ <span class="k-avatar-image">
1265
+ <img [src]="msg.user?.avatarUrl">
1266
+ </span>
1267
+ </div>
1268
+ <kendo-chat-message #message
1269
+ [message]="msg"
1270
+ [tabbable]="lastGroup && lastMessage"
1271
+ [template]="messageTemplate"
1272
+ (click)="select(message)"
1273
+ (focus)="select(message)"
1274
+ [class.k-only]="group.messages.length === 1"
1275
+ [class.k-first]="group.messages.length > 1 && firstMessage"
1276
+ [class.k-last]="group.messages.length > 1 && lastMessage"
1277
+ >
1278
+ </kendo-chat-message>
1206
1279
 
1207
- <kendo-chat-attachment
1208
- *ngIf="msg.attachments && msg.attachments.length === 1"
1209
- [attachment]="msg.attachments[0]"
1210
- [template]="attachmentTemplate"
1280
+ <kendo-chat-attachment
1281
+ *ngIf="msg.attachments && msg.attachments.length === 1"
1282
+ [attachment]="msg.attachments[0]"
1283
+ [template]="attachmentTemplate"
1284
+ >
1285
+ </kendo-chat-attachment>
1286
+ </ng-container>
1287
+ </div>
1288
+
1289
+ <kendo-chat-message-attachments #attachments
1290
+ *ngSwitchCase="'attachment-group'"
1291
+ [attachments]="group.attachments"
1292
+ [layout]="group.attachmentLayout"
1293
+ [localization]="localization"
1294
+ [tabbable]="lastGroup"
1295
+ [template]="attachmentTemplate"
1296
+ (click)="select(attachments)"
1297
+ (focus)="select(attachments)"
1211
1298
  >
1212
- </kendo-chat-attachment>
1213
- </ng-container>
1214
- </div>
1299
+ </kendo-chat-message-attachments>
1215
1300
 
1216
- <kendo-chat-message-attachments #attachments
1217
- *ngSwitchCase="'attachment-group'"
1218
- [attachments]="group.attachments"
1219
- [layout]="group.attachmentLayout"
1220
- [localization]="localization"
1221
- [tabbable]="lastGroup"
1222
- [template]="attachmentTemplate"
1223
- (click)="select(attachments)"
1224
- (focus)="select(attachments)"
1225
- >
1226
- </kendo-chat-message-attachments>
1227
-
1228
- <kendo-chat-suggested-actions #actions
1229
- *ngSwitchCase="'action-group'"
1230
- [actions]="group.actions"
1231
- [tabbable]="lastGroup"
1232
- (dispatch)="dispatchAction($event, last(group.messages))"
1233
- (click)="select(actions)"
1234
- (focus)="select(actions)"
1235
- >
1236
- </kendo-chat-suggested-actions>
1237
- </ng-container>
1301
+ <kendo-chat-suggested-actions #actions
1302
+ *ngSwitchCase="'action-group'"
1303
+ [actions]="group.actions"
1304
+ [tabbable]="lastGroup"
1305
+ (dispatch)="dispatchAction($event, last(group.messages))"
1306
+ (click)="select(actions)"
1307
+ (focus)="select(actions)"
1308
+ >
1309
+ </kendo-chat-suggested-actions>
1310
+ </ng-container>
1238
1311
  </ng-container>
1239
1312
  <kendo-resize-sensor (resize)="onResize()">
1240
1313
  </kendo-resize-sensor>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-conversational-ui",
3
- "version": "13.4.0-develop.1",
3
+ "version": "13.4.0-develop.3",
4
4
  "description": "Kendo UI for Angular Conversational UI components",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -24,16 +24,16 @@
24
24
  "@angular/core": "13 - 16",
25
25
  "@angular/platform-browser": "13 - 16",
26
26
  "@progress/kendo-licensing": "^1.0.2",
27
- "@progress/kendo-angular-buttons": "13.4.0-develop.1",
28
- "@progress/kendo-angular-common": "13.4.0-develop.1",
29
- "@progress/kendo-angular-intl": "13.4.0-develop.1",
30
- "@progress/kendo-angular-l10n": "13.4.0-develop.1",
31
- "@progress/kendo-angular-popup": "13.4.0-develop.1",
27
+ "@progress/kendo-angular-buttons": "13.4.0-develop.3",
28
+ "@progress/kendo-angular-common": "13.4.0-develop.3",
29
+ "@progress/kendo-angular-intl": "13.4.0-develop.3",
30
+ "@progress/kendo-angular-l10n": "13.4.0-develop.3",
31
+ "@progress/kendo-angular-popup": "13.4.0-develop.3",
32
32
  "rxjs": "^6.5.3 || ^7.0.0"
33
33
  },
34
34
  "dependencies": {
35
35
  "tslib": "^2.3.1",
36
- "@progress/kendo-angular-schematics": "13.4.0-develop.1"
36
+ "@progress/kendo-angular-schematics": "13.4.0-develop.3"
37
37
  },
38
38
  "schematics": "./schematics/collection.json",
39
39
  "module": "fesm2015/progress-kendo-angular-conversational-ui.mjs",