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

Proposal: Improve CalendarDatePicker flyout editing #2255

Open
robloo opened this issue Apr 8, 2020 · 15 comments
Open

Proposal: Improve CalendarDatePicker flyout editing #2255

robloo opened this issue Apr 8, 2020 · 15 comments
Assignees
Labels
area-DateTimePickers DatePicker, TimePicker, CalendarDatePicker, CalendarView feature proposal New feature proposal needs-winui-3 Indicates that feature can only be done in WinUI 3.0 or beyond. (needs winui 3) team-Controls Issue for the Controls team

Comments

@robloo
Copy link
Contributor

robloo commented Apr 8, 2020

Proposal: Improve CalendarDatePicker Flyout editing

We need to improve editing of the selected date in the CalendarDatePicker Flyout. These improvements are primarily necessary to speed up editing by the user.

This is related to but different from the improvements mentioned in #735.

Summary

The current CalendarDatePicker Flyout is slow to use when editing a date. It is deficient in the following areas:

  1. There is no visual indication that the title can be pressed
  2. Pressing the title once goes to month view, twice goes to year view, and on older controls (WPF?) you could even press it a third time and go to a decade view I believe. This multiple pressing is not always ideal.
  3. The year, month, and day must all be set at once. There is no mechanism to modify only the year or month of the currently selected date. This means just changing the year requires re-selecting the month and day.

Each of these three points can be improved at once.

Current Design
Untitled_1

Proposed Design
Credit as always for these types of illustrations goes to @mdtauk comment.

The top of the Flyout can now independently select day/month/year. Note that the control logic would also change and it will no longer be necessary to set the year, then always the month and day. Any component of the date will be modifiable and the other already selected components will persist.

Untitled

Old Proposal
The old proposal copied below added ComboBoxes to select the Month/Year. This was considered non-ideal for a few reasons including nested flyouts.

78815280-4a2c7a80-798d-11ea-8db4-1cb09d362288

Rationale

The current calendar date picker is slow and somewhat unintuitive to use for the user.

Scope

Capability Priority
Allow month selection independent of year and day in the Flyout Must
Allow year selection independent of month and day in the Flyout Must
Add configuration to keep the current design for backwards compatibility Should

Edits: This proposal has been updated to capture the latest discussion and ideas below.

@robloo robloo added the feature proposal New feature proposal label Apr 8, 2020
@msft-github-bot msft-github-bot added the needs-triage Issue needs to be triaged by the area owners label Apr 8, 2020
@StephenLPeters StephenLPeters added area-DateTimePickers DatePicker, TimePicker, CalendarDatePicker, CalendarView team-Controls Issue for the Controls team needs-winui-3 Indicates that feature can only be done in WinUI 3.0 or beyond. (needs winui 3) labels Apr 8, 2020
@mdtauk
Copy link
Contributor

mdtauk commented Apr 8, 2020

Isn't this why there is the DatePicker with the calendar flyout?

image

Maybe that should get an IsEditable property. There was an issue about making those pickers better for keyboard use. #918 #905 #735

@robloo
Copy link
Contributor Author

robloo commented Apr 9, 2020

@mdtauk, I'm not sure I understand your comments entirely. I'm talking about the CalendarDatePicker which is different than the DatePicker. The CalendarDatePicker does look exactly as you pictured though. I did only screenshot and modify the relevant part -- the calendar flyout only.

Maybe that should get an IsEditable property

I wouldn't suggest that for this case. I'm talking about only the flyout which is already the editor. Once the flyout is open the user is already editing, I'm only trying to make this experience faster. Now if we made the inline textbox area (not the flyout) editable like in #735 that could use the IsEditable property.

There was an issue about making those pickers better for keyboard use. #918 #905 #735

Yes, I referred to #735 in the proposal but this is quite a bit different -- although the spirit is the same (to improve the editing experience).

@robloo robloo changed the title Proposal: Improve calendar date picker flyout editing Proposal: Improve CalendarDatePicker flyout editing Apr 9, 2020
@mdtauk
Copy link
Contributor

mdtauk commented Apr 9, 2020

@robloo I do not think your idea is a good solution for having an editable date picker. The control is designed to be a fixed size, and the additional weight of combo boxes feels clunky. I think keeping the control a pure calendar grid viewer is a good idea, but there are other ideas that achieve the same thing, fast way to pick a date, by handling it in the form control Date Picker or Calendar Picker.

@robloo
Copy link
Contributor Author

robloo commented Apr 9, 2020

@mdtauk, I respectfully disagree. There is also precedent for my suggestion. Microsoft has internally decided it is a valid solution to the problem:

example

This is taken from the developer dashboard. I don't know the web framework they used off the top of my head.

I see this as somewhat of an elegant solution as it maintains the same size of the current flyout; however, significantly speeds up selecting different months/years. No longer does the user have to click the Month/Year title to navigate to Year and Decade views (which is not only more time consuming but more complex I would argue).

If someone likes to use more of a form-style control they can keep using the DatePicker or the CalendarView.

Edit: Just to be sure we are not confusing controls, I'm talking only about the CalendarDatePicker.

image

@robloo
Copy link
Contributor Author

robloo commented Apr 9, 2020

If it's the concept of nested flyouts you don't like, I can understand that as well (there is a framework bug for that...). It's also possible to rework the existing control to press the month and year separately. This could use existing designs instead of adding ComboBoxes. The downside is you loose the drop down symbol and ComboBox appearance so the user doesn't always know they can click that area (this has long been a design deficiency in this type of control).

Pressing the month title April goes directly to the month view (as it already does).
image

But pressing year title 2020 would go directly to the year view. This would prevent having to click the title twice.

image

@mdtauk
Copy link
Contributor

mdtauk commented Apr 9, 2020

Making the Month and Year tap-able I think is a better option than ComboBoxes.

FluentUI has a property that does this. (formerly Fabric UI)
image

The new Edgium form control does it
image


You can sort of do what you want currently with the Xaml control
image

It just takes two taps to get to the year selection/decade view

@robloo
Copy link
Contributor Author

robloo commented Apr 9, 2020

You can sort of do what you want currently with the Xaml control
It just takes two taps to get to the year selection/decade view

Yes, I'm aware. It is slow and somewhat unintuitive to use (especially when entering a lot of dates in different months/years):

  1. There is no visual indication that the title can be pressed
  2. Pressing the title once goes to month view, twice goes to year view, and on older controls you could even press it a third time and go to a decade view I believe. This multiple pressing is not always ideal.
  3. The year, month, and day must all be set at once. There is no mechanism to modify only the year or month of the currently selected date. This means just changing the year requires re-selecting the month and day.

So it seems no. 3 is the main point I'm trying to improve. Make the day, month and year independently selectable. That could be done by improving the flyout UI as discussed above and also by making the box editable (#735).

@mdtauk
Copy link
Contributor

mdtauk commented Apr 9, 2020

  1. The year, month, and day must all be set at once. There is no mechanism to modify only the year or month of the currently selected date. This means just changing the year requires re-selecting the month and day.

So it seems no. 3 is the main point I'm trying to improve. Make the day, month and year independently selectable. That could be done by improving the flyout UI as discussed above and also by making the box editable (#735).

image
image

Something like this would also make date picking simpler.

@mdtauk
Copy link
Contributor

mdtauk commented Apr 9, 2020

To make it work nicely, the whole control would need some tweaks.

image

@robloo
Copy link
Contributor Author

robloo commented Apr 9, 2020

Really, really, like the last set of illustrations. I'm not using a DatePicker because the calendar makes it easier to select dates in some cases.

@mdtauk
Copy link
Contributor

mdtauk commented Apr 9, 2020

image
Here is one with a slightly cleaner header, similar to the Pivot

@ranjeshj ranjeshj removed the needs-triage Issue needs to be triaged by the area owners label Apr 9, 2020
@ranjeshj ranjeshj assigned kikisaints and 1hw7 and unassigned 1hw7 Apr 9, 2020
@robloo
Copy link
Contributor Author

robloo commented Apr 11, 2020

I've updated the proposal to capture the latest discussion. Thanks @mdtauk for the great illustrations and ideas.

@shaheedmalik
Copy link

To make it work nicely, the whole control would need some tweaks.

image

Can you make one with MM DD YY format?

@mdtauk
Copy link
Contributor

mdtauk commented Apr 12, 2020

Can you make one with MM DD YY format?

image

@robloo
Copy link
Contributor Author

robloo commented Jul 19, 2023

Would still like to see a new design for faster use here. If Microsoft has no plans to do anything in this space though, please just close it.

@chigy

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-DateTimePickers DatePicker, TimePicker, CalendarDatePicker, CalendarView feature proposal New feature proposal needs-winui-3 Indicates that feature can only be done in WinUI 3.0 or beyond. (needs winui 3) team-Controls Issue for the Controls team
Projects
None yet
Development

No branches or pull requests

8 participants