@chat21/chat21-ionic 3.0.82-rc.7 → 3.0.82

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 (156) hide show
  1. package/CHANGELOG.md +5 -99
  2. package/README.md +2 -2
  3. package/package.json +3 -4
  4. package/src/app/app.component.html +1 -7
  5. package/src/app/app.component.scss +2 -20
  6. package/src/app/app.component.ts +18 -129
  7. package/src/app/app.module.ts +1 -3
  8. package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -8
  9. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +23 -77
  10. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +88 -171
  11. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +2 -40
  12. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +24 -11
  13. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.scss +10 -6
  14. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.spec.ts +2 -2
  15. package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +25 -16
  16. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.html +1 -5
  17. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.scss +15 -22
  18. package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.ts +5 -25
  19. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.html +1 -2
  20. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss +15 -14
  21. package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.ts +5 -24
  22. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.html +1 -6
  23. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.scss +13 -12
  24. package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.ts +5 -26
  25. package/src/app/chatlib/conversation-detail/message/frame/frame.component.html +2 -8
  26. package/src/app/chatlib/conversation-detail/message/frame/frame.component.scss +0 -36
  27. package/src/app/chatlib/conversation-detail/message/frame/frame.component.ts +2 -2
  28. package/src/app/chatlib/conversation-detail/message/html/html.component.ts +1 -0
  29. package/src/app/chatlib/conversation-detail/message/image/image.component.html +2 -3
  30. package/src/app/chatlib/conversation-detail/message/image/image.component.scss +5 -17
  31. package/src/app/chatlib/conversation-detail/message/image/image.component.ts +1 -1
  32. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.scss +2 -3
  33. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.html +6 -16
  34. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +3 -1
  35. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.ts +0 -2
  36. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +52 -78
  37. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +20 -63
  38. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +10 -14
  39. package/src/app/components/canned-response/canned-response.component.html +9 -9
  40. package/src/app/components/canned-response/canned-response.component.scss +7 -14
  41. package/src/app/components/canned-response/canned-response.component.ts +1 -1
  42. package/src/app/components/contacts-directory/contacts-directory.component.html +26 -22
  43. package/src/app/components/contacts-directory/contacts-directory.component.scss +6 -8
  44. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.html +3 -0
  45. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.scss +21 -0
  46. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.spec.ts +24 -0
  47. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.ts +14 -0
  48. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.html +54 -0
  49. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.scss +98 -0
  50. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.spec.ts → conversation-detail/bubble-my-message/bubble-my-message.component.spec.ts} +6 -6
  51. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +84 -0
  52. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.html +30 -0
  53. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.scss +83 -0
  54. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.spec.ts +24 -0
  55. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +68 -0
  56. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.html +3 -0
  57. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.scss +10 -0
  58. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.spec.ts +24 -0
  59. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.ts +14 -0
  60. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +42 -61
  61. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +61 -98
  62. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +25 -9
  63. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +8 -17
  64. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +4 -4
  65. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +84 -24
  66. package/src/app/components/conversation-detail/option-header/option-header.component.html +13 -0
  67. package/src/app/components/conversation-detail/option-header/option-header.component.scss +0 -0
  68. package/src/app/components/{conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.spec.ts → conversation-detail/option-header/option-header.component.spec.ts} +5 -5
  69. package/src/app/components/{conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.ts → conversation-detail/option-header/option-header.component.ts} +4 -5
  70. package/src/app/components/conversation-info/info-content/info-content.component.html +4 -8
  71. package/src/app/components/conversation-info/info-content/info-content.component.ts +6 -3
  72. package/src/app/components/conversation-info/info-direct/info-direct.component.html +13 -7
  73. package/src/app/components/conversation-info/info-direct/info-direct.component.scss +0 -23
  74. package/src/app/components/conversation-info/info-direct/info-direct.component.ts +6 -1
  75. package/src/app/components/conversation-info/info-group/info-group.component.html +108 -44
  76. package/src/app/components/conversation-info/info-group/info-group.component.scss +61 -101
  77. package/src/app/components/conversation-info/info-group/info-group.component.ts +0 -1
  78. package/src/app/components/conversation-info/info-support-group/info-support-group.component.html +1 -2
  79. package/src/app/components/conversation-info/info-support-group/info-support-group.component.ts +1 -0
  80. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.html → ddp-header/ddp-header.component.html} +3 -3
  81. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.scss → ddp-header/ddp-header.component.scss} +4 -16
  82. package/src/app/components/{navbar/navbar.component.spec.ts → ddp-header/ddp-header.component.spec.ts} +6 -6
  83. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.ts → ddp-header/ddp-header.component.ts} +16 -7
  84. package/src/app/components/project-item/project-item.component.html +149 -98
  85. package/src/app/components/project-item/project-item.component.scss +35 -43
  86. package/src/app/components/project-item/project-item.component.ts +4 -16
  87. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +5 -5
  88. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +10 -23
  89. package/src/app/components/utils/user-presence/user-presence.component.html +2 -7
  90. package/src/app/components/utils/user-presence/user-presence.component.scss +18 -35
  91. package/src/app/components/utils/user-presence/user-presence.component.ts +10 -6
  92. package/src/app/pages/contacts-directory/contacts-directory.page.html +1 -1
  93. package/src/app/pages/contacts-directory/contacts-directory.page.scss +0 -47
  94. package/src/app/pages/contacts-directory/contacts-directory.page.ts +0 -2
  95. package/src/app/pages/conversation-detail/conversation-detail.module.ts +8 -0
  96. package/src/app/pages/conversation-detail/conversation-detail.page.html +23 -41
  97. package/src/app/pages/conversation-detail/conversation-detail.page.scss +250 -40
  98. package/src/app/pages/conversation-detail/conversation-detail.page.ts +112 -186
  99. package/src/app/pages/conversations-list/conversations-list.page.html +8 -11
  100. package/src/app/pages/conversations-list/conversations-list.page.scss +2 -18
  101. package/src/app/pages/conversations-list/conversations-list.page.ts +22 -25
  102. package/src/app/pages/create-canned-response/create-canned-response.page.ts +13 -13
  103. package/src/app/pages/loader-preview/loader-preview.page.html +1 -1
  104. package/src/app/pages/loader-preview/loader-preview.page.scss +0 -4
  105. package/src/app/pages/loader-preview/loader-preview.page.ts +2 -1
  106. package/src/app/pages/profile-info/profile-info.page.html +4 -2
  107. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +1 -1
  108. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +0 -42
  109. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +0 -1
  110. package/src/app/services/canned-responses/canned-responses.service.ts +0 -26
  111. package/src/app/services/tiledesk/tiledesk.service.ts +25 -1
  112. package/src/app/services/websocket/websocket.service.ts +1 -1
  113. package/src/app/shared/shared.module.ts +33 -24
  114. package/src/assets/i18n/ar.json +265 -278
  115. package/src/assets/i18n/az.json +1 -14
  116. package/src/assets/i18n/de.json +2 -15
  117. package/src/assets/i18n/en.json +2 -15
  118. package/src/assets/i18n/es.json +2 -15
  119. package/src/assets/i18n/fr.json +1 -14
  120. package/src/assets/i18n/it.json +1 -14
  121. package/src/assets/i18n/kk.json +2 -15
  122. package/src/assets/i18n/pt.json +2 -15
  123. package/src/assets/i18n/ru.json +1 -14
  124. package/src/assets/i18n/sr.json +264 -277
  125. package/src/assets/i18n/sv.json +2 -15
  126. package/src/assets/i18n/tr.json +2 -15
  127. package/src/assets/i18n/uk.json +2 -15
  128. package/src/assets/i18n/uz.json +1 -14
  129. package/src/assets/js/chat21client.js +148 -175
  130. package/src/chat-config-mqtt-localhost.json +2 -2
  131. package/src/chat-config-native-mqtt.json +0 -3
  132. package/src/chat21-core/models/conversation.ts +1 -0
  133. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +9 -7
  134. package/src/chat21-core/providers/mqtt/mqtt-auth-service.ts +8 -7
  135. package/src/chat21-core/utils/constants.ts +1 -6
  136. package/src/chat21-core/utils/user-typing/user-typing.component.html +5 -8
  137. package/src/chat21-core/utils/user-typing/user-typing.component.scss +17 -87
  138. package/src/chat21-core/utils/user-typing/user-typing.component.ts +94 -12
  139. package/src/chat21-core/utils/utils.ts +10 -38
  140. package/src/global.scss +255 -52
  141. package/src/index.html +9 -0
  142. package/src/variables.scss +10 -30
  143. package/deploy_amazon_beta.sh +0 -29
  144. package/deploy_amazon_prod.sh +0 -30
  145. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component_2.html +0 -116
  146. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.html +0 -12
  147. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.scss +0 -14
  148. package/src/app/components/navbar/navbar.component.html +0 -103
  149. package/src/app/components/navbar/navbar.component.scss +0 -249
  150. package/src/app/components/navbar/navbar.component.ts +0 -190
  151. package/src/app/services/projects/projects.service.spec.ts +0 -12
  152. package/src/app/services/projects/projects.service.ts +0 -43
  153. package/src/assets/sounds/interface-start.mp3 +0 -0
  154. package/src/assets/sounds/wheep-wheep.mp3 +0 -0
  155. package/src/chat21-core/models/projects.ts +0 -27
  156. package/src/chat21-core/utils/convertRequestToConversation.ts +0 -41
@@ -2,17 +2,16 @@
2
2
  display: flex;
3
3
  align-content: center;
4
4
  justify-content: center;
5
- padding: 4px 0px 2px 0px;
6
5
  }
7
6
 
8
7
  .base_info {
9
8
  border-radius: 14px;
10
- // border: 1px solid rgba(24, 119, 242, 0.1);
9
+ border: 1px solid #C9E4F6;
11
10
  padding-left: 4px;
12
11
  padding-right: 4px;
13
12
  padding: 6px 10px;
14
13
  display: inline-block;
15
- background: rgba(24, 119, 242, 0.1);
14
+ background: #C9E4F6;
16
15
  font-size: 0.70em;
17
16
  color: var(--basic-gray);
18
17
  margin-left: 5px; //32px;
@@ -4,32 +4,22 @@
4
4
 
5
5
  <chat-text-button-attachment *ngIf="button.type === 'text' && isLastMessage === true" class="div-button"
6
6
  [button]="button"
7
- [isConversationArchived]="isConversationArchived"
8
- [fontSize]="stylesMap.get('buttonFontSize')"
9
- [backgroundColor]="stylesMap.get('buttonBackgroundColor')"
10
- [textColor]="stylesMap.get('buttonTextColor')"
11
- [hoverBackgroundColor]="stylesMap.get('buttonHoverBackgroundColor')"
12
- [hoverTextColor]="stylesMap.get('buttonHoverTextColor')"
7
+ [themeColor]="stylesMap.get('themeColor')"
8
+ [foregroundColor]="stylesMap.get('foregroundColor')"
13
9
  (onButtonClicked)="returnOnAttachmentButtonClicked($event)">
14
10
  </chat-text-button-attachment>
15
11
 
16
12
  <chat-link-button-attachment *ngIf="button.type === 'url'" class="div-button"
17
13
  [button]="button"
18
- [fontSize]="stylesMap.get('buttonFontSize')"
19
- [backgroundColor]="stylesMap.get('buttonBackgroundColor')"
20
- [textColor]="stylesMap.get('buttonTextColor')"
21
- [hoverBackgroundColor]="stylesMap.get('buttonHoverBackgroundColor')"
22
- [hoverTextColor]="stylesMap.get('buttonHoverTextColor')"
14
+ [themeColor]="stylesMap.get('themeColor')"
15
+ [foregroundColor]="stylesMap.get('foregroundColor')"
23
16
  (onButtonClicked)="returnOnAttachmentButtonClicked($event)">
24
17
  </chat-link-button-attachment>
25
18
 
26
19
  <chat-action-button-attachment *ngIf="button.type === 'action' && isLastMessage === true" class="div-button"
27
20
  [button]="button"
28
- [fontSize]="stylesMap.get('buttonFontSize')"
29
- [backgroundColor]="stylesMap.get('buttonBackgroundColor')"
30
- [textColor]="stylesMap.get('buttonTextColor')"
31
- [hoverBackgroundColor]="stylesMap.get('buttonHoverBackgroundColor')"
32
- [hoverTextColor]="stylesMap.get('buttonHoverTextColor')"
21
+ [themeColor]="stylesMap.get('themeColor')"
22
+ [foregroundColor]="stylesMap.get('foregroundColor')"
33
23
  (onButtonClicked)="returnOnAttachmentButtonClicked($event)">
34
24
  </chat-action-button-attachment>
35
25
 
@@ -1,8 +1,10 @@
1
1
  #buttons-in-message {
2
2
  text-align: left;
3
3
  display: block;
4
+ margin-top: -6px;
5
+ margin-bottom: 5px;
4
6
  height: auto;
5
- margin: 0px 20px 5px 10px;
7
+ padding-left: 8px;
6
8
 
7
9
  .div-button {
8
10
  display: inline-block;
@@ -12,9 +12,7 @@ export class MessageAttachmentComponent implements OnInit {
12
12
 
13
13
  // ========= begin:: Input/Output values ============//
14
14
  @Input() message: MessageModel;
15
- @Input() isConversationArchived: boolean;
16
15
  @Input() isLastMessage: boolean;
17
- @Input() fullscreenMode: boolean;
18
16
  @Input() stylesMap: Map<string, string>;
19
17
  @Output() onAttachmentButtonClicked = new EventEmitter<any>();
20
18
  @Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>()
@@ -80,92 +80,55 @@
80
80
  <div tabindex="0"></div>
81
81
 
82
82
  <!-- <div [class.selected]="conversation.uid === uidConvSelected"></div> -->
83
- <div>
84
- <ion-avatar item-start>
85
- <!-- [style.background-color]="conversation.color" -->
86
- <div #avatarPlaceholder class="avatar-placeholder"
87
- [ngStyle]="{'background': 'linear-gradient(rgb(255,255,255) -125%,' + conversation.color + ')'}"
88
- [innerHTML]="conversation.avatar"></div>
89
- <div *ngIf="conversation.image" #avatarImage class="avatar-profile"
90
- [style.background-image]="'url(' + conversation.image + ')'"></div>
91
- <!-- <div *ngIf="getImageAvatar(conversation.sender)" #avatarImage class="avatar-profile" [style.background-image]="'url(' + getImageAvatar(conversation.sender) + ')'"></div> -->
92
- </ion-avatar>
93
- </div>
94
- <div class="conv-container">
95
- <ion-label>
96
- <div class="conversation_project truncate">
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.startsWith(TYPE_GROUP)">
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.startsWith(TYPE_SUPPORT_GROUP)">
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>
113
- </div>
114
- <div style="display: flex;">
115
- <span class="conversation_with truncate" [class.not-read]="conversation.is_new">
116
- {{conversation.conversation_with_fullname}}
117
- </span>
118
- </div>
119
- <div class="conversation_message truncate-conv-msg" [ngClass]="{'truncate-on-desktop': !isApp}">
120
-
121
- <!-- -------------------------------------------------------------------------- -->
122
- <!-- if conversation type is image display the image icon before the message -->
123
- <!-- -------------------------------------------------------------------------- -->
124
- <!-- <div *ngIf="conversation.type === 'image'" class="icon-image-before-msg-wpr">
125
- <ion-icon name="image-outline" class="icon-image-before-msg"></ion-icon>
126
- </div>
127
- <p [class.not-read]="conversation.is_new" class="truncate" [ngClass]="{'truncate-on-desktop': !isApp}"
128
- [innerHTML]="conversation.last_message_text"></p> -->
129
-
130
- <!-- <div *ngIf="conversation.type === 'image'" class="icon-image-before-msg-wpr"> -->
131
- <ion-icon *ngIf="conversation.type === 'image' && conversation.type !== 'file' " name="image-outline"
132
- class="icon-image-before-msg"></ion-icon>
133
- <ion-icon *ngIf="conversation.type === 'file' && conversation.type !== 'image'" name="attach-outline"
134
- class="icon-attach-before-msg"></ion-icon>
135
- <!-- </div> -->
136
- <!-- [innerHTML]="conversation.last_message_text" -->
137
- <span [class.not-read]="conversation.is_new">
138
- {{ conversation.last_message_text }}
139
- </span>
83
+ <ion-avatar item-start>
84
+ <!-- [style.background-color]="conversation.color" -->
85
+ <div #avatarPlaceholder class="avatar-placeholder"
86
+ [ngStyle]="{'background': 'linear-gradient(rgb(255,255,255) -125%,' + conversation.color + ')'}"
87
+ [innerHTML]="conversation.avatar"></div>
88
+ <div *ngIf="conversation.image" #avatarImage class="avatar-profile"
89
+ [style.background-image]="'url(' + conversation.image + ')'"></div>
90
+ <!-- <div *ngIf="getImageAvatar(conversation.sender)" #avatarImage class="avatar-profile" [style.background-image]="'url(' + getImageAvatar(conversation.sender) + ')'"></div> -->
91
+ </ion-avatar>
92
+ <ion-label>
93
+ <div class="conversation_with truncate">{{conversation.conversation_with_fullname}}</div>
94
+ <div class="conversation_message truncate-conv-msg" [ngClass]="{'truncate-on-desktop': !isApp}">
95
+
96
+ <!-- -------------------------------------------------------------------------- -->
97
+ <!-- if conversation type is image display the image icon before the message -->
98
+ <!-- -------------------------------------------------------------------------- -->
99
+ <!-- <div *ngIf="conversation.type === 'image'" class="icon-image-before-msg-wpr">
100
+ <ion-icon name="image-outline" class="icon-image-before-msg"></ion-icon>
140
101
  </div>
141
- </ion-label>
142
- </div>
102
+ <p [class.not-read]="conversation.is_new" class="truncate" [ngClass]="{'truncate-on-desktop': !isApp}"
103
+ [innerHTML]="conversation.last_message_text"></p> -->
143
104
 
144
- <ion-note *ngIf="!conversation.archived" class="conversation_time" [ngClass]="{'is-on-mobile': isApp}">
145
- {{conversation.timestamp | amTimeAgo}}
146
- </ion-note>
147
- <ion-note item-end *ngIf="conversation?.archived" class="conversation_time">
148
- <span *ngIf="(conversation.timestamp | amDateFormat:'YYYY') === currentYear">
149
- {{browserLang === 'en' ? (conversation.timestamp | amDateFormat:'MMM DD') : (conversation.timestamp| amDateFormat:'DD MMM')}}
150
- <!-- {{conversation.timestamp | amDateFormat:'DD MMM'}} -->
151
- </span>
152
- <span *ngIf="(conversation.timestamp | amDateFormat:'YYYY') !== currentYear">
153
- {{browserLang === 'en' ? (conversation.timestamp | amDateFormat:'MMM DD YYYY') : (conversation.timestamp| amDateFormat:'DD MMM YYYY') }}
154
- <!-- {{conversation.timestamp | amDateFormat:'DD MMM YYYY'}} -->
155
- </span>
156
- </ion-note>
105
+ <!-- <div *ngIf="conversation.type === 'image'" class="icon-image-before-msg-wpr"> -->
106
+ <ion-icon *ngIf="conversation.type === 'image' && conversation.type !== 'file' " name="image-outline"
107
+ class="icon-image-before-msg"></ion-icon>
108
+ <ion-icon *ngIf="conversation.type === 'file' && conversation.type !== 'image'" name="attach-outline"
109
+ class="icon-attach-before-msg"></ion-icon>
110
+ <!-- </div> -->
111
+ <!-- [innerHTML]="conversation.last_message_text" -->
112
+ <span [class.not-read]="conversation.is_new">
113
+ {{ conversation.last_message_text }}
114
+ </span>
115
+ </div>
116
+ </ion-label>
117
+
118
+ <ion-note *ngIf="!conversation.archived" class="conversation_time">{{conversation.timestamp | amTimeAgo}}</ion-note>
157
119
 
158
120
  <ion-buttons slot="end">
159
121
  <ion-button *ngIf="!conversation.archived" [tooltip]="archiveTooltip" [options]="tooltip_options" placement="bottom" content-type="template"
160
122
  [ngClass]="{'hide': !isApp, 'button-on-desktop': !isApp, 'button-on-mobile': isApp }"
161
123
  id="{{ 'close_conversation_button' + conversation.uid }}" class="close-conversation-button" ion-button clear
162
124
  item-end (click)="closeConversation(conversation);$event.stopPropagation();" padding>
163
- <ion-icon slot="icon-only" style="display:block;" id="{{ 'close_button_icon' + conversation.uid }}" name="archive-outline" item-end></ion-icon>
125
+ <ion-icon slot="icon-only" style="display:block;" id="{{ 'close_button_icon' + conversation.uid }}"
126
+ color="close-conversation" name="archive-outline" item-end></ion-icon>
164
127
 
165
- <ng-template #archiveTooltip>
166
- <span *ngIf="conversation?.recipient.startsWith('support-group')"> {{ translationsMap?.get('Resolve')}} </span>
167
- <span *ngIf="!conversation?.recipient.startsWith('support-group')"> {{ translationsMap?.get('Archive') }} </span>
168
- </ng-template>
128
+ <ng-template #archiveTooltip>
129
+ <span *ngIf="conversation?.recipient.startsWith('support-group')"> {{ resolve_btn_tooltip}} </span>
130
+ <span *ngIf="!conversation?.recipient.startsWith('support-group')"> {{ archive_btn_tooltip }} </span>
131
+ </ng-template>
169
132
  </ion-button>
170
133
  <!-- <ion-button *ngIf="conversation.archived" class="close-conversation-button" ion-button clear item-end disabled padding>
171
134
  <!- - <ion-icon style="display:block;" id="{{ 'close_button_icon' + conversation.uid }}" color="close-conversation" name="archive-outline" item-end></ion-icon> - ->
@@ -174,7 +137,18 @@
174
137
  </ion-button> -->
175
138
  </ion-buttons>
176
139
 
177
-
140
+ <div item-end *ngIf="conversation?.archived" class="achived-icon-wpr">
141
+ <span *ngIf="(conversation.timestamp | amDateFormat:'YYYY') === currentYear" class="time-in-archived">
142
+ {{browserLang === 'en' ? (conversation.timestamp | amDateFormat:'MMM DD') : (conversation.timestamp| amDateFormat:'DD MMM')}}
143
+
144
+ <!-- {{conversation.timestamp | amDateFormat:'DD MMM'}} -->
145
+ </span>
146
+ <span *ngIf="(conversation.timestamp | amDateFormat:'YYYY') !== currentYear" class="time-in-archived">
147
+ {{browserLang === 'en' ? (conversation.timestamp | amDateFormat:'MMM DD YYYY') : (conversation.timestamp| amDateFormat:'DD MMM YYYY') }}
148
+ <!-- {{conversation.timestamp | amDateFormat:'DD MMM YYYY'}} -->
149
+ </span>
150
+ <!-- <i class="material-icons" item-end style="font-size: 15px;font-weight: 400;color: #666666;"> history </i> -->
151
+ </div>
178
152
 
179
153
  <!-- && !conversation?.archived -->
180
154
  <div item-end class="notification_point"
@@ -9,8 +9,8 @@
9
9
  }
10
10
  ion-item {
11
11
  cursor: pointer;
12
- height: 90px; //70px;
13
- --min-height: 90px; //70px;
12
+ height: 70px;
13
+ --min-height: 70px;
14
14
  position: relative;
15
15
  display: flex;
16
16
  text-decoration: none;
@@ -19,15 +19,6 @@ ion-item {
19
19
  --padding-start: 0;
20
20
  --inner-padding-end: 0;
21
21
  --background-hover: #000000 !important;
22
- --background: transparent;
23
- border-radius: var(--border-radius-item);
24
- margin: 4px 5px;
25
- transition: none;
26
- .conv-container{
27
- width: 84%;
28
- height: 100%;
29
- padding: 12px 0;
30
- }
31
22
  .selected {
32
23
  // border-radius: 10px;
33
24
  // padding-left: 8px;
@@ -42,13 +33,12 @@ ion-item {
42
33
  ion-avatar {
43
34
  position: relative;
44
35
  padding: 0;
45
- margin: 20px 8px 0px 8px;//0 12px 0 8px;
46
- height: 40px; //50px;
47
- width: 40px; //50px;
48
- min-width: 40px; //50px;
49
- min-height: 40px; //50px;
50
- line-height: 40px; //50px;
51
- align-self: end;
36
+ margin: 0 12px 0 8px;
37
+ height: 50px;
38
+ width: 50px;
39
+ min-width: 50px;
40
+ min-height: 50px;
41
+ line-height: 50px;
52
42
  .avatar-placeholder {
53
43
  position: absolute;
54
44
  top: 0;
@@ -57,7 +47,7 @@ ion-item {
57
47
  height: 100%;
58
48
  border-radius: 50%;
59
49
  text-align: center;
60
- font-size: 15px; //20px;
50
+ font-size: 20px;
61
51
  color: #ffffff;
62
52
  font-weight: 500;
63
53
  }
@@ -80,47 +70,22 @@ ion-item {
80
70
  justify-content: center;
81
71
  min-width: 0;
82
72
  padding: 0;
83
- margin: 0;
84
73
  font-family: Helvetica, Helvetica, Arial, sans-serif;
85
74
  line-height: 1.28;
86
75
  text-rendering: optimizeLegibility;
87
- .conversation_project{
88
- display: inline-flex;
89
- align-items: center;
90
- line-height: 1.2rem;
91
- font-weight: 500;
92
- color: #779bbb;
93
- font-size: 10px;
94
- max-width: 90%;
95
- svg {
96
- fill:#779bbb;
97
- vertical-align: sub;
98
- }
99
- span{
100
- padding-left: 5px
101
- }
102
- }
103
76
  .conversation_with {
104
77
  color: rgba(0, 0, 0, 1);
105
78
  font-size: 15px;
106
79
  font-weight: 400;
107
80
  line-height: 1.4;
108
- width: 70% !important;
109
- &.not-read {
110
- font-weight: 600;
111
- color: #3c4858; //#1876f2;
112
- }
113
81
  }
114
-
115
82
  .conversation_message {
116
- margin: 5px 0px;
117
83
  p {
118
- color: #6e6f73; //#3c4858;
119
- font-size: 15px;
84
+ color: rgba(153, 153, 153, 1);
85
+ font-size: 13px;
120
86
  font-weight: 400;
121
87
  height: 18px;
122
88
  vertical-align: middle;
123
- align-self: center;
124
89
  &.not-read {
125
90
  font-weight: 600;
126
91
  color: #1876f2;
@@ -128,13 +93,13 @@ ion-item {
128
93
  }
129
94
 
130
95
  span {
131
- color: rgb(60, 72, 88);
132
- font-size: 12px;
96
+ color: rgba(153, 153, 153, 1);
97
+ font-size: 13px;
133
98
  font-weight: 400;
134
99
  height: 18px;
135
100
  &.not-read {
136
101
  font-weight: 600;
137
- color: #3c4858; //#1876f2;
102
+ color: #1876f2;
138
103
  }
139
104
  }
140
105
  }
@@ -142,15 +107,8 @@ ion-item {
142
107
  ion-note {
143
108
  position: absolute;
144
109
  right: 8px;
145
- top: 40px;
110
+ top: 4px;
146
111
  font-size: 10px;
147
- display: flex;
148
- flex-direction: column;
149
- color: #6e6f73;
150
-
151
- &.is-on-mobile{
152
- top: 10px;
153
- }
154
112
  }
155
113
  ion-buttons {
156
114
  margin: 0;
@@ -162,7 +120,7 @@ ion-item {
162
120
  font-size: 10px;
163
121
  --padding-start: 0px;
164
122
  --padding-end: 0px;
165
- color: var(--basic-blue);//rgba(153, 153, 153, 1);
123
+ color: rgba(153, 153, 153, 1);
166
124
  background-color: transparent;
167
125
  border-radius: 50%; // nk
168
126
  &:hover {
@@ -175,17 +133,17 @@ ion-item {
175
133
  width: 10px;
176
134
  height: 10px;
177
135
  border-radius: 50%;
178
- background-color: var(--basic-blue);
136
+ background-color: rgb(22, 92, 238);
179
137
  position: absolute;
180
138
  right: 6px;
181
139
  bottom: 8px;
182
140
  }
183
141
 
184
142
  .notification_point-on-desktop {
185
- bottom: 22px !important;
143
+ bottom: 29px !important;
186
144
  }
187
145
  .notification_point-on-mobile {
188
- bottom: 22px !important;
146
+ bottom: 29px !important;
189
147
  right: 8px;
190
148
  }
191
149
  }
@@ -251,8 +209,7 @@ ion-item:hover {
251
209
  }
252
210
 
253
211
  .ion-selected {
254
- background: var(--list-bkg-color-selected);
255
- border-right: 4px solid var(--basic-blue);
212
+ --background: rgb(231, 241, 255);
256
213
  }
257
214
 
258
215
  .time-in-archived {
@@ -1,5 +1,3 @@
1
- import { TYPE_GROUP, TYPE_SUPPORT_GROUP } from './../../../../chat21-core/utils/constants';
2
- import { TYPE_DIRECT } from 'src/chat21-core/utils/constants';
3
1
  import { Component, EventEmitter, Input, IterableDiffers, KeyValueDiffers, OnInit, Output, SimpleChange } from '@angular/core';
4
2
  import { ConversationModel } from 'src/chat21-core/models/conversation';
5
3
  import { ImageRepoService } from 'src/chat21-core/providers/abstract/image-repo.service';
@@ -16,7 +14,6 @@ import { AppConfigProvider } from 'src/app/services/app-config';
16
14
  import { DomSanitizer } from '@angular/platform-browser'
17
15
  import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
18
16
  import { AlertController } from '@ionic/angular';
19
- import { CustomTranslateService } from 'src/chat21-core/providers/custom-translate.service';
20
17
  // import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
21
18
  // import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
22
19
 
@@ -38,8 +35,6 @@ export class IonListConversationsComponent extends ListConversationsComponent im
38
35
  public currentYear: any;
39
36
  public browserLang: string;
40
37
 
41
- public translationsMap: Map<string, string> = new Map()
42
-
43
38
  public PROJECT_FOR_PANEL: any;
44
39
  public archive_btn_tooltip: string;
45
40
  public resolve_btn_tooltip: string;
@@ -57,10 +52,6 @@ export class IonListConversationsComponent extends ListConversationsComponent im
57
52
  'hideDelayAfterClick': 3000,
58
53
  'hide-delay': 100
59
54
  };
60
-
61
- TYPE_DIRECT = TYPE_DIRECT;
62
- TYPE_GROUP = TYPE_GROUP;
63
- TYPE_SUPPORT_GROUP = TYPE_SUPPORT_GROUP;
64
55
  /**
65
56
  *
66
57
  * @param iterableDiffers
@@ -72,7 +63,6 @@ export class IonListConversationsComponent extends ListConversationsComponent im
72
63
  public kvDiffers: KeyValueDiffers,
73
64
  public platform: Platform,
74
65
  private translate: TranslateService,
75
- private translateService: CustomTranslateService,
76
66
  private networkService: NetworkService,
77
67
  private appConfigProvider: AppConfigProvider,
78
68
  private sanitizer: DomSanitizer,
@@ -83,6 +73,7 @@ export class IonListConversationsComponent extends ListConversationsComponent im
83
73
  super(iterableDiffers, kvDiffers)
84
74
  this.setMomentLocale();
85
75
 
76
+
86
77
  // if (this.browserLang) {
87
78
 
88
79
  // moment.locale(this.browserLang)
@@ -132,11 +123,16 @@ export class IonListConversationsComponent extends ListConversationsComponent im
132
123
  'ALERT_TITLE',
133
124
  'ActionNotAllowed',
134
125
  'CLOSE_ALERT_CONFIRM_LABEL',
135
- 'YouAreNoLongerAmongTheTeammatesManagingThisConversation',
136
- 'GROUP_CHAT',
137
- 'DIRECT_CHAT'
126
+ 'YouAreNoLongerAmongTheTeammatesManagingThisConversation'
138
127
  ]
139
- this.translationsMap = this.translateService.translateLanguage(translationKeys)
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
+ });
140
136
  }
141
137
 
142
138
  setMomentLocale() {
@@ -5,8 +5,8 @@
5
5
  *ngFor="let canned of tagsCannedFilter; let i = index;"
6
6
  (click)="onClickCannedFN(canned, $event)">
7
7
  <div class="cannedContent">
8
- <ion-input [class.readonly]="canned?.disabled" type="text" [(ngModel)]="canned.title" class="title" id="{{'titleCanned_'+canned._id}}"></ion-input>
9
- <ion-input [class.readonly]="canned?.disabled" type="text" [(ngModel)]="canned.text" class="text truncate"></ion-input>
8
+ <ion-input [(ngModel)]="canned.title" class="title" id="{{'titleCanned_'+canned._id}}" [class.readonly]="canned?.disabled"></ion-input>
9
+ <ion-input [(ngModel)]="canned.text" *ngIf="canned.text" class="text truncate" [class.readonly]="canned?.disabled"></ion-input>
10
10
  </div>
11
11
  <ion-icon class="canned-item-icon" name="checkmark-sharp" slot=end *ngIf="canned.createdBy === loggedUser.uid && !canned.disabled" (click)="onConfirmEditCanned(canned, $event)"></ion-icon>
12
12
  <ion-icon class="canned-item-icon" name="pencil-sharp" slot=end *ngIf="canned.createdBy === loggedUser.uid && canned.disabled" (click)="onEditCanned(canned, $event)"></ion-icon>
@@ -18,16 +18,16 @@
18
18
  <label class="add-canned-response-label" >{{translationMap?.get('AddNewCannedResponse')}}</label>
19
19
  </ion-item>
20
20
  </div>
21
- <!-- LOADER -->
22
- <div class="loader" *ngIf="tagsCannedFilter.length === 0">
21
+ <!-- LOADER -->
22
+ <div class="loader" *ngIf="tagsCannedFilter.length === 0">
23
23
  <div class="box">
24
24
  <!-- <div class="container">
25
- <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
26
- <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
27
- <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
28
- <span class="circle" [ngStyle]="{'background-color': stylesMap?.get('themeColor')}"></span>
25
+ <span class="circle"></span>
26
+ <span class="circle"></span>
27
+ <span class="circle"></span>
28
+ <span class="circle"></span>
29
29
  </div> -->
30
- <div class="spinner" [ngStyle]="{'border-top-color': stylesMap?.get('themeColor')}"></div>
30
+ <div class="spinner"></div>
31
31
  <div class="label">{{translationMap.get('LABEL_LOADING')}}</div>
32
32
  </div>
33
33
  </div>
@@ -94,30 +94,23 @@
94
94
  width: 100%;
95
95
  }
96
96
 
97
- ion-input, ion-textarea {
97
+ ion-input {
98
98
  --padding-bottom: 0px;
99
99
  --padding-top: 0px;
100
100
  &.text{
101
101
  font-style: italic;
102
- margin-top: 2px;
103
102
  }
104
103
  &.title {
105
104
  font-weight: 500;
106
105
  }
107
-
108
106
  &.readonly{
109
107
  cursor: pointer;
110
108
  pointer-events: none;
111
109
  }
112
110
  }
113
- // .native-input[disabled] {
114
- // opacity: 10 !important;
115
- // cursor: pointer;
116
- // }
117
- // .native-textarea[disabled] {
118
- // opacity: 10 !important;
119
- // cursor: pointer;
120
- // }
111
+ .native-input[disabled] {
112
+ opacity: 10 !important;
113
+ }
121
114
  ion-icon {
122
115
  zoom: 0.7;
123
116
  }
@@ -190,7 +183,7 @@ ion-item {
190
183
  width: 15px;
191
184
  height: 15px;
192
185
  border-radius: 50%;
193
- background-color: var(--basic-blue);
186
+ background-color: #1877f2;
194
187
  animation: move 500ms linear 0ms infinite;
195
188
  margin-right: 30px;
196
189
 
@@ -209,14 +202,13 @@ ion-item {
209
202
  animation: grow 500ms linear 0s infinite reverse;
210
203
  }
211
204
  }
212
-
213
205
  }
214
206
 
215
207
  .spinner {
216
208
  margin: auto;
217
209
  border: 8px solid #EAF0F6;
218
210
  border-radius: 50%;
219
- border-top: 8px solid var(--basic-blue);
211
+ border-top: 8px solid #1877f2;
220
212
  width: 50px;
221
213
  height: 50px;
222
214
  animation: spinner 1s linear infinite;
@@ -227,6 +219,7 @@ ion-item {
227
219
  100% { transform: rotate(360deg); }
228
220
  }
229
221
 
222
+
230
223
  .label{
231
224
  text-align: center;
232
225
  margin-top: 10px;
@@ -20,7 +20,6 @@ export class CannedResponseComponent implements OnInit {
20
20
  @Input() conversationWith: string;
21
21
  @Input() conversationWithFullname: string;
22
22
  @Input() currentString: string;
23
- @Input() stylesMap: Map<string, string>;
24
23
  @Input() translationMap: Map<string, string>;
25
24
  @Output() onLoadedCannedResponses = new EventEmitter<[any]>();
26
25
  @Output() onClickCanned = new EventEmitter<any>();
@@ -195,6 +194,7 @@ export class CannedResponseComponent implements OnInit {
195
194
  // this.logger.log('[CANNED] filterItems tagsCannedClone ', items, ' searchTerm: ', searchTerm)
196
195
  //this.logger.log("filterItems::: ",searchTerm);
197
196
  return items.filter((item) => {
197
+ //this.logger.log("filterItems::: ", item.title.toString().toLowerCase());
198
198
  // this.logger.log('[CANNED] filtered tagsCannedClone item ', item)
199
199
  return item.title.toString().toLowerCase().indexOf(searchTerm.toString().toLowerCase()) > -1
200
200
  })