Packages
moon
2.79.8
2.90.5
retired
2.90.4
2.90.3
2.90.2
2.90.1
2.90.0
2.89.4
2.89.1
2.89.0
2.88.0
2.87.11
2.87.10
2.87.9
2.87.8
2.87.7
2.87.6
2.87.5
2.87.4
2.87.3
2.87.2
2.87.1
2.87.0
2.86.1
2.86.0
2.85.1
2.85.0
2.84.0
2.83.0
2.82.0
2.81.4
2.81.3
2.81.2
2.81.1
2.81.0
2.80.2
2.80.1
2.80.0
2.79.13
2.79.12
2.79.11
2.79.10
2.79.9
2.79.8
2.79.7
2.79.6
2.79.5
2.79.4
2.79.3
2.79.2
2.79.1
2.79.0
2.78.4
2.78.3
2.78.2
2.78.1
2.78.0
2.77.0
2.76.5
2.76.4
2.76.3
2.76.2
2.76.1
2.76.0
2.75.0
2.74.1
2.74.0
2.73.8
2.73.7
2.73.6
2.73.5
2.73.4
2.73.3
2.73.2
2.73.1
2.73.0
2.72.5
2.72.4
2.72.3
2.72.2
2.72.1
2.72.0
2.71.1
2.71.0
2.70.0
2.69.2
2.69.1
2.69.0
2.68.11
2.68.10
Components-based design system written in elixir
Current section
Files
Jump to
Current section
Files
lib/moon_web/examples/parts/modal_example/wizard.ex
defmodule MoonWeb.Examples.Parts.ModalExample.Wizard do
@moduledoc false
use Moon.StatefulComponent
use MoonWeb, :example
alias Moon.Parts.{Wizard, Modal, Button}
alias Moon.Design.Tabs
import MoonWeb.Helpers.Lorem
data(selected, :integer, default: 0)
data(steps, :list,
default: [
%{
title: "General",
text:
"In order to make you available and match you with the right opportunities we need some additional information."
},
%{
title: "Configuration",
text:
"In order to make you available and match you with the right opportunities we need some additional information."
},
%{
title: "Permissions",
text:
"In order to make you available and match you with the right opportunities we need some additional information."
}
]
)
def render(assigns) do
~F"""
<div>
<Button on_click="set_open">Open modal wizard (xl is default)</Button>
<Modal id="modal_wizard" on_close="set_close" class="p-1 bg-bulma">
<Wizard id="tabs-wizzard" {=@steps}>
<:description>
<div class="py-8 flex flex-col gap-4 w-full">
<h3 class="text-moon-24 text-bulma font-grotesk">Create new flow</h3>
<p class="text-moon-14 text-trunks hidden lg:inline">
In order to make you available and match you with the right opportunities we need some additional information first.
</p>
</div>
</:description>
<Wizard.Panels>
<Tabs.Panel>{lorem()}</Tabs.Panel>
<Tabs.Panel>{ipsum()}</Tabs.Panel>
<Tabs.Panel>{dolor()}</Tabs.Panel>
</Wizard.Panels>
<Wizard.Buttons on_save="set_close" on_cancel="set_close" />
</Wizard>
</Modal>
</div>
"""
end
def handle_event("set_open", _, socket) do
Modal.open("modal_wizard")
{:noreply, socket}
end
def handle_event("set_close", _, socket) do
Modal.close("modal_wizard")
{:noreply, socket}
end
def code() do
"""
alias Moon.Parts.{Wizard, Modal}
alias Moon.Design.{Tabs, Button}
import MoonWeb.Helpers.Lorem
data(selected, :integer, default: 0)
data(done, :boolean, default: false)
data(steps, :list,
default: [
%{
title: "General",
text:
"In order to make you available and match you with the right opportunities we need some additional information."
},
%{
title: "Configuration",
text:
"In order to make you available and match you with the right opportunities we need some additional information."
},
%{
title: "Permissions",
text:
"In order to make you available and match you with the right opportunities we need some additional information."
}
]
)
def render(assigns) do
~F\"""
<div>
<Button on_click="set_open">Open modal</Button>
<Modal id="modal_wizard" on_close="set_close" class="p-1 bg-bulma">
<Wizard id="tabs-wizzard" {=@steps}>
<:description>
<div class="py-8 flex flex-col gap-4 w-full">
<h3 class="text-moon-24 text-bulma font-grotesk">Create new flow</h3>
<p class="text-moon-14 text-bulma hidden lg:inline">
In order to make you available and match you with the right opportunities we need some additional information first.
</p>
</div>
</:description>
<Wizard.Panels>
<Tabs.Panel>{lorem()}</Tabs.Panel>
<Tabs.Panel>{ipsum()}</Tabs.Panel>
<Tabs.Panel>{dolor()}</Tabs.Panel>
</Wizard.Panels>
<Wizard.Buttons on_save="set_close" on_cancel="set_close" />
</Wizard>
</Modal>
</div>
\"""
end
def handle_event("set_open", _, socket) do
Moon.Parts.Modal.open("modal_wizard")
{:noreply, socket}
end
def handle_event("set_close", _, socket) do
Moon.Parts.Modal.close("modal_wizard")
{:noreply, socket}
end
"""
end
end