defmodule MoonWeb.Pages.Components.Select.MultiSelectPage do
@moduledoc false
use MoonWeb, :live_view
alias Moon.Components.Form
alias Moon.Components.Field
alias Moon.Components.FieldLabel
alias Moon.Components.Select.MultiSelect
alias MoonWeb.Components.ExampleAndCode
alias MoonWeb.Components.Page
alias MoonWeb.Pages.Tutorials.AddDataUsingForm.User
alias MoonWeb.Components.ComponentPageDescription
alias MoonWeb.Components.PropsTable
data(breadcrumbs, :any,
default: [
%{
to: "#",
name: "Components"
},
%{
to: "/components/select/multi-select",
name: "Multi Select"
}
]
)
data(props_info_array, :list,
default: [
%{
:name => ~c"field",
:type => ~c"atom ",
:required => ~c"Yes",
:default => ~c"-",
:description => ~c"Field for the underlying phoenix select component"
},
%{
:name => ~c"size",
:type => ~c"-",
:required => ~c"No",
:default => ~c"-",
:description => ~c"TODO - size variant"
},
%{
:name => ~c"options",
:type => ~c"list",
:required => ~c"Yes",
:default => ~c"-",
:description => ~c"Options for the select"
},
%{
:name => ~c"prompt",
:type => ~c"string",
:required => ~c"No",
:default => ~c"-",
:description => ~c"Placeholder text"
},
%{
:name => ~c"header",
:type => ~c"slot",
:required => ~c"No",
:default => ~c"-",
:description => ~c"TODO - header element on the options popup"
},
%{
:name => ~c"footer",
:type => ~c"slot",
:required => ~c"No",
:default => ~c"-",
:description => ~c"TODO - footer element on the options popup"
},
%{
:name => ~c"menu_width",
:type => ~c"number",
:required => ~c"No",
:default => ~c"-",
:description => ~c"TODO - Minimum width of the popup menu containing options"
},
%{
:name => ~c"left",
:type => ~c"slot",
:required => ~c"No",
:default => ~c"-",
:description => ~c"TODO - Left content for selected option"
},
%{
:name => ~c"hint",
:type => ~c"slot",
:required => ~c"No",
:default => ~c"-",
:description => ~c"TODO - Inform message under select, can be used for error message"
},
%{
:name => ~c"items",
:type => ~c"slot",
:required => ~c"Yes",
:default => ~c"-",
:description => ~c"Content template for displaying each of the options"
},
%{
:name => ~c"disabled",
:type => ~c"boolean",
:required => ~c"-",
:default => ~c"false",
:description => ~c"Whether the component is disabled"
},
%{
:name => ~c"value",
:type => ~c"any",
:required => ~c"No",
:default => ~c"-",
:description => ~c"Default selected value"
},
%{
:name => ~c"on_select",
:type => ~c"string",
:required => ~c"No",
:default => ~c"-",
:description => ~c"Name of the event handler function when an option is clicked"
},
%{
:name => ~c"is_error",
:type => ~c"boolean",
:required => ~c"No",
:default => ~c"-",
:description => ~c"TODO - If the component is in error mode"
}
]
)
data(latest_params, :any, default: nil)
def mount(_params, _session, socket) do
user_changeset = User.changeset(%User{}, %{permissions: [1, 2], role: 1})
{:ok,
assign(socket,
user_changeset: user_changeset,
options: User.available_permissions(),
searched_options: User.available_permissions(),
options_with_left_icon: User.available_permissions_with_left_icon(),
searched_options_with_left_icon: User.available_permissions_with_left_icon(),
search_string: ""
)}
end
def handle_params(_params, uri, socket) do
{:noreply, assign(socket, uri: uri)}
end
def render(assigns) do
~F"""
Multi Select
@latest_params = {inspect(@latest_params, pretty: true)}
@latest_params = {inspect(@latest_params, pretty: true)}
@latest_params = {inspect(@latest_params, pretty: true)}
@latest_params = {inspect(@latest_params, pretty: true)}
@latest_params = {inspect(@latest_params, pretty: true)}