Extract record_cover/1 component
This commit is contained in:
@@ -2,7 +2,7 @@ defmodule MusicLibraryWeb.FormComponent do
|
|||||||
use MusicLibraryWeb, :live_component
|
use MusicLibraryWeb, :live_component
|
||||||
|
|
||||||
import MusicLibraryWeb.RecordComponents,
|
import MusicLibraryWeb.RecordComponents,
|
||||||
only: [format_label: 1, type_label: 1, release_label: 1, release_summary: 1]
|
only: [format_label: 1, type_label: 1, release_label: 1, release_summary: 1, record_cover: 1]
|
||||||
|
|
||||||
alias MusicLibrary.Records
|
alias MusicLibrary.Records
|
||||||
alias MusicLibrary.Records.{Cover, Record}
|
alias MusicLibrary.Records.{Cover, Record}
|
||||||
@@ -96,11 +96,9 @@ defmodule MusicLibraryWeb.FormComponent do
|
|||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<img
|
<.record_cover
|
||||||
:if={@uploads.cover_data.entries == []}
|
:if={@uploads.cover_data.entries == []}
|
||||||
class="rounded-lg mx-auto w-full"
|
record={@record}
|
||||||
alt={@record.title}
|
|
||||||
src={~p"/covers/#{@record.id}?vsn=#{@record.cover_hash}"}
|
|
||||||
/>
|
/>
|
||||||
<.live_img_preview
|
<.live_img_preview
|
||||||
:for={entry <- @uploads.cover_data.entries}
|
:for={entry <- @uploads.cover_data.entries}
|
||||||
|
|||||||
@@ -5,6 +5,19 @@ defmodule MusicLibraryWeb.RecordComponents do
|
|||||||
alias MusicLibrary.Records
|
alias MusicLibrary.Records
|
||||||
alias Phoenix.LiveView.JS
|
alias Phoenix.LiveView.JS
|
||||||
|
|
||||||
|
attr :record, :map, required: true
|
||||||
|
attr :class, :string, required: false, default: "rounded-lg"
|
||||||
|
|
||||||
|
def record_cover(assigns) do
|
||||||
|
~H"""
|
||||||
|
<img
|
||||||
|
class={@class}
|
||||||
|
alt={@record.title}
|
||||||
|
src={~p"/covers/#{@record.id}?vsn=#{@record.cover_hash}"}
|
||||||
|
/>
|
||||||
|
"""
|
||||||
|
end
|
||||||
|
|
||||||
attr :artists, :list, required: true
|
attr :artists, :list, required: true
|
||||||
attr :joinphrase_class, :string, default: nil
|
attr :joinphrase_class, :string, default: nil
|
||||||
|
|
||||||
@@ -45,11 +58,7 @@ defmodule MusicLibraryWeb.RecordComponents do
|
|||||||
>
|
>
|
||||||
<div class="flex min-w-0 gap-x-4 items-center">
|
<div class="flex min-w-0 gap-x-4 items-center">
|
||||||
<div class="relative w-20 flex-none">
|
<div class="relative w-20 flex-none">
|
||||||
<img
|
<.record_cover record={record} />
|
||||||
class="rounded-lg"
|
|
||||||
alt={record.title}
|
|
||||||
src={~p"/covers/#{record.id}?vsn=#{record.cover_hash}"}
|
|
||||||
/>
|
|
||||||
<span
|
<span
|
||||||
:if={Records.Record.included_release_groups_count(record) > 0}
|
:if={Records.Record.included_release_groups_count(record) > 0}
|
||||||
class={[
|
class={[
|
||||||
@@ -218,9 +227,8 @@ defmodule MusicLibraryWeb.RecordComponents do
|
|||||||
<li :for={{id, record} <- @records} id={id} class="relative">
|
<li :for={{id, record} <- @records} id={id} class="relative">
|
||||||
<div class="group overflow-hidden rounded-lg bg-zinc-100 focus-within:ring-2 focus-within:ring-zinc-500 focus-within:ring-offset-2 focus-within:ring-offset-zinc-100">
|
<div class="group overflow-hidden rounded-lg bg-zinc-100 focus-within:ring-2 focus-within:ring-zinc-500 focus-within:ring-offset-2 focus-within:ring-offset-zinc-100">
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<img
|
<.record_cover
|
||||||
alt={record.title}
|
record={record}
|
||||||
src={~p"/covers/#{record.id}?vsn=#{record.cover_hash}"}
|
|
||||||
class="pointer-events-none aspect-square object-cover group-hover:opacity-75"
|
class="pointer-events-none aspect-square object-cover group-hover:opacity-75"
|
||||||
/>
|
/>
|
||||||
<span
|
<span
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ defmodule MusicLibraryWeb.SearchComponents do
|
|||||||
|
|
||||||
use MusicLibraryWeb, :html
|
use MusicLibraryWeb, :html
|
||||||
|
|
||||||
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1]
|
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1, record_cover: 1]
|
||||||
|
|
||||||
alias MusicLibrary.Records.Record
|
alias MusicLibrary.Records.Record
|
||||||
|
|
||||||
@@ -31,10 +31,9 @@ defmodule MusicLibraryWeb.SearchComponents do
|
|||||||
>
|
>
|
||||||
<div class="flex items-center space-x-3">
|
<div class="flex items-center space-x-3">
|
||||||
<div class="flex-shrink-0">
|
<div class="flex-shrink-0">
|
||||||
<img
|
<.record_cover
|
||||||
|
record={@record}
|
||||||
class="w-12 h-12 rounded-md aspect-square object-cover"
|
class="w-12 h-12 rounded-md aspect-square object-cover"
|
||||||
alt={@record.title}
|
|
||||||
src={~p"/covers/#{@record.id}?vsn=#{@record.cover_hash}"}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="min-w-0 flex-1">
|
<div class="min-w-0 flex-1">
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
defmodule MusicLibraryWeb.StatsComponents do
|
defmodule MusicLibraryWeb.StatsComponents do
|
||||||
use MusicLibraryWeb, :live_component
|
use MusicLibraryWeb, :live_component
|
||||||
|
|
||||||
import MusicLibraryWeb.RecordComponents, only: [format_label: 1, type_label: 1, artist_links: 1]
|
import MusicLibraryWeb.RecordComponents,
|
||||||
|
only: [format_label: 1, type_label: 1, artist_links: 1, record_cover: 1]
|
||||||
|
|
||||||
alias MusicLibrary.Records
|
alias MusicLibrary.Records
|
||||||
|
|
||||||
@@ -19,10 +20,9 @@ defmodule MusicLibraryWeb.StatsComponents do
|
|||||||
phx-click={JS.navigate(~p"/collection/#{@record}")}
|
phx-click={JS.navigate(~p"/collection/#{@record}")}
|
||||||
>
|
>
|
||||||
<dt>
|
<dt>
|
||||||
<img
|
<.record_cover
|
||||||
|
record={@record}
|
||||||
class="absolute w-20 rounded-md shadow-sm"
|
class="absolute w-20 rounded-md shadow-sm"
|
||||||
src={~p"/covers/#{@record.id}?vsn=#{@record.cover_hash}"}
|
|
||||||
alt={@record.title}
|
|
||||||
/>
|
/>
|
||||||
<p class="ml-24 truncate text-xs sm:text-sm font-medium text-zinc-500 dark:text-zinc-400">
|
<p class="ml-24 truncate text-xs sm:text-sm font-medium text-zinc-500 dark:text-zinc-400">
|
||||||
{@title}
|
{@title}
|
||||||
@@ -131,11 +131,7 @@ defmodule MusicLibraryWeb.StatsComponents do
|
|||||||
>
|
>
|
||||||
<div class="flex min-w-0 gap-x-4 items-center">
|
<div class="flex min-w-0 gap-x-4 items-center">
|
||||||
<div class="relative w-12 flex-none">
|
<div class="relative w-12 flex-none">
|
||||||
<img
|
<.record_cover record={record} />
|
||||||
class="rounded-lg"
|
|
||||||
alt={record.title}
|
|
||||||
src={~p"/covers/#{record.id}?vsn=#{record.cover_hash}"}
|
|
||||||
/>
|
|
||||||
<span
|
<span
|
||||||
:if={Records.Record.included_release_groups_count(record) > 0}
|
:if={Records.Record.included_release_groups_count(record) > 0}
|
||||||
class={[
|
class={[
|
||||||
|
|||||||
@@ -9,7 +9,8 @@ defmodule MusicLibraryWeb.CollectionLive.Show do
|
|||||||
type_label: 1,
|
type_label: 1,
|
||||||
release_summary: 1,
|
release_summary: 1,
|
||||||
artist_links: 1,
|
artist_links: 1,
|
||||||
record_colors: 1
|
record_colors: 1,
|
||||||
|
record_cover: 1
|
||||||
]
|
]
|
||||||
|
|
||||||
alias MusicLibrary.{Records, ScrobbleActivity}
|
alias MusicLibrary.{Records, ScrobbleActivity}
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
<div class="md:flex mt-4 px-4 md:gap-x-4">
|
<div class="md:flex mt-4 px-4 md:gap-x-4">
|
||||||
<div class="drop-shadow-sm md:max-w-[38rem]">
|
<div class="drop-shadow-sm md:max-w-[38rem]">
|
||||||
<img
|
<.record_cover
|
||||||
|
record={@record}
|
||||||
class="w-full rounded-lg drop-shadow-sm"
|
class="w-full rounded-lg drop-shadow-sm"
|
||||||
src={~p"/covers/#{@record.id}?vsn=#{@record.cover_hash}"}
|
|
||||||
alt={@record.title}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ defmodule MusicLibraryWeb.WishlistLive.Show do
|
|||||||
type_label: 1,
|
type_label: 1,
|
||||||
release_summary: 1,
|
release_summary: 1,
|
||||||
artist_links: 1,
|
artist_links: 1,
|
||||||
record_colors: 1
|
record_colors: 1,
|
||||||
|
record_cover: 1
|
||||||
]
|
]
|
||||||
|
|
||||||
alias MusicLibrary.OnlineStoreTemplates
|
alias MusicLibrary.OnlineStoreTemplates
|
||||||
|
|||||||
@@ -1,9 +1,8 @@
|
|||||||
<div class="md:flex mt-4 px-4 md:gap-x-4">
|
<div class="md:flex mt-4 px-4 md:gap-x-4">
|
||||||
<div class="drop-shadow-sm md:max-w-[38rem]">
|
<div class="drop-shadow-sm md:max-w-[38rem]">
|
||||||
<img
|
<.record_cover
|
||||||
|
record={@record}
|
||||||
class="w-full rounded-lg drop-shadow-sm"
|
class="w-full rounded-lg drop-shadow-sm"
|
||||||
src={~p"/covers/#{@record.id}?vsn=#{@record.cover_hash}"}
|
|
||||||
alt={@record.title}
|
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user