defmodule MoonWeb.Examples.Design.TabsExample.Wizard do
@moduledoc false
use Moon.StatefulComponent
use MoonWeb, :example
alias Moon.Design.Tabs
alias Moon.Design.Button
alias Moon.Parts.Wizard
import MoonWeb.Helpers.Lorem
data(completed, :integer, default: 0)
data(selected, :integer, default: 0)
def render(assigns) do
~F"""
First StepSecond StepThird Step{lorem()}{ipsum()}{dolor()}All steps completed!
"""
end
def handle_event("next_page", %{"selected" => selected, "completed" => completed}, socket) do
tab_count = 3
selected =
if String.to_integer(selected) >= tab_count,
do: String.to_integer(selected),
else: String.to_integer(selected) + 1
completed =
if String.to_integer(completed) >= tab_count,
do: String.to_integer(completed),
else: String.to_integer(completed) + 1
{:noreply, assign(socket, completed: completed, selected: selected)}
end
def handle_event("prev_page", %{"selected" => selected}, socket) do
selected = String.to_integer(selected) - 1
{:noreply, assign(socket, selected: selected)}
end
def code() do
"""
alias Moon.Design.Tabs
alias Moon.Design.Button
alias Moon.Parts.Wizard
import MoonWeb.Helpers.Lorem
data(completed, :integer, default: 0)
data(selected, :integer, default: 0)
def render(assigns) do
~F\"""
First StepSecond StepThird Step{lorem()}{ipsum()}{dolor()}All steps completed!
\"""
end
def handle_event("next_page", %{"selected" => selected, "completed" => completed}, socket) do
tab_count = 3
selected =
if String.to_integer(selected) >= tab_count,
do: String.to_integer(selected),
else: String.to_integer(selected) + 1
completed =
if String.to_integer(completed) >= tab_count,
do: String.to_integer(completed),
else: String.to_integer(completed) + 1
{:noreply, assign(socket, completed: completed, selected: selected)}
end
def handle_event("prev_page", %{"selected" => selected}, socket) do
selected = String.to_integer(selected) - 1
{:noreply, assign(socket, selected: selected)}
end
"""
end
end