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

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 +9 -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 +6 -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 +90 -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
@@ -52,19 +52,8 @@
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>
65
55
 
66
56
  <div class="conversation-wpr" style="height: 100%;">
67
-
68
57
  <div *ngFor="let message of messages; let i = index; let first = first; trackBy: trackByFn">
69
58
 
70
59
  <ng-container *ngIf="first || (messages[i - 1].timestamp | date:'d') !== (message.timestamp | date:'d')">
@@ -88,28 +77,16 @@
88
77
  <!-- message SENDER:: -->
89
78
  <div role="messaggio" *ngIf="messageType(MESSAGE_TYPE_MINE, message)" class="msg_container base_sent">
90
79
 
91
- <div class="message-date-hover"> {{message.timestamp | date:'HH:mm' }} </div>
92
-
93
- <ng-container *ngIf="areVisibleCAR && supportMode">
94
- <ion-button shape="round" size="small" class="btn-add-msg canned" ion-button fill="clear"
95
- (click)="presentCreateCannedResponseModal(message)" [tooltip]="addAsCannedResponseTooltipText"
96
- [options]="tooltipOptions" placement="bottom">
97
- <ion-icon slot="icon-only" name="flash-outline" style="font-size: 1em;"> </ion-icon>
98
- <span class="add-canned-response-add-icon">+</span>
99
- </ion-button>
100
- </ng-container>
101
-
102
80
  <!--backgroundColor non viene ancora usato -->
103
81
  <chat-bubble-message class="messages msg_sent" id="message_msg_sent" style="position: relative;"
104
82
  [ngClass]="{'has-metadata': (isImage(message) || isFrame(message)), 'privateMsg': (message?.attributes && message?.attributes?.subtype === 'private')}"
105
- [class.no-background]="(isImage(message) || isFrame(message)) && message?.text.trim() === '' "
106
83
  [class.emoticon]="isEmojii(message?.text)"
107
- [ngStyle]="{'background': stylesMap.get('bubbleSentBackground'), 'color': stylesMap.get('bubbleSentTextColor')}"
108
84
  [ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}"
109
85
  [message]="message"
110
- [fontColor]="stylesMap.get('bubbleSentTextColor')"
111
- [fontSize]="stylesMap.get('fontSize')"
112
- [fontFamily]="stylesMap.get('fontFamily')"
86
+ [textColor]="'col-msg-sent'"
87
+ [addAsCannedResponseTooltipText]="addAsCannedResponseTooltipText"
88
+ [areVisibleCAR]="areVisibleCAR"
89
+ [supportMode]="supportMode"
113
90
  (onBeforeMessageRender)="onBeforeMessageRenderFN($event)"
114
91
  (onAfterMessageRender)="onAfterMessageRenderFN($event)"
115
92
  (onElementRendered)="onElementRenderedFN($event)">
@@ -124,14 +101,13 @@
124
101
 
125
102
  </div>
126
103
 
127
- <!-- message RECIPIENT + TIME :: -->
128
- <!-- <div class="msg_container base_receive" *ngIf="messageType(MESSAGE_TYPE_OTHERS, message) && isChannelTypeGroup(channelType) && !isSameSender(message?.sender, i)">
129
- <div role="messaggio" class="message_sender_fullname">
130
- {{message.sender_fullname}}
131
- </div>
132
- <div class="message-date"> {{message.timestamp | date:'HH:mm' }} </div>
133
- </div> -->
134
- <!-- message RECIPIENT :: -->
104
+ <!-- message RECIPIENT:: -->
105
+ <div role="messaggio" *ngIf="messageType(MESSAGE_TYPE_OTHERS, message) && isChannelTypeGroup(channelType) && !isSameSender(message?.sender, i)"
106
+ class="message_sender_fullname">
107
+ {{message.sender_fullname}}
108
+ </div>
109
+
110
+
135
111
  <div role="messaggio" *ngIf="messageType(MESSAGE_TYPE_OTHERS, message)" class="msg_container base_receive">
136
112
 
137
113
  <!-- <chat-avatar-image class="slide-in-left"
@@ -141,38 +117,19 @@
141
117
  </chat-avatar-image> -->
142
118
 
143
119
  <!--backgroundColor non viene ancora usato -->
144
- <chat-bubble-message class="messages msg_receive" id="message_msg_receive"
120
+
121
+ <chat-bubble-message class="messages msg_receive" id="message_msg_receive" style="position: relative;"
145
122
  [ngClass]="{'has-metadata': (isImage(message) || isFrame(message)), 'privateMsg': (message?.attributes && message?.attributes?.subtype === 'private')}"
146
- [class.no-background]="(isImage(message) || isFrame(message)) && message?.text.trim() === '' "
147
123
  [class.emoticon]="isEmojii(message?.text)"
148
- [ngStyle]="{'background': stylesMap?.get('bubbleReceivedBackground'), 'color': stylesMap.get('bubbleReceivedTextColor')}"
149
- [isSameSender]="isSameSender(message?.sender, i)"
150
124
  [message]="message"
151
- [fontColor]="stylesMap?.get('bubbleReceivedTextColor')"
152
- [fontSize]="stylesMap?.get('fontSize')"
153
- [fontFamily]="stylesMap?.get('fontFamily')"
125
+ [textColor]="'black'"
126
+ [addAsCannedResponseTooltipText]="addAsCannedResponseTooltipText"
127
+ [areVisibleCAR]="areVisibleCAR"
128
+ [supportMode]="supportMode"
154
129
  (onBeforeMessageRender)="onBeforeMessageRenderFN($event)"
155
130
  (onAfterMessageRender)="onAfterMessageRenderFN($event)"
156
131
  (onElementRendered)="onElementRenderedFN($event)">
157
132
  </chat-bubble-message>
158
-
159
- <ng-container *ngIf="areVisibleCAR && supportMode">
160
- <ion-button shape="round" size="small" class="btn-add-msg canned" ion-button fill="clear"
161
- (click)="presentCreateCannedResponseModal(message)" [tooltip]="addAsCannedResponseTooltipText"
162
- [options]="tooltipOptions" placement="bottom">
163
- <ion-icon slot="icon-only" name="flash-outline" style="font-size: 1em;"> </ion-icon>
164
- <span class="add-canned-response-add-icon">+</span>
165
- </ion-button>
166
- </ng-container>
167
- <!-- <ng-container *ngIf="supportMode">
168
- <ion-button shape="round" size="small" class="btn-add-msg emoji" ion-button fill="clear"
169
- (click)="presentEmojiiModal()" tooltip="{{addAsCannedResponseTooltipText}}"
170
- [options]="tooltipOptions" placement="bottom">
171
- <ion-icon slot="icon-only" name="happy-outline" style="font-size: 1em;"> </ion-icon>
172
- </ion-button>
173
- </ng-container> -->
174
-
175
- <div class="message-date-hover" *ngIf="isChannelTypeGroup(channelType)"> {{message.timestamp | date:'HH:mm' }} </div>
176
133
  </div>
177
134
 
178
135
  <!-- message type:: button && -->
@@ -190,26 +147,15 @@
190
147
 
191
148
  <!-- uploadProgress -> {{ uploadProgress }} -->
192
149
  <div *ngIf="uploadProgress !== 100" class="msg_container base_sent" style="margin-right: 20px;">
193
- <div class="chat21-spinner active" id="chat21-spinner" style="margin: 0px 6px 0px;">
194
- <div class="chat21-bounce1" [ngStyle]="{'background-color': stylesMap.get('themeColor')}"></div>
195
- <div class="chat21-bounce2" [ngStyle]="{'background-color': stylesMap.get('themeColor'), 'opacity': 0.4}"></div>
196
- <div class="chat21-bounce3" [ngStyle]="{'background-color': stylesMap.get('themeColor'), 'opacity': 0.6}"></div>
197
- <!-- <span [ngStyle]="{'color': stylesMap.get('themeColor')}">{{translationMap.get('LABEL_LOADING')}}</span> -->
150
+ <div class="messages msg_sent">
151
+ <div class="spinner">
152
+ <div class="bounce1"></div>
153
+ <div class="bounce2"></div>
154
+ <div class="bounce3"></div>
155
+ </div>
198
156
  </div>
199
157
  </div>
200
158
 
201
- <div *ngIf="isTypings" class="msg_container base_receive typing_container">
202
- <!-- !isSameSender(idUserTypingNow, i) -->
203
- <!-- <div *ngIf="nameUserTypingNow">{{nameUserTypingNow}}</div> -->
204
- <user-typing
205
- [themeColor]="stylesMap?.get('themeColor')"
206
- [translationMap]="translationMap"
207
- [idUserTypingNow]="idUserTypingNow"
208
- [nameUserTypingNow]="nameUserTypingNow">
209
- </user-typing>
210
- <div class="typing_info" *ngIf="nameUserTypingNow"> {{nameUserTypingNow}} {{translationMap.get('LABEL_IS_WRITING')}}</div>
211
- </div>
212
-
213
159
  </div>
214
160
 
215
161
  <!-- fileType > {{fileType }} uploadProgress {{uploadProgress}} -->
@@ -33,60 +33,6 @@
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: var(--padding-conversation-detail);
51
- border-top-right-radius: var(--border-radius-content);
52
- &:not(.mobile){
53
- top: calc(60px + var(--padding-conversation-detail));
54
- }
55
- }
56
-
57
- &.mobile{
58
- right: 0px;
59
- }
60
- &:not(.mobile):not(.close){
61
- right: calc(300px + var(--padding-conversation-detail));
62
- top: calc(60px + var(--padding-conversation-detail));
63
- }
64
- &::before{
65
- content: "";
66
- width: 102px;
67
- height: 34px;
68
- background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjM0IiB2aWV3Qm94PSIwIDAgMTAyIDM0IiB3aWR0aD0iMTAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0ibTEwMiAwaC0xMDJsLjA3MTQwOC40MTk3NTNjMTEuMzE5MTkyLS4wMTU1NTggMjIuMjg4MTkyIDMuOTIwMzM3IDMxLjAxMjA5MiAxMS4xMjc2NDdsNy40ODk0IDYuNTAyIDEuNjUwOCAxLjQyMjkgNi42OTU1IDUuNzhjNi41Mzc0IDUuNjQwNSAxNC44ODU3IDguNzQ1MSAyMy41MjI3IDguNzQ3N2gzMS41NTQxeiIKICAgICAgICAgIGZpbGw9IiNlMmU4ZWYiLz4KPC9zdmc+);
69
- position: relative;
70
- left: 50px;
71
- z-index: -1;
72
- }
73
-
74
- ion-button {
75
- text-transform: unset;
76
- color: var(--basic-blue);
77
- &:hover {
78
- --background-hover: transparent;
79
- text-decoration: underline;
80
- text-decoration-color: var(--basic-blue);
81
- }
82
- }
83
-
84
- ion-icon{
85
- margin: 5px;
86
- }
87
- }
88
-
89
-
90
36
  ion-item {
91
37
  --padding-end: 0px;
92
38
  --inner-padding-end: 0px;
@@ -114,33 +60,12 @@ ion-item {
114
60
 
115
61
  .message_sender_fullname {
116
62
  font-size: 0.9em;
117
- margin: 0px 10px 0px 10px;
63
+ margin: 0 0 1px 10px;
118
64
  // color: var(--gray);
119
65
  font-weight: 500;
120
66
  color: #080f1a;
121
67
  }
122
68
 
123
- .typing_container{
124
- display:flex;
125
- align-items: center;
126
-
127
- user-typing {
128
- text-align: right;
129
- }
130
- .typing_info{
131
- color: var(--basic-gray);
132
- margin-left: 10px;
133
- font-size: 12px;
134
- animation: blinker 1s linear infinite;
135
-
136
- @keyframes blinker {
137
- 50% {
138
- opacity: 0;
139
- }
140
- }
141
- }
142
- }
143
-
144
69
  .messages {
145
70
  border-radius: 18px;
146
71
  padding: 0;
@@ -157,17 +82,13 @@ ion-item {
157
82
  align-items: flex-end;
158
83
  justify-content: flex-end;
159
84
  // padding: 2px 0px 4px 40px;
160
- padding: 0px 0px 6px 40px;
161
-
162
- &:hover .message-date-hover, &:hover .btn-add-msg{
163
- display: block;
164
- }
165
-
85
+ padding: 2px 0px 14px 40px; // edited to display the date at the bottom of the "message bubble"
166
86
  .msg_sent {
167
87
  background-color: var(--bubble-blue);
168
88
  color: var(--col-msg-sent);
169
- margin: 0px 0px 0px 0px;
170
- max-width: calc(100% - 85px);
89
+ margin-right: 4px;
90
+ margin-left: 4px;
91
+ max-width: calc(100% - 70px);
171
92
  min-width: 14px;
172
93
  border-top-right-radius: 8px;
173
94
  border-bottom-right-radius: 0px;
@@ -177,9 +98,6 @@ ion-item {
177
98
  color: var(--bubble-privateMsgColor)
178
99
  }
179
100
  }
180
- .no-background{
181
- background: transparent!important;
182
- }
183
101
  .emoticon {
184
102
  background: unset !important;
185
103
  font-size: 4em;
@@ -194,17 +112,8 @@ ion-item {
194
112
 
195
113
  /** recive message **/
196
114
  .base_receive {
197
- padding: 0px 20px 6px 0px;
198
- .message-date{
199
- color: #647491;
200
- font-size: 12px;
201
- align-self: center;
202
- }
203
-
204
-
205
- &:hover .message-date-hover, &:hover .btn-add-msg{
206
- display: block;
207
- }
115
+ // padding: 0px 0px 6px 0px;
116
+ padding: 0px 0px 15px 0px; // edited to display the date at the bottom of the "message bubble"
208
117
  /* avatar */
209
118
  .content-avatar {
210
119
  position: relative;
@@ -233,12 +142,12 @@ ion-item {
233
142
  }
234
143
  /* message */
235
144
  .msg_receive {
236
- background-color: var(--bck-msg-received);
237
- color: var(--col-msg-received);
145
+ background-color: var(--light-white);
146
+ color: #1a1a1a;
238
147
  // max-width: 260px;
239
- max-width: calc(100% - 85px);
148
+ max-width: calc(100% - 70px);
240
149
  min-width: 14px;
241
- margin: 0 0px 0px 10px;
150
+ margin: 0 20px 4px 10px;
242
151
  height: fit-content;
243
152
  width: auto;
244
153
  border-top-left-radius: 8px;
@@ -249,9 +158,7 @@ ion-item {
249
158
  color: var(--bubble-privateMsgColor)
250
159
  }
251
160
  }
252
- .no-background{
253
- background: transparent!important;
254
- }
161
+
255
162
  .emoticon {
256
163
  background: unset !important;
257
164
  font-size: 4em;
@@ -260,93 +167,63 @@ ion-item {
260
167
  .has-metadata {
261
168
  max-width: 100% !important;
262
169
  }
263
-
264
170
  }
265
171
 
266
- .message-date-hover{
267
- color: #647491;
268
- font-size: 12px;
269
- align-self: center;
270
-
271
- display: none;
272
-
172
+ .time {
173
+ margin-bottom: 20px;
273
174
  }
274
175
 
275
- .btn-add-msg {
276
- border-radius: 50%;
277
- --padding-end: 5px;
278
- --padding-start: 5px;
279
- box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.13);
280
- display: none;
281
- align-self: center;
282
- margin: 0px 5px;
283
-
284
- ion-icon{
285
- font-size: 1.2em;
286
- color: var(--basic-blue)
287
- }
288
-
289
- .add-canned-response-add-icon{
290
- color: var(--basic-blue);
291
- cursor: pointer;
292
- position: relative;
293
- top: 6px;
294
- left: -6px;
295
- font-size: 9px;
296
- }
297
- }
298
-
299
- /* LOADING */
300
- /*http://tobiasahlin.com/spinkit/*/
301
- #chat21-spinner {
302
- display: none;
303
- width: 70px;
176
+ // Loading Spinner
177
+ .spinner {
178
+ // margin: 100px auto 0;
179
+ width: 90px;
304
180
  min-height: 20px;
305
- margin: 20px auto 0;
181
+ padding: 7px;
306
182
  text-align: center;
307
183
  }
308
- #chat21-spinner.active {
309
- display: block;
310
- }
311
- #chat21-spinner > div {
312
- width: 12px;
313
- height: 12px;
314
- background-color: var(--bubble-blue);
184
+
185
+ .spinner > div {
186
+ width: 10px;
187
+ height: 10px;
188
+ background-color: rgb(255, 255, 255);
189
+
315
190
  border-radius: 100%;
316
191
  display: inline-block;
317
192
  -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
318
193
  animation: sk-bouncedelay 1.4s infinite ease-in-out both;
319
194
  }
320
- #chat21-spinner .chat21-bounce1 {
195
+
196
+ .spinner .bounce1 {
321
197
  -webkit-animation-delay: -0.32s;
322
198
  animation-delay: -0.32s;
323
199
  }
324
- #chat21-spinner .chat21-bounce2 {
200
+
201
+ .spinner .bounce2 {
325
202
  -webkit-animation-delay: -0.16s;
326
203
  animation-delay: -0.16s;
327
204
  }
328
- #chat21-spinner span {
329
- display: block;
330
- margin: 0.5em 0 0 0;
331
- color: var(--col-msg-sent);
332
- /* text-transform: uppercase; */
333
- font-family: 'Roboto', sans-serif;
334
- -webkit-animation: pulse 2000ms linear infinite;
335
- -moz-animation: pulse 2000ms linear infinite;
336
- animation: pulse 2000ms linear infinite;
337
- text-align: center;
338
- }
205
+
339
206
  @-webkit-keyframes sk-bouncedelay {
340
- 0%, 80%, 100% { -webkit-transform: scale(0) }
341
- 40% { -webkit-transform: scale(1.0) }
207
+ 0%,
208
+ 80%,
209
+ 100% {
210
+ -webkit-transform: scale(0);
211
+ }
212
+ 40% {
213
+ -webkit-transform: scale(1);
214
+ }
342
215
  }
216
+
343
217
  @keyframes sk-bouncedelay {
344
- 0%, 80%, 100% {
345
- -webkit-transform: scale(0);
346
- transform: scale(0);
347
- } 40% {
348
- -webkit-transform: scale(1.0);
349
- transform: scale(1.0);
218
+ 0%,
219
+ 80%,
220
+ 100% {
221
+ -webkit-transform: scale(0);
222
+ transform: scale(0);
223
+ }
224
+ 40% {
225
+ -webkit-transform: scale(1);
226
+ transform: scale(1);
350
227
  }
351
228
  }
352
229
 
@@ -368,6 +245,28 @@ ion-item {
368
245
  // left: -26px;
369
246
  }
370
247
 
248
+ :host .base_receive .msg_receive ::ng-deep div > div > div > ion-button.canned {
249
+ display: none;
250
+ position: absolute;
251
+ top: -3px;
252
+ right: -31px;
253
+ }
254
+
255
+ :host .base_receive .msg_receive ::ng-deep div > div > div >ion-button.emoji {
256
+ display: none;
257
+ position: absolute;
258
+ top: -3px;
259
+ right: -51px;
260
+ }
261
+
262
+ // :host .base_receive .msg_receive:hover ::ng-deep div > div > ion-button {
263
+ :host .base_receive:hover .msg_receive ::ng-deep div > div > div > ion-button {
264
+ display: block;
265
+ // position: absolute;
266
+ // top: -11px;
267
+ // left: 91px;
268
+ }
269
+
371
270
  // ---------------------------------------------------------
372
271
  // Long date divider
373
272
  // ---------------------------------------------------------
@@ -396,6 +295,24 @@ ion-item {
396
295
  color: #64748b;
397
296
  }
398
297
 
298
+ // ---------------------------------------------------------
299
+ // message date
300
+ // ---------------------------------------------------------
301
+ :host .base_sent .msg_sent ::ng-deep div > div > div > .message-date {
302
+ position: absolute;
303
+ bottom: -11px;
304
+ color: #64748b;
305
+ font-size: 10px;
306
+ right: 0px;
307
+ }
308
+
309
+ :host .base_receive .msg_receive ::ng-deep div > div > .message-date {
310
+ position: absolute;
311
+ bottom: -11px;
312
+ color: #64748b;
313
+ font-size: 10px;
314
+ left: 0px;
315
+ }
399
316
  // ---------------------------------------------------------
400
317
  // emoticon
401
318
  // ---------------------------------------------------------
@@ -1,6 +1,5 @@
1
- import { MessageModel } from 'src/chat21-core/models/message';
2
1
  import { ConversationContentComponent } from '../conversation-content/conversation-content.component';
3
- import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter, SimpleChange, SimpleChanges } from '@angular/core';
2
+ import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
4
3
 
5
4
 
6
5
  import { MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from 'src/chat21-core/utils/constants';
@@ -14,8 +13,6 @@ import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk
14
13
  import { TranslateService } from '@ngx-translate/core';
15
14
  import * as moment from 'moment';
16
15
  import { AppConfigProvider } from 'src/app/services/app-config';
17
- import { ModalController } from '@ionic/angular';
18
- import { CreateCannedResponsePage } from 'src/app/pages/create-canned-response/create-canned-response.page';
19
16
  @Component({
20
17
  selector: 'ion-conversation-detail',
21
18
  templateUrl: './ion-conversation-detail.component.html',
@@ -27,18 +24,14 @@ export class IonConversationDetailComponent extends ConversationContentComponent
27
24
  @Input() channelType: string;
28
25
  @Input() areVisibleCAR: boolean;
29
26
  @Input() supportMode: boolean;
30
- @Input() isMobile: boolean;
31
- @Input() openInfoConversation: boolean;
32
27
  @Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
33
28
  @Output() onAddUploadingBubble = new EventEmitter<boolean>();
34
- @Output() onOpenCloseInfoConversation = new EventEmitter<boolean>();
35
-
29
+
36
30
  public public_Key: any
37
31
  public uploadProgress: number = 100
38
32
  public fileType: any
39
33
  public browserLang: string;
40
34
  public addAsCannedResponseTooltipText: string;
41
- // public openInfoConversation: boolean = true;
42
35
  isImage = isImage;
43
36
  isFile = isFile;
44
37
  isFrame = isFrame;
@@ -65,7 +58,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
65
58
  public tiledeskAuthService: TiledeskAuthService,
66
59
  private translate: TranslateService,
67
60
  public appConfigProvider: AppConfigProvider,
68
- public modalController: ModalController,
69
61
  ) {
70
62
  super(cdref, uploadService)
71
63
 
@@ -74,11 +66,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
74
66
  ngOnInit() {
75
67
  this.listenToUploadFileProgress();
76
68
  this.setMomentLocaleAndGetTranslation();
77
-
78
- }
79
-
80
- ngOnChanges(changes: SimpleChanges){
81
- this.isMobile? this.openInfoConversation = false: null;
82
69
  }
83
70
 
84
71
 
@@ -149,11 +136,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
149
136
  this.onElementRendered.emit(event)
150
137
  }
151
138
 
152
- onOpenCloseInfoConversationFN(){
153
- this.openInfoConversation = !this.openInfoConversation
154
- this.onOpenCloseInfoConversation.emit(this.openInfoConversation)
155
- }
156
-
157
139
  /**
158
140
  * Track by function for ngFor loops
159
141
  *
@@ -165,24 +147,4 @@ export class IonConversationDetailComponent extends ConversationContentComponent
165
147
  // console.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - trackByFn item', item)
166
148
  return item.uid || index;
167
149
  }
168
-
169
-
170
- async presentCreateCannedResponseModal(message: MessageModel): Promise<any> {
171
- this.logger.log('[BUBBLE-MESSAGE] PRESENT CREATE CANNED RESPONSE MODAL ')
172
- const attributes = {
173
- message: message,
174
- }
175
- const modal: HTMLIonModalElement = await this.modalController.create({
176
- component: CreateCannedResponsePage,
177
- componentProps: attributes,
178
- swipeToClose: false,
179
- backdropDismiss: false,
180
- })
181
- modal.onDidDismiss().then((dataReturned: any) => {
182
- //
183
- this.logger.log('[BUBBLE-MESSAGE] ', dataReturned.data)
184
- })
185
-
186
- return await modal.present()
187
- }
188
150
  }
@@ -1,17 +1,12 @@
1
1
  <!-- [ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}" -->
2
2
  <!-- [ngStyle]="{'padding': (isImage(message) || isFrame(message))?'0px':'0 8px'}" -->
3
3
  <!-- isImage >{{isImage(message) }} message.metadata.width {{message?.metadata?.width }} -->
4
- <!-- 'width': (isImage(message) || isFrame(message))? sizeImage?.width : null -->
5
- <div id="bubble-message" [ngStyle]="{'padding': (isImage(message) || isFrame(message))?'0px':'0 8px' }" class="messages primary-color">
4
+ <div id="bubble-message"
5
+ [ngStyle]="{'padding': (isImage(message) || isFrame(message))?'0px':'0 8px', 'width': (isImage(message) || isFrame(message))? sizeImage?.width + 'px' : null }"
6
+ class="messages primary-color">
6
7
 
7
8
 
8
9
  <div>
9
-
10
- <div *ngIf="messageType(MESSAGE_TYPE_OTHERS, message) && !isSameSender"
11
- [style.color]="convertColorToRGBA(fontColor, 65)"
12
- [ngStyle]="{'margin': (isImage(message) || isFrame(message))? '10px 16px 8px 16px': '10px 8px 0px 8px'}" class="message_sender_fullname">
13
- {{message?.sender_fullname}}
14
- </div>
15
10
  <!-- message type:: image -->
16
11
  <!-- <div *ngIf="message.type == 'image' && message.metadata" [ngStyle] = "{ 'max-width': getSizeImg(message).width, 'max-height': getSizeImg(message).height }">
17
12
  <img class="message-contentX message-content-imageX" [src]="message.metadata.src" />
@@ -34,8 +29,8 @@
34
29
  <!-- [height]="getMetadataSize(message.metadata).height"> -->
35
30
  <chat-frame *ngIf="isFrame(message)"
36
31
  [metadata]="message.metadata"
37
- [width]="sizeImage?.width"
38
- [height]="sizeImage?.width"
32
+ [width]="message.metadata.width"
33
+ [height]="message.metadata.height"
39
34
  (onElementRendered)="onElementRenderedFN($event)">
40
35
  </chat-frame>
41
36
 
@@ -48,10 +43,14 @@
48
43
 
49
44
  <!-- [tooltip]="timeTooltipLeft" [options]="tooltipOptions" placement="left" content-type="template" (click)="handleTooltipEvents($event)" -->
50
45
  <div *ngIf="message?.text">
46
+ <span class="message-date"> {{message.timestamp | date:'HH:mm' }} </span>
47
+ <!-- <ng-template #timeTooltipLeft>
48
+ <span> {{message.timestamp | amCalendar }} </span>
49
+ </ng-template> -->
51
50
 
52
51
  <chat-text *ngIf="message?.type !=='html'"
53
52
  [text]="message?.text"
54
- [color]="fontColor"
53
+ [color]="textColor"
55
54
  [message]="message"
56
55
  (onBeforeMessageRender)="returnOnBeforeMessageRender($event)"
57
56
  (onAfterMessageRender)="returnOnAfterMessageRender($event)">
@@ -61,6 +60,20 @@
61
60
  [htmlText]="message?.text">
62
61
  </chat-html>
63
62
 
63
+ <ng-container *ngIf="areVisibleCAR && supportMode">
64
+ <ion-button shape="round" size="small" class="btn-add-msg canned" ion-button fill="clear"
65
+ (click)="presentCreateCannedResponseModal()" tooltip="{{addAsCannedResponseTooltipText}}"
66
+ [options]="tooltipOptions" placement="bottom">
67
+ <ion-icon slot="icon-only" name="flash-outline" style="font-size: 1em;"> </ion-icon>
68
+ </ion-button>
69
+ </ng-container>
70
+ <!-- <ng-container *ngIf="supportMode">
71
+ <ion-button shape="round" size="small" class="btn-add-msg emoji" ion-button fill="clear"
72
+ (click)="presentEmojiiModal()" tooltip="{{addAsCannedResponseTooltipText}}"
73
+ [options]="tooltipOptions" placement="bottom">
74
+ <ion-icon slot="icon-only" name="happy-outline" style="font-size: 1em;"> </ion-icon>
75
+ </ion-button>
76
+ </ng-container> -->
64
77
  </div>
65
78
  </div>
66
79