# `Harlock.Element.Column`
[🔗](https://github.com/thatsme/harlock/blob/v0.2.0/lib/harlock/element/column.ex#L1)

Column spec for `Harlock.Elements.table/1`, built via
`Harlock.Elements.column/1`:

    column(title: "Name", width: {:fill, 1}, render: & &1.name)
    column(title: "ID",   width: {:length, 4}, align: :right, render: & &1.id)

Fields:

  * `:title`  — header label (shown when the table has `show_header: true`)
  * `:width`  — layout constraint: `{:length, n}` | `{:percentage, p}` |
    `{:fill, w}` | `{:min, n}` | `{:max, n}`
  * `:align`  — `:left` (default) | `:right` | `:center`
  * `:render` — `fn row -> String.t() | iodata()`. Defaults to
    `to_string/1` of the row itself, which is what makes
    `Harlock.Elements.list/2` ergonomic (no render fn needed for
    simple lists).

# `t`

```elixir
@type t() :: %Harlock.Element.Column{
  align: :left | :right | :center,
  render: (any() -&gt; String.t() | iodata()) | nil,
  title: String.t(),
  width: Harlock.Layout.constraint()
}
```

# `render_value`

```elixir
@spec render_value(t(), any()) :: String.t()
```

---

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