defmodule MoonWeb.Examples.Design.Form.ComboboxExample.Default do @moduledoc false use Moon.StatefulComponent use MoonWeb, :example alias Moon.Design.Form alias MoonWeb.Schema.User prop(titles, :list, default: [ "Wade Cooper", "Arlene Mccoy", "Devon Webb", "Tom Cook", "Tanya Fox", "Hellen Schmidt" ] |> Enum.map(&%{key: &1, value: String.downcase(&1)}) ) prop(changeset, :any, default: User.changeset(%User{name: nil})) prop(filter, :string, default: "") prop(is_open, :boolean, default: false) def handle_event("change_filter", %{"value" => filter}, socket) do {:noreply, socket |> assign(filter: filter) |> assign(is_open: true)} end def handle_event("focus", _params, socket) do {:noreply, assign(socket, is_open: true)} end def handle_event("blur", _params, socket) do {:noreply, assign(socket, is_open: false)} end def handle_event("changed", params, socket) do user = Map.get(params, "user", %{}) {:noreply, assign(socket, changeset: User.changeset(%User{}, user), filter: Map.get(user, "name", ""), is_open: false )} end def render(assigns) do ~F"""