Mob.Alert (mob v0.6.2)

Copy Markdown View Source

Native alert dialogs, action sheets, and toast messages.

All functions return the socket unchanged so they can be pipelined.

Alert

Centered modal dialog for confirmations and errors. Maps to UIAlertController(.alert) on iOS and AlertDialog on Android.

def handle_event("delete", _params, socket) do
  Mob.Alert.alert(socket,
    title: "Delete item?",
    message: "This cannot be undone.",
    buttons: [
      [label: "Delete", style: :destructive, action: :confirmed_delete],
      [label: "Cancel", style: :cancel]
    ]
  )
end

def handle_info({:alert, :confirmed_delete}, socket) do
  {:noreply, do_delete(socket)}
end

Action sheet

Bottom-anchored list for choosing between actions. Maps to UIAlertController(.actionSheet) on iOS and a list dialog on Android.

Mob.Alert.action_sheet(socket,
  title: "Share photo",
  buttons: [
    [label: "Save to Photos", action: :save],
    [label: "Copy link",      action: :copy],
    [label: "Cancel",         style: :cancel]
  ]
)

Toast

Ephemeral status message. No button, no callback.

Mob.Alert.toast(socket, "Saved!", duration: :short)

iOS renders a floating label overlay (no native equivalent). Android uses Toast.

Button options

KeyValuesDefault
:labelstring""
:style:default, :cancel, :destructive:default
:actionatom delivered as {:alert, atom}:dismiss

Cancel-style buttons send {:alert, :dismiss} when tapped unless you specify a different :action.

Summary

Functions

Show a bottom-anchored action sheet.

Show a centered alert dialog.

Show a brief ephemeral toast message. No callback.

Functions

action_sheet(socket, opts)

@spec action_sheet(
  Mob.Socket.t(),
  keyword()
) :: Mob.Socket.t()

Show a bottom-anchored action sheet.

Result arrives as {:alert, action_atom} in handle_info/2.

alert(socket, opts)

@spec alert(
  Mob.Socket.t(),
  keyword()
) :: Mob.Socket.t()

Show a centered alert dialog.

Result arrives as {:alert, action_atom} in handle_info/2. Dismissing the dialog without tapping a button (e.g. Android back gesture) sends {:alert, :dismiss}.

toast(socket, message, opts \\ [])

@spec toast(Mob.Socket.t(), String.t(), keyword()) :: Mob.Socket.t()

Show a brief ephemeral toast message. No callback.

Options:

  • :duration:short (default, ~2 s) or :long (~4 s)