Textarea
fandhe-frontend-wireframe-ui の複数行テキスト入力欄部品です。画面設計図で「ここに複数行の自由記述欄がある」という配置イメージを伝えるための非インタラクティブなローファイ・プレースホルダーで、blocks.pm に対応する部品はありません(wireframe-ui 独自追加部品)。API は textarea(text, rows, size, active, disabled) の 5 引数(詳細は下の引数表を参照)です。
rows はネイティブ <textarea> の属性や style 属性ではなく、行の高さを表す行プレースホルダー要素を rows 個並べる構造表現です。実際に操作可能な複数行入力欄が必要な場合は Textarea(Themes) を検討してください。
Demo
既定(Md・3 行・本文あり)
自由記述欄のプレースホルダーです。
Active(フォーカス中の見た目)
入力中の内容
Disabled(無効)
編集できません
Sm・2 行
小サイズの欄
Lg・6 行
大サイズの欄。長めの本文を想定した行数です。
text 省略(空文字列)
引数表
| 引数 | 型 | 既定値 | 説明 |
|---|---|---|---|
| text | &str | - | 必須のテキスト。空文字列のときはテキストパート要素自体を出力しない。 |
| rows | u32 | - | 行数。1〜20 へ丸める(0 は 1 へ、21 以上は 20 へ)。行プレースホルダー要素をこの個数だけ生成する。 |
| size | Size | Size::Md | サイズ段階(xs〜xl)。フォントサイズに反映される。 |
| active | Active | Active(false) | true のとき data-active="" を付与し、フォーカス中の見た目にする。 |
| disabled | Disabled | Disabled(false) | true のとき data-disabled="" を付与し、無効の見た目にする。 |
原案差分メモ
- 独自設計(blocks.pm 該当なし): blocks.pm に Textarea 相当の部品は存在しません。イシュー本文の想定引数(テキスト・行数・サイズ・表示状態)から独立設計しました。
- 「State」軸を
Active+Disabledへ分解: イシュー本文が挙げる「State」軸のための共有型は新設せず、既存のprops::Active(フォーカス中の見た目)とprops::Disabled(無効)の 2 型へ分解しました。props.rsは兄弟部品イシューが並行して触る共有ファイルであり、docs/design/wireframe-ui-architecture.md§5「表示状態はdata-*まで」の既存型で表現できるため新設は不要と判断しています。 rowsを行プレースホルダーで表現しstyleを使わない理由: 本クレートは非インタラクティブ部品にstyle属性・ネイティブ対話要素を一切出力しない方針です(設計文書 §5/§7)。そのためrowsは行プレースホルダー要素(div.fw-wire-textarea-line)をrows個生成する構造表現にしています。0は1へ丸め、上限 20(MAX_ROWS)で飽和させます。利用者値 1 個から無制限にノードを増やせないようにする資源有界化です。- スクリーンショット非掲載:
docs/design/reference-screenshots/への blocks.pm 画像取り込みは #2602 で fail-closed に非掲載と確定しています。本ページも画像は置かず、blocks.pm への外部リンクで代替します。 - 非インタラクティブ:
role/aria-*/tabindexは一切付与せず、ネイティブ<textarea>要素も出力しません。リサイズグリップは CSS の::after擬似要素のみで表現しています。 - 配色はグレースケール:
data-active/data-disabledの見た目はいずれも--fw-wire-*モノクロトークンのみで表現し、ColorPaletteには依存しません(設計文書 §3「黒塗り二値を強制せず読みやすさ優先」の判断軸)。