defmodule MemexWeb.LiveHelpers do @moduledoc """ Contains common helper functions for liveviews """ use Phoenix.Component alias Phoenix.LiveView.JS attr :return_to, :string, required: true slot(:inner_block) @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.<%= schema.singular %>_index_path(Endpoint, :index)}> <.live_component module={<%= inspect context.web_module %>.<%= inspect Module.concat(schema.web_namespace, schema.alias) %>Live.FormComponent} id={@<%= schema.singular %>.id || :new} title={@page_title} action={@live_action} return_to={Routes.<%= schema.singular %>_index_path(Endpoint, :index)} <%= schema.singular %>: @<%= schema.singular %> /> """ def modal(assigns) do ~H""" <.link id="modal-bg" patch={@return_to} class="fade-in fixed z-10 left-0 top-0 w-full h-full overflow-hidden p-8 flex flex-col justify-center items-center cursor-auto" style="background-color: rgba(0,0,0,0.4);" phx-remove={hide_modal()} >