Fix animations

This commit is contained in:
Eric Bailey
2024-01-11 13:05:32 -06:00
parent 1da54e5364
commit c100f04a68
+28 -17
View File
@@ -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>