@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
@@ -33,59 +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: 0px;
51
- &:not(.mobile){
52
- top: calc(60px + var(--padding-conversation-detail));
53
- }
54
- }
55
-
56
- &.mobile{
57
- right: 0px;
58
- }
59
- &:not(.mobile):not(.close){
60
- right: calc(300px + var(--padding-conversation-detail));
61
- top: calc(60px + var(--padding-conversation-detail));
62
- }
63
- &::before{
64
- content: "";
65
- width: 102px;
66
- height: 34px;
67
- background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjM0IiB2aWV3Qm94PSIwIDAgMTAyIDM0IiB3aWR0aD0iMTAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0ibTEwMiAwaC0xMDJsLjA3MTQwOC40MTk3NTNjMTEuMzE5MTkyLS4wMTU1NTggMjIuMjg4MTkyIDMuOTIwMzM3IDMxLjAxMjA5MiAxMS4xMjc2NDdsNy40ODk0IDYuNTAyIDEuNjUwOCAxLjQyMjkgNi42OTU1IDUuNzhjNi41Mzc0IDUuNjQwNSAxNC44ODU3IDguNzQ1MSAyMy41MjI3IDguNzQ3N2gzMS41NTQxeiIKICAgICAgICAgIGZpbGw9IiNlMmU4ZWYiLz4KPC9zdmc+);
68
- position: relative;
69
- left: 50px;
70
- z-index: -1;
71
- }
72
-
73
- ion-button {
74
- text-transform: unset;
75
- color: var(--basic-blue);
76
- &:hover {
77
- --background-hover: transparent;
78
- text-decoration: underline;
79
- text-decoration-color: var(--basic-blue);
80
- }
81
- }
82
-
83
- ion-icon{
84
- margin: 5px;
85
- }
86
- }
87
-
88
-
89
36
  ion-item {
90
37
  --padding-end: 0px;
91
38
  --inner-padding-end: 0px;
@@ -113,33 +60,12 @@ ion-item {
113
60
 
114
61
  .message_sender_fullname {
115
62
  font-size: 0.9em;
116
- margin: 0px 10px 0px 10px;
63
+ margin: 0 0 1px 10px;
117
64
  // color: var(--gray);
118
65
  font-weight: 500;
119
66
  color: #080f1a;
120
67
  }
121
68
 
122
- .typing_container{
123
- display:flex;
124
- align-items: center;
125
-
126
- user-typing {
127
- text-align: right;
128
- }
129
- .typing_info{
130
- color: var(--basic-gray);
131
- margin-left: 10px;
132
- font-size: 12px;
133
- animation: blinker 1s linear infinite;
134
-
135
- @keyframes blinker {
136
- 50% {
137
- opacity: 0;
138
- }
139
- }
140
- }
141
- }
142
-
143
69
  .messages {
144
70
  border-radius: 18px;
145
71
  padding: 0;
@@ -156,16 +82,12 @@ ion-item {
156
82
  align-items: flex-end;
157
83
  justify-content: flex-end;
158
84
  // padding: 2px 0px 4px 40px;
159
- padding: 0px 0px 6px 40px;
160
-
161
- &:hover .message-date-hover, &:hover .btn-add-msg{
162
- display: block;
163
- }
164
-
85
+ padding: 2px 0px 14px 40px; // edited to display the date at the bottom of the "message bubble"
165
86
  .msg_sent {
166
87
  background-color: var(--bubble-blue);
167
88
  color: var(--col-msg-sent);
168
- margin: 0px 0px 0px 0px;
89
+ margin-right: 4px;
90
+ margin-left: 4px;
169
91
  max-width: calc(100% - 70px);
170
92
  min-width: 14px;
171
93
  border-top-right-radius: 8px;
@@ -176,9 +98,6 @@ ion-item {
176
98
  color: var(--bubble-privateMsgColor)
177
99
  }
178
100
  }
179
- .no-background{
180
- background: transparent!important;
181
- }
182
101
  .emoticon {
183
102
  background: unset !important;
184
103
  font-size: 4em;
@@ -193,17 +112,8 @@ ion-item {
193
112
 
194
113
  /** recive message **/
195
114
  .base_receive {
196
- padding: 0px 20px 6px 0px;
197
- .message-date{
198
- color: #647491;
199
- font-size: 12px;
200
- align-self: center;
201
- }
202
-
203
-
204
- &:hover .message-date-hover, &:hover .btn-add-msg{
205
- display: block;
206
- }
115
+ // padding: 0px 0px 6px 0px;
116
+ padding: 0px 0px 15px 0px; // edited to display the date at the bottom of the "message bubble"
207
117
  /* avatar */
208
118
  .content-avatar {
209
119
  position: relative;
@@ -232,12 +142,12 @@ ion-item {
232
142
  }
233
143
  /* message */
234
144
  .msg_receive {
235
- background-color: var(--bck-msg-received);
236
- color: var(--col-msg-received);
145
+ background-color: var(--light-white);
146
+ color: #1a1a1a;
237
147
  // max-width: 260px;
238
148
  max-width: calc(100% - 70px);
239
149
  min-width: 14px;
240
- margin: 0 0px 0px 10px;
150
+ margin: 0 20px 4px 10px;
241
151
  height: fit-content;
242
152
  width: auto;
243
153
  border-top-left-radius: 8px;
@@ -248,9 +158,7 @@ ion-item {
248
158
  color: var(--bubble-privateMsgColor)
249
159
  }
250
160
  }
251
- .no-background{
252
- background: transparent!important;
253
- }
161
+
254
162
  .emoticon {
255
163
  background: unset !important;
256
164
  font-size: 4em;
@@ -259,93 +167,63 @@ ion-item {
259
167
  .has-metadata {
260
168
  max-width: 100% !important;
261
169
  }
262
-
263
170
  }
264
171
 
265
- .message-date-hover{
266
- color: #647491;
267
- font-size: 12px;
268
- align-self: center;
269
-
270
- display: none;
271
-
172
+ .time {
173
+ margin-bottom: 20px;
272
174
  }
273
175
 
274
- .btn-add-msg {
275
- border-radius: 50%;
276
- --padding-end: 7px;
277
- --padding-start: 7px;
278
- box-shadow: 0 1px 4px 0 rgba(0, 0, 0, 0.13);
279
- display: none;
280
- align-self: center;
281
- margin: 0px 5px;
282
-
283
- ion-icon{
284
- font-size: 1.2em;
285
- color: var(--basic-blue)
286
- }
287
-
288
- .add-canned-response-add-icon{
289
- color: var(--basic-blue);
290
- cursor: pointer;
291
- position: relative;
292
- top: 6px;
293
- left: -6px;
294
- font-size: 9px;
295
- }
296
- }
297
-
298
- /* LOADING */
299
- /*http://tobiasahlin.com/spinkit/*/
300
- #chat21-spinner {
301
- display: none;
302
- width: 70px;
176
+ // Loading Spinner
177
+ .spinner {
178
+ // margin: 100px auto 0;
179
+ width: 90px;
303
180
  min-height: 20px;
304
- margin: 20px auto 0;
181
+ padding: 7px;
305
182
  text-align: center;
306
183
  }
307
- #chat21-spinner.active {
308
- display: block;
309
- }
310
- #chat21-spinner > div {
311
- width: 12px;
312
- height: 12px;
313
- background-color: var(--bubble-blue);
184
+
185
+ .spinner > div {
186
+ width: 10px;
187
+ height: 10px;
188
+ background-color: rgb(255, 255, 255);
189
+
314
190
  border-radius: 100%;
315
191
  display: inline-block;
316
192
  -webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
317
193
  animation: sk-bouncedelay 1.4s infinite ease-in-out both;
318
194
  }
319
- #chat21-spinner .chat21-bounce1 {
195
+
196
+ .spinner .bounce1 {
320
197
  -webkit-animation-delay: -0.32s;
321
198
  animation-delay: -0.32s;
322
199
  }
323
- #chat21-spinner .chat21-bounce2 {
200
+
201
+ .spinner .bounce2 {
324
202
  -webkit-animation-delay: -0.16s;
325
203
  animation-delay: -0.16s;
326
204
  }
327
- #chat21-spinner span {
328
- display: block;
329
- margin: 0.5em 0 0 0;
330
- color: var(--col-msg-sent);
331
- /* text-transform: uppercase; */
332
- font-family: 'Roboto', sans-serif;
333
- -webkit-animation: pulse 2000ms linear infinite;
334
- -moz-animation: pulse 2000ms linear infinite;
335
- animation: pulse 2000ms linear infinite;
336
- text-align: center;
337
- }
205
+
338
206
  @-webkit-keyframes sk-bouncedelay {
339
- 0%, 80%, 100% { -webkit-transform: scale(0) }
340
- 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
+ }
341
215
  }
216
+
342
217
  @keyframes sk-bouncedelay {
343
- 0%, 80%, 100% {
344
- -webkit-transform: scale(0);
345
- transform: scale(0);
346
- } 40% {
347
- -webkit-transform: scale(1.0);
348
- 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);
349
227
  }
350
228
  }
351
229
 
@@ -367,6 +245,28 @@ ion-item {
367
245
  // left: -26px;
368
246
  }
369
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
+
370
270
  // ---------------------------------------------------------
371
271
  // Long date divider
372
272
  // ---------------------------------------------------------
@@ -395,6 +295,24 @@ ion-item {
395
295
  color: #64748b;
396
296
  }
397
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
+ }
398
316
  // ---------------------------------------------------------
399
317
  // emoticon
400
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,17 +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
27
  @Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
32
28
  @Output() onAddUploadingBubble = new EventEmitter<boolean>();
33
- @Output() onOpenCloseInfoConversation = new EventEmitter<boolean>();
34
-
29
+
35
30
  public public_Key: any
36
31
  public uploadProgress: number = 100
37
32
  public fileType: any
38
33
  public browserLang: string;
39
34
  public addAsCannedResponseTooltipText: string;
40
- public openInfoConversation: boolean = true;
41
35
  isImage = isImage;
42
36
  isFile = isFile;
43
37
  isFrame = isFrame;
@@ -64,7 +58,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
64
58
  public tiledeskAuthService: TiledeskAuthService,
65
59
  private translate: TranslateService,
66
60
  public appConfigProvider: AppConfigProvider,
67
- public modalController: ModalController,
68
61
  ) {
69
62
  super(cdref, uploadService)
70
63
 
@@ -73,11 +66,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
73
66
  ngOnInit() {
74
67
  this.listenToUploadFileProgress();
75
68
  this.setMomentLocaleAndGetTranslation();
76
-
77
- }
78
-
79
- ngOnChanges(changes: SimpleChanges){
80
- this.isMobile? this.openInfoConversation = false: null;
81
69
  }
82
70
 
83
71
 
@@ -148,11 +136,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
148
136
  this.onElementRendered.emit(event)
149
137
  }
150
138
 
151
- onOpenCloseInfoConversationFN(){
152
- this.openInfoConversation = !this.openInfoConversation
153
- this.onOpenCloseInfoConversation.emit(this.openInfoConversation)
154
- }
155
-
156
139
  /**
157
140
  * Track by function for ngFor loops
158
141
  *
@@ -164,24 +147,4 @@ export class IonConversationDetailComponent extends ConversationContentComponent
164
147
  // console.log('[CONVS-DETAIL][ION-CONVS-DETAIL] - trackByFn item', item)
165
148
  return item.uid || index;
166
149
  }
167
-
168
-
169
- async presentCreateCannedResponseModal(message: MessageModel): Promise<any> {
170
- this.logger.log('[BUBBLE-MESSAGE] PRESENT CREATE CANNED RESPONSE MODAL ')
171
- const attributes = {
172
- message: message,
173
- }
174
- const modal: HTMLIonModalElement = await this.modalController.create({
175
- component: CreateCannedResponsePage,
176
- componentProps: attributes,
177
- swipeToClose: false,
178
- backdropDismiss: false,
179
- })
180
- modal.onDidDismiss().then((dataReturned: any) => {
181
- //
182
- this.logger.log('[BUBBLE-MESSAGE] ', dataReturned.data)
183
- })
184
-
185
- return await modal.present()
186
- }
187
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
 
@@ -11,11 +11,6 @@
11
11
  // -webkit-animation: heartbeat 1.5s ease-in-out both;
12
12
  // animation: heartbeat 1.5s ease-in-out both;
13
13
 
14
- .message_sender_fullname{
15
- font-size: 12px;
16
- font-weight: 600;
17
- }
18
-
19
14
  p {
20
15
  font-size: 1.4em;
21
16
  margin: 0;
@@ -53,7 +48,16 @@
53
48
 
54
49
  }
55
50
  // > .button-native
56
-
51
+ .btn-add-msg {
52
+ border-radius: 50%;
53
+ --padding-end: 7px;
54
+ --padding-start: 7px;
55
+ box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.6);
56
+
57
+ ion-icon{
58
+ font-size: 1.2em;
59
+ }
60
+ }
57
61
 
58
62
 
59
63
 
@@ -50,7 +50,7 @@ describe('BubbleMessageComponent', () => {
50
50
  isSender: false
51
51
  }
52
52
  component.message = messages
53
- component.fontColor = 'black'
53
+ component.textColor = 'black'
54
54
  fixture.detectChanges()
55
55
  const textChild = fixture.debugElement.query(By.css('chat-text'))
56
56
  textChild.properties.text
@@ -76,7 +76,7 @@ describe('BubbleMessageComponent', () => {
76
76
  isSender: false
77
77
  }
78
78
  component.message = messages
79
- component.fontColor = 'black'
79
+ component.textColor = 'black'
80
80
  fixture.detectChanges()
81
81
  const textChild = fixture.debugElement.query(By.css('chat-text'))
82
82
  expect(textChild.properties.text).toEqual(messages.text)
@@ -1,16 +1,15 @@
1
1
  import { Component, ElementRef, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';
2
2
  import { DomSanitizer } from '@angular/platform-browser';
3
3
  import { MessageModel } from 'src/chat21-core/models/message';
4
- import { MAX_WIDTH_IMAGES, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS, MIN_WIDTH_IMAGES } from 'src/chat21-core/utils/constants';
4
+ import { MAX_WIDTH_IMAGES, MIN_WIDTH_IMAGES } from 'src/chat21-core/utils/constants';
5
5
  import { LoggerService } from 'src/chat21-core/providers/abstract/logger.service';
6
- import { isFile, isFrame, isImage, messageType } from 'src/chat21-core/utils/utils-message';
6
+ import { isFile, isFrame, isImage } from 'src/chat21-core/utils/utils-message';
7
7
  import { LoggerInstance } from 'src/chat21-core/providers/logger/loggerInstance';
8
8
  import { TranslateService } from '@ngx-translate/core';
9
9
  import { TiledeskAuthService } from 'src/chat21-core/providers/tiledesk/tiledesk-auth.service';
10
10
  import * as moment from 'moment';
11
11
  import { CreateCannedResponsePage } from 'src/app/pages/create-canned-response/create-canned-response.page'
12
12
  import { ModalController } from '@ionic/angular';
13
- import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
14
13
  @Component({
15
14
  selector: 'chat-bubble-message',
16
15
  templateUrl: './bubble-message.component.html',
@@ -19,25 +18,16 @@ import { convertColorToRGBA } from 'src/chat21-core/utils/utils';
19
18
  export class BubbleMessageComponent implements OnInit, OnChanges {
20
19
 
21
20
  @Input() message: MessageModel;
22
- @Input() isSameSender: boolean;
23
- @Input() fontColor: string;
24
- @Input() fontSize: string;
25
- @Input() fontFamily: string;
21
+ @Input() textColor: string;
22
+ @Input() areVisibleCAR: boolean;
23
+ @Input() supportMode: boolean;
26
24
  @Output() onBeforeMessageRender = new EventEmitter();
27
25
  @Output() onAfterMessageRender = new EventEmitter();
28
26
  @Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
29
27
  isImage = isImage;
30
28
  isFile = isFile;
31
29
  isFrame = isFrame;
32
- convertColorToRGBA = convertColorToRGBA
33
-
34
- // ========== begin:: check message type functions ======= //
35
- messageType = messageType;
36
-
37
- MESSAGE_TYPE_MINE = MESSAGE_TYPE_MINE;
38
- MESSAGE_TYPE_OTHERS = MESSAGE_TYPE_OTHERS;
39
- // ========== end:: check message type functions ======= //
40
-
30
+ @Input() addAsCannedResponseTooltipText : string;
41
31
  public browserLang: string;
42
32
 
43
33
  tooltipOptions = {
@@ -204,6 +194,25 @@ export class BubbleMessageComponent implements OnInit, OnChanges {
204
194
  this.onElementRendered.emit({element: event.element, status: event.status})
205
195
  }
206
196
 
197
+ async presentCreateCannedResponseModal(): Promise<any> {
198
+ this.logger.log('[BUBBLE-MESSAGE] PRESENT CREATE CANNED RESPONSE MODAL ')
199
+ const attributes = {
200
+ message: this.message,
201
+ }
202
+ const modal: HTMLIonModalElement = await this.modalController.create({
203
+ component: CreateCannedResponsePage,
204
+ componentProps: attributes,
205
+ swipeToClose: false,
206
+ backdropDismiss: false,
207
+ })
208
+ modal.onDidDismiss().then((dataReturned: any) => {
209
+ //
210
+ this.logger.log('[BUBBLE-MESSAGE] ', dataReturned.data)
211
+ })
212
+
213
+ return await modal.present()
214
+ }
215
+
207
216
 
208
217
  // printMessage(message, messageEl, component) {
209
218
  // const messageOBJ = { message: message, sanitizer: this.sanitizer, messageEl: messageEl, component: component}
@@ -1,7 +1,3 @@
1
- <div #actionButton id="actionButton" class="button-in-msg action"
2
- title="{{button?.value}}"
3
- (click)="actionButtonAction()"
4
- (mouseover)="onMouseOver($event)"
5
- (mouseout)="onMouseOut($event)">
1
+ <div #actionButton id="actionButton" class="button-in-msg action" (click)="actionButtonAction()" title="{{button?.value}}">
6
2
  {{button.value}}
7
3
  </div>