Fix animations
This commit is contained in:
@@ -39,13 +39,17 @@ export function Outer({
|
|||||||
const t = useTheme()
|
const t = useTheme()
|
||||||
const {gtMobile} = useBreakpoints()
|
const {gtMobile} = useBreakpoints()
|
||||||
const [isOpen, setIsOpen] = React.useState(false)
|
const [isOpen, setIsOpen] = React.useState(false)
|
||||||
|
const [isVisible, setIsVisible] = React.useState(true)
|
||||||
|
|
||||||
const open = React.useCallback(() => {
|
const open = React.useCallback(() => {
|
||||||
setIsOpen(true)
|
setIsOpen(true)
|
||||||
}, [setIsOpen])
|
}, [setIsOpen])
|
||||||
|
|
||||||
const close = React.useCallback(() => {
|
const close = React.useCallback(async () => {
|
||||||
|
setIsVisible(false)
|
||||||
|
await new Promise(resolve => setTimeout(resolve, 150))
|
||||||
setIsOpen(false)
|
setIsOpen(false)
|
||||||
|
setIsVisible(true)
|
||||||
onClose?.()
|
onClose?.()
|
||||||
}, [onClose, setIsOpen])
|
}, [onClose, setIsOpen])
|
||||||
|
|
||||||
@@ -88,16 +92,18 @@ export function Outer({
|
|||||||
a.flex_row,
|
a.flex_row,
|
||||||
a.justify_center,
|
a.justify_center,
|
||||||
]}>
|
]}>
|
||||||
<Animated.View
|
{isVisible && (
|
||||||
entering={FadeIn.duration(200)}
|
<Animated.View
|
||||||
exiting={FadeOut.duration(200)}
|
entering={FadeIn.duration(150)}
|
||||||
style={[
|
exiting={FadeOut.duration(150)}
|
||||||
a.absolute,
|
style={[
|
||||||
a.inset_0,
|
a.absolute,
|
||||||
t.atoms.bg_contrast_200,
|
a.inset_0,
|
||||||
{opacity: 0.8},
|
t.atoms.bg_contrast_200,
|
||||||
]}
|
{opacity: 0.8},
|
||||||
/>
|
]}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
<View
|
<View
|
||||||
style={[
|
style={[
|
||||||
@@ -114,12 +120,17 @@ export function Outer({
|
|||||||
onStartShouldSetResponder={_ => true}
|
onStartShouldSetResponder={_ => true}
|
||||||
onTouchEnd={stopPropagation}>
|
onTouchEnd={stopPropagation}>
|
||||||
<FocusScope loop enabled trapped>
|
<FocusScope loop enabled trapped>
|
||||||
<Animated.View
|
{isVisible ? (
|
||||||
entering={FadeInDown}
|
<Animated.View
|
||||||
exiting={FadeOut}
|
aria-role="dialog"
|
||||||
aria-role="dialog">
|
entering={FadeInDown.duration(100)}
|
||||||
{children}
|
exiting={FadeOut.duration(100)}
|
||||||
</Animated.View>
|
style={{width: '100%'}}>
|
||||||
|
{children}
|
||||||
|
</Animated.View>
|
||||||
|
) : (
|
||||||
|
<View />
|
||||||
|
)}
|
||||||
</FocusScope>
|
</FocusScope>
|
||||||
</View>
|
</View>
|
||||||
</View>
|
</View>
|
||||||
|
|||||||
Reference in New Issue
Block a user