@chat21/chat21-web-widget 5.1.33-rc9 → 5.1.34-rc1

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 (101) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/package.json +1 -1
  3. package/src/app/component/conversation-detail/conversation/conversation.component.ts +3 -1
  4. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.spec.ts +0 -7
  5. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts +7 -5
  6. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +4 -3
  7. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +18 -18
  8. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +6 -0
  9. package/src/app/component/conversation-detail/stream-audio-spectrum/stream-audio-spectrum.component.html +8 -5
  10. package/src/app/component/conversation-detail/stream-audio-spectrum/stream-audio-spectrum.component.scss +5 -1
  11. package/src/app/component/form/inputs/form-text/form-text.component.ts +9 -3
  12. package/src/app/component/message/bubble-message/bubble-message.component.scss +5 -0
  13. package/src/app/component/message/bubble-message/bubble-message.component.ts +14 -0
  14. package/src/app/component/message/json-sources/json-sources.component.scss +12 -8
  15. package/src/app/pipe/marked.pipe.ts +51 -41
  16. package/src/app/providers/global-settings.service.ts +31 -0
  17. package/src/app/providers/json-sources-parser.service.ts +25 -32
  18. package/src/app/providers/voice/voice-streaming.service.ts +11 -19
  19. package/src/app/providers/voice/voice-streaming.types.ts +0 -1
  20. package/src/app/providers/voice/voice.service.spec.ts +12 -45
  21. package/src/app/providers/voice/voice.service.ts +215 -45
  22. package/src/app/utils/globals.ts +10 -0
  23. package/src/assets/i18n/en.json +106 -125
  24. package/src/assets/i18n/es.json +1 -0
  25. package/src/assets/i18n/fr.json +1 -0
  26. package/src/assets/i18n/it.json +1 -0
  27. package/src/assets/sounds/keyboard.mp3 +0 -0
  28. package/src/assets/twp/chatbot-panel.html +3 -1
  29. package/src/chat21-core/utils/utils-message.ts +15 -5
  30. package/src/widget-config-template.json +1 -0
  31. package/src/widget-config.json +30 -28
  32. package/.playwright-mcp/console-2026-05-08T15-31-09-000Z.log +0 -17
  33. package/.playwright-mcp/console-2026-05-08T15-32-19-412Z.log +0 -89
  34. package/.playwright-mcp/console-2026-05-08T16-18-48-424Z.log +0 -133
  35. package/.playwright-mcp/console-2026-05-11T12-54-06-869Z.log +0 -13
  36. package/.playwright-mcp/console-2026-05-11T12-54-56-229Z.log +0 -147
  37. package/.playwright-mcp/console-2026-05-11T12-55-47-174Z.log +0 -183
  38. package/.playwright-mcp/console-2026-05-11T15-34-03-590Z.log +0 -210
  39. package/.playwright-mcp/console-2026-05-12T15-07-31-880Z.log +0 -118
  40. package/.playwright-mcp/page-2026-05-08T15-32-19-900Z.yml +0 -851
  41. package/.playwright-mcp/page-2026-05-08T15-32-47-264Z.yml +0 -857
  42. package/.playwright-mcp/page-2026-05-08T15-33-17-089Z.yml +0 -1110
  43. package/.playwright-mcp/page-2026-05-08T15-33-23-486Z.yml +0 -1069
  44. package/.playwright-mcp/page-2026-05-08T15-33-45-390Z.yml +0 -1076
  45. package/.playwright-mcp/page-2026-05-08T15-33-52-666Z.yml +0 -1072
  46. package/.playwright-mcp/page-2026-05-08T15-34-01-338Z.yml +0 -1085
  47. package/.playwright-mcp/page-2026-05-08T15-34-07-227Z.yml +0 -1072
  48. package/.playwright-mcp/page-2026-05-08T15-34-13-875Z.yml +0 -1072
  49. package/.playwright-mcp/page-2026-05-08T15-34-21-885Z.yml +0 -1109
  50. package/.playwright-mcp/page-2026-05-08T15-34-32-755Z.yml +0 -1109
  51. package/.playwright-mcp/page-2026-05-08T15-35-09-607Z.yml +0 -1119
  52. package/.playwright-mcp/page-2026-05-08T15-35-14-242Z.yml +0 -1109
  53. package/.playwright-mcp/page-2026-05-08T16-18-48-671Z.yml +0 -44
  54. package/.playwright-mcp/page-2026-05-08T16-18-52-753Z.png +0 -0
  55. package/.playwright-mcp/page-2026-05-08T16-19-13-919Z.yml +0 -68
  56. package/.playwright-mcp/page-2026-05-08T16-19-17-977Z.png +0 -0
  57. package/.playwright-mcp/page-2026-05-08T16-19-25-733Z.yml +0 -120
  58. package/.playwright-mcp/page-2026-05-08T16-19-29-252Z.png +0 -0
  59. package/.playwright-mcp/page-2026-05-08T16-19-39-269Z.yml +0 -80
  60. package/.playwright-mcp/page-2026-05-08T16-19-43-915Z.png +0 -0
  61. package/.playwright-mcp/page-2026-05-08T16-20-04-407Z.yml +0 -81
  62. package/.playwright-mcp/page-2026-05-08T16-20-08-984Z.png +0 -0
  63. package/.playwright-mcp/page-2026-05-08T16-20-32-397Z.png +0 -0
  64. package/.playwright-mcp/page-2026-05-08T16-20-58-658Z.png +0 -0
  65. package/.playwright-mcp/page-2026-05-08T16-21-12-320Z.yml +0 -86
  66. package/.playwright-mcp/page-2026-05-08T16-21-39-154Z.yml +0 -91
  67. package/.playwright-mcp/page-2026-05-08T16-21-45-420Z.png +0 -0
  68. package/.playwright-mcp/page-2026-05-08T16-22-21-062Z.yml +0 -0
  69. package/.playwright-mcp/page-2026-05-08T16-22-58-232Z.yml +0 -91
  70. package/.playwright-mcp/page-2026-05-08T16-23-36-520Z.yml +0 -0
  71. package/.playwright-mcp/page-2026-05-08T16-23-46-805Z.yml +0 -100
  72. package/.playwright-mcp/page-2026-05-08T16-23-55-169Z.png +0 -0
  73. package/.playwright-mcp/page-2026-05-08T16-24-26-574Z.yml +0 -91
  74. package/.playwright-mcp/page-2026-05-08T16-25-34-414Z.png +0 -0
  75. package/.playwright-mcp/page-2026-05-08T16-25-59-831Z.png +0 -0
  76. package/.playwright-mcp/page-2026-05-08T16-26-21-809Z.yml +0 -91
  77. package/.playwright-mcp/page-2026-05-08T16-26-47-443Z.yml +0 -105
  78. package/.playwright-mcp/page-2026-05-08T16-26-56-136Z.png +0 -0
  79. package/.playwright-mcp/page-2026-05-08T16-27-59-610Z.yml +0 -48
  80. package/.playwright-mcp/page-2026-05-11T12-54-07-180Z.yml +0 -44
  81. package/.playwright-mcp/page-2026-05-11T12-54-56-946Z.yml +0 -4
  82. package/.playwright-mcp/page-2026-05-11T12-55-47-503Z.yml +0 -24
  83. package/.playwright-mcp/page-2026-05-11T12-56-00-766Z.yml +0 -28
  84. package/.playwright-mcp/page-2026-05-11T12-56-06-438Z.yml +0 -90
  85. package/.playwright-mcp/page-2026-05-11T12-57-56-838Z.yml +0 -106
  86. package/.playwright-mcp/page-2026-05-11T12-58-00-124Z.yml +0 -106
  87. package/.playwright-mcp/page-2026-05-11T12-59-08-836Z.yml +0 -61
  88. package/.playwright-mcp/page-2026-05-11T12-59-12-088Z.yml +0 -61
  89. package/.playwright-mcp/page-2026-05-11T12-59-26-215Z.yml +0 -69
  90. package/.playwright-mcp/page-2026-05-11T12-59-29-519Z.yml +0 -69
  91. package/.playwright-mcp/page-2026-05-11T12-59-37-309Z.yml +0 -0
  92. package/.playwright-mcp/page-2026-05-11T12-59-39-968Z.yml +0 -79
  93. package/.playwright-mcp/page-2026-05-11T12-59-45-983Z.yml +0 -78
  94. package/.playwright-mcp/page-2026-05-11T12-59-49-951Z.yml +0 -78
  95. package/.playwright-mcp/page-2026-05-11T15-34-04-515Z.yml +0 -0
  96. package/.playwright-mcp/page-2026-05-12T15-07-32-171Z.yml +0 -44
  97. package/.playwright-mcp/page-2026-05-12T15-08-09-820Z.yml +0 -119
  98. package/docs/TILEDESK_WIDGET_ACCESSIBILITY_STATEMENT_COMPLETE.md +0 -379
  99. package/playwright-report/index.html +0 -90
  100. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component copy.html +0 -172
  101. package/test-results/.last-run.json +0 -4
@@ -1,172 +0,0 @@
1
- <div class="footerContainerAlert">
2
- <!-- LOGO-->
3
- <div id="hiddenFooter" *ngIf="!hideTextAreaContent && poweredBy" class="fade-in-bottom" [class.hideTextReply]="hideTextReply">
4
- <div class="c21-powered-by" [innerHTML]="poweredBy" (click)="managePoweredBy($event)"></div>
5
- </div>
6
-
7
- <!-- ALERT EMOJI -->
8
- <div id="textAlert"
9
- *ngIf="!hideTextAreaContent && showAlertEmoji"
10
- role="alert"
11
- aria-live="assertive"
12
- class="fade-in-bottom"
13
- [class.hideTextReply]="hideTextReply">
14
- <svg aria-hidden="true" focusable="false" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" version="1.1" viewBox="0 0 110 135">
15
- <path d="M55,25.8c-23,0-41.7,18.7-41.7,41.7s18.7,41.7,41.7,41.7,41.7-18.7,41.7-41.7-18.7-41.7-41.7-41.7ZM55,91.5c-3.4,0-6.2-2.8-6.2-6.2s2.8-6.2,6.2-6.2,6.2,2.8,6.2,6.2-2.8,6.2-6.2,6.2ZM60.3,70.1c-.2,2.8-2.5,4.9-5.3,4.9s-5.1-2.2-5.3-4.9l-1.6-22.3c-.3-4,2.9-7.4,6.9-7.4s7.2,3.4,6.9,7.4l-1.6,22.3Z"/>
16
- </svg>
17
- <div class="alertText">{{translationMap.get('EMOJI_NOT_ELLOWED')}}</div>
18
- </div>
19
-
20
- </div>
21
-
22
- <!-- TEXTAREA + ICONS: conv active-->
23
- <div class="textarea-container" *ngIf="!hideTextAreaContent && !hideTextReply">
24
-
25
- <div *ngIf="!isStopRec" class="icons-container">
26
- <!-- ICON ATTACHMENT -->
27
- <label *ngIf="showAttachmentFooterButton"
28
- for="chat21-file"
29
- role="button"
30
- tabindex="0"
31
- [attr.aria-label]="translationMap?.get('BUTTON_ATTACH_FILE')"
32
- [attr.title]="'MAX_ATTACHMENT' | translate: { FILE_SIZE_LIMIT: file_size_limit }"
33
- class="chat21-textarea-button"
34
- [class.active]="!isFilePendingToUpload && !hideTextReply"
35
- id="chat21-start-upload-doc"
36
- (keydown.enter)="$event.preventDefault(); chat21_file.click()"
37
- (keydown.space)="$event.preventDefault(); chat21_file.click()">
38
- <span class="v-align-center">
39
- <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="24px" height="24" viewBox="0 0 24 24" fill="currentColor">
40
- <path d="M9.9,22.7c0,0-.1,0-.2,0-1.9.3-3.7-.2-5.2-1.4-3-2.3-3.6-6.4-1.4-9.5L9.5,2.5c.4-.5,1.1-.6,1.6-.3.5.4.6,1.1.3,1.6l-6.5,9.4c-1.4,2-1,4.8.9,6.3,1,.8,2.2,1.1,3.5.9,1.3-.2,2.4-.9,3.1-1.9l6-8.7c.9-1.2.6-3-.6-3.9-.6-.5-1.4-.6-2.1-.5-.8.1-1.4.5-1.9,1.1l-5.8,8.2c-.3.5-.2,1.1.2,1.5.2.2.5.3.8.2.3,0,.6-.2.7-.4l4.7-6.2c.4-.5,1.1-.6,1.6-.2.5.4.6,1.1.2,1.6l-4.7,6.2c-.5.7-1.4,1.2-2.3,1.3-.9.1-1.8-.2-2.5-.7-1.4-1.1-1.6-3.1-.6-4.6l5.8-8.2c.8-1.1,2-1.9,3.4-2.1,1.4-.2,2.7.1,3.8,1,2.2,1.7,2.7,4.8,1.1,7.1l-6,8.7c-1.1,1.5-2.6,2.5-4.4,2.8h0Z"/>
41
- </svg>
42
- </span>
43
- <input
44
- [attr.disabled]="(isFilePendingToUpload || isConversationArchived || hideTextReply)? true : null"
45
- tabindex="-1"
46
- type="file"
47
- [attr.aria-label]="translationMap?.get('BUTTON_ATTACH_FILE')"
48
- [accept]="fileUploadAccept"
49
- name="chat21-file"
50
- id="chat21-file"
51
- #chat21_file
52
- class="inputfile"
53
- style="position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;"
54
- (change)="detectFiles($event)"/>
55
- </label>
56
- <!-- ICON EMOJII -->
57
- <label *ngIf="showEmojiFooterButton"
58
- for="chat21-emojii"
59
- role="button"
60
- tabindex="0"
61
- [attr.aria-label]="translationMap?.get('EMOJI')"
62
- [attr.aria-pressed]="isEmojiiPickerShow ? 'true' : 'false'"
63
- class="chat21-textarea-button"
64
- [class.active]="!isFilePendingToUpload && !hideTextReply"
65
- id="chat21-emoticon-picker"
66
- (click)="onEmojiiPickerClicked()"
67
- (keydown.enter)="$event.preventDefault(); onEmojiiPickerClicked()"
68
- (keydown.space)="$event.preventDefault(); onEmojiiPickerClicked()">
69
- <span class="v-align-center">
70
- <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="24" height="24" fill="currentColor">
71
- <path stroke-width=".4px" stroke="currentColor" d="M12,20.8c-5.1,0-9.3-4.2-9.3-9.3S6.9,2.2,12,2.2s9.3,4.2,9.3,9.3-4.2,9.3-9.3,9.3ZM12,3.6c-4.4,0-7.9,3.6-7.9,7.9s3.6,7.9,7.9,7.9,7.9-3.6,7.9-7.9-3.6-7.9-7.9-7.9Z"/>
72
- <path stroke-width=".4px" stroke="currentColor" d="M12,17.2c-2.7,0-4.3-1.9-4.6-2.3-.2-.3-.2-.7.1-1s.7-.2,1,.1c.1.2,1.4,1.8,3.5,1.8s2.2,0,3.5-1.8c.2-.3.7-.4,1-.1s.4.7.1,1c-1.7,2.2-4.1,2.3-4.6,2.3Z"/>
73
- <path d="M8.7,10.9c-.9,0-1.6-.7-1.6-1.6s.7-1.6,1.6-1.6,1.6.7,1.6,1.6-.7,1.6-1.6,1.6Z"/>
74
- <path d="M15.5,10.9c-.9,0-1.6-.7-1.6-1.6s.7-1.6,1.6-1.6,1.6.7,1.6,1.6-.7,1.6-1.6,1.6Z"/>
75
- </svg>
76
- </span>
77
- </label>
78
- </div>
79
-
80
- <div *ngIf="!isStopRec"
81
- class="visible-text-area"
82
- [class.hasError]="showAlertEmoji"
83
- [class.disabled]="(isConversationArchived || hideTextReply)? true : null">
84
- <textarea
85
- [attr.disabled]="(hideTextReply)? true : null"
86
- [attr.placeholder]="(footerMessagePlaceholder)? footerMessagePlaceholder : translationMap?.get('LABEL_PLACEHOLDER')"
87
- [attr.aria-label]="(footerMessagePlaceholder)? footerMessagePlaceholder : translationMap?.get('LABEL_PLACEHOLDER')"
88
- [attr.aria-multiline]="true"
89
- [attr.aria-invalid]="showAlertEmoji ? 'true' : 'false'"
90
- start-focus-chat21-conversation-component
91
- inputTextArea
92
- #textbox
93
- rows="1"
94
- id="chat21-main-message-context"
95
- class='f21textarea c21-button-clean'
96
- [(ngModel)]="textInputTextArea"
97
- (ngModelChange)="onTextAreaChange()"
98
- (keydown)="onkeydown($event)"
99
- (paste)="onPaste($event)">
100
- </textarea>
101
- </div>
102
-
103
- <!-- ICON SEND -->
104
- <button type="button"
105
- *ngIf="(textInputTextArea !== '' && !isStopRec) || !showAudioRecorderFooterButton"
106
- class="chat21-textarea-button c21-button-clean"
107
- [class.disabled]="showAlertEmoji"
108
- [class.active]="textInputTextArea && !hideTextReply"
109
- [attr.aria-label]="translationMap?.get('BUTTON_SEND_MESSAGE')"
110
- [attr.disabled]="(showAlertEmoji || !textInputTextArea || hideTextReply) ? true : null"
111
- id="chat21-button-send"
112
- (click)="onSendPressed($event)">
113
- <span class="v-align-center">
114
- <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" height="24" width="24" viewBox="0 0 24 24" fill="currentColor">
115
- <path d="M1.8,20.6V3.4l20.2,8.6L1.8,20.6ZM3.9,17.3l12.6-5.4L3.9,6.6v3.7l6.4,1.6-6.4,1.6v3.8ZM3.9,17.3V6.6v10.7Z"/>
116
- </svg>
117
- </span>
118
- </button>
119
-
120
- <!-- ICON REC -->
121
- <div *ngIf="showAudioRecorderFooterButton && !textInputTextArea"
122
- class="chat21-audio-button"
123
- [class.active]="isStopRec"
124
- id="chat21-button-rec">
125
- <chat-audio-recorder
126
- [translationMap]="translationMap"
127
- (startRecordingEvent)="onStartRecording()"
128
- (deleteRecordingEvent)="onDeleteRecording()"
129
- (endRecordingEvent)="onEndRecording($event)"
130
- (sendRecordingEvent)="onSendRecording($event)"
131
- [stylesMap]="stylesMap">
132
- </chat-audio-recorder>
133
- </div>
134
- </div>
135
-
136
-
137
- <!-- EMOJII PICKER-->
138
- <div [style.visibility]="isEmojiiPickerShow?'visible':'hidden'"
139
- class="emoji-container"
140
- id="emoji-mart-container"
141
- role="dialog"
142
- [attr.aria-hidden]="!isEmojiiPickerShow"
143
- [attr.aria-label]="translationMap?.get('EMOJI')"
144
- #emoji_mart_container>
145
- <emoji-mart id="emoji-mart"
146
- *ngIf="showEmojiPicker"
147
- class="emoji-mart"
148
- [showPreview]="emojiiOptions?.showPreview"
149
- [color]="stylesMap?.get('themeColor')"
150
- [perLine]="emojiiOptions?.emojiPerLine"
151
- [totalFrequentLines]="emojiiOptions?.totalFrequentLines"
152
- [enableSearch]="emojiiOptions?.enableSearch"
153
- [darkMode]="emojiiOptions?.darkMode"
154
- [include]="emojiiOptions?.include"
155
- (emojiSelect)="addEmoji($event)">
156
- </emoji-mart>
157
- </div>
158
-
159
- <!-- NEW CONV & CONTINE buttons: conv archived-->
160
- <div id="floating-container" *ngIf="hideTextAreaContent" class="fade-in-bottom" start-focus-chat21-conversation-component>
161
- <button type="button" aflistconv #aflistconv class="c21-button-primary" (click)="openNewConversation()" [ngStyle]="{'background-color': stylesMap.get('themeColor'), 'border-color': stylesMap.get('themeColor'), 'color': stylesMap?.get('foregroundColor')}">
162
- <span class="v-align-center">
163
- <svg aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24">
164
- <path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" [ngStyle]="{'fill': stylesMap?.get('foregroundColor')}"/>
165
- </svg>
166
- </span>
167
- <span class="v-align-center c21-label-button">
168
- {{translationMap?.get('LABEL_START_NW_CONV')}}
169
- </span>
170
- <div class="clear"></div>
171
- </button>
172
- </div>
@@ -1,4 +0,0 @@
1
- {
2
- "status": "passed",
3
- "failedTests": []
4
- }