@chat21/chat21-ionic 3.0.78-rc.1 → 3.0.78-rc.2

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 (34) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/package.json +1 -1
  3. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +11 -0
  4. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +45 -0
  5. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +15 -2
  6. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +16 -3
  7. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +5 -2
  8. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +14 -10
  9. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +61 -37
  10. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +56 -28
  11. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +6 -20
  12. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component_2.html +1 -1
  13. package/src/app/components/project-item/project-item.component.html +13 -33
  14. package/src/app/components/project-item/project-item.component.scss +8 -9
  15. package/src/app/components/project-item/project-item.component.ts +4 -3
  16. package/src/app/pages/conversation-detail/conversation-detail.page.html +11 -10
  17. package/src/app/pages/conversation-detail/conversation-detail.page.scss +0 -2
  18. package/src/app/pages/conversation-detail/conversation-detail.page.ts +66 -29
  19. package/src/assets/i18n/ar.json +268 -265
  20. package/src/assets/i18n/az.json +3 -0
  21. package/src/assets/i18n/de.json +3 -0
  22. package/src/assets/i18n/en.json +3 -0
  23. package/src/assets/i18n/es.json +3 -0
  24. package/src/assets/i18n/fr.json +3 -0
  25. package/src/assets/i18n/it.json +3 -0
  26. package/src/assets/i18n/kk.json +3 -0
  27. package/src/assets/i18n/pt.json +3 -0
  28. package/src/assets/i18n/ru.json +3 -0
  29. package/src/assets/i18n/sr.json +3 -0
  30. package/src/assets/i18n/sv.json +3 -0
  31. package/src/assets/i18n/tr.json +3 -0
  32. package/src/assets/i18n/uk.json +3 -0
  33. package/src/assets/i18n/uz.json +3 -0
  34. package/src/chat21-core/utils/utils.ts +5 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  # chat21-ionic ver 3.0
2
2
 
3
+ ### 3.0.78-rc.2
4
+ - changed: project item UI and tooltip msg
5
+ - changed: conversation UI in conversations list component
6
+ - changed: conversation detail header component
7
+ - added: open/close info-conversation moved from conversation-header to conversation detail component
8
+ - bug-fixed: canned responses opens in incorrect mode
9
+
3
10
  ### 3.0.78-rc.1
4
11
  - changed: conversation-list page width increased
5
12
  - changed: background changed in info-message component
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@chat21/chat21-ionic",
3
3
  "author": "Tiledesk SRL",
4
- "version": "3.0.78-rc.1",
4
+ "version": "3.0.78-rc.2",
5
5
  "license": "MIT License",
6
6
  "homepage": "https://tiledesk.com/",
7
7
  "repository": {
@@ -52,8 +52,19 @@
52
52
  <!-- ----------------------------------------------------------- -->
53
53
  <!-- nk - no tag ionic -->
54
54
  <!-- ----------------------------------------------------------- -->
55
+ <div class="manage_conversation_info_container" [ngClass]="{'close': !openInfoConversation, 'mobile': isMobile}">
56
+ <ion-button fill="clear" *ngIf="openInfoConversation" (click)="onOpenCloseInfoConversationFN()">
57
+ <ion-icon name="arrow-forward-outline"></ion-icon>
58
+ {{translationMap.get('LABEL_CLOSE_GROUP')}}
59
+ </ion-button>
60
+ <ion-button fill="clear" *ngIf="!openInfoConversation" (click)="onOpenCloseInfoConversationFN()">
61
+ <ion-icon name="arrow-back-outline"></ion-icon>
62
+ {{translationMap.get('LABEL_OPEN_INFO_CONVERSATION')}}
63
+ </ion-button>
64
+ </div>
55
65
 
56
66
  <div class="conversation-wpr" style="height: 100%;">
67
+
57
68
  <div *ngFor="let message of messages; let i = index; let first = first; trackBy: trackByFn">
58
69
 
59
70
  <ng-container *ngIf="first || (messages[i - 1].timestamp | date:'d') !== (message.timestamp | date:'d')">
@@ -33,6 +33,51 @@
33
33
  }
34
34
  }
35
35
 
36
+ .manage_conversation_info_container{
37
+ height: 34px;
38
+ display: flex;
39
+ -webkit-box-align: center;
40
+ align-items: center;
41
+ position: fixed;
42
+ transition: transform 300ms ease-in-out 0s;
43
+ transform: translate(0px);
44
+ right: 300px;
45
+ top: 60px;
46
+ z-index:10;
47
+ background: linear-gradient(to right, rgba(226, 232, 239, 0) 128px, rgb(226, 232, 239) 128px);
48
+
49
+ &.close{
50
+ right: 0px;
51
+ }
52
+
53
+ &.mobile{
54
+ right: 0px;
55
+ }
56
+ &::before{
57
+ content: "";
58
+ width: 102px;
59
+ height: 34px;
60
+ background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjM0IiB2aWV3Qm94PSIwIDAgMTAyIDM0IiB3aWR0aD0iMTAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0ibTEwMiAwaC0xMDJsLjA3MTQwOC40MTk3NTNjMTEuMzE5MTkyLS4wMTU1NTggMjIuMjg4MTkyIDMuOTIwMzM3IDMxLjAxMjA5MiAxMS4xMjc2NDdsNy40ODk0IDYuNTAyIDEuNjUwOCAxLjQyMjkgNi42OTU1IDUuNzhjNi41Mzc0IDUuNjQwNSAxNC44ODU3IDguNzQ1MSAyMy41MjI3IDguNzQ3N2gzMS41NTQxeiIKICAgICAgICAgIGZpbGw9IiNlMmU4ZWYiLz4KPC9zdmc+);
61
+ position: relative;
62
+ left: 50px;
63
+ z-index: -1;
64
+ }
65
+
66
+ ion-button {
67
+ text-transform: unset;
68
+ &:hover {
69
+ --background-hover: transparent;
70
+ text-decoration: underline;
71
+ text-decoration-color: var(--ion-color-primary);
72
+ }
73
+ }
74
+
75
+ ion-icon{
76
+ margin: 5px;
77
+ }
78
+ }
79
+
80
+
36
81
  ion-item {
37
82
  --padding-end: 0px;
38
83
  --inner-padding-end: 0px;
@@ -1,5 +1,5 @@
1
1
  import { ConversationContentComponent } from '../conversation-content/conversation-content.component';
2
- import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
2
+ import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter, SimpleChange, SimpleChanges } from '@angular/core';
3
3
 
4
4
 
5
5
  import { MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from 'src/chat21-core/utils/constants';
@@ -24,14 +24,17 @@ export class IonConversationDetailComponent extends ConversationContentComponent
24
24
  @Input() channelType: string;
25
25
  @Input() areVisibleCAR: boolean;
26
26
  @Input() supportMode: boolean;
27
+ @Input() isMobile: boolean;
27
28
  @Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
28
29
  @Output() onAddUploadingBubble = new EventEmitter<boolean>();
29
-
30
+ @Output() onOpenCloseInfoConversation = new EventEmitter<boolean>();
31
+
30
32
  public public_Key: any
31
33
  public uploadProgress: number = 100
32
34
  public fileType: any
33
35
  public browserLang: string;
34
36
  public addAsCannedResponseTooltipText: string;
37
+ public openInfoConversation: boolean = true;
35
38
  isImage = isImage;
36
39
  isFile = isFile;
37
40
  isFrame = isFrame;
@@ -66,6 +69,11 @@ export class IonConversationDetailComponent extends ConversationContentComponent
66
69
  ngOnInit() {
67
70
  this.listenToUploadFileProgress();
68
71
  this.setMomentLocaleAndGetTranslation();
72
+
73
+ }
74
+
75
+ ngOnChanges(changes: SimpleChanges){
76
+ this.isMobile? this.openInfoConversation = false: null;
69
77
  }
70
78
 
71
79
 
@@ -136,6 +144,11 @@ export class IonConversationDetailComponent extends ConversationContentComponent
136
144
  this.onElementRendered.emit(event)
137
145
  }
138
146
 
147
+ onOpenCloseInfoConversationFN(){
148
+ this.openInfoConversation = !this.openInfoConversation
149
+ this.onOpenCloseInfoConversation.emit(this.openInfoConversation)
150
+ }
151
+
139
152
  /**
140
153
  * Track by function for ngFor loops
141
154
  *
@@ -94,9 +94,22 @@
94
94
  <div class="conv-container">
95
95
  <ion-label>
96
96
  <div class="conversation_project truncate">
97
- <svg xmlns="http://www.w3.org/2000/svg" data-v-78d18411="" width="15" height="15" fill="none" viewBox="0 0 24 24" class="inbox-icon"><path d="M22.002 12C22.002 6.477 17.524 2 12 2 6.476 1.999 2 6.477 2 12.001c0 5.186 3.947 9.45 9.001 9.952V20.11c-.778-.612-1.478-1.905-1.939-3.61h1.94V15H8.737a18.969 18.969 0 0 1-.135-5h6.794c.068.64.105 1.31.105 2h1.5c0-.684-.033-1.353-.095-2h3.358c.154.64.237 1.31.237 2h1.5ZM4.786 16.5h2.722l.102.396c.317 1.17.748 2.195 1.27 3.015a8.532 8.532 0 0 1-4.094-3.41ZM3.736 10h3.358a20.847 20.847 0 0 0-.095 2c0 1.043.075 2.051.217 3H4.043a8.483 8.483 0 0 1-.544-3c0-.682.08-1.347.232-1.983L3.736 10Zm5.122-5.902.023-.008C8.16 5.222 7.611 6.748 7.298 8.5H4.25c.905-2 2.56-3.587 4.608-4.402Zm3.026-.594L12 3.5l.126.006c1.262.126 2.48 2.125 3.045 4.995H8.83c.568-2.878 1.79-4.88 3.055-4.996Zm3.343.76-.107-.174.291.121a8.533 8.533 0 0 1 4.339 4.29h-3.048c-.298-1.665-.806-3.125-1.475-4.237Z M12 19a1 1 0 0 0 1 1h3v2h-.5a.5.5 0 1 0 0 1h4a.5.5 0 0 0 0-1H19v-2h3a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1v5Z" fill="currentColor"/></svg>
98
- <span *ngIf="conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.project_name}}</span>
99
- <span *ngIf="!conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.projectId}}</span>
97
+ <!-- DIRECT CONV -->
98
+ <div *ngIf="conversation.channel_type === TYPE_DIRECT">
99
+ <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>
100
+ <span class="truncate">{{translationsMap.get('DIRECT_CHAT')}}</span>
101
+ </div>
102
+ <!-- GROUP CONV -->
103
+ <div *ngIf="!conversation.uid.includes(TYPE_SUPPORT_GROUP) && conversation.channel_type !== TYPE_DIRECT">
104
+ <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>
105
+ <span class="truncate">{{translationsMap.get('GROUP_CHAT')}}</span>
106
+ </div>
107
+ <!-- SUPPORT-GROUP CONV -->
108
+ <div *ngIf="conversation.uid.includes(TYPE_SUPPORT_GROUP) > 0 ">
109
+ <svg xmlns="http://www.w3.org/2000/svg" data-v-78d18411="" width="15" height="15" fill="none" viewBox="0 0 24 24" class="inbox-icon"><path d="M22.002 12C22.002 6.477 17.524 2 12 2 6.476 1.999 2 6.477 2 12.001c0 5.186 3.947 9.45 9.001 9.952V20.11c-.778-.612-1.478-1.905-1.939-3.61h1.94V15H8.737a18.969 18.969 0 0 1-.135-5h6.794c.068.64.105 1.31.105 2h1.5c0-.684-.033-1.353-.095-2h3.358c.154.64.237 1.31.237 2h1.5ZM4.786 16.5h2.722l.102.396c.317 1.17.748 2.195 1.27 3.015a8.532 8.532 0 0 1-4.094-3.41ZM3.736 10h3.358a20.847 20.847 0 0 0-.095 2c0 1.043.075 2.051.217 3H4.043a8.483 8.483 0 0 1-.544-3c0-.682.08-1.347.232-1.983L3.736 10Zm5.122-5.902.023-.008C8.16 5.222 7.611 6.748 7.298 8.5H4.25c.905-2 2.56-3.587 4.608-4.402Zm3.026-.594L12 3.5l.126.006c1.262.126 2.48 2.125 3.045 4.995H8.83c.568-2.878 1.79-4.88 3.055-4.996Zm3.343.76-.107-.174.291.121a8.533 8.533 0 0 1 4.339 4.29h-3.048c-.298-1.665-.806-3.125-1.475-4.237Z M12 19a1 1 0 0 0 1 1h3v2h-.5a.5.5 0 1 0 0 1h4a.5.5 0 0 0 0-1H19v-2h3a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1v5Z" fill="currentColor"/></svg>
110
+ <span *ngIf="conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.project_name}}</span>
111
+ <span *ngIf="!conversation?.attributes?.project_name" class="truncate">{{conversation?.attributes?.projectId}}</span>
112
+ </div>
100
113
  </div>
101
114
  <div style="display: flex;">
102
115
  <span class="conversation_with truncate" [class.not-read]="conversation.is_new">
@@ -19,6 +19,8 @@ ion-item {
19
19
  --padding-start: 0;
20
20
  --inner-padding-end: 0;
21
21
  --background-hover: #000000 !important;
22
+ border-radius: 16px;
23
+ margin: 4px 5px;
22
24
  .conv-container{
23
25
  width: 84%;
24
26
  height: 100%;
@@ -89,7 +91,8 @@ ion-item {
89
91
  font-size: 10px;
90
92
  max-width: 90%;
91
93
  svg {
92
- color:#779bbb;
94
+ fill:#779bbb;
95
+ vertical-align: sub;
93
96
  }
94
97
  span{
95
98
  padding-left: 5px
@@ -246,7 +249,7 @@ ion-item:hover {
246
249
 
247
250
  .ion-selected {
248
251
  --background: rgba(24, 119, 242, 0.04);
249
- border-right: 2px solid #1876f2;
252
+ border-right: 4px solid #1876f2;
250
253
  }
251
254
 
252
255
  .time-in-archived {
@@ -1,3 +1,5 @@
1
+ import { TYPE_GROUP, TYPE_SUPPORT_GROUP } from './../../../../chat21-core/utils/constants';
2
+ import { TYPE_DIRECT } from 'src/chat21-core/utils/constants';
1
3
  import { Component, EventEmitter, Input, IterableDiffers, KeyValueDiffers, OnInit, Output, SimpleChange } from '@angular/core';
2
4
  import { ConversationModel } from 'src/chat21-core/models/conversation';
3
5
  import { ImageRepoService } from 'src/chat21-core/providers/abstract/image-repo.service';
@@ -14,6 +16,7 @@ import { AppConfigProvider } from 'src/app/services/app-config';
14
16
  import { DomSanitizer } from '@angular/platform-browser'
15
17
  import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
16
18
  import { AlertController } from '@ionic/angular';
19
+ import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
17
20
  // import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
18
21
  // import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
19
22
 
@@ -35,6 +38,8 @@ export class IonListConversationsComponent extends ListConversationsComponent im
35
38
  public currentYear: any;
36
39
  public browserLang: string;
37
40
 
41
+ public translationsMap: Map<string, string> = new Map()
42
+
38
43
  public PROJECT_FOR_PANEL: any;
39
44
  public archive_btn_tooltip: string;
40
45
  public resolve_btn_tooltip: string;
@@ -52,6 +57,10 @@ export class IonListConversationsComponent extends ListConversationsComponent im
52
57
  'hideDelayAfterClick': 3000,
53
58
  'hide-delay': 100
54
59
  };
60
+
61
+ TYPE_DIRECT = TYPE_DIRECT;
62
+ TYPE_GROUP = TYPE_GROUP;
63
+ TYPE_SUPPORT_GROUP = TYPE_SUPPORT_GROUP;
55
64
  /**
56
65
  *
57
66
  * @param iterableDiffers
@@ -63,6 +72,7 @@ export class IonListConversationsComponent extends ListConversationsComponent im
63
72
  public kvDiffers: KeyValueDiffers,
64
73
  public platform: Platform,
65
74
  private translate: TranslateService,
75
+ private translateService: CustomTranslateService,
66
76
  private networkService: NetworkService,
67
77
  private appConfigProvider: AppConfigProvider,
68
78
  private sanitizer: DomSanitizer,
@@ -73,7 +83,6 @@ export class IonListConversationsComponent extends ListConversationsComponent im
73
83
  super(iterableDiffers, kvDiffers)
74
84
  this.setMomentLocale();
75
85
 
76
-
77
86
  // if (this.browserLang) {
78
87
 
79
88
  // moment.locale(this.browserLang)
@@ -123,16 +132,11 @@ export class IonListConversationsComponent extends ListConversationsComponent im
123
132
  'ALERT_TITLE',
124
133
  'ActionNotAllowed',
125
134
  'CLOSE_ALERT_CONFIRM_LABEL',
126
- 'YouAreNoLongerAmongTheTeammatesManagingThisConversation'
135
+ 'YouAreNoLongerAmongTheTeammatesManagingThisConversation',
136
+ 'GROUP_CHAT',
137
+ 'DIRECT_CHAT'
127
138
  ]
128
- this.translate.get(['Resolve', 'Archive', 'ALERT_TITLE']).subscribe((translations: string) => {
129
- this.resolve_btn_tooltip = translations['Resolve'];
130
- this.archive_btn_tooltip = translations['Archive'];
131
- this.alert_lbl = translations['ALERT_TITLE']
132
- this.actionNotAllowed_lbl = translations['ActionNotAllowed']
133
- this.ok_lbl = translations['CLOSE_ALERT_CONFIRM_LABEL']
134
- this.youAreNoLongerAmongTheTeammatesManagingThisConversation_lbl = translations['YouAreNoLongerAmongTheTeammatesManagingThisConversation']
135
- });
139
+ this.translationsMap = this.translateService.translateLanguage(translationKeys)
136
140
  }
137
141
 
138
142
  setMomentLocale() {
@@ -6,46 +6,73 @@
6
6
  </ion-back-button>
7
7
  </ion-buttons>
8
8
 
9
- <ion-title [class.info-open]="openInfoConversation || openInfoMessage">
9
+ <ion-title>
10
10
 
11
- <div *ngIf="conversationAvatar" class="avatar-and-typing-wpr" >
11
+ <div *ngIf="conversationAvatar" class="avatar-and-typing-wpr" [ngClass]="{'mobile': isMobile}">
12
12
  <!-- [ngStyle] = "{ 'left': platformName === 'ios' ? '55px' : '' }" -->
13
- <div *ngIf="conversationAvatar" class="avatar-container" (click)="onOpenCloseInfoConversation()" style="cursor: pointer"
13
+ <div class="avatar-container" style="cursor: pointer"
14
14
  [ngClass]="{ 'avatar-container-ios': platformName === 'ios' }">
15
15
  <app-avatar-profile
16
16
  [itemAvatar]=conversationAvatar>
17
17
  </app-avatar-profile>
18
18
  </div>
19
- <!-- [ngStyle] = "{ 'left': platformName === 'ios' ? '63px' : '' }" -->
20
- <div *ngIf="isDirect" class="user-presence" [ngClass]="{ 'user-presence-ios': platformName === 'ios' }">
21
- <app-user-presence
22
- [idUser]=conversationAvatar.conversation_with
23
- [translationMap]=translationMap
24
- [borderColor]=borderColor
25
- [fontColor]=fontColor>
26
- </app-user-presence>
27
- </div>
19
+ <div class="info-container">
20
+
21
+ <!-- [ngClass] = "{ 'tile-info-with-ios': platformName === 'ios' ? '82px' : ''82px'' }" -->
22
+ <!-- (click)="onOpenCloseInfoConversation()" -->
23
+ <div class="tile-info-with"
24
+ [ngClass]="{ 'tile-info-with-ios': platformName === 'ios' }">
25
+ <span class="tile-username">{{ conversationAvatar.conversation_with_fullname | truncate:50 }} </span>
26
+ <!-- <span class="tile-username">{{ conversation_with_fullname }} </span> -->
27
+ </div>
28
+
29
+ <!-- [ngStyle] = "{ 'left': platformName === 'ios' ? '63px' : '' }" -->
30
+ <div *ngIf="isDirect" class="user-presence" [ngClass]="{ 'user-presence-ios': platformName === 'ios' }">
31
+ <app-user-presence
32
+ [idUser]=conversationAvatar.conversation_with
33
+ [translationMap]=translationsMap
34
+ [borderColor]=borderColor
35
+ [fontColor]=fontColor>
36
+ </app-user-presence>
37
+ </div>
38
+
39
+ <div class="subtitle-info">
40
+ <div class="conversation_project">
41
+ <!-- DIRECT CONV -->
42
+ <div *ngIf="isDirect">
43
+ <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>
44
+ <span class="truncate">{{translationsMap.get('DIRECT_CHAT')}}</span>
45
+ </div>
46
+ <!-- GROUP CONV -->
47
+ <div *ngIf="!conversationUid?.includes(TYPE_SUPPORT_GROUP) && !isDirect">
48
+ <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>
49
+ <span class="truncate">{{translationsMap.get('GROUP_CHAT')}}</span>
50
+ </div>
51
+ <!-- SUPPORT-GROUP CONV -->
52
+ <div *ngIf="conversationUid?.includes(TYPE_SUPPORT_GROUP)">
53
+ <svg xmlns="http://www.w3.org/2000/svg" data-v-78d18411="" width="15" height="15" fill="none" viewBox="0 0 24 24" class="inbox-icon"><path d="M22.002 12C22.002 6.477 17.524 2 12 2 6.476 1.999 2 6.477 2 12.001c0 5.186 3.947 9.45 9.001 9.952V20.11c-.778-.612-1.478-1.905-1.939-3.61h1.94V15H8.737a18.969 18.969 0 0 1-.135-5h6.794c.068.64.105 1.31.105 2h1.5c0-.684-.033-1.353-.095-2h3.358c.154.64.237 1.31.237 2h1.5ZM4.786 16.5h2.722l.102.396c.317 1.17.748 2.195 1.27 3.015a8.532 8.532 0 0 1-4.094-3.41ZM3.736 10h3.358a20.847 20.847 0 0 0-.095 2c0 1.043.075 2.051.217 3H4.043a8.483 8.483 0 0 1-.544-3c0-.682.08-1.347.232-1.983L3.736 10Zm5.122-5.902.023-.008C8.16 5.222 7.611 6.748 7.298 8.5H4.25c.905-2 2.56-3.587 4.608-4.402Zm3.026-.594L12 3.5l.126.006c1.262.126 2.48 2.125 3.045 4.995H8.83c.568-2.878 1.79-4.88 3.055-4.996Zm3.343.76-.107-.174.291.121a8.533 8.533 0 0 1 4.339 4.29h-3.048c-.298-1.665-.806-3.125-1.475-4.237Z M12 19a1 1 0 0 0 1 1h3v2h-.5a.5.5 0 1 0 0 1h4a.5.5 0 0 0 0-1H19v-2h3a1 1 0 0 0 1-1v-5a1 1 0 0 0-1-1h-9a1 1 0 0 0-1 1v5Z" fill="currentColor"/></svg>
54
+ <span *ngIf="conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.project_name}}</span>
55
+ <span *ngIf="!conversationAvatar?.project_name" class="truncate">{{conversationAvatar?.projectId}}</span>
56
+ </div>
57
+ </div>
28
58
 
29
- <div *ngIf="conversationAvatar" class="user-typing">
30
- <app-user-typing
31
- [idConversation]=conversationAvatar.uid
32
- [idCurrentUser]=idLoggedUser
33
- [isDirect]=isDirect
34
- [translationMap]=translationMap
35
- [color]=fontColor
36
- [membersConversation]=membersConversation>
37
- </app-user-typing>
59
+ <app-user-typing
60
+ [idConversation]=conversationAvatar.uid
61
+ [idCurrentUser]=idLoggedUser
62
+ [isDirect]=isDirect
63
+ [translationMap]=translationsMap
64
+ [color]=fontColor
65
+ [membersConversation]=membersConversation>
66
+ </app-user-typing>
67
+
68
+ </div>
38
69
  </div>
70
+
39
71
 
40
- </div>
41
- <!-- [ngClass] = "{ 'tile-info-with-ios': platformName === 'ios' ? '82px' : ''82px'' }" -->
42
- <!-- (click)="onOpenCloseInfoConversation()" -->
43
- <div *ngIf="conversationAvatar" class="tile-info-with"
44
- [ngClass]="{ 'tile-info-with-ios': platformName === 'ios' }">
45
- <span class="tile-username">{{ conversationAvatar.conversation_with_fullname | truncate:50 }} </span>
46
- <!-- <span class="tile-username">{{ conversation_with_fullname }} </span> -->
72
+
47
73
 
48
74
  </div>
75
+
49
76
 
50
77
  <!-- <div *ngIf="conversationWithFullname" class="tile-info-with" (click)="onOpenCloseInfoConversation()">
51
78
  <span class="tile-username">{{ conversationWithFullname }} </span>
@@ -61,22 +88,19 @@
61
88
  </ion-button> -->
62
89
 
63
90
  <ion-button *ngIf="conversationUid?.startsWith('support-group') && conv_type !== 'archived'" ion-button fill="clear" color="primary" size="small"
64
- (click)="closeConversation()" [ngClass]="{'resolve-conv-margin-right': !isMobile}" [disabled]="conv_closed === true">
91
+ (click)="closeConversation()" [disabled]="conv_closed === true">
65
92
  <!-- <ion-icon slot="icon-only" name="alert-circle-outline"></ion-icon> -->
66
93
  <ion-icon name="archive-outline"></ion-icon>
67
94
  <!-- <ion-icon slot="icon-only" name="information-outline"></ion-icon> -->
68
95
  <span style="text-transform: capitalize; margin-left: 5px;"> {{ 'Resolve' | translate}} </span>
69
96
  </ion-button>
70
97
 
71
- <ion-button *ngIf="!openInfoConversation" ion-button fill="clear" (click)="onOpenCloseInfoConversation()">
72
- <!-- <ion-icon slot="icon-only" name="alert-circle-outline"></ion-icon> -->
73
- <ion-icon slot="icon-only" name="information-circle-outline"></ion-icon>
74
- <!-- <ion-icon slot="icon-only" name="information-outline"></ion-icon> -->
75
-
76
- </ion-button>
77
- <ion-button *ngIf="openInfoConversation" ion-button fill="clear" (click)="onOpenCloseInfoConversation()">
98
+ <!-- <ion-button *ngIf="!openInfoConversation" ion-button fill="clear" (click)="onOpenCloseInfoConversation()">
99
+ <ion-icon slot="icon-only" name="information-circle-outline"></ion-icon>
100
+ </ion-button> -->
101
+ <!-- <ion-button *ngIf="openInfoConversation" ion-button fill="clear" (click)="onOpenCloseInfoConversation()">
78
102
  <ion-icon slot="icon-only" name="close-circle-outline"></ion-icon>
79
- </ion-button>
103
+ </ion-button> -->
80
104
 
81
105
  </ion-buttons>
82
106
 
@@ -27,7 +27,7 @@ ion-header {
27
27
  text-align: left;
28
28
  padding-inline: unset;
29
29
  margin: 0px 10px;
30
- height: 40px;
30
+ // height: 40px;
31
31
  width: 100%;
32
32
  }
33
33
  ion-avatar {
@@ -73,12 +73,9 @@ ion-header {
73
73
  // display: inline-block;
74
74
  // vertical-align: middle;
75
75
  // margin: -6px 0px 0 6px;
76
- position: absolute;
77
- margin: auto 0;
78
- height: 100%;
79
- top: 0;
80
- left: 50px;
81
- vertical-align: middle;
76
+ // position: absolute;
77
+ // margin-left: 12px;
78
+
82
79
  // cursor: pointer;
83
80
  }
84
81
  .tile-point {
@@ -92,14 +89,12 @@ ion-header {
92
89
  }
93
90
  .tile-username {
94
91
  display: inline-block;
95
- font-size: 15px;
96
- color: var(--black);
92
+ font-size: 18px;
97
93
  margin: 0;
98
94
  padding: 0;
99
95
 
100
- color: #3c4858;
101
- font-family: "Google Sans",sans-serif!important;
102
- font-weight: 600;
96
+ color: #1f2d3d;
97
+ font-weight: 400; //600;
103
98
  -webkit-font-smoothing: antialiased;
104
99
  text-rendering: optimizeLegibility;
105
100
  -webkit-text-size-adjust: none;
@@ -133,18 +128,25 @@ ion-header {
133
128
  }
134
129
  }
135
130
 
131
+ .avatar-and-typing-wpr{
132
+ display: flex;
133
+ &.mobile{
134
+ margin-left: 25px;
135
+ }
136
+ }
137
+
136
138
  .avatar-container {
137
139
  background-color: #fff;
138
140
  color: #fff;
139
141
  text-align: center;
140
142
  width: 40px;
141
143
  height: 40px;
142
- position: absolute;
143
- top: 0;
144
+ // position: absolute;
145
+ // top: 0;
146
+ // left: 20px;
144
147
  border-radius: 50%;
145
148
  padding: 0px;
146
- transform: translateX(-50%);
147
- left: 20px;
149
+ // transform: translateX(-50%);
148
150
 
149
151
  border-color: #fff;
150
152
  border-style: solid;
@@ -152,6 +154,14 @@ ion-header {
152
154
  line-height: 40px;
153
155
  display: inline-block;
154
156
  }
157
+
158
+ .info-container{
159
+ display: flex;
160
+ flex-direction: column;
161
+ justify-content: center;
162
+ margin-left: 12px;
163
+ }
164
+
155
165
  .user-presence {
156
166
  position: absolute;
157
167
  bottom: 0;
@@ -159,16 +169,38 @@ ion-header {
159
169
  left: 30px;
160
170
  width: 100px;
161
171
  }
162
- .user-typing {
163
- position: absolute;
164
- left: 50px;
165
- bottom: -3px;
166
- padding: 0;
167
- margin: 0;
168
- height: 16px;
169
- width: 140px;
172
+ .subtitle-info {
173
+ // position: absolute;
174
+ // left: 50px;
175
+ // bottom: -3px;
176
+ // padding: 0;
177
+ // margin: 0;
178
+ display: flex;
179
+ align-items: center;
180
+ // height: 16px;
181
+ // width: 140px;
182
+ font-size: 12px;
183
+ .conversation_project{
184
+ display: inline-flex;
185
+ align-items: center;
186
+ line-height: 1.2rem;
187
+ font-weight: 500;
188
+ color: #779bbb;
189
+ font-size: 10px;
190
+ max-width: 90%;
191
+ margin-right: 5px;
192
+ svg {
193
+ fill:#779bbb;
194
+ vertical-align: sub;
195
+ }
196
+ span{
197
+ padding-left: 5px
198
+ }
199
+ }
170
200
  }
171
201
 
202
+
203
+
172
204
  .tile-info-with-ios {
173
205
  left: 82px !important;
174
206
  top: 10px!important;
@@ -182,7 +214,3 @@ ion-header {
182
214
  left: 55px;
183
215
  top: 10px;
184
216
  }
185
-
186
- .resolve-conv-margin-right {
187
- margin-right: 52px;
188
- }
@@ -22,7 +22,7 @@ import { ModalController } from '@ionic/angular'
22
22
  import { EventsService } from 'src/app/services/events-service'
23
23
  import { CreateTicketPage } from 'src/app/pages/create-ticket/create-ticket.page'
24
24
  import { TiledeskService } from 'src/app/services/tiledesk/tiledesk.service'
25
- import { TYPE_DIRECT } from 'src/chat21-core/utils/constants'
25
+ import { TYPE_DIRECT, TYPE_SUPPORT_GROUP } from 'src/chat21-core/utils/constants'
26
26
 
27
27
  @Component({
28
28
  selector: 'app-header-conversation-detail',
@@ -34,14 +34,11 @@ export class HeaderConversationDetailComponent implements OnInit, OnChanges {
34
34
  @Input() idLoggedUser: string
35
35
  @Input() conversationUid: string
36
36
  @Input() conv_type: string
37
- @Input() isOpenInfoConversation: boolean = true
38
37
  @Input() isMobile: boolean
39
- @Input() translationMap: Map<string, string>
40
- @Output() eventOpenCloseInfoConversation = new EventEmitter<boolean>()
38
+ @Input() translationsMap: Map<string, string>
41
39
  conversationWithFullname: string
42
40
  openInfoConversation = true
43
- openInfoMessage = true
44
-
41
+
45
42
  isDirect = false
46
43
  isTyping = false
47
44
  borderColor = '#ffffff'
@@ -52,6 +49,8 @@ export class HeaderConversationDetailComponent implements OnInit, OnChanges {
52
49
  IS_ON_IOS_MOBILE_DEVICE: boolean
53
50
  private logger: LoggerService = LoggerInstance.getInstance()
54
51
 
52
+ TYPE_SUPPORT_GROUP = TYPE_SUPPORT_GROUP
53
+
55
54
  constructor(
56
55
  public imageRepoService: ImageRepoService,
57
56
  private route: ActivatedRoute,
@@ -91,8 +90,7 @@ export class HeaderConversationDetailComponent implements OnInit, OnChanges {
91
90
  this.logger.log('[CONVS-DETAIL][HEADER] - (ngOnChanges) - conversationAvatar', this.conversationAvatar)
92
91
  if (this.conversationAvatar) {
93
92
  this.conversationAvatar.imageurl = this.imageRepoService.getImagePhotoUrl(this.conversationAvatar.uid)
94
- }
95
- this.openInfoConversation = this.isOpenInfoConversation
93
+ }
96
94
  }
97
95
 
98
96
  // ----------------------------------------------------
@@ -133,18 +131,6 @@ export class HeaderConversationDetailComponent implements OnInit, OnChanges {
133
131
  });
134
132
  }
135
133
 
136
-
137
-
138
- onOpenCloseInfoConversation() {
139
- this.openInfoMessage = false
140
- this.openInfoConversation = !this.openInfoConversation
141
- this.logger.log(
142
- '[CONVS-DETAIL][HEADER] - onOpenCloseInfoConversation - openInfoConversation ',
143
- this.openInfoConversation,
144
- )
145
- this.eventOpenCloseInfoConversation.emit(this.openInfoConversation)
146
- }
147
-
148
134
  /** */
149
135
  pushPage(event) { }
150
136
 
@@ -51,7 +51,7 @@
51
51
 
52
52
 
53
53
 
54
- <ion-title [class.info-open]="openInfoConversation || openInfoMessage">
54
+ <ion-title>
55
55
 
56
56
  <div *ngIf="conversationAvatar" class="avatar-and-typing-wpr" >
57
57
  <!-- [ngStyle] = "{ 'left': platformName === 'ios' ? '55px' : '' }" -->