defmodule Corex.Combobox.Anatomy do @moduledoc false alias Corex.Collection defmodule Props do @moduledoc false @enforce_keys [:id] defstruct [ :id, collection: [], controlled: false, placeholder: nil, open: false, value: [], always_submit_on_enter: false, auto_focus: false, close_on_select: false, dir: "ltr", input_behavior: "autohighlight", loop_focus: false, multiple: false, invalid: false, disabled: false, name: nil, form: nil, read_only: false, required: false, positioning: %Corex.Positioning{}, on_open_change: nil, on_open_change_client: nil, on_input_value_change: nil, on_value_change: nil, bubble: false ] @type t :: %__MODULE__{ id: String.t(), collection: list(Collection.Item.t() | map()), controlled: boolean(), placeholder: String.t() | nil, value: list(String.t()), always_submit_on_enter: boolean(), auto_focus: boolean(), close_on_select: boolean(), dir: String.t(), input_behavior: String.t(), loop_focus: boolean(), multiple: boolean(), invalid: boolean(), disabled: boolean(), name: String.t() | nil, form: String.t() | nil, read_only: boolean(), required: boolean(), positioning: Corex.Positioning.t(), on_open_change: (map() -> any()) | nil, on_open_change_client: (map() -> any()) | nil, on_input_value_change: (map() -> any()) | nil, on_value_change: (map() -> any()) | nil, open: boolean() | nil, bubble: boolean() } end defmodule Root do @moduledoc false defstruct [:id, changed: false, invalid: false, read_only: false] @type t :: %__MODULE__{ id: String.t(), changed: boolean(), invalid: boolean(), read_only: boolean() } end defmodule Label do @moduledoc false defstruct [ :id, changed: false, invalid: false, read_only: false, required: false, disabled: false, dir: "ltr" ] @type t :: %__MODULE__{ id: String.t(), changed: boolean(), invalid: boolean(), read_only: boolean(), required: boolean(), disabled: boolean(), dir: String.t() } end defmodule Control do @moduledoc false defstruct [:id, :dir, :disabled, :changed, :invalid, :open] @type t :: %__MODULE__{ id: String.t(), dir: String.t(), disabled: boolean(), changed: boolean(), invalid: boolean(), open: boolean() } end defmodule Input do @moduledoc false defstruct [ :id, :dir, :disabled, :changed, :invalid, :open, :required, :placeholder, :name, :auto_focus, :value, :form ] @type t :: %__MODULE__{ id: String.t(), dir: String.t(), disabled: boolean(), changed: boolean(), invalid: boolean(), open: boolean(), required: boolean(), placeholder: String.t() | nil, name: String.t() | nil, auto_focus: boolean(), value: list(String.t()), form: String.t() | nil } end defmodule Positioner do @moduledoc false defstruct [:id, :dir, :changed] @type t :: %__MODULE__{ id: String.t(), dir: String.t(), changed: boolean() } end defmodule Content do @moduledoc false defstruct [:id, :dir, :open, :changed] @type t :: %__MODULE__{ id: String.t(), dir: String.t(), open: boolean(), changed: boolean() } end end