diff options
author | dan <dan.abramov@gmail.com> | 2024-11-23 21:36:35 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-23 21:36:35 +0000 |
commit | aa58216b6de09d471fa94d42bd668e61043fc4f2 (patch) | |
tree | 008fc68bab80c515b350a214a31a596eb14a3f7d /src/components/Dialog/index.web.tsx | |
parent | fdc3f0f17ddedcdac736d2d21c65bc1ea1edbfdc (diff) | |
download | voidsky-aa58216b6de09d471fa94d42bd668e61043fc4f2.tar.zst |
Fix jumpy web animation for modal backdrop (#6673)
Diffstat (limited to 'src/components/Dialog/index.web.tsx')
-rw-r--r-- | src/components/Dialog/index.web.tsx | 43 |
1 files changed, 27 insertions, 16 deletions
diff --git a/src/components/Dialog/index.web.tsx b/src/components/Dialog/index.web.tsx index 41a39ffda..6b92eee3e 100644 --- a/src/components/Dialog/index.web.tsx +++ b/src/components/Dialog/index.web.tsx @@ -7,7 +7,6 @@ import { View, ViewStyle, } from 'react-native' -import Animated, {FadeIn, FadeInDown} from 'react-native-reanimated' import {msg} from '@lingui/macro' import {useLingui} from '@lingui/react' import {DismissableLayer} from '@radix-ui/react-dismissable-layer' @@ -42,7 +41,6 @@ export function Outer({ onClose, }: React.PropsWithChildren<DialogOuterProps>) { const {_} = useLingui() - const t = useTheme() const {gtMobile} = useBreakpoints() const [isOpen, setIsOpen] = React.useState(false) const {setDialogIsOpen} = useDialogStateControlContext() @@ -118,16 +116,7 @@ export function Outer({ gtMobile ? a.p_lg : a.p_md, {overflowY: 'auto'}, ]}> - <Animated.View - entering={FadeIn.duration(150)} - // exiting={FadeOut.duration(150)} - style={[ - web(a.fixed), - a.inset_0, - {opacity: 0.8, backgroundColor: t.palette.black}, - ]} - /> - + <Backdrop /> <View style={[ a.w_full, @@ -164,7 +153,7 @@ export function Inner({ useFocusGuards() return ( <FocusScope loop asChild trapped> - <Animated.View + <View role="dialog" aria-role="dialog" aria-label={label} @@ -174,8 +163,6 @@ export function Inner({ onClick={stopPropagation} onStartShouldSetResponder={_ => true} onTouchEnd={stopPropagation} - entering={FadeInDown.duration(100)} - // exiting={FadeOut.duration(100)} style={flatten([ a.relative, a.rounded_md, @@ -188,6 +175,8 @@ export function Inner({ shadowColor: t.palette.black, shadowOpacity: t.name === 'light' ? 0.1 : 0.4, shadowRadius: 30, + // @ts-ignore web only + animation: 'fadeIn ease-out 0.1s', }, flatten(style), ])}> @@ -201,7 +190,7 @@ export function Inner({ {children} </View> </DismissableLayer> - </Animated.View> + </View> </FocusScope> ) } @@ -268,3 +257,25 @@ export function Close() { export function Handle() { return null } + +function Backdrop() { + const t = useTheme() + return ( + <View + style={{ + opacity: 0.8, + }}> + <View + style={[ + a.fixed, + a.inset_0, + { + backgroundColor: t.palette.black, + // @ts-ignore web only + animation: 'fadeIn ease-out 0.15s', + }, + ]} + /> + </View> + ) +} |