Skip to content

Commit

Permalink
Fix avi button hitslops (#6662)
Browse files Browse the repository at this point in the history
* 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
  • Loading branch information
gaearon authored Nov 23, 2024
1 parent e428474 commit b1c1c49
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 21 deletions.
9 changes: 8 additions & 1 deletion src/view/com/posts/AviFollowButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
2 changes: 1 addition & 1 deletion src/view/com/posts/FeedItem.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -618,10 +618,10 @@ const styles = StyleSheet.create({
layout: {
flexDirection: 'row',
marginTop: 1,
gap: 10,
},
layoutAvi: {
paddingLeft: 8,
paddingRight: 10,
position: 'relative',
zIndex: 999,
},
Expand Down
24 changes: 5 additions & 19 deletions src/view/com/util/forms/NativeDropdown.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
) : (
Expand Down

0 comments on commit b1c1c49

Please sign in to comment.