Skip to content
fandhe-frontend
GitHub

Dialog

fandhe-frontend-pre-styled-uidialog mod が提供するスタイル済み Dialog 部品です。 画面全体を覆うモーダルダイアログで、通常の確認ダイアログ(role="dialog")と 警告用ダイアログ(role="alertdialog")を DialogRole で切り替えられます。 フォーカストラップ・Escape キーでの閉鎖・外側クリックでの閉鎖といったクライアント 挙動は JS ランタイム側の責務とし、本レイヤーは決定的な SSR 属性出力のみを担います。

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

Demo

headless-ui の Dialog(WAI-ARIA dialog パターン)に pre-styled-ui の data-scope / data-part セレクタ CSS を適用した静的掲示です。backdrop は掲示用に非表示化し、positioner はフロー内配置へ中和しています(実際の overlay 配置は recipe CSS が担います)。

Features

  • Root / Trigger / Backdrop / Positioner / Content / Title / Description / CloseTrigger の 8 anatomy パーツを持つモーダルダイアログ。
  • DialogRole(Dialog/AlertDialog)で role="dialog"/role="alertdialog" を出し分ける。
  • size variant(Sm/Md/Lg)で root の寸法を切り替える。
  • フォーカストラップ・Escape キーでの閉鎖・外側クリックでの閉鎖は JS ランタイム側の責務であり、本レイヤーは SSR/属性出力のみを担う。

Anatomy

trigger
root
  backdrop
  positioner
    content
      title
      description
      close-trigger

API Reference

Arguments

NameTypeDefaultDescription
sizeSizeSize::Mdroot へ付与するサイズ variant(Sm/Md/Lg)。
stateOpenState開閉状態(Open/Closed)。root/content の data-state へ反映される。

Data Attributes

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

CSS Variables

VariableDefault
--fandhe-dialog-content-max-width32rem
--fandhe-dialog-content-paddingvar(--fandhe-space-6)
--fandhe-dialog-title-font-sizevar(--fandhe-font-font-size-lg)

Accessibility

WAI-ARIA

AttributeDescription
aria-haspopup="dialog"trigger に固定付与。
aria-expandedtrigger に付与。開閉状態を表す。
aria-controlstrigger に付与。controls が Some のとき content の id を指す。
role="dialog" / role="alertdialog"content に付与。DialogRole に応じて出し分けられる。
aria-modalcontent に付与。モーダルかどうかを表す真偽値。
aria-labelledby / aria-describedbycontent に付与。対応する title/description が設定されているときのみ出力される。