Fieldset
複数の Field をグループ化するネイティブ <fieldset>/<legend> コンテナです。<fieldset disabled> の HTML 標準挙動(内側の全コントロールが自動的に無効化される)を前提に、グループ全体の disabled/invalid を各 Field へ整合させます。
fandhe-frontend-headless-ui の fieldset mod が提供する構造・アクセシビリティ(WAI-ARIA・キーボード操作)・表示状態(data-*)のみを持つ unstyled 部品です。対応する /themes/ ページは現時点で存在しません(本部品は headless-ui 側でのみ提供されます)。
関連 API: fandhe-frontend-headless-ui API
Demo
枠線・余白は docs サイト側のデモ枠であり、fandhe-frontend-headless-ui 自体はスタイルを持ちません。
Features
- root(<fieldset>)/legend(<legend>)/helper_text/error_text の 4 パーツで複数の crate::field をグループ化する(fieldset.rs:1-9)。
- root の disabled はネイティブ <fieldset disabled> として出力し、HTML 仕様により内側の全コントロールが自動的に無効化される(fieldset.rs:8-9, 148-167)。
- aria-describedby は invalid のとき error id、has_helper_text のとき helper id を空白区切りで合成する(field.rs と同型の合成則、fieldset.rs:123-146)。
- invalid はグループ全体のみに反映され、個別 Field の aria-invalid へは伝播しない(誤ったコントロール単位のエラー通知を避けるための意図的な判断、fieldset.rs:69-72)。
Anatomy
root
legend
helper-text
error-textAPI Reference
Arguments
| Name | Type | Default | Description |
|---|---|---|---|
| props.id | &str | ベース id。legend/helper_text/error_text の派生 id 生成に使う(fieldset.rs:60-62)。 | |
| props.disabled | bool | false | true のとき root(<fieldset>)へネイティブ disabled + data-disabled を付与する(fieldset.rs:63-66)。 |
| props.invalid | bool | false | true のとき root へ data-invalid を付与し、error_text を表示状態にする(fieldset.rs:67-72)。 |
| props.has_helper_text | bool | false | aria-describedby の合成に helper id を含めるかどうか(fieldset.rs:73-74, 123-146)。 |
| merge_field_props(field) | FieldProps -> FieldProps | Fieldset の disabled を内包する FieldProps へ OR 伝播する(invalid は伝播しない、fieldset.rs:106-121)。 |
Examples
Invalid group
invalid な Fieldset と error_text の組み立て例です。
invalid な Fieldset(aria-describedby が error_text のみを指す例)の組み立て例です。
Accessibility
WAI-ARIA
| Attribute | Description |
|---|---|
| aria-describedby | root パーツへ、invalid のとき error id・has_helper_text のとき helper id を合成して付与する(fieldset.rs:123-146)。 |
| aria-live="polite" | error_text パーツへ固定付与する(fieldset.rs:195-198)。 |