一時的に表示される簡潔なメッセージです。
import * as React from 'react';import * as Toast from '@radix-ui/react-toast';import './styles.css';const ToastDemo = () => {const [open, setOpen] = React.useState(false);const eventDateRef = React.useRef(new Date());const timerRef = React.useRef(0);React.useEffect(() => {return () => clearTimeout(timerRef.current);}, []);return (<Toast.Provider swipeDirection="right"><button className="Button large violet" onClick={() => { setOpen(false); window.clearTimeout(timerRef.current); timerRef.current = window.setTimeout(() => { eventDateRef.current = oneWeekAway(); setOpen(true); }, 100); }} >Add to calendar</button><Toast.Root className="ToastRoot" open={open} onOpenChange={setOpen}><Toast.Title className="ToastTitle">Scheduled: Catch up</Toast.Title><Toast.Description asChild><time className="ToastDescription" dateTime={eventDateRef.current.toISOString()}>{prettyDate(eventDateRef.current)}</time></Toast.Description><Toast.Action className="ToastAction" asChild altText="Goto schedule to undo"><button className="Button small green">Undo</button></Toast.Action></Toast.Root><Toast.Viewport className="ToastViewport" /></Toast.Provider>);};function oneWeekAway(date) {const now = new Date();const inOneWeek = now.setDate(now.getDate() + 7);return new Date(inOneWeek);}function prettyDate(date) {return new Intl.DateTimeFormat('en-US', { dateStyle: 'full', timeStyle: 'short' }).format(date);}export default ToastDemo;
自動的に閉じます。
ホバー、フォーカス、ウィンドウのぼかしで閉じるのを一時停止します。
トーストビューポートにジャンプするホットキーをサポートします。
スワイプジェスチャーによるクローズをサポートします。
スワイプジェスチャーアニメーション用のCSS変数を公開します。
制御することも、制御しないこともできます。
コマンドラインからコンポーネントをインストールします。
コンポーネントをインポートします。
トーストとトーストビューポートをラップするプロバイダーです。通常はアプリケーションをラップします。
トーストが表示される固定領域です。ユーザーはホットキーを押すことでビューポートにジャンプできます。キーボードユーザーがホットキーを発見できるようにするのは、あなたの責任です。
自動的に閉じるトーストです。ユーザーの応答を取得するために開いたままにするべきではありません。
トーストのオプションのタイトルです。
トーストメッセージです。
ユーザーが時間制限の結果として予期しない副作用を伴うタスクを完了することをユーザーに期待させないようにするために、無視しても安全なアクションです。
ユーザーの応答が必要な場合は、AlertDialog
をトーストとしてスタイルして、ビューポートに表示します。
ユーザーがトーストの表示時間が経過する前にトーストを消すことができるボタンです。
keycode.infoの各キーのevent.code
値を使用して、デフォルトのホットキーをオーバーライドします。
トーストの時間をカスタマイズして、プロバイダーの値を上書きします。
ユーザーがボタンをクリックするたびにトーストを表示する必要がある場合は、状態を使用して同じトーストの複数のインスタンスをレンダリングします(下記参照)。あるいは、一部を抽象化して独自の命令型 APIを作成することもできます。
--radix-toast-swipe-move-[x|y]
および--radix-toast-swipe-end-[x|y]
CSS変数と、data-swipe="[start|move|cancel|end]"
属性を組み合わせて、スワイプして閉じるジェスチャーをアニメーション化します。以下に例を示します。
aria-live
要件に準拠しています。
type
プロパティを使用して、スクリーンリーダーのトーストの感度を制御します。
ユーザーアクションの結果であるトーストの場合は、foreground
を選択します。バックグラウンドタスクから生成されるトーストは、background
を使用する必要があります。
フォアグラウンドトーストはすぐに通知されます。支援技術では、フォアグラウンドトーストが表示されると、以前にキューに入れられたメッセージをクリアすることを選択する場合があります。同時に異なるフォアグラウンドトーストをスタックすることは避けてください。
バックグラウンドトーストは、次の適切な機会、たとえば、スクリーンリーダーが現在の文の読み取りを完了したときに通知されます。キューに入れられたメッセージはクリアされないため、ユーザーの操作に応じて使用すると、スクリーンリーダーのユーザーにとってはラグのあるユーザーエクスペリエンスとして認識される可能性があります。
トーストを操作する代替方法をスクリーンリーダーのユーザーに指示するには、Action
のaltText
プロパティを使用します。
ユーザーをアプリケーション内の永続的な場所に誘導してアクションを実行したり、独自のカスタムホットキーロジックを実装したりできます。後者を実装する場合は、foreground
タイプを使用してすぐに通知し、ユーザーに十分な時間を与えるために時間を長くしてください。
アイコン(またはフォントアイコン)を提供する場合は、スクリーンリーダーのユーザー向けに正しくラベルを付けることを忘れないでください。
プリミティブな部分を独自のコンポーネントに抽象化して、独自のAPIを作成します。
必要に応じて、トーストの複製を可能にする独自の命令型APIを作成します。