From 4067339e8cf9dbd624a8fa0183d7a29c73b2e762 Mon Sep 17 00:00:00 2001 From: Logan Hunt Date: Wed, 6 Apr 2022 12:55:12 -0600 Subject: Models for upload and post; generated liveview controller for posts --- lib/aggiedit_web/live/live_helpers.ex | 60 +++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 lib/aggiedit_web/live/live_helpers.ex (limited to 'lib/aggiedit_web/live/live_helpers.ex') diff --git a/lib/aggiedit_web/live/live_helpers.ex b/lib/aggiedit_web/live/live_helpers.ex new file mode 100644 index 0000000..aa6b28a --- /dev/null +++ b/lib/aggiedit_web/live/live_helpers.ex @@ -0,0 +1,60 @@ +defmodule AggieditWeb.LiveHelpers do + import Phoenix.LiveView + import Phoenix.LiveView.Helpers + + alias Phoenix.LiveView.JS + + @doc """ + Renders a live component inside a modal. + + The rendered modal receives a `:return_to` option to properly update + the URL when the modal is closed. + + ## Examples + + <.modal return_to={Routes.post_index_path(@socket, :index)}> + <.live_component + module={AggieditWeb.PostLive.FormComponent} + id={@post.id || :new} + title={@page_title} + action={@live_action} + return_to={Routes.post_index_path(@socket, :index)} + post: @post + /> + + """ + def modal(assigns) do + assigns = assign_new(assigns, :return_to, fn -> nil end) + + ~H""" + + """ + end + + defp hide_modal(js \\ %JS{}) do + js + |> JS.hide(to: "#modal", transition: "fade-out") + |> JS.hide(to: "#modal-content", transition: "fade-out-scale") + end +end -- cgit v1.2.3-70-g09d2