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

Entity struct for table filter configuration.

See `MishkaGervaz.Table.Dsl.Filters`,
`MishkaGervaz.Table.Entities.Filter.Ui`,
`MishkaGervaz.Table.Entities.Filter.Preload`,
`MishkaGervaz.Table.Entities.FilterGroup`,
`MishkaGervaz.Table.Types.Filter` (type registry), and
`MishkaGervaz.Table.Web.State.FilterBuilder`.

# `filter_type`

```elixir
@type filter_type() ::
  :text | :select | :boolean | :number | :date | :date_range | :relation
```

# `relation_mode`

```elixir
@type relation_mode() :: :static | :search | :search_multi
```

# `t`

```elixir
@type t() :: %MishkaGervaz.Table.Entities.Filter{
  __identifier__: term(),
  __spark_metadata__: map() | nil,
  apply: (Ash.Query.t(), any(), map() -&gt; Ash.Query.t()) | nil,
  default: any() | nil,
  depends_on: atom() | nil,
  display_field:
    atom() | (struct() -&gt; String.t()) | (struct(), map() -&gt; String.t()) | nil,
  fields: [atom()] | nil,
  include_nil: boolean() | String.t(),
  load: (Ash.Query.t(), map() -&gt; list()) | nil,
  load_action: atom(),
  max: integer() | nil,
  min: integer() | nil,
  min_chars: integer(),
  mode: relation_mode(),
  name: atom(),
  options: list() | (-&gt; list()) | nil,
  page_size: pos_integer(),
  preload: MishkaGervaz.Table.Entities.Filter.Preload.t() | nil,
  presets: list() | nil,
  resource: module() | nil,
  restricted: boolean() | (map() -&gt; boolean()),
  search_field: atom() | nil,
  source: atom() | nil,
  type: filter_type(),
  type_module: module() | nil,
  ui: MishkaGervaz.Table.Entities.Filter.Ui.t() | nil,
  virtual: boolean(),
  visible: boolean() | (map() -&gt; boolean())
}
```

# `transform`

Transform the filter after DSL compilation.

---

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