@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.
- package/CHANGELOG.md +14 -0
- package/package.json +1 -1
- package/src/app/component/conversation-detail/conversation/conversation.component.ts +3 -1
- package/src/app/component/conversation-detail/conversation-content/conversation-content.component.spec.ts +0 -7
- package/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts +7 -5
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +4 -3
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +18 -18
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +6 -0
- package/src/app/component/conversation-detail/stream-audio-spectrum/stream-audio-spectrum.component.html +8 -5
- package/src/app/component/conversation-detail/stream-audio-spectrum/stream-audio-spectrum.component.scss +5 -1
- package/src/app/component/form/inputs/form-text/form-text.component.ts +9 -3
- package/src/app/component/message/bubble-message/bubble-message.component.scss +5 -0
- package/src/app/component/message/bubble-message/bubble-message.component.ts +14 -0
- package/src/app/component/message/json-sources/json-sources.component.scss +12 -8
- package/src/app/pipe/marked.pipe.ts +51 -41
- package/src/app/providers/global-settings.service.ts +31 -0
- package/src/app/providers/json-sources-parser.service.ts +25 -32
- package/src/app/providers/voice/voice-streaming.service.ts +11 -19
- package/src/app/providers/voice/voice-streaming.types.ts +0 -1
- package/src/app/providers/voice/voice.service.spec.ts +12 -45
- package/src/app/providers/voice/voice.service.ts +215 -45
- package/src/app/utils/globals.ts +10 -0
- package/src/assets/i18n/en.json +106 -125
- package/src/assets/i18n/es.json +1 -0
- package/src/assets/i18n/fr.json +1 -0
- package/src/assets/i18n/it.json +1 -0
- package/src/assets/sounds/keyboard.mp3 +0 -0
- package/src/assets/twp/chatbot-panel.html +3 -1
- package/src/chat21-core/utils/utils-message.ts +15 -5
- package/src/widget-config-template.json +1 -0
- package/src/widget-config.json +30 -28
- package/.playwright-mcp/console-2026-05-08T15-31-09-000Z.log +0 -17
- package/.playwright-mcp/console-2026-05-08T15-32-19-412Z.log +0 -89
- package/.playwright-mcp/console-2026-05-08T16-18-48-424Z.log +0 -133
- package/.playwright-mcp/console-2026-05-11T12-54-06-869Z.log +0 -13
- package/.playwright-mcp/console-2026-05-11T12-54-56-229Z.log +0 -147
- package/.playwright-mcp/console-2026-05-11T12-55-47-174Z.log +0 -183
- package/.playwright-mcp/console-2026-05-11T15-34-03-590Z.log +0 -210
- package/.playwright-mcp/console-2026-05-12T15-07-31-880Z.log +0 -118
- package/.playwright-mcp/page-2026-05-08T15-32-19-900Z.yml +0 -851
- package/.playwright-mcp/page-2026-05-08T15-32-47-264Z.yml +0 -857
- package/.playwright-mcp/page-2026-05-08T15-33-17-089Z.yml +0 -1110
- package/.playwright-mcp/page-2026-05-08T15-33-23-486Z.yml +0 -1069
- package/.playwright-mcp/page-2026-05-08T15-33-45-390Z.yml +0 -1076
- package/.playwright-mcp/page-2026-05-08T15-33-52-666Z.yml +0 -1072
- package/.playwright-mcp/page-2026-05-08T15-34-01-338Z.yml +0 -1085
- package/.playwright-mcp/page-2026-05-08T15-34-07-227Z.yml +0 -1072
- package/.playwright-mcp/page-2026-05-08T15-34-13-875Z.yml +0 -1072
- package/.playwright-mcp/page-2026-05-08T15-34-21-885Z.yml +0 -1109
- package/.playwright-mcp/page-2026-05-08T15-34-32-755Z.yml +0 -1109
- package/.playwright-mcp/page-2026-05-08T15-35-09-607Z.yml +0 -1119
- package/.playwright-mcp/page-2026-05-08T15-35-14-242Z.yml +0 -1109
- package/.playwright-mcp/page-2026-05-08T16-18-48-671Z.yml +0 -44
- package/.playwright-mcp/page-2026-05-08T16-18-52-753Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-19-13-919Z.yml +0 -68
- package/.playwright-mcp/page-2026-05-08T16-19-17-977Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-19-25-733Z.yml +0 -120
- package/.playwright-mcp/page-2026-05-08T16-19-29-252Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-19-39-269Z.yml +0 -80
- package/.playwright-mcp/page-2026-05-08T16-19-43-915Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-20-04-407Z.yml +0 -81
- package/.playwright-mcp/page-2026-05-08T16-20-08-984Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-20-32-397Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-20-58-658Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-21-12-320Z.yml +0 -86
- package/.playwright-mcp/page-2026-05-08T16-21-39-154Z.yml +0 -91
- package/.playwright-mcp/page-2026-05-08T16-21-45-420Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-22-21-062Z.yml +0 -0
- package/.playwright-mcp/page-2026-05-08T16-22-58-232Z.yml +0 -91
- package/.playwright-mcp/page-2026-05-08T16-23-36-520Z.yml +0 -0
- package/.playwright-mcp/page-2026-05-08T16-23-46-805Z.yml +0 -100
- package/.playwright-mcp/page-2026-05-08T16-23-55-169Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-24-26-574Z.yml +0 -91
- package/.playwright-mcp/page-2026-05-08T16-25-34-414Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-25-59-831Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-26-21-809Z.yml +0 -91
- package/.playwright-mcp/page-2026-05-08T16-26-47-443Z.yml +0 -105
- package/.playwright-mcp/page-2026-05-08T16-26-56-136Z.png +0 -0
- package/.playwright-mcp/page-2026-05-08T16-27-59-610Z.yml +0 -48
- package/.playwright-mcp/page-2026-05-11T12-54-07-180Z.yml +0 -44
- package/.playwright-mcp/page-2026-05-11T12-54-56-946Z.yml +0 -4
- package/.playwright-mcp/page-2026-05-11T12-55-47-503Z.yml +0 -24
- package/.playwright-mcp/page-2026-05-11T12-56-00-766Z.yml +0 -28
- package/.playwright-mcp/page-2026-05-11T12-56-06-438Z.yml +0 -90
- package/.playwright-mcp/page-2026-05-11T12-57-56-838Z.yml +0 -106
- package/.playwright-mcp/page-2026-05-11T12-58-00-124Z.yml +0 -106
- package/.playwright-mcp/page-2026-05-11T12-59-08-836Z.yml +0 -61
- package/.playwright-mcp/page-2026-05-11T12-59-12-088Z.yml +0 -61
- package/.playwright-mcp/page-2026-05-11T12-59-26-215Z.yml +0 -69
- package/.playwright-mcp/page-2026-05-11T12-59-29-519Z.yml +0 -69
- package/.playwright-mcp/page-2026-05-11T12-59-37-309Z.yml +0 -0
- package/.playwright-mcp/page-2026-05-11T12-59-39-968Z.yml +0 -79
- package/.playwright-mcp/page-2026-05-11T12-59-45-983Z.yml +0 -78
- package/.playwright-mcp/page-2026-05-11T12-59-49-951Z.yml +0 -78
- package/.playwright-mcp/page-2026-05-11T15-34-04-515Z.yml +0 -0
- package/.playwright-mcp/page-2026-05-12T15-07-32-171Z.yml +0 -44
- package/.playwright-mcp/page-2026-05-12T15-08-09-820Z.yml +0 -119
- package/docs/TILEDESK_WIDGET_ACCESSIBILITY_STATEMENT_COMPLETE.md +0 -379
- package/playwright-report/index.html +0 -90
- package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component copy.html +0 -172
- 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>
|