@chat21/chat21-web-widget 5.0.56-rc.1 → 5.0.56-rc.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.
Files changed (131) hide show
  1. package/.github/workflows/build.yml +1 -0
  2. package/CHANGELOG.md +13 -0
  3. package/angular.json +6 -7
  4. package/package.json +5 -4
  5. package/src/app/app.component.html +1 -11
  6. package/src/app/app.component.scss +12 -13
  7. package/src/app/app.component.spec.ts +0 -2
  8. package/src/app/app.component.ts +29 -35
  9. package/src/app/app.module.ts +4 -5
  10. package/src/app/component/conversation-detail/conversation/conversation.component.html +1 -10
  11. package/src/app/component/conversation-detail/conversation/conversation.component.scss +5 -428
  12. package/src/app/component/conversation-detail/conversation/conversation.component.ts +23 -25
  13. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.html +4 -63
  14. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.scss +11 -81
  15. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.spec.ts +0 -3
  16. package/src/app/component/conversation-detail/conversation-content/conversation-content.component.ts +6 -6
  17. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.html +7 -32
  18. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.scss +11 -11
  19. package/src/app/component/conversation-detail/conversation-footer/conversation-footer.component.ts +8 -8
  20. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.html +4 -25
  21. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.scss +5 -5
  22. package/src/app/component/conversation-detail/conversation-header/conversation-header.component.ts +4 -88
  23. package/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.html +7 -16
  24. package/src/app/component/conversation-detail/conversation-internal-frame/conversation-internal-frame.component.ts +2 -26
  25. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.html +1 -11
  26. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.scss +5 -5
  27. package/src/app/component/conversation-detail/conversation-preview/conversation-preview.component.ts +2 -19
  28. package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.html +10 -42
  29. package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.scss +1 -2
  30. package/src/app/component/eyeeye-catcher-card/eyeeye-catcher-card.component.ts +2 -3
  31. package/src/app/component/form/form-builder/form-builder.component.html +0 -1
  32. package/src/app/component/form/form-builder/form-builder.component.scss +1 -1
  33. package/src/app/component/form/form-builder/form-builder.component.ts +4 -5
  34. package/src/app/component/form/inputs/form-checkbox/form-checkbox.component.scss +1 -2
  35. package/src/app/component/form/inputs/form-checkbox/form-checkbox.component.ts +2 -3
  36. package/src/app/component/form/inputs/form-label/form-label.component.ts +0 -1
  37. package/src/app/component/form/inputs/form-text/form-text.component.scss +3 -13
  38. package/src/app/component/form/inputs/form-text/form-text.component.ts +1 -2
  39. package/src/app/component/form/inputs/form-textarea/form-textarea.component.html +0 -13
  40. package/src/app/component/form/inputs/form-textarea/form-textarea.component.scss +4 -4
  41. package/src/app/component/form/inputs/form-textarea/form-textarea.component.ts +0 -10
  42. package/src/app/component/form/prechat-form/prechat-form.component.html +0 -2
  43. package/src/app/component/form/prechat-form/prechat-form.component.scss +2 -2
  44. package/src/app/component/form/prechat-form/prechat-form.component.ts +2 -2
  45. package/src/app/component/home/home.component.scss +7 -7
  46. package/src/app/component/home/home.component.ts +1 -4
  47. package/src/app/component/home-conversations/home-conversations.component.scss +7 -7
  48. package/src/app/component/home-conversations/home-conversations.component.ts +9 -12
  49. package/src/app/component/last-message/last-message.component.scss +4 -4
  50. package/src/app/component/last-message/last-message.component.ts +4 -7
  51. package/src/app/component/launcher-button/launcher-button.component.ts +3 -3
  52. package/src/app/component/list-all-conversations/list-all-conversations.component.scss +2 -2
  53. package/src/app/component/list-all-conversations/list-all-conversations.component.ts +3 -3
  54. package/src/app/component/list-conversations/list-conversations.component.html +1 -1
  55. package/src/app/component/list-conversations/list-conversations.component.scss +3 -3
  56. package/src/app/component/list-conversations/list-conversations.component.ts +3 -6
  57. package/src/app/component/menu-options/menu-options.component.html +1 -8
  58. package/src/app/component/menu-options/menu-options.component.scss +4 -4
  59. package/src/app/component/menu-options/menu-options.component.ts +1 -1
  60. package/src/app/component/message/bubble-message/bubble-message.component.html +1 -2
  61. package/src/app/component/message/bubble-message/bubble-message.component.scss +3 -3
  62. package/src/app/component/message/bubble-message/bubble-message.component.spec.ts +0 -2
  63. package/src/app/component/message/bubble-message/bubble-message.component.ts +1 -14
  64. package/src/app/component/message/buttons/action-button/action-button.component.scss +6 -6
  65. package/src/app/component/message/buttons/link-button/link-button.component.scss +7 -7
  66. package/src/app/component/message/buttons/text-button/text-button.component.scss +8 -8
  67. package/src/app/component/message/frame/frame.component.scss +1 -1
  68. package/src/app/component/message/frame/frame.component.ts +1 -1
  69. package/src/app/component/message/html/html.component.scss +4 -4
  70. package/src/app/component/message/html/html.component.ts +1 -2
  71. package/src/app/component/message/image/image.component.scss +1 -1
  72. package/src/app/component/message/image/image.component.ts +2 -3
  73. package/src/app/component/message/info-message/info-message.component.html +2 -1
  74. package/src/app/component/message/info-message/info-message.component.scss +6 -6
  75. package/src/app/component/message/like-unlike/like-unlike.component.scss +1 -1
  76. package/src/app/component/message/like-unlike/like-unlike.component.ts +2 -2
  77. package/src/app/component/message/text/text.component.scss +1 -1
  78. package/src/app/component/message/text/text.component.ts +1 -1
  79. package/src/app/component/message-attachment/message-attachment.component.ts +1 -1
  80. package/src/app/component/selection-department/selection-department.component.scss +6 -6
  81. package/src/app/component/selection-department/selection-department.component.ts +2 -2
  82. package/src/app/component/send-button/send-button.component.ts +1 -2
  83. package/src/app/component/star-rating-widget/star-rating-widget.component.scss +6 -6
  84. package/src/app/component/star-rating-widget/star-rating-widget.component.ts +2 -2
  85. package/src/app/pipe/date-ago.pipe.spec.ts +8 -0
  86. package/src/app/pipe/date-ago.pipe.ts +42 -0
  87. package/src/app/providers/app-config.service.ts +0 -1
  88. package/src/app/providers/global-settings.service.ts +3 -31
  89. package/src/app/providers/star-rating-widget.service.ts +4 -4
  90. package/src/app/providers/translator.service.ts +3 -11
  91. package/src/app/providers/waiting.service.ts +2 -2
  92. package/src/app/sass/_variables.scss +29 -26
  93. package/src/app/utils/globals.ts +4 -34
  94. package/src/app/utils/rules.ts +5 -7
  95. package/src/app/utils/utils.ts +47 -37
  96. package/src/assets/i18n/en.json +0 -2
  97. package/src/assets/i18n/es.json +0 -2
  98. package/src/assets/i18n/fr.json +0 -2
  99. package/src/assets/i18n/it.json +0 -2
  100. package/src/assets/twp/chatbot-panel.html +4 -0
  101. package/src/assets/twp/index.html +2 -57
  102. package/src/chat21-core/providers/firebase/firebase-archivedconversations-handler.ts +15 -23
  103. package/src/chat21-core/providers/firebase/firebase-auth-service.ts +21 -20
  104. package/src/chat21-core/providers/firebase/firebase-conversation-handler.ts +15 -13
  105. package/src/chat21-core/providers/firebase/firebase-conversations-handler.ts +16 -23
  106. package/src/chat21-core/providers/firebase/firebase-groups-handler.ts +15 -11
  107. package/src/chat21-core/providers/firebase/firebase-image-repo.ts +13 -4
  108. package/src/chat21-core/providers/firebase/firebase-init-service.ts +3 -3
  109. package/src/chat21-core/providers/firebase/firebase-notifications.ts +11 -9
  110. package/src/chat21-core/providers/firebase/firebase-presence.service.ts +14 -11
  111. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +17 -11
  112. package/src/chat21-core/providers/firebase/firebase-upload.service.ts +12 -9
  113. package/src/chat21-core/providers/localSessionStorage.ts +2 -15
  114. package/src/chat21-core/providers/mqtt/chat-service.ts +12 -2
  115. package/src/chat21-core/providers/mqtt/mqtt-archivedconversations-handler.ts +1 -34
  116. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +4 -6
  117. package/src/chat21-core/providers/mqtt/mqtt-conversations-handler.ts +1 -11
  118. package/src/chat21-core/providers/mqtt/mqtt-notifications.ts +13 -7
  119. package/src/chat21-core/providers/mqtt/mqtt-presence.service.ts +3 -3
  120. package/src/chat21-core/providers/mqtt/mqtt-typing.service.ts +3 -3
  121. package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +0 -1
  122. package/src/chat21-core/utils/user-typing/user-typing.component.scss +3 -3
  123. package/src/chat21-core/utils/utils.ts +46 -118
  124. package/src/launch.js +42 -12
  125. package/src/models/message.ts +0 -23
  126. package/src/test-new.html +0 -6
  127. package/src/app/providers/settings-saver.service.spec.ts +0 -17
  128. package/src/app/providers/settings-saver.service.ts +0 -56
  129. package/src/app/providers/storage.service.spec.ts +0 -16
  130. package/src/app/providers/storage.service.ts +0 -220
  131. package/src/app/utils/translations.ts +0 -122
@@ -4,7 +4,7 @@
4
4
 
5
5
  <div class="c21-body-content" tabindex="1520" aria-label=" messaggi della conversazione: ">
6
6
 
7
- <!-- CONTENT !isNewConversation && [class.active]="isShowSpinner" -->
7
+ <!-- USER TYPING (WAIT MESSAGE) -->
8
8
  <span *ngIf="messages && this.messages.length === 0 && !isTypings">
9
9
  <user-typing class="loading"
10
10
  [color]="stylesMap?.get('iconColor')"
@@ -12,12 +12,6 @@
12
12
  [idUserTypingNow]="idUserTypingNow"
13
13
  [nameUserTypingNow]="nameUserTypingNow">
14
14
  </user-typing>
15
- <!-- <div class="chat21-spinner active" id="chat21-spinner">
16
- <div class="chat21-bounce1" [ngStyle]="{'background-color': stylesMap.get('themeColor')}"></div>
17
- <div class="chat21-bounce2" [ngStyle]="{'background-color': stylesMap.get('themeColor')}"></div>
18
- <div class="chat21-bounce3" [ngStyle]="{'background-color': stylesMap.get('themeColor')}"></div>
19
- <span [ngStyle]="{'color': stylesMap.get('themeColor')}">{{translationMap.get('LABEL_LOADING')}}</span>
20
- </div> -->
21
15
  </span>
22
16
 
23
17
 
@@ -56,7 +50,6 @@
56
50
  </div>
57
51
 
58
52
  <!-- message RECIPIENT:: -->
59
- <!-- <div role="messaggio" *ngIf="messageType(MESSAGE_TYPE_OTHERS, message) && !isSameSender(message?.sender, i)" class="message_sender_fullname" [ngClass]="{'slide-in-left': false}" >{{message?.sender_fullname}}</div> -->
60
53
  <div role="messaggio" *ngIf="messageType(MESSAGE_TYPE_OTHERS, message)" class="msg_container base_receive">
61
54
 
62
55
  <chat-avatar-image *ngIf="!isSameSender(message?.sender, i)"
@@ -87,7 +80,7 @@
87
80
 
88
81
  </div>
89
82
 
90
- <!-- message INFO/SUPPORT:: message.attributes['subtype'] === 'info/support' -->
83
+ <!-- message INFO/SUPPORT-->
91
84
  <!-- !hideBubbleInfoMessage && && message.text.indexOf('INFO_SUPPORT_USER_ADDED_VERB') === -1 -->
92
85
  <div *ngIf="messageType(MESSAGE_TYPE_INFO, message)" class="msg_info_container">
93
86
  <chat-info-message class="messages"
@@ -95,53 +88,10 @@
95
88
  </chat-info-message>
96
89
  </div>
97
90
 
98
- <!-- <div role="messaggio" *ngIf="message.sender != senderId;" class="msg_container base_receive slide-in-left">
99
-
100
- <div class="messages msg_receive" [class.emoticon]="message.emoticon">
101
-
102
- <div>
103
-
104
- <chat-image *ngIf="message.type == 'image' && message.metadata"
105
- [metadata]="message.metadata"
106
- [width]="getMetadataSize(message.metadata).width"
107
- [height]="getMetadataSize(message.metadata).height">
108
- </chat-image>
109
-
110
- <chat-frame *ngIf="message.type == 'frame' && message.metadata"
111
- [metadata]="message.metadata"
112
- [width]="getMetadataSize(message.metadata).width"
113
- [height]="getMetadataSize(message.metadata).height">
114
- </chat-frame>
115
-
116
- <!- - <div *ngIf="message.type == 'frame' && message.metadata" [ngStyle] = "{ 'max-width': '100%', 'width': message.metadata.width, 'height': message.metadata.height }">
117
- <iframe width = "100%" height = "100%" style= "border:none;" [src] = "message.metadata.src" ></iframe>
118
- </div> -- >
119
-
120
-
121
- <! -- message type:: text - ->
122
- <! -- <div *ngIf="message.type == 'text';"> {{message.timestamp | amTimeAgo}}- ->
123
- <div *ngIf="message.text" [tooltip]="timeTooltipRight" [options]="tooltipOptions" placement="right" content-type="template" (click)="handleTooltipEvents($event)">
124
- <ng-template #timeTooltipRight>
125
- <span>{{message.timestamp | amTimeAgo}}</span>
126
- </ng-template>
127
-
128
- <chat-text
129
- [text]="message.text"
130
- [color]="'black'"
131
- (onBeforeMessageRender)="returnOnBeforeMessageRender($event)"
132
- (onAfterMessageRender)="returnOnAfterMessageRender($event)">
133
- </chat-text>
134
-
135
- </div>
136
- </div>
137
-
138
- </div>
139
-
140
- </div> -->
141
-
142
91
 
143
92
  <div class="time slide-in-left" [ngClass]="{'sender' : message?.sender == senderId}">
144
- <time #timeTooltip *ngIf="message?.sender!=='' && message?.timestamp !== '{.sv: timestamp}'" >{{message?.timestamp | amTimeAgo}} </time>
93
+ <!-- <time #timeTooltip *ngIf="message?.sender!=='' && message?.timestamp !== '{.sv: timestamp}'" >{{message?.timestamp | amTimeAgo}} </time> -->
94
+ <time #timeTooltip *ngIf="message?.sender!=='' && message?.timestamp !== '{.sv: timestamp}'" >{{message?.timestamp | dateAgo}} </time>
145
95
  </div>
146
96
 
147
97
 
@@ -160,22 +110,13 @@
160
110
 
161
111
  </div>
162
112
 
163
- <!-- CHAT CLOSED HARD-CODED INFO-MESSAGE -->
164
- <!-- <div *ngIf="isConversationArchived" class="msg_info_container">
165
- <chat-info-message class="messages"
166
- [message]="{text: 'Chat closed. Click to open new conversation!'}">
167
- </chat-info-message>
168
- </div> -->
169
-
170
113
  <!-- FILE PENDING UPLOAD -->
171
114
  <!-- -->
172
115
  <div *ngIf="showUploadProgress" class="msg_container base_sent" >
173
- <!-- class="slide-in-right" -->
174
116
  <div class="chat21-spinner active" id="chat21-spinner" style="margin: 0px 6px 0px;">
175
117
  <div class="chat21-bounce1" [ngStyle]="{'background-color': stylesMap.get('iconColor')}"></div>
176
118
  <div class="chat21-bounce2" [ngStyle]="{'background-color': stylesMap.get('iconColor'), 'opacity': 0.4}"></div>
177
119
  <div class="chat21-bounce3" [ngStyle]="{'background-color': stylesMap.get('iconColor'), 'opacity': 0.6}"></div>
178
- <!-- <span [ngStyle]="{'color': stylesMap.get('themeColor')}">{{translationMap.get('LABEL_LOADING')}}</span> -->
179
120
  </div>
180
121
 
181
122
 
@@ -1,4 +1,4 @@
1
- @import 'src/app/sass/variables';
1
+ // @import 'src/app/sass/variables';
2
2
 
3
3
 
4
4
  #scroll-me {
@@ -9,8 +9,8 @@
9
9
  }
10
10
 
11
11
  :host {
12
- --textColorSent: #{$col-msg-sent};
13
- --textColorReceive: #{$black};
12
+ --textColorSent: #{var(--col-msg-sent)};
13
+ --textColorReceive: #{var(--black)};
14
14
  }
15
15
 
16
16
  :host .base_receive .msg_receive ::ng-deep > div > div > div > chat-text a {
@@ -66,7 +66,7 @@
66
66
  top: 0;
67
67
  right: 0;
68
68
  left: 0;
69
- bottom: $chat-footer-height; //43px;
69
+ bottom: var(--chat-footer-height); //43px;
70
70
  overflow: hidden;
71
71
  .time{
72
72
  margin-bottom: 20px;
@@ -141,7 +141,7 @@
141
141
  }
142
142
  /* ====== SET MESSAGES ====== */
143
143
  .messages {
144
- border-radius: $border-radius-bubble-message;
144
+ border-radius: var(--border-radius-bubble-message);
145
145
  padding: 0;
146
146
  word-wrap: break-word;
147
147
  // padding: 14px;
@@ -203,8 +203,8 @@
203
203
  padding: 2px 0px 4px 0px; //2px 0px 4px 40px;
204
204
 
205
205
  .msg_sent {
206
- background-color: $bck-msg-sent;
207
- color: $col-msg-sent;
206
+ background-color: var(--bck-msg-sent);
207
+ color: var(--col-msg-sent);
208
208
  margin-right: 0;
209
209
  margin-left: 4px;
210
210
  max-width: calc(100% - 30px);
@@ -238,29 +238,7 @@
238
238
  // }
239
239
  // }
240
240
  }
241
-
242
- .status-message {
243
- width: 16px;
244
- height: 16px;
245
- margin-left: 4px;
246
- .icon {
247
- width: 13px;
248
- height: 13px;
249
- background-repeat: no-repeat;
250
- background-position: center;
251
- background-size: cover;
252
- overflow-x: hidden;
253
- }
254
- .c21-ico-schedule {
255
- background-image: url("../../../../assets/images/f21ico-schedule.svg");
256
- }
257
- .c21-ico-done {
258
- background-image: url("../../../../assets/images/f21ico-done.svg");
259
- }
260
- .c21-ico-done_all {
261
- background-image: url("../../../../assets/images/f21ico-done_all.svg");
262
- }
263
- }
241
+
264
242
  }
265
243
 
266
244
  /** recive message **/
@@ -294,8 +272,8 @@
294
272
  }
295
273
  /* message */
296
274
  .msg_receive {
297
- background-color: $light-white;
298
- color: $black;
275
+ background-color: var(--light-white);
276
+ color: var(--black);
299
277
  // max-width: 260px;
300
278
  max-width: calc(100% - 70px);
301
279
  min-width: 14px;
@@ -328,7 +306,7 @@
328
306
 
329
307
  .message_sender_fullname{
330
308
  font-size: 12px;
331
- color: $dark-gray;
309
+ color: var(--dark-gray);
332
310
  margin: 0 auto 4px auto;
333
311
  }
334
312
 
@@ -341,54 +319,6 @@
341
319
 
342
320
  // ============= END CSS c21-body ================= //
343
321
 
344
-
345
- /* SET ICON AVATAR */
346
- .c21-icon-avatar {
347
- position: relative;
348
- padding: 0;
349
- margin: 0;
350
- height: 40px;
351
- width: 40px;
352
- min-height: 40px;
353
- min-width: 40px;
354
- line-height: 40px;
355
- border-radius: 50%;
356
- overflow: hidden;
357
- background-color: #ffffff;
358
- .c21-avatar-placeholder {
359
- position: absolute;
360
- top: 0;
361
- left: 0;
362
- width: 100%;
363
- height: 100%;
364
- border-radius: 50%;
365
- text-align: center;
366
- font-size: 1.4em;
367
- color: #ffffff;
368
- font-weight: 500;
369
- }
370
- .c21-avatar-image {
371
- position: absolute;
372
- top: 0;
373
- left: 0;
374
- width: 100%;
375
- height: 100%;
376
- margin: 0;
377
- background-repeat: no-repeat;
378
- background-position: center;
379
- background-size: cover;
380
- border-radius: 50%;
381
- }
382
- .c21-avatar-image img{
383
- max-width: 100%;
384
- width: 100%;
385
- height: 100%;
386
- min-width: 25px;
387
- min-height: 25px;
388
- object-fit: cover;
389
- }
390
- }
391
-
392
322
  @-webkit-keyframes sk-bouncedelay {
393
323
  0%, 80%, 100% { -webkit-transform: scale(0) }
394
324
  40% { -webkit-transform: scale(1.0) }
@@ -1,4 +1,3 @@
1
- import { MomentModule } from 'ngx-moment';
2
1
  import { async, ComponentFixture, TestBed, waitForAsync, inject } from '@angular/core/testing';
3
2
 
4
3
  import { ConversationContentComponent } from './conversation-content.component';
@@ -35,7 +34,6 @@ describe('ConversationContentComponent', () => {
35
34
  HtmlEntitiesEncodePipe,
36
35
  ],
37
36
  imports: [
38
- MomentModule
39
37
  ],
40
38
  providers: [
41
39
  UploadService,
@@ -48,7 +46,6 @@ describe('ConversationContentComponent', () => {
48
46
 
49
47
  beforeEach(() => {
50
48
  fixture = TestBed.createComponent(ConversationContentComponent);
51
- component = fixture.componentInstance;
52
49
  let upload = fixture.debugElement.injector.get(UploadService) as UploadService
53
50
  upload.BSStateUpload.next({ upload: 100, type: 'image' })
54
51
  fixture.detectChanges();
@@ -1,12 +1,12 @@
1
- import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild, SimpleChanges } from '@angular/core';
1
+ import { ChangeDetectorRef, Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';
2
+ import { MAX_WIDTH_IMAGES, MSG_STATUS_RETURN_RECEIPT, MSG_STATUS_SENT, MSG_STATUS_SENT_SERVER } from 'src/app/utils/constants';
2
3
  import { MessageModel } from 'src/chat21-core/models/message';
3
- import { isPopupUrl, popupUrl } from 'src/chat21-core/utils/utils';
4
- import { MSG_STATUS_SENT, MSG_STATUS_RETURN_RECEIPT, MSG_STATUS_SENT_SERVER, MAX_WIDTH_IMAGES} from 'src/app/utils/constants';
5
- import { isInfo, isMine, messageType, isEmojii, isImage, isFrame } from 'src/chat21-core/utils/utils-message';
6
- import { MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from 'src/chat21-core/utils/constants';
4
+ import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
7
5
  import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
8
6
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
9
- import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
7
+ import { MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from 'src/chat21-core/utils/constants';
8
+ import { isPopupUrl, popupUrl } from 'src/chat21-core/utils/utils';
9
+ import { isEmojii, isFrame, isImage, isInfo, isMine, messageType } from 'src/chat21-core/utils/utils-message';
10
10
 
11
11
  @Component({
12
12
  selector: 'chat-conversation-content',
@@ -36,7 +36,6 @@
36
36
  (keypress)="onkeypress($event)"
37
37
  (keydown)="onkeydown($event)"
38
38
  (paste)="onPaste($event)">
39
- <!-- placeholder="{{ translationMap?.get('LABEL_PLACEHOLDER') }}"> -->
40
39
  </textarea>
41
40
 
42
41
  </div>
@@ -46,12 +45,10 @@
46
45
  <label *ngIf="showAttachmentButton == true" tabindex="1502" aria-label="allegati" for="chat21-file" class="chat21-textarea-button" [class.active]="!isFilePendingToUpload && !hideTextReply" id="chat21-start-upload-doc">
47
46
  <span class="v-align-center">
48
47
  <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 28 28" transform="rotate(45)">
49
- <!-- <path [ngStyle]="{'fill': stylesMap?.get('themeColor') }" d="M0 0h24v24H0V0z"/> -->
50
48
  <path d="M16.5 6v11.5c0 2.21-1.79 4-4 4s-4-1.79-4-4V5c0-1.38 1.12-2.5 2.5-2.5s2.5 1.12 2.5 2.5v10.5c0 .55-.45 1-1 1s-1-.45-1-1V6H10v9.5c0 1.38 1.12 2.5 2.5 2.5s2.5-1.12 2.5-2.5V5c0-2.21-1.79-4-4-4S7 2.79 7 5v12.5c0 3.04 2.46 5.5 5.5 5.5s5.5-2.46 5.5-5.5V6h-1.5z" />
51
49
  </svg>
52
50
  </span>
53
- <!-- accept="image/*, audio/* ,video/*, .pdf, .zip" -->
54
- <input
51
+ <input
55
52
  [attr.disabled] = "(isFilePendingToUpload || isConversationArchived || hideTextReply)? true : null"
56
53
  tabindex="1503"
57
54
  type="file"
@@ -65,13 +62,7 @@
65
62
  (change)="detectFiles($event)"/>
66
63
  </label>
67
64
  <!-- ICON SEND -->
68
- <!-- <div [class.active]="isFileSelected && !isFilePendingToUpload &&" class="chat21-textarea-button" id="chat21-button-reset" (click)="resetLoadImage()"></div> -->
69
65
  <div tabindex="-1" class="chat21-textarea-button" [class.active]="textInputTextArea && !hideTextReply" id="chat21-button-send" (click)="onSendPressed($event)">
70
- <!-- <span class="v-align-center">
71
- <svg xmlns="http://www.w3.org/2000/svg" [ngStyle]="{'fill': stylesMap?.get('themeColor') }" width="24" height="24" viewBox="0 0 28 28">
72
- <path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" />
73
- </svg>
74
- </span> -->
75
66
  <span class="v-align-center">
76
67
  <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="24" width="24" viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve">
77
68
  <path d="M1.8,18.9V1.7L22,10.3L1.8,18.9z M3.9,15.6l12.6-5.4L3.9,4.9v3.7l6.4,1.6l-6.4,1.6V15.6z M3.9,15.6V4.9v7V15.6z"/>
@@ -90,14 +81,6 @@
90
81
  </span>
91
82
  </label>
92
83
  </div>
93
- <!-- <div id="button" data-testid="widgetButton" class="chat-open">
94
- <button type="button" id="button-body" tabindex="0" [ngStyle]="{'background': 'linear-gradient( 180grad,' + stylesMap.get('themeColor')+','+ convertColorToRGBA(stylesMap.get('themeColor'), 50)+')'}">
95
- <svg fill="#FFFFFF" height="20" width="20" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
96
- <path d="M2.01 21L23 12 2.01 3 2 10l15 2-15 2z"></path>
97
- <path d="M0 0h24v24H0z" fill="none"></path>
98
- </svg>
99
- </button>
100
- </div> -->
101
84
 
102
85
 
103
86
  <!-- <div #div_mic *ngIf="g.showMicButton" id="playbutton">
@@ -119,25 +102,17 @@
119
102
  </button>
120
103
  </div> -->
121
104
 
122
-
123
- <!-- <div [class.active]="isFileSelected" class="name-image" id="chat21-file-selected">
124
- <span>{{nameFile}}</span>
125
- </div> -->
126
- <!-- <span id="testFocus" tabindex="1599" *ngIf="!isConversationArchived" onFocus="document.querySelector('[start-focus-chat21-conversation-component]').focus()"></span> -->
127
- <!-- <span id="altTextArea" style="display: none">scrivi la tua domanda</span> -->
128
-
129
-
130
105
  <div [style.visibility]="isEmojiiPickerShow?'visible':'hidden'" class="emoji-container">
131
106
  <emoji-mart id="emoji-mart"
132
107
  *ngIf="showEmojiPicker"
133
108
  class="emoji-mart"
134
- [showPreview]="emojiiOptions.showPreview"
109
+ [showPreview]="emojiiOptions?.showPreview"
135
110
  [color]="stylesMap?.get('themeColor')"
136
- [perLine]="emojiiOptions.emojiPerLine"
137
- [totalFrequentLines]="emojiiOptions.totalFrequentLines"
138
- [enableSearch]="emojiiOptions.enableSearch"
139
- [darkMode]="emojiiOptions.darkMode"
140
- [include]="emojiiOptions.include"
111
+ [perLine]="emojiiOptions?.emojiPerLine"
112
+ [totalFrequentLines]="emojiiOptions?.totalFrequentLines"
113
+ [enableSearch]="emojiiOptions?.enableSearch"
114
+ [darkMode]="emojiiOptions?.darkMode"
115
+ [include]="emojiiOptions?.include"
141
116
  (emojiSelect)="addEmoji($event)">
142
117
  </emoji-mart>
143
118
  </div>
@@ -1,16 +1,16 @@
1
- @import 'src/app/sass/variables';
1
+ // @import 'src/app/sass/variables';
2
2
 
3
3
  .visible-text-area {
4
4
  pointer-events: auto;
5
- border-radius: $chat-footer-border-radius;
6
- background-color: $chat-footer-background-color;
5
+ border-radius: var(--chat-footer-border-radius);
6
+ background-color: var(--chat-footer-background-color);
7
7
  &.disabled {
8
8
  background-color: rgb(232, 233, 237);
9
9
  }
10
10
  }
11
11
 
12
12
  .chat21-textarea-button {
13
- fill: $icon-fill-color;
13
+ fill: var(--icon-fill-color);
14
14
  pointer-events: auto;
15
15
  }
16
16
 
@@ -86,17 +86,17 @@ textarea:active{
86
86
  z-index: 1;
87
87
  cursor: pointer;
88
88
  background-color: #ffffff;
89
- border: 1px solid $trasp-light-gray;
89
+ border: 1px solid var(--trasp-light-gray);
90
90
  // -webkit-box-shadow: 0 3px 2px $trasp-light-black;
91
91
  // box-shadow: 0 3px 2px $trasp-light-black;
92
92
  text-align: center;
93
93
  svg {
94
94
  margin: auto;
95
- fill: $gray;
95
+ fill: var(--gray);
96
96
  }
97
97
  }
98
98
  #chat21-buttonToBottom:hover {
99
- background-color: $blue;
99
+ background-color: var(--blue);
100
100
  opacity: 1!important;
101
101
  transition: all .45s ease-in-out!important;
102
102
  -moz-transition: all .45s ease-in-out!important;
@@ -121,7 +121,7 @@ textarea:active{
121
121
  resize: horizontal;
122
122
  overflow-y: auto;
123
123
  box-sizing: border-box;
124
- color: $black;
124
+ color: var(--black);
125
125
  min-width: 100%;
126
126
  outline: 0;
127
127
  resize: none;
@@ -155,7 +155,7 @@ textarea:active{
155
155
  .chat21-textarea-button {
156
156
  position: absolute;
157
157
  display: block;
158
- height: $chat-footer-height;
158
+ height: var(--chat-footer-height);
159
159
  bottom: 22px;
160
160
  opacity: 0.3;
161
161
  cursor: initial;
@@ -179,7 +179,7 @@ textarea:active{
179
179
  .chat21-back-button{
180
180
  position: absolute;
181
181
  display: block;
182
- height: $chat-footer-height;
182
+ height: var(--chat-footer-height);
183
183
  cursor: pointer;
184
184
  }
185
185
 
@@ -223,7 +223,7 @@ textarea:active{
223
223
  // height: 46px;
224
224
  // position: absolute;
225
225
  // bottom: 0px;
226
- border-top: 0px solid $light-gray;
226
+ border-top: 0px solid var(--light-gray);
227
227
  display: inline-flex;
228
228
  align-items: center;
229
229
  justify-content: center;
@@ -1,15 +1,15 @@
1
- import { ConversationHandlerService } from 'src/chat21-core/providers/abstract/conversation-handler.service';
2
- import { TypingService } from 'src/chat21-core/providers/abstract/typing.service';
3
- import { TYPE_MSG_TEXT, TYPE_MSG_IMAGE, TYPE_MSG_FILE } from 'src/chat21-core/utils/constants';
1
+ import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges, ViewChild } from '@angular/core';
4
2
  import { Globals } from 'src/app/utils/globals';
5
- import { Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChanges, OnChanges, ViewChild } from '@angular/core';
3
+ import { MessageModel } from 'src/chat21-core/models/message';
6
4
  import { UploadModel } from 'src/chat21-core/models/upload';
7
- import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
8
- import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
5
+ import { ConversationHandlerService } from 'src/chat21-core/providers/abstract/conversation-handler.service';
9
6
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
10
- import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
7
+ import { TypingService } from 'src/chat21-core/providers/abstract/typing.service';
8
+ import { UploadService } from 'src/chat21-core/providers/abstract/upload.service';
11
9
  import { ChatManager } from 'src/chat21-core/providers/chat-manager';
12
- import { MessageModel } from 'src/chat21-core/models/message';
10
+ import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
11
+ import { TYPE_MSG_FILE, TYPE_MSG_IMAGE, TYPE_MSG_TEXT } from 'src/chat21-core/utils/constants';
12
+ import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
13
13
 
14
14
  @Component({
15
15
  selector: 'chat-conversation-footer',
@@ -3,8 +3,8 @@
3
3
 
4
4
  <div class="c21-header-container">
5
5
 
6
- <!-- CONTENT HEADER -->
7
- <div class="c21-header-content">
6
+ <!-- CONTENT HEADER -->
7
+ <div class="c21-header-content">
8
8
 
9
9
  <!-- ICON CLOSE CHAT -->
10
10
  <button [attr.disabled]="(isButtonsDisabled)?true:null" tabindex="-1" class="c21-header-button c21-right c21-close c21-button-clean" [ngStyle]="{'display': (hideHeaderCloseButton)?'none':'flex'}" (click)="closeWidget()">
@@ -17,7 +17,7 @@
17
17
  </button>
18
18
 
19
19
  <!-- ICON MENU OPTION -->
20
- <button [attr.disabled]="(isButtonsDisabled)?true:null" tabindex="-1" class="c21-header-button c21-right c21-button-clean" [ngStyle]="{'display': (hideHeaderConversationOptionsMenu)?'none':'flex'}" (click)="toggleMenu()" > <!--(blur)="onBlurMenuOption($event)"-->
20
+ <button [attr.disabled]="(isButtonsDisabled)?true:null" tabindex="-1" class="c21-header-button c21-right c21-button-clean" [ngStyle]="{'display': (hideHeaderConversationOptionsMenu)?'none':'flex'}" (click)="toggleMenu()" >
21
21
  <svg aria-labelledby="altIconTitle" [ngStyle]="{'fill': stylesMap?.get('foregroundColor') }" xmlns="http://www.w3.org/2000/svg"
22
22
  width="24" height="24" viewBox="0 0 24 24">
23
23
  <path fill="none" d="M0 0h24v24H0V0z" />
@@ -30,7 +30,6 @@
30
30
  <button [attr.disabled]="(isButtonsDisabled)?true:null" tabindex="1530" aria-label=" indietro " class="c21-header-button c21-left c21-button-clean" [ngStyle]="{'display': (hideHeaderBackButton)?'none':'flex'}" (click)="returnHome()">
31
31
  <svg role="img" aria-labelledby="altIconTitle" [ngStyle]="{'fill': stylesMap?.get('foregroundColor') }" xmlns="http://www.w3.org/2000/svg"
32
32
  width="24px" height="24px" viewBox="0 0 24 24">
33
- <!-- <path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zM7.07 18.28c.43-.9 3.05-1.78 4.93-1.78s4.51.88 4.93 1.78C15.57 19.36 13.86 20 12 20s-3.57-.64-4.93-1.72zm11.29-1.45c-1.43-1.74-4.9-2.33-6.36-2.33s-4.93.59-6.36 2.33C4.62 15.49 4 13.82 4 12c0-4.41 3.59-8 8-8s8 3.59 8 8c0 1.82-.62 3.49-1.64 4.83zM12 6c-1.94 0-3.5 1.56-3.5 3.5S10.06 13 12 13s3.5-1.56 3.5-3.5S13.94 6 12 6zm0 5c-.83 0-1.5-.67-1.5-1.5S11.17 8 12 8s1.5.67 1.5 1.5S12.83 11 12 11z"/> -->
34
33
  <path fill="none" d="M0 0h24v24H0V0z" />
35
34
  <path d="M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12l4.58-4.59z" />
36
35
  <title id="altIconTitle">{{ translationMap?.get('PREV_CONVERSATIONS') }}</title>
@@ -39,10 +38,6 @@
39
38
 
40
39
  <!-- TITLE HEADER -->
41
40
  <div class="c21-title" [ngStyle]="{'color': stylesMap?.get('foregroundColor') }">
42
- <!-- <div *ngIf="g.project.logoChat !== 'nologo'" class='avatar-project' item-start>
43
- <div *ngIf="g.project.logoChat == 'tiledesklogo'" #avatarPlaceholder class="avatar-placeholder" [style.background-color]="g.project.color" [innerHTML]="g.project.avatar"></div>
44
- <div *ngIf="g.project.logoChat !== 'tiledesklogo'" #avatarImage class="avatar-image" [style.background-image]="'url(' + g.project.logoChat + ')'"></div>
45
- </div> -->
46
41
  <div class="titleText">{{widgetTitle}}</div>
47
42
  </div>
48
43
 
@@ -52,8 +47,7 @@
52
47
  [nameUserTypingNow]="nameUserTypingNow"
53
48
  [typingLocation]="typingLocation">
54
49
  </user-typing>
55
- <!-- <p *ngIf="isTypings" class="c21-header-writing" [ngStyle]="{'color': g.themeForegroundColor}">{{writingMessage}}</p> -->
56
- </div>
50
+ </div>
57
51
 
58
52
  </div>
59
53
 
@@ -79,7 +73,6 @@
79
73
  <!-- ICON TRANSCRIPT -->
80
74
  <div class="c21-header-button c21-right" *ngIf="isTrascriptDownloadEnabled" (click)="dowloadTranscript()">
81
75
  <svg role="img" aria-labelledby="altIconTitle" class="icon-menu" xmlns="http://www.w3.org/2000/svg" width="20px" height="20px" viewBox="0 0 24 24">
82
- <!-- <path fill="none" d="M0 0h24v24H0V0z"/><path d="M13 5v6h1.17L12 13.17 9.83 11H11V5h2m2-2H9v6H5l7 7 7-7h-4V3zm4 15H5v2h14v-2z"/> -->
83
76
  <path fill="none" d="M0 0h24v24H0V0z" />
84
77
  <path d="M16 13h-3V3h-2v10H8l4 4 4-4zM4 19v2h16v-2H4z" />
85
78
  <title id="altIconTitle">{{ translationMap?.get('DOWNLOAD_TRANSCRIPT') }}</title>
@@ -141,21 +134,7 @@
141
134
 
142
135
  <!-- BUILD VERSION -->
143
136
  <div class="c21-button build_version_menu" *ngIf="build_version">
144
- <!-- <svg xmlns="http://www.w3.org/2000/svg" height="24px" viewBox="0 0 24 24" width="24px" class="icon-menu">
145
- <path d="M0 0h24v24H0z" fill="none"/>
146
- <path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z"/>
147
- <title id="altIconTitle">{{g.LOGOUT}}</title>
148
- </svg> -->
149
137
  <span class="label-menu-item">{{build_version}}</span>
150
138
  </div>
151
139
 
152
-
153
-
154
- <!-- ICON EDIT PROFILE -->
155
- <!-- <div class="c21-header-button c21-right" *ngIf="messages && messages.length > 1">
156
- <svg role="img" aria-labelledby="altIconTitle" [ngStyle]="{'fill': g.themeForegroundColor }" xmlns="http://www.w3.org/2000/svg" width="24px" height="24px" viewBox="0 0 24 24">
157
- <path fill="none" d="M0 0h24v24H0V0z"/><path d="M12 6c1.1 0 2 .9 2 2s-.9 2-2 2-2-.9-2-2 .9-2 2-2m0 10c2.7 0 5.8 1.29 6 2H6c.23-.72 3.31-2 6-2m0-12C9.79 4 8 5.79 8 8s1.79 4 4 4 4-1.79 4-4-1.79-4-4-4zm0 10c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/>
158
- <title id="altIconTitle">{{BUTTON_EDIT_PROFILE}}</title>
159
- </svg>
160
- </div> -->
161
140
  </div>
@@ -1,4 +1,4 @@
1
- @import 'src/app/sass/variables';
1
+ // @import 'src/app/sass/variables';
2
2
 
3
3
  /* SET SCROLLBAR */
4
4
  // ============= CSS c21-header ================= //
@@ -101,7 +101,7 @@
101
101
  line-height: normal;
102
102
  overflow: hidden;
103
103
  // border: 1px solid #d7d7d7;
104
- color: $blue;
104
+ color: var(--blue);
105
105
  box-shadow: 0 4px 15px 0 rgba(0, 0, 0, 0.2), 0 1px 2px 0 rgba(0, 0, 0, 0.2);
106
106
  background-color: #ffffff;
107
107
  // padding: 10px 0px 10px 0px;
@@ -124,14 +124,14 @@
124
124
  margin: 0 10px 0px 10px;
125
125
  }
126
126
  .icon-menu {
127
- fill: $icon-fill-color;
127
+ fill: var(--icon-fill-color);
128
128
  }
129
129
  .icon-menu#archive{
130
- stroke: $icon-fill-color;
130
+ stroke: var(--icon-fill-color);
131
131
  }
132
132
 
133
133
  .build_version_menu {
134
- color: $gray;
134
+ color: var(--gray);
135
135
  justify-content: center;
136
136
  font-size: 0.8em;
137
137
  }