Іде за перетягуванням, чинить опір за найбільшою точкою зупинки й зупиняється з урахуванням швидкості відпускання; змах зсуває на одну точку чи закриває.
Дотики передаються прокручуваному вмісту: під час потягування вниз вміст спершу прокручується на початок, а вже потім рухається шторка.
Точки зупинки — частки екрана, пікселі чи 'content' для природного розміру вмісту.
Модальна шторка тримає фокус усередині, робить сторінку неактивною й закривається за Escape чи натисканням на тло.
Для чого підходить
Панель фільтрів.
Меню «Поділитися».
Навігаційна панель із side="start".
Props
Проп
Тип
Типово
Опис
open
boolean
false
Чи показано шторку.
onOpenChange
(open) => void
Виконується з false, коли шторку закривають перетягуванням, дотиком чи Escape.
detents
(number | 'content')[]
['content']
Розміри зупинки: частка екрана, пікселі чи 'content'.
detent
number
Керований індекс точки зупинки.
defaultDetent
number
0
Індекс точки зупинки під час відкриття без detent.
onDetentChange
(index) => void
Виконується з індексом точки зупинки, на якій зупинилася шторка.
side
'bottom' | 'top' | 'start' | 'end'
'bottom'
Край, з якого з’являється шторка.
modal
boolean
true
Додає тло, тримає фокус усередині й робить сторінку неактивною.
dismissible
boolean
true
Перетягування за найменшу точку зупинки, тло й Escape закривають її.
backdropClassName
string
Клас для тла; backdropStyle задає його вбудований стиль.
transition
Transition
spring
Крива timing { duration, easing } чи пружина { tempo: 'spring', spring }. Після переривання пружини зберігають інерцію.
Решта props передається відрендереному елементу, тож className, style і обробники подій працюють як завжди.
Веб і React Native
У вебі модальна шторка — нативний dialog; панель — flex-колонка, яку ви стилізуєте через className.
У React Native вона рендериться в прозорому Modal і закривається кнопкою «Назад». Внутрішні ScrollView зберігають свої жести, тож шторку тягнуть за ручку, заголовок та інші статичні ділянки.