@ -28,26 +28,14 @@
v - if = "membersToShow().length > 0 && showOrganizerTools && isOrganizer"
>
Click
< span
class = "inline-block w-5 h-5 rounded-full bg-blue-100 text-blue-600 text-center"
>
< font -awesome icon = "plus" class = "text-sm" / >
< / span >
< font -awesome icon = "circle-plus" class = "text-blue-500 text-sm" / >
/
< span
class = "inline-block w-5 h-5 rounded-full bg-blue-100 text-blue-600 text-center"
>
< font -awesome icon = "minus" class = "text-sm" / >
< / span >
< font -awesome icon = "circle-minus" class = "text-rose-500 text-sm" / >
to add / remove them to / from the meeting .
< / li >
< li v-if ="membersToShow().length > 0" >
Click
< span
class = "inline-block w-5 h-5 rounded-full bg-green-100 text-green-600 text-center"
>
< font -awesome icon = "circle-user" class = "text-sm" / >
< / span >
< font -awesome icon = "circle-user" class = "text-green-600 text-sm" / >
to add them to your contacts .
< / li >
< / ul >
@ -74,16 +62,38 @@
< li
v - for = "member in membersToShow()"
: key = "member.member.memberId"
class = "border-b border-slate-300 py-1.5"
: class = " [
'border-b px-2 sm:px-3 py-1.5' ,
{
'bg-blue-50 border-t border-blue-300 -mt-[1px]' :
! member . member . admitted ,
} ,
{ 'border-slate-300' : member . member . admitted } ,
] "
>
< div class = "flex items-center gap-2 justify-between" >
< div class = "flex items-center gap-1 overflow-hidden" >
< h3 class = "font-semibold truncate" >
< h3
: class = " [
'font-semibold truncate' ,
{ 'text-slate-500' : ! member . member . admitted } ,
] "
>
< font -awesome
v - if = "member.member.memberId === members[0]?.memberId"
icon = "crown"
class = "fa-fw text-amber-400"
/ >
< font -awesome
v - if = "!member.member.admitted"
icon = "spinner"
class = "fa-fw fa-spin-pulse text-slate-400"
/ >
{ { member . name || unnamedMember } }
< / h3 >
< div
v - if = "!getContactFor(member.did) && member.did !== activeDid"
class = "flex items-center gap-1"
class = "flex items-center gap-1.5 ms-1 "
>
< button
class = "btn-add-contact"
@ -102,7 +112,7 @@
)
"
>
< font -awesome icon = "circle-info" class = "text-sm" / >
< font -awesome icon = "circle-info" / >
< / button >
< / div >
< / div >
@ -110,17 +120,23 @@
v - if = "
showOrganizerTools && isOrganizer && member . did !== activeDid
"
class = "flex items-center gap-1"
class = "flex items-center gap-1.5 "
>
< button
class = "btn-admission"
: class = "
member . member . admitted
? 'btn-admission-remove'
: 'btn-admission-add'
"
: title = "
member . member . admitted ? 'Remove member' : 'Admit member'
"
@ click = "checkWhetherContactBeforeAdmitting(member)"
>
< font -awesome
: icon = "member.member.admitted ? 'minus' : 'plus'"
: icon = "
member . member . admitted ? 'circle-minus' : 'circle-plus'
"
/ >
< / button >
@ -129,7 +145,7 @@
title = "Admission Info"
@ click = "informAboutAdmission()"
>
< font -awesome icon = "circle-info" class = "text-sm" / >
< font -awesome icon = "circle-info" / >
< / button >
< / span >
< / div >
@ -378,17 +394,44 @@ export default class MembersList extends Vue {
}
membersToShow ( ) : DecryptedMember [ ] {
let members : DecryptedMember [ ] = [ ] ;
if ( this . isOrganizer ) {
if ( this . showOrganizerTools ) {
return this . decryptedMembers ;
members = this . decryptedMembers ;
} else {
return this . decryptedMembers . filter (
members = this . decryptedMembers . filter (
( member : DecryptedMember ) => member . member . admitted ,
) ;
}
}
} else {
/ / n o n - o r g a n i z e r s o n l y g e t v i s i b l e m e m b e r s f r o m s e r v e r
return this . decryptedMembers ;
members = this . decryptedMembers ;
}
/ / S o r t m e m b e r s a c c o r d i n g t o p r i o r i t y :
/ / 1 . O r g a n i z e r a t t h e t o p
/ / 2 . N o n - a d m i t t e d m e m b e r s n e x t
/ / 3 . E v e r y o n e e l s e a f t e r
return members . sort ( ( a , b ) => {
/ / C h e c k i f e i t h e r m e m b e r i s t h e o r g a n i z e r ( f i r s t m e m b e r i n o r i g i n a l l i s t )
const aIsOrganizer = a . member . memberId === this . members [ 0 ] ? . memberId ;
const bIsOrganizer = b . member . memberId === this . members [ 0 ] ? . memberId ;
/ / O r g a n i z e r a l w a y s c o m e s f i r s t
if ( aIsOrganizer && ! bIsOrganizer ) return - 1 ;
if ( ! aIsOrganizer && bIsOrganizer ) return 1 ;
/ / I f b o t h a r e o r g a n i z e r s o r n e i t h e r a r e o r g a n i z e r s , s o r t b y a d m i s s i o n s t a t u s
if ( aIsOrganizer && bIsOrganizer ) return 0 ; / / B o t h o r g a n i z e r s , m a i n t a i n o r i g i n a l o r d e r
/ / N o n - a d m i t t e d m e m b e r s c o m e b e f o r e a d m i t t e d m e m b e r s
if ( ! a . member . admitted && b . member . admitted ) return - 1 ;
if ( a . member . admitted && ! b . member . admitted ) return 1 ;
/ / I f a d m i s s i o n s t a t u s i s t h e s a m e , m a i n t a i n o r i g i n a l o r d e r
return 0 ;
} ) ;
}
informAboutAdmission ( ) {
@ -718,23 +761,26 @@ export default class MembersList extends Vue {
. btn - add - contact {
/* stylelint-disable-next-line at-rule-no-unknown */
@ apply w - 6 h - 6 flex items - center justify - center rounded - full
bg - green - 100 text - green - 600 hover : bg - green - 200 hover : text - green - 800
@ apply text - lg text - green - 600 hover : text - green - 800
transition - colors ;
}
. btn - info - contact ,
. btn - info - admission {
/* stylelint-disable-next-line at-rule-no-unknown */
@ apply w - 6 h - 6 flex items - center justify - center rounded - full
bg - slate - 100 text - slate - 400 hover : text - slate - 600
@ apply text - slate - 400 hover : text - slate - 600
transition - colors ;
}
. btn - admission {
. btn - admission - add {
/* stylelint-disable-next-line at-rule-no-unknown */
@ apply w - 6 h - 6 flex items - center justify - center rounded - full
bg - blue - 100 text - blue - 600 hover : bg - blue - 200 hover : text - blue - 800
@ apply text - lg text - blue - 500 hover : text - blue - 700
transition - colors ;
}
. btn - admission - remove {
/* stylelint-disable-next-line at-rule-no-unknown */
@ apply text - lg text - rose - 500 hover : text - rose - 700
transition - colors ;
}
< / style >