defmodule MoonWeb.Examples.Design.ModalExample.ExampleWithSelect do
@moduledoc false
use Moon.StatefulComponent
use MoonWeb, :example
alias Moon.Icons.ControlsCloseSmall
alias Moon.Design.Modal
alias Moon.Design.Button
alias MoonWeb.Schema.User
alias Moon.Design.Form
alias Moon.Design.Form.Select
prop(size_options, :list,
default: [
[key: "Small", value: "small"],
[key: "Medium", value: "medium"],
[key: "Large", value: "large"]
]
)
prop(color_options, :list,
default: [
[key: "Red", value: "red"],
[key: "Blue", value: "blue"],
[key: "Green", value: "green"]
]
)
prop(material_options, :list,
default: [
[key: "Leather", value: "leather"],
[key: "Wool", value: "wool"],
[key: "Cotton", value: "cotton"],
[key: "Silk", value: "silk"]
]
)
prop(user_changeset, :any, default: User.changeset(%User{}))
def render(assigns) do
~F"""
Modal title
"""
end
def handle_event("set_open", _, socket) do
Modal.open("with_select_modal")
{:noreply, socket}
end
def handle_event("set_close", _, socket) do
Modal.close("with_select_modal")
{:noreply, socket}
end
def code() do
"""
alias Moon.Icons.ControlsCloseSmall
alias Moon.Design.Modal
alias Moon.Design.Button
alias MoonWeb.Schema.User
alias Moon.Design.Form
alias Moon.Design.Form.Select
prop(size_options, :list,
default: [
[key: "Small", value: "small"],
[key: "Medium", value: "medium"],
[key: "Large", value: "large"]
]
)
prop(color_options, :list,
default: [
[key: "Red", value: "red"],
[key: "Blue", value: "blue"],
[key: "Green", value: "green"]
]
)
prop(material_options, :list,
default: [
[key: "Leather", value: "leather"],
[key: "Wool", value: "wool"],
[key: "Cotton", value: "cotton"],
[key: "Silk", value: "silk"]
]
)
prop(user_changeset, :any, default: User.changeset(%User{}))
def render(assigns) do
~F\"""
Modal title
\"""
end
def handle_event("set_open", _, socket) do
Modal.open("with_select_modal")
{:noreply, socket}
end
def handle_event("set_close", _, socket) do
Modal.close("with_select_modal")
{:noreply, socket}
end
"""
end
end