defmodule MishkaChelekom.Components.Combobox do @moduledoc """ Stub module for MishkaChelekom Combobox component. Generate the real component in your host application using: mix mishka.ui.gen.component combobox These stubs render plain (but functional) HTML so forms still work end-to-end when the upstream component library is not installed. """ use Phoenix.Component attr(:field, Phoenix.HTML.FormField, default: nil) attr(:name, :string, default: nil) attr(:label, :string, default: nil) attr(:value, :any, default: nil) attr(:options, :list, default: []) attr(:required, :boolean, default: false) attr(:errors, :list, default: []) attr(:multiple, :boolean, default: false) attr(:color, :string, default: nil) attr(:variant, :string, default: nil) attr(:rest, :global) slot(:trigger) slot(:inner_block) def combobox(assigns) do name = cond do assigns.name -> assigns.name assigns.field && assigns.multiple -> assigns.field.name <> "[]" assigns.field -> assigns.field.name true -> nil end selected = cond do not is_nil(assigns.value) -> List.wrap(assigns.value) assigns.field -> List.wrap(assigns.field.value) true -> [] end selected_strs = Enum.map(selected, &to_string/1) assigns = assign(assigns, name: name, selected: selected, selected_strs: selected_strs) ~H"""

{msg}

{render_slot(@trigger, @selected)} {render_slot(@inner_block)}
""" end defp normalize_combobox_options(options) do Enum.map(options, fn {label, value} -> {label, value} value when is_atom(value) -> {Phoenix.Naming.humanize(value), value} value -> {to_string(value), value} end) end attr(:field, Phoenix.HTML.FormField, default: nil) attr(:placeholder, :string, default: nil) attr(:rest, :global) def combobox_input(assigns) do ~H""" """ end slot(:inner_block) slot(:create_action) def combobox_options(assigns) do ~H"""
{render_slot(@inner_block)} {render_slot(@create_action)}
""" end attr(:value, :any, default: nil) attr(:selected, :boolean, default: false) attr(:rest, :global) slot(:inner_block) def combobox_option(assigns) do ~H"""
{render_slot(@inner_block)}
""" end end defmodule MishkaChelekom.Components.TextField do @moduledoc """ Functional fallback for MishkaChelekom TextField. Renders a real `