From 3b8b5622688807f6d04c52cbd4d6977b203b75b3 Mon Sep 17 00:00:00 2001 From: Ansh Date: Fri, 28 Jul 2023 14:00:37 -0700 Subject: [APP-737] Accessible native dropdown menu (#988) * fix comments * add zeego package * get basic native dropdown working * add separator and icon components * refined native dropdown component * add android build properties to app.json * move `PostDropdownBtn` to its own component * fix selectors issue * move `PostDropdownBtn` to its own component * fix hitslop * fix post dropdown hitslop * fix android dropdown icons * move `UserAvatar.tsx` to native dropdown * use native dropdown in `ProfileHeader.tsx` * use native dropdown in `PostThreadItem.tsx` * use native dropdown in `UserBanner.tsx` * use native dropdown in `CustomFeed.tsx` * replace `testId` with `testID` (which is what is used everywhere) * move `Settings.tsx` to use native dropdown * create jest mocks for zeego * create jest mock for `zeego/dropdown-menu` * web styles for native dropdown * remove example native dropdown * adjust web styles * fix propagation * fix pressable in `Settings.tsx` * animate dropdown on web * add keyboard nav and hover styles * add hitslop to constants * add comments to NativeDropdown component * temporarily removed android icons * add testID to PostDropdownBtn * add testID back to all NativeDropdown button implementations * add postDropdownBtn testID * add testID to dropdown items * remove testID from dropdown menu item * refactor home-screen tests for native dropdown * refactor profile-screen tests for native dropdown * refactor thread-muting tests for native dropdown * refactor thread-screen tests for native dropdown * fix dropdown color for post dropdown button * remove icons from android dropdown menu * fix `create-account.test.ts` * fix `invite-codes.test.ts` --- src/lib/constants.ts | 14 ++ src/view/com/auth/onboarding/Welcome.tsx | 9 +- src/view/com/composer/photos/OpenCameraBtn.tsx | 6 +- src/view/com/composer/photos/SelectPhotoBtn.tsx | 5 +- .../ImageViewing/components/ImageDefaultHeader.tsx | 3 +- src/view/com/pager/FeedsTabBarMobile.tsx | 5 +- src/view/com/post-thread/PostThreadItem.tsx | 12 +- src/view/com/profile/ProfileHeader.tsx | 58 ++++- src/view/com/search/HeaderWithInput.tsx | 5 +- src/view/com/util/UserAvatar.tsx | 128 ++++++----- src/view/com/util/UserBanner.tsx | 134 ++++++----- src/view/com/util/forms/DropdownButton.tsx | 125 +---------- src/view/com/util/forms/NativeDropdown.tsx | 250 +++++++++++++++++++++ src/view/com/util/forms/PostDropdownBtn.tsx | 148 ++++++++++++ .../com/util/load-latest/LoadLatestBtn.web.tsx | 7 +- .../com/util/load-latest/LoadLatestBtnMobile.tsx | 5 +- src/view/com/util/post-ctrls/PostCtrls.tsx | 54 ++--- src/view/com/util/post-ctrls/RepostButton.tsx | 3 +- src/view/screens/CustomFeed.tsx | 27 ++- src/view/screens/Settings.tsx | 20 +- 20 files changed, 693 insertions(+), 325 deletions(-) create mode 100644 src/view/com/util/forms/NativeDropdown.tsx create mode 100644 src/view/com/util/forms/PostDropdownBtn.tsx (limited to 'src') diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 34da35e4f..001cdf8c3 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -1,3 +1,5 @@ +import {Insets} from 'react-native' + const HELP_DESK_LANG = 'en-us' export const HELP_DESK_URL = `https://blueskyweb.zendesk.com/hc/${HELP_DESK_LANG}` @@ -134,3 +136,15 @@ export function LINK_META_PROXY(serviceUrl: string) { } export const STATUS_PAGE_URL = 'https://status.bsky.app/' + +// Hitslop constants +export const createHitslop = (size: number): Insets => ({ + top: size, + left: size, + bottom: size, + right: size, +}) +export const HITSLOP_10 = createHitslop(10) +export const HITSLOP_20 = createHitslop(20) +export const HITSLOP_30 = createHitslop(30) +export const BACK_HITSLOP = HITSLOP_30 diff --git a/src/view/com/auth/onboarding/Welcome.tsx b/src/view/com/auth/onboarding/Welcome.tsx index e7c068ea0..87435c88a 100644 --- a/src/view/com/auth/onboarding/Welcome.tsx +++ b/src/view/com/auth/onboarding/Welcome.tsx @@ -10,7 +10,7 @@ export const Welcome = ({next}: {next: () => void}) => { const pal = usePalette('default') return ( - + Welcome to Bluesky @@ -52,7 +52,12 @@ export const Welcome = ({next}: {next: () => void}) => { -