diff options
author | dan <dan.abramov@gmail.com> | 2024-11-23 19:13:17 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-11-23 19:13:17 +0000 |
commit | b1c1c49897fa291910a8dece9725190f21457132 (patch) | |
tree | 0083f0f3ef3063995f01c8ed6fa6bf6187dde46f /src | |
parent | e4284744785495c5832234c79703c1a2f8052b8b (diff) | |
download | voidsky-b1c1c49897fa291910a8dece9725190f21457132.tar.zst |
Fix avi button hitslops (#6662)
* Remove web hack from non-web file * Remove hitSlop on the wrong Pressable It is not doing anything useful. * Extend avi column to prevent hit rect clipping You can't click outside the parent on Android. * Bump pressed opacity to .8 * Slightly reduce avi button hitslops * Asymmetric hit slop
Diffstat (limited to 'src')
-rw-r--r-- | src/view/com/posts/AviFollowButton.tsx | 9 | ||||
-rw-r--r-- | src/view/com/posts/FeedItem.tsx | 2 | ||||
-rw-r--r-- | src/view/com/util/forms/NativeDropdown.tsx | 24 |
3 files changed, 14 insertions, 21 deletions
diff --git a/src/view/com/posts/AviFollowButton.tsx b/src/view/com/posts/AviFollowButton.tsx index 53e2146f4..1c894bffe 100644 --- a/src/view/com/posts/AviFollowButton.tsx +++ b/src/view/com/posts/AviFollowButton.tsx @@ -95,7 +95,14 @@ export function AviFollowButton({ <NativeDropdown items={items}> <View style={[ - {width: 30, height: 30}, + { + // An asymmetric hit slop + // to prioritize bottom right taps. + paddingTop: 2, + paddingLeft: 2, + paddingBottom: 6, + paddingRight: 6, + }, a.align_center, a.justify_center, a.rounded_full, diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index 049748754..c04921c68 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -618,10 +618,10 @@ const styles = StyleSheet.create({ layout: { flexDirection: 'row', marginTop: 1, - gap: 10, }, layoutAvi: { paddingLeft: 8, + paddingRight: 10, position: 'relative', zIndex: 999, }, diff --git a/src/view/com/util/forms/NativeDropdown.tsx b/src/view/com/util/forms/NativeDropdown.tsx index 22237f5e1..8fc9be6da 100644 --- a/src/view/com/util/forms/NativeDropdown.tsx +++ b/src/view/com/util/forms/NativeDropdown.tsx @@ -5,10 +5,9 @@ import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome' import * as DropdownMenu from 'zeego/dropdown-menu' import {MenuItemCommonProps} from 'zeego/lib/typescript/menu' -import {HITSLOP_10} from '#/lib/constants' import {usePalette} from '#/lib/hooks/usePalette' import {useTheme} from '#/lib/ThemeContext' -import {isIOS, isWeb} from '#/platform/detection' +import {isIOS} from '#/platform/detection' import {Portal} from '#/components/Portal' // Custom Dropdown Menu Components @@ -30,31 +29,18 @@ export const DropdownMenuTrigger = DropdownMenu.create( (props: TriggerProps) => { const theme = useTheme() const defaultCtrlColor = theme.palette.default.postCtrl - const ref = React.useRef<View>(null) - - // HACK - // fire a click event on the keyboard press to trigger the dropdown - // -prf - const onPress = isWeb - ? (evt: any) => { - if (evt instanceof KeyboardEvent) { - // @ts-ignore web only -prf - ref.current?.click() - } - } - : undefined return ( + // This Pressable doesn't actually do anything other than + // provide the "pressed state" visual feedback. <Pressable testID={props.testID} accessibilityRole="button" accessibilityLabel={props.accessibilityLabel} accessibilityHint={props.accessibilityHint} - style={({pressed}) => [{opacity: pressed ? 0.5 : 1}]} - hitSlop={HITSLOP_10} - onPress={onPress}> + style={({pressed}) => [{opacity: pressed ? 0.8 : 1}]}> <DropdownMenu.Trigger action="press"> - <View ref={ref}> + <View> {props.children ? ( props.children ) : ( |