Следует за перетаскиванием, сопротивляется за самой большой точкой остановки и останавливается с учётом скорости отпускания; взмах сдвигает на одну точку или закрывает.
Касания передаются прокручиваемому содержимому: при потягивании вниз содержимое сначала прокручивается в начало, а потом двигается шторка.
Точки остановки — доли экрана, пиксели или '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 сохраняют свои жесты, поэтому шторку тянут за ручку, заголовок и другие статичные области.