@chat21/chat21-ionic 3.4.27-rc2 → 3.4.27-rc21
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 +65 -0
- package/angular.json +1 -0
- package/package.json +1 -1
- package/src/app/app.component.html +3 -1
- package/src/app/app.component.ts +74 -24
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss +3 -3
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -1
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +1 -1
- package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.html +1 -1
- package/src/app/chatlib/conversation-detail/message/avatar/avatar.component.ts +4 -4
- package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss +3 -3
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +9 -9
- package/src/app/components/bubbleMessageInfo-popover/bubbleinfo-popover.component.html +1 -1
- package/src/app/components/canned-response/canned-response.component.html +2 -2
- package/src/app/components/canned-response/canned-response.component.scss +0 -2
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +8 -8
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +23 -0
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +30 -0
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +35 -7
- package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -2
- package/src/app/components/conversation-info/info-group/info-group.component.ts +23 -21
- package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.html +1 -1
- package/src/app/components/conversations-list/header-conversations-list/header-conversations-list.component.ts +5 -1
- package/src/app/components/copilot-popover/copilot-popover.component.html +1 -1
- package/src/app/components/navbar/navbar.component.html +3 -3
- package/src/app/components/navbar/navbar.component.ts +29 -38
- package/src/app/components/project-item/project-item.component.ts +11 -11
- package/src/app/components/sidebar/sidebar.component.html +67 -47
- package/src/app/components/sidebar/sidebar.component.ts +110 -117
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +4 -4
- package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +17 -14
- package/src/app/modals/create-ticket/create-ticket.page.html +6 -6
- package/src/app/modals/create-ticket/create-ticket.page.ts +4 -4
- package/src/app/modals/loader-preview/loader-preview.page.ts +1 -1
- package/src/app/modals/send-whatsapp-template/send-whatsapp-template.page.scss +1 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.html +3 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.scss +1 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +47 -5
- package/src/app/pages/conversations-list/conversations-list.page.html +2 -0
- package/src/app/pages/conversations-list/conversations-list.page.ts +48 -10
- package/src/app/pages/profile-info/profile-info.page.ts +3 -3
- package/src/app/services/brand/brand.service.ts +5 -5
- package/src/app/services/global-settings/global-settings.service.ts +12 -3
- package/src/app/services/nav-proxy.service.ts +0 -1
- package/src/app/services/triggerEvents/triggerEvents.ts +28 -0
- package/src/app/services/websocket/websocket-js.ts +95 -77
- package/src/app/shared/shared.module.ts +11 -2
- package/src/app/utils/globals.ts +2 -0
- package/src/app/utils/permissions.constants.ts +14 -11
- package/src/app/utils/utils-resources.ts +8 -7
- package/src/assets/i18n/ar.json +11 -1
- package/src/assets/i18n/az.json +11 -1
- package/src/assets/i18n/de.json +11 -1
- package/src/assets/i18n/en.json +11 -1
- package/src/assets/i18n/es.json +11 -1
- package/src/assets/i18n/fr.json +11 -1
- package/src/assets/i18n/it.json +13 -3
- package/src/assets/i18n/kk.json +11 -1
- package/src/assets/i18n/pt.json +11 -1
- package/src/assets/i18n/ru.json +11 -1
- package/src/assets/i18n/sr.json +11 -1
- package/src/assets/i18n/sv.json +11 -1
- package/src/assets/i18n/tr.json +11 -1
- package/src/assets/i18n/uk.json +11 -1
- package/src/assets/i18n/uz.json +12 -1
- package/src/assets/js/agentDesktop-sdk.js +55 -0
- package/src/chat-config-template.json +1 -0
- package/src/chat-config.json +1 -0
- package/src/chat21-core/providers/tiledesk/tiledesk-auth.service.ts +3 -0
- package/src/chat21-core/utils/constants.ts +2 -2
- package/src/chat21-core/utils/utils.ts +16 -2
- /package/src/assets/{images → img}/channel_icons/chat21.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/direct.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/email-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/form-logo_v2.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/group.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/messenger-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/telegram-logo.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/voice.svg +0 -0
- /package/src/assets/{images → img}/channel_icons/whatsapp-logo.svg +0 -0
- /package/src/assets/{images → img}/default-avatar-x-select.png +0 -0
- /package/src/assets/{images → img}/f21ico-done.svg +0 -0
- /package/src/assets/{images → img}/f21ico-done_all.svg +0 -0
- /package/src/assets/{images → img}/f21ico-schedule.svg +0 -0
- /package/src/assets/{images → img}/file-alt-solid.png +0 -0
- /package/src/assets/{images → img}/icons/copilot.svg +0 -0
- /package/src/assets/{images → img}/json-file.svg +0 -0
- /package/src/assets/{images → img}/language_flag/ar.png +0 -0
- /package/src/assets/{images → img}/language_flag/az.png +0 -0
- /package/src/assets/{images → img}/language_flag/bg.png +0 -0
- /package/src/assets/{images → img}/language_flag/ca.png +0 -0
- /package/src/assets/{images → img}/language_flag/cs.png +0 -0
- /package/src/assets/{images → img}/language_flag/da.png +0 -0
- /package/src/assets/{images → img}/language_flag/de.png +0 -0
- /package/src/assets/{images → img}/language_flag/el.png +0 -0
- /package/src/assets/{images → img}/language_flag/en.png +0 -0
- /package/src/assets/{images → img}/language_flag/es.png +0 -0
- /package/src/assets/{images → img}/language_flag/fa.png +0 -0
- /package/src/assets/{images → img}/language_flag/fi.png +0 -0
- /package/src/assets/{images → img}/language_flag/fr.png +0 -0
- /package/src/assets/{images → img}/language_flag/he.png +0 -0
- /package/src/assets/{images → img}/language_flag/hi.png +0 -0
- /package/src/assets/{images → img}/language_flag/hr.png +0 -0
- /package/src/assets/{images → img}/language_flag/hu.png +0 -0
- /package/src/assets/{images → img}/language_flag/id.png +0 -0
- /package/src/assets/{images → img}/language_flag/it.png +0 -0
- /package/src/assets/{images → img}/language_flag/ja.png +0 -0
- /package/src/assets/{images → img}/language_flag/kk.png +0 -0
- /package/src/assets/{images → img}/language_flag/ko.png +0 -0
- /package/src/assets/{images → img}/language_flag/ml-IN.png +0 -0
- /package/src/assets/{images → img}/language_flag/ne-NP.png +0 -0
- /package/src/assets/{images → img}/language_flag/nl.png +0 -0
- /package/src/assets/{images → img}/language_flag/no.png +0 -0
- /package/src/assets/{images → img}/language_flag/pl.png +0 -0
- /package/src/assets/{images → img}/language_flag/pt-BR.png +0 -0
- /package/src/assets/{images → img}/language_flag/pt.png +0 -0
- /package/src/assets/{images → img}/language_flag/ro.png +0 -0
- /package/src/assets/{images → img}/language_flag/ru.png +0 -0
- /package/src/assets/{images → img}/language_flag/sk.png +0 -0
- /package/src/assets/{images → img}/language_flag/sl.png +0 -0
- /package/src/assets/{images → img}/language_flag/sr.png +0 -0
- /package/src/assets/{images → img}/language_flag/sv.png +0 -0
- /package/src/assets/{images → img}/language_flag/ta.png +0 -0
- /package/src/assets/{images → img}/language_flag/th.png +0 -0
- /package/src/assets/{images → img}/language_flag/tr.png +0 -0
- /package/src/assets/{images → img}/language_flag/uk.png +0 -0
- /package/src/assets/{images → img}/language_flag/uz.png +0 -0
- /package/src/assets/{images → img}/language_flag/vi.png +0 -0
- /package/src/assets/{images → img}/language_flag/zh-CN.png +0 -0
- /package/src/assets/{images → img}/language_flag/zh-TW.png +0 -0
- /package/src/assets/{logos → img/logos}/chat21-logo.png +0 -0
- /package/src/assets/{logos → img/logos}/logo.png +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk-logo_new_white.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk-solo-logo.png +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo_no_text.svg +0 -0
- /package/src/assets/{logos → img/logos}/tiledesk_logo_white_small.svg +0 -0
- /package/src/assets/{images → img}/no_conversation.jpg +0 -0
- /package/src/assets/{images → img}/no_image.png +0 -0
- /package/src/assets/{images → img}/no_image_user.png +0 -0
- /package/src/assets/{images → img}/pin.svg +0 -0
- /package/src/assets/{images → img}/pinned.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/high.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/high_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/low.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/low_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/medium.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/medium_v2.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/urgent.svg +0 -0
- /package/src/assets/{images → img}/priority_icons/urgent_v2.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/avaible.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/inactive.svg +0 -0
- /package/src/assets/{images → img}/teammate-status/unavaible.svg +0 -0
- /package/src/assets/{images → img}/whatsapp_background.png +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,71 @@
|
|
|
8
8
|
### **Copyrigth**:
|
|
9
9
|
*Tiledesk SRL*
|
|
10
10
|
|
|
11
|
+
# 3.4.27-rc21
|
|
12
|
+
- **changed**: new wss reconnect and timeout keepalive
|
|
13
|
+
- **bug-fixed**: cannot route if senderFullaname contains /
|
|
14
|
+
|
|
15
|
+
# 3.4.27-rc20
|
|
16
|
+
- **added**: onOpenTicketExternally event in triggerEvents service
|
|
17
|
+
|
|
18
|
+
# 3.4.27-rc19
|
|
19
|
+
- **added**: window.parent['openTicketOnHDA']
|
|
20
|
+
|
|
21
|
+
# 3.4.27-rc18
|
|
22
|
+
- **added**: triggerOnUpdateNewConversationBadge to update conversation badge count in parent component
|
|
23
|
+
|
|
24
|
+
# 3.4.27-rc17
|
|
25
|
+
- **bug-fixed**: setNotification not called when click on a conversation
|
|
26
|
+
|
|
27
|
+
# 3.4.27-rc16
|
|
28
|
+
- **bug-fixed**: setNotification not called when resolve a conversation
|
|
29
|
+
|
|
30
|
+
# 3.4.27-rc15
|
|
31
|
+
- **changed**: /images with /img in assets folder
|
|
32
|
+
|
|
33
|
+
# 3.4.27-rc14
|
|
34
|
+
- **added**: DISPLAY_EDIT_PROFILE brand variable
|
|
35
|
+
- **bug-fixed**: emojii is sent also if is not allowed
|
|
36
|
+
|
|
37
|
+
# 3.4.27-rc13
|
|
38
|
+
- **added**: ability to mantain logout parameter when redirect to dashboard urls from sidebar component
|
|
39
|
+
|
|
40
|
+
# 3.4.27-rc12
|
|
41
|
+
- **added**: ability to manage logOut option in sidebar-user-detail with tiledesk_logOut url query params
|
|
42
|
+
|
|
43
|
+
# 3.4.27-rc11
|
|
44
|
+
- **bug-fixed**: fixed infinite loading in contact list
|
|
45
|
+
|
|
46
|
+
# 3.4.27-rc10
|
|
47
|
+
- **added**: ability to manage header-conversation-list with roles
|
|
48
|
+
- **bug-fixed**: members in group list not loaded
|
|
49
|
+
|
|
50
|
+
# 3.4.27-rc9
|
|
51
|
+
- **bug-fixed**: Scrolling to the last message when opening a conversation
|
|
52
|
+
- **bug-fixed**: Loading in the conversation list disabled when removing the last conversation
|
|
53
|
+
|
|
54
|
+
# 3.4.27-rc8
|
|
55
|
+
- **added**: ability to open ticket to external service
|
|
56
|
+
- **added**: ticketSection env var
|
|
57
|
+
|
|
58
|
+
# 3.4.27-rc7
|
|
59
|
+
- **bug-fixed**: Scrolling to the last message when opening a conversation
|
|
60
|
+
- **bug-fixed**: Loading in the conversation list disabled when removing the last conversation
|
|
61
|
+
|
|
62
|
+
# 3.4.27-rc6
|
|
63
|
+
- **bug-fixed**: user for dashboard app is incorrect
|
|
64
|
+
|
|
65
|
+
# 3.4.27-rc5
|
|
66
|
+
- **added**: managed roles in sidebar e navbar
|
|
67
|
+
- **bug-fixed**: projectId and supportMode url is not saved in localstorage
|
|
68
|
+
|
|
69
|
+
# 3.4.27-rc4
|
|
70
|
+
- **bug-fixed**: extractUrls function is not able to detect url start with www or without https/http
|
|
71
|
+
- **bug-fixed**: if message is sent with keydown, error on domain check is not showed
|
|
72
|
+
|
|
73
|
+
# 3.4.27-rc3
|
|
74
|
+
- **bug-fixed**: cannot set user availability if supportMode is enabled and tiledesk_projectID url params is set
|
|
75
|
+
|
|
11
76
|
# 3.4.27-rc2
|
|
12
77
|
- **bug-fixed**: cannede responses role
|
|
13
78
|
|
package/angular.json
CHANGED
package/package.json
CHANGED
|
@@ -21,7 +21,9 @@
|
|
|
21
21
|
</div> -->
|
|
22
22
|
|
|
23
23
|
<div class="user-details-sidebar" [ngClass]="{'hide-sidebar': IS_ONLINE === false || IS_ON_MOBILE_DEVICE || SUPPORT_MODE === false}">
|
|
24
|
-
<app-sidebar-user-details
|
|
24
|
+
<app-sidebar-user-details
|
|
25
|
+
[logOut]="g?.logOut">
|
|
26
|
+
</app-sidebar-user-details>
|
|
25
27
|
</div>
|
|
26
28
|
|
|
27
29
|
<ion-split-pane when="md" contentId="main" [ngClass]="{'mobile': IS_ON_MOBILE_DEVICE, 'sidebar-hidden': IS_ON_MOBILE_DEVICE || SUPPORT_MODE === false}">
|
package/src/app/app.component.ts
CHANGED
|
@@ -44,6 +44,8 @@ import { conversationToMessage } from 'src/chat21-core/utils/utils-message';
|
|
|
44
44
|
import { ProjectService } from './services/projects/project.service';
|
|
45
45
|
import { ContactsService } from './services/contacts/contacts.service';
|
|
46
46
|
import { TiledeskService } from './services/tiledesk/tiledesk.service';
|
|
47
|
+
import { Project } from 'src/chat21-core/models/projects';
|
|
48
|
+
import { BRAND_BASE_INFO } from './utils/utils-resources';
|
|
47
49
|
import { ProjectUsersService } from './services/project_users/project-users.service';
|
|
48
50
|
|
|
49
51
|
@Component({
|
|
@@ -299,6 +301,10 @@ export class AppComponent implements OnInit {
|
|
|
299
301
|
this.zone = new NgZone({}); // a cosa serve?
|
|
300
302
|
|
|
301
303
|
this.SUPPORT_MODE = this.g.supportMode
|
|
304
|
+
this.logger.info('[APP-COMP] this.SUPPORT_MODE', this.SUPPORT_MODE)
|
|
305
|
+
|
|
306
|
+
BRAND_BASE_INFO['LOGOUT_ENABLED'] = this.g.logOut
|
|
307
|
+
this.logger.info('[APP-COMP] this.logOut', BRAND_BASE_INFO['LOGOUT_ENABLED'])
|
|
302
308
|
}
|
|
303
309
|
|
|
304
310
|
});
|
|
@@ -867,7 +873,8 @@ export class AppComponent implements OnInit {
|
|
|
867
873
|
// console.log('[APP-COMP] PLATFORM', PLATFORM_MOBILE, 'route.snapshot', this.route.snapshot);
|
|
868
874
|
if (!IDConv) {
|
|
869
875
|
this.logger.log('[APP-COMP] navigateByUrl -- conversations-list');
|
|
870
|
-
|
|
876
|
+
const queryString = window.location.search; // restituisce ad es. "?jwt=...&tiledesk_supportMode=false"
|
|
877
|
+
this.router.navigateByUrl('conversations-list' + queryString);
|
|
871
878
|
}
|
|
872
879
|
// this.router.navigateByUrl(pageUrl);
|
|
873
880
|
// this.navService.setRoot(ConversationListPage, {});
|
|
@@ -889,10 +896,15 @@ export class AppComponent implements OnInit {
|
|
|
889
896
|
|
|
890
897
|
let pageUrl = 'conversation-detail/'
|
|
891
898
|
if (IDConv && FullNameConv) {
|
|
892
|
-
pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
|
|
899
|
+
pageUrl += IDConv + '/' + encodeURIComponent(FullNameConv) + '/' + Convtype
|
|
893
900
|
}
|
|
901
|
+
|
|
902
|
+
const queryParams = this.route.snapshot.queryParams;
|
|
903
|
+
const queryString = new URLSearchParams(queryParams).toString();
|
|
904
|
+
pageUrl += queryString ? `?${queryString}` : '';
|
|
905
|
+
|
|
894
906
|
// replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
|
|
895
|
-
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29')
|
|
907
|
+
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
|
|
896
908
|
|
|
897
909
|
|
|
898
910
|
// const DASHBOARD_URL = this.appConfigProvider.getConfig().DASHBOARD_URL;
|
|
@@ -1113,14 +1125,19 @@ export class AppComponent implements OnInit {
|
|
|
1113
1125
|
if (conversation && conversation.is_new === true && this.isInitialized) {
|
|
1114
1126
|
this.manageTabNotification('conv_added', conversation.sound)
|
|
1115
1127
|
this.manageEventNewConversation(conversation)
|
|
1116
|
-
|
|
1128
|
+
//UPDATE NOTIFICATION FOR NEW CONVERSATION COUNT
|
|
1129
|
+
this.triggerOnUpdateNewConversationBadge(this.conversationsHandlerService.countIsNew());
|
|
1117
1130
|
}
|
|
1118
1131
|
if(conversation) this.updateConversationsOnStorage()
|
|
1119
1132
|
});
|
|
1120
1133
|
|
|
1121
1134
|
this.conversationsHandlerService.conversationChanged.subscribe((conversation: ConversationModel) => {
|
|
1122
1135
|
// console.log('[APP-COMP] ***** subscribeConversationChanged conversation: ', conversation);
|
|
1123
|
-
if(conversation)
|
|
1136
|
+
if(conversation){
|
|
1137
|
+
this.updateConversationsOnStorage();
|
|
1138
|
+
//UPDATE NOTIFICATION FOR NEW CONVERSATION COUNT
|
|
1139
|
+
this.triggerOnUpdateNewConversationBadge(this.conversationsHandlerService.countIsNew());
|
|
1140
|
+
}
|
|
1124
1141
|
});
|
|
1125
1142
|
|
|
1126
1143
|
this.conversationsHandlerService.conversationChangedDetailed.subscribe((changes: {value: ConversationModel, previousValue: ConversationModel}) => {
|
|
@@ -1144,6 +1161,8 @@ export class AppComponent implements OnInit {
|
|
|
1144
1161
|
if(conversation) {
|
|
1145
1162
|
this.updateConversationsOnStorage();
|
|
1146
1163
|
this.segmentResolved(conversation);
|
|
1164
|
+
//UPDATE NOTIFICATION FOR NEW CONVERSATION COUNT
|
|
1165
|
+
this.triggerOnUpdateNewConversationBadge(this.conversationsHandlerService.countIsNew());
|
|
1147
1166
|
this.router.navigateByUrl('conversation-detail/'); //redirect to basePage
|
|
1148
1167
|
}
|
|
1149
1168
|
});
|
|
@@ -1182,11 +1201,14 @@ export class AppComponent implements OnInit {
|
|
|
1182
1201
|
this.contactsService.initialize(serverBaseURL)
|
|
1183
1202
|
// this.chatManager.startApp();
|
|
1184
1203
|
|
|
1204
|
+
|
|
1205
|
+
//INIT WEBSOCKET
|
|
1206
|
+
this.connetWebsocket(tiledeskToken)
|
|
1207
|
+
|
|
1185
1208
|
// ----------------------------------------------
|
|
1186
1209
|
// PUSH NOTIFICATIONS
|
|
1187
1210
|
// ----------------------------------------------
|
|
1188
1211
|
const pushEngine = this.appConfigProvider.getConfig().pushEngine
|
|
1189
|
-
|
|
1190
1212
|
if (currentUser) {
|
|
1191
1213
|
if (pushEngine && pushEngine !== 'none') {
|
|
1192
1214
|
this.notificationsService.getNotificationPermissionAndSaveToken(currentUser.uid);
|
|
@@ -1208,6 +1230,24 @@ export class AppComponent implements OnInit {
|
|
|
1208
1230
|
} catch (err) {
|
|
1209
1231
|
this.logger.error('[APP-COMP] -> error:', err);
|
|
1210
1232
|
}
|
|
1233
|
+
|
|
1234
|
+
// ----------------------------------------------
|
|
1235
|
+
// LAST PROJECT FROM URL
|
|
1236
|
+
// ----------------------------------------------
|
|
1237
|
+
if(this.g.projectID){
|
|
1238
|
+
this.projectService.getProjects().subscribe({ next: (projects: Project[]) => {
|
|
1239
|
+
const project = projects.find(prjct => prjct.id_project._id === this.g.projectID)
|
|
1240
|
+
if(project){
|
|
1241
|
+
this.logger.log('[APP-COMP] - GET PROJECT - project found with this.projectID', project);
|
|
1242
|
+
localStorage.setItem('last_project', JSON.stringify(project))
|
|
1243
|
+
this.events.publish('storage:last_project', project)
|
|
1244
|
+
}
|
|
1245
|
+
}, error: (error) => {
|
|
1246
|
+
this.logger.log('[APP-COMP] - GET PROJECT - project NOT found with this.projectID', this.g.projectID, error);
|
|
1247
|
+
}, complete: () => {
|
|
1248
|
+
|
|
1249
|
+
}});
|
|
1250
|
+
}
|
|
1211
1251
|
}
|
|
1212
1252
|
|
|
1213
1253
|
|
|
@@ -1248,9 +1288,24 @@ export class AppComponent implements OnInit {
|
|
|
1248
1288
|
}
|
|
1249
1289
|
|
|
1250
1290
|
goToDashboardLogin(){
|
|
1251
|
-
let DASHBOARD_URL = this.appConfigProvider.getConfig().dashboardUrl + '#/login'
|
|
1252
|
-
const myWindow = window.open(DASHBOARD_URL, '_self');
|
|
1253
|
-
myWindow.focus();
|
|
1291
|
+
// let DASHBOARD_URL = this.appConfigProvider.getConfig().dashboardUrl + '#/login'
|
|
1292
|
+
// const myWindow = window.open(DASHBOARD_URL, '_self');
|
|
1293
|
+
// myWindow.focus();
|
|
1294
|
+
}
|
|
1295
|
+
|
|
1296
|
+
connetWebsocket(tiledeskToken) {
|
|
1297
|
+
|
|
1298
|
+
this.logger.log('[WEBSOCKET-JS] connetWebsocket called in [PROJECT-ITEM] tiledeskToken ', tiledeskToken)
|
|
1299
|
+
const appconfig = this.appConfigProvider.getConfig();
|
|
1300
|
+
this.logger.log('[WEBSOCKET-JS] connetWebsocket called in [PROJECT-ITEM] wsUrl ', appconfig.wsUrl)
|
|
1301
|
+
const WS_URL = appconfig.wsUrl + '?token=' + tiledeskToken
|
|
1302
|
+
this.logger.log('[WEBSOCKET-JS] connetWebsocket called in [PROJECT-ITEM] wsUrl ', WS_URL)
|
|
1303
|
+
this.webSocketJs.init(
|
|
1304
|
+
WS_URL,
|
|
1305
|
+
undefined,
|
|
1306
|
+
undefined,
|
|
1307
|
+
undefined
|
|
1308
|
+
);
|
|
1254
1309
|
}
|
|
1255
1310
|
|
|
1256
1311
|
|
|
@@ -1301,7 +1356,7 @@ export class AppComponent implements OnInit {
|
|
|
1301
1356
|
subscribeChangedConversationSelected = (user: UserModel, type: string) => {
|
|
1302
1357
|
this.logger.log('[APP-COMP] subscribeUidConvSelectedChanged navigateByUrl', user, type);
|
|
1303
1358
|
// this.router.navigateByUrl('conversation-detail/' + user.uid + '?conversationWithFullname=' + user.fullname);
|
|
1304
|
-
this.router.navigateByUrl('conversation-detail/' + user.uid + '/' + user.fullname + '/' + type);
|
|
1359
|
+
this.router.navigateByUrl('conversation-detail/' + user.uid + '/' + encodeURIComponent(user.fullname) + '/' + type);
|
|
1305
1360
|
}
|
|
1306
1361
|
|
|
1307
1362
|
subscribeProfileInfoButtonLogOut = (hasClickedLogout) => {
|
|
@@ -1351,8 +1406,6 @@ export class AppComponent implements OnInit {
|
|
|
1351
1406
|
if(conversation && conversation.is_new){
|
|
1352
1407
|
this.audio_NewConv.pause();
|
|
1353
1408
|
this.conversationsHandlerService.setConversationRead(conversation.uid)
|
|
1354
|
-
//UPDATE NOTIFICATION FOR NEW CONVERSATION COUNT
|
|
1355
|
-
this.setNotification();
|
|
1356
1409
|
}
|
|
1357
1410
|
}
|
|
1358
1411
|
|
|
@@ -1430,7 +1483,7 @@ export class AppComponent implements OnInit {
|
|
|
1430
1483
|
}
|
|
1431
1484
|
|
|
1432
1485
|
//INIT NOTIFICATION FOR NEW CONVERSATION COUNT
|
|
1433
|
-
this.
|
|
1486
|
+
this.triggerOnUpdateNewConversationBadge(this.conversationsHandlerService.countIsNew());
|
|
1434
1487
|
});
|
|
1435
1488
|
|
|
1436
1489
|
}
|
|
@@ -1479,10 +1532,10 @@ export class AppComponent implements OnInit {
|
|
|
1479
1532
|
let Convtype = 'active'
|
|
1480
1533
|
|
|
1481
1534
|
if (IDConv && FullNameConv) {
|
|
1482
|
-
pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
|
|
1535
|
+
pageUrl += IDConv + '/' + encodeURIComponent(FullNameConv) + '/' + Convtype
|
|
1483
1536
|
}
|
|
1484
1537
|
// replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
|
|
1485
|
-
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29')
|
|
1538
|
+
this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
|
|
1486
1539
|
} else {
|
|
1487
1540
|
console.log("FCM: Received in foreground", JSON.stringify(data));
|
|
1488
1541
|
// let IDConv = data.recipient
|
|
@@ -1493,7 +1546,7 @@ export class AppComponent implements OnInit {
|
|
|
1493
1546
|
// pageUrl += IDConv + '/' + FullNameConv + '/' + Convtype
|
|
1494
1547
|
// }
|
|
1495
1548
|
// // replace(/\(/g, '%28').replace(/\)/g, '%29') -> used for the encoder of any round brackets
|
|
1496
|
-
// this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29')
|
|
1549
|
+
// this.router.navigateByUrl(pageUrl.replace(/\(/g, '%28').replace(/\)/g, '%29'));
|
|
1497
1550
|
};
|
|
1498
1551
|
});
|
|
1499
1552
|
}
|
|
@@ -1647,14 +1700,6 @@ export class AppComponent implements OnInit {
|
|
|
1647
1700
|
this.triggerEvents.triggerOnNewConversationInit(conversation)
|
|
1648
1701
|
}
|
|
1649
1702
|
|
|
1650
|
-
private setNotification() {
|
|
1651
|
-
this.logger.log('[APP-COMP] setNotification for NEW CONVERSATION');
|
|
1652
|
-
if(window['AGENTDESKTOP']){
|
|
1653
|
-
this.logger.log('[APP-COMP] manageNotification AGENTDESKTOP exist', window['AGENTDESKTOP']);
|
|
1654
|
-
window['AGENTDESKTOP']['TAB'].Badge(this.conversationsHandlerService.countIsNew().toString())
|
|
1655
|
-
}
|
|
1656
|
-
}
|
|
1657
|
-
|
|
1658
1703
|
|
|
1659
1704
|
@HostListener('document:visibilitychange', [])
|
|
1660
1705
|
visibilitychange() {
|
|
@@ -1721,6 +1766,11 @@ export class AppComponent implements OnInit {
|
|
|
1721
1766
|
this.triggerEvents.triggerOnInit(detailOBJ)
|
|
1722
1767
|
}
|
|
1723
1768
|
|
|
1769
|
+
private triggerOnUpdateNewConversationBadge(count: number){
|
|
1770
|
+
const detailOBJ = { event: 'onUpdateNewConversationBadge', count: count.toString() }
|
|
1771
|
+
this.triggerEvents.triggerOnUpdateNewConversationBadge(detailOBJ)
|
|
1772
|
+
}
|
|
1773
|
+
|
|
1724
1774
|
|
|
1725
1775
|
// @HostListener('mouseenter', ['$event'])
|
|
1726
1776
|
// onMouseEnter(event: any) {
|
package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.scss
CHANGED
|
@@ -205,13 +205,13 @@
|
|
|
205
205
|
// overflow-x: hidden;
|
|
206
206
|
// }
|
|
207
207
|
// .c21-ico-schedule {
|
|
208
|
-
// background-image: url("src/assets/
|
|
208
|
+
// background-image: url("src/assets/img/f21ico-schedule.svg");
|
|
209
209
|
// }
|
|
210
210
|
// .c21-ico-done {
|
|
211
|
-
// background-image: url("src/assets/
|
|
211
|
+
// background-image: url("src/assets/img/f21ico-done.svg");
|
|
212
212
|
// }
|
|
213
213
|
// .c21-ico-done_all {
|
|
214
|
-
// background-image: url("src/assets/
|
|
214
|
+
// background-image: url("src/assets/img/f21ico-done_all.svg");
|
|
215
215
|
// }
|
|
216
216
|
// }
|
|
217
217
|
|
package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts
CHANGED
|
@@ -58,7 +58,7 @@ export class ConversationContentComponent implements OnInit {
|
|
|
58
58
|
MESSAGE_TYPE_OTHERS = MESSAGE_TYPE_OTHERS;
|
|
59
59
|
// ========== end:: check message type functions ======= //
|
|
60
60
|
|
|
61
|
-
urlBOTImage = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/dev/2.0.4-beta.7/assets/
|
|
61
|
+
urlBOTImage = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/dev/2.0.4-beta.7/assets/img/avatar_bot_tiledesk.svg'
|
|
62
62
|
uploadProgress: number;
|
|
63
63
|
showUploadProgress: boolean = false;
|
|
64
64
|
fileType: string;
|
|
@@ -184,7 +184,7 @@
|
|
|
184
184
|
<ng-container *ngIf="isCopilotEnabled">
|
|
185
185
|
<ion-button shape="round" size="small" class="btn-info-msg btn-copilot" ion-button fill="clear"
|
|
186
186
|
(click)="onClickOptionsCopilot(message, i)">
|
|
187
|
-
<ion-icon id="copilot" src="assets/
|
|
187
|
+
<ion-icon id="copilot" src="assets/img/icons/copilot.svg"></ion-icon>
|
|
188
188
|
</ion-button>
|
|
189
189
|
</ng-container>
|
|
190
190
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
<div class="c21-icon-avatar">
|
|
2
2
|
<div class="c21-avatar-image profile_image">
|
|
3
|
-
<!-- <img src="getUrlImgProfile(message.sender) {{getUrlImgProfile(message.sender)}}" onError="this.src = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v2/assets/
|
|
3
|
+
<!-- <img src="getUrlImgProfile(message.sender) {{getUrlImgProfile(message.sender)}}" onError="this.src = 'https://s3.eu-west-1.amazonaws.com/tiledesk-widget/v2/assets/img/line_avatar_male_tiledesk.svg'" /> -->
|
|
4
4
|
<!-- <img [src]="url" (error)="onBotImgError($event)" /> -->
|
|
5
5
|
<img *ngIf="senderID?.indexOf('bot_') !== -1 || senderFullname === 'Bot'" [src]="url" (error)="onBotImgError($event)" (load)="onLoadedBot($event)"/>
|
|
6
6
|
<!-- is a HUMAN -->
|
|
@@ -17,18 +17,18 @@ export class AvatarComponent implements OnInit {
|
|
|
17
17
|
if(this.senderID){
|
|
18
18
|
this.url = this.imageRepoService.getImagePhotoUrl(this.senderID)
|
|
19
19
|
if(!this.url && (this.senderID.indexOf('bot_') !== -1 || this.senderFullname === 'Bot')){
|
|
20
|
-
this.url = this.baseLocation +'/assets/
|
|
20
|
+
this.url = this.baseLocation +'/assets/img/avatar_bot_tiledesk.svg'
|
|
21
21
|
}else if(!this.url && this.senderID.indexOf('bot_') == -1){
|
|
22
|
-
this.url = this.baseLocation +'/assets/
|
|
22
|
+
this.url = this.baseLocation +'/assets/img/light_avatar_placeholder.svg'
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
onBotImgError(event){
|
|
28
|
-
event.target.src = this.baseLocation +'/assets/
|
|
28
|
+
event.target.src = this.baseLocation +'/assets/img/avatar_bot_tiledesk.svg'
|
|
29
29
|
}
|
|
30
30
|
onHumanImgError(event) {
|
|
31
|
-
event.target.src = this.baseLocation + "/assets/
|
|
31
|
+
event.target.src = this.baseLocation + "/assets/img/light_avatar_placeholder.svg"
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
onLoadedBot(event){
|
package/src/app/chatlib/conversation-detail/message/return-receipt/return-receipt.component.scss
CHANGED
|
@@ -16,12 +16,12 @@
|
|
|
16
16
|
}
|
|
17
17
|
|
|
18
18
|
.c21-ico-schedule {
|
|
19
|
-
background-image: url("/src/assets/
|
|
19
|
+
background-image: url("/src/assets/img/f21ico-schedule.svg");
|
|
20
20
|
}
|
|
21
21
|
.c21-ico-done {
|
|
22
|
-
background-image: url("/src/assets/
|
|
22
|
+
background-image: url("/src/assets/img/f21ico-done.svg");
|
|
23
23
|
}
|
|
24
24
|
.c21-ico-done_all {
|
|
25
|
-
background-image: url("/src/assets/
|
|
25
|
+
background-image: url("/src/assets/img/f21ico-done_all.svg");
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -96,23 +96,23 @@
|
|
|
96
96
|
<div class="conversation_project truncate">
|
|
97
97
|
<!-- DIRECT CONV -->
|
|
98
98
|
<div *ngIf="conversation.channel_type === CHANNEL_TYPE.DIRECT">
|
|
99
|
-
<img class="channel-icon" src="assets/
|
|
99
|
+
<img class="channel-icon" src="assets/img/channel_icons/direct.svg">
|
|
100
100
|
<span class="truncate">{{translationsMap.get('DIRECT_CHAT')}}</span>
|
|
101
101
|
</div>
|
|
102
102
|
<!-- GROUP CONV -->
|
|
103
103
|
<div *ngIf="conversation.uid.startsWith(CHANNEL_TYPE.GROUP)">
|
|
104
|
-
<img class="channel-icon" src="assets/
|
|
104
|
+
<img class="channel-icon" src="assets/img/channel_icons/group.svg">
|
|
105
105
|
<span class="truncate">{{translationsMap.get('GROUP_CHAT')}}</span>
|
|
106
106
|
</div>
|
|
107
107
|
<!-- SUPPORT-GROUP CONV -->
|
|
108
108
|
<div *ngIf="conversation.uid.startsWith(CHANNEL_TYPE.SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
|
|
109
|
-
<img class="channel-icon" src="assets/
|
|
110
|
-
<img class="channel-icon" src="assets/
|
|
111
|
-
<img class="channel-icon" src="assets/
|
|
112
|
-
<img class="channel-icon" src="assets/
|
|
113
|
-
<img class="channel-icon" src="assets/
|
|
114
|
-
<img class="channel-icon" src="assets/
|
|
115
|
-
<img class="channel-icon" src="assets/
|
|
109
|
+
<img class="channel-icon" src="assets/img/channel_icons/chat21.svg" *ngIf="conversation?.attributes && ( (conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.CHAT21) || !conversation?.attributes?.request_channel) " >
|
|
110
|
+
<img class="channel-icon" src="assets/img/channel_icons/email-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.EMAIL" >
|
|
111
|
+
<img class="channel-icon" src="assets/img/channel_icons/form-logo_v2.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.FORM" >
|
|
112
|
+
<img class="channel-icon" src="assets/img/channel_icons/messenger-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.MESSENGER" >
|
|
113
|
+
<img class="channel-icon" src="assets/img/channel_icons/whatsapp-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.WHATSAPP" >
|
|
114
|
+
<img class="channel-icon" src="assets/img/channel_icons/telegram-logo.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel === CHANNEL_TYPE.TELEGRAM" >
|
|
115
|
+
<img class="channel-icon" src="assets/img/channel_icons/voice.svg" *ngIf="conversation?.attributes && conversation?.attributes?.request_channel && conversation?.attributes?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
|
|
116
116
|
<span *ngIf="conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.project_name}}</span>
|
|
117
117
|
<span *ngIf="!conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.projectId}}</span>
|
|
118
118
|
</div>
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
<ion-label>{{translationsMap?.get('AddAsCannedResponse')}}</ion-label>
|
|
10
10
|
</ion-item>
|
|
11
11
|
<ion-item button="true" *ngIf="logLevel >= LogLevel.DEBUG" (click)="onClickOption('jsonInfo')">
|
|
12
|
-
<ion-icon src="assets/
|
|
12
|
+
<ion-icon src="assets/img/json-file.svg" slot="start"></ion-icon>
|
|
13
13
|
<ion-label>{{translationsMap?.get('JSON_RESPONSE')}}</ion-label>
|
|
14
14
|
</ion-item>
|
|
15
15
|
</ion-list>
|
|
@@ -9,8 +9,8 @@
|
|
|
9
9
|
<ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.title" class="title" id="{{'titleCanned_'+canned._id}}" #title></ion-input>
|
|
10
10
|
<ion-input [class.readonly]="canned?.disabled" [readonly]="canned?.disabled" type="text" [(ngModel)]="canned.text" class="text truncate"></ion-input>
|
|
11
11
|
</div>
|
|
12
|
-
<!-- <ion-icon class="canned-item-icon" name="pin" src="assets/
|
|
13
|
-
<ion-icon class="canned-item-icon" name="pin" src="assets/
|
|
12
|
+
<!-- <ion-icon class="canned-item-icon" name="pin" src="assets/img/pin.svg" slot=end *ngIf="canned.pinned" (click)="onPinCanned(canned, $event)"></ion-icon>
|
|
13
|
+
<ion-icon class="canned-item-icon" name="pin" src="assets/img/pinned.svg" slot=end (click)="onUnPinCanned(canned, $event)"></ion-icon> -->
|
|
14
14
|
<ion-icon class="canned-item-icon" name="checkmark-sharp" slot=end *ngIf="(canned.createdBy === loggedUser.uid && !canned.disabled) && roles[PERMISSIONS.CANNED_RESPONSES_UPDATE]" (click)="onConfirmEditCanned(canned, $event)"></ion-icon>
|
|
15
15
|
<ion-icon class="canned-item-icon" name="pencil-sharp" slot=end *ngIf="(canned.createdBy === loggedUser.uid && canned.disabled) && roles[PERMISSIONS.CANNED_RESPONSES_UPDATE]" (click)="onEditCanned(canned, $event)"></ion-icon>
|
|
16
16
|
<ion-icon class="canned-item-icon" name="trash-bin-outline" slot=end *ngIf="(canned.createdBy === loggedUser.uid) && roles[PERMISSIONS.CANNED_RESPONSES_DELETE]" (click)="onDeleteCanned(canned, $event)"></ion-icon>
|
|
@@ -47,13 +47,13 @@
|
|
|
47
47
|
</div>
|
|
48
48
|
<!-- SUPPORT-GROUP CONV -->
|
|
49
49
|
<div *ngIf="conversationUid?.startsWith(CHANNEL_TYPE.SUPPORT_GROUP) && !IS_ON_MOBILE_DEVICE">
|
|
50
|
-
<img class="channel-icon" src="assets/
|
|
51
|
-
<img class="channel-icon" src="assets/
|
|
52
|
-
<img class="channel-icon" src="assets/
|
|
53
|
-
<img class="channel-icon" src="assets/
|
|
54
|
-
<img class="channel-icon" src="assets/
|
|
55
|
-
<img class="channel-icon" src="assets/
|
|
56
|
-
<img class="channel-icon" src="assets/
|
|
50
|
+
<img class="channel-icon" src="assets/img/channel_icons/chat21.svg" *ngIf="( (conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.CHAT21) || !conversationAvatar?.request_channel) " >
|
|
51
|
+
<img class="channel-icon" src="assets/img/channel_icons/email-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.EMAIL" >
|
|
52
|
+
<img class="channel-icon" src="assets/img/channel_icons/form-logo_v2.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.FORM" >
|
|
53
|
+
<img class="channel-icon" src="assets/img/channel_icons/messenger-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.MESSENGER" >
|
|
54
|
+
<img class="channel-icon" src="assets/img/channel_icons/whatsapp-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.WHATSAPP" >
|
|
55
|
+
<img class="channel-icon" src="assets/img/channel_icons/telegram-logo.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel === CHANNEL_TYPE.TELEGRAM" >
|
|
56
|
+
<img class="channel-icon" src="assets/img/channel_icons/voice.svg" *ngIf="conversationAvatar?.request_channel && conversationAvatar?.request_channel.startsWith(CHANNEL_TYPE.VOICE)" >
|
|
57
57
|
<span *ngIf="conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.project_name}}</span>
|
|
58
58
|
<span *ngIf="!conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.projectId}}</span>
|
|
59
59
|
</div>
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
<!-- COPILOT-OPTION -->
|
|
66
66
|
<div *ngIf="isCopilotEnabled" class="copilot-container" id="copilot">
|
|
67
67
|
<ion-button id="copilot" fill="clear" (click)="onOpenSection('copilot')">
|
|
68
|
-
<ion-icon class="channel-icon" src="assets/
|
|
68
|
+
<ion-icon class="channel-icon" src="assets/img/icons/copilot.svg"></ion-icon>
|
|
69
69
|
{{translationsMap?.get('COPILOT.SOLVE_WITH_AI')}}
|
|
70
70
|
</ion-button>
|
|
71
71
|
</div>
|
package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html
CHANGED
|
@@ -22,6 +22,13 @@
|
|
|
22
22
|
{{translationMap?.get('WHATSAPP.LABEL_TEMPLATES')}}
|
|
23
23
|
</ion-button>
|
|
24
24
|
</div>
|
|
25
|
+
<!-- OPEN TICKET -->
|
|
26
|
+
<div *ngIf="ticketSection" class="section-option" id="template" tooltip="{{translationMap?.get('TICKET.OPEN_TICKET')}}" placement="top">
|
|
27
|
+
<ion-button fill="clear" [class.active]="section==='ticket'" (click)="onOpenSection('ticket')" [disabled]="channelType === 'direct'">
|
|
28
|
+
<ion-icon name="ticket"></ion-icon>
|
|
29
|
+
{{translationMap?.get('TICKET.OPEN_TICKET')}}
|
|
30
|
+
</ion-button>
|
|
31
|
+
</div>
|
|
25
32
|
</div>
|
|
26
33
|
|
|
27
34
|
<div class="footerContainerAlert">
|
|
@@ -50,6 +57,22 @@
|
|
|
50
57
|
</ion-col>
|
|
51
58
|
</ion-row>
|
|
52
59
|
|
|
60
|
+
<ion-row id="ticket" [style.display]="section==='ticket'? 'flex': 'none'">
|
|
61
|
+
<ion-col col-auto>
|
|
62
|
+
<div class="placeholder">{{translationMap.get('TICKET.DESCRIPTION')}}</div>
|
|
63
|
+
<div class="buttons-container">
|
|
64
|
+
<ion-button name="add" size="small" (click)="onClickTicket('open')">
|
|
65
|
+
<ion-icon name="add"></ion-icon>
|
|
66
|
+
{{translationMap?.get('TICKET.CONFIRM')}}
|
|
67
|
+
</ion-button>
|
|
68
|
+
<ion-button size="small" color="danger" (click)="onClickTicket('close')">
|
|
69
|
+
<ion-icon name="close"></ion-icon>
|
|
70
|
+
{{translationMap?.get('TICKET.CLOSE')}}
|
|
71
|
+
</ion-button>
|
|
72
|
+
</div>
|
|
73
|
+
</ion-col>
|
|
74
|
+
</ion-row>
|
|
75
|
+
|
|
53
76
|
<ion-row id="message-text-area" [style.display]="section==='chat' || section ==='templates' || section ==='copilot'? 'flex': 'none'">
|
|
54
77
|
|
|
55
78
|
<ion-col col-auto style="display: flex;">
|
package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss
CHANGED
|
@@ -183,6 +183,36 @@
|
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
|
|
186
|
+
#ticket{
|
|
187
|
+
text-align: center;
|
|
188
|
+
font-size: 12px;
|
|
189
|
+
|
|
190
|
+
.buttons-container{
|
|
191
|
+
display: flex;
|
|
192
|
+
justify-content: center;
|
|
193
|
+
gap: 10px;
|
|
194
|
+
|
|
195
|
+
ion-button{
|
|
196
|
+
font-size: 12px;
|
|
197
|
+
--padding-top: 4px;
|
|
198
|
+
--padding-bottom: 4px;
|
|
199
|
+
--padding-start: 6px;
|
|
200
|
+
--padding-end: 6px;
|
|
201
|
+
--ripple-color: transparent;
|
|
202
|
+
text-transform: unset;
|
|
203
|
+
height: auto;
|
|
204
|
+
|
|
205
|
+
ion-icon{
|
|
206
|
+
margin-right: 4px;
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
&[name="add"]{
|
|
210
|
+
--background: var(--basic-blue);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
|
|
186
216
|
#fileInput {
|
|
187
217
|
position: absolute;
|
|
188
218
|
opacity: 0;
|