# `MishkaGervaz.Table.Entities.Column`
[🔗](https://github.com/mishka-group/mishka_gervaz/blob/v0.0.1-alpha.3/lib/mishka_gervaz/table/entities/column.ex#L1)

Entity struct for table column configuration.

This module defines the struct and schema for columns, following Ash's
entity pattern with `opt_schema` and `transform/1`.

See `MishkaGervaz.Table.Dsl.Columns`,
`MishkaGervaz.Table.Entities.Column.Ui`,
`MishkaGervaz.Table.Entities.AutoColumns`,
`MishkaGervaz.Table.Types.Column` (type registry),
`MishkaGervaz.Table.Transformers.ResolveColumns`, and
`MishkaGervaz.Table.Web.State.ColumnBuilder`.

# `position`

```elixir
@type position() :: integer() | :first | :last | {:before, atom()} | {:after, atom()}
```

# `source`

```elixir
@type source() ::
  atom()
  | [atom()]
  | {atom(), atom()}
  | {atom(), [atom()]}
  | [{atom(), atom()} | atom()]
```

# `t`

```elixir
@type t() :: %MishkaGervaz.Table.Entities.Column{
  __identifier__: term(),
  __spark_metadata__: map() | nil,
  default: any(),
  export: boolean(),
  export_as: atom() | nil,
  filterable: boolean(),
  format: (any() -&gt; any()) | (map(), map(), any() -&gt; any()) | nil,
  label: String.t() | (-&gt; String.t()) | nil,
  name: atom(),
  position: position() | nil,
  render:
    (struct() -&gt; Phoenix.LiveView.Rendered.t())
    | (struct(), map() -&gt; Phoenix.LiveView.Rendered.t())
    | nil,
  requires: [atom()],
  searchable: boolean(),
  separator: String.t(),
  sort_field: [atom()],
  sortable: boolean(),
  source: source() | nil,
  static: boolean(),
  type_module: module() | nil,
  ui: MishkaGervaz.Table.Entities.Column.Ui.t() | nil,
  visible: boolean() | (map() -&gt; boolean())
}
```

# `transform`

Transform the column after DSL compilation.

Sets defaults and resolves the type_module based on ui.type.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
