An example of trigger client event/action from server.
defmodule Storybook.Examples.ServerEvent do
@moduledoc false
use Phoenix.LiveView
import SaladUI.Button
import SaladUI.Input
import SaladUI.Label
import SaladUI.Sheet
alias Phoenix.LiveView.JS
def doc do
"An example of trigger client event/action from server."
end
@impl true
def mount(_params, _session, socket) do
{:ok, socket}
end
@impl true
def render(assigns) do
~H"""
<.sheet>
<.sheet_trigger target="my-sheet">
<.button variant="outline">Open</.button>
</.sheet_trigger>
<.sheet_content id="my-sheet">
<.sheet_header>
<.sheet_title>Edit profile</.sheet_title>
<.sheet_description>
Make changes to your profile here. Click save when you're done.
</.sheet_description>
</.sheet_header>
<div class="grid gap-4 py-4">
<div class="grid grid-cols-4 items-center gap-4">
<.label for="name" class="text-right">
Name
</.label>
<.input id="name" value="Pedro Duarte" class="col-span-3" />
</div>
<div class="grid grid-cols-4 items-center gap-4">
<.label for="username" class="text-right">
Username
</.label>
<.input id="username" value="@peduarte" class="col-span-3" />
</div>
</div>
<.sheet_footer>
<.sheet_close target="my-sheet">
<.button
type="submit"
phx-click={JS.exec("phx-hide-sheet", to: "#my-sheet") |> JS.push("save")}
>
Save changes
</.button>
</.sheet_close>
<.button phx-click={JS.push("update")}>
Close from back-end
</.button>
</.sheet_footer>
</.sheet_content>
</.sheet>
"""
end
@impl true
def handle_event("update", _params, socket) do
{:noreply, push_event(socket, "js-exec", %{to: "#my-sheet", attr: "phx-hide-sheet"})}
end
end