Skip to content

Commit 2ce6059

Browse files
committed
feat(AvatarList): make max avatars configurable
1 parent 73ef0e9 commit 2ce6059

2 files changed

Lines changed: 19 additions & 10 deletions

File tree

client/src/comps/AvatarList.ts

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
1-
import Avatar from "./Avatar";
2-
import Component from "./Component";
1+
import Avatar from "./Avatar"
2+
import Component from "./Component"
33

44
export default class AvatarList extends Component {
5-
constructor(users: string[], classes: string[] = []) {
5+
maxAvatars: number
6+
7+
constructor(
8+
users: string[],
9+
{ classes = [], maxAvatars = 3 }: { classes?: string[]; maxAvatars: number }
10+
) {
611
super("div", { id: "avatar-list", classes })
12+
this.maxAvatars = maxAvatars
713
this.reset(users)
814
}
915

1016
reset(users: string[]) {
1117
this.element.innerHTML = ""
12-
for (const user of users.slice(0, 3).toReversed()) {
18+
for (const user of users.slice(0, this.maxAvatars).toReversed()) {
1319
const avatar = new Avatar(user, "avatar-list-avatar")
1420
this.element.appendChild(avatar.element)
1521
}

client/src/comps/TypingIndicator.ts

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@ export default class TypingIndicator extends Component {
99

1010
constructor() {
1111
super("div", { id: "typing-indicator" })
12-
this.avatarList = new AvatarList([], ["typing-avatar-list"])
12+
this.avatarList = new AvatarList([], {
13+
classes: ["typing-avatar-list"],
14+
maxAvatars: 3,
15+
})
1316
this.label = document.createElement("span")
1417
this.label.className = "typing-label"
1518
this.element.appendChild(this.avatarList.element)
@@ -22,12 +25,12 @@ export default class TypingIndicator extends Component {
2225
}
2326

2427
renderLabel(users: RoomMember[]) {
25-
const names = users.map(u => `<span class="typing-user">${twemojiParse(u.name)}</span>`)
28+
const names = users.map(
29+
u => `<span class="typing-user">${twemojiParse(u.name)}</span>`
30+
)
2631
if (users.length === 0) return ""
27-
if (users.length === 1)
28-
return `${names[0]} is typing...`
29-
if (users.length === 2)
30-
return `${names[0]} and ${names[1]} are typing...`
32+
if (users.length === 1) return `${names[0]} is typing...`
33+
if (users.length === 2) return `${names[0]} and ${names[1]} are typing...`
3134
if (users.length === 3)
3235
return `${names[0]}, ${names[1]}, and ${names[2]} are typing...`
3336
return `${names[0]} and <span class="typing-user">${users.length - 1} others</span> are typing...`

0 commit comments

Comments
 (0)