Dial

つまみの周りに並べた選択肢から、一つを選びます。

自動で閉じるまで
目盛りが三つ
通知のまとめ
目盛りが八つ
保存する期間
使えない時
自動で閉じるまで
右から左に読む場合
الإغلاق التلقائي

使いどころ

  • 自動で閉じるまでの日数や通知のまとめの間隔のように、3〜8個の決まった値から一つを選ぶ設定を、一目で分かる形で見せる時に使います。
  • 値が多い時や細かい数を選ぶ時は Range、選択肢の名前が長い時や説明を添える時はラジオボタンの Choice を使います。

使い方

控えめなボタンと同じ作り(平らな白、1px #ccc の枠、下に1px #ddd の影)の円いつまみの周りに、options の label を灰色の目盛りとして並べ、つまみの縁の外に短い刻みを引きます。値は左下から時計回りに右下まで、270度の弧に等しく並べます。一つを選ぶと、その値を黒い太字にし(面で囲みません)、つまみの黒い針がその値へ回ります。

目盛りは3〜8個にします。弧に並べて読める数の上限で、それより多い時は Range を使います。9個以上を渡した場合、9個目以降を選ぶと違う目盛りを指さないよう針を隠し、選んだ値の黒い太字だけで示します。目盛りの文言は短い数や語にします。

実体は name を共有するラジオボタンのグループです。選んだ値を name で送信し、value を最初に選んでおきます。unit はつまみの下に小さな太字で単位を添え、disabled は使えなくし、つまみの形と塗りはそのままに、目盛りと単位の文字だけを灰色にします。

controllerの登録は要らず、JavaScriptが無い時も同じように動きます。

キーボード

Dialのキーボード操作
キー動作
Tab選んでいる目盛りへ入ります(標準のラジオボタンの操作)。
矢印キー前・次の目盛りを選びます(標準のラジオボタンの操作)。

アクセシビリティ

  • fieldset の legend をグループの名前、各目盛りの label をラジオボタンの名前として読み上げます。
  • unit は見た目だけで読み上げません。「30」だけで意味が伝わらない時は、legend に「自動で閉じるまで(日)」のように単位を含めます。
  • ラジオボタンは見えなくしていますが、フォーカスは受け、フォーカスした目盛りにフォーカスリングを表示します。

API

Dial

控えめなボタンと同じ平らな白の円いつまみのダイヤル。周りの目盛りから一つを選ぶと、つまみの針がその値へ回る。実体は一つを選ぶラジオボタンのグループなので、送信・キーボードの操作(矢印キー)・読み上げは標準のまま使える。

Dialのprops
名前型既定値説明
legend必須string選ぶものの名前。fieldsetのlegendになり、つまみの上に出す。
name必須stringラジオボタンのname。選んだ値をこの名前で送信する。
options必須readonly DialOption[]目盛りの値。左下から時計回りに右下まで、3〜8個を並べる。9個目以降を選んだ時は針を出さない。
valuestring最初に選んでおく値。どの値にも合わなければ何も選ばず、針は最初の目盛りを指す。
unitstringつまみの下に添える単位(「日」など)。
disabledboolean全ての目盛りを使えなくし、文字だけを灰色にする。

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

読み込むCSS:layers.css、reset.css、tokens.css、base.css、layout.css、components/dial.css

DialOption

DialOption
名前型既定値説明
value必須string送信する値。
label必須string目盛りに出す文言。短い数や語にする。ラジオボタンの読み上げ名になる。

コード

HTML
Hono JSX