ErrorSummary

送信時のエラーと、修正する欄へのリンクをまとめます。

使いどころ

  • フォームの送信に失敗した時、直すところをフォームの上にまとめ、各欄へ移れるようにする時に使います。
  • 一つの欄のエラーは、その欄の Field の error で示します。ErrorSummaryはその一覧で、欄のエラーの代わりにはしません。
  • 送信以外の注意や失敗を知らせる時は Notice や Toast を使います。

使い方

送信に失敗した時だけ描き、errors に直すところを並べます。label は直し方の文、href は直す欄のidを指す #id です。errors が空の時は何も描きません。

形は Notice と同じ(一行目にアイコンと太字の見出し、角丸4px)で、色はBasecamp 2のログインの画面のエラーの箱と同じ、淡い黄色(#fffae6)の面に1px #ffea9e の枠、赤いアイコンと赤い太字の見出しにします。ErrorSummaryは直す欄へのリンクの一覧を持ちます。リンクは本文のリンクと同じ青緑の文字に下線を引き(ホバーで赤)、先頭に見出しと同じ赤の小さな点を置きます。

表示した時にErrorSummaryへフォーカスを移します。tabindex="-1" を持つので、送信の後にサーバーで描き直すページでは autofocus を渡すと、JavaScriptなしでも読み込んだ時に移ります。読み込んだ後にスクリプトで出す時は、autofocus は働かないので focus() で移します。各入力にも Field の error でエラーを関連付けます。

入力の検証と、サーバーから返ったエラーを欄へ対応させるのは利用側です。JavaScriptは使いません。

アクセシビリティ

  • aside で、title を読み上げ名と見出し(h2)にします。アイコンは読み上げから外します。
  • 表示した時にフォーカスを移すと、題名と一覧を読み上げます。移さないと気付かれにくいので、autofocus か focus() で必ず移します。
  • リンクの文は欄の名前が分かる直し方にします(「記事名を入力してください」など)。

API

ErrorSummary

直すところを、各欄へ移るリンクの一覧にまとめる。形はNoticeの危険の役割(アイコンと太字の見出し)で、色はBC2のログインの画面のエラーの箱(淡い黄色の面、1pxの黄色の枠、赤い見出し)。ErrorSummaryが持つのは色と直す欄への一覧。 tabindex="-1"を持つので、送信後に再描画したページではautofocusを渡すと、読み込んだ時にフォーカスが移る。

ErrorSummaryのprops
名前型既定値説明
titlestring"入力内容を確認してください"見出しに太字で書く題名。読み上げ名(aria-label)にもする。
errors必須readonly { label: string; href: string; }[]直すところの一覧。labelは直し方の文、hrefは直す欄へのリンク(欄のidを指す#id)。空の配列を渡すと何も描かない。

ほかに、<aside>へ標準のHTML属性を渡せます。

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/icon.css、components/notice.css、components/error-summary.css

errorsの項目

errorsの項目
名前型既定値説明
label必須string直し方の文。リンクの文字になる。
href必須string直す欄へのリンク。欄のidを指す#idにする。

コード

HTML
Hono JSX