diff --git a/lib/live_beats_web/live/live_helpers.ex b/lib/live_beats_web/live/live_helpers.ex index d06a4f9..5574458 100644 --- a/lib/live_beats_web/live/live_helpers.ex +++ b/lib/live_beats_web/live/live_helpers.ex @@ -82,7 +82,27 @@ defmodule LiveBeatsWeb.LiveHelpers do ) end - def show_modal(js \\ %JS{}, id) do + def show_modal(%JS{} = js, id, opts) when is_binary(id) and is_list(opts) do + on_confirm = Keyword.get(opts, :on_confirm, %JS{}) |> hide_modal(id) + title = Keyword.get(opts, :title, "") + content = Keyword.get(opts, :content, "") + + js + |> JS.inner_text(title, to: "##{id}-title") + |> JS.inner_text(content, to: "##{id}-content") + |> JS.set_attribute("phx-click", to: "##{id}-confirm", value: on_confirm) + |> show_modal(id) + end + + def show_modal(id) when is_binary(id) do + show_modal(%JS{}, id, []) + end + + def show_modal(id, opts) when is_binary(id) and is_list(opts) do + show_modal(%JS{}, id, opts) + end + + def show_modal(%JS{} = js, id) when is_binary(id) do js |> JS.show( to: "##{id}", @@ -90,7 +110,7 @@ defmodule LiveBeatsWeb.LiveHelpers do transition: {"ease-out duration-300", "opacity-0", "opacity-100"} ) |> JS.show( - to: "##{id}-content", + to: "##{id}-container", display: "inline-block", transition: {"ease-out duration-300", "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95", @@ -106,7 +126,7 @@ defmodule LiveBeatsWeb.LiveHelpers do transition: {"ease-in duration-200", "opacity-100", "opacity-0"} ) |> JS.hide( - to: "##{id}-content", + to: "##{id}-container", transition: {"ease-in duration-200", "opacity-100 translate-y-0 sm:scale-100", "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"} @@ -133,7 +153,7 @@ defmodule LiveBeatsWeb.LiveHelpers do
-

<%= render_slot(@title) %>

-

+

<%= render_slot(@inner_block) %>

@@ -162,6 +182,7 @@ defmodule LiveBeatsWeb.LiveHelpers do
<%= for confirm <- @confirm do %>