Files
PlaylistShared/PlaylistShared.Pwa/Components/Common/TrackItem.razor

56 lines
2.4 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@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; }
}