Skip to content
fandhe-frontend
GitHub

Drawer

画面端からスライドインするパネルです。ark-ui・chakra-ui の Drawer は WAI-ARIA 上 Dialog パターンの変種であり、fandhe-frontend-headless-uidrawer mod は新規状態機械を作らず dialog mod の開閉状態機械をそのまま 再利用します。追加する要素は専用 anatomy(data-scope="drawer")と、 画面のどの端から出現するかを表す DrawerPlacement(Start/End/Top/Bottom、 既定 End)のみです。fandhe-frontend-wasm-full の Escape・外側クリック 配線は未対応(fail-closed のため未対応でも安全側)です。

スタイル済みの表示例は Drawer を参照してください。

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

Demo

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

Features

  • dialog パターンの変種として crate::dialog の Disclosure 状態機械をそのまま再利用する(新規状態機械を作らない)。
  • DrawerPlacement(Start/End/Top/Bottom、既定 End)で画面のどの端から出現するかを切り替え、root/positioner/content の data-placement へ反映する。
  • content は role="dialog" を固定付与する(Alertdialog 相当の variant は提供しない。常設ナビ・フィルタ等の補助パネル用途に一致させるため)。
  • fandhe-frontend-wasm-full の OverlayKind::from_scope は "drawer" を受理しないため、Escape/外側クリックの実 DOM 配線は別イシュー扱い(fail-closed のため未対応でも安全側)。

Anatomy

trigger
root
  backdrop
  positioner
    content
      title
      description
      close-trigger

API Reference

Arguments

NameTypeDefaultDescription
root: stateOpenStateClosedドロワー全体の開閉状態(data-state へ反映)。
root: placementDrawerPlacementEnd画面のどの端から出現するか(root/positioner/content の data-placement へ反映)。
trigger: stateOpenStateClosedaria-expanded/data-state へ反映される開閉状態。
trigger: controlsOption<&str>Some のとき aria-controls で content と関連付ける。
backdrop: stateOpenStateClosedclosed のとき hidden 存在属性を付与する背面レイヤーの開閉状態。
positioner: stateOpenStateClosedclosed のとき hidden 存在属性を付与する配置ラッパーの開閉状態。
positioner: placementDrawerPlacementEnddata-placement へ反映される配置(styled 層が方向別レイアウトを切り替える起点)。
content: stateOpenStateClosed開閉状態(closed のとき hidden 存在属性を付与)。
content: placementDrawerPlacementEnddata-placement へ反映される配置。
content: modalboolaria-modal へ反映する値。
content: idsContentIdsContentIds::default()content 自身の id・aria-labelledby・aria-describedby をまとめた構造体(crate::dialog の型を再利用)。
title: idOption<&str>content の labelledby と対で aria-labelledby 関連付けを成立させる。
description: idOption<&str>content の describedby と対で aria-describedby 関連付けを成立させる。

Data Attributes

PartAttributeObserved Values
backdropdata-stateopen
contentdata-placementend
contentdata-stateopen
positionerdata-placementend
positionerdata-stateopen
rootdata-placementend
rootdata-stateopen
triggerdata-stateopen

Examples

Start placement

DrawerPlacement::Start(既定 End とは逆側)から出現するナビゲーション用ドロワーの例です。

Accessibility

WAI-ARIA

AttributeDescription
aria-haspopup="dialog"trigger に固定付与。
aria-expandedtrigger に付与。開閉状態を反映する。
aria-controlstrigger に付与。controls が Some のとき content と関連付ける。
aria-hidden="true"backdrop に固定付与(装飾層のため読み上げ対象外)。
role="dialog"content に固定付与(Alertdialog 相当の variant は提供しない)。
aria-modalcontent に付与。modal 引数の値を反映する。
aria-labelledby / aria-describedbycontent に付与。ids.labelledby/ids.describedby が Some のときのみ出力される。