Skip to content

Fix keyboard input for 'time' and 'datetime-local' inputs #35682

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

Merged
merged 6 commits into from
Aug 25, 2021

Conversation

MackinnonBuck
Copy link
Member

@MackinnonBuck MackinnonBuck commented Aug 25, 2021

Fix keyboard input for time and datetime-local inputs
This PR fixes the unusual behavior observed when using keyboard input with <input type="time" /> and <input type="datetime-local" />.

PR Description
The root cause of the issue came down to the acceptable time format for time-based inputs when the seconds part of the string reads ":00". As it turns out, the seconds value must be omitted unless it contains a value other than ":00", otherwise pending keyboard input starts misbehaving (e.g. jumping to the next time quantity prematurely or always modifying the least-significant digit of the current time quantity).

This behavior had previously been observed with datetime-local, but I was able to reproduce the same issue with time if step="1" and the initial seconds value was ":00". We already had logic that removed seconds from the value for time inputs when no step was specified, but that didn't account for the keyboard input bug completely.

Validation

  • Manual validation
  • Updated current E2E tests to utilize working keyboard input
  • Added new E2E tests verifying that keyboard input works with different step attribute values and seconds values

Fixes #35498

@ghost ghost added the area-blazor Includes: Blazor, Razor Components label Aug 25, 2021
@@ -271,7 +271,7 @@ public void InputDateInteractsWithEditContext_TimeInput()
Browser.Equal(new[] { "The DepartureTime field must be a time." }, messagesAccessor);
}

[Fact(Skip = "https://github.com/dotnet/aspnetcore/issues/35498")]
Copy link
Member Author

Choose a reason for hiding this comment

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

While these tests used to fail reliably, they now pass reliably when run locally, so they're no longer being skipped (the issue linked is the one that this PR is claiming to fix, anyway).

@pranavkm
Copy link
Contributor

Happy with the code changes. Let's add a couple of tests and we should be good to go!

@MackinnonBuck MackinnonBuck marked this pull request as ready for review August 25, 2021 20:48
@MackinnonBuck MackinnonBuck requested a review from a team as a code owner August 25, 2021 20:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-blazor Includes: Blazor, Razor Components
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Keyboard input doesn't work for InputDateType.DateTimeLocal
3 participants