トーストToastExperimental

一時的に表示する短いメッセージです。

プレビュー

プロジェクトを保存しました。

状態とバリエーション

成功通知

保存や更新が完了したことを短く伝えます。

失敗通知

復旧できる失敗を短く示し、必要なら近くの操作で再試行させます。

情報通知

ユーザーの操作を止めない軽い更新に使います。

枠内で確認する

docs やカード内で確認する場合は inline を指定します。実アプリで単体 Toast を画面上に浮かせる場合は既定の fixed を使います。

処理が完了しました。

補足+操作つき

description で2行目を、action で操作ボタンを1つ足せます。action を押すと onClick 実行後にトーストが閉じます。action があり duration 未指定なら、押す前に消えないよう既定を長めにします。

プロパティ

表は横にスクロールできます
プロパティ初期値説明
messagestring-通知に表示する短い本文です。
type"error" | "info" | "success"'success'通知の意味を示す見た目です。
isVisibleboolean-表示状態です。false の時は描画しません。
onClose() => void-自動クローズまたは閉じるボタンで呼び出します。
descriptionReactNode-message の下に muted 色で表示する2行目の補足です。
action{ label: string; onClick: () => void; altText?: string }-閉じるボタンの手前に置く操作ボタンを1つ。押すと onClick を実行してからトーストを閉じます。
durationnumber3000(action ありは 6000)自動で閉じるまでの時間(ミリ秒)。action があり未指定なら、押す前に消えないよう既定を長くします。
placement'fixed' | 'inline''fixed'実アプリでは fixed、docs やカード内プレビューでは inline を使います。
closeLabelstring'Close notification'閉じるボタンのアクセシブルラベルとツールチップです。

使い方

import { Toast } from "@gunjo/ui"

export function SavedToast() {
  return (
    <Toast
      message="プロジェクトを保存しました。"
      type="success"
      isVisible={true}
      onClose={() => {}}
      placement="inline"
      closeLabel="通知を閉じる"
    />
  )
}

設計の判断

  • 操作の付いた通知だけ、長く出す。資料は「気づかない」「読む前に消える」を核の危険として挙げています。GUNJO は消えるまでの既定を3秒にし、action(元に戻す、などのボタン)が付いているときだけ6秒にしました(#301)。押させるつもりのものを、読む時間だけで消してはいけないからです。duration を渡せばどちらも上書きできます。
  • 失敗のときだけ、読み上げの割り込み方を変える。type が失敗のときは割り込む役割を、それ以外は割り込まない役割を付けます。ただし資料は「決済の失敗のような絶対に見逃せないエラーをトーストで出す」ことを崩れた形に挙げています。GUNJO に失敗の型があるのは、やり直しの効く失敗(保存できなかった、など)のためで、後戻りできない失敗は AlertAlertDialog の仕事です。
  • 積み上がる場所は Provider が持つ。ToastProvider が縦並びの箱を作り、間を空けて重ねます。placement に容器を指定すると、画面全体ではなく渡した枠の中に出ます。docs の埋め込みプレビューのように、ページ全体を覆っては困る場所のためです。消えるときは表示を止めてから300ms後に取り除くので、出ていく動きが最後まで見えます。

使用コンポーネント

いつ・なぜ使うか(UIXHERO)

「いつ・なぜ使うか」の判断は、姉妹サイト UIXHERO の記事で解説しています。