Skip to content
fandhe-frontendcore v0.4.3
GitHub

Tree View

fandhe-frontend-pre-styled-ui の tree_view mod が提供するスタイル済み Tree View 部品です。

ファイル階層等の入れ子構造を表示する部品です。WAI-ARIA Tree View パターン(role="tree"/role="treeitem")に従い、展開・折りたたみは [hidden] 属性と CSS の詳細度制御で表現します。JS 有効時は fandhe-frontend-wasm-full が実測した branch-content の高さを CSS 変数(--fandhe-content-height)へ書き込み、@starting-style + transition-behavior: allow-discrete によって展開・折りたたみを高さトランジションとして表現します(Collapsible と同型。hidden 契約自体は維持したままの CSS ネイティブな遷移)。JSON データ専用の配色付き表示には JSON Tree View を検討してください。

root は size(xs/sm/md/lg/xl、既定 md)で行密度・文字サイズを切り替えます。color-palette 軸は提供しません。行はキーボード操作時のフォーカスリングと hover 面を持ち、選択中の行の背景は hover で洗い流されません。

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

Demo

headless-ui の TreeView(role="tree"/role="treeitem")に pre-styled-ui の recipe CSS を適用した静的掲示です。"src" ブランチを展開済み、"src/lib.rs" を選択中、"README.md" を disabled として固定表示しています。インデントは CSS custom property(--fandhe-tree-view-indent)で表現しています。size(既定 md)は行密度・文字サイズを切り替えます。

Project files
src
lib.rs
Cargo.toml
README.md

Features

  • role="tree"/role="treeitem" の WAI-ARIA Tree パターンを headless-ui が提供する(crates/pre-styled-ui/src/tree_view.rs:45)
  • branch-content の展開・折りたたみは [hidden] 属性と CSS の詳細度制御で表現する(tree_view.rs 参照)
  • disabled/selected 状態を data-disabled/data-selected で表現しフォーカス可視化と連動する(tree_view.rs 参照)
  • size(xs/sm/md/lg/xl、既定 md)が行密度・文字サイズを切り替える。root スコープの CSS custom property 経由で子孫パーツへ継承される(イシュー #1578)
  • hover 面・キーボードフォーカスリングを持つ(イシュー #1578。選択行の背景は hover で洗い流されない)

Anatomy

root
  label
  tree
    branch
      branch-control
        branch-indicator
        branch-text
      branch-content
        branch-indent-guide
          item
            item-indicator
            item-text

API Reference

Arguments

NameTypeDefaultDescription
sizeSizeMd行密度・文字サイズを切り替える(tree_view.rs の root)。

Data Attributes

PartAttributeObserved Values
branchdata-branchsrc, src/nested
branchdata-depth0, 1
branchdata-stateclosed, open
branchdata-valuesrc, src/nested
branch-contentdata-depth0, 1
branch-contentdata-stateclosed, open
branch-contentdata-valuesrc, src/nested
branch-controldata-depth0, 1
branch-controldata-stateclosed, open
branch-controldata-valuesrc, src/nested
branch-indent-guidedata-depth0, 1
branch-indicatordata-stateclosed, open
branch-textdata-stateclosed, open
itemdata-depth0, 1, 2
itemdata-disabled(値なし)
itemdata-selected(値なし)
itemdata-valueCargo.toml, README.md, src/lib.rs, src/nested/util.rs
item-indicatordata-disabled(値なし)
item-indicatordata-selected(値なし)
item-textdata-disabled(値なし)
item-textdata-selected(値なし)

CSS Variables

VariableDefault
--fandhe-tree-view-font-sizevar(--fandhe-font-font-size-sm)
--fandhe-tree-view-indent1rem
--fandhe-tree-view-indicator-size1em
--fandhe-tree-view-row-gapvar(--fandhe-space-2)
--fandhe-tree-view-row-paddingvar(--fandhe-space-1-5) var(--fandhe-space-2-5)

Examples

Expanded branch

"src" ブランチを展開した状態で固定表示する例です。

Project files
src
lib.rs

Accessibility

WAI-ARIA

AttributeDescription
role="tree" / role="treeitem"WAI-ARIA Tree View パターンに従い headless-ui が付与する(tree_view.rs:45)。