Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

bug: ion-datetime Month Navigation Fails in RTL Mode" #29198

Closed
3 tasks done
AdrienJacquard opened this issue Mar 21, 2024 · 2 comments · Fixed by #29421
Closed
3 tasks done

bug: ion-datetime Month Navigation Fails in RTL Mode" #29198

AdrienJacquard opened this issue Mar 21, 2024 · 2 comments · Fixed by #29421
Labels
package: core @ionic/core package type: bug a confirmed bug report

Comments

@AdrienJacquard
Copy link

Prerequisites

Ionic Framework Version

v7.x

Current Behavior

When an ion-datetime element with presentation="date" is wrapped in a container set to RTL mode (dir="rtl"), clicking on the left or right arrows does not change the current month as expected. This behavior is observed regardless of the device or browser being used. The issue specifically occurs when the direction is set to RTL; switching back to LTR (dir="ltr") resolves the issue and the month changes as expected when the arrows are clicked. This problem presents a significant usability concern for RTL users, who cannot navigate through months in the date picker.

Expected Behavior

Users should be able to navigate through months in the ion-datetime date picker by clicking on the left or right arrows, irrespective of the text direction setting (RTL or LTR). The component should consistently allow month navigation in RTL mode, ensuring a seamless and inclusive experience for all users, including those requiring RTL layouts.

Steps to Reproduce

  1. Create an Ionic application that includes an ion-datetime element with presentation="date" and binds it to a model with [(ngModel)]="datetime".
  2. Wrap the ion-datetime element in a container and set the direction to RTL (dir="rtl").
  3. Run the application and attempt to change the month in the date picker by clicking on the left or right arrows.
  4. Observe that clicking the arrows does not change the current month when in RTL mode, unlike when the direction is set to LTR, where the functionality works as expected.

Code Reproduction URL

https://stackblitz.com/edit/ionic-rtl-calendar-issue

Ionic Info

Ionic:

   Ionic CLI                     : 7.2.0 (C:\Users\adrie\AppData\Roaming\npm\node_modules\@ionic\cli)
   Ionic Framework               : @ionic/angular 7.6.6
   @angular-devkit/build-angular : 17.1.1
   @angular-devkit/schematics    : 17.1.1
   @angular/cli                  : 17.1.1
   @ionic/angular-toolkit        : 11.0.1

Capacitor:

   Capacitor CLI      : 5.6.0
   @capacitor/android : 5.6.0
   @capacitor/core    : 5.6.0
   @capacitor/ios     : 5.6.0

Cordova:

   Cordova CLI       : not installed
   Cordova Platforms : not available
   Cordova Plugins   : not available

Utility:

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

System:

   NodeJS : v20.10.0 (C:\Program Files\nodejs\node.exe)
   npm    : 10.2.3
   OS     : Windows 10

Additional Information

No response

@amandaejohnston
Copy link
Contributor

Thank you for the issue. I can reproduce this, but need to figure out why exactly it's happening. Many pieces of the month navigation need to have their logic flipped to account for RTL, so it's possible we missed something along those lines.

@amandaejohnston amandaejohnston added the needs: investigation This issue is waiting on more investigation from the Ionic Team. label Mar 22, 2024
@ionitron-bot ionitron-bot bot removed the triage label Mar 22, 2024
@liamdebeasi liamdebeasi added package: core @ionic/core package type: bug a confirmed bug report and removed needs: investigation This issue is waiting on more investigation from the Ionic Team. labels Apr 29, 2024
github-merge-queue bot pushed a commit that referenced this issue Apr 29, 2024
Issue number: resolves #29198

---------

<!-- Please do not submit updates to dependencies unless it fixes an
issue. -->

<!-- Please try to limit your pull request to one type (bugfix, feature,
etc). Submit multiple pull requests if needed. -->

## What is the current behavior?
<!-- Please describe the current behavior that you are modifying. -->

In #27917 I failed to
account for RTL. This caused the navigation with the arrow buttons to
break because the scroll position was always < 2.

## What is the new behavior?
<!-- Please describe the behavior or changes that are being added by
this PR. -->

- Datetime now checks if the component is in RTL mode when creating the
scrollLeft threshold.

## Does this introduce a breaking change?

- [ ] Yes
- [x] No

<!--
  If this introduces a breaking change:
1. Describe the impact and migration path for existing applications
below.
  2. Update the BREAKING.md file with the breaking change.
3. Add "BREAKING CHANGE: [...]" to the commit description when merging.
See
https://github.com/ionic-team/ionic-framework/blob/main/docs/CONTRIBUTING.md#footer
for more information.
-->


## Other information

<!-- Any other information that is important to this PR such as
screenshots of how the component looks before and after the change. -->
@liamdebeasi
Copy link
Contributor

Thanks for the issue. This has been resolved via #29421, and a fix will be available in an upcoming release of Ionic Framework.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
package: core @ionic/core package type: bug a confirmed bug report
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants