feat: update broadcasting button logic and improve pre-join styles

ov-components_modernization
Carlos Santos 2025-12-11 18:31:20 +01:00
parent 53927b05a7
commit 68e9398b06
2 changed files with 350 additions and 357 deletions

View File

@ -71,22 +71,6 @@
[(ngModel)]="broadcastUrl"
id="broadcast-url-input"
/>
<button
mat-icon-button
@if (broadcastingStatus !== broadcastingStatusEnum.STARTED) {
id="broadcasting-btn"
[disabled]="
!broadcastUrl ||
broadcastingStatus === broadcastingStatusEnum.STARTING ||
broadcastingStatus === broadcastingStatusEnum.STOPPING
"
(click)="startBroadcasting()"
matTooltip="{{ 'PANEL.STREAMING.START' | translate }}"
}
>
<mat-icon>play_circle</mat-icon>
</button>
@if (broadcastingStatus === broadcastingStatusEnum.STARTED) {
<button
mat-icon-button
@ -96,6 +80,20 @@
>
<mat-icon>stop_circle</mat-icon>
</button>
} @else {
<button
mat-icon-button
id="broadcasting-btn"
[disabled]="
!broadcastUrl ||
broadcastingStatus === broadcastingStatusEnum.STARTING ||
broadcastingStatus === broadcastingStatusEnum.STOPPING
"
(click)="startBroadcasting()"
matTooltip="{{ 'PANEL.STREAMING.START' | translate }}"
>
<mat-icon>play_circle</mat-icon>
</button>
}
</div>

View File

@ -2,6 +2,7 @@
display: block;
width: 100%;
height: 100%;
}
.prejoin-container {
min-height: 100vh;
@ -278,15 +279,12 @@
}
}
}
}
// Mobile Layout Optimization
.prejoin-container.mobile {
all: unset;
&.mobile {
padding: 0;
display: content;
height: 100vh;
min-height: 100vh;
height: 100vh;
max-height: 100vh;
overflow: hidden;
@ -303,7 +301,6 @@
flex-direction: column;
.video-preview-section {
// Video takes all remaining space
flex: 1 1 auto;
min-height: 0;
overflow: hidden;
@ -321,7 +318,6 @@
gap: 16px;
background: var(--ov-surface-color, #ffffff);
// Ensure content is displayed in column
display: flex;
flex-direction: column;
@ -332,7 +328,6 @@
}
.vb-container {
// Virtual background panel - also adapts to content
flex: 0 0 auto;
max-height: 60vh;
overflow-y: auto;
@ -341,16 +336,6 @@
}
}
}
@keyframes slideInFromRight {
from {
opacity: 0;
transform: translateX(20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}
// Responsive Design for Desktop/Tablet
@ -408,10 +393,10 @@
@media (max-height: 640px) and (min-width: 640px) {
.prejoin-container:not(.mobile) {
align-items: flex-start;
padding-top: 60px; // Space for top toolbar
padding-top: 60px;
.video-preview-section .video-preview-container {
aspect-ratio: 16/9; // Wider aspect ratio for short screens
aspect-ratio: 16/9;
}
}
}
@ -446,4 +431,14 @@
transform: translateY(0);
}
}
@keyframes slideInFromRight {
from {
opacity: 0;
transform: translateX(20px);
}
to {
opacity: 1;
transform: translateX(0);
}
}