@chat21/chat21-ionic 3.0.80-rc.1 → 3.0.80

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 (141) hide show
  1. package/CHANGELOG.md +4 -61
  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 +15 -73
  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 -75
  10. package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +85 -162
  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 +19 -7
  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/html/html.component.ts +1 -0
  26. package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.scss +2 -2
  27. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.html +6 -16
  28. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.scss +3 -1
  29. package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.ts +0 -2
  30. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +52 -78
  31. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +20 -62
  32. package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +10 -14
  33. package/src/app/components/canned-response/canned-response.component.html +5 -5
  34. package/src/app/components/canned-response/canned-response.component.scss +1 -1
  35. package/src/app/components/canned-response/canned-response.component.ts +0 -1
  36. package/src/app/components/contacts-directory/contacts-directory.component.html +26 -22
  37. package/src/app/components/contacts-directory/contacts-directory.component.scss +6 -8
  38. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.html +3 -0
  39. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.scss +21 -0
  40. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.spec.ts +24 -0
  41. package/src/app/components/conversation-detail/bubble-day-message/bubble-day-message.component.ts +14 -0
  42. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.html +54 -0
  43. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.scss +98 -0
  44. 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
  45. package/src/app/components/conversation-detail/bubble-my-message/bubble-my-message.component.ts +84 -0
  46. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.html +30 -0
  47. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.scss +83 -0
  48. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.spec.ts +24 -0
  49. package/src/app/components/conversation-detail/bubble-others-message/bubble-others-message.component.ts +68 -0
  50. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.html +3 -0
  51. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.scss +10 -0
  52. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.spec.ts +24 -0
  53. package/src/app/components/conversation-detail/bubble-system-message/bubble-system-message.component.ts +14 -0
  54. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +42 -61
  55. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +61 -98
  56. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +25 -9
  57. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.html +5 -6
  58. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +4 -4
  59. package/src/app/components/conversation-detail/message-text-area/message-text-area.component.ts +83 -4
  60. package/src/app/components/conversation-detail/option-header/option-header.component.html +13 -0
  61. package/src/app/components/conversation-detail/option-header/option-header.component.scss +0 -0
  62. 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
  63. 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
  64. package/src/app/components/conversation-info/info-content/info-content.component.html +1 -2
  65. package/src/app/components/conversation-info/info-content/info-content.component.ts +2 -3
  66. package/src/app/components/conversation-info/info-direct/info-direct.component.html +9 -1
  67. package/src/app/components/conversation-info/info-direct/info-direct.component.ts +2 -0
  68. package/src/app/components/conversation-info/info-group/info-group.component.html +108 -44
  69. package/src/app/components/conversation-info/info-group/info-group.component.scss +61 -101
  70. package/src/app/components/conversation-info/info-group/info-group.component.ts +0 -1
  71. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.html → ddp-header/ddp-header.component.html} +3 -3
  72. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.scss → ddp-header/ddp-header.component.scss} +4 -16
  73. package/src/app/components/{navbar/navbar.component.spec.ts → ddp-header/ddp-header.component.spec.ts} +6 -6
  74. package/src/app/components/{conversations-list/header-conversations-list/header-conversations-list.component.ts → ddp-header/ddp-header.component.ts} +16 -7
  75. package/src/app/components/project-item/project-item.component.html +149 -98
  76. package/src/app/components/project-item/project-item.component.scss +35 -42
  77. package/src/app/components/project-item/project-item.component.ts +4 -16
  78. package/src/app/components/sidebar-user-details/sidebar-user-details.component.html +3 -3
  79. package/src/app/components/sidebar-user-details/sidebar-user-details.component.ts +7 -2
  80. package/src/app/components/utils/user-presence/user-presence.component.html +2 -7
  81. package/src/app/components/utils/user-presence/user-presence.component.scss +18 -35
  82. package/src/app/components/utils/user-presence/user-presence.component.ts +10 -6
  83. package/src/app/pages/contacts-directory/contacts-directory.page.html +1 -1
  84. package/src/app/pages/contacts-directory/contacts-directory.page.scss +0 -41
  85. package/src/app/pages/contacts-directory/contacts-directory.page.ts +0 -2
  86. package/src/app/pages/conversation-detail/conversation-detail.module.ts +8 -0
  87. package/src/app/pages/conversation-detail/conversation-detail.page.html +23 -40
  88. package/src/app/pages/conversation-detail/conversation-detail.page.scss +250 -40
  89. package/src/app/pages/conversation-detail/conversation-detail.page.ts +84 -190
  90. package/src/app/pages/conversations-list/conversations-list.page.html +8 -11
  91. package/src/app/pages/conversations-list/conversations-list.page.scss +2 -11
  92. package/src/app/pages/conversations-list/conversations-list.page.ts +22 -25
  93. package/src/app/pages/create-canned-response/create-canned-response.page.ts +13 -13
  94. package/src/app/pages/loader-preview/loader-preview.page.html +1 -1
  95. package/src/app/pages/loader-preview/loader-preview.page.scss +0 -4
  96. package/src/app/pages/loader-preview/loader-preview.page.ts +2 -1
  97. package/src/app/pages/profile-info/profile-info.page.html +4 -2
  98. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.html +1 -1
  99. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.scss +0 -42
  100. package/src/app/pages/unassigned-conversations/unassigned-conversations.page.ts +0 -1
  101. package/src/app/services/canned-responses/canned-responses.service.ts +0 -26
  102. package/src/app/services/tiledesk/tiledesk.service.ts +25 -1
  103. package/src/app/shared/shared.module.ts +33 -24
  104. package/src/assets/i18n/ar.json +265 -278
  105. package/src/assets/i18n/az.json +1 -14
  106. package/src/assets/i18n/de.json +2 -15
  107. package/src/assets/i18n/en.json +2 -15
  108. package/src/assets/i18n/es.json +2 -15
  109. package/src/assets/i18n/fr.json +1 -14
  110. package/src/assets/i18n/it.json +1 -14
  111. package/src/assets/i18n/kk.json +2 -15
  112. package/src/assets/i18n/pt.json +2 -15
  113. package/src/assets/i18n/ru.json +1 -14
  114. package/src/assets/i18n/sr.json +264 -277
  115. package/src/assets/i18n/sv.json +2 -15
  116. package/src/assets/i18n/tr.json +2 -15
  117. package/src/assets/i18n/uk.json +2 -15
  118. package/src/assets/i18n/uz.json +1 -14
  119. package/src/chat21-core/models/conversation.ts +1 -0
  120. package/src/chat21-core/providers/firebase/firebase-typing.service.ts +9 -7
  121. package/src/chat21-core/utils/constants.ts +1 -5
  122. package/src/chat21-core/utils/user-typing/user-typing.component.html +5 -8
  123. package/src/chat21-core/utils/user-typing/user-typing.component.scss +17 -87
  124. package/src/chat21-core/utils/user-typing/user-typing.component.ts +94 -12
  125. package/src/chat21-core/utils/utils.ts +10 -38
  126. package/src/global.scss +57 -48
  127. package/src/index.html +2 -2
  128. package/src/variables.scss +10 -30
  129. package/deploy_amazon_beta.sh +0 -29
  130. package/deploy_amazon_prod.sh +0 -30
  131. package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component_2.html +0 -116
  132. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.html +0 -12
  133. package/src/app/components/conversations-list/header-conversations-list-archived/header-conversations-list-archived.component.scss +0 -14
  134. package/src/app/components/navbar/navbar.component.html +0 -103
  135. package/src/app/components/navbar/navbar.component.scss +0 -249
  136. package/src/app/components/navbar/navbar.component.ts +0 -189
  137. package/src/app/services/projects/projects.service.spec.ts +0 -12
  138. package/src/app/services/projects/projects.service.ts +0 -43
  139. package/src/assets/sounds/wheep-wheep.mp3 +0 -0
  140. package/src/chat21-core/models/projects.ts +0 -27
  141. package/src/chat21-core/utils/convertRequestToConversation.ts +0 -41
@@ -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() {
@@ -6,7 +6,7 @@
6
6
  (click)="onClickCannedFN(canned, $event)">
7
7
  <div class="cannedContent">
8
8
  <ion-input [(ngModel)]="canned.title" class="title" id="{{'titleCanned_'+canned._id}}" [disabled]="canned.disabled"></ion-input>
9
- <ion-input [(ngModel)]="canned.text" *ngIf="canned.text" class="text" [disabled]="canned.disabled"></ion-input>
9
+ <ion-input [(ngModel)]="canned.text" *ngIf="canned.text" class="text truncate" [disabled]="canned.disabled"></ion-input>
10
10
  </div>
11
11
  <ion-icon class="canned-item-icon" name="checkmark-sharp" slot=end *ngIf="canned.createdBy === loggedUser.uid && !canned.disabled" (click)="onConfirmEditCanned(canned, $event)"></ion-icon>
12
12
  <ion-icon class="canned-item-icon" name="pencil-sharp" slot=end *ngIf="canned.createdBy === loggedUser.uid && canned.disabled" (click)="onEditCanned(canned, $event)"></ion-icon>
@@ -22,10 +22,10 @@
22
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
30
  <div class="label">{{translationMap.get('LABEL_LOADING')}}</div>
31
31
  </div>
@@ -179,7 +179,7 @@ ion-item {
179
179
  width: 15px;
180
180
  height: 15px;
181
181
  border-radius: 50%;
182
- background-color: var(--basic-blue);
182
+ background-color: #1877f2;
183
183
  animation: move 500ms linear 0ms infinite;
184
184
  margin-right: 30px;
185
185
 
@@ -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>();
@@ -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
+ });
@@ -0,0 +1,14 @@
1
+ import { Component, OnInit, Input } from '@angular/core';
2
+
3
+ @Component({
4
+ selector: 'app-bubble-day-message',
5
+ templateUrl: './bubble-day-message.component.html',
6
+ styleUrls: ['./bubble-day-message.component.scss'],
7
+ })
8
+ export class BubbleDayMessageComponent implements OnInit {
9
+ @Input() messageDate = '';
10
+ constructor() { }
11
+
12
+ ngOnInit() {}
13
+
14
+ }
@@ -0,0 +1,54 @@
1
+ <div class="message message-my" [class.first-message]="isFirstMessage" >
2
+
3
+ <div class="bubble-message"
4
+ [class.image]="message.type == 'image'"
5
+ [class.no-text]="!message.text"
6
+ (mouseover)="showButtonInfo()">
7
+ <span class="buttonInfo" (click)="presentPopover($event, message)"> </span>
8
+
9
+ <div *ngIf="message.type == 'image';"
10
+ (click)="popupUrl(message.metadata.src,'windowName')"
11
+ >
12
+ <img
13
+ class="message-content message-content-image"
14
+ [src]="message.metadata.src"
15
+ [width]="getSizeImg(message).width"
16
+ [height]="getSizeImg(message).height" />
17
+ </div>
18
+
19
+ <div *ngIf="message.type == 'file';" class="message-content message-content-text"
20
+ [innerHTML]="urlify(message.metadata.src, message.metadata.name)"
21
+ ></div>
22
+
23
+ <div>
24
+
25
+ <!-- <div *ngIf="message.type == 'text'"> -->
26
+ <div *ngIf="isPopupUrl(message.text); then contentPopup else contentNewTab">here is ignored</div>
27
+ <ng-template #contentPopup>
28
+ <div style="text-decoration: underline; padding:8px; cursor: pointer;" (click)="popupUrl(message.text,'windowName')">{{stripTags(message.text)}}</div>
29
+ </ng-template>
30
+ <ng-template #contentNewTab>
31
+ <div class="message-content message-content-text" [innerHTML]="message.text"></div>
32
+ </ng-template>
33
+ <!-- </div> -->
34
+
35
+ </div>
36
+
37
+ <div class="timestamp-message right">{{message.timestamp | date: 'H:mm'}}</div>
38
+ </div>
39
+
40
+ <div class="attribute-message">
41
+ <div class="status-message">
42
+ <span *ngIf="!message.status" class="material-icons">
43
+ <ion-icon name="time-outline"></ion-icon>
44
+ </span>
45
+ <span *ngIf="message.status==MSG_STATUS_SENT" class="material-icons">
46
+ <ion-icon name="checkmark-outline"></ion-icon>
47
+ </span>
48
+ <span *ngIf="message.status==MSG_STATUS_RETURN_RECEIPT" class="material-icons">
49
+ <ion-icon name="checkmark-done-outline"></ion-icon>
50
+ </span>
51
+ </div>
52
+ </div>
53
+
54
+ </div>
@@ -0,0 +1,98 @@
1
+ .message {
2
+ .bubble-message {
3
+ position: relative;
4
+ border-radius: 15px;
5
+ font-size: 15px;
6
+ // padding: 5px 10px 10px 10px;
7
+ display: block;
8
+ width: auto;
9
+ max-width: 80%;
10
+ line-height: 1.34;
11
+ direction: ltr;
12
+ padding: 0px;
13
+ .message-content-image {
14
+ border-radius: 15px 6px 0px 0px;
15
+ }
16
+ &.no-text {
17
+ line-height: 0;
18
+ .message-content-image {
19
+ border-radius: 15px 6px 0px 15px;
20
+ }
21
+ .message-content.message-content-text{
22
+ padding: 0px;
23
+ height: 0px;
24
+ }
25
+ .timestamp-message {
26
+ background-color: #00000045;
27
+ padding: 4px;
28
+ color: white;
29
+ }
30
+ }
31
+ &.image{
32
+ max-width: 300px;
33
+ }
34
+
35
+ }
36
+
37
+
38
+
39
+ .message-content:after {
40
+ content: "\00a0\00a0\00a0\00a0\00a0\00a0";
41
+ }
42
+ .timestamp-message {
43
+ font-size: 10px;
44
+ padding: 0px;
45
+ position: absolute;
46
+ bottom: 2px;
47
+ right: 6px;
48
+ line-height: 15px;
49
+ }
50
+ }
51
+ .message-my {
52
+ width: 100%;
53
+ margin-top: 4px;
54
+ .message-content.message-content-text{
55
+ color: var(--white)!important;
56
+ padding: 5px 20px 5px 10px;
57
+ }
58
+
59
+
60
+ .bubble-message {
61
+ background-color: var(--bubble-blue);
62
+ color: white;
63
+ margin-right: 24px;
64
+ float: right;
65
+ border-top-right-radius: 6px;
66
+ border-bottom-right-radius: 6px;
67
+ }
68
+ &.first-message {
69
+ margin-top: 10px;
70
+ .bubble-message {
71
+ border-top-right-radius: 12px;
72
+ border-bottom-right-radius: 0px;
73
+ }
74
+ }
75
+ .timestamp-message {
76
+ color: var(--white);
77
+ }
78
+ .attribute-message {
79
+ position: absolute;
80
+ width: 100%;
81
+ background-color: transparent;
82
+ bottom: 0;
83
+ right: 0;
84
+ .status-message {
85
+ position: absolute;
86
+ top: 0;
87
+ right: 0;
88
+ width: 15px;
89
+ .material-icons {
90
+ font-size: 15px;
91
+ color: var(--basic-blue);
92
+ position: absolute;
93
+ bottom: 4px;
94
+ right: 2px;
95
+ }
96
+ }
97
+ }
98
+ }
@@ -1,19 +1,19 @@
1
1
  import { async, ComponentFixture, TestBed } from '@angular/core/testing';
2
2
  import { IonicModule } from '@ionic/angular';
3
3
 
4
- import { HeaderConversationsList } from './header-conversations-list.component';
4
+ import { BubbleMyMessageComponent } from './bubble-my-message.component';
5
5
 
6
- describe('ConversationsListHeader', () => {
7
- let component: HeaderConversationsList;
8
- let fixture: ComponentFixture<HeaderConversationsList>;
6
+ describe('BubbleMineMessageComponent', () => {
7
+ let component: BubbleMyMessageComponent;
8
+ let fixture: ComponentFixture<BubbleMyMessageComponent>;
9
9
 
10
10
  beforeEach(async(() => {
11
11
  TestBed.configureTestingModule({
12
- declarations: [ HeaderConversationsList ],
12
+ declarations: [ BubbleMyMessageComponent ],
13
13
  imports: [IonicModule.forRoot()]
14
14
  }).compileComponents();
15
15
 
16
- fixture = TestBed.createComponent(HeaderConversationsList);
16
+ fixture = TestBed.createComponent(BubbleMyMessageComponent);
17
17
  component = fixture.componentInstance;
18
18
  fixture.detectChanges();
19
19
  }));