Aller au contenu principal

Boîte de dialogue

Informe l'utilisateur et porte les actions associées tout en préservant l'état de la page courante.

Utilisation de base​

Boîte de dialogue contrôlée
import { useState } from 'react'
import { LhButton, LhDialog } from '@lh-ui/react'

export default function Demo() {
const [open, setOpen] = useState(false)

return (
<>
<LhButton type="primary" onClick={() => setOpen(true)}>
Ouvrir la boîte de dialogue
</LhButton>
<LhDialog
open={open}
title="Information"
width="420px"
footer={
<>
<LhButton onClick={() => setOpen(false)}>Annuler</LhButton>
<LhButton type="primary" onClick={() => setOpen(false)}>Confirmer</LhButton>
</>
}
onClose={() => setOpen(false)}
>
<p>Ceci est une boîte de dialogue contrôlée.</p>
</LhDialog>
</>
)
}

Dialog Props​

PropDescriptionTypeOptionsValeur par défaut
openOuvert ou non (purement contrôlé)boolean—false
titleTitre (sert également de repli aria-label en l'absence de header)string——
widthLargeurstring | number——
fullscreenPlein écranboolean—false
showCloseAfficher le bouton de fermetureboolean—true
closeOnClickModalFermer au clic sur le masqueboolean—true
closeOnPressEscapeFermer à l'appui sur Échapboolean—true
draggableDéplaçable (glisser la barre de titre)boolean—false
centerTitre et pied centrésboolean—false
positionDécalage de positionnement personnalisé{ top?: string; left?: string }——
lockScrollVerrouiller le défilement de body à l'ouvertureboolean—true
beforeCloseInterception avant fermeture (ne se ferme pas en cas de retour false / Promise<false>)() => boolean | Promise<boolean>——
topDistance par rapport au sommetstring——
zIndexNiveau z (par défaut, allocation croissante via useLhZIndex)number——
headerEn-tête personnalisé (remplace title)ReactNode——
footerPied personnaliséReactNode——
themeVarsVariables de thème au niveau du composantRecord<string, string>——
sxRaccourci de mise en pageSxProps——

Événements de Dialog​

ÉvénementDescriptionSignature du rappelÉquivalent Vue
onCloseDemande de fermeture (masque / Échap / bouton de fermeture ; non appelé après interception par beforeClose)() => voidupdate:modelValue
onOpenDéclenché à l'ouverture (DOM monté)() => void@open
onOpenedDéclenché à la fin de la transition d'ouverture() => void@opened
onCloseStartDéclenché au début de la transition de fermeture() => void@close
onClosedDéclenché à la fin de la transition de fermeture (DOM démonté)() => void@closed

ref​

forwardRef<HTMLDivElement>. LhDialogInstance n'expose actuellement pas de méthode impérative.

Sémantique purement contrôlée

Contrairement à plus, le Dialog de cette bibliothèque n'a pas d'état intermédiaire isVisible interne : open est entièrement détenu par un état externe, et tout chemin de fermeture ne fait qu'appeler onClose. Voir le Guide de migration.

Échap avec plusieurs couches

useLhOverlayStack maintient une pile d'ouverture : Échap ne ferme que la couche supérieure, évitant qu'une seule pression ne ferme toutes les couches.

Styles​

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