frontend: improved recording lists component styles
This commit is contained in:
parent
06e350d8fb
commit
0bedd4452a
@ -120,72 +120,6 @@
|
||||
</div>
|
||||
</mat-toolbar>
|
||||
|
||||
<!-- Mobile Sticky Toolbar (always visible in mobile) -->
|
||||
<!-- @if (isMobileView()) {
|
||||
<div class="mobile-sticky-toolbar">
|
||||
<div class="mobile-toolbar-content">
|
||||
<-- Always visible: Refresh button --
|
||||
<div class="toolbar-section primary-actions">
|
||||
<button
|
||||
mat-icon-button
|
||||
class="refresh-btn"
|
||||
(click)="refreshRecordings()"
|
||||
[disabled]="loading"
|
||||
matTooltip="Refresh recordings"
|
||||
>
|
||||
<mat-icon>refresh</mat-icon>
|
||||
</button>
|
||||
|
||||
@if (hasActiveFilters()) {
|
||||
<button
|
||||
mat-icon-button
|
||||
class="clear-btn"
|
||||
(click)="clearFilters()"
|
||||
[disabled]="loading"
|
||||
matTooltip="Clear all filters"
|
||||
>
|
||||
<mat-icon>filter_alt_off</mat-icon>
|
||||
</button>
|
||||
}
|
||||
</div>
|
||||
|
||||
-- Bulk actions: visible when items selected --
|
||||
@if (showSelection && selectedRecordings().size > 0) {
|
||||
<div class="toolbar-section bulk-actions">
|
||||
<div class="selection-indicator">
|
||||
<span class="selection-count">{{ selectedRecordings().size }} selected</span>
|
||||
</div>
|
||||
|
||||
<div class="action-buttons">
|
||||
@if (canDeleteRecordings) {
|
||||
<button
|
||||
mat-icon-button
|
||||
color="warn"
|
||||
(click)="bulkDeleteSelected()"
|
||||
[disabled]="loading"
|
||||
matTooltip="Delete selected recordings"
|
||||
class="bulk-delete-btn"
|
||||
>
|
||||
<mat-icon>delete</mat-icon>
|
||||
</button>
|
||||
}
|
||||
|
||||
<button
|
||||
mat-icon-button
|
||||
(click)="bulkDownloadSelected()"
|
||||
[disabled]="loading"
|
||||
matTooltip="Download selected recordings"
|
||||
class="bulk-download-btn"
|
||||
>
|
||||
<mat-icon>download</mat-icon>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
} -->
|
||||
|
||||
<!-- Loading Spinner -->
|
||||
@if (loading) {
|
||||
<div class="loading-container">
|
||||
@ -252,29 +186,35 @@
|
||||
<div class="detail-content">
|
||||
<div class="detail-label">Start Date</div>
|
||||
@if (recording.startDate) {
|
||||
<div class="detail-value">
|
||||
{{ recording.startDate | date: 'mediumDate' }}
|
||||
<div class="detail-row">
|
||||
<span class="detail-value">
|
||||
{{ recording.startDate | date: 'mediumDate' }}
|
||||
</span>
|
||||
<span class="detail-time">
|
||||
{{ recording.startDate | date: 'shortTime' }}
|
||||
</span>
|
||||
</div>
|
||||
<div class="detail-time">{{ recording.startDate | date: 'shortTime' }}</div>
|
||||
} @else {
|
||||
<div class="detail-value no-data">-</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="detail-item">
|
||||
<mat-icon class="detail-icon">timer</mat-icon>
|
||||
<div class="detail-content">
|
||||
<div class="detail-label">Duration</div>
|
||||
<div class="detail-value">{{ formatDuration(recording.duration) }}</div>
|
||||
<div class="additional-details">
|
||||
<div class="detail-item">
|
||||
<mat-icon class="detail-icon">timer</mat-icon>
|
||||
<div class="detail-content">
|
||||
<div class="detail-label">Duration</div>
|
||||
<div class="detail-value">{{ formatDuration(recording.duration) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="detail-item">
|
||||
<mat-icon class="detail-icon">storage</mat-icon>
|
||||
<div class="detail-content">
|
||||
<div class="detail-label">Size</div>
|
||||
<div class="detail-value">{{ formatFileSize(recording.size) }}</div>
|
||||
<div class="detail-item">
|
||||
<mat-icon class="detail-icon">storage</mat-icon>
|
||||
<div class="detail-content">
|
||||
<div class="detail-label">Size</div>
|
||||
<div class="detail-value">{{ formatFileSize(recording.size) }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -20,6 +20,7 @@
|
||||
flex-direction: column;
|
||||
gap: var(--ov-meet-spacing-md);
|
||||
position: relative;
|
||||
padding: var(--ov-meet-spacing-md) var(--ov-meet-spacing-lg);
|
||||
|
||||
&.selected-card {
|
||||
background-color: color-mix(in srgb, var(--ov-meet-color-primary) 8%, var(--ov-meet-card-background));
|
||||
@ -39,7 +40,7 @@
|
||||
.card-header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: flex-start;
|
||||
align-items: center;
|
||||
gap: var(--ov-meet-spacing-md);
|
||||
|
||||
.card-header-left {
|
||||
@ -69,6 +70,13 @@
|
||||
@include ov-mobile-down {
|
||||
gap: var(--ov-meet-spacing-sm);
|
||||
}
|
||||
|
||||
.additional-details {
|
||||
margin-top: 5px;
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 1fr; /* dos columnas iguales */
|
||||
gap: 1rem; /* espacio entre columnas y filas */
|
||||
}
|
||||
}
|
||||
|
||||
.detail-item {
|
||||
@ -84,21 +92,24 @@
|
||||
}
|
||||
|
||||
.detail-content {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
flex-direction: column;
|
||||
gap: 0.25rem;
|
||||
|
||||
.detail-label {
|
||||
font-size: var(--ov-meet-font-size-xs);
|
||||
font-size: var(--ov-meet-font-size-sm);
|
||||
font-weight: var(--ov-meet-font-weight-medium);
|
||||
color: var(--ov-meet-text-secondary);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.5px;
|
||||
margin-bottom: 2px;
|
||||
color: var(--ov-meet-text-primary);
|
||||
}
|
||||
|
||||
.detail-row {
|
||||
display: flex;
|
||||
gap: 0.5rem;
|
||||
align-items: baseline;
|
||||
}
|
||||
|
||||
.detail-value {
|
||||
font-size: var(--ov-meet-font-size-sm);
|
||||
font-weight: var(--ov-meet-font-weight-medium);
|
||||
font-weight: var(--ov-meet-font-weight-light);
|
||||
color: var(--ov-meet-text-primary);
|
||||
line-height: var(--ov-meet-line-height-tight);
|
||||
|
||||
@ -168,6 +179,7 @@
|
||||
// === TOOLBAR AND SHARED UTILITIES ===
|
||||
.recordings-toolbar {
|
||||
@extend .ov-data-toolbar;
|
||||
margin-bottom: 0;
|
||||
|
||||
// Responsive toolbar adjustments
|
||||
@include ov-tablet-down {
|
||||
@ -183,6 +195,15 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
.toolbar-right {
|
||||
order: 1;
|
||||
width: 100%;
|
||||
justify-content: flex-end;
|
||||
|
||||
.refresh-btn {
|
||||
padding: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@include ov-mobile-down {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user