frontend: update meeting component to improve closed room state
This commit is contained in:
parent
c10aadfbd5
commit
e2d61483f1
@ -208,7 +208,6 @@
|
|||||||
<mat-icon class="ov-room-icon room-icon">video_chat</mat-icon>
|
<mat-icon class="ov-room-icon room-icon">video_chat</mat-icon>
|
||||||
<div class="room-info">
|
<div class="room-info">
|
||||||
<h1 class="room-title">{{ roomName }}</h1>
|
<h1 class="room-title">{{ roomName }}</h1>
|
||||||
<p class="room-subtitle">Choose how you want to proceed</p>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@ -222,43 +221,53 @@
|
|||||||
<mat-card-title>{{ roomClosed ? 'Room Closed' : 'Join Meeting' }}</mat-card-title>
|
<mat-card-title>{{ roomClosed ? 'Room Closed' : 'Join Meeting' }}</mat-card-title>
|
||||||
<mat-card-subtitle>{{
|
<mat-card-subtitle>{{
|
||||||
roomClosed
|
roomClosed
|
||||||
? 'This room is currently closed and not accepting new participants'
|
? 'This room is not available for meetings'
|
||||||
: 'Enter the room and start connecting'
|
: 'Enter the room and start connecting'
|
||||||
}}</mat-card-subtitle>
|
}}</mat-card-subtitle>
|
||||||
</div>
|
</div>
|
||||||
</mat-card-header>
|
</mat-card-header>
|
||||||
|
|
||||||
<mat-card-content class="card-content">
|
<mat-card-content class="card-content">
|
||||||
<form [formGroup]="participantForm" (ngSubmit)="submitAccessMeeting()" class="join-form">
|
@if (!roomClosed) {
|
||||||
<mat-form-field appearance="outline" class="name-field">
|
<form [formGroup]="participantForm" (ngSubmit)="submitAccessMeeting()" class="join-form">
|
||||||
<mat-label>Your display name</mat-label>
|
<mat-form-field appearance="outline" class="name-field">
|
||||||
<input
|
<mat-label>Your display name</mat-label>
|
||||||
id="participant-name-input"
|
<input
|
||||||
matInput
|
id="participant-name-input"
|
||||||
placeholder="Enter your name"
|
matInput
|
||||||
formControlName="name"
|
placeholder="Enter your name"
|
||||||
required
|
formControlName="name"
|
||||||
/>
|
required
|
||||||
<mat-icon matSuffix class="ov-action-icon">person</mat-icon>
|
/>
|
||||||
@if (participantForm.get('name')?.hasError('minlength')) {
|
<mat-icon matSuffix class="ov-action-icon">person</mat-icon>
|
||||||
<mat-error> The name must be at least <strong>4 characters</strong> </mat-error>
|
@if (participantForm.get('name')?.hasError('minlength')) {
|
||||||
}
|
<mat-error> The name must be at least <strong>4 characters</strong> </mat-error>
|
||||||
@if (participantForm.get('name')?.hasError('required')) {
|
}
|
||||||
<mat-error> The name is <strong>required</strong> </mat-error>
|
@if (participantForm.get('name')?.hasError('required')) {
|
||||||
}
|
<mat-error> The name is <strong>required</strong> </mat-error>
|
||||||
</mat-form-field>
|
}
|
||||||
|
</mat-form-field>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
mat-raised-button
|
mat-raised-button
|
||||||
color="primary"
|
color="primary"
|
||||||
id="participant-name-submit"
|
id="participant-name-submit"
|
||||||
type="submit"
|
type="submit"
|
||||||
class="join-button"
|
class="join-button"
|
||||||
[disabled]="participantForm.invalid || roomClosed"
|
[disabled]="participantForm.invalid"
|
||||||
>
|
>
|
||||||
<span>Join Meeting</span>
|
<span>Join Meeting</span>
|
||||||
</button>
|
</button>
|
||||||
</form>
|
</form>
|
||||||
|
} @else {
|
||||||
|
<div class="room-closed-message">
|
||||||
|
<mat-icon class="warning-icon">warning</mat-icon>
|
||||||
|
<p>
|
||||||
|
Sorry, this room is closed. You cannot join at this time. Please contact the meeting
|
||||||
|
organizer for more information.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
</mat-card-content>
|
</mat-card-content>
|
||||||
</mat-card>
|
</mat-card>
|
||||||
|
|
||||||
@ -296,7 +305,7 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Room URL Badge -->
|
<!-- Room URL Badge -->
|
||||||
@if (features().canModerateRoom) {
|
@if (!roomClosed && features().canModerateRoom) {
|
||||||
<ov-share-meeting-link
|
<ov-share-meeting-link
|
||||||
[meetingUrl]="hostname + '/room/' + roomId"
|
[meetingUrl]="hostname + '/room/' + roomId"
|
||||||
(copyClicked)="copySpeakerLink()"
|
(copyClicked)="copySpeakerLink()"
|
||||||
|
|||||||
@ -31,13 +31,6 @@
|
|||||||
color: var(--ov-meet-text-primary);
|
color: var(--ov-meet-text-primary);
|
||||||
line-height: var(--ov-meet-line-height-tight);
|
line-height: var(--ov-meet-line-height-tight);
|
||||||
}
|
}
|
||||||
|
|
||||||
.room-subtitle {
|
|
||||||
margin: var(--ov-meet-spacing-xs) 0 0 0;
|
|
||||||
font-size: var(--ov-meet-font-size-lg);
|
|
||||||
color: var(--ov-meet-text-secondary);
|
|
||||||
line-height: var(--ov-meet-line-height-normal);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,11 +138,34 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.room-closed-message {
|
||||||
|
@include ov-flex-center;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: var(--ov-meet-spacing-md);
|
||||||
|
text-align: center;
|
||||||
|
|
||||||
|
.warning-icon {
|
||||||
|
@include ov-icon(xl);
|
||||||
|
color: var(--ov-meet-color-warning);
|
||||||
|
}
|
||||||
|
|
||||||
|
p {
|
||||||
|
margin: 0;
|
||||||
|
font-size: var(--ov-meet-font-size-md);
|
||||||
|
color: var(--ov-meet-text-secondary);
|
||||||
|
line-height: var(--ov-meet-line-height-relaxed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Secondary Card - Recordings styling
|
// Secondary Card - Recordings styling
|
||||||
.secondary-card {
|
.secondary-card {
|
||||||
.card-header {
|
.card-header {
|
||||||
background: linear-gradient(135deg, var(--ov-meet-surface-color) 0%, var(--ov-meet-color-accent) 180%);
|
background: linear-gradient(135deg, var(--ov-meet-surface-color) 0%, var(--ov-meet-color-accent) 180%);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-content {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Join Form - Form styling
|
// Join Form - Form styling
|
||||||
|
|||||||
@ -223,11 +223,6 @@ export class MeetingComponent implements OnInit {
|
|||||||
if (participantName) {
|
if (participantName) {
|
||||||
this.participantForm.get('name')?.setValue(participantName);
|
this.participantForm.get('name')?.setValue(participantName);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Disable the form if the room is closed
|
|
||||||
if (this.roomClosed) {
|
|
||||||
this.participantForm.disable();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
async goToRecordings() {
|
async goToRecordings() {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user