Skip to content

4153: Improve bottomSheet handle - #4274

Open
bahaaTuffaha wants to merge 5 commits into
mainfrom
4153-improve-bottom-sheet-handle
Open

4153: Improve bottomSheet handle#4274
bahaaTuffaha wants to merge 5 commits into
mainfrom
4153-improve-bottom-sheet-handle

Conversation

@bahaaTuffaha

Copy link
Copy Markdown
Contributor

Short Description

Improve the visibility and affordance of the bottom sheet by:

  • increasing the size of the draggable area,
  • increasing the default height of the bottom sheet on mobile,
  • replacing the drag handle with an upward chevron,

Proposed Changes

Native:

  • Replaced the grey pill Handle styling with a centered Pressable padded 16px vertically.
  • Added an isFullscreen prop (default false) to flip the Chevron when the sheet reaches full screen.
  • Bumped bottomSheetHandle.height from 40 to 56 .
  • Labelled the Handle with accessibilityLabel={t('handle')}

Web:

  • Changed bottomSheetHandleHeight from 40 to 56 and midSnapPercentage from 0.35 to 0.5
  • Imported KeyboardArrowUpIcon and KeyboardArrowDownIcon from @mui/icons-material.
  • Introduced an isFullscreen state after scrollElement and an updateFullscreen handler wired to onSpringEnd that flips it when the sheet's height reaches the max snap point.
  • Reduced [data-rsbs-header] padding-top from 24px to 16px so the handle icon centers vertically.
  • Added content: none to [data-rsbs-header]::before to hide the library's default handle.

Side Effects

N/A

Checklist

Testing

  • go to places and test the handle's interactivity.
  • test the full screen behaviour.
  • test contrast mode.

Resolved Issues

Fixes: #4153


@lunars97 lunars97 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for effort! Looks almost perfect 😻 , on iOS the arrow looks not that noticeable I would say, maybe we could highlight it a little bit by setting a light background color or making the arrow bolder 💭 (or all together?). Currently is looks like this on iOS:
Image
what do you think, @ulyanahoy-cloud , about it?

Comment thread translations/src/translations.json Outdated
@bahaaTuffaha

Copy link
Copy Markdown
Contributor Author

Thank you for effort! Looks almost perfect 😻 , on iOS the arrow looks not that noticeable I would say, maybe we could highlight it a little bit by setting a light background color or making the arrow bolder 💭 (or all together?). Currently is looks like this on iOS:

How about 32px size for the icon?

Simulator Screenshot - iPhone 17 Pro - 2026-07-23 at 20 01 26

@bahaaTuffaha
bahaaTuffaha force-pushed the 4153-improve-bottom-sheet-handle branch from a8b395c to c2efdcc Compare July 23, 2026 17:44

@lunars97 lunars97 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested in iOS and now it looks better 👍 On web, I noticed, there is a previous handle as well...

Image

Comment thread translations/src/translations.json Outdated
@ulyanahoy-cloud

Copy link
Copy Markdown

My suggestion would be to add “In deiner Nähe” below the arrow and make the entire upper area tappable. The arrow itself should also be clickable and fully expand the bottom sheet. The main issue in the user test was that the draggable area was too small and therefore difficult to use.

image

@bahaaTuffaha

bahaaTuffaha commented Jul 27, 2026

Copy link
Copy Markdown
Contributor Author
  • Moved the nearby heading out of the list into the sheet header on both platforms, hidden once a place is selected or while loading.
  • Turned the chevron into a full-width button that toggles between the fullscreen and middle snap points, and widened it with scaleX(1.5).
  • Reduced the web heading from variant='h3' to variant='h5' so the nearby text matches native's size.
2026-07-27.17-47-26.mov

And yes I tried to move the title of the selected place to behave like the nearby text but some titles are big that it will affect the size of the handle or by using ellipsis (...) that would hide part of the title so I abandoned that idea.

@bahaaTuffaha
bahaaTuffaha force-pushed the 4153-improve-bottom-sheet-handle branch from 882aa77 to 45443df Compare July 27, 2026 14:56
@bahaaTuffaha
bahaaTuffaha force-pushed the 4153-improve-bottom-sheet-handle branch from 45443df to dfc47a2 Compare July 27, 2026 15:08
@bahaaTuffaha
bahaaTuffaha requested a review from lunars97 July 27, 2026 15:08
@ulyanahoy-cloud

Copy link
Copy Markdown

Looks really good! Maybe only the button animation could be a bit smoother, if that's possible.

@lunars97 lunars97 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks almost perfect, just left some improvement suggestions 😻

Comment thread web/src/components/BottomActionSheet.tsx Outdated
Comment thread web/src/components/BottomActionSheet.tsx Outdated
Comment thread web/src/components/BottomActionSheet.tsx
Comment thread native/src/components/BottomSheetHandle.tsx Outdated
const BottomActionSheet = ({ children, sibling, ref }: BottomActionSheetProps): ReactElement => {
const BottomActionSheet = ({ children, sibling, title, ref }: BottomActionSheetProps): ReactElement => {
const [scrollElement, setScrollElement] = useState<HTMLElement | null>(null)
const [isFullscreen, setIsFullscreen] = useState(false)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ This useState is redunant:

Suggested change
const [isFullscreen, setIsFullscreen] = useState(false)
const isFullscreen = bottomSheetRef.current?.height ?? 0) >= max

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

it wont re-render the arrow when it reaches fullscreen 🤔

Comment thread translations/src/translations.json

@lunars97 lunars97 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tested on real android device, ios simulator and chrome with safari with keyboard and screen-reader. Looks almost perfect, just left some suggestions 👍

Comment thread web/src/components/BottomActionSheet.tsx Outdated
Comment thread web/src/components/BottomActionSheet.tsx Outdated
Comment thread native/src/components/BottomSheetHandle.tsx Outdated

@lunars97 lunars97 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Not tested again 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bottom sheet with places is not intuitive to expand

4 participants