セレクト
選んだ選択肢の値をシグナルに入れるセレクトです。
実行結果
select.rs
use hypersig::html::div;
use hypersig::style::Style;
use hypersig::style::value::rem;
use hypersig::{Page, Signals};
use hypersig_ui::select_field;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone, Copy, PartialEq)]
pub enum Region {
Tokyo,
Frankfurt,
Virginia,
}
#[derive(Signals, Serialize, Deserialize)]
pub struct Deploy {
region: Region,
}
pub fn page() -> Page<Deploy> {
Page::new(
"デプロイ",
Deploy {
region: Region::Tokyo,
},
)
.child(
div()
.css(Style::new().max_width(rem(16)))
.child(select_field(
"リージョン",
Deploy::region(),
[
(
Region::Tokyo,
"東京",
),
(
Region::Frankfurt,
"フランクフルト",
),
(
Region::Virginia,
"バージニア",
),
],
)),
)
}アクセシビリティ
セレクトはネイティブの <select> なので、スクリーンリーダー、キーボード、スマートフォンのピッカーホイールがもともと扱えます。閉じた状態のコントロールは、山形の矢印が付いたテキストフィールドのように描かれます。
ブラウザが appearance: base-select と ::picker(select) に対応していれば、開いた一覧も popover のカードとして描かれます。browser-compat-data 8.1.6 では、対応しているのは Chrome 135 と Safari 27 です。それ以外のブラウザでは、ブラウザ自身のピッカーが開きます。
| キー | 動作 |
|---|---|
| ブラウザのキー | ネイティブの <select> はプラットフォームのキー操作に従うので、使えるキーはシステムごとに異なります。 |
API
| 項目 | 概要 |
|---|---|
select_field | title をラベルに持ち、options を選択肢として出して、選んだ選択肢の値を selected に入れるセレクト |
select_field_in_form | title をラベルに持ち、options を選択肢として出す、form の field に束縛したセレクト |