Tous les composants

MotionSheet

Un panneau inférieur, un panneau supérieur ou un tiroir latéral à crans, avec gestes vifs et relais vers le défilement.

WebReact NativeSuperpositions

Essayer

Préparation de l’exemple…

Usage minimal

Filters.jsx
<MotionSheet open={open} onOpenChange={setOpen} detents={[0.45, 0.92]}>
  <FilterList />
</MotionSheet>;

Ce qu’il gère pour vous

  • 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

PropTypeDéfautDescription
openbooleanfalseIndique si le panneau est affiché.
onOpenChange(open) => voidS’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'.
detentnumberIndex de cran contrôlé.
defaultDetentnumber0Index de cran utilisé à l’ouverture sans detent.
onDetentChange(index) => voidS’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.
modalbooleantrueAjoute un fond, garde le focus à l’intérieur et rend la page inerte.
dismissiblebooleantrueUn glisser au-delà du plus petit cran, le fond et Échap le ferment.
backdropClassNamestringClasse du fond ; backdropStyle définit son style en ligne.
transitionTransitionspringUne 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.

Utilisé dans ces exemples

Rechercher

Tapez pour rechercher dans la documentation.