@chat21/chat21-ionic 3.0.60 → 3.0.61-rc11

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 (148) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/README.md +2 -0
  3. package/angular.json +3 -0
  4. package/config.xml +5 -5
  5. package/deploy_pre.sh +10 -10
  6. package/deploy_prod.sh +5 -1
  7. package/env.sample +3 -1
  8. package/package.json +12 -7
  9. package/resources/{Android → android}/icon/drawable-hdpi-icon.png +0 -0
  10. package/resources/{Android → android}/icon/drawable-ldpi-icon.png +0 -0
  11. package/resources/{Android → android}/icon/drawable-mdpi-icon.png +0 -0
  12. package/resources/{Android → android}/icon/drawable-xhdpi-icon.png +0 -0
  13. package/resources/{Android → android}/icon/drawable-xxhdpi-icon.png +0 -0
  14. package/resources/{Android → android}/icon/drawable-xxxhdpi-icon.png +0 -0
  15. package/resources/{Android → android}/icon.png +0 -0
  16. package/resources/{Android → android}/splash/drawable-land-hdpi-screen.png +0 -0
  17. package/resources/{Android → android}/splash/drawable-land-ldpi-screen.png +0 -0
  18. package/resources/{Android → android}/splash/drawable-land-mdpi-screen.png +0 -0
  19. package/resources/{Android → android}/splash/drawable-land-xhdpi-screen.png +0 -0
  20. package/resources/{Android → android}/splash/drawable-land-xxhdpi-screen.png +0 -0
  21. package/resources/{Android → android}/splash/drawable-land-xxxhdpi-screen.png +0 -0
  22. package/resources/{Android → android}/splash/drawable-port-hdpi-screen.png +0 -0
  23. package/resources/{Android → android}/splash/drawable-port-ldpi-screen.png +0 -0
  24. package/resources/{Android → android}/splash/drawable-port-mdpi-screen.png +0 -0
  25. package/resources/{Android → android}/splash/drawable-port-xhdpi-screen.png +0 -0
  26. package/resources/{Android → android}/splash/drawable-port-xxhdpi-screen.png +0 -0
  27. package/resources/{Android → android}/splash/drawable-port-xxxhdpi-screen.png +0 -0
  28. package/resources/{Android → android}/splash.png +0 -0
  29. package/src/app/app-routing.module.ts +10 -0
  30. package/src/app/app.component.html +14 -4
  31. package/src/app/app.component.scss +18 -1
  32. package/src/app/app.component.ts +50 -16
  33. package/src/app/app.module.ts +7 -1
  34. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +7 -2
  35. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +103 -12
  36. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +39 -36
  37. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +5 -1
  38. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +147 -65
  39. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +3 -3
  40. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +12 -2
  41. package/src/app/components/ddp-header/ddp-header.component.html +20 -6
  42. package/src/app/components/ddp-header/ddp-header.component.scss +4 -0
  43. package/src/app/components/ddp-header/ddp-header.component.ts +104 -10
  44. package/src/app/components/project-item/project-item.component.html +8 -7
  45. package/src/app/components/project-item/project-item.component.scss +6 -1
  46. package/src/app/components/project-item/project-item.component.ts +15 -2
  47. package/src/app/components/sidebar/sidebar.component.html +274 -0
  48. package/src/app/components/sidebar/sidebar.component.scss +79 -0
  49. package/src/app/components/sidebar/sidebar.component.spec.ts +24 -0
  50. package/src/app/components/sidebar/sidebar.component.ts +493 -0
  51. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +110 -0
  52. package/src/app/components/sidebar-user-details/sidebar-user-details.component.scss +318 -0
  53. package/src/app/components/sidebar-user-details/sidebar-user-details.component.spec.ts +24 -0
  54. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +486 -0
  55. package/src/app/pages/conversation-detail/conversation-detail.module.ts +2 -1
  56. package/src/app/pages/conversation-detail/conversation-detail.page.html +7 -5
  57. package/src/app/pages/conversation-detail/conversation-detail.page.ts +1285 -790
  58. package/src/app/pages/conversations-list/conversations-list.module.ts +2 -1
  59. package/src/app/pages/conversations-list/conversations-list.page.html +18 -9
  60. package/src/app/pages/conversations-list/conversations-list.page.scss +9 -1
  61. package/src/app/pages/conversations-list/conversations-list.page.ts +753 -428
  62. package/src/app/pages/create-requester/create-requester-routing.module.ts +17 -0
  63. package/src/app/pages/create-requester/create-requester.module.ts +28 -0
  64. package/src/app/pages/create-requester/create-requester.page.html +67 -0
  65. package/src/app/pages/create-requester/create-requester.page.scss +30 -0
  66. package/src/app/pages/create-requester/create-requester.page.spec.ts +24 -0
  67. package/src/app/pages/create-requester/create-requester.page.ts +137 -0
  68. package/src/app/pages/create-ticket/create-ticket-routing.module.ts +17 -0
  69. package/src/app/pages/create-ticket/create-ticket.module.ts +28 -0
  70. package/src/app/pages/create-ticket/create-ticket.page.html +171 -0
  71. package/src/app/pages/create-ticket/create-ticket.page.scss +52 -0
  72. package/src/app/pages/create-ticket/create-ticket.page.spec.ts +24 -0
  73. package/src/app/pages/create-ticket/create-ticket.page.ts +423 -0
  74. package/src/app/pages/loader-preview/loader-preview.page.ts +226 -166
  75. package/src/app/pages/profile-info/profile-info.page.html +2 -2
  76. package/src/app/pages/profile-info/profile-info.page.scss +1 -1
  77. package/src/app/pages/profile-info/profile-info.page.ts +23 -21
  78. package/src/app/services/tiledesk/tiledesk.service.ts +181 -0
  79. package/src/app/shared/shared.module.ts +13 -0
  80. package/src/app/utils/scrollbar-theme.directive.ts +58 -24
  81. package/src/assets/i18n/de.json +55 -13
  82. package/src/assets/i18n/en.json +48 -6
  83. package/src/assets/i18n/es.json +47 -5
  84. package/src/assets/i18n/fr.json +50 -8
  85. package/src/assets/i18n/it.json +47 -5
  86. package/src/assets/i18n/pt.json +47 -5
  87. package/src/assets/i18n/ru.json +48 -6
  88. package/src/assets/i18n/sr.json +251 -0
  89. package/src/assets/i18n/tr.json +47 -5
  90. package/src/assets/images/default-avatar-x-select.png +0 -0
  91. package/src/assets/images/language_flag/ar.png +0 -0
  92. package/src/assets/images/language_flag/bg.png +0 -0
  93. package/src/assets/images/language_flag/ca.png +0 -0
  94. package/src/assets/images/language_flag/cs.png +0 -0
  95. package/src/assets/images/language_flag/da.png +0 -0
  96. package/src/assets/images/language_flag/de.png +0 -0
  97. package/src/assets/images/language_flag/el.png +0 -0
  98. package/src/assets/images/language_flag/en.png +0 -0
  99. package/src/assets/images/language_flag/es.png +0 -0
  100. package/src/assets/images/language_flag/fa.png +0 -0
  101. package/src/assets/images/language_flag/fi.png +0 -0
  102. package/src/assets/images/language_flag/fr.png +0 -0
  103. package/src/assets/images/language_flag/he.png +0 -0
  104. package/src/assets/images/language_flag/hi.png +0 -0
  105. package/src/assets/images/language_flag/hr.png +0 -0
  106. package/src/assets/images/language_flag/hu.png +0 -0
  107. package/src/assets/images/language_flag/id.png +0 -0
  108. package/src/assets/images/language_flag/it.png +0 -0
  109. package/src/assets/images/language_flag/ja.png +0 -0
  110. package/src/assets/images/language_flag/ko.png +0 -0
  111. package/src/assets/images/language_flag/ml-IN.png +0 -0
  112. package/src/assets/images/language_flag/ne-NP.png +0 -0
  113. package/src/assets/images/language_flag/nl.png +0 -0
  114. package/src/assets/images/language_flag/no.png +0 -0
  115. package/src/assets/images/language_flag/pl.png +0 -0
  116. package/src/assets/images/language_flag/pt-BR.png +0 -0
  117. package/src/assets/images/language_flag/pt.png +0 -0
  118. package/src/assets/images/language_flag/ro.png +0 -0
  119. package/src/assets/images/language_flag/ru.png +0 -0
  120. package/src/assets/images/language_flag/sk.png +0 -0
  121. package/src/assets/images/language_flag/sl.png +0 -0
  122. package/src/assets/images/language_flag/sr.png +0 -0
  123. package/src/assets/images/language_flag/sv-SE.png +0 -0
  124. package/src/assets/images/language_flag/ta.png +0 -0
  125. package/src/assets/images/language_flag/th.png +0 -0
  126. package/src/assets/images/language_flag/tr.png +0 -0
  127. package/src/assets/images/language_flag/uk.png +0 -0
  128. package/src/assets/images/language_flag/vi.png +0 -0
  129. package/src/assets/images/language_flag/zh-CN.png +0 -0
  130. package/src/assets/images/language_flag/zh-TW.png +0 -0
  131. package/src/assets/images/no_image_user.png +0 -0
  132. package/src/assets/images/priority_icons/high.svg +3 -0
  133. package/src/assets/images/priority_icons/high_v2.svg +14 -0
  134. package/src/assets/images/priority_icons/low.svg +10 -0
  135. package/src/assets/images/priority_icons/low_v2.svg +14 -0
  136. package/src/assets/images/priority_icons/medium.svg +16 -0
  137. package/src/assets/images/priority_icons/medium_v2.svg +11 -0
  138. package/src/assets/images/priority_icons/urgent.svg +4 -0
  139. package/src/assets/images/priority_icons/urgent_v2.svg +16 -0
  140. package/src/assets/tiledesk-solo-logo.png +0 -0
  141. package/src/chat-config-pre-test.json +3 -1
  142. package/src/chat-config-template.json +3 -1
  143. package/src/chat-config.json +4 -2
  144. package/src/chat21-core/utils/constants.ts +6 -1
  145. package/src/global.scss +397 -3
  146. package/src/index.html +7 -0
  147. package/publish_pre.sh +0 -33
  148. package/publish_prod.sh +0 -33
@@ -54,6 +54,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
54
54
  @Output() hasClickedOpenCannedResponses = new EventEmitter<boolean>();
55
55
  @Output() eventSendMessage = new EventEmitter<object>();
56
56
  @Output() onPresentModalScrollToBottom = new EventEmitter<boolean>();
57
+ @Input() disableTextarea: boolean;
57
58
 
58
59
  public conversationEnabled = false;
59
60
  public messageString: string;
@@ -69,6 +70,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
69
70
  public IS_SUPPORT_GROUP_CONVERSATION: boolean;
70
71
 
71
72
  TYPE_MSG_TEXT = TYPE_MSG_TEXT;
73
+ msg : string
72
74
 
73
75
  tooltipOptions = {
74
76
  'show-delay': 500,
@@ -123,6 +125,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
123
125
  // this.SHORTER_TEXAREA_PLACEHOLDER = this.translationMap.get('LABEL_ENTER_MSG_SHORTER')
124
126
 
125
127
  this.TEXAREA_PLACEHOLDER = this.translationMap.get('LABEL_ENTER_MSG_SHORT')
128
+
126
129
  }
127
130
 
128
131
  if (this.conversationWith.startsWith("support-group")) {
@@ -130,7 +133,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
130
133
  } else {
131
134
  this.IS_SUPPORT_GROUP_CONVERSATION = false
132
135
  }
133
-
136
+ this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges disableTextarea ', this.disableTextarea)
134
137
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges DROP EVENT ", this.dropEvent);
135
138
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges tagsCannedFilter ", this.tagsCannedFilter);
136
139
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] ngOnChanges areVisibleCAR; ", this.areVisibleCAR);
@@ -269,6 +272,8 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
269
272
 
270
273
  let content = event.clipboardData.getData('text/plain');
271
274
  this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] onPaste content ", content);
275
+ this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] onPaste this.messageString ", this.messageString);
276
+ this.msg = this.messageString
272
277
  setTimeout(() => {
273
278
  this.messageString = "";
274
279
  }, 100);
@@ -301,6 +306,11 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
301
306
 
302
307
  onFileSelected(e: any) {
303
308
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] - onFileSelected event', e);
309
+ this.logger.log("[CONVS-DETAIL][MSG-TEXT-AREA] - onFileSelected this.messageString ", this.messageString);
310
+ this.msg = this.messageString
311
+ setTimeout(() => {
312
+ this.messageString = "";
313
+ }, 100);
304
314
  this.presentModal(e);
305
315
 
306
316
  }
@@ -339,7 +349,7 @@ export class MessageTextAreaComponent implements OnInit, AfterViewInit, OnChange
339
349
  }
340
350
  // this.logger.log('presentModal e.target.files.length', e.target.files.length);
341
351
 
342
- const attributes = { files: dataFiles, enableBackdropDismiss: false };
352
+ const attributes = { files: dataFiles, enableBackdropDismiss: false , msg: this.msg};
343
353
  this.logger.log('[CONVS-DETAIL][MSG-TEXT-AREA] attributes', attributes);
344
354
  const modal: HTMLIonModalElement =
345
355
  await this.modalController.create({
@@ -1,24 +1,38 @@
1
+ <ion-toolbar style="height:60px" [ngClass]="{'bottom-border-on-mobile':IS_ON_MOBILE_DEVICE === true }">
1
2
 
2
- <ion-toolbar>
3
-
4
- <ion-buttons slot="start">
3
+ <ion-buttons *ngIf="IS_ON_MOBILE_DEVICE === true || supportMode === false" slot="start" style="height:60px">
5
4
  <ion-button ion-button icon-only fill="clear" (click)="onOpenProfileInfo($event)">
6
5
  <ion-icon slot="icon-only" name="reorder-three-outline"></ion-icon>
7
6
  </ion-button>
8
7
  </ion-buttons>
9
8
 
10
9
  <ion-title>
11
- <img src="assets/chat21-logo.svg" class="header-logo" alt="header-logo">
10
+ <!-- <img src="assets/chat21-logo.svg" class="header-logo" alt="header-logo"> -->
12
11
  <div *ngIf="numberOpenConv > 0" class="number-open-conv">({{numberOpenConv}})</div>
13
12
  </ion-title>
14
13
 
15
14
  <ion-buttons slot="end">
16
15
 
17
- <ion-button *ngIf="supportMode" ion-button fill="clear" (click)="onOpenContactsDirectory($event)">
16
+ <ion-button ion-button fill="clear" (click)="presentCreateTicketModal()"
17
+ tooltip="{{translationMap?.get('CreateTicket')}}" [options]="tooltipOptions" placement="bottom">
18
+ <ion-icon slot="icon-only" name="ticket-outline"></ion-icon>
19
+ </ion-button>
20
+
21
+ <ion-button *ngIf="archived_btn" ion-button fill="clear" (click)="onClickArchivedConversation()"
22
+ tooltip="{{translationMap?.get('ViewArchivedConversations')}}" [options]="tooltipOptions" placement="bottom">
23
+ <ion-icon slot="icon-only" name="file-tray-full-outline"></ion-icon>
24
+ <!-- <ion-icon name="file-tray-stacked-outline"></ion-icon> -->
25
+ <!-- <ion-icon name="file-tray-full-outline"></ion-icon> -->
26
+ </ion-button>
27
+
28
+ <ion-button *ngIf="writeto_btn" ion-button fill="clear" (click)="onOpenContactsDirectory($event)"
29
+ tooltip="{{translationMap?.get('ViewContactsList')}}" [options]="tooltipOptions" placement="bottom">
18
30
  <ion-icon slot="icon-only" name="create-outline"></ion-icon>
31
+ <!-- <ion-icon slot="icon-only" name="people-outline"></ion-icon> -->
32
+
19
33
  </ion-button>
20
34
 
21
- <!-- <button ion-button icon-only (click)="onOpenArchivedConversationsPage()">
35
+ <!-- <button ion-button icon-only (click)="onOpenArchivedConversationsPage()">
22
36
  <span class="material-icons">history</span>
23
37
  </button>
24
38
 
@@ -23,4 +23,8 @@ ion-title img {
23
23
 
24
24
  .header-logo {
25
25
  margin-top: 5px;
26
+ }
27
+
28
+ .bottom-border-on-mobile {
29
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05);
26
30
  }
@@ -1,18 +1,77 @@
1
- import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';
2
-
1
+ import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'
2
+ import { ModalController } from '@ionic/angular'
3
+ import { EventsService } from 'src/app/services/events-service'
4
+ import { CreateTicketPage } from 'src/app/pages/create-ticket/create-ticket.page'
5
+ import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service'
3
6
  @Component({
4
7
  selector: 'app-ddp-header',
5
8
  templateUrl: './ddp-header.component.html',
6
9
  styleUrls: ['./ddp-header.component.scss'],
7
10
  })
8
11
  export class DdpHeaderComponent implements OnInit {
9
- @Input() numberOpenConv: number;
10
- @Input() supportMode: boolean;
11
- @Output() openContactsDirectory = new EventEmitter();
12
- @Output() openProfileInfo = new EventEmitter();
13
-
12
+ @Input() numberOpenConv: number
13
+ @Input() supportMode: boolean
14
+ @Input() archived_btn: boolean
15
+ @Input() writeto_btn: boolean
16
+ @Output() openContactsDirectory = new EventEmitter()
17
+ @Output() openProfileInfo = new EventEmitter()
18
+ IS_ON_MOBILE_DEVICE: boolean
19
+ createTicketModal = null
20
+ public translationMap: Map<string, string>;
21
+ tooltipOptions = {
22
+ 'show-delay': 0,
23
+ 'tooltip-class': 'chat-tooltip',
24
+ 'theme': 'light',
25
+ 'shadow': false,
26
+ 'hide-delay-mobile': 0,
27
+ 'hideDelayAfterClick': 3000,
28
+ 'hide-delay': 0
29
+ };
14
30
  constructor(
15
- ) { }
31
+ public events: EventsService,
32
+ public modalController: ModalController,
33
+ private translateService: CustomTranslateService,
34
+ ) {
35
+ this.isOnMobileDevice();
36
+ this.translations();
37
+ // this.listenToCloseCreateTicketModal() // published from create ticket page
38
+ }
39
+
40
+ public translations() {
41
+ const keys = [
42
+ 'CreateTicket',
43
+ 'ViewArchivedConversations',
44
+ 'ViewContactsList'
45
+ ];
46
+ this.translationMap = this.translateService.translateLanguage(keys);
47
+ }
48
+
49
+ // listenToCloseCreateTicketModal() {
50
+ // this.events.subscribe('closeModalCreateTicket', (bool) => {
51
+ // console.log('[HEADER-CONV] closeModalCreateTicket ', bool)
52
+ // if (bool === true) {
53
+ // this.closeCreateTicketModal()
54
+
55
+ // }
56
+ // })
57
+ // }
58
+
59
+ // closeCreateTicketModal() {
60
+ // if (this.createTicketModal) {
61
+ // this.createTicketModal.dismiss().then(() => {
62
+ // this.createTicketModal = null;
63
+ // });
64
+ // }
65
+ // }
66
+
67
+ isOnMobileDevice() {
68
+ this.IS_ON_MOBILE_DEVICE = false
69
+ if (/Android|iPhone/i.test(window.navigator.userAgent)) {
70
+ this.IS_ON_MOBILE_DEVICE = true
71
+ }
72
+ // console.log('[DDP-HEADER] IS_ON_MOBILE_DEVICE', this.IS_ON_MOBILE_DEVICE)
73
+ return this.IS_ON_MOBILE_DEVICE
74
+ }
16
75
 
17
76
  ngOnInit() {
18
77
  // console.log('DDP HEADER SUPPORT MODE ', this.supportMode)
@@ -21,13 +80,48 @@ export class DdpHeaderComponent implements OnInit {
21
80
  // START @Output() //
22
81
  /** */
23
82
  onOpenProfileInfo(e: any) {
24
- this.openProfileInfo.emit(e);
83
+ this.openProfileInfo.emit(e)
25
84
  }
26
85
 
27
86
  /** */
28
87
  onOpenContactsDirectory(e: any) {
29
- this.openContactsDirectory.emit(e);
88
+ this.openContactsDirectory.emit(e)
30
89
  }
31
90
  // END @Output() //
32
91
 
92
+ onClickArchivedConversation() {
93
+ this.events.publish('profileInfoButtonClick:changed', 'displayArchived')
94
+ }
95
+
96
+ // PRESENT MODAL CREATE TICKET
97
+ // async presentCreateTicketModal(): Promise<any>{
98
+
99
+ // // const attributes = { enableBackdropDismiss: false };
100
+ // const modal: HTMLIonModalElement =
101
+ // await this.modalController.create({
102
+ // component: CreateTicketPage,
103
+ // // componentProps: attributes,
104
+ // swipeToClose: false,
105
+ // backdropDismiss: false
106
+ // });
107
+ // modal.onDidDismiss().then((detail: any) => {
108
+ // console.log('[DDP-HEADER] ', detail.data);
109
+ // });
110
+ // return await modal.present();
111
+ // }
112
+
113
+ async presentCreateTicketModal() {
114
+ // const attributes = { enableBackdropDismiss: false };
115
+ const modal = await this.modalController.create({
116
+ component: CreateTicketPage,
117
+ // componentProps: attributes,
118
+ swipeToClose: false,
119
+ backdropDismiss: false,
120
+ })
121
+ modal.onDidDismiss().then((detail: any) => {
122
+ // console.log('[DDP-HEADER] ', detail.data)
123
+ })
124
+ modal.present()
125
+ this.createTicketModal = modal
126
+ }
33
127
  }
@@ -23,7 +23,7 @@
23
23
  </g>
24
24
  </svg>
25
25
  </div>
26
- <div class="unassigned-notifications-badge">
26
+ <div class="unassigned-notifications-badge" *ngIf="unservedRequestCount > 0">
27
27
  <!-- || currentUserRequestCount > 0 -->
28
28
  <!-- <span *ngIf="unservedRequestCount > 0 "> -->
29
29
  <!-- + currentUserRequestCount -->
@@ -48,7 +48,7 @@
48
48
 
49
49
 
50
50
  <div class="flex-child-right">
51
- <div class="project-name-project-for-panel" [tooltip]="conversationsInQueueOnProjectName"
51
+ <div class="project-name-project-for-panel" [ngClass]="{'project-name-project-for-panel-on-desktop': IS_ON_MOBILE_DEVICE === false}" [tooltip]="conversationsInQueueOnProjectName"
52
52
  [options]="tooltipOptions" placement="top" content-type="template" (click)="openUnservedConvs()">
53
53
  <div class="project---name"> {{ project?.id_project?.name }} </div>
54
54
  </div>
@@ -87,7 +87,9 @@
87
87
  [ngClass]="{'online-text-color' : project?.ws_projct_user_available === true, 'offline-text-color' : project?.ws_projct_user_available === false}">
88
88
  {{translationMap?.get('Unavailable')}}
89
89
  </span>
90
- <div class="project-item--isBusy-icon-wpr" *ngIf="project?.ws_projct_user_isBusy === true">
90
+
91
+ <div class="project-item--isBusy-icon-wpr" *ngIf="project?.ws_projct_user_isBusy === true" tooltip="{{translationMap?.get('Busy')}}"
92
+ [options]="tooltipOptions" placement="top" >
91
93
  <!-- <span class="material-icons project-item--isBusy-icon">
92
94
  access_time
93
95
  </span> -->
@@ -102,14 +104,14 @@
102
104
  </g>
103
105
  </svg>
104
106
  </div>
105
- <span *ngIf="project?.ws_projct_user_isBusy === true"
107
+ <!-- <span *ngIf="project?.ws_projct_user_isBusy === true"
106
108
  class="project-item--isBusy-busy-text text-pulse-animation">
107
109
  {{translationMap?.get('Busy')}}
108
- </span>
110
+ </span> -->
109
111
  </div>
110
112
  </div>
111
113
 
112
- <div class="flex-child-view-all-convs">
114
+ <div *ngIf="IS_ON_MOBILE_DEVICE === true" class="flex-child-view-all-convs">
113
115
  <div class="view-all-convs-icon-wpr" style="cursor: pointer;" [tooltip]="viewAllConvs"
114
116
  [options]="tooltipOptions" placement="top" content-type="template">
115
117
 
@@ -153,7 +155,6 @@
153
155
  </div>
154
156
  <ng-template #viewAllConvs>
155
157
  <span>
156
-
157
158
  {{translationMap?.get('CHANGE_PINNED_PROJECT') }}</span>
158
159
  </ng-template>
159
160
  </div>
@@ -311,7 +311,7 @@
311
311
  color: #1e2129;
312
312
  font-weight: 400;
313
313
  margin-left: 10px;
314
- width: 185px !important;
314
+ width: 185px ;
315
315
  // width: 220px !important;
316
316
  white-space: nowrap !important;
317
317
  overflow: hidden !important;
@@ -323,6 +323,11 @@
323
323
  cursor: pointer;
324
324
  }
325
325
 
326
+
327
+ .project-name-project-for-panel-on-desktop {
328
+ width: 217px
329
+ }
330
+
326
331
  // .project-name-project-for-panel:hover span {
327
332
  // color: rgba(0, 0, 0, 0.35);
328
333
  // // display: none;
@@ -17,6 +17,8 @@ import { AppConfigProvider } from 'src/app/services/app-config';
17
17
  styleUrls: ['./project-item.component.scss'],
18
18
  })
19
19
  export class ProjectItemComponent implements OnInit {
20
+ private logger: LoggerService = LoggerInstance.getInstance();
21
+
20
22
  @Output() projectIdEvent = new EventEmitter<string>()
21
23
  @Output() openUnsevedConvsEvent = new EventEmitter<any>()
22
24
 
@@ -29,7 +31,7 @@ export class ProjectItemComponent implements OnInit {
29
31
  ROLE_IS_AGENT: boolean;
30
32
  currentUserId: string;
31
33
  public translationMap: Map<string, string>;
32
- private logger: LoggerService = LoggerInstance.getInstance();
34
+
33
35
  window_width_is_60: boolean;
34
36
  newInnerWidth: any;
35
37
  avaialble_status_for_tooltip: string;
@@ -42,7 +44,7 @@ export class ProjectItemComponent implements OnInit {
42
44
  'hideDelayAfterClick': 3000,
43
45
  'hide-delay': 200
44
46
  };
45
-
47
+ IS_ON_MOBILE_DEVICE: boolean;
46
48
  constructor(
47
49
  public wsService: WebsocketService,
48
50
  public appStorageService: AppStorageService,
@@ -59,9 +61,20 @@ export class ProjectItemComponent implements OnInit {
59
61
  this.translations();
60
62
  this.listenToPostMsgs();
61
63
  this.onInitWindowWidth();
64
+
65
+ this.isOnMobileDevice()
62
66
  // console.log('[PROJECT-ITEM] - on INIT')
63
67
  }
64
68
 
69
+ isOnMobileDevice() {
70
+ this.IS_ON_MOBILE_DEVICE = false;
71
+ if (/Android|iPhone/i.test(window.navigator.userAgent)) {
72
+ this.IS_ON_MOBILE_DEVICE = true;
73
+ }
74
+ // console.log('[PROJECT-ITEM] IS_ON_MOBILE_DEVICE', this.IS_ON_MOBILE_DEVICE)
75
+ return this.IS_ON_MOBILE_DEVICE;
76
+ }
77
+
65
78
  openUnservedConvs() {
66
79
  this.openUnsevedConvsEvent.emit('notificationsorprjctbtn')
67
80
  }
@@ -0,0 +1,274 @@
1
+ <!-- *ngIf="project" -->
2
+ <div class="logo">
3
+ <!-- <a class="logo-img-wpr" [ngClass]="{'small-sidebar-logo-img-wpr' : SIDEBAR_IS_SMALL === true }">
4
+ <div class="logo-img" (click)="goToHome()" style="cursor: pointer;">
5
+ <img class="small-sidebar__logo" src="assets/tiledesk-solo-logo.png" />
6
+ </div>
7
+ </a> -->
8
+
9
+
10
+
11
+ <div id="sidebaravatar-img-wpr" class="sidebar-avatar-container tiledesk-nav-avatar" (click)="openUserDetailSidePanel()"
12
+ style="cursor: pointer;" [ngClass]="{'small-sidebar-avatar' : SIDEBAR_IS_SMALL === true, 'small-sidebar-avatar-with-avatar': SIDEBAR_IS_SMALL === true && !USER_PHOTO_PROFILE_EXIST}">
13
+
14
+ <img *ngIf="USER_PHOTO_PROFILE_EXIST" id="sidebaravatar-img" class="sidebar-avatar" [src]="photo_profile_URL"
15
+ onerror="this.src='assets/images/no_image_user.png'" />
16
+
17
+ <div *ngIf="!USER_PHOTO_PROFILE_EXIST" id="sidebaravatar-no-img" class="sidebar-avatar"
18
+ [ngStyle]="{'background': 'linear-gradient(rgb(255,255,255) -125%,' + currentUser?.fillColour + ')'}">
19
+ <span id="sidebaravatar-altenative-user-avatar" class="sidebar-altenative-user-avatar">
20
+ {{ currentUser?.fullname_initial }}
21
+ </span>
22
+ </div>
23
+
24
+ <!-- matTooltipClass="custom-mat-tooltip" matTooltip="{{ tooltip_text_for_availability_status}}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" -->
25
+ <!-- (click)="changeAvailabilityState(IS_AVAILABLE = !IS_AVAILABLE)" -->
26
+ <div id="sidebaravatar-status-icon" class="status-icon"
27
+ [ngClass]="{'is-user-online' : IS_AVAILABLE === true, 'is-user-offline' : IS_AVAILABLE === false, 'small-sidebar-status-icon' : SIDEBAR_IS_SMALL === true }">
28
+ </div>
29
+
30
+ <!-- matTooltipClass="custom-mat-tooltip" matTooltip="{{ 'Busy' | translate }}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" -->
31
+ <div id="sidebaravatar-isbusy-icon-wpr" class="sidebar--isBusy-icon-wpr" [ngClass]="{'sidebar--isBusy-icon-wpr-with-image': USER_PHOTO_PROFILE_EXIST}" *ngIf="IS_BUSY === true"
32
+ style="cursor:pointer">
33
+ <span id="sidebaravatar-isbusy-icon" class="material-icons sidebar-is-busy-icon">
34
+ access_time
35
+ </span>
36
+ </div>
37
+
38
+ </div>
39
+ </div>
40
+
41
+ <div class="sidebar-wrapper">
42
+
43
+ <div class="nav-container">
44
+ <!-- [ngClass]="{'is-desktop-menu' : IS_MOBILE_MENU === false, 'is-mobile-menu' : IS_MOBILE_MENU === true }" -->
45
+ <!-- padding-bottom: 65px; -->
46
+ <ul style="margin-top: 0px;" class="nav">
47
+
48
+ <!-- ------------------------------------------- -->
49
+ <!-- CHAT -->
50
+ <!-- ------------------------------------------- -->
51
+ <li class="item-active" style="cursor: unset;" matTooltipClass="custom-mat-tooltip" matTooltip="Chat"
52
+ #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center; ">
53
+ <a class="customAncor" style="margin-right: 0px !important">
54
+ <!-- <i class="material-icons sidebar-icons">chat</i> -->
55
+ <span id="openchat-span" style="position: relative;top: 10px;vertical-align: middle;">
56
+ <svg id="openchat-svg" version="1.1" xmlns="http://www.w3.org/2000/svg"
57
+ xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 23 21"
58
+ style="enable-background:new 0 0 23 21;" xml:space="preserve"
59
+ style="width:20px;height:20px; vertical-align: middle;">
60
+ <style type="text/css">
61
+ .chat21-icon {
62
+ fill: #fff;
63
+ }
64
+ </style>
65
+ <path id="openchat-path" class="chat21-icon" d="M11.5,0.5C5.8,0.5,1.3,5,1.3,10.5c0,1.8,0.5,3.5,1.4,5l-0.8,4.3l4.4-0.8c1.5,0.9,3.3,1.4,5.3,1.4
66
+ c5.7,0,10.2-4.5,10.2-10S17.2,0.5,11.5,0.5z M11.5,17.2c-2.5,0-4.6-1.3-5.7-2.6c0.6-0.2,0.8-0.8,1.4-1c0.7,0.9,2.5,2.1,4.4,2.1
67
+ c1.9,0,3.6-1.2,4.2-2.1c0.5,0.2,0.9,0.6,1.4,0.9C16.1,15.8,14,17.2,11.5,17.2z" />
68
+ </svg>
69
+ </span>
70
+ </a>
71
+ </li>
72
+
73
+ <!-- ------------------------------------------- -->
74
+ <!-- HOME -->
75
+ <!-- ------------------------------------------- -->
76
+ <li (click)="goToHome()" matTooltip="Home" #tooltip="matTooltip" matTooltipPosition='right'
77
+ matTooltipHideDelay="100" matTooltipClass="custom-mat-tooltip">
78
+ <a class="customAncor">
79
+ <i class="material-icons sidebar-icons">
80
+ home
81
+ </i>
82
+ </a>
83
+ </li>
84
+
85
+
86
+ <!-- ---------------------------------- -->
87
+ <!-- Bot -->
88
+ <!-- ---------------------------------- -->
89
+ <ng-container *ngIf="USER_ROLE !== 'agent'">
90
+ <li (click)="goToBots()" id="bot-anchor-wpr" matTooltipClass="custom-mat-tooltip" matTooltip="Bots"
91
+ #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
92
+ <a id="bot-anchor" #botbtn class="customAncor" style="height: 40px;margin-right: 0px !important;">
93
+ <span class="bot-icon-wpr">
94
+ <svg version="1.1" id="Objects" xmlns="http://www.w3.org/2000/svg"
95
+ xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 30 30"
96
+ style="enable-background:new 0 0 30 30;" xml:space="preserve" style="width: 25px;height: 25px;margin-top: 6px;">
97
+ <g>
98
+ <g>
99
+ <path class="chat-bot-icon-st0" d="M24.6,12.6c-0.1,0-0.2,0-0.3,0c-1.6-2.9-4.5-5.8-9.2-5.8c-4.7,0-7.6,2.9-9.2,5.8c-0.2,0-0.4-0.1-0.6-0.1
100
+ c-2,0-3.5,2.3-3.5,5c0,2.8,1.6,5,3.5,5c0.1,0,0.3,0,0.4,0c2.3,3.6,7,3.9,9.4,3.9c2.3,0,6.9-0.5,9.2-3.9c0.1,0,0.1,0,0.2,0
101
+ c2,0,3.5-2.3,3.5-5C28.1,14.8,26.6,12.6,24.6,12.6z M22,21.1c0,0-7.8,2.3-14.3-0.1c0,0-0.8-4.1-0.5-7.2c0,0,8.1-3.2,15.6,0.3
102
+ C22.8,14.1,23.3,19.1,22,21.1z" />
103
+ <ellipse class="chat-bot-icon-st0" cx="11.9" cy="17.4" rx="0.7" ry="1.4" />
104
+ <ellipse class="chat-bot-icon-st0" cx="18.1" cy="17.4" rx="0.7" ry="1.4" />
105
+ <path class="chat-bot-icon-st0" d="M14.5,5.3v1.1h1V5.3c0.3-0.2,0.5-0.5,0.5-0.8c0-0.5-0.4-0.9-1-0.9c-0.5,0-0.9,0.4-0.9,0.9
106
+ C14.1,4.8,14.2,5.1,14.5,5.3z" />
107
+ </g>
108
+ <rect class="chat-bot-icon-st1" width="30" height="30" />
109
+ </g>
110
+ </svg>
111
+ </span>
112
+ </a>
113
+ </li>
114
+ </ng-container>
115
+
116
+ <!-- ------------------------------------------- -->
117
+ <!-- Conversations (VISITORS) {{ conversations_lbl }} -->
118
+ <!-- ------------------------------------------- -->
119
+ <ng-container *ngIf="USER_ROLE !== 'agent'">
120
+ <li (click)="goToConversations()" matTooltipClass="custom-mat-tooltip" matTooltip="Monitor"
121
+ #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
122
+ <a class="customAncor" style="height: 40px;margin-right: 0px !important;">
123
+ <!-- <i class="material-icons sidebar-icons">forum</i> -->
124
+ <span class="realtime-icon-wpr" >
125
+
126
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
127
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" style="width: 30px;height: 30px;margin-top: 6px;">
128
+
129
+ <path class="realtime-icon-st3" d="M17.9,11.6l-1.4,1.9l-3.2-5.6l-1-2l-0.2,0.2l-3.7,6.4l-3-4.8L2.7,9.9v2.4l2.4-1.8L9,16.2l3.3-6.2l4,6.7l2.7-3.3
130
+ l0.9,0c0.5-0.7,1-1.4,1.4-2L17.9,11.6z"/>
131
+ </svg>
132
+ </span>
133
+
134
+ </a>
135
+ </li>
136
+ </ng-container>
137
+
138
+ <!-- ------------------------------------------- -->
139
+ <!-- CONTACTS (LEADS) -->
140
+ <!-- ------------------------------------------- -->
141
+ <li (click)="goToContacts()" matTooltipClass="custom-mat-tooltip" matTooltip="{{ contacts_lbl }}"
142
+ #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
143
+ <a class="customAncor">
144
+ <i class="material-icons sidebar-icons">contacts</i>
145
+ </a>
146
+ </li>
147
+
148
+ <!-- ------------------------------------------- -->
149
+ <!-- APPS -->
150
+ <!-- ------------------------------------------- -->
151
+ <ng-container *ngIf="isVisibleAPP && USER_ROLE !== 'agent'">
152
+ <li (click)="goToAppStore()" matTooltipClass="custom-mat-tooltip" matTooltip="{{ apps_lbl }}"
153
+ #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
154
+ <a class="customAncor" style="margin-right: 0px !important;">
155
+ <!-- <i class="material-icons sidebar-icons">apps</i> -->
156
+ <!-- <i class="material-icons sidebar-icons">dashboard_customize</i> -->
157
+ <span class="dashboard-customize-icon-wpr">
158
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
159
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" style="width: 20px;height: 20px;margin-top: 9px;">
160
+ <path class="dashboard_customize-st0" d="M0,0h24v24H0V0z"/>
161
+ <path class="dashboard_customize-st1" d="M3,3h8v8H3V3z M13,3h8v8h-8V3z M3,13h8v8H3V13z M18,13h-2v3h-3v2h3v3h2v-3h3v-2h-3V13z"/>
162
+ </svg>
163
+ </span>
164
+ </a>
165
+ </li>
166
+ </ng-container>
167
+
168
+ <!-- ------------------------------------------- -->
169
+ <!-- ANALYTICS -->
170
+ <!-- ------------------------------------------- -->
171
+ <ng-container *ngIf="isVisibleANA && USER_ROLE !== 'agent'">
172
+ <li (click)="goToAnalytics()" matTooltipClass="custom-mat-tooltip" matTooltip="{{ analytics_lbl }}"
173
+ #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
174
+ <a class="customAncor" style="margin-right: 0px !important;">
175
+ <!-- <i class="material-icons sidebar-icons">trending_up</i> -->
176
+ <!-- <i class="material-icons sidebar-icons"> analytics </i> -->
177
+ <!-- <i class="material-icons sidebar-icons"> bar_chart </i> -->
178
+ <span class="bar-chart-icon-wpr">
179
+ <svg version="1.1" id="Livello_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
180
+ viewBox="0 0 24 24" style="enable-background:new 0 0 24 24;" xml:space="preserve" style="width: 20px;height: 20px;margin-top: 9px;">
181
+ <path class="bar-chart-icon-st0" d="M0,0h24v24H0V0z"/>
182
+ <path class="bar-chart-icon-st1" d="M5,9.2h3V19H5V9.2z M10.6,5h2.8v14h-2.8V5z M16.2,13H19v6h-2.8V13z"/>
183
+ </svg>
184
+ </span>
185
+ </a>
186
+ </li>
187
+ </ng-container>
188
+
189
+ <!-- ------------------------------------------- -->
190
+ <!-- ACTIVITIES -->
191
+ <!-- ------------------------------------------- -->
192
+ <ng-container *ngIf="isVisibleACT">
193
+ <li *ngIf="USER_ROLE !== 'agent'" (click)="goToActivities()" matTooltipClass="custom-mat-tooltip"
194
+ matTooltip="{{ activities_lbl }}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
195
+ <a class="customAncor">
196
+ <i class="material-icons sidebar-icons">assignment</i>
197
+ </a>
198
+ </li>
199
+ </ng-container>
200
+
201
+
202
+ <!-- ------------------------------------------- -->
203
+ <!-- REQUESTS HISTORY -->
204
+ <!-- ------------------------------------------- -->
205
+ <li (click)="goToHistory()" matTooltipClass="custom-mat-tooltip" matTooltip="{{ history_lbl }}"
206
+ #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
207
+ <a class="customAncor">
208
+ <i class="material-icons sidebar-icons">history</i>
209
+ </a>
210
+ </li>
211
+
212
+ <!-- ------------------------------------------- -->
213
+ <!-- SETTINGS -->
214
+ <!-- ------------------------------------------- -->
215
+ <li *ngIf="USER_ROLE !== 'agent'" (click)="goToSettings_CannedResponses()" matTooltipClass="custom-mat-tooltip"
216
+ matTooltip="{{ settings_lbl }}" #tooltip="matTooltip" matTooltipPosition='right' matTooltipHideDelay="100" style="text-align: center;">
217
+ <a class="customAncor">
218
+ <i class="material-icons sidebar-icons">settings</i>
219
+ </a>
220
+ </li>
221
+
222
+
223
+ <!-- [_prjct_profile_name]="_prjct_profile_name" [plan_subscription_is_active]="plan_subscription_is_active"
224
+ [plan_name]="plan_name"
225
+ [plan_type]="plan_type"
226
+ [isVisiblePAY]="isVisiblePAY"
227
+ [prjct_name]="prjct_name" -->
228
+ <!-- HAS_CLICKED_OPEN_USER_DETAIL {{ HAS_CLICKED_OPEN_USER_DETAIL }} -->
229
+ <!-- [HAS_CLICKED_OPEN_USER_DETAIL]='HAS_CLICKED_OPEN_USER_DETAIL' -->
230
+ <!-- tabindex="-1" style="z-index: 20001;" -->
231
+
232
+
233
+ <!-- <app-sidebar-user-details
234
+ (onCloseUserDetailsSidebar)='onCloseUserDetailsSidebar($event)'>
235
+ </app-sidebar-user-details> -->
236
+
237
+
238
+
239
+
240
+
241
+
242
+
243
+
244
+
245
+
246
+
247
+
248
+
249
+
250
+
251
+
252
+
253
+
254
+
255
+
256
+
257
+
258
+
259
+
260
+
261
+
262
+
263
+
264
+
265
+
266
+
267
+
268
+
269
+
270
+
271
+
272
+ </ul>
273
+ </div>
274
+ </div>