From 5b9fa3149c5abc8463edb6f2ece3e327b1c569e3 Mon Sep 17 00:00:00 2001 From: CSantosM <4a.santos@gmail.com> Date: Mon, 2 Mar 2026 18:18:24 +0100 Subject: [PATCH] frontend: add room members list component with filtering and selection features - Implemented RoomMembersListComponent for displaying room members in a Material Design table. - Added SCSS styles for the room members list and its associated elements. - Created AddRoomMemberComponent for adding new members to a room with role and permission configuration. - Integrated user search functionality with autocomplete in the AddRoomMemberComponent. - Updated RoomDetailComponent to utilize the new RoomMembersListComponent for displaying members. - Defined routing for adding room members. - Enhanced overall user experience with loading states and error handling. --- .../domains/console/routes/console.routes.ts | 2 + .../domains/room-members/components/index.ts | 1 + .../room-members-list.component.html | 302 ++++++++++++++++++ .../room-members-list.component.scss | 209 ++++++++++++ .../room-members-list.component.ts | 286 +++++++++++++++++ .../src/lib/domains/room-members/index.ts | 2 + .../add-room-member.component.html | 172 ++++++++++ .../add-room-member.component.scss | 263 +++++++++++++++ .../add-room-member.component.ts | 189 +++++++++++ .../routes/room-members.routes.ts | 19 ++ .../room-detail/room-detail.component.html | 77 +---- 11 files changed, 1457 insertions(+), 65 deletions(-) create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/index.ts create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/room-members-list/room-members-list.component.html create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/room-members-list/room-members-list.component.scss create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/room-members-list/room-members-list.component.ts create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/pages/add-room-member/add-room-member.component.html create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/pages/add-room-member/add-room-member.component.scss create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/pages/add-room-member/add-room-member.component.ts create mode 100644 meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/routes/room-members.routes.ts diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts index 328e5462..39d869d5 100644 --- a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/console/routes/console.routes.ts @@ -2,6 +2,7 @@ import { Route } from '@angular/router'; import { DomainRouteConfig } from '../../../shared/models/domain-routes.model'; import { checkUserAuthenticatedGuard } from '../../auth/guards/auth.guard'; import { recordingsConsoleRoutes } from '../../recordings/routes/recordings.routes'; +import { roomMembersConsoleRoutes } from '../../room-members/routes/room-members.routes'; import { roomsConsoleRoutes } from '../../rooms/routes/rooms.routes'; import { usersConsoleRoutes } from '../../users/routes/users.routes'; import { clearRoomSessionGuard } from '../guards/clear-room-session.guard'; @@ -24,6 +25,7 @@ export const consoleChildRoutes: DomainRouteConfig[] = [ } }, ...roomsConsoleRoutes, + ...roomMembersConsoleRoutes, ...recordingsConsoleRoutes, ...usersConsoleRoutes, { diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/index.ts b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/index.ts new file mode 100644 index 00000000..1f970ac7 --- /dev/null +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/index.ts @@ -0,0 +1 @@ +export * from './room-members-list/room-members-list.component'; diff --git a/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/room-members-list/room-members-list.component.html b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/room-members-list/room-members-list.component.html new file mode 100644 index 00000000..5a5a853c --- /dev/null +++ b/meet-ce/frontend/projects/shared-meet-components/src/lib/domains/room-members/components/room-members-list/room-members-list.component.html @@ -0,0 +1,302 @@ +@if (!loading() && members().length === 0 && !showEmptyFilterMessage) { + +
This room doesn't have any members assigned.
+Try adjusting or clearing your filters to see more members.
+|
+ |
+
+ |
+ + Member + | +
+
+
+
+ {{ getMemberInitials(member) }}
+
+
+ {{ member.name }}
+ {{ member.memberId }}
+
+ |
+ Role | ++ + {{ member.baseRole }} + + | +Type | +
+
+
+ |
+ + Added + | +
+ @if (member.membershipDate) {
+
+ {{ member.membershipDate | date: 'mediumDate' }}
+ {{ member.membershipDate | date: 'shortTime' }}
+
+ } @else {
+ -
+ }
+ |
+ + Actions + | ++ + | +
|---|
Assign a registered user to this room and configure their role and permissions.
+Loading members...
-This room doesn't have any members assigned.
-{{ member.name }}
-{{ member.memberId }}
-