Aller au contenu principal

Menu déroulant

Replie un menu d'actions sous un déclencheur et se déploie au survol ou au clic. Le menu a la sémantique role="menu" et prend en charge une navigation clavier complète (touches directionnelles / Début / Fin / Entrée / Échap) ainsi que le roving tabindex.

Utilisation de base​

Déclenchement au survol / au clic et usage impératif
import { LhButton, LhDropdown, LhDropdownItem } from '@lh-ui/react'

export default function Demo() {
return (
<LhDropdown
onCommand={(command) => console.log(command)}
dropdown={
<>
<LhDropdownItem command="new">Nouveau</LhDropdownItem>
<LhDropdownItem command="delete" disabled>
Supprimer
</LhDropdownItem>
</>
}
>
<LhButton>Déplier</LhButton>
</LhDropdown>
)
}
PropDescriptionTypeOptionsValeur par défaut
childrenNœud déclencheurReactNode——
dropdownContenu du menu (liste de LhDropdownItem, équivalent du slot #dropdown de plus)ReactNode——
triggerMode de déclenchement'hover' | 'click' | 'contextmenu'—'hover'
placementPosition d'affichageLhDropdownPlacementtop / bottom (avec -start / -end), etc.'bottom-start'
disabledDésactivéboolean—false
visibleAffichage contrôléboolean——
defaultVisibleAffichage par défaut en mode non contrôléboolean—false
hideOnClickFermeture automatique après clic sur un élément de menuboolean—true
maxHeightHauteur maximale du menu (défilement au-delà)string | number——
popperClassClasse personnalisée du menustring——
themeVarsVariables de thème au niveau du composantRecord<string, string>——
sxRaccourci de mise en page (appliqué au déclencheur)SxProps——

Événements de Dropdown​

ÉvénementDescriptionSignature du rappelÉquivalent Vue
onCommandClic sur un élément de menu : émet le command de cet élément(command: string | number) => voidcommand
onVisibleChangeChangement d'affichage(visible: boolean) => voidupdate:visible
onClickOutsideClic en dehors du menu (provoque également sa fermeture)() => voidclick-outside
PropDescriptionTypeOptionsValeur par défaut
childrenContenu de l'élément de menuReactNode——
commandIdentifiant de commande, émis avec onCommandstring | number——
disabledDésactivé ou non (ne répond pas au clic et exclu de la navigation clavier)boolean—false
dividedAfficher ou non un trait de séparationboolean—false

Événements de DropdownItem​

ÉvénementDescriptionSignature du rappelÉquivalent Vue
onClickClic sur l'élément de menu (peut cohabiter avec onCommand)() => void—

ref​

forwardRef<LhDropdownInstance>. LhDropdownInstance expose show() / hide() / toggle() / isVisible.

Navigation clavier (modèle de menu APG)

À l'ouverture du menu, le focus se place sur le premier élément actif ; Flèche haut / Flèche bas se déplacent en boucle en sautant les éléments désactivés, Début / Fin atteignent les extrémités, Entrée / Espace activent l'élément courant, et Échap ferme le menu et rend le focus au déclencheur. Seul l'élément d'ancrage porte tabIndex={0}, les autres -1 (roving tabindex).

Slot → prop

plus porte le menu via le slot #dropdown ; côté React il devient la prop dropdown de même nom ; le déclenchement contextmenu empêche le menu contextuel natif du navigateur.

Styles​

import '@lh-ui/react/style/dropdown'