Для того, чтобы твой компонент стал popup, нужно воспользоваться хуком const popupContext = usePopups()
, который имеет такие методы, как:
Важно!
Popup
не изменяется при изменении props, если есть данные, изменение которых отображается в popup, лучше заводить state внутри popup,
если это невозможно, то использование popupContext
является некорректным.
popups
一 отдает массив твоих открытых popups;openPopup
一 в метод ты передаешь{Content: YourPopup}
, после чего на экране открываетсяYourPopup
и в массив выше записываетсяid
иonClose
;closePopup
一 принимает в себяid
, после чего удаляется из массива popup и закрывается на экране;closeAllPopups
一 закрывает все popups на экране и очищает массив.
Когда YourPopup
открывается через Content
, ему автоматически передаются пропсы id
и onClose
.
В нашей дизайн-системе были созданы определенные base
, которые ты можешь использовать внутри твоего YourPopup
:
PopupBase
ModalBase
ActionSheetsBase
SnackbarBase
TooltipBase
В пакете используется либа react-native-safe-area-context
для определения высоты экрана. Чтобы она работала, необходимо в корневом файле обернуть всё: <SafeAreaProvider>``</SafeAreaProvider>
.
Это обертка с дополнительным пропсом overlayStyle
, который по дефолту занимает весь экран, вне popup действует мимоклик. Используется в каждом base
кроме SnackbarBase
.
Внутри созданы дефолтные компоненты, которые ты можешь вызвать через точку:
ModalBase.Title
一 заголовок модалки (deprecate).ModalBase.DescriptionText
一 подзаголовок модалки (deprecate).ModalBase.CloseIcon
一 иконка "крестик" в верхнем правом углу, закрывает модалку.ModalBase.VerticalButtonsView
一 обертка, которая принимает в себяButtons
и вертикально их отображает.ModalBase.HorizontalButtonsView
一 внутри себя содержит горизонтальное отображение двух кнопок, пропсы которым нужно передать:textLeft
,onPressLeft
,textLeft
,textRight
,typeRight
,onPressRight
.ModalBase.AlertContent
一 иконка внутри круга с background. По дефолту будет отображен check-alert, но можно передать пропсыname
,color
,size
,style
, и ты получишь свою иконку алерта.ModalBase.VerticalButton
一 кнопка, которая по дизайну используется вVerticalButtonsView
. В неё передаются необходимые пропсы для кнопки, а в стиль передаетсяmarginBottom: rem(12)
для того, чтобы она подвинулась от соседней кнопки.ModalBase.ImageView
一 картинка, которая по дефолту имеет отступ и отцентрована. В нее также можно передать свой стиль.ModalBase.TextContent
一 объединениеtitle
иdescriptionText
.
По краям ModalBase
имеет отступ в 20, а между элементами 24, но как известно, все стили containerStyle
можно передать и всё можно заменить.
По дефолту располагается внизу экрана. Имеет также дефолтный компонент:
ActionSheetBase.Item
一 элемент, принимающий в себяitemType
(firstItem
,innerItem
,lastItem
,singleItem
,cancelItem
),onPress
,style
,title
,textFont
,disabled
,leftIcon
,radio
,checkboxList
.
У типаcancelItem
применяетсяfont
一disabled ? 'Medium-Muted-M' : 'Medium-Accent-M'
. У других типовfont
можно менять с помощьюtextFont
.
Единственный из Base
, не использующий обертку PopupBase
, потому что здесь мимоклик не нужен. Snackbar
закрывается по таймеру.
Что можно передать:
onClose
一 как любомуbase
;containerStyle
一 стиль контейнеру;position
一 расположение: либоtop
(отступ 20), либоbottom
(отступ 10);timeShow
一 миллисекунды, через которые необходимо, чтобыSnackbar
закрылся (по дефолту 5000).
Почти все пропсы обязательные:
- Стандартные, которые передаются всем
base
一onClose
,containerStyle
(опциональный). position
一 расположение тултипа: либо когда стрелка располагается сверху тултипа(top
), а значит тултип снизу, либо когда стрелка снизу тултипа(bottom
), тултип получается сверху.placement
一 расположение стрелки: в начале подсказки, в середине и в конце, по краю элемента, от которого доступен ref.refCurrent
一 самое важное, ты должен отправить ref кнопки. Так мы определяем координаты кнопки и связываем тултип с ними. Кнопка должна быть обернута вForwardRef
.timeShow
(опциональный) 一 если отправить время, то тултип закроется по таймеру.
Созданы дефолтные компоненты:
TooltipBase.Title
一 заголовок тултипа.TooltipBase.DescriptionText
一 подзаголовок.TooltipBase.Arrow
一 стрелочка. На данный момент сделана острой, по дизайну закругленная (когда-нибудь возьмется в работу);TooltipBase.LeftButton
一 дефолтная кнопка, располагающаяся слева в подсказке с отступом spaces8.