Menu déroulant

Menu contextuel d’actions ou de liens, déclenché par un bouton. Navigation clavier complète avec role="menu" et role="menuitem".

Vue d’ensemble

Le composant Vue BjDropdown expose align: 'left' | 'right', direction: 'down' | 'up', size: 'sm' | 'md' | 'lg' et md (défaut down ) comme sur le HTML ci-dessous.

Alignement à gauche (défaut)

Le menu s’aligne sur le bord gauche du trigger ; ouverture vers le bas.

<div class="bj-dropdown" data-bj-dropdown>
  <button type="button" class="bj-btn bj-dropdown__trigger">Menu</button>
  <ul class="bj-dropdown__menu" role="menu">…</ul>
</div>

Alignement à droite

Classe bj-dropdown--right pour ancrer le panneau au bord droit (barres d’outils, menus profil).

<div class="bj-dropdown bj-dropdown--right" data-bj-dropdown>
  <button type="button" class="bj-btn bj-dropdown__trigger">Profil</button>
  <ul class="bj-dropdown__menu" role="menu">…</ul>
</div>

Ouverture vers le bas (défaut)

Sans bj-dropdown--up , le panneau s’ouvre sous le bouton (comportement attendu dans la majorité des formulaires).

<div class="bj-dropdown" data-bj-dropdown>
  <!-- ouverture vers le bas : aucune classe de direction -->
</div>

Ouverture vers le haut

Utile lorsque le trigger est proche du bas de l’écran.

<div class="bj-dropdown bj-dropdown--up" data-bj-dropdown>
  <button type="button" class="bj-btn bj-dropdown__trigger">Vers le haut</button>
  <ul class="bj-dropdown__menu" role="menu">…</ul>
</div>

Combinaison haut + droite

Les modificateurs se cumulent sur bj-dropdown.

<div class="bj-dropdown bj-dropdown--up bj-dropdown--right" data-bj-dropdown>
  …
</div>

Taille compacte (sm)

Réduit la largeur minimale et le padding des entrées.

<div class="bj-dropdown bj-dropdown--sm" data-bj-dropdown>…</div>

Taille médiane (md)

Comportement par défaut : aucune classe de taille (équivalent size: 'md' sur le composant Vue).

<div class="bj-dropdown" data-bj-dropdown>
  <!-- md = défaut, pas de classe de taille -->
</div>

Taille large (lg)

Menu plus large et lignes plus confortables (formulaires denses, libellés longs).

<div class="bj-dropdown bj-dropdown--lg" data-bj-dropdown>…</div>

Référence des classes

Classe / attributDescription
bj-dropdownConteneur principal.
bj-dropdown__triggerBouton déclencheur.
bj-dropdown__menuListe déroulante.
data-bj-expandedSur le menu ouvert : requis pour l’animation et display:block (posé par le script ou en démo statique).
bj-dropdown__itemÉlément de menu.
bj-dropdown__dividerSéparateur horizontal.
bj-dropdown__headerTitre de groupe dans le menu.
bj-dropdown--rightAligne le menu à droite.
bj-dropdown--upOuvre le menu vers le haut.
bj-dropdown--smVariante compacte.
(aucune classe de taille)Largeur et confort par défaut (aucune classe de taille).
bj-dropdown--lgVariante large (min-width et padding accrus).

Accessibilité

Le trigger porte aria-haspopup="true" et aria-expanded . Les items ont role="menuitem" . Navigation clavier : flèches Haut/Bas, Home/End, Échap pour fermer.