diff --git a/lib/music_library_web/components/core_components.ex b/lib/music_library_web/components/core_components.ex index ad8930e5..f5762420 100644 --- a/lib/music_library_web/components/core_components.ex +++ b/lib/music_library_web/components/core_components.ex @@ -95,6 +95,26 @@ defmodule MusicLibraryWeb.CoreComponents do """ end + attr :id, :string, required: true + attr :on_close, :any, required: false, default: nil + attr :open, :boolean, required: false, default: true + + slot :inner_block, required: true + + def structured_modal(assigns) do + ~H""" + + {render_slot(@inner_block)} + + """ + end + ## JS Commands def show(js \\ %JS{}, selector) do diff --git a/lib/music_library_web/live/collection_live/index.html.heex b/lib/music_library_web/live/collection_live/index.html.heex index ef78e08d..6fa90805 100644 --- a/lib/music_library_web/live/collection_live/index.html.heex +++ b/lib/music_library_web/live/collection_live/index.html.heex @@ -60,12 +60,9 @@ record_edit_path={fn record -> ~p"/collection/#{record}/edit" end} /> -<.modal +<.structured_modal :if={@live_action == :edit} id="record-modal" - class="md:min-w-2xl max-w-sm md:max-w-3xl mt-8" - placement="top" - open on_close={JS.patch(back_path(@record_list_params))} > <.live_component @@ -76,7 +73,7 @@ record={@record} patch={back_path(@record_list_params)} /> - + <.modal :if={@live_action == :import}