) => setFilter(e.target.value), [])
const roomCtx = use(RoomContext)
if (roomCtx?.store && !roomCtx?.store.membersRequested && !roomCtx?.store.fullMembersLoaded) {
roomCtx.store.membersRequested = true
use(ClientContext)?.loadRoomState(roomCtx.store.roomID, { omitMembers: false, refetch: false })
}
- const memberEvents = useRoomMembers(roomCtx?.store)
+ const memberEvents = useFilteredMembers(roomCtx?.store, filter)
if (!roomCtx) {
return null
}
const mainScreen = use(MainScreenContext)
const members = []
- for (const evt of memberEvents) {
+ for (const member of memberEvents) {
members.push()
if (members.length >= limit) {
@@ -66,10 +68,13 @@ const MemberList = () => {
}
}
return <>
- {members}
- {memberEvents.length > limit ? : null}
+
+
+ {members}
+ {memberEvents.length > limit ? : null}
+
>
}
diff --git a/web/src/ui/rightpanel/RightPanel.css b/web/src/ui/rightpanel/RightPanel.css
index cd9e7de..2dd0cbe 100644
--- a/web/src/ui/rightpanel/RightPanel.css
+++ b/web/src/ui/rightpanel/RightPanel.css
@@ -193,34 +193,48 @@ div.right-panel-content.user {
}
div.right-panel-content.members {
- display: flex;
- flex-direction: column;
+ overflow: hidden;
- > div.member {
- display: flex;
- align-items: center;
- gap: .5rem;
- cursor: var(--clickable-cursor);
-
- content-visibility: auto;
- contain-intrinsic-height: 3rem;
- height: 3rem;
- padding: .25rem;
-
- > span.displayname {
- overflow: hidden;
- text-wrap: nowrap;
- text-overflow: ellipsis;
- user-select: none;
- }
-
- &:hover, &:focus {
- background-color: var(--light-hover-color);
- }
+ > input.member-filter {
+ border: none;
+ outline: none;
+ padding: 1rem;
+ border-bottom: 1px solid var(--border-color);
+ width: 100%;
+ box-sizing: border-box;
}
- > button {
- border-radius: 0;
- padding: .5rem;
+ > div.member-list {
+ display: flex;
+ flex-direction: column;
+ overflow: auto;
+
+ > div.member {
+ display: flex;
+ align-items: center;
+ gap: .5rem;
+ cursor: var(--clickable-cursor);
+
+ content-visibility: auto;
+ contain-intrinsic-height: 3rem;
+ height: 3rem;
+ padding: .25rem;
+
+ > span.displayname {
+ overflow: hidden;
+ text-wrap: nowrap;
+ text-overflow: ellipsis;
+ user-select: none;
+ }
+
+ &:hover, &:focus {
+ background-color: var(--light-hover-color);
+ }
+ }
+
+ > button {
+ border-radius: 0;
+ padding: .5rem;
+ }
}
}