@chat21/chat21-ionic 3.4.15 → 3.4.16-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 +5 -4
- package/package.json +1 -1
- package/src/app/app.component.ts +3 -3
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +11 -3
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +17 -0
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +29 -3
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +0 -1
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +0 -1
- package/src/app/chatlib/conversation-detail/message/options/options.component.html +0 -3
- package/src/app/chatlib/conversation-detail/message/options/options.component.ts +0 -33
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +72 -68
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +7 -2
- package/src/app/components/copilot-popover/copilot-popover.component.scss +3 -0
- package/src/app/shared/shared.module.ts +0 -29
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
# **CHAT21 IONIC - Changelog**
|
|
1
|
+
# ** CHAT21 IONIC - Changelog**
|
|
2
2
|
|
|
3
3
|
### **Authors**:
|
|
4
4
|
*Gabriele Panico* <br>
|
|
5
|
-
*Dario De Pascalis* <br>
|
|
6
|
-
*Giovanni Troisi* <br>
|
|
7
|
-
*Nicola Lanzilotto* <br>
|
|
8
5
|
### **Copyrigth**:
|
|
9
6
|
*Tiledesk SRL*
|
|
10
7
|
|
|
11
8
|
|
|
9
|
+
# 3.4.16-rc1
|
|
10
|
+
- **added**: moved copilot from bubble-message to external rigth side
|
|
11
|
+
- **bug-fixed**: internal note note visible for message-sent section (rigth side)
|
|
12
|
+
|
|
12
13
|
# 3.4.15 in PROD
|
|
13
14
|
|
|
14
15
|
# 3.4.14 in PROD
|
package/package.json
CHANGED
package/src/app/app.component.ts
CHANGED
|
@@ -1242,9 +1242,9 @@ export class AppComponent implements OnInit {
|
|
|
1242
1242
|
}
|
|
1243
1243
|
|
|
1244
1244
|
goToDashboardLogin(){
|
|
1245
|
-
let DASHBOARD_URL = this.appConfigProvider.getConfig().dashboardUrl + '#/login'
|
|
1246
|
-
const myWindow = window.open(DASHBOARD_URL, '_self');
|
|
1247
|
-
myWindow.focus();
|
|
1245
|
+
// let DASHBOARD_URL = this.appConfigProvider.getConfig().dashboardUrl + '#/login'
|
|
1246
|
+
// const myWindow = window.open(DASHBOARD_URL, '_self');
|
|
1247
|
+
// myWindow.focus();
|
|
1248
1248
|
}
|
|
1249
1249
|
|
|
1250
1250
|
|
|
@@ -110,9 +110,10 @@
|
|
|
110
110
|
|
|
111
111
|
<!--backgroundColor non viene ancora usato -->
|
|
112
112
|
<chat-bubble-message class="messages msg_sent" id="message_msg_sent" style="position: relative;"
|
|
113
|
-
[ngClass]="{'has-metadata': (isImage(message) || isFrame(message)), 'privateMsg': (message?.attributes && message?.attributes?.subtype === 'private')}"
|
|
114
113
|
[class.no-background]="(isImage(message) || isFrame(message)) && message?.text && message?.text.trim() === '' "
|
|
115
114
|
[class.emoticon]="isEmojii(message?.text)"
|
|
115
|
+
[class.has-metadata]="(isImage(message) || isFrame(message))"
|
|
116
|
+
[class.privateMsg]="(message?.attributes && message?.attributes?.subtype === 'private')"
|
|
116
117
|
[ngStyle]="{'background': stylesMap.get('bubbleSentBackground'), 'color': stylesMap.get('bubbleSentTextColor')}"
|
|
117
118
|
[ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}"
|
|
118
119
|
[message]="message"
|
|
@@ -154,9 +155,10 @@
|
|
|
154
155
|
<div class="bubble-container">
|
|
155
156
|
<!--backgroundColor non viene ancora usato -->
|
|
156
157
|
<chat-bubble-message class="messages msg_receive" id="message_msg_receive"
|
|
157
|
-
[ngClass]="{'has-metadata': (isImage(message) || isFrame(message)), 'privateMsg': (message?.attributes && message?.attributes?.subtype === 'private')}"
|
|
158
158
|
[class.no-background]="(isImage(message) || isFrame(message)) && message?.text && message?.text.trim() === '' "
|
|
159
159
|
[class.emoticon]="isEmojii(message?.text)"
|
|
160
|
+
[class.has-metadata]="(isImage(message) || isFrame(message))"
|
|
161
|
+
[class.privateMsg]="(message?.attributes && message?.attributes?.subtype === 'private')"
|
|
160
162
|
[ngStyle]="{'background': stylesMap?.get('bubbleReceivedBackground'), 'color': stylesMap.get('bubbleReceivedTextColor')}"
|
|
161
163
|
[isSameSender]="isSameSender(message?.sender, i)"
|
|
162
164
|
[message]="message"
|
|
@@ -164,7 +166,6 @@
|
|
|
164
166
|
[fontSize]="stylesMap?.get('fontSize')"
|
|
165
167
|
[fontFamily]="stylesMap?.get('fontFamily')"
|
|
166
168
|
[stylesMap]="stylesMap"
|
|
167
|
-
[isCopilotEnabled]="isCopilotEnabled"
|
|
168
169
|
(onBeforeMessageRender)="onBeforeMessageRenderFN($event)"
|
|
169
170
|
(onAfterMessageRender)="onAfterMessageRenderFN($event)"
|
|
170
171
|
(onElementRendered)="onElementRenderedFN($event)"
|
|
@@ -180,6 +181,13 @@
|
|
|
180
181
|
</ion-button>
|
|
181
182
|
</ng-container>
|
|
182
183
|
|
|
184
|
+
<ng-container *ngIf="isCopilotEnabled">
|
|
185
|
+
<ion-button shape="round" size="small" class="btn-info-msg btn-copilot" ion-button fill="clear"
|
|
186
|
+
(click)="onClickOptionsCopilot(message, i)">
|
|
187
|
+
<ion-icon id="copilot" src="assets/images/icons/copilot.svg"></ion-icon>
|
|
188
|
+
</ion-button>
|
|
189
|
+
</ng-container>
|
|
190
|
+
|
|
183
191
|
<div class="message-date-hover" *ngIf="isChannelTypeGroup(channelType)"> {{message.timestamp | date:'HH:mm' }} </div>
|
|
184
192
|
</div>
|
|
185
193
|
|
|
@@ -287,6 +287,7 @@ ion-item {
|
|
|
287
287
|
|
|
288
288
|
|
|
289
289
|
&:hover .message-date-hover,
|
|
290
|
+
&:hover .btn-copilot,
|
|
290
291
|
&:hover .btn-add-msg,
|
|
291
292
|
&:hover .btn-options-msg,
|
|
292
293
|
&:hover .options-container{
|
|
@@ -349,6 +350,11 @@ ion-item {
|
|
|
349
350
|
}
|
|
350
351
|
|
|
351
352
|
|
|
353
|
+
.btn-copilot {
|
|
354
|
+
display: none;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
|
|
352
358
|
}
|
|
353
359
|
|
|
354
360
|
.sourcePage-container{
|
|
@@ -408,6 +414,17 @@ ion-item {
|
|
|
408
414
|
display: block;
|
|
409
415
|
height: 25px;
|
|
410
416
|
width: 25px;
|
|
417
|
+
|
|
418
|
+
&:hover{
|
|
419
|
+
cursor: pointer;
|
|
420
|
+
ion-icon#copilot{
|
|
421
|
+
|
|
422
|
+
transition: transform 1s ease-in-out;
|
|
423
|
+
transform: rotate(180deg);
|
|
424
|
+
color: #ac87eb;
|
|
425
|
+
|
|
426
|
+
}
|
|
427
|
+
}
|
|
411
428
|
}
|
|
412
429
|
|
|
413
430
|
/* LOADING */
|
|
@@ -18,6 +18,7 @@ import { AppConfigProvider } from 'src/app/services/app-config';
|
|
|
18
18
|
import { ModalController, PopoverController, ToastController } from '@ionic/angular';
|
|
19
19
|
import { CreateCannedResponsePage } from 'src/app/modals/create-canned-response/create-canned-response.page';
|
|
20
20
|
import { EventsService } from 'src/app/services/events-service';
|
|
21
|
+
import { CopilotPopoverComponent } from 'src/app/components/copilot-popover/copilot-popover.component';
|
|
21
22
|
|
|
22
23
|
@Component({
|
|
23
24
|
selector: 'ion-conversation-detail',
|
|
@@ -166,9 +167,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
|
|
|
166
167
|
}
|
|
167
168
|
}else if(event.option === 'jsonInfo'){
|
|
168
169
|
this.presentJsonMessageModal(event.data.message)
|
|
169
|
-
} else if(event.option === 'copilot_question'){
|
|
170
|
-
this.eventService.publish('copilot:new_question', {text: event.data.text})
|
|
171
|
-
|
|
172
170
|
}
|
|
173
171
|
}
|
|
174
172
|
|
|
@@ -185,6 +183,11 @@ export class IonConversationDetailComponent extends ConversationContentComponent
|
|
|
185
183
|
}
|
|
186
184
|
}
|
|
187
185
|
|
|
186
|
+
onClickOptionsCopilot(message: MessageModel, index: number){
|
|
187
|
+
this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - onClickOptionsCopilot', message);
|
|
188
|
+
this.presentCopilotPopover(message)
|
|
189
|
+
}
|
|
190
|
+
|
|
188
191
|
onElementRenderedFN(event) {
|
|
189
192
|
this.logger.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - onElementRenderedFN:::ionic', event)
|
|
190
193
|
this.onElementRendered.emit(event)
|
|
@@ -262,4 +265,27 @@ export class IonConversationDetailComponent extends ConversationContentComponent
|
|
|
262
265
|
});
|
|
263
266
|
toast.present();
|
|
264
267
|
}
|
|
268
|
+
|
|
269
|
+
async presentCopilotPopover(message: MessageModel,) {
|
|
270
|
+
const attributes = {
|
|
271
|
+
message: message,
|
|
272
|
+
conversationWith: message.recipient
|
|
273
|
+
}
|
|
274
|
+
const popover = await this.popoverController.create({
|
|
275
|
+
component: CopilotPopoverComponent,
|
|
276
|
+
cssClass: 'copilot-popover',
|
|
277
|
+
componentProps: attributes,
|
|
278
|
+
translucent: true,
|
|
279
|
+
keyboardClose: true,
|
|
280
|
+
showBackdrop: false,
|
|
281
|
+
});
|
|
282
|
+
popover.onDidDismiss().then((dataReturned: any) => {
|
|
283
|
+
this.logger.log('[BUBBLE-MESSAGE] presentCopilotPopover dismissed. Returned value::', dataReturned.data)
|
|
284
|
+
if(dataReturned.data){
|
|
285
|
+
this.eventService.publish('copilot:new_question', {text: dataReturned.data.text})
|
|
286
|
+
}
|
|
287
|
+
})
|
|
288
|
+
|
|
289
|
+
return await popover.present();
|
|
290
|
+
}
|
|
265
291
|
}
|
package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts
CHANGED
|
@@ -26,7 +26,6 @@ export class BubbleMessageComponent implements OnInit, OnChanges {
|
|
|
26
26
|
@Input() fontFamily: string;
|
|
27
27
|
@Input() stylesMap: Map<string, string>;
|
|
28
28
|
@Input() supportMode: boolean;
|
|
29
|
-
@Input() isCopilotEnabled: boolean = false;
|
|
30
29
|
@Output() onBeforeMessageRender = new EventEmitter();
|
|
31
30
|
@Output() onAfterMessageRender = new EventEmitter();
|
|
32
31
|
@Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
|
|
@@ -2,7 +2,4 @@
|
|
|
2
2
|
<div class="options-logo" (click)="onClickOptionsMessage($event)" >
|
|
3
3
|
<ion-icon name="chevron-down"></ion-icon>
|
|
4
4
|
</div>
|
|
5
|
-
<div *ngIf="isCopilotEnabled" class="options-logo" (click)="onClickOptionsCopilot($event)">
|
|
6
|
-
<ion-icon id="copilot" src="assets/images/icons/copilot.svg"></ion-icon>
|
|
7
|
-
</div>
|
|
8
5
|
</div>
|
|
@@ -14,7 +14,6 @@ import { CopilotPopoverComponent } from 'src/app/components/copilot-popover/copi
|
|
|
14
14
|
export class OptionsComponent implements OnInit {
|
|
15
15
|
|
|
16
16
|
@Input() message: MessageModel;
|
|
17
|
-
@Input() isCopilotEnabled: boolean = false;
|
|
18
17
|
@Input() logLevel: number;
|
|
19
18
|
@Output() onOptionsDataReturned = new EventEmitter<{option: string, data: any}>();
|
|
20
19
|
|
|
@@ -28,13 +27,6 @@ export class OptionsComponent implements OnInit {
|
|
|
28
27
|
this.logger.log('[BUBBLE-MESSAGE] - onClickOptionsMessage', this.message);
|
|
29
28
|
this.presentPopover(event)
|
|
30
29
|
}
|
|
31
|
-
|
|
32
|
-
onClickOptionsCopilot(event){
|
|
33
|
-
this.logger.log('[BUBBLE-MESSAGE] - onClickOptionsCopilot', this.message);
|
|
34
|
-
this.presentCopilotPopover(event)
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
|
|
38
30
|
|
|
39
31
|
async presentPopover(ev: any) {
|
|
40
32
|
const attributes = {
|
|
@@ -61,29 +53,4 @@ export class OptionsComponent implements OnInit {
|
|
|
61
53
|
return await popover.present();
|
|
62
54
|
}
|
|
63
55
|
|
|
64
|
-
async presentCopilotPopover(ev: any) {
|
|
65
|
-
const attributes = {
|
|
66
|
-
message: this.message,
|
|
67
|
-
logLevel: this.logLevel,
|
|
68
|
-
conversationWith: this.message.recipient
|
|
69
|
-
}
|
|
70
|
-
const popover = await this.popoverController.create({
|
|
71
|
-
component: CopilotPopoverComponent,
|
|
72
|
-
cssClass: 'copilot-popover',
|
|
73
|
-
componentProps: attributes,
|
|
74
|
-
event: ev,
|
|
75
|
-
translucent: true,
|
|
76
|
-
keyboardClose: true,
|
|
77
|
-
showBackdrop: false,
|
|
78
|
-
});
|
|
79
|
-
popover.onDidDismiss().then((dataReturned: any) => {
|
|
80
|
-
this.logger.log('[BUBBLE-MESSAGE] presentCopilotPopover dismissed. Returned value::', dataReturned.data)
|
|
81
|
-
if(dataReturned.data){
|
|
82
|
-
this.onOptionsDataReturned.emit({option: 'copilot_question', data: {text: dataReturned.data.text}})
|
|
83
|
-
}
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
return await popover.present();
|
|
87
|
-
}
|
|
88
|
-
|
|
89
56
|
}
|
|
@@ -7,78 +7,82 @@
|
|
|
7
7
|
</ion-buttons>
|
|
8
8
|
|
|
9
9
|
<ion-title>
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
<!-- [ngClass] = "{ 'tile-info-with-ios': platformName === 'ios' ? '82px' : ''82px'' }" -->
|
|
21
|
-
<!-- (click)="onOpenCloseInfoConversation()" -->
|
|
22
|
-
<div class="tile-info-with"
|
|
23
|
-
[ngClass]="{ 'tile-info-with-ios': platformName === 'ios' }">
|
|
24
|
-
<span class="tile-username truncate">{{ conversationAvatar.conversation_with_fullname}} </span>
|
|
25
|
-
<!-- <span class="tile-username">{{ conversation_with_fullname }} </span> -->
|
|
26
|
-
</div>
|
|
27
|
-
|
|
28
|
-
<div class="subtitle-info">
|
|
29
|
-
<div class="conversation_project">
|
|
30
|
-
<!-- DIRECT CONV -->
|
|
31
|
-
<div *ngIf="isDirect">
|
|
32
|
-
<app-user-presence
|
|
33
|
-
[idUser]="conversationAvatar.conversation_with"
|
|
34
|
-
[isMobile]="isMobile"
|
|
35
|
-
[translationMap]="translationsMap">
|
|
36
|
-
</app-user-presence>
|
|
37
|
-
<!-- <svg xmlns="http://www.w3.org/2000/svg" height="15" width="15" viewBox="0 0 24 24" fill="#000000"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>
|
|
38
|
-
<span class="truncate">{{translationsMap.get('DIRECT_CHAT')}}</span> -->
|
|
10
|
+
<ion-grid class="ion-no-padding ion-no-margin">
|
|
11
|
+
<ion-row>
|
|
12
|
+
<ion-col>
|
|
13
|
+
<div *ngIf="conversationAvatar" class="avatar-and-typing-wpr" [ngClass]="{'mobile': isMobile}">
|
|
14
|
+
<!-- [ngStyle] = "{ 'left': platformName === 'ios' ? '55px' : '' }" -->
|
|
15
|
+
<div class="avatar-container" [ngClass]="{ 'avatar-container-ios': platformName === 'ios' }">
|
|
16
|
+
<app-avatar-profile
|
|
17
|
+
[itemAvatar]=conversationAvatar>
|
|
18
|
+
</app-avatar-profile>
|
|
39
19
|
</div>
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
20
|
+
<div class="info-container">
|
|
21
|
+
|
|
22
|
+
<!-- [ngClass] = "{ 'tile-info-with-ios': platformName === 'ios' ? '82px' : ''82px'' }" -->
|
|
23
|
+
<!-- (click)="onOpenCloseInfoConversation()" -->
|
|
24
|
+
<div class="tile-info-with"
|
|
25
|
+
[ngClass]="{ 'tile-info-with-ios': platformName === 'ios' }">
|
|
26
|
+
<span class="tile-username truncate">{{ conversationAvatar.conversation_with_fullname}} </span>
|
|
27
|
+
<!-- <span class="tile-username">{{ conversation_with_fullname }} </span> -->
|
|
28
|
+
</div>
|
|
29
|
+
|
|
30
|
+
<div class="subtitle-info">
|
|
31
|
+
<div class="conversation_project">
|
|
32
|
+
<!-- DIRECT CONV -->
|
|
33
|
+
<div *ngIf="isDirect">
|
|
34
|
+
<app-user-presence
|
|
35
|
+
[idUser]="conversationAvatar.conversation_with"
|
|
36
|
+
[isMobile]="isMobile"
|
|
37
|
+
[translationMap]="translationsMap">
|
|
38
|
+
</app-user-presence>
|
|
39
|
+
<!-- <svg xmlns="http://www.w3.org/2000/svg" height="15" width="15" viewBox="0 0 24 24" fill="#000000"><path d="M12 12c2.21 0 4-1.79 4-4s-1.79-4-4-4-4 1.79-4 4 1.79 4 4 4zm0 2c-2.67 0-8 1.34-8 4v2h16v-2c0-2.66-5.33-4-8-4z"/></svg>
|
|
40
|
+
<span class="truncate">{{translationsMap.get('DIRECT_CHAT')}}</span> -->
|
|
41
|
+
</div>
|
|
42
|
+
<!-- GROUP CONV -->
|
|
43
|
+
<div *ngIf="conversationUid?.startsWith(CHANNEL_TYPE.GROUP)">
|
|
44
|
+
<svg xmlns="http://www.w3.org/2000/svg" height="15" width="15" viewBox="0 0 24 24" fill="#000000"><path d="M16 11c1.66 0 2.99-1.34 2.99-3S17.66 5 16 5c-1.66 0-3 1.34-3 3s1.34 3 3 3zm-8 0c1.66 0 2.99-1.34 2.99-3S9.66 5 8 5C6.34 5 5 6.34 5 8s1.34 3 3 3zm0 2c-2.33 0-7 1.17-7 3.5V19h14v-2.5c0-2.33-4.67-3.5-7-3.5zm8 0c-.29 0-.62.02-.97.05 1.16.84 1.97 1.97 1.97 3.45V19h6v-2.5c0-2.33-4.67-3.5-7-3.5z"/></svg>
|
|
45
|
+
<span class="truncate">{{translationsMap.get('GROUP_CHAT')}}</span>
|
|
46
|
+
</div>
|
|
47
|
+
<!-- SUPPORT-GROUP CONV -->
|
|
48
|
+
<div *ngIf="conversationUid?.startsWith(CHANNEL_TYPE.SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
|
|
49
|
+
<img class="channel-icon" src="assets/images/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.CHAT21) || !conversationAvatar?.request_channel) " >
|
|
50
|
+
<img class="channel-icon" src="assets/images/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.EMAIL" >
|
|
51
|
+
<img class="channel-icon" src="assets/images/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.FORM" >
|
|
52
|
+
<img class="channel-icon" src="assets/images/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.MESSENGER" >
|
|
53
|
+
<img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.WHATSAPP" >
|
|
54
|
+
<img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.TELEGRAM" >
|
|
55
|
+
<img class="channel-icon" src="assets/images/channel_icons/voice.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
|
|
56
|
+
<span *ngIf="conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.project_name}}</span>
|
|
57
|
+
<span *ngIf="!conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.projectId}}</span>
|
|
58
|
+
</div>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
</div>
|
|
44
62
|
</div>
|
|
45
|
-
<!--
|
|
46
|
-
<div
|
|
47
|
-
<
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
<img class="channel-icon" src="assets/images/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.WHATSAPP" >
|
|
52
|
-
<img class="channel-icon" src="assets/images/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.TELEGRAM" >
|
|
53
|
-
<img class="channel-icon" src="assets/images/channel_icons/voice.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
|
|
54
|
-
<span *ngIf="conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.project_name}}</span>
|
|
55
|
-
<span *ngIf="!conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.projectId}}</span>
|
|
63
|
+
<!-- COPILOT-OPTION -->
|
|
64
|
+
<div *ngIf="isCopilotEnabled" class="copilot-container" id="copilot" tooltip="{{translationsMap?.get('COPILOT.SOLVE_WITH_AI')}}" placement="top">
|
|
65
|
+
<ion-button id="copilot" fill="clear" (click)="onOpenSection('copilot')">
|
|
66
|
+
<ion-icon class="channel-icon" src="assets/images/icons/copilot.svg"></ion-icon>
|
|
67
|
+
{{translationsMap?.get('COPILOT.SOLVE_WITH_AI')}}
|
|
68
|
+
</ion-button>
|
|
56
69
|
</div>
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
</ion-button>
|
|
67
|
-
</div>
|
|
68
|
-
|
|
69
|
-
<!-- <div>
|
|
70
|
-
<ion-button class="live" ion-button color="danger">
|
|
71
|
-
<span class="live-icon"></span>
|
|
72
|
-
<span class="live-text">{{translationsMap.get('LIVE')}}</span>
|
|
73
|
-
<span class="live-content">source page</span>
|
|
74
|
-
</ion-button>
|
|
75
|
-
</div> -->
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
</div>
|
|
79
|
-
|
|
80
|
-
|
|
70
|
+
|
|
71
|
+
<!-- <div>
|
|
72
|
+
<ion-button class="live" ion-button color="danger">
|
|
73
|
+
<span class="live-icon"></span>
|
|
74
|
+
<span class="live-text">{{translationsMap.get('LIVE')}}</span>
|
|
75
|
+
<span class="live-content">source page</span>
|
|
76
|
+
</ion-button>
|
|
77
|
+
</div> -->
|
|
78
|
+
|
|
81
79
|
|
|
80
|
+
</div>
|
|
81
|
+
</ion-col>
|
|
82
|
+
<ion-col>
|
|
83
|
+
</ion-col>
|
|
84
|
+
</ion-row>
|
|
85
|
+
</ion-grid>
|
|
82
86
|
|
|
83
87
|
<!-- <div *ngIf="conversationWithFullname" class="tile-info-with" (click)="onOpenCloseInfoConversation()">
|
|
84
88
|
<span class="tile-username">{{ conversationWithFullname }} </span>
|
|
@@ -33,10 +33,15 @@ ion-header {
|
|
|
33
33
|
ion-title {
|
|
34
34
|
text-align: left;
|
|
35
35
|
padding-inline: unset;
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
padding: 0 var(--padding-conversation-detail);
|
|
37
|
+
height: var(--header-height);
|
|
38
38
|
width: 100%;
|
|
39
39
|
}
|
|
40
|
+
ion-grid{
|
|
41
|
+
ion-col:first-child{
|
|
42
|
+
min-width: calc(100% - 320px);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
40
45
|
ion-avatar {
|
|
41
46
|
position: relative;
|
|
42
47
|
display: inline-block;
|
|
@@ -1,56 +1,27 @@
|
|
|
1
1
|
import { TooltipDirective } from './../directives/tooltip.directive';
|
|
2
|
-
import { OptionsComponent } from './../chatlib/conversation-detail/message/options/options.component';
|
|
3
|
-
import { HeaderConversationsListUnassigned } from './../components/conversations-list/header-conversations-list-unassigned/header-conversations-list-unassigned.component';
|
|
4
2
|
import { NavbarComponent } from './../components/navbar/navbar.component';
|
|
5
3
|
import { FormsModule } from '@angular/forms';
|
|
6
4
|
import { NgSelectModule } from '@ng-select/ng-select';
|
|
7
5
|
import { NetworkOfflineComponent } from './../components/network-offline/network-offline.component';
|
|
8
|
-
import { ContactsDirectoryComponent } from './../components/contacts-directory/contacts-directory.component';
|
|
9
|
-
import { HtmlComponent } from './../chatlib/conversation-detail/message/html/html.component';
|
|
10
6
|
|
|
11
|
-
import { TextComponent } from '../chatlib/conversation-detail/message/text/text.component';
|
|
12
|
-
import { ReturnReceiptComponent } from '../chatlib/conversation-detail/message/return-receipt/return-receipt.component';
|
|
13
|
-
import { InfoMessageComponent } from '../chatlib/conversation-detail/message/info-message/info-message.component';
|
|
14
|
-
import { ImageComponent } from '../chatlib/conversation-detail/message/image/image.component';
|
|
15
|
-
import { FrameComponent } from '../chatlib/conversation-detail/message/frame/frame.component';
|
|
16
|
-
import { ActionButtonComponent } from '../chatlib/conversation-detail/message/buttons/action-button/action-button.component';
|
|
17
|
-
import { LinkButtonComponent } from '../chatlib/conversation-detail/message/buttons/link-button/link-button.component';
|
|
18
|
-
import { TextButtonComponent } from '../chatlib/conversation-detail/message/buttons/text-button/text-button.component';
|
|
19
|
-
import { BubbleMessageComponent } from '../chatlib/conversation-detail/message/bubble-message/bubble-message.component';
|
|
20
|
-
import { ConversationContentComponent } from '../chatlib/conversation-detail/conversation-content/conversation-content.component';
|
|
21
|
-
import { IonListConversationsComponent } from '../chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component';
|
|
22
7
|
import { NgModule, CUSTOM_ELEMENTS_SCHEMA, NO_ERRORS_SCHEMA } from '@angular/core';
|
|
23
8
|
import { CommonModule } from '@angular/common';
|
|
24
9
|
import { IonicModule } from '@ionic/angular';
|
|
25
10
|
|
|
26
11
|
import { AvatarProfileComponent } from 'src/app/components/utils/avatar-profile/avatar-profile.component';
|
|
27
|
-
import { HeaderConversationsList } from 'src/app/components/conversations-list/header-conversations-list/header-conversations-list.component';
|
|
28
|
-
import { HeaderConversationsListArchived } from 'src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component';
|
|
29
12
|
|
|
30
13
|
import { UserPresenceComponent } from 'src/app/components/utils/user-presence/user-presence.component';
|
|
31
|
-
import { UserTypingComponent } from 'src/chat21-core/utils/user-typing/user-typing.component';
|
|
32
|
-
import { ListConversationsComponent } from '../chatlib/list-conversations-component/list-conversations/list-conversations.component';
|
|
33
14
|
import { MomentModule } from 'ngx-moment';
|
|
34
|
-
import { AvatarComponent } from 'src/app/chatlib/conversation-detail/message/avatar/avatar.component';
|
|
35
15
|
import { MarkedPipe } from 'src/app/directives/marked.pipe';
|
|
36
16
|
import { AutofocusDirective } from 'src/app/directives/autofocus.directive';
|
|
37
17
|
import { HtmlEntitiesEncodePipe } from 'src/app/directives/html-entities-encode.pipe';
|
|
38
|
-
import { IonConversationDetailComponent } from 'src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component';
|
|
39
|
-
import { InfoContentComponent } from 'src/app/components/conversation-info/info-content/info-content.component';
|
|
40
|
-
import { InfoSupportGroupComponent } from 'src/app/components/conversation-info/info-support-group/info-support-group.component';
|
|
41
|
-
import { InfoDirectComponent } from 'src/app/components/conversation-info/info-direct/info-direct.component';
|
|
42
|
-
import { AdvancedInfoAccordionComponent } from 'src/app/components/conversation-info/advanced-info-accordion/advanced-info-accordion.component';
|
|
43
|
-
import { InfoGroupComponent } from 'src/app/components/conversation-info/info-group/info-group.component';
|
|
44
|
-
import { MessageAttachmentComponent } from 'src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component';
|
|
45
18
|
import { ImageViewerComponent } from 'src/app/components/image-viewer/image-viewer.component';
|
|
46
19
|
import { SidebarComponent } from 'src/app/components/sidebar/sidebar.component';
|
|
47
20
|
import { SidebarUserDetailsComponent } from 'src/app/components/sidebar-user-details/sidebar-user-details.component';
|
|
48
|
-
import { ProjectItemComponent } from 'src/app/components/project-item/project-item.component';
|
|
49
21
|
import { MatTooltipModule } from '@angular/material/tooltip';
|
|
50
22
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
51
23
|
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
|
|
52
24
|
import { SafeHtmlPipe } from '../directives/safe-html.pipe';
|
|
53
|
-
import { AudioComponent } from '../chatlib/conversation-detail/message/audio/audio.component';
|
|
54
25
|
|
|
55
26
|
// import { MessageTextAreaComponent } from '../components/conversation-detail/message-text-area/message-text-area.component'; // MessageTextAreaComponent is part of the declarations ConversationDetailPageModule
|
|
56
27
|
|