15 changed files with 566 additions and 94 deletions
@ -0,0 +1,2 @@ |
|||||
|
include member-list-item |
||||
|
+renderChatMemberListItem (room, member, { isHost, isGuest }) |
@ -0,0 +1,99 @@ |
|||||
|
include ../../user/components/profile-picture |
||||
|
mixin renderChatMemberListItem (room, member, options) |
||||
|
- |
||||
|
options = Object.assign({ |
||||
|
isHost: false, |
||||
|
isGuest: false, |
||||
|
}, options); |
||||
|
|
||||
|
var isRoomOwner = room.owner._id.equals(member._id); |
||||
|
var isSystemMod = user && user.flags && (user.flags.isAdmin || user.flags.isModerator); |
||||
|
var memberName = member.displayName || member.username; |
||||
|
// var isChannelMod = user && Array.isArray(message.channel.moderators) && !!message.channel.moderators.find((moderator) => moderator._id.equals(user._id)); |
||||
|
|
||||
|
li(data-member-id= member._id, data-member-username= member.username) |
||||
|
div(uk-grid).uk-grid-collapse.uk-flex-middle.member-list-item |
||||
|
.uk-width-auto |
||||
|
img(src='/img/default-member.png').member-profile-icon |
||||
|
.uk-width-expand.uk-text-small |
||||
|
a(href=`/member/${member.username}`, uk-tooltip={ title: `Visit ${member.username}`}).uk-link-reset |
||||
|
.member-display-name= member.displayName || member.username |
||||
|
.member-username @#{member.username} |
||||
|
.uk-width-auto.chat-user-menu |
||||
|
button(type="button").dtp-button-dropdown |
||||
|
i.fas.fa-ellipsis-v |
||||
|
div( |
||||
|
data-room-id= room._id, |
||||
|
uk-dropdown={ animation: "uk-animation-scale-up", duration: 250 }, |
||||
|
data-mode="click", |
||||
|
).dtp-chatmsg-menu |
||||
|
ul.uk-nav.uk-dropdown-nav |
||||
|
li.uk-nav-header= member.username |
||||
|
li |
||||
|
a( |
||||
|
href="", |
||||
|
data-username= member.username, |
||||
|
onclick="return dtp.app.mentionChatUser(event);", |
||||
|
) Mention |
||||
|
li |
||||
|
a( |
||||
|
href="", |
||||
|
data-room-id= room._id, |
||||
|
data-room-name= room.name, |
||||
|
data-user-id= member._id, |
||||
|
data-username= member.username, |
||||
|
onclick="return dtp.app.muteChatUser(event);", |
||||
|
) Mute |
||||
|
|
||||
|
if (options.isHost || options.isGuest) && !isRoomOwner |
||||
|
li.uk-nav-divider |
||||
|
if options.isHost |
||||
|
li |
||||
|
a( |
||||
|
href, |
||||
|
data-environment="ChatRoom", |
||||
|
data-room-id= room._id, |
||||
|
data-room-name= room.name, |
||||
|
data-user-id= member._id, |
||||
|
data-username= member.username, |
||||
|
data-display-name= member.displayName, |
||||
|
onclick="return dtp.app.removeRoomHost(event);", |
||||
|
) Remove host |
||||
|
if options.isGuest |
||||
|
li |
||||
|
a( |
||||
|
href, |
||||
|
data-environment="ChatRoom", |
||||
|
data-room-id= room._id, |
||||
|
data-room-name= room.name, |
||||
|
data-user-id= member._id, |
||||
|
data-username= member.username, |
||||
|
data-display-name= member.displayName, |
||||
|
onclick="return dtp.app.removeRoomGuest(event);", |
||||
|
) Remove guest |
||||
|
|
||||
|
if isSystemMod || isChannelMod |
||||
|
li.uk-nav-divider |
||||
|
li |
||||
|
a( |
||||
|
href="", |
||||
|
data-environment="ChatRoom", |
||||
|
data-room-id= room._id, |
||||
|
data-room-name= room.name, |
||||
|
data-user-id= member._id, |
||||
|
data-username= member.username, |
||||
|
data-display-name= member.displayName, |
||||
|
onclick="return dtp.app.confirmBanUserFromEnvironment(event);", |
||||
|
) Ban from room |
||||
|
|
||||
|
if isSystemMod |
||||
|
li |
||||
|
a( |
||||
|
href="", |
||||
|
data-room-id= room._id, |
||||
|
data-room-name= room.name, |
||||
|
data-user-id= member._id, |
||||
|
data-username= member.username, |
||||
|
data-display-name= member.displayName, |
||||
|
onclick="return dtp.adminApp.confirmBanUser(event);", |
||||
|
) Ban from #{site.name} |
@ -1,4 +1,5 @@ |
|||||
@import "site/main.less"; |
@import "site/main.less"; |
||||
|
@import "site/button.less"; |
||||
@import "site/navbar.less"; |
@import "site/navbar.less"; |
||||
@import "site/stage.less"; |
@import "site/stage.less"; |
||||
@import "site/image.less"; |
@import "site/image.less"; |
@ -0,0 +1,23 @@ |
|||||
|
button.dtp-button-dropdown { |
||||
|
/* |
||||
|
* This is a series of settings that improve the "clickable area" of the |
||||
|
* button without making it take up more space in the layout. |
||||
|
*/ |
||||
|
display: inline-block; |
||||
|
position: relative; |
||||
|
padding: 1em; |
||||
|
margin: -1em; |
||||
|
|
||||
|
&.always-on-top { |
||||
|
z-index: 1; |
||||
|
} |
||||
|
|
||||
|
/* |
||||
|
* The actual "style" of the thing |
||||
|
*/ |
||||
|
background: none; |
||||
|
border: none; |
||||
|
outline: none; |
||||
|
color: #e8e8e8; |
||||
|
cursor: pointer; |
||||
|
} |
After Width: | Height: | Size: 37 KiB |
Loading…
Reference in new issue