fix: only close drawer if directly tapping backdrop (#3534)

zio/stable
Mary 2024-04-14 07:13:05 +07:00 committed by GitHub
parent cb3f246822
commit 23056daa29
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 13 additions and 7 deletions

View File

@ -1,5 +1,5 @@
import React, {useEffect} from 'react'
import {StyleSheet, TouchableOpacity, View} from 'react-native'
import {StyleSheet, TouchableWithoutFeedback, View} from 'react-native'
import {msg} from '@lingui/macro'
import {useLingui} from '@lingui/react'
import {useNavigation} from '@react-navigation/native'
@ -51,15 +51,21 @@ function ShellInner() {
<PortalOutlet />
{!isDesktop && isDrawerOpen && (
<TouchableOpacity
onPress={() => setDrawerOpen(false)}
style={styles.drawerMask}
<TouchableWithoutFeedback
onPress={ev => {
// Only close if press happens outside of the drawer
if (ev.target === ev.currentTarget) {
setDrawerOpen(false)
}
}}
accessibilityLabel={_(msg`Close navigation footer`)}
accessibilityHint={_(msg`Closes bottom navigation bar`)}>
<View style={styles.drawerContainer}>
<DrawerContent />
<View style={styles.drawerMask}>
<View style={styles.drawerContainer}>
<DrawerContent />
</View>
</View>
</TouchableOpacity>
</TouchableWithoutFeedback>
)}
</>
)