Skip to content
fandhe-frontend
GitHub

Field

1 個のフォームコントロール(input/textarea/select)を labelhelper_texterror_text と一貫して結び付ける入力ラッパーです。disabled/invalid/required/readonly の各フラグから for/id/aria-describedby/aria-invalid を決定的に合成します。値の検証処理(バリデーションロジック)自体は利用者側の通常の Rust コードが担い、本部品はその結果(invalid/エラーメッセージ)を受け取って構造・ARIA へ反映するだけです。

fandhe-frontend-headless-uifield mod が提供する構造・アクセシビリティ(WAI-ARIA・キーボード操作)・表示状態(data-*)のみを持つ unstyled 部品です。対応する /themes/ ページは現時点で存在しません(本部品は headless-ui 側でのみ提供されます)。

関連 API: fandhe-frontend-headless-ui API

Demo

枠線・余白は docs サイト側のデモ枠であり、fandhe-frontend-headless-ui 自体はスタイルを持ちません。

Work email preferred.Enter a valid email address.

Features

  • root/label/input/textarea/select/helper_text/error_text/required_indicator の anatomy を持ち、1 個のコントロールへ label・helper_text・error_text を一貫して結び付ける(field.rs:1-10, 54)。
  • aria-describedby は invalid のとき error id を先頭に、has_helper_text のとき helper id を続けて空白区切りで決定的に合成する(field.rs:249-258, 305-311)。
  • invalid のとき input/textarea/select へ aria-invalid="true" を付与し、error_text を表示状態にする(field.rs:118-119)。
  • select はネイティブ readonly を出力しない(HTML 仕様上 <select readonly> が無効なため、data-readonly は他コントロール同様に出力する、field.rs:60-63)。バリデーションの実行自体は利用者側の通常の Rust コードが担い、本モジュールはその結果(invalid/エラーメッセージ)を構造・ARIA へ反映するのみである(`docs/policy/intentional-non-adoption.md` §3.25)。

Anatomy

root
  label
    required-indicator
  input
  helper-text
  error-text

API Reference

Arguments

NameTypeDefaultDescription
props.id&strベース id。control/label/helper_text/error_text の派生 id 生成に使う(field.rs:103-108)。
props.disabled / props.invalid / props.required / props.readonlyboolfalseFieldProps の各フラグ(field.rs:112-135)。data-*・ネイティブ属性・aria-invalid へ反映される(代表 1 行に集約)。
props.has_helper_textboolfalsearia-describedby の合成に helper id を含めるかどうか(field.rs:249-258)。
input(props, extra_attrs) / textarea(props, autoresize, extra_attrs, children) / select(props, extra_attrs, children)&FieldProps, ..同一の aria-describedby/aria-invalid 合成則に従う 3 種のコントロールパーツ(field.rs:311-374)。

Data Attributes

PartAttributeObserved Values
error-textdata-invalid
error-textdata-required
helper-textdata-invalid
helper-textdata-required
inputdata-invalid
inputdata-required
labeldata-invalid
labeldata-required
required-indicatordata-invalid
required-indicatordata-required
rootdata-invalid
rootdata-required

Examples

Required + helper text

required_indicator・helper_text・error_text を併用した例です。

required かつ helper_text 併用の Field(バリデーション結果は利用者が渡す)の組み立て例です。

Letters and digits only.

Accessibility

Keyboard Interactions

KeyDescription
Tab / 文字入力input/textarea/select がいずれもネイティブ要素であるため、ブラウザ標準のフォーカス移動・入力操作が働く(field.rs:311-374)。

WAI-ARIA

AttributeDescription
aria-describedbyinvalid のとき error id、has_helper_text のとき helper id を空白区切りで合成する(field.rs:249-258)。
aria-invalidprops.invalid が true のとき input/textarea/select へ "true" を付与する(field.rs:118-119)。
aria-live="polite"error_text パーツへ固定付与する(field.rs:385-387)。
aria-hidden="true"required_indicator パーツへ固定付与する(装飾目的の印のため、field.rs:399-402)。