angular / angular/components

bug(CDK Overlay): cdkConnectedOverlay ConnectedPosition not correctly calculated after scrolling on mobile browser

Open
#23,037 1 comment 4 reactions 0 assignees View on GitHub
area: cdk/overlay needs investigation P3
Dominant language
TypeScript
Stars
25k
Forks
6.8k
Avg merge
1d 8h
Merged PRs (30d)
91

Description

The ConnectedPositions for a cdkConnectedOverlay are not correctly calcullated when browsing and scrolling on a mobile browser. The mobile devices are hiding the address bar when you scroll down. This results in a change of the viewport sizes. If you open a cdkConnected overlay after scrolling it's position is at the wrong location.

#### Reproduction

https://stackblitz.com/edit/components-issue-mbxfr2

Steps to reproduce:
1. Create a component with cdkConnectedOverlay
2. Add it to your application
3. Browse to your angular app on a mobile device a
4. Open the overlay -> this should be correct positioned
5. Scroll down (the browser hides the address bar)
6. Overlay position is on wrong location

#### Expected Behavior

The connected overlay should be on the correct position after scrolling on a mobile device

#### Actual Behavior

The position of the overlay is calculated wrong and displayd at the wrong position.

The position of the overlay with the address bar (as expected)
![Screenshot_20210622-150122_Chrome](https://user-images.githubusercontent.com/78798355/122936977-e4e65e80-d371-11eb-81db-b9dcfa474cb4.jpg)

The position of the overlay without the address bar, after scrolling (not as expected)
![Screenshot_20210622-150129_Chrome](https://user-images.githubusercontent.com/78798355/122936983-e57ef500-d371-11eb-958e-ea24497869b5.jpg)

#### Environment
- Angular: 12
- CDK/Material: 12
- Browser(s): Chrome Android, Safari IOS
- Operating System: IOS, Android

Contributor guide

Open the contributing guide

Research direction

Start with the linked StackBlitz reproduction and the CDK cdkConnectedOverlay positioning entry point. Reproduce the issue on Chrome Android or Safari iOS by opening the overlay, scrolling to hide the address bar, and opening it again. Done means the connected overlay remains correctly positioned after the mobile viewport changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
angular, typescript
Domain
frontend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.