Current section

Files

Jump to
moon lib moon_web pages components input_group_page.ex
Raw

lib/moon_web/pages/components/input_group_page.ex

defmodule MoonWeb.Pages.Components.InputGroupPage do
@moduledoc false
use MoonWeb, :live_view
alias MoonWeb.Components.ExampleAndCode
alias MoonWeb.Components.Page
alias Moon.Autolayouts.LeftToRight
alias Moon.Components.InputGroup
alias Moon.Components.TextInput
alias MoonWeb.Components.ComponentPageDescription
alias MoonWeb.Pages.Tutorials.AddDataUsingForm.User
alias Moon.Components.Form
alias MoonWeb.Components.PropsTable
alias Moon.Autolayouts.TopToDown
alias Moon.Components.Button
alias MoonWeb.Components.Facing.DeprecationWarning
data(breadcrumbs, :any,
default: [
%{
to: "#",
name: "Components v1"
},
%{
to: "/components/input-group",
name: "Input Group"
}
]
)
data(props_info_array, :list,
default: [
%{
:name => ~c"orientation",
:type => ~c"vertical | horizontal",
:required => ~c"No",
:default => ~c"horizontal",
:description => ~c""
},
%{
:name => ~c"slot",
:type => ~c"slot",
:required => ~c"Yes",
:default => ~c"-",
:description => ~c"Default slot"
}
]
)
def mount(_params, _session, socket) do
user = %User{}
user_changeset = User.changeset(user, %{})
{:ok,
assign(socket,
user: user,
user_changeset: user_changeset
)}
end
def handle_params(_params, uri, socket) do
{:noreply, assign(socket, uri: uri)}
end
def handle_event("register_form_update", params, socket) do
user_changeset = User.changeset(socket.assigns.user, params["user"])
{:noreply, assign(socket, user_changeset: user_changeset)}
end
def handle_event("register_form_submit", params, socket) do
user_changeset =
User.changeset(socket.assigns.user, params["user"]) |> Map.merge(%{action: :insert})
{:noreply, assign(socket, user_changeset: user_changeset)}
end
def input_group_1000_state(assigns) do
~F"""
{inspect(@user_changeset.changes, pretty: true)}
"""
end
def render(assigns) do
~F"""
<Page {=@theme_name} {=@active_page} {=@breadcrumbs} {=@direction}>
<TopToDown>
<ComponentPageDescription title="Input Group">
<DeprecationWarning
name="Group"
href={live_path(MoonWeb.Endpoint, MoonWeb.Pages.Design.Form.GroupPage,
theme_name: @theme_name,
direction: @direction
)}
/>
</ComponentPageDescription>
<ExampleAndCode id="group_1" title="Default">
<:example>
<LeftToRight class="items-center justify-around w-full items-end">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup included_fields={[:country, :phone]}>
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical" included_fields={[:country, :phone]}>
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
</LeftToRight>
</:example>
<:code>{input_group_1_code()}</:code>
<:state>{input_group_1000_state(assigns)}</:state>
</ExampleAndCode>
<ExampleAndCode id="group_10" title="RTL">
<:example>
<LeftToRight class="items-center justify-around w-full items-end" dir="rtl">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup included_fields={[:country, :phone]}>
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical" included_fields={[:country, :phone]}>
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
</LeftToRight>
</:example>
<:code>{input_group_10_code()}</:code>
<:state>{input_group_1000_state(assigns)}</:state>
</ExampleAndCode>
<ExampleAndCode id="group_100" title="Text type variants">
<:example>
<LeftToRight class="items-center justify-around w-full items-end">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup included_fields={[:email, :password]}>
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password1" />
</InputGroup>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical" included_fields={[:email, :password]}>
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password2" />
</InputGroup>
</Form>
</LeftToRight>
</:example>
<:code>{input_group_100_code()}</:code>
<:state>{input_group_1000_state(assigns)}</:state>
</ExampleAndCode>
<ExampleAndCode id="group_130" title="Form submission example">
<:example>
<LeftToRight class="items-center justify-around w-full items-end">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup included_fields={[:email, :password]}>
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password3_1" />
</InputGroup>
<div class="pt-4">
<Button type="submit" right_icon="arrows_right" variant="primary">Register</Button>
</div>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical" included_fields={[:email, :password]}>
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password3_2" />
</InputGroup>
<div class="pt-4">
<Button type="submit" right_icon="arrows_right" variant="primary">Register</Button>
</div>
</Form>
</LeftToRight>
</:example>
<:code>{input_group_120_code()}</:code>
<:state>{input_group_1000_state(assigns)}</:state>
</ExampleAndCode>
<PropsTable title="TextInpoutGroup props" data={@props_info_array} />
</TopToDown>
</Page>
"""
end
defp input_group_1_code() do
"""
<LeftToRight class="items-center justify-around w-full items-end">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup>
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical">
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
</LeftToRight>
"""
end
defp input_group_10_code() do
"""
<LeftToRight class="items-center justify-around w-full items-end" dir="rtl">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup>
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical">
<TextInput field={:country} size="xl" placeholder="Country" />
<TextInput field={:phone} size="xl" placeholder="Phone" />
</InputGroup>
</Form>
</LeftToRight>
"""
end
defp input_group_100_code() do
"""
<LeftToRight class="items-center justify-around w-full items-end">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup>
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password1" />
</InputGroup>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical">
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password2" />
</InputGroup>
</Form>
</LeftToRight>
"""
end
defp input_group_120_code() do
"""
<LeftToRight class="items-center justify-around w-full items-end">
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup included_fields={[:email, :password]}>
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password3_1" />
</InputGroup>
<div class="pt-4">
<Button type="submit" right_icon="arrows_right" variant="primary">Register</Button>
</div>
</Form>
<Form for={@user_changeset} change="register_form_update" submit="register_form_submit">
<InputGroup orientation="vertical" included_fields={[:email, :password]}>
<TextInput field={:email} size="xl" placeholder="Email" type="email" />
<TextInput field={:password} size="xl" placeholder="Password" type="password" id="password3_2" />
</InputGroup>
<div class="pt-4">
<Button type="submit" right_icon="arrows_right" variant="primary">Register</Button>
</div>
</Form>
</LeftToRight>
"""
end
end