Skip to content
fandhe-frontendcore v0.4.3
GitHub

Toggle

fandhe-frontend-pre-styled-ui の toggle mod が提供するスタイル済み Toggle 部品です。「ボタンの押下状態」を表す 2 状態ボタンで、ネイティブ <button type="button"> 自身が押下状態を持ちます(switch mod のようなフォーム送信用の hidden input は持ちません)。

関連 API: fandhe-frontend-pre-styled-ui API / fandhe-frontend-headless-ui API

Demo

押下状態を持つ 2 状態ボタン。data-state 語彙は Switch の checked/unchecked ではなく on/off です(root 自身がネイティブ button であり、hidden input を持ちません)。variant(Outline/Ghost)はイシュー #2023 の shadcn/ui 突合で新設しました。

State
Size
Variant
Palette

Features

  • size/variant/colorPalette variant クラスを root へ付与し、headless-ui の toggle::root へ委譲する。
  • pressed/disabled の 2 状態フラグを直接引数で受け取る。
  • 状態機械は Switch と同じ Checkable を内部再利用するが、公開語彙は "on"/"off"(aria-pressed と data-pressed を併記)で Switch とは異なる。
  • root 自身がネイティブ <button type="button"> であり、Switch/RadioGroup のような hidden input を持たない。
  • indicator は off 時に styled 層 CSS が display: none で隠す(headless 層は data-state のみ出力する)。
  • variant(ToggleVariant::Outline/Ghost)はイシュー #2023 の shadcn/ui 突合で新設した軸。Outline(既定)は輪郭あり、Ghost は背景・輪郭なしの最小装飾(ButtonVariant::Ghost と同じ意味論)。

Anatomy

root
  indicator

API Reference

Arguments

NameTypeDefaultDescription
sizeSizeSize::Mdサイズ variant。
variantToggleVariantToggleVariant::Outline外観 variant(Outline/Ghost、イシュー #2023)。
paletteColorPaletteColorPalette::AccentcolorPalette 軸。
pressedboolfalse押下状態。
disabledboolfalse無効化状態。
attrsVec<(&str, &str)>—root パーツへ合成する追加属性。
childrenVec<Node>—ラベルとなる子ノード。

Data Attributes

PartAttributeObserved Values
indicatordata-disabled(値なし)
indicatordata-pressed(値なし)
indicatordata-stateoff, on
rootdata-disabled(値なし)
rootdata-pressed(値なし)
rootdata-stateoff, on

CSS Variables

VariableDefault
--fandhe-toggle-font-sizevar(--fandhe-font-font-size-sm)
--fandhe-toggle-padding-x0.75rem
--fandhe-toggle-padding-y0.375rem

Accessibility

Keyboard Interactions

KeyDescription
Space / Enterネイティブ <button> のブラウザ既定動作により押下状態を切り替える(ブラウザ実装依存、本フレームワークの JS 出力によらない)。

WAI-ARIA

AttributeDescription
aria-pressedroot に付与。押下状態(true/false)を表す。