Packages
moon
2.84.0
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/design/search_example/default.ex
defmodule MoonWeb.Examples.Design.SearchExample.Default do
@moduledoc false
use MoonWeb, :stateful_component
use MoonWeb, :example
alias Moon.Design.Search
import Moon.Helpers.Form, only: [filter_options: 2]
prop(options, :list, default: MoonWeb.Schema.Link.titles())
prop(filter, :string, default: "")
def handle_event("change_filter", %{"value" => filter}, socket) do
{:noreply, assign(socket, filter: filter)}
end
def render(assigns) do
~F"""
<div>
<Search
id="default-search"
{=@filter}
on_keyup="change_filter"
options={@options |> page_to_href() |> filter_options(@filter)}
/>
</div>
"""
end
defp page_to_href(options) do
options |> Enum.map(&Keyword.put(&1, :page, live_path(MoonWeb.Endpoint, &1[:page])))
end
def code() do
"""
alias Moon.Design.Search
import Moon.Helpers.Form, only: [filter_options: 2]
prop(options, :list, default: MoonWeb.Schema.Link.titles())
prop(filter, :string, default: "")
def handle_event("change_filter", %{"value" => filter}, socket) do
{:noreply, assign(socket, filter: filter)}
end
def render(assigns) do
~F\"""
<Search
id="default-search"
{=@filter}
on_keyup="change_filter"
options={@options |> page_to_href() |> filter_options(@filter)}
/>
\"""
end
defp page_to_href(options) do
options |> Enum.map(&Keyword.put(&1, :page, live_path(MoonWeb.Endpoint, &1[:page])))
end
"""
end
end