Arborescence

Structure hiérarchique dépliable avec nœuds, branches et feuilles. Supporte une variante avec cases à cocher et propagation tri-état.

Arborescence simple

  • Documents
    • Rapports
    • Note de service.docx
<ul class="bj-tree" role="tree">
  <li class="bj-tree__item" role="treeitem">
    <div class="bj-tree__item-content">
      <button type="button" class="bj-tree__toggle" data-bj-tree-toggle aria-expanded="true">
        <i class="ri-arrow-right-s-line" aria-hidden="true"></i>
      </button>
      <i class="ri-folder-open-line bj-tree__icon" aria-hidden="true"></i>
      <span class="bj-tree__label">Documents</span>
    </div>
    <ul class="bj-tree__branch" role="group">
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <button type="button" class="bj-tree__toggle" data-bj-tree-toggle aria-expanded="false">
            <i class="ri-arrow-right-s-line" aria-hidden="true"></i>
          </button>
          <i class="ri-folder-line bj-tree__icon" aria-hidden="true"></i>
          <span class="bj-tree__label">Rapports</span>
        </div>
        <ul class="bj-tree__branch" role="group" hidden>
          <li class="bj-tree__item" role="treeitem">
            <div class="bj-tree__item-content">
              <span class="bj-tree__toggle-spacer"></span>
              <i class="ri-file-text-line bj-tree__icon" aria-hidden="true"></i>
              <span class="bj-tree__label">Rapport 2025.pdf</span>
            </div>
          </li>
        </ul>
      </li>
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <i class="ri-file-text-line bj-tree__icon" aria-hidden="true"></i>
          <span class="bj-tree__label">Note de service.docx</span>
        </div>
      </li>
    </ul>
  </li>
</ul>

Avec cases à cocher

  • Permissions
    • Lecture
    • Écriture
    • Suppression
<ul class="bj-tree bj-tree--checkbox" role="tree">
  <li class="bj-tree__item" role="treeitem">
    <div class="bj-tree__item-content">
      <button type="button" class="bj-tree__toggle" data-bj-tree-toggle aria-expanded="true">
        <i class="ri-arrow-right-s-line" aria-hidden="true"></i>
      </button>
      <input type="checkbox" class="bj-tree__checkbox" />
      <span class="bj-tree__label">Permissions</span>
    </div>
    <ul class="bj-tree__branch" role="group">
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <input type="checkbox" class="bj-tree__checkbox" />
          <span class="bj-tree__label">Lecture</span>
        </div>
      </li>
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <input type="checkbox" class="bj-tree__checkbox" />
          <span class="bj-tree__label">Écriture</span>
        </div>
      </li>
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <input type="checkbox" class="bj-tree__checkbox" />
          <span class="bj-tree__label">Suppression</span>
        </div>
      </li>
    </ul>
  </li>
</ul>

Variante compacte

  • Racine
    • Élément 1
    • Élément 2
<ul class="bj-tree bj-tree--compact" role="tree">
  <li class="bj-tree__item" role="treeitem">
    <div class="bj-tree__item-content">
      <button type="button" class="bj-tree__toggle" data-bj-tree-toggle aria-expanded="true">
        <i class="ri-arrow-right-s-line" aria-hidden="true"></i>
      </button>
      <span class="bj-tree__label">Racine</span>
    </div>
    <ul class="bj-tree__branch" role="group">
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <span class="bj-tree__label">Élément 1</span>
        </div>
      </li>
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <span class="bj-tree__label">Élément 2</span>
        </div>
      </li>
    </ul>
  </li>
</ul>

Cases à cocher + compact

Les modificateurs bj-tree--checkbox et bj-tree--compact peuvent être combinés sur la même racine bj-tree. Le composant Vue BjTreeview applique les mêmes classes sur le rendu HTML.

  • Dossiers
    • Courrier
    • Archives
<ul class="bj-tree bj-tree--checkbox bj-tree--compact" role="tree">
  <li class="bj-tree__item" role="treeitem">
    <div class="bj-tree__item-content">
      <button type="button" class="bj-tree__toggle" data-bj-tree-toggle aria-expanded="true">
        <i class="ri-arrow-right-s-line" aria-hidden="true"></i>
      </button>
      <input type="checkbox" class="bj-tree__checkbox" />
      <span class="bj-tree__label">Dossiers</span>
    </div>
    <ul class="bj-tree__branch" role="group">
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <input type="checkbox" class="bj-tree__checkbox" />
          <span class="bj-tree__label">Courrier</span>
        </div>
      </li>
      <li class="bj-tree__item" role="treeitem">
        <div class="bj-tree__item-content">
          <span class="bj-tree__toggle-spacer"></span>
          <input type="checkbox" class="bj-tree__checkbox" />
          <span class="bj-tree__label">Archives</span>
        </div>
      </li>
    </ul>
  </li>
</ul>

Combinaisons cases à cocher × compact

Quatre combinaisons : arborescence simple (sans case, espacement standard), cases à cocher seules, compact seul, puis bj-tree--checkbox bj-tree--compact ci-dessus pour les deux options à la fois — la même structure HTML s’applique dans chaque cas.

Simple
bj-tree
Cases
bj-tree--checkbox
Compact
bj-tree--compact
Cases + compact
bj-tree--checkbox + bj-tree--compact
<!--
  bj-tree
  bj-tree bj-tree--checkbox
  bj-tree bj-tree--compact
  bj-tree bj-tree--checkbox bj-tree--compact
-->

Classes CSS

Classe / attributDescription
bj-treeConteneur racine <code>&lt;ul&gt;</code> avec <code>role="tree"</code>.
bj-tree__itemÉlément <code>&lt;li&gt;</code> avec <code>role="treeitem"</code>.
bj-tree__item-contentLigne de contenu (toggle + label + icône).
bj-tree__branchSous-arbre <code>&lt;ul&gt;</code> avec <code>role="group"</code>.
bj-tree__toggleBouton expand/collapse (chevron).
data-bj-tree-toggleSur le bouton d’expansion : ancre pour le module JS treeview.
bj-tree__toggle-spacerEspace réservé pour aligner les feuilles sans toggle.
bj-tree__labelLibellé du nœud.
bj-tree__iconIcône optionnelle du nœud.
bj-tree__checkboxCase à cocher (avec <code>bj-tree--checkbox</code>).
bj-tree--checkboxActive les checkboxes et la propagation tri-état.
bj-tree--compactVariante compacte (padding réduit).

Accessibilité

Utilisez role="tree" sur le conteneur racine, role="treeitem" sur chaque nœud et role="group" sur les sous-arbres. Les boutons toggle doivent porter aria-expanded. La navigation clavier (flèches, Entrée, Espace) est recommandée pour la conformité WCAG.