defmodule MoonWeb.Examples.Design.AlertExample.HandleClose do
@moduledoc false
use Moon.StatefulComponent
use MoonWeb, :example
alias Moon.Design.Button
alias Moon.Design.Alert
prop(is_open, :boolean, default: true)
def render(assigns) do
~F"""
{#if @is_open == true}
Click the Close button to hide the Alert
{#else}
{/if}
"""
end
def handle_event("open_alert", _params, socket) do
socket = assign(socket, is_open: true)
{:noreply, socket}
end
def handle_event("close_alert", _params, socket) do
socket = assign(socket, is_open: false)
{:noreply, socket}
end
def code() do
"""
alias Moon.Design.Button
alias Moon.Design.Alert
prop(is_open, :boolean, default: true)
...
{#if @is_open == true}
Click the Close button to hide the Alert
{#else}
{/if}
...
def handle_event("open_alert", _params, socket) do
socket = assign(socket, is_open: true)
{:noreply, socket}
end
def handle_event("close_alert", _params, socket) do
socket = assign(socket, is_open: false)
{:noreply, socket}
end
"""
end
end