List
fandhe-frontend-wireframe-ui の箇条書きリストプレースホルダーです。項目を縦に積んだ箇条書き(先頭マーカー + テキストの繰り返し)の配置イメージだけを示す、非インタラクティブな部品です。API は list(items, ordered) の 2 引数(詳細は下の引数表を参照)で、props 構造体は導入していません。
視覚的な参照元は特定の 1 部品ではなく、blocks.pm に対応部品がない wireframe-ui 独自追加部品です(詳細は docs/design/wireframe-ui-architecture.md §8)。
本部品は表示専用のため <ul>/<ol>/<li> は出力せず、リンク遷移・キーボード操作も持ちません。実際に操作可能なリストが必要な場合は List(Themes) を検討してください。
Demo
箇条書き(既定)
配置イメージを示す項目
2 つめの項目
3 つめの項目
番号付き
最初の手順
次の手順
最後の手順
入れ子(外側は番号付き、内側は箇条書き)
親項目 A
子項目 A-1
子項目 A-2
親項目 B
空の項目列
引数表
| 引数 | 型 | 既定値 | 説明 |
|---|---|---|---|
| items | Vec<Node> | — | 項目ノード列。渡した順序どおりに描画する。空でもルート div は出力する。 |
| ordered | bool | false | true のとき部品固有の修飾 class(fw-wire-list-ordered)を付与し、マーカーを箇条書きの小円から CSS カウンタによる番号へ切り替える。 |
原案差分メモ
- 独自設計: blocks.pm に対応部品がないため、
docs/design/wireframe-ui-architecture.md§6 の汎用変換規約から独立設計しました。 items: Vec<Node>(&[Node]ではない):crate::grid/crate::frame/crate::stackと同じく、子ツリー全体の不要なclone()を避けるため所有権を受け取ります。Size引数を持たない:crate::stackと同じ理由で、任意Nodeを子として受け取る容器のルートにfw-wire-size-*を付けると--fw-wire-font-size/--fw-wire-control-sizeが子孫へ意図せず継承され、呼び出し側がVec<Node>に何を渡すか関知しない容器の責務を越えて子部品の寸法まで暗黙に変えてしまうためです。マーカー寸法は継承フォントに合わせてem基準にしています。ordered: boolは部品固有の修飾 class:fw-wire-list-orderedとして表現し、props.rsへ共通型を追加していません(crate::avatarのcircle: boolと同じ判断)。<ul>/<ol>/<li>は出力しない: 同文書 §7(非対話制約)とcrate::stepper/crate::breadcrumbsの先例に従い、div/spanだけでレイアウトを表します。- マーカーは CSS 擬似要素のみで描く: DOM へマーカーノードを出力しません。箇条書きは
::beforeの小円、番号付きは CSS カウンタ(counter-reset/counter-increment/content: counter(...))で描きます(crate::breadcrumbsの区切り記号・crate::stepperの連結線と同じ先例)。 - 入れ子リストへ外側の番号・マーカーは漏れない: 項目セレクタを子結合子
>で書き、カウンタはルート単位でリセットしています。ある項目に「本文 + 入れ子list()」を持たせたい場合は、呼び出し側がfandhe_frontend_core::div(vec![], vec![text("本文"), list(...)])のように 1 つのNodeへ合成してから渡してください(入れ子list()をitemsの別要素として並べると、ネストではなく単なる隣接項目になりorderedのカウンタも余分に 1 つ進みます)。項目内のどの深さに現れた入れ子.fw-wire-listも子孫セレクタで字下げされるため、Demo の「入れ子」節は親項目の並びに埋没せず視覚的に判別できます(初版の Demo はこの合成をせず入れ子を別項目として並べていたため、字下げされずカウンタもずれていました。イシュー #2657 Review 指摘の是正)。 - 行頭アイコンはスロット化しない: 行頭にアイコンを置きたい場合は呼び出し側が項目
Node自体(rich_textやicon::*+textの組み合わせ)で表現してください。マーカー差し替え用のOption<Node>スロットは持ちません(利用実績が出た時点で別イシューとして検討する対象です)。 - 表示状態を持たない:
data-*は出力しません(crate::stack/crate::annotationと同じ)。 - 件数の上限を設けない:
crate::breadcrumbsの先例と同じく、件数は呼び出し側が決めます。空のVecでも panic せず項目 0 件のルートだけを出力します。 - 配色はグレースケール: 黒塗り二値ではなく
--fw-wire-ink(本文)・--fw-wire-ink-muted(マーカー・番号)のトークンを使います。