56 lines
2.4 KiB
Plaintext
56 lines
2.4 KiB
Plaintext
@using PlaylistShared.Shared.DTO
|
||
@using PlaylistShared.Pwa.Components.Common
|
||
@using PlaylistShared.Pwa.Extensions
|
||
@using PlaylistShared.Shared.Yandex
|
||
|
||
<MudStack Row AlignItems="AlignItems.Center" Class="@(IsCurrentTrack ? "current-track" : "")">
|
||
<!-- Обложка с фиксированной шириной -->
|
||
<MudItem>
|
||
<TrackCoverWithPlay TrackId="@Track.TrackId"
|
||
Track="@Track"
|
||
PlaylistShareToken="@PlaylistShareToken"
|
||
CanPlay="@CanPlay"
|
||
Width="40" Height="40" />
|
||
</MudItem>
|
||
|
||
<!-- Информация о треке (занимает всё доступное место) -->
|
||
<MudItem>
|
||
<MudStack Spacing="0">
|
||
<MudText Typo="Typo.body1" Color="Color.Secondary">@Track.Title</MudText>
|
||
<MudStack Row AlignItems="AlignItems.Center" Spacing="1">
|
||
<MudText Typo="Typo.body2">@string.Join(", ", Track.Artists.Select(a => a.Name))</MudText>
|
||
@if (!string.IsNullOrEmpty(AddedByName))
|
||
{
|
||
<MudChip T="string" Size="Size.Small" Variant="Variant.Outlined" Color="Color.Secondary" Class="pa-0 px-1" Style="height: 18px; font-size: 10px;">@AddedByName</MudChip>
|
||
}
|
||
</MudStack>
|
||
</MudStack>
|
||
</MudItem>
|
||
|
||
<MudSpacer />
|
||
|
||
<!-- Длительность (фиксированная ширина по содержимому) -->
|
||
<MudItem>
|
||
@if (IsCurrentTrack)
|
||
{
|
||
<MudIcon Icon="@Icons.Material.Filled.GraphicEq" Color="Color.Primary" Size="Size.Small" Class="mr-1 eq-animate" Style="vertical-align: middle;" />
|
||
}
|
||
<MudText Typo="Typo.body2" Inline Color="@(IsCurrentTrack ? Color.Primary : Color.Default)">@Track.DurationMs.FormatDuration()</MudText>
|
||
</MudItem>
|
||
</MudStack>
|
||
|
||
<style>
|
||
.current-track {
|
||
background: color-mix(in srgb, var(--mud-palette-primary) 10%, transparent);
|
||
border-radius: 6px;
|
||
box-shadow: inset 2px 0 0 var(--mud-palette-primary);
|
||
}
|
||
</style>
|
||
|
||
@code {
|
||
[Parameter] public YandexTrack Track { get; set; } = null!;
|
||
[Parameter] public string PlaylistShareToken { get; set; } = string.Empty;
|
||
[Parameter] public bool CanPlay { get; set; } = true;
|
||
[Parameter] public string? AddedByName { get; set; }
|
||
[Parameter] public bool IsCurrentTrack { get; set; }
|
||
} |