Select
fandhe-frontend-wireframe-ui のドロップダウン選択欄風プレースホルダーです。表示文言 + 任意の先頭アイコン + サイズ/強調/無効状態を持つ非インタラクティブな部品です。API は select(text_content, leading, size, active, disabled) の 5 引数(詳細は下の引数表を参照)で、props 構造体は導入していません。
視覚的な参照元は blocks.pm の Select 部品ですが、ライセンス上の理由によりスクリーンショットは掲載していません(詳細は docs/design/wireframe-ui-architecture.md §2)。参照したい場合は外部リンク先を直接確認してください。
「Select」という名前ですが、<select> 要素・開閉・リストボックス・キーボード操作のいずれも実装しない表示専用プレースホルダーです。実際に操作可能な select が必要な場合は Select(Themes) / Select(Primitives) を検討してください。
Demo
既定
未選択
先頭アイコン付き
山田太郎
Active
選択中
Disabled
選択できません
Sm
小サイズ
Lg
大サイズ
引数表
| 引数 | 型 | 既定値 | 説明 |
|---|---|---|---|
| text_content | &str | - | 表示文言(選択済み値・プレースホルダー風のいずれも 1 種類の文言として扱う)。 |
| leading | Option<Node> | None | 省略可能な先頭アイコンスロット。Some(icon::user(size)) のように渡す。 |
| size | Size | Size::Md | サイズ段階(xs〜xl)。コントロール高さ・フォントサイズに反映される。 |
| active | Active | Active(false) | true のとき data-active="" を付与する(フォーカス風の強調枠)。 |
| disabled | Disabled | Disabled(false) | true のとき data-disabled="" を付与する(見た目のみ。操作不能を実装するものではない)。 |
原案差分メモ
divルート・非対話制約:docs/design/wireframe-ui-architecture.md§7 に従い、ルートはdivとしrole/aria-*/tabindex/on*は一切出力しません(アイコンが持つaria-hidden="true"は装飾用途の既定属性で対話的 ARIA ではありません)。- アイコン有無は先頭アイコンスロットの有無に畳み込む:
docs/design/ wireframe-ui-architecture.md§2 の保留(イシュー #2602)に従い、blocks.pm の Figma プロパティ構成を参照・書き写さず、button/linkと同型の一般的な UI パターンから独立に設計しました。「アイコン付き」「テキストのみ」の区別に専用の列挙型は導入せず、leading: Option<Node>のSome/Noneへ畳み込みます。 - ドロップダウン指示子は固定パート: 末尾の指示子アイコン(⌄)はスロットではなく部品固有の固定パートとし、常に
icon::caret_downを出力します(利用者が省略・差し替えできない部品の同一性を担う要素のため)。 - State は共通型
Active/Disabledへ畳み込む: 専用のSelectState列挙は追加せず、フォーカス風の強調はActive、無効状態はDisabled(いずれも既存の共通型)で表現します。trueのときそれぞれdata-active=""/data-disabled=""を付与します(見た目のみで、実際のフォーカス管理・操作不能を実装するものではありません)。 - 開いた状態(リストボックス表示)の variant は実装しない: 非対話制約(
docs/design/wireframe-ui-architecture.md§5/§7)により、開閉状態の表示専用再現は本イシューでは実装していません。 - スクリーンショット非掲載:
docs/design/reference-screenshots/への blocks.pm 画像取り込みは #2602 で fail-closed に非掲載と確定しています。本ページも画像は置かず、上記の外部リンクのみで代替します。 - 配色はグレースケール: 黒塗り二値ではなく
--fw-wire-*トークン(ink/ink-muted/line/fill-subtle)で読みやすさを優先します。