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 Step Second Step Third 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 Step Second Step Third 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