English

セレクト

選んだ選択肢の値をシグナルに入れるセレクトです。

実行結果

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_fieldtitle をラベルに持ち、options を選択肢として出して、選んだ選択肢の値を selected に入れるセレクト
select_field_in_formtitle をラベルに持ち、options を選択肢として出す、form の field に束縛したセレクト