this.onAlbumClick(album)}
@keydown=${(e: KeyboardEvent) => this.onAlbumKeydown(e, album)}
@contextmenu=${(e: MouseEvent) => this.onAlbumContextMenu(e, album)}
>
${album.CoverArtPath
? html`

{
const img = e.target as HTMLImageElement;
if (img.src !== album.CoverArtPath) {
img.src = album.CoverArtPath;
}
}}
/>`
: html`
${this.getAlbumInitial(album.Name)}
`}
${album.Name}
${album.ArtistName}${album.Year ? ` - ${album.Year}` : ''}
`;
};
private getAlbumInitial(name: string): string {
return name.charAt(0).toUpperCase();
}
private onAlbumClick(album: library.Album) {
EventsEmit('AlbumSelected', album);
this.dispatchEvent(
new CustomEvent('album-selected', {
detail: album,
bubbles: true,
composed: true,
})
);
}
private onAlbumKeydown(e: KeyboardEvent, album: library.Album) {
if (e.key === 'Enter' || e.key === ' ') {
e.preventDefault();
this.onAlbumClick(album);
}
}
override render() {
if (this.loading) {
return html`Loading albums...
`;
}
if (this.albums.length === 0) {
return html`