# `MishkaCmsCoreWeb.Live.Admin.Components.TranslationsRefusal`
[🔗](https://github.com/mishka-group/mishka_cms_core/blob/v0.0.1/lib/mishka_cms_core_web/live/admin/components/translations_refusal.ex#L5)

The alert an admin sees when archiving, or deleting for good, an original edition is refused
because its translations are still live — with a button that archives (or deletes for good) those
translations at once, after a confirmation naming them.

The admin layout (`MishkaCmsCore.Layouts`) renders it once, beside the flash messages, so every
admin page has it. A table reaches it through `MishkaCmsCore.LanguageEditions.on_delete_refused/3`,
which calls `show/2`. It shows the refusal's own message at once, then reads the originals and
their live translations as the signed-in admin, off the page's process
(`MishkaCmsCore.LanguageEditions.refusal/3`). The button is drawn only when that admin may act on
every one of those translations, and pressing it runs
`MishkaCmsCore.LanguageEditions.take_translations/2` as that admin. It then reads the originals
again: one with no live translation left can be deleted now, and one with a translation added in
the meantime is shown again with the button for it. When that read crashes, the alert says the
button is not coming.

DOM ids: `translations-refusal-alert` (the alert), `translations-refusal-message`,
`translations-refusal-act` (the button, its `data-confirm` naming the translations),
`translations-refusal-done`, `translations-refusal-failed` and `translations-refusal-dismiss`.

# `id`

```elixir
@spec id() :: String.t()
```

The DOM id, and the component id `show/2` updates.

# `show`

```elixir
@spec show(module(), [%{id: String.t(), message: String.t()}]) :: :ok
```

Shows the alert for `refused` — `MishkaCmsCore.LanguageEditions.refused_originals/1` of a failed
destroy on `resource`. Call it from the page's process.

---

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