@progress/kendo-angular-conversational-ui 20.0.0-develop.7 → 20.0.1-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.
@@ -6,7 +6,7 @@ import { EventEmitter } from '@angular/core';
6
6
  import { Action } from '../api/action.interface';
7
7
  import * as i0 from "@angular/core";
8
8
  /**
9
- * Represents a Hero Card component ([see example](slug:integrations_chat#travel-agent-chat-bot)).
9
+ * Represents a Hero Card component.
10
10
  * Hero cards host a single large image and action buttons with text content.
11
11
  *
12
12
  * @example
@@ -0,0 +1,12 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ /**
6
+ * @hidden
7
+ */
8
+ export interface FormattedTextPart {
9
+ type: 'text' | 'link';
10
+ content: string;
11
+ href?: string;
12
+ }
@@ -14,6 +14,7 @@ import { ChatService } from './common/chat.service';
14
14
  import { MessageAction } from './api';
15
15
  import { LocalizationService } from '@progress/kendo-angular-l10n';
16
16
  import { ChatStatusTemplateDirective } from './templates/status-template.directive';
17
+ import { FormattedTextPart } from './common/models/formatted-text-parts';
17
18
  import * as i0 from "@angular/core";
18
19
  /**
19
20
  * @hidden
@@ -45,6 +46,7 @@ export declare class MessageComponent extends ChatItem implements OnDestroy {
45
46
  isMessageExpanded: boolean;
46
47
  contextMenuActions: any;
47
48
  fileActions: any;
49
+ parts: FormattedTextPart[];
48
50
  constructor(element: ElementRef, intl: IntlService, chatService: ChatService, localization: LocalizationService);
49
51
  ngOnInit(): void;
50
52
  ngOnDestroy(): void;
@@ -60,11 +62,7 @@ export declare class MessageComponent extends ChatItem implements OnDestroy {
60
62
  onFileAction(action: any, file: ChatFile): void;
61
63
  private transformActions;
62
64
  getMessageById(id: string | number): Message | undefined;
63
- getFormattedTextParts(text: string): Array<{
64
- type: 'text' | 'link';
65
- content: string;
66
- href?: string;
67
- }>;
65
+ private getFormattedTextParts;
68
66
  onReplyReferenceClick(event: Event, replyToId: string | number): void;
69
67
  handleMenuClose(event?: ContextMenuPopupEvent): void;
70
68
  onActionButtonClick(event: MouseEvent): void;
@@ -7,7 +7,7 @@ import { NgIf, NgFor } from '@angular/common';
7
7
  import { ButtonComponent } from '@progress/kendo-angular-buttons';
8
8
  import * as i0 from "@angular/core";
9
9
  /**
10
- * Represents a Hero Card component ([see example](slug:integrations_chat#travel-agent-chat-bot)).
10
+ * Represents a Hero Card component.
11
11
  * Hero cards host a single large image and action buttons with text content.
12
12
  *
13
13
  * @example
@@ -0,0 +1,5 @@
1
+ /**-----------------------------------------------------------------------------------------
2
+ * Copyright © 2025 Progress Software Corporation. All rights reserved.
3
+ * Licensed under commercial license. See LICENSE.md in the project root for more information
4
+ *-------------------------------------------------------------------------------------------*/
5
+ export {};
@@ -74,6 +74,7 @@ export class MessageComponent extends ChatItem {
74
74
  isMessageExpanded = false;
75
75
  contextMenuActions = [];
76
76
  fileActions = [];
77
+ parts = [];
77
78
  constructor(element, intl, chatService, localization) {
78
79
  super();
79
80
  this.element = element;
@@ -87,6 +88,7 @@ export class MessageComponent extends ChatItem {
87
88
  if (this.message.id) {
88
89
  this.chatService.registerMessageElement(this.message.id, this.element);
89
90
  }
91
+ this.parts = this.getFormattedTextParts(this.message.text);
90
92
  }
91
93
  ngOnDestroy() {
92
94
  if (this.message.id) {
@@ -274,8 +276,8 @@ export class MessageComponent extends ChatItem {
274
276
  </div>
275
277
  <ng-container *ngIf="message.isDeleted && isOwnMessage(message)">{{ textFor('deletedMessageSenderText') }}</ng-container>
276
278
  <ng-container *ngIf="message.isDeleted && !isOwnMessage(message)">{{ textFor('deletedMessageReceiverText') }}</ng-container>
277
- <ng-container *ngIf="!message.isDeleted">
278
- <ng-container *ngFor="let part of getFormattedTextParts(message.text)">
279
+ <ng-container *ngIf="!message.isDeleted && parts.length">
280
+ <ng-container *ngFor="let part of parts">
279
281
  <ng-container *ngIf="part.type === 'text'">{{part.content}}</ng-container>
280
282
  <a *ngIf="part.type === 'link'" [href]="part.href" target="_blank">{{part.content}}</a>
281
283
  </ng-container>
@@ -362,15 +364,13 @@ export class MessageComponent extends ChatItem {
362
364
  <kendo-contextmenu
363
365
  *ngIf="!message.isDeleted"
364
366
  [target]="element"
365
- #messageActionsContextMenu
366
367
  [items]="contextMenuActions"
367
368
  (popupOpen)="handleMenuOpen()"
368
369
  (popupClose)="handleMenuClose($event)"
369
370
  (select)="onContextMenuAction($event.item.originalAction)"
370
371
  [popupAlign]="{ horizontal: 'right', vertical: 'top' }"
371
372
  [collision]="{ horizontal: 'flip', vertical: 'flip'}"
372
- >
373
- </kendo-contextmenu>
373
+ ></kendo-contextmenu>
374
374
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: i4.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: ChatFileComponent, selector: "li[chatFile]", inputs: ["chatFile", "removable", "fileActions"], outputs: ["remove", "actionClick", "actionsToggle", "actionButtonClick"] }, { 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"] }, { kind: "component", type: ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex", "showIcon", "showText"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "rounded", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: MessageReferenceComponent, selector: "chat-message-reference-content", inputs: ["message"] }] });
375
375
  }
376
376
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MessageComponent, decorators: [{
@@ -430,8 +430,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
430
430
  </div>
431
431
  <ng-container *ngIf="message.isDeleted && isOwnMessage(message)">{{ textFor('deletedMessageSenderText') }}</ng-container>
432
432
  <ng-container *ngIf="message.isDeleted && !isOwnMessage(message)">{{ textFor('deletedMessageReceiverText') }}</ng-container>
433
- <ng-container *ngIf="!message.isDeleted">
434
- <ng-container *ngFor="let part of getFormattedTextParts(message.text)">
433
+ <ng-container *ngIf="!message.isDeleted && parts.length">
434
+ <ng-container *ngFor="let part of parts">
435
435
  <ng-container *ngIf="part.type === 'text'">{{part.content}}</ng-container>
436
436
  <a *ngIf="part.type === 'link'" [href]="part.href" target="_blank">{{part.content}}</a>
437
437
  </ng-container>
@@ -518,15 +518,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
518
518
  <kendo-contextmenu
519
519
  *ngIf="!message.isDeleted"
520
520
  [target]="element"
521
- #messageActionsContextMenu
522
521
  [items]="contextMenuActions"
523
522
  (popupOpen)="handleMenuOpen()"
524
523
  (popupClose)="handleMenuClose($event)"
525
524
  (select)="onContextMenuAction($event.item.originalAction)"
526
525
  [popupAlign]="{ horizontal: 'right', vertical: 'top' }"
527
526
  [collision]="{ horizontal: 'flip', vertical: 'flip'}"
528
- >
529
- </kendo-contextmenu>
527
+ ></kendo-contextmenu>
530
528
  `,
531
529
  standalone: true,
532
530
  imports: [NgIf, NgClass, NgFor, NgTemplateOutlet, IconWrapperComponent, KENDO_BUTTONS, ChatFileComponent, ContextMenuComponent, ToolBarComponent, ToolBarButtonComponent, MessageReferenceComponent],
@@ -10,7 +10,7 @@ export const packageMetadata = {
10
10
  productName: 'Kendo UI for Angular',
11
11
  productCode: 'KENDOUIANGULAR',
12
12
  productCodes: ['KENDOUIANGULAR'],
13
- publishDate: 1756185088,
14
- version: '20.0.0-develop.7',
13
+ publishDate: 1756227735,
14
+ version: '20.0.1-develop.1',
15
15
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
16
16
  };
@@ -217,8 +217,8 @@ const packageMetadata = {
217
217
  productName: 'Kendo UI for Angular',
218
218
  productCode: 'KENDOUIANGULAR',
219
219
  productCodes: ['KENDOUIANGULAR'],
220
- publishDate: 1756185088,
221
- version: '20.0.0-develop.7',
220
+ publishDate: 1756227735,
221
+ version: '20.0.1-develop.1',
222
222
  licensingDocsUrl: 'https://www.telerik.com/kendo-angular-ui/my-license/'
223
223
  };
224
224
 
@@ -3285,6 +3285,7 @@ class MessageComponent extends ChatItem {
3285
3285
  isMessageExpanded = false;
3286
3286
  contextMenuActions = [];
3287
3287
  fileActions = [];
3288
+ parts = [];
3288
3289
  constructor(element, intl, chatService, localization) {
3289
3290
  super();
3290
3291
  this.element = element;
@@ -3298,6 +3299,7 @@ class MessageComponent extends ChatItem {
3298
3299
  if (this.message.id) {
3299
3300
  this.chatService.registerMessageElement(this.message.id, this.element);
3300
3301
  }
3302
+ this.parts = this.getFormattedTextParts(this.message.text);
3301
3303
  }
3302
3304
  ngOnDestroy() {
3303
3305
  if (this.message.id) {
@@ -3485,8 +3487,8 @@ class MessageComponent extends ChatItem {
3485
3487
  </div>
3486
3488
  <ng-container *ngIf="message.isDeleted && isOwnMessage(message)">{{ textFor('deletedMessageSenderText') }}</ng-container>
3487
3489
  <ng-container *ngIf="message.isDeleted && !isOwnMessage(message)">{{ textFor('deletedMessageReceiverText') }}</ng-container>
3488
- <ng-container *ngIf="!message.isDeleted">
3489
- <ng-container *ngFor="let part of getFormattedTextParts(message.text)">
3490
+ <ng-container *ngIf="!message.isDeleted && parts.length">
3491
+ <ng-container *ngFor="let part of parts">
3490
3492
  <ng-container *ngIf="part.type === 'text'">{{part.content}}</ng-container>
3491
3493
  <a *ngIf="part.type === 'link'" [href]="part.href" target="_blank">{{part.content}}</a>
3492
3494
  </ng-container>
@@ -3573,15 +3575,13 @@ class MessageComponent extends ChatItem {
3573
3575
  <kendo-contextmenu
3574
3576
  *ngIf="!message.isDeleted"
3575
3577
  [target]="element"
3576
- #messageActionsContextMenu
3577
3578
  [items]="contextMenuActions"
3578
3579
  (popupOpen)="handleMenuOpen()"
3579
3580
  (popupClose)="handleMenuClose($event)"
3580
3581
  (select)="onContextMenuAction($event.item.originalAction)"
3581
3582
  [popupAlign]="{ horizontal: 'right', vertical: 'top' }"
3582
3583
  [collision]="{ horizontal: 'flip', vertical: 'flip'}"
3583
- >
3584
- </kendo-contextmenu>
3584
+ ></kendo-contextmenu>
3585
3585
  `, isInline: true, dependencies: [{ kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgFor, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: IconWrapperComponent, selector: "kendo-icon-wrapper", inputs: ["name", "svgIcon", "innerCssClass", "customFontClass", "size"], exportAs: ["kendoIconWrapper"] }, { kind: "component", type: i2.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: ChatFileComponent, selector: "li[chatFile]", inputs: ["chatFile", "removable", "fileActions"], outputs: ["remove", "actionClick", "actionsToggle", "actionButtonClick"] }, { 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"] }, { kind: "component", type: ToolBarComponent, selector: "kendo-toolbar", inputs: ["overflow", "resizable", "popupSettings", "fillMode", "tabindex", "size", "tabIndex", "showIcon", "showText"], outputs: ["open", "close"], exportAs: ["kendoToolBar"] }, { kind: "component", type: ToolBarButtonComponent, selector: "kendo-toolbar-button", inputs: ["showText", "showIcon", "text", "style", "className", "title", "disabled", "toggleable", "look", "togglable", "selected", "fillMode", "rounded", "themeColor", "icon", "iconClass", "svgIcon", "imageUrl"], outputs: ["click", "pointerdown", "selectedChange"], exportAs: ["kendoToolBarButton"] }, { kind: "component", type: MessageReferenceComponent, selector: "chat-message-reference-content", inputs: ["message"] }] });
3586
3586
  }
3587
3587
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: MessageComponent, decorators: [{
@@ -3641,8 +3641,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3641
3641
  </div>
3642
3642
  <ng-container *ngIf="message.isDeleted && isOwnMessage(message)">{{ textFor('deletedMessageSenderText') }}</ng-container>
3643
3643
  <ng-container *ngIf="message.isDeleted && !isOwnMessage(message)">{{ textFor('deletedMessageReceiverText') }}</ng-container>
3644
- <ng-container *ngIf="!message.isDeleted">
3645
- <ng-container *ngFor="let part of getFormattedTextParts(message.text)">
3644
+ <ng-container *ngIf="!message.isDeleted && parts.length">
3645
+ <ng-container *ngFor="let part of parts">
3646
3646
  <ng-container *ngIf="part.type === 'text'">{{part.content}}</ng-container>
3647
3647
  <a *ngIf="part.type === 'link'" [href]="part.href" target="_blank">{{part.content}}</a>
3648
3648
  </ng-container>
@@ -3729,15 +3729,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
3729
3729
  <kendo-contextmenu
3730
3730
  *ngIf="!message.isDeleted"
3731
3731
  [target]="element"
3732
- #messageActionsContextMenu
3733
3732
  [items]="contextMenuActions"
3734
3733
  (popupOpen)="handleMenuOpen()"
3735
3734
  (popupClose)="handleMenuClose($event)"
3736
3735
  (select)="onContextMenuAction($event.item.originalAction)"
3737
3736
  [popupAlign]="{ horizontal: 'right', vertical: 'top' }"
3738
3737
  [collision]="{ horizontal: 'flip', vertical: 'flip'}"
3739
- >
3740
- </kendo-contextmenu>
3738
+ ></kendo-contextmenu>
3741
3739
  `,
3742
3740
  standalone: true,
3743
3741
  imports: [NgIf, NgClass, NgFor, NgTemplateOutlet, IconWrapperComponent, KENDO_BUTTONS, ChatFileComponent, ContextMenuComponent, ToolBarComponent, ToolBarButtonComponent, MessageReferenceComponent],
@@ -5539,7 +5537,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
5539
5537
  }], ctorParameters: function () { return [{ type: i1.LocalizationService }]; } });
5540
5538
 
5541
5539
  /**
5542
- * Represents a Hero Card component ([see example](slug:integrations_chat#travel-agent-chat-bot)).
5540
+ * Represents a Hero Card component.
5543
5541
  * Hero cards host a single large image and action buttons with text content.
5544
5542
  *
5545
5543
  * @example
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@progress/kendo-angular-conversational-ui",
3
- "version": "20.0.0-develop.7",
3
+ "version": "20.0.1-develop.1",
4
4
  "description": "Kendo UI for Angular Conversational UI components",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "author": "Progress",
@@ -35,7 +35,7 @@
35
35
  "package": {
36
36
  "productName": "Kendo UI for Angular",
37
37
  "productCode": "KENDOUIANGULAR",
38
- "publishDate": 1756185088,
38
+ "publishDate": 1756227735,
39
39
  "licensingDocsUrl": "https://www.telerik.com/kendo-angular-ui/my-license/"
40
40
  }
41
41
  },
@@ -45,22 +45,22 @@
45
45
  "@angular/core": "16 - 20",
46
46
  "@angular/platform-browser": "16 - 20",
47
47
  "@progress/kendo-licensing": "^1.7.0",
48
- "@progress/kendo-angular-buttons": "20.0.0-develop.7",
49
- "@progress/kendo-angular-inputs": "20.0.0-develop.7",
50
- "@progress/kendo-angular-layout": "20.0.0-develop.7",
51
- "@progress/kendo-angular-icons": "20.0.0-develop.7",
52
- "@progress/kendo-angular-common": "20.0.0-develop.7",
53
- "@progress/kendo-angular-intl": "20.0.0-develop.7",
54
- "@progress/kendo-angular-l10n": "20.0.0-develop.7",
55
- "@progress/kendo-angular-menu": "20.0.0-develop.7",
56
- "@progress/kendo-angular-popup": "20.0.0-develop.7",
57
- "@progress/kendo-angular-toolbar": "20.0.0-develop.7",
58
- "@progress/kendo-angular-upload": "20.0.0-develop.7",
48
+ "@progress/kendo-angular-buttons": "20.0.1-develop.1",
49
+ "@progress/kendo-angular-inputs": "20.0.1-develop.1",
50
+ "@progress/kendo-angular-layout": "20.0.1-develop.1",
51
+ "@progress/kendo-angular-icons": "20.0.1-develop.1",
52
+ "@progress/kendo-angular-common": "20.0.1-develop.1",
53
+ "@progress/kendo-angular-intl": "20.0.1-develop.1",
54
+ "@progress/kendo-angular-l10n": "20.0.1-develop.1",
55
+ "@progress/kendo-angular-menu": "20.0.1-develop.1",
56
+ "@progress/kendo-angular-popup": "20.0.1-develop.1",
57
+ "@progress/kendo-angular-toolbar": "20.0.1-develop.1",
58
+ "@progress/kendo-angular-upload": "20.0.1-develop.1",
59
59
  "rxjs": "^6.5.3 || ^7.0.0"
60
60
  },
61
61
  "dependencies": {
62
62
  "tslib": "^2.3.1",
63
- "@progress/kendo-angular-schematics": "20.0.0-develop.7"
63
+ "@progress/kendo-angular-schematics": "20.0.1-develop.1"
64
64
  },
65
65
  "schematics": "./schematics/collection.json",
66
66
  "module": "fesm2022/progress-kendo-angular-conversational-ui.mjs",