From 0405de9b70b00931afa10d5f1bfa8b2496569c24 Mon Sep 17 00:00:00 2001 From: Claudio Ortolina Date: Tue, 4 Mar 2025 10:25:02 +0000 Subject: [PATCH] Improve cover upload widget Nicely formatted, integrated preview, proper drag and drop --- .../components/form_component.ex | 66 +++++++++++++++---- priv/gettext/default.pot | 26 +++++--- 2 files changed, 70 insertions(+), 22 deletions(-) diff --git a/lib/music_library_web/components/form_component.ex b/lib/music_library_web/components/form_component.ex index 90c48e39..6e4181ee 100644 --- a/lib/music_library_web/components/form_component.ex +++ b/lib/music_library_web/components/form_component.ex @@ -56,24 +56,62 @@ defmodule MusicLibraryWeb.FormComponent do type="datetime-local" label={gettext("Purchased at")} /> -
+
<.label for={@uploads.cover_data.ref}> {gettext("Cover art")} - <.error :for={{_index, msg} <- @uploads.cover_data.errors}>{msg} - - {gettext("No cover selected")} - - <%= for entry <- @uploads.cover_data.entries do %> - {entry.progress}% - <% end %> - <.live_file_input - class="mt-2 block w-full rounded-lg text-zinc-900 dark:text-zinc-200 focus:ring-0 text-xs sm:text-sm sm:leading-6" - upload={@uploads.cover_data} - /> +
+ + <.live_img_preview + :for={entry <- @uploads.cover_data.entries} + class="mx-auto size-24" + entry={entry} + /> +
+ <%= for entry <- @uploads.cover_data.entries do %> + {entry.progress}% + <% end %> +
+
+ +

{gettext("or drag and drop")}

+
+

+ {gettext("PNG, JPG, WEBP up to 8MB")} +

+
+
<:actions> <.button phx-disable-with={gettext("Saving...")}>{gettext("Save")} diff --git a/priv/gettext/default.pot b/priv/gettext/default.pot index 42309807..8650a071 100644 --- a/priv/gettext/default.pot +++ b/priv/gettext/default.pot @@ -141,11 +141,6 @@ msgstr "" msgid "Next" msgstr "" -#: lib/music_library_web/components/form_component.ex:68 -#, elixir-autogen, elixir-format -msgid "No cover selected" -msgstr "" - #: lib/music_library_web/components/import_component.ex:45 #, elixir-autogen, elixir-format msgid "No results" @@ -193,7 +188,7 @@ msgstr "" msgid "Record imported successfully" msgstr "" -#: lib/music_library_web/components/form_component.ex:128 +#: lib/music_library_web/components/form_component.ex:166 #, elixir-autogen, elixir-format msgid "Record updated successfully" msgstr "" @@ -203,12 +198,12 @@ msgstr "" msgid "Release" msgstr "" -#: lib/music_library_web/components/form_component.ex:79 +#: lib/music_library_web/components/form_component.ex:117 #, elixir-autogen, elixir-format msgid "Save" msgstr "" -#: lib/music_library_web/components/form_component.ex:79 +#: lib/music_library_web/components/form_component.ex:117 #, elixir-autogen, elixir-format msgid "Saving..." msgstr "" @@ -680,3 +675,18 @@ msgstr "" #, elixir-autogen, elixir-format msgid "Similar artists" msgstr "" + +#: lib/music_library_web/components/form_component.ex:111 +#, elixir-autogen, elixir-format +msgid "PNG, JPG, WEBP up to 8MB" +msgstr "" + +#: lib/music_library_web/components/form_component.ex:105 +#, elixir-autogen, elixir-format +msgid "Upload a file" +msgstr "" + +#: lib/music_library_web/components/form_component.ex:108 +#, elixir-autogen, elixir-format +msgid "or drag and drop" +msgstr ""