ionic-team / ionic-framework

A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.
https://ionicframework.com
MIT License
51.14k stars 13.51k forks source link

bug: ion-datetime wheel breaks in Android WebView with scaled fonts #29713

Open JanPolasek opened 4 months ago

JanPolasek commented 4 months ago

Prerequisites

Ionic Framework Version

v8.x

Current Behavior

When ion-datetime is used in a WebView (Capacitor in our case) with font size scaled up by the OS, it becomes impossible to set any date as the wheel will start rotating on its own until it reaches its start.

Video of this issue in Ionic 8.2.5

https://github.com/user-attachments/assets/f714e7a8-0dc1-40ee-88aa-bf07a668acf5

Expected Behavior

The wheel should haldle the lack of space more graciously. Of course at some point the screen real estate becomes so small it's impossible for it to work/be displayed correctly, but current behaviour is a regression from Ionic 7.

Video of this not being an issue in Ionic 7(.8.6):

https://github.com/user-attachments/assets/f6b6292d-e265-40c7-b4cb-5aa67e27a0e3

The alignment is a little bit wonky and at one point in the video it got stuck in between two values, but it mostly works fine.

Steps to Reproduce

1) Go to the linked highly rudimentary stackblitz demo 2) Open devtools and change the ion-datetime's font-size from 22px to 27px (usually you can't change this value since it's hidden inside shadow DOM, but Android itself can) 3) Try setting a date

Code Reproduction URL

https://stackblitz.com/edit/angular-d2mwre?file=src%2Fapp%2Fexample.component.html

Ionic Info

Ionic:

Ionic CLI : 7.2.0 (/[redacted]/node_modules/@ionic/cli) Ionic Framework : @ionic/angular 8.2.5 (/[redacted]/node_modules/@ionic/angular) @angular-devkit/build-angular : 18.0.7 (/[redacted]/node_modules/@angular-devkit/build-angular) @angular-devkit/schematics : 18.0.7 (/[redacted]/node_modules/@angular-devkit/schematics) @angular/cli : 18.0.7 (/[redacted]/node_modules/@angular/cli) @ionic/angular-toolkit : not installed

Capacitor:

Capacitor CLI : 6.1.0 @capacitor/android : 6.1.0 (/[redacted]/node_modules/@capacitor/android) @capacitor/core : 6.1.0 (/[redacted]/node_modules/@capacitor/core) @capacitor/ios : not installed

Utility:

cordova-res : not installed globally native-run : not installed globally

System:

NodeJS : v20.10.0 (/[redacted]/.nvm/versions/node/v20.10.0/bin/node) npm : 10.2.3 OS : macOS Unknown

Additional Information

This issue only happens when the font-size is scaled, when ion-datetime simply runs out of space it will overflow, but it will still be possible to select a date, despite it being a highly suboptimal situation.

yasgreen93 commented 6 days ago

I am also getting this issue. Is there any suggestions on how we can get around this while we wait for a fix?

This bug makes the ion-datetime unusable for some users who user a larger text size on their device.

https://github.com/user-attachments/assets/335f6433-81e6-4431-b7a9-99fa62504101