Skip to content
fandhe-frontend
GitHub

Toggle

押下状態を持つ 2 状態ボタンの unstyled 部品です。ネイティブ <button> 自身が押下状態を表し、hidden input を持たずフォーム送信に参加しません(「オン/オフ設定」を表す Switch とは異なる意味論です)。

Themes 版(fandhe-frontend-pre-styled-ui)はこの構造へ既定 CSS を追加するだけの薄いラッパーであり、CSS は持ちません。スタイル済みの表示例は Toggle を参照してください。

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

Demo

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

Features

  • Root(`<button type="button">`)/Indicator の 2 anatomy パーツと、押下状態機械 `Toggle` を提供する。「ボタンの押下状態」を表し、hidden input を持たずフォーム送信に参加しない(ark-ui 準拠)。
  • `data-state`(`"on"`/`"off"`)と `aria-pressed`(`"true"`/`"false"`)・`data-pressed`(存在属性)を併記する。`crate::switch::Switch` と同じ状態機械(`Checkable`)を再利用しつつ、公開 HTML の語彙は分離している。
  • `indicator` は `data-state` のみを出力する最小主義パーツであり、on/off に応じた表示/非表示切り替えは styled 層 CSS の責務とする。
  • 複数 Toggle 間の roving focus(矢印キー移動)は単体コンポーネントのため不要であり、本コンポーネントのスコープ外。

Anatomy

root
  indicator

API Reference

Arguments

NameTypeDefaultDescription
pressedboolfalse押下状態。`data-state`(on/off)・`aria-pressed`・`data-pressed` へ反映する。
disabledboolfalse無効化状態。ネイティブ `disabled`・`aria-disabled` 相当(`data-disabled`)を付与する。

Data Attributes

PartAttributeObserved Values
indicatordata-stateon
rootdata-pressed
rootdata-stateon

Examples

無効化状態

`disabled = true` を渡すとネイティブ `disabled` 属性と `data-disabled` が付与され、フォーカス・押下操作を受け付けなくなります。

Accessibility

Keyboard Interactions

KeyDescription
Tab / Space / Enter`root` はネイティブ `<button type="button">` であり、フォーカス・押下操作はブラウザ既定動作で成立する(`disabled` のときはフォーカス対象から除外される)。

WAI-ARIA

AttributeDescription
aria-pressed`root` へ現在の押下状態(`"true"`/`"false"`)を付与する。