Suit les glisser, résiste au-delà de son plus grand cran et se pose selon la vitesse de relâchement ; un geste vif le déplace d’un cran ou le ferme.
Les glisser tactiles passent le relais au contenu défilant : tirer vers le bas fait remonter le contenu en haut avant que le panneau ne bouge.
Des crans en fractions de l’écran, en pixels, ou 'content' pour la taille naturelle du contenu.
Un panneau modal garde le focus à l’intérieur, rend la page inerte et se ferme avec Échap ou le fond.
À utiliser pour
Un panneau de filtres.
Un menu de partage.
Un tiroir de navigation avec side="start".
Props
Prop
Type
Défaut
Description
open
boolean
false
Indique si le panneau est affiché.
onOpenChange
(open) => void
S’exécute avec false quand le panneau est fermé par un glisser, un appui ou Échap.
detents
(number | 'content')[]
['content']
Tailles de repos : une fraction de l’écran, des pixels ou 'content'.
detent
number
Index de cran contrôlé.
defaultDetent
number
0
Index de cran utilisé à l’ouverture sans detent.
onDetentChange
(index) => void
S’exécute avec l’index du cran où le panneau se pose.
side
'bottom' | 'top' | 'start' | 'end'
'bottom'
Le bord d’où vient le panneau.
modal
boolean
true
Ajoute un fond, garde le focus à l’intérieur et rend la page inerte.
dismissible
boolean
true
Un glisser au-delà du plus petit cran, le fond et Échap le ferment.
backdropClassName
string
Classe du fond ; backdropStyle définit son style en ligne.
transition
Transition
spring
Une courbe de temps { duration, easing } ou un ressort { tempo: 'spring', spring }. Les ressorts gardent leur élan quand ils sont interrompus.
Les autres props vont à l’élément rendu : className, style et les gestionnaires d’événements fonctionnent comme d’habitude.
Web et React Native
Sur le web, un panneau modal est un dialog natif ; le panneau est une colonne flex que vous stylez avec className.
Sur React Native, il est rendu dans un Modal transparent et le bouton retour le ferme. Les ScrollView internes gardent leurs propres gestes : le panneau se fait glisser depuis sa poignée, son en-tête et ses autres zones fixes.