# `FrappeUIPhx.Components.Action`
[🔗](https://github.com/moacirbishopcamata/frappe_ui_phx/blob/v0.3.1/lib/frappe_ui_phx/components/action.ex#L1)

Único lugar onde se decide "link ou botão" para um item de ação (navegação, abas,
menus). `NavItem`, `MenuItem` e `Tabs` renderizam por aqui.

O `item` é o mapa de um slot e usa sempre o mesmo vocabulário:

  * destino: `patch`, `navigate` ou `href` → vira `<.link>`;
  * evento: `click` → `<button phx-click>`, aceitando um nome de evento do servidor
    **ou** um comando `%Phoenix.LiveView.JS{}`;
  * (outros campos, como `label`, `icon` e `theme`, são de quem desenha o item).

Com `popover_id`, o botão fecha esse popover ao ser acionado.

# `action`

## Attributes

* `item` (`:map`) (required) - patch | navigate | href | click.
* `class` (`:any`) - Defaults to `nil`.
* `popover_id` (`:string`) - fecha este popover ao acionar (só botões). Defaults to `nil`.
* Global attributes are accepted. role, aria-*, title, data-*.
## Slots

* `inner_block` (required)

# `link?`

```elixir
@spec link?(map()) :: boolean()
```

O item navega (tem `patch`, `navigate` ou `href`)?

# `link_attrs`

```elixir
@spec link_attrs(map()) :: map()
```

Atributos de destino do item (`patch`/`navigate`/`href`); vazio se for um botão.

---

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