31 lines
871 B
Plaintext
31 lines
871 B
Plaintext
@using SpotifyAPI.Web
|
|
|
|
<div class="track" @onclick="HandleClick">
|
|
<img src=@Img alt="Cover">
|
|
|
|
<div class="track-info">
|
|
<span class="track-name">@Name</span>
|
|
<span class="track-artists">@Artists</span>
|
|
</div>
|
|
|
|
<span class="track-duration">@Duration</span>
|
|
</div>
|
|
|
|
@code {
|
|
[Parameter]
|
|
public required FullTrack Track { get; set; }
|
|
|
|
[Parameter]
|
|
public EventCallback<FullTrack> OnClick { get; set; }
|
|
|
|
public string Img => Track.Album.Images.First().Url;
|
|
public string Name => Track.Name;
|
|
public string Artists => string.Join(", ", Track.Artists.Select(a => a.Name));
|
|
public string Duration => TimeSpan.FromMilliseconds(Track.DurationMs).ToString(@"mm\:ss");
|
|
|
|
private async Task HandleClick() {
|
|
if (OnClick.HasDelegate) {
|
|
await OnClick.InvokeAsync(Track);
|
|
}
|
|
}
|
|
} |