@chat21/chat21-ionic 3.0.78-rc.4 → 3.0.78
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.
- package/CHANGELOG.md +1 -22
- package/package.json +1 -1
- package/src/app/app.component.scss +1 -2
- package/src/app/app.component.ts +1 -1
- package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts +1 -8
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.html +10 -36
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.scss +38 -106
- package/src/app/chatlib/conversation-detail/ion-conversation-detail/ion-conversation-detail.component.ts +2 -15
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html +1 -1
- package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts +1 -3
- package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.html +1 -5
- package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.scss +15 -22
- package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.ts +5 -25
- package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.html +1 -2
- package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss +15 -14
- package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.ts +5 -24
- package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.html +1 -6
- package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.scss +13 -12
- package/src/app/chatlib/conversation-detail/message/buttons/text-button/text-button.component.ts +5 -26
- package/src/app/chatlib/conversation-detail/message/info-message/info-message.component.scss +2 -2
- package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.html +6 -16
- package/src/app/chatlib/conversation-detail/message/message-attachment/message-attachment.component.ts +0 -2
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.html +52 -78
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.scss +20 -60
- package/src/app/chatlib/list-conversations-component/ion-list-conversations/ion-list-conversations.component.ts +10 -14
- package/src/app/components/canned-response/canned-response.component.html +4 -4
- package/src/app/components/canned-response/canned-response.component.scss +1 -1
- package/src/app/components/canned-response/canned-response.component.ts +0 -1
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.html +39 -54
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.scss +30 -61
- package/src/app/components/conversation-detail/header-conversation-detail/header-conversation-detail.component.ts +25 -9
- package/src/app/components/conversation-detail/message-text-area/message-text-area.component.scss +4 -4
- package/src/app/components/ddp-header/ddp-header.component.html +1 -1
- package/src/app/components/ddp-header/ddp-header.component.scss +0 -4
- package/src/app/components/project-item/project-item.component.html +149 -98
- package/src/app/components/project-item/project-item.component.scss +32 -39
- package/src/app/components/project-item/project-item.component.ts +3 -5
- package/src/app/components/utils/user-presence/user-presence.component.html +1 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.html +14 -24
- package/src/app/pages/conversation-detail/conversation-detail.page.scss +3 -1
- package/src/app/pages/conversation-detail/conversation-detail.page.ts +43 -163
- package/src/app/pages/conversations-list/conversations-list.page.html +2 -2
- package/src/app/pages/conversations-list/conversations-list.page.scss +2 -2
- package/src/app/pages/conversations-list/conversations-list.page.ts +17 -8
- package/src/app/pages/loader-preview/loader-preview.page.html +1 -1
- package/src/app/pages/loader-preview/loader-preview.page.scss +0 -4
- package/src/assets/i18n/ar.json +265 -268
- package/src/assets/i18n/az.json +0 -3
- package/src/assets/i18n/de.json +0 -3
- package/src/assets/i18n/en.json +0 -3
- package/src/assets/i18n/es.json +0 -3
- package/src/assets/i18n/fr.json +0 -3
- package/src/assets/i18n/it.json +0 -3
- package/src/assets/i18n/kk.json +0 -3
- package/src/assets/i18n/pt.json +0 -3
- package/src/assets/i18n/ru.json +0 -3
- package/src/assets/i18n/sr.json +0 -3
- package/src/assets/i18n/sv.json +0 -3
- package/src/assets/i18n/tr.json +0 -3
- package/src/assets/i18n/uk.json +0 -3
- package/src/assets/i18n/uz.json +0 -3
- package/src/chat21-core/providers/firebase/firebase-typing.service.ts +9 -7
- package/src/chat21-core/utils/constants.ts +0 -4
- package/src/chat21-core/utils/user-typing/user-typing.component.html +5 -8
- package/src/chat21-core/utils/user-typing/user-typing.component.scss +17 -87
- package/src/chat21-core/utils/user-typing/user-typing.component.ts +94 -12
- package/src/chat21-core/utils/utils.ts +1 -5
- package/src/global.scss +43 -47
- package/src/variables.scss +8 -19
package/CHANGELOG.md
CHANGED
|
@@ -1,30 +1,9 @@
|
|
|
1
1
|
# chat21-ionic ver 3.0
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
## 3.0.78 in PROD
|
|
4
4
|
- bug-fixed: unassigned request not sound the if is the first at all
|
|
5
|
-
- bug-fixed: translations missed
|
|
6
|
-
- bug-fixed: direct info not showed in conversation-header component
|
|
7
|
-
- removed: conversation-footer border top
|
|
8
|
-
- changed: colors to message-text-area icons and message-attachment components
|
|
9
|
-
|
|
10
|
-
### 3.0.78-rc.3
|
|
11
|
-
- changed: user-typing location moved from conversation-header to conversation-detail component
|
|
12
|
-
- changed: replace includes with startsWith for check what type of conversation is in project info conversation-list component
|
|
13
|
-
- added: styleMap integrations to some elements
|
|
14
|
-
- bug-fixed: no tooltip showed if no unserved request are present
|
|
15
|
-
|
|
16
|
-
### 3.0.78-rc.2
|
|
17
|
-
- changed: project item UI and tooltip msg
|
|
18
|
-
- changed: conversation UI in conversations list component
|
|
19
|
-
- changed: conversation detail header component
|
|
20
|
-
- added: open/close info-conversation moved from conversation-header to conversation detail component
|
|
21
5
|
- bug-fixed: canned responses opens in incorrect mode
|
|
22
6
|
|
|
23
|
-
### 3.0.78-rc.1
|
|
24
|
-
- changed: conversation-list page width increased
|
|
25
|
-
- changed: background changed in info-message component
|
|
26
|
-
- changed: project-item UI
|
|
27
|
-
- changed: conversation-list page UI
|
|
28
7
|
|
|
29
8
|
## 3.0.77 in PROD
|
|
30
9
|
|
package/package.json
CHANGED
package/src/app/app.component.ts
CHANGED
|
@@ -1148,7 +1148,7 @@ export class AppComponent implements OnInit {
|
|
|
1148
1148
|
|
|
1149
1149
|
subscribeUnservedRequestCount = (unservedRequestCount) => {
|
|
1150
1150
|
if(unservedRequestCount && unservedRequestCount > 0){
|
|
1151
|
-
this.logger.debug("
|
|
1151
|
+
this.logger.debug("hasToSoundUnservedRequestCount::::", this.isInitialized)
|
|
1152
1152
|
if(this.isInitialized){
|
|
1153
1153
|
this.manageTabNotification(unservedRequestCount) //sound and alternate title
|
|
1154
1154
|
}
|
package/src/app/chatlib/conversation-detail/conversation-content/conversation-content.component.ts
CHANGED
|
@@ -17,18 +17,11 @@ export class ConversationContentComponent implements OnInit {
|
|
|
17
17
|
@Input() messages: MessageModel[]
|
|
18
18
|
@Input() senderId: string;
|
|
19
19
|
@Input() baseLocation: string;
|
|
20
|
-
@Input() isConversationArchived: boolean;
|
|
21
|
-
@Input() isTypings: boolean;
|
|
22
|
-
@Input() idUserTypingNow: string;
|
|
23
|
-
@Input() nameUserTypingNow: string;
|
|
24
|
-
@Input() typingLocation: string;
|
|
25
|
-
@Input() fullscreenMode: boolean;
|
|
26
20
|
@Input() translationMap: Map<string, string>;
|
|
27
21
|
@Input() stylesMap: Map<string, string>;
|
|
28
22
|
@Output() onBeforeMessageRender = new EventEmitter();
|
|
29
23
|
@Output() onAfterMessageRender = new EventEmitter();
|
|
30
|
-
@Output() onMenuOptionShow = new EventEmitter
|
|
31
|
-
@Output() onEmojiiPickerShow = new EventEmitter<boolean>()
|
|
24
|
+
@Output() onMenuOptionShow = new EventEmitter();
|
|
32
25
|
@Output() onAttachmentButtonClicked = new EventEmitter();
|
|
33
26
|
@Output() onScrollContent = new EventEmitter();
|
|
34
27
|
|
|
@@ -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')">
|
|
@@ -92,12 +81,9 @@
|
|
|
92
81
|
<chat-bubble-message class="messages msg_sent" id="message_msg_sent" style="position: relative;"
|
|
93
82
|
[ngClass]="{'has-metadata': (isImage(message) || isFrame(message)), 'privateMsg': (message?.attributes && message?.attributes?.subtype === 'private')}"
|
|
94
83
|
[class.emoticon]="isEmojii(message?.text)"
|
|
95
|
-
[ngStyle]="{'background': stylesMap.get('bubbleSentBackground'), 'color': stylesMap.get('bubbleSentTextColor')}"
|
|
96
84
|
[ngClass]="{'button-in-msg' : message.metadata && message.metadata.button}"
|
|
97
85
|
[message]="message"
|
|
98
|
-
[
|
|
99
|
-
[fontSize]="stylesMap.get('fontSize')"
|
|
100
|
-
[fontFamily]="stylesMap.get('fontFamily')"
|
|
86
|
+
[textColor]="'col-msg-sent'"
|
|
101
87
|
[addAsCannedResponseTooltipText]="addAsCannedResponseTooltipText"
|
|
102
88
|
[areVisibleCAR]="areVisibleCAR"
|
|
103
89
|
[supportMode]="supportMode"
|
|
@@ -120,6 +106,8 @@
|
|
|
120
106
|
class="message_sender_fullname">
|
|
121
107
|
{{message.sender_fullname}}
|
|
122
108
|
</div>
|
|
109
|
+
|
|
110
|
+
|
|
123
111
|
<div role="messaggio" *ngIf="messageType(MESSAGE_TYPE_OTHERS, message)" class="msg_container base_receive">
|
|
124
112
|
|
|
125
113
|
<!-- <chat-avatar-image class="slide-in-left"
|
|
@@ -133,11 +121,8 @@
|
|
|
133
121
|
<chat-bubble-message class="messages msg_receive" id="message_msg_receive" style="position: relative;"
|
|
134
122
|
[ngClass]="{'has-metadata': (isImage(message) || isFrame(message)), 'privateMsg': (message?.attributes && message?.attributes?.subtype === 'private')}"
|
|
135
123
|
[class.emoticon]="isEmojii(message?.text)"
|
|
136
|
-
[ngStyle]="{'background': stylesMap?.get('bubbleReceivedBackground'), 'color': stylesMap.get('bubbleReceivedTextColor')}"
|
|
137
124
|
[message]="message"
|
|
138
|
-
[
|
|
139
|
-
[fontSize]="stylesMap?.get('fontSize')"
|
|
140
|
-
[fontFamily]="stylesMap?.get('fontFamily')"
|
|
125
|
+
[textColor]="'black'"
|
|
141
126
|
[addAsCannedResponseTooltipText]="addAsCannedResponseTooltipText"
|
|
142
127
|
[areVisibleCAR]="areVisibleCAR"
|
|
143
128
|
[supportMode]="supportMode"
|
|
@@ -162,26 +147,15 @@
|
|
|
162
147
|
|
|
163
148
|
<!-- uploadProgress -> {{ uploadProgress }} -->
|
|
164
149
|
<div *ngIf="uploadProgress !== 100" class="msg_container base_sent" style="margin-right: 20px;">
|
|
165
|
-
<div class="
|
|
166
|
-
<div class="
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
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>
|
|
170
156
|
</div>
|
|
171
157
|
</div>
|
|
172
158
|
|
|
173
|
-
<div *ngIf="isTypings" class="msg_container base_receive typing_container">
|
|
174
|
-
<!-- !isSameSender(idUserTypingNow, i) -->
|
|
175
|
-
<!-- <div *ngIf="nameUserTypingNow">{{nameUserTypingNow}}</div> -->
|
|
176
|
-
<user-typing
|
|
177
|
-
[themeColor]="stylesMap?.get('themeColor')"
|
|
178
|
-
[translationMap]="translationMap"
|
|
179
|
-
[idUserTypingNow]="idUserTypingNow"
|
|
180
|
-
[nameUserTypingNow]="nameUserTypingNow">
|
|
181
|
-
</user-typing>
|
|
182
|
-
<div class="typing_info" *ngIf="nameUserTypingNow"> {{nameUserTypingNow}} {{translationMap.get('LABEL_IS_WRITING')}}</div>
|
|
183
|
-
</div>
|
|
184
|
-
|
|
185
159
|
</div>
|
|
186
160
|
|
|
187
161
|
<!-- fileType > {{fileType }} uploadProgress {{uploadProgress}} -->
|
|
@@ -33,52 +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
|
-
}
|
|
52
|
-
|
|
53
|
-
&.mobile{
|
|
54
|
-
right: 0px;
|
|
55
|
-
}
|
|
56
|
-
&::before{
|
|
57
|
-
content: "";
|
|
58
|
-
width: 102px;
|
|
59
|
-
height: 34px;
|
|
60
|
-
background-image: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjM0IiB2aWV3Qm94PSIwIDAgMTAyIDM0IiB3aWR0aD0iMTAyIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgogICAgPHBhdGggZD0ibTEwMiAwaC0xMDJsLjA3MTQwOC40MTk3NTNjMTEuMzE5MTkyLS4wMTU1NTggMjIuMjg4MTkyIDMuOTIwMzM3IDMxLjAxMjA5MiAxMS4xMjc2NDdsNy40ODk0IDYuNTAyIDEuNjUwOCAxLjQyMjkgNi42OTU1IDUuNzhjNi41Mzc0IDUuNjQwNSAxNC44ODU3IDguNzQ1MSAyMy41MjI3IDguNzQ3N2gzMS41NTQxeiIKICAgICAgICAgIGZpbGw9IiNlMmU4ZWYiLz4KPC9zdmc+);
|
|
61
|
-
position: relative;
|
|
62
|
-
left: 50px;
|
|
63
|
-
z-index: -1;
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
ion-button {
|
|
67
|
-
text-transform: unset;
|
|
68
|
-
color: var(--basic-blue);
|
|
69
|
-
&:hover {
|
|
70
|
-
--background-hover: transparent;
|
|
71
|
-
text-decoration: underline;
|
|
72
|
-
text-decoration-color: var(--basic-blue);
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
ion-icon{
|
|
77
|
-
margin: 5px;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
|
|
82
36
|
ion-item {
|
|
83
37
|
--padding-end: 0px;
|
|
84
38
|
--inner-padding-end: 0px;
|
|
@@ -106,33 +60,12 @@ ion-item {
|
|
|
106
60
|
|
|
107
61
|
.message_sender_fullname {
|
|
108
62
|
font-size: 0.9em;
|
|
109
|
-
margin: 0 0 1px
|
|
63
|
+
margin: 0 0 1px 10px;
|
|
110
64
|
// color: var(--gray);
|
|
111
65
|
font-weight: 500;
|
|
112
66
|
color: #080f1a;
|
|
113
67
|
}
|
|
114
68
|
|
|
115
|
-
.typing_container{
|
|
116
|
-
display:flex;
|
|
117
|
-
align-items: center;
|
|
118
|
-
|
|
119
|
-
user-typing {
|
|
120
|
-
text-align: right;
|
|
121
|
-
}
|
|
122
|
-
.typing_info{
|
|
123
|
-
color: var(--basic-gray);
|
|
124
|
-
margin-left: 10px;
|
|
125
|
-
font-size: 12px;
|
|
126
|
-
animation: blinker 1s linear infinite;
|
|
127
|
-
|
|
128
|
-
@keyframes blinker {
|
|
129
|
-
50% {
|
|
130
|
-
opacity: 0;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
69
|
.messages {
|
|
137
70
|
border-radius: 18px;
|
|
138
71
|
padding: 0;
|
|
@@ -180,7 +113,7 @@ ion-item {
|
|
|
180
113
|
/** recive message **/
|
|
181
114
|
.base_receive {
|
|
182
115
|
// padding: 0px 0px 6px 0px;
|
|
183
|
-
padding: 0px 0px 15px
|
|
116
|
+
padding: 0px 0px 15px 0px; // edited to display the date at the bottom of the "message bubble"
|
|
184
117
|
/* avatar */
|
|
185
118
|
.content-avatar {
|
|
186
119
|
position: relative;
|
|
@@ -209,8 +142,8 @@ ion-item {
|
|
|
209
142
|
}
|
|
210
143
|
/* message */
|
|
211
144
|
.msg_receive {
|
|
212
|
-
background-color: var(--
|
|
213
|
-
color:
|
|
145
|
+
background-color: var(--light-white);
|
|
146
|
+
color: #1a1a1a;
|
|
214
147
|
// max-width: 260px;
|
|
215
148
|
max-width: calc(100% - 70px);
|
|
216
149
|
min-width: 14px;
|
|
@@ -234,64 +167,63 @@ ion-item {
|
|
|
234
167
|
.has-metadata {
|
|
235
168
|
max-width: 100% !important;
|
|
236
169
|
}
|
|
237
|
-
|
|
238
170
|
}
|
|
239
171
|
|
|
240
172
|
.time {
|
|
241
173
|
margin-bottom: 20px;
|
|
242
174
|
}
|
|
243
175
|
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
width: 70px;
|
|
176
|
+
// Loading Spinner
|
|
177
|
+
.spinner {
|
|
178
|
+
// margin: 100px auto 0;
|
|
179
|
+
width: 90px;
|
|
249
180
|
min-height: 20px;
|
|
250
|
-
|
|
181
|
+
padding: 7px;
|
|
251
182
|
text-align: center;
|
|
252
183
|
}
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
background-color: var(--bubble-blue);
|
|
184
|
+
|
|
185
|
+
.spinner > div {
|
|
186
|
+
width: 10px;
|
|
187
|
+
height: 10px;
|
|
188
|
+
background-color: rgb(255, 255, 255);
|
|
189
|
+
|
|
260
190
|
border-radius: 100%;
|
|
261
191
|
display: inline-block;
|
|
262
192
|
-webkit-animation: sk-bouncedelay 1.4s infinite ease-in-out both;
|
|
263
193
|
animation: sk-bouncedelay 1.4s infinite ease-in-out both;
|
|
264
194
|
}
|
|
265
|
-
|
|
195
|
+
|
|
196
|
+
.spinner .bounce1 {
|
|
266
197
|
-webkit-animation-delay: -0.32s;
|
|
267
198
|
animation-delay: -0.32s;
|
|
268
199
|
}
|
|
269
|
-
|
|
200
|
+
|
|
201
|
+
.spinner .bounce2 {
|
|
270
202
|
-webkit-animation-delay: -0.16s;
|
|
271
203
|
animation-delay: -0.16s;
|
|
272
204
|
}
|
|
273
|
-
|
|
274
|
-
display: block;
|
|
275
|
-
margin: 0.5em 0 0 0;
|
|
276
|
-
color: var(--col-msg-sent);
|
|
277
|
-
/* text-transform: uppercase; */
|
|
278
|
-
font-family: 'Roboto', sans-serif;
|
|
279
|
-
-webkit-animation: pulse 2000ms linear infinite;
|
|
280
|
-
-moz-animation: pulse 2000ms linear infinite;
|
|
281
|
-
animation: pulse 2000ms linear infinite;
|
|
282
|
-
text-align: center;
|
|
283
|
-
}
|
|
205
|
+
|
|
284
206
|
@-webkit-keyframes sk-bouncedelay {
|
|
285
|
-
0%,
|
|
286
|
-
|
|
207
|
+
0%,
|
|
208
|
+
80%,
|
|
209
|
+
100% {
|
|
210
|
+
-webkit-transform: scale(0);
|
|
211
|
+
}
|
|
212
|
+
40% {
|
|
213
|
+
-webkit-transform: scale(1);
|
|
214
|
+
}
|
|
287
215
|
}
|
|
216
|
+
|
|
288
217
|
@keyframes sk-bouncedelay {
|
|
289
|
-
0%,
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
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);
|
|
295
227
|
}
|
|
296
228
|
}
|
|
297
229
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ConversationContentComponent } from '../conversation-content/conversation-content.component';
|
|
2
|
-
import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter
|
|
2
|
+
import { ChangeDetectorRef, Component, Input, OnInit, Output, EventEmitter } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
import { MESSAGE_TYPE_INFO, MESSAGE_TYPE_MINE, MESSAGE_TYPE_OTHERS } from 'src/chat21-core/utils/constants';
|
|
@@ -24,17 +24,14 @@ export class IonConversationDetailComponent extends ConversationContentComponent
|
|
|
24
24
|
@Input() channelType: string;
|
|
25
25
|
@Input() areVisibleCAR: boolean;
|
|
26
26
|
@Input() supportMode: boolean;
|
|
27
|
-
@Input() isMobile: boolean;
|
|
28
27
|
@Output() onElementRendered = new EventEmitter<{element: string, status: boolean}>();
|
|
29
28
|
@Output() onAddUploadingBubble = new EventEmitter<boolean>();
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
|
|
32
30
|
public public_Key: any
|
|
33
31
|
public uploadProgress: number = 100
|
|
34
32
|
public fileType: any
|
|
35
33
|
public browserLang: string;
|
|
36
34
|
public addAsCannedResponseTooltipText: string;
|
|
37
|
-
public openInfoConversation: boolean = true;
|
|
38
35
|
isImage = isImage;
|
|
39
36
|
isFile = isFile;
|
|
40
37
|
isFrame = isFrame;
|
|
@@ -69,11 +66,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
|
|
|
69
66
|
ngOnInit() {
|
|
70
67
|
this.listenToUploadFileProgress();
|
|
71
68
|
this.setMomentLocaleAndGetTranslation();
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
ngOnChanges(changes: SimpleChanges){
|
|
76
|
-
this.isMobile? this.openInfoConversation = false: null;
|
|
77
69
|
}
|
|
78
70
|
|
|
79
71
|
|
|
@@ -144,11 +136,6 @@ export class IonConversationDetailComponent extends ConversationContentComponent
|
|
|
144
136
|
this.onElementRendered.emit(event)
|
|
145
137
|
}
|
|
146
138
|
|
|
147
|
-
onOpenCloseInfoConversationFN(){
|
|
148
|
-
this.openInfoConversation = !this.openInfoConversation
|
|
149
|
-
this.onOpenCloseInfoConversation.emit(this.openInfoConversation)
|
|
150
|
-
}
|
|
151
|
-
|
|
152
139
|
/**
|
|
153
140
|
* Track by function for ngFor loops
|
|
154
141
|
*
|
package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.html
CHANGED
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
|
|
51
51
|
<chat-text *ngIf="message?.type !=='html'"
|
|
52
52
|
[text]="message?.text"
|
|
53
|
-
[color]="
|
|
53
|
+
[color]="textColor"
|
|
54
54
|
[message]="message"
|
|
55
55
|
(onBeforeMessageRender)="returnOnBeforeMessageRender($event)"
|
|
56
56
|
(onAfterMessageRender)="returnOnAfterMessageRender($event)">
|
package/src/app/chatlib/conversation-detail/message/bubble-message/bubble-message.component.ts
CHANGED
|
@@ -18,9 +18,7 @@ import { ModalController } from '@ionic/angular';
|
|
|
18
18
|
export class BubbleMessageComponent implements OnInit, OnChanges {
|
|
19
19
|
|
|
20
20
|
@Input() message: MessageModel;
|
|
21
|
-
@Input()
|
|
22
|
-
@Input() fontSize: string;
|
|
23
|
-
@Input() fontFamily: string;
|
|
21
|
+
@Input() textColor: string;
|
|
24
22
|
@Input() areVisibleCAR: boolean;
|
|
25
23
|
@Input() supportMode: boolean;
|
|
26
24
|
@Output() onBeforeMessageRender = new EventEmitter();
|
|
@@ -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>
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// @import '../../../../../sass/variables';
|
|
2
2
|
|
|
3
3
|
div {
|
|
4
|
-
--
|
|
5
|
-
--
|
|
6
|
-
--
|
|
7
|
-
--
|
|
8
|
-
--
|
|
4
|
+
--bck-msg-sent: #62a8ea;
|
|
5
|
+
--col-msg-sent:#ffffff;
|
|
6
|
+
--light-white: #f7f7f7;
|
|
7
|
+
--black: #1a1a1a;
|
|
8
|
+
--gray: #aaaaaa;
|
|
9
|
+
--blue: rgb(42, 106, 193);
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
.button-in-msg {
|
|
@@ -14,32 +15,32 @@ div {
|
|
|
14
15
|
max-width: 300px;
|
|
15
16
|
min-width: inherit;
|
|
16
17
|
cursor: pointer;
|
|
17
|
-
border: 1px solid var(--
|
|
18
|
+
border: 1px solid var(--blue);
|
|
18
19
|
border-radius: 20px;
|
|
19
20
|
margin: 3px;
|
|
20
|
-
background:
|
|
21
|
+
background: transparent;
|
|
21
22
|
overflow: hidden;
|
|
22
23
|
font-family: 'Muli', sans-serif;
|
|
23
|
-
font-size:
|
|
24
|
+
font-size: 15px;
|
|
24
25
|
-o-text-overflow: ellipsis;
|
|
25
26
|
text-overflow: ellipsis;
|
|
26
27
|
white-space: nowrap;
|
|
27
28
|
letter-spacing: -0.24px;
|
|
28
29
|
-webkit-font-smoothing: antialiased;
|
|
29
|
-
color: var(--
|
|
30
|
+
color: var(--blue);
|
|
30
31
|
line-height: 16px;
|
|
31
32
|
}
|
|
32
33
|
|
|
33
34
|
.action {
|
|
34
|
-
background:
|
|
35
|
+
background: white;
|
|
35
36
|
transition: background-color .6s ease;
|
|
36
37
|
&:focus,
|
|
37
38
|
&:hover {
|
|
38
|
-
color:
|
|
39
|
-
background: var(--
|
|
39
|
+
color: white;
|
|
40
|
+
background: var(--blue);
|
|
40
41
|
.icon-button-action {
|
|
41
42
|
svg {
|
|
42
|
-
fill:
|
|
43
|
+
fill: white;
|
|
43
44
|
}
|
|
44
45
|
}
|
|
45
46
|
}
|
|
@@ -79,12 +80,4 @@ div {
|
|
|
79
80
|
// height: 200px;
|
|
80
81
|
// }
|
|
81
82
|
// }
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
.disabled {
|
|
86
|
-
// border: 1px solid #999999;
|
|
87
|
-
// background-color: #cccccc;
|
|
88
|
-
// color: #666666;
|
|
89
|
-
pointer-events: none;
|
|
90
|
-
}
|
|
83
|
+
}
|
package/src/app/chatlib/conversation-detail/message/buttons/action-button/action-button.component.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component, ElementRef, EventEmitter, Input, OnInit, Output
|
|
1
|
+
import { Component, ElementRef, EventEmitter, Input, OnInit, Output } from '@angular/core';
|
|
2
2
|
|
|
3
3
|
@Component({
|
|
4
4
|
selector: 'chat-action-button-attachment',
|
|
@@ -8,36 +8,16 @@ import { Component, ElementRef, EventEmitter, Input, OnInit, Output, SimpleChang
|
|
|
8
8
|
export class ActionButtonComponent implements OnInit {
|
|
9
9
|
|
|
10
10
|
@Input() button: any;
|
|
11
|
-
@Input()
|
|
12
|
-
@Input()
|
|
13
|
-
@Input() textColor: string;
|
|
14
|
-
@Input() hoverBackgroundColor: string;
|
|
15
|
-
@Input() hoverTextColor: string;
|
|
11
|
+
@Input() themeColor: string;
|
|
12
|
+
@Input() foregroundColor: string;
|
|
16
13
|
@Output() onButtonClicked = new EventEmitter();
|
|
17
|
-
|
|
18
14
|
public type: string = "action"
|
|
19
15
|
constructor(private elementRef: ElementRef) { }
|
|
20
16
|
|
|
21
17
|
ngOnInit() {
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
ngOnChanges(changes: SimpleChanges){
|
|
25
18
|
//decomment if element should have same color of themeColor and fregroundColor
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
if(this.textColor) this.elementRef.nativeElement.querySelector('.action').style.setProperty('--textColor', this.textColor);
|
|
29
|
-
if(this.hoverBackgroundColor) this.elementRef.nativeElement.querySelector('.action').style.setProperty('--hoverBackgroundColor', this.hoverBackgroundColor);
|
|
30
|
-
if(this.hoverTextColor) this.elementRef.nativeElement.querySelector('.action').style.setProperty('--hoverTextColor', this.hoverTextColor);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
onMouseOver(event){
|
|
34
|
-
// if(this.themeColor) this.elementRef.nativeElement.querySelector('.action').style.background = this.themeColor
|
|
35
|
-
// if(this.foregroundColor) this.elementRef.nativeElement.querySelector('.action').style.color = this.foregroundColor
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
onMouseOut(event){
|
|
39
|
-
// this.elementRef.nativeElement.querySelector('.action').style.color = '';
|
|
40
|
-
// this.elementRef.nativeElement.querySelector('.action').style.background = ''
|
|
19
|
+
// this.elementRef.nativeElement.style.setProperty('--themeColor', this.themeColor);
|
|
20
|
+
// this.elementRef.nativeElement.style.setProperty('--foregroundColor', this.foregroundColor);
|
|
41
21
|
}
|
|
42
22
|
|
|
43
23
|
actionButtonAction(){
|
package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.html
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
<div class="button-in-msg url" (click)="actionButtonUrl()" title="{{button?.value}}"
|
|
2
|
-
(mouseover)="onMouseOver($event)" (mouseout)="onMouseOut($event)">
|
|
1
|
+
<div class="button-in-msg url" (click)="actionButtonUrl()" title="{{button?.value}}">
|
|
3
2
|
<span *ngIf="button?.target !== 'self'" class="icon-button-action">
|
|
4
3
|
<!-- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="black" width="12px" height="12px">
|
|
5
4
|
<path d="M0 0h24v24H0z" fill="none"/>
|
package/src/app/chatlib/conversation-detail/message/buttons/link-button/link-button.component.scss
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
// @import '../../../../../sass/variables';
|
|
2
2
|
|
|
3
3
|
div {
|
|
4
|
-
--
|
|
5
|
-
--
|
|
6
|
-
--
|
|
7
|
-
--
|
|
8
|
-
--
|
|
4
|
+
--bck-msg-sent: #62a8ea;
|
|
5
|
+
--col-msg-sent:#ffffff;
|
|
6
|
+
--light-white: #f7f7f7;
|
|
7
|
+
--black: #1a1a1a;
|
|
8
|
+
--gray: #aaaaaa;
|
|
9
|
+
--blue: rgb(42, 106, 193);
|
|
9
10
|
}
|
|
10
11
|
|
|
11
12
|
.button-in-msg {
|
|
@@ -14,19 +15,19 @@ div {
|
|
|
14
15
|
max-width: 300px;
|
|
15
16
|
min-width: inherit;
|
|
16
17
|
cursor: pointer;
|
|
17
|
-
border: 1px solid var(--
|
|
18
|
+
border: 1px solid var(--blue);
|
|
18
19
|
border-radius: 20px;
|
|
19
20
|
margin: 3px;
|
|
20
|
-
background:
|
|
21
|
+
background: transparent;
|
|
21
22
|
overflow: hidden;
|
|
22
23
|
font-family: 'Muli', sans-serif;
|
|
23
|
-
font-size:
|
|
24
|
+
font-size: 15px;
|
|
24
25
|
-o-text-overflow: ellipsis;
|
|
25
26
|
text-overflow: ellipsis;
|
|
26
27
|
white-space: nowrap;
|
|
27
28
|
letter-spacing: -0.24px;
|
|
28
29
|
-webkit-font-smoothing: antialiased;
|
|
29
|
-
color: var(--
|
|
30
|
+
color: var(--blue);
|
|
30
31
|
line-height: 16px;
|
|
31
32
|
}
|
|
32
33
|
|
|
@@ -37,23 +38,23 @@ div {
|
|
|
37
38
|
top: -1px;
|
|
38
39
|
right: 1px;
|
|
39
40
|
svg {
|
|
40
|
-
fill: var(--
|
|
41
|
+
fill: var(--blue);
|
|
41
42
|
}
|
|
42
43
|
}
|
|
43
44
|
.icon-button-action-self{
|
|
44
45
|
position: absolute;
|
|
45
46
|
right: 1px;
|
|
46
47
|
svg {
|
|
47
|
-
fill: var(--
|
|
48
|
+
fill: var(--blue);
|
|
48
49
|
}
|
|
49
50
|
}
|
|
50
51
|
&:focus,
|
|
51
52
|
&:hover {
|
|
52
|
-
color:
|
|
53
|
-
background: var(--
|
|
53
|
+
color: white;
|
|
54
|
+
background: var(--blue);
|
|
54
55
|
.icon-button-action, .icon-button-action-self {
|
|
55
56
|
svg {
|
|
56
|
-
fill:
|
|
57
|
+
fill: white;
|
|
57
58
|
}
|
|
58
59
|
}
|
|
59
60
|
}
|