defmodule MoonWeb.Examples.Design.MenuItemExample.ExpandCollapse do
@moduledoc false
use Moon.StatefulComponent
use MoonWeb, :example
alias Moon.Design.MenuItem
alias Moon.Components.Lego
alias Moon.Icons.{ControlsChevronDown, ControlsChevronUp}
data(expanded0, :boolean, default: false)
data(expanded1, :boolean, default: true)
data(expanded2, :boolean, default: false)
def render(assigns) do
~F"""
{#if @expanded0}
{/if}
{#if @expanded1}
{/if}
{#if @expanded2}
{/if}
"""
end
def handle_event("on_expand" <> number, params, socket) do
{:noreply, assign(socket, :"expanded#{number}", Map.get(params, "is-selected") == "true")}
end
def code() do
"""
alias Moon.Design.MenuItem
alias Moon.Components.Lego
alias Moon.Icons.{ControlsChevronDown, ControlsChevronUp}
data(expanded0, :boolean, default: false)
data(expanded1, :boolean, default: true)
data(expanded2, :boolean, default: false)
def render(assigns) do
~F\"""
{#if @expanded0}
{/if}
{#if @expanded1}
{/if}
{#if @expanded2}
{/if}
\"""
end
def handle_event("on_expand0" <> number, params, socket) do
{:noreply, assign(socket, :"expanded0", Map.has_key?(params, "is_selected"))}
end
def handle_event("on_expand1" <> number, params, socket) do
{:noreply, assign(socket, :"expanded1", Map.has_key?(params, "is_selected"))}
end
def handle_event("on_expand2" <> number, params, socket) do
{:noreply, assign(socket, :"expanded2", Map.has_key?(params, "is_selected"))}
end
"""
end
end