MishkaGervaz.Table.Entities.Column (MishkaGervaz v0.0.1-alpha.3)

Copy Markdown View Source

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.

Summary

Functions

Transform the column after DSL compilation.

Types

position()

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

source()

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

t()

@type t() :: %MishkaGervaz.Table.Entities.Column{
  __identifier__: term(),
  __spark_metadata__: map() | nil,
  default: any(),
  export: boolean(),
  export_as: atom() | nil,
  filterable: boolean(),
  format: (any() -> any()) | (map(), map(), any() -> any()) | nil,
  label: String.t() | (-> String.t()) | nil,
  name: atom(),
  position: position() | nil,
  render:
    (struct() -> Phoenix.LiveView.Rendered.t())
    | (struct(), map() -> 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() -> boolean())
}

Functions

transform(column)

Transform the column after DSL compilation.

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