Skip to content

Commit f50b2c6

Browse files
committed
(UI) add unread messages badge counter
1 parent b9176b3 commit f50b2c6

File tree

3 files changed

+34
-7
lines changed

3 files changed

+34
-7
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,9 @@ styles="{
319319
colorMessage: '#67717a',
320320
colorTimestamp: '#a2aeb8',
321321
colorStateOnline: '#4caf50',
322-
colorStateOffline: '#ccc'
322+
colorStateOffline: '#ccc',
323+
backgroundCounterBadge: '#0696c7',
324+
colorCounterBadge: '#fff'
323325
},
324326
325327
emoji: {
@@ -362,6 +364,7 @@ rooms="[
362364
{
363365
roomId: 1,
364366
roomName: 'Room 1',
367+
unreadCount: 4,
365368
lastMessage: {
366369
content: 'Last message received',
367370
sender_id: 1234,

src/ChatWindow/RoomsList.vue

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,19 +57,22 @@
5757
</div>
5858
<div
5959
class="text-last"
60-
:class="{ 'message-new': room.lastMessage.new }"
61-
v-if="room.lastMessage"
60+
:class="{ 'message-new': room.lastMessage && room.lastMessage.new }"
6261
>
63-
<span v-if="room.lastMessage.seen">
62+
<span v-if="room.lastMessage && room.lastMessage.seen">
6463
<svg-icon name="checkmark" class="icon-check" />
6564
</span>
6665
<format-message
66+
v-if="room.lastMessage"
6767
:content="getLastMessage(room)"
6868
:deleted="!!room.lastMessage.deleted"
6969
:formatLinks="false"
7070
:textFormatting="textFormatting"
7171
:singleLine="true"
7272
></format-message>
73+
<div v-if="room.unreadCount" class="room-badge">
74+
{{ room.unreadCount }}
75+
</div>
7376
</div>
7477
</div>
7578
</div>
@@ -297,7 +300,7 @@ input {
297300
display: flex;
298301
align-items: center;
299302
font-size: 12px;
300-
line-height: 17px;
303+
line-height: 19px;
301304
color: var(--chat-room-color-message);
302305
}
303306
@@ -333,6 +336,21 @@ input {
333336
background-color: var(--chat-room-color-online);
334337
}
335338
339+
.room-badge {
340+
background-color: var(--chat-room-bg-color-badge);
341+
color: var(--chat-room-color-badge);
342+
font-size: 11px;
343+
font-weight: 500;
344+
height: 13px;
345+
width: auto;
346+
min-width: 13px;
347+
border-radius: 50%;
348+
display: flex;
349+
align-items: center;
350+
justify-content: center;
351+
padding: 3px;
352+
}
353+
336354
@media only screen and (max-width: 768px) {
337355
.box-search {
338356
height: 58px;

src/themes/index.js

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,9 @@ export const defaultThemeStyles = {
8787
colorMessage: '#67717a',
8888
colorTimestamp: '#a2aeb8',
8989
colorStateOnline: '#4caf50',
90-
colorStateOffline: '#9ca6af'
90+
colorStateOffline: '#9ca6af',
91+
backgroundCounterBadge: '#0696c7',
92+
colorCounterBadge: '#fff'
9193
},
9294

9395
emoji: {
@@ -205,7 +207,9 @@ export const defaultThemeStyles = {
205207
colorMessage: '#6c7278',
206208
colorTimestamp: '#6c7278',
207209
colorStateOnline: '#4caf50',
208-
colorStateOffline: '#596269'
210+
colorStateOffline: '#596269',
211+
backgroundCounterBadge: '#1976d2',
212+
colorCounterBadge: '#fff'
209213
},
210214

211215
emoji: {
@@ -333,6 +337,8 @@ export const cssThemeVars = ({
333337
'--chat-room-color-timestamp': room.colorTimestamp,
334338
'--chat-room-color-online': room.colorStateOnline,
335339
'--chat-room-color-offline': room.colorStateOffline,
340+
'--chat-room-bg-color-badge': room.backgroundCounterBadge,
341+
'--chat-room-color-badge': room.colorCounterBadge,
336342

337343
// emoji
338344
'--chat-emoji-bg-color': emoji.background,

0 commit comments

Comments
 (0)