@chat21/chat21-ionic 3.0.81-rc.2 → 3.0.81

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 (150) hide show
  1. package/CHANGELOG.md +4 -73
  2. package/README.md +2 -2
  3. package/package.json +2 -2
  4. package/src/app/app.component.html +1 -7
  5. package/src/app/app.component.scss +2 -18
  6. package/src/app/app.component.ts +17 -113
  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 +86 -168
  11. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +2 -39
  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 +1 -1
  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 -62
  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 +7 -7
  40. package/src/app/components/canned-response/canned-response.component.scss +4 -10
  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 +6 -8
  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 +1 -2
  71. package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -3
  72. package/src/app/components/conversation-info/info-direct/info-direct.component.html +9 -1
  73. package/src/app/components/conversation-info/info-direct/info-direct.component.ts +2 -0
  74. package/src/app/components/conversation-info/info-group/info-group.component.html +108 -44
  75. package/src/app/components/conversation-info/info-group/info-group.component.scss +61 -101
  76. package/src/app/components/conversation-info/info-group/info-group.component.ts +0 -1
  77. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.html → ddp-header/ddp-header.component.html} +3 -3
  78. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.scss → ddp-header/ddp-header.component.scss} +4 -16
  79. package/src/app/components/{navbar/navbar.component.spec.ts → ddp-header/ddp-header.component.spec.ts} +6 -6
  80. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.ts → ddp-header/ddp-header.component.ts} +16 -7
  81. package/src/app/components/project-item/project-item.component.html +149 -98
  82. package/src/app/components/project-item/project-item.component.scss +35 -42
  83. package/src/app/components/project-item/project-item.component.ts +4 -16
  84. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +3 -3
  85. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +7 -2
  86. package/src/app/components/utils/user-presence/user-presence.component.html +2 -7
  87. package/src/app/components/utils/user-presence/user-presence.component.scss +18 -35
  88. package/src/app/components/utils/user-presence/user-presence.component.ts +10 -6
  89. package/src/app/pages/contacts-directory/contacts-directory.page.html +1 -1
  90. package/src/app/pages/contacts-directory/contacts-directory.page.scss +0 -41
  91. package/src/app/pages/contacts-directory/contacts-directory.page.ts +0 -2
  92. package/src/app/pages/conversation-detail/conversation-detail.module.ts +8 -0
  93. package/src/app/pages/conversation-detail/conversation-detail.page.html +23 -40
  94. package/src/app/pages/conversation-detail/conversation-detail.page.scss +250 -40
  95. package/src/app/pages/conversation-detail/conversation-detail.page.ts +110 -182
  96. package/src/app/pages/conversations-list/conversations-list.page.html +8 -11
  97. package/src/app/pages/conversations-list/conversations-list.page.scss +2 -11
  98. package/src/app/pages/conversations-list/conversations-list.page.ts +22 -25
  99. package/src/app/pages/create-canned-response/create-canned-response.page.ts +13 -13
  100. package/src/app/pages/loader-preview/loader-preview.page.html +1 -1
  101. package/src/app/pages/loader-preview/loader-preview.page.scss +0 -4
  102. package/src/app/pages/loader-preview/loader-preview.page.ts +2 -1
  103. package/src/app/pages/profile-info/profile-info.page.html +4 -2
  104. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +1 -1
  105. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +0 -42
  106. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +0 -1
  107. package/src/app/services/canned-responses/canned-responses.service.ts +0 -26
  108. package/src/app/services/tiledesk/tiledesk.service.ts +26 -2
  109. package/src/app/shared/shared.module.ts +33 -24
  110. package/src/assets/i18n/ar.json +265 -278
  111. package/src/assets/i18n/az.json +1 -14
  112. package/src/assets/i18n/de.json +2 -15
  113. package/src/assets/i18n/en.json +2 -15
  114. package/src/assets/i18n/es.json +2 -15
  115. package/src/assets/i18n/fr.json +1 -14
  116. package/src/assets/i18n/it.json +1 -14
  117. package/src/assets/i18n/kk.json +2 -15
  118. package/src/assets/i18n/pt.json +2 -15
  119. package/src/assets/i18n/ru.json +1 -14
  120. package/src/assets/i18n/sr.json +264 -277
  121. package/src/assets/i18n/sv.json +2 -15
  122. package/src/assets/i18n/tr.json +2 -15
  123. package/src/assets/i18n/uk.json +2 -15
  124. package/src/assets/i18n/uz.json +1 -14
  125. package/src/assets/js/chat21client.js +149 -177
  126. package/src/chat-config-native-mqtt.json +0 -3
  127. package/src/chat21-core/models/conversation.ts +1 -0
  128. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +9 -7
  129. package/src/chat21-core/utils/constants.ts +1 -6
  130. package/src/chat21-core/utils/user-typing/user-typing.component.html +5 -8
  131. package/src/chat21-core/utils/user-typing/user-typing.component.scss +17 -87
  132. package/src/chat21-core/utils/user-typing/user-typing.component.ts +94 -12
  133. package/src/chat21-core/utils/utils.ts +10 -38
  134. package/src/global.scss +56 -52
  135. package/src/index.html +2 -2
  136. package/src/variables.scss +10 -30
  137. package/deploy_amazon_beta.sh +0 -29
  138. package/deploy_amazon_prod.sh +0 -30
  139. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component_2.html +0 -116
  140. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.html +0 -12
  141. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.scss +0 -14
  142. package/src/app/components/navbar/navbar.component.html +0 -103
  143. package/src/app/components/navbar/navbar.component.scss +0 -249
  144. package/src/app/components/navbar/navbar.component.ts +0 -189
  145. package/src/app/services/projects/projects.service.spec.ts +0 -12
  146. package/src/app/services/projects/projects.service.ts +0 -43
  147. package/src/assets/sounds/interface-start.mp3 +0 -0
  148. package/src/assets/sounds/wheep-wheep.mp3 +0 -0
  149. package/src/chat21-core/models/projects.ts +0 -27
  150. package/src/chat21-core/utils/convertRequestToConversation.ts +0 -41
@@ -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,14 +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
- .conv-container{
26
- width: 84%;
27
- height: 100%;
28
- padding: 12px 0;
29
- }
30
22
  .selected {
31
23
  // border-radius: 10px;
32
24
  // padding-left: 8px;
@@ -41,13 +33,12 @@ ion-item {
41
33
  ion-avatar {
42
34
  position: relative;
43
35
  padding: 0;
44
- margin: 20px 8px 0px 8px;//0 12px 0 8px;
45
- height: 40px; //50px;
46
- width: 40px; //50px;
47
- min-width: 40px; //50px;
48
- min-height: 40px; //50px;
49
- line-height: 40px; //50px;
50
- 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;
51
42
  .avatar-placeholder {
52
43
  position: absolute;
53
44
  top: 0;
@@ -56,7 +47,7 @@ ion-item {
56
47
  height: 100%;
57
48
  border-radius: 50%;
58
49
  text-align: center;
59
- font-size: 15px; //20px;
50
+ font-size: 20px;
60
51
  color: #ffffff;
61
52
  font-weight: 500;
62
53
  }
@@ -79,47 +70,22 @@ ion-item {
79
70
  justify-content: center;
80
71
  min-width: 0;
81
72
  padding: 0;
82
- margin: 0;
83
73
  font-family: Helvetica, Helvetica, Arial, sans-serif;
84
74
  line-height: 1.28;
85
75
  text-rendering: optimizeLegibility;
86
- .conversation_project{
87
- display: inline-flex;
88
- align-items: center;
89
- line-height: 1.2rem;
90
- font-weight: 500;
91
- color: #779bbb;
92
- font-size: 10px;
93
- max-width: 90%;
94
- svg {
95
- fill:#779bbb;
96
- vertical-align: sub;
97
- }
98
- span{
99
- padding-left: 5px
100
- }
101
- }
102
76
  .conversation_with {
103
77
  color: rgba(0, 0, 0, 1);
104
78
  font-size: 15px;
105
79
  font-weight: 400;
106
80
  line-height: 1.4;
107
- width: 70% !important;
108
- &.not-read {
109
- font-weight: 600;
110
- color: #3c4858; //#1876f2;
111
- }
112
81
  }
113
-
114
82
  .conversation_message {
115
- margin: 5px 0px;
116
83
  p {
117
- color: #6e6f73; //#3c4858;
118
- font-size: 15px;
84
+ color: rgba(153, 153, 153, 1);
85
+ font-size: 13px;
119
86
  font-weight: 400;
120
87
  height: 18px;
121
88
  vertical-align: middle;
122
- align-self: center;
123
89
  &.not-read {
124
90
  font-weight: 600;
125
91
  color: #1876f2;
@@ -127,13 +93,13 @@ ion-item {
127
93
  }
128
94
 
129
95
  span {
130
- color: rgb(60, 72, 88);
131
- font-size: 12px;
96
+ color: rgba(153, 153, 153, 1);
97
+ font-size: 13px;
132
98
  font-weight: 400;
133
99
  height: 18px;
134
100
  &.not-read {
135
101
  font-weight: 600;
136
- color: #3c4858; //#1876f2;
102
+ color: #1876f2;
137
103
  }
138
104
  }
139
105
  }
@@ -141,15 +107,8 @@ ion-item {
141
107
  ion-note {
142
108
  position: absolute;
143
109
  right: 8px;
144
- top: 40px;
110
+ top: 4px;
145
111
  font-size: 10px;
146
- display: flex;
147
- flex-direction: column;
148
- color: #6e6f73;
149
-
150
- &.is-on-mobile{
151
- top: 10px;
152
- }
153
112
  }
154
113
  ion-buttons {
155
114
  margin: 0;
@@ -161,7 +120,7 @@ ion-item {
161
120
  font-size: 10px;
162
121
  --padding-start: 0px;
163
122
  --padding-end: 0px;
164
- color: var(--basic-blue);//rgba(153, 153, 153, 1);
123
+ color: rgba(153, 153, 153, 1);
165
124
  background-color: transparent;
166
125
  border-radius: 50%; // nk
167
126
  &:hover {
@@ -174,17 +133,17 @@ ion-item {
174
133
  width: 10px;
175
134
  height: 10px;
176
135
  border-radius: 50%;
177
- background-color: var(--basic-blue);
136
+ background-color: rgb(22, 92, 238);
178
137
  position: absolute;
179
138
  right: 6px;
180
139
  bottom: 8px;
181
140
  }
182
141
 
183
142
  .notification_point-on-desktop {
184
- bottom: 22px !important;
143
+ bottom: 29px !important;
185
144
  }
186
145
  .notification_point-on-mobile {
187
- bottom: 22px !important;
146
+ bottom: 29px !important;
188
147
  right: 8px;
189
148
  }
190
149
  }
@@ -250,8 +209,7 @@ ion-item:hover {
250
209
  }
251
210
 
252
211
  .ion-selected {
253
- background: var(--list-bkg-color-selected);
254
- border-right: 4px solid var(--basic-blue);
212
+ --background: rgb(231, 241, 255);
255
213
  }
256
214
 
257
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() {
@@ -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,12 +94,11 @@
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;
@@ -107,11 +106,6 @@
107
106
  }
108
107
  .native-input[disabled] {
109
108
  opacity: 10 !important;
110
- cursor: pointer;
111
- }
112
- .native-textarea[disabled] {
113
- opacity: 10 !important;
114
- cursor: pointer;
115
109
  }
116
110
  ion-icon {
117
111
  zoom: 0.7;
@@ -185,7 +179,7 @@ ion-item {
185
179
  width: 15px;
186
180
  height: 15px;
187
181
  border-radius: 50%;
188
- background-color: var(--basic-blue);
182
+ background-color: #1877f2;
189
183
  animation: move 500ms linear 0ms infinite;
190
184
  margin-right: 30px;
191
185
 
@@ -204,14 +198,13 @@ ion-item {
204
198
  animation: grow 500ms linear 0s infinite reverse;
205
199
  }
206
200
  }
207
-
208
201
  }
209
202
 
210
203
  .spinner {
211
204
  margin: auto;
212
205
  border: 8px solid #EAF0F6;
213
206
  border-radius: 50%;
214
- border-top: 8px solid var(--basic-blue);
207
+ border-top: 8px solid #1877f2;
215
208
  width: 50px;
216
209
  height: 50px;
217
210
  animation: spinner 1s linear infinite;
@@ -222,6 +215,7 @@ ion-item {
222
215
  100% { transform: rotate(360deg); }
223
216
  }
224
217
 
218
+
225
219
  .label{
226
220
  text-align: center;
227
221
  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
  })
@@ -1,24 +1,28 @@
1
1
 
2
- <ion-searchbar id="contacts-searchbar" debounce="500" (ionInput)="onSearchInput($event)"></ion-searchbar>
3
-
4
- <ion-item button="true" lines="none" class="ion-no-padding" *ngFor="let user of contacts" (click)="goToChat(user)">
5
- <div tabindex="0"></div>
6
- <!-- <div [class.selected]="user.uid === uidUserSelected"></div> [style.background-color]="user.color"-->
7
- <ion-avatar slot="start">
8
- <div #avatarPlaceholder class="avatar-placeholder" [ngStyle]="{'background': 'linear-gradient(rgb(255,255,255) -125%,' + user.color + ')'}" [innerHTML]="user.avatar"></div>
9
- <div *ngIf="user.imageurl" #avatarImage class="avatar-profile" [style.background-image]="'url(' + user.imageurl + ')'"></div>
10
- <!-- <div *ngIf="getImageAvatar(conversation.sender)" #avatarImage class="avatar-profile" [style.background-image]="'url(' + getImageAvatar(conversation.sender) + ')'"></div> -->
11
- <div class="user-presence">
12
- <app-presence
13
- [isOnline]="user.online">
14
- </app-presence>
15
- </div>
16
- </ion-avatar>
17
-
18
- <ion-label>
19
- <h2>{{ user.fullname }}</h2>
20
- <!-- <p>{{ user.uid }}</p> -->
21
- </ion-label>
22
-
23
- </ion-item>
2
+ <ion-content padding>
3
+ <ion-searchbar id="contacts-searchbar" debounce="500" (ionInput)="onSearchInput($event)"></ion-searchbar>
4
+ <ion-list>
5
+
6
+ <ion-item button="true" lines="none" class="ion-no-padding" *ngFor="let user of contacts" (click)="goToChat(user)">
7
+ <div tabindex="0"></div>
8
+ <!-- <div [class.selected]="user.uid === uidUserSelected"></div> [style.background-color]="user.color"-->
9
+ <ion-avatar slot="start">
10
+ <div #avatarPlaceholder class="avatar-placeholder" [ngStyle]="{'background': 'linear-gradient(rgb(255,255,255) -125%,' + user.color + ')'}" [innerHTML]="user.avatar"></div>
11
+ <div *ngIf="user.imageurl" #avatarImage class="avatar-profile" [style.background-image]="'url(' + user.imageurl + ')'"></div>
12
+ <!-- <div *ngIf="getImageAvatar(conversation.sender)" #avatarImage class="avatar-profile" [style.background-image]="'url(' + getImageAvatar(conversation.sender) + ')'"></div> -->
13
+ <div class="user-presence">
14
+ <app-presence
15
+ [isOnline]="user.online">
16
+ </app-presence>
17
+ </div>
18
+ </ion-avatar>
19
+
20
+ <ion-label>
21
+ <h2>{{ user.fullname }}</h2>
22
+ <!-- <p>{{ user.uid }}</p> -->
23
+ </ion-label>
24
+
25
+ </ion-item>
24
26
 
27
+ </ion-list>
28
+ </ion-content>
@@ -1,24 +1,22 @@
1
1
  ion-item {
2
2
  cursor: pointer;
3
3
  height: 64px;
4
- --min-height: 64px;
5
4
  position: relative;
6
5
  display: flex;
7
6
  text-decoration: none;
8
- margin: 4px 5px;
7
+ padding-left: 8px;
8
+ padding-right: 8px;
9
9
  --padding-start: 0;
10
10
  --inner-padding-end: 0;
11
- --background: transparent;
12
- --background-hover: #000000 !important;
13
- border-radius: var(--border-radius-item);
14
-
15
11
  .selected {
12
+ border-radius: 10px;
13
+ padding-left: 8px;
14
+ padding-right: 8px;
16
15
  position: absolute;
17
16
  width: 100%;
18
17
  height: 100%;
19
18
  z-index:-1;
20
- background: var(--list-bkg-color-selected);
21
- border-right: 4px solid var(--basic-blue);
19
+ background-color: rgba(0, 0, 0, .05);
22
20
  }
23
21
  ion-avatar {
24
22
  position: relative;
@@ -0,0 +1,3 @@
1
+ <!-- <div class="row-day">
2
+ <div class="header-day">{{messageDate | amTimeAgo}}</div>
3
+ </div> -->
@@ -0,0 +1,21 @@
1
+ .row-day {
2
+ padding: 0 10px;
3
+ text-align: center;
4
+ width: 100%;
5
+ margin-top: 15px;
6
+ margin-bottom: 5px;
7
+ }
8
+ .header-day {
9
+ background-color: var(--transparent);
10
+ padding-top: 4px;
11
+ padding-bottom: 4px;
12
+ padding-left: 12px;
13
+ padding-right: 12px;
14
+ vertical-align: middle;
15
+ border-radius: 13px;
16
+ font-size: 14px;
17
+ font-weight: bold;
18
+ color: var(--basic-gray);
19
+ display: inline-block;
20
+ }
21
+
@@ -0,0 +1,24 @@
1
+ import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
+ import { IonicModule } from '@ionic/angular';
3
+
4
+ import { BubbleDayMessageComponent } from './bubble-day-message.component';
5
+
6
+ describe('BubbleDayMessageComponent', () => {
7
+ let component: BubbleDayMessageComponent;
8
+ let fixture: ComponentFixture<BubbleDayMessageComponent>;
9
+
10
+ beforeEach(async(() => {
11
+ TestBed.configureTestingModule({
12
+ declarations: [ BubbleDayMessageComponent ],
13
+ imports: [IonicModule.forRoot()]
14
+ }).compileComponents();
15
+
16
+ fixture = TestBed.createComponent(BubbleDayMessageComponent);
17
+ component = fixture.componentInstance;
18
+ fixture.detectChanges();
19
+ }));
20
+
21
+ it('should create', () => {
22
+ expect(component).toBeTruthy();
23
+ });
24
+ });