- From: Chris Blouch <cblouch@aol.com>
- Date: Wed, 23 Apr 2008 14:04:00 -0400
- To: Chris Blouch <chris.blouch@corp.aol.com>
- CC: "Evans, Donald" <Donald.Evans@corp.aol.com>, wai-xtech@w3.org, "Wlodkowski, Thomas" <Thomas.Wlodkowski@corp.aol.com>, Earl.Johnson@Sun.COM, Jon Gunderson <jongund@uiuc.edu>, Becky Gibson <Becky_Gibson@notesdev.ibm.com>, Joseph Scheuhammer <clown@utoronto.ca>, "Schnabel, Stefan" <stefan.schnabel@sap.com>, schwer@us.ibm.com, Al Gilman <Alfred.S.Gilman@IEEE.org>
Hopefully this is close to the final revision. We'll give it a once over next week. CB Date Picker Widget Purpose: Choose a date as input in an easy to navigate manner. This widget does not address selection of time ranges within a date, which, in the web world, is often performed via a separate UI process. Behavior: Like other widgets the calendar widget receives focus to become active by tabbing into it. Once focus is received it is placed on today's date in a grid of days and weeks or the closest previously selected date. A grid embodies the same representational metaphors for both visual and aural navigation. This gives extra lift to the solution by aligning it with mainstream objects. There are two modalities for selection: Singleton - boolean When true the calendar will only allow one date to be picked at a time. When false the user can pick one or more ranges of date or multiple dates which are not contiguous. Contiguous - boolean - only available if Singleton true Expands Singleton case to allow selection of one range of dates Navigation: Arrowing up and down goes to the same day of the week in the previous or next week respectively. If the user advances past the end of the month they continue into the next or previous month as appropriate. Visually the grid might flip from month to month but feedback presents a continuum of dates. When passing the epoch of one month to another, the month entered should give feedback: <Monthname>[<"NO"|XX> days selected.] The days selected would only be provided in feedback if we are not in singleton mode. Going left and right advances one day to the next, also in a continuum. Visually focus is moved from day to day and wraps from row to row in a grid of days and weeks. Home takes you to the first day in a month while End takes you to the last day in a month. PageUp advances a month and PageDown retreats a month. As mentioned before, advancing or retreating a month should give user feedback of the month along with selected days if not in singleton mode. When changing months focus should stick to the same date as the user cycles through. For example, if they are currently focused on 23 Wednesday April 2008 and advance a month, they should sill be on the 23rd but in May, which is Friday. If the next or previous month have fewer days than the currently focused date, focus is moved to the last date in the month. For example, if focus is on May 31st and the user retreats one month, there is no April 31st so focus would be moved to April 30 instead. In any case the new date focused should be be provided in feedback to the user. Control+PageUp advances a year while Control+PageDown retreats a year. The new year should be provided in feedback: <Year>[<"NO"|XX> days selected.] The days selected would only be given in feedback if we are not in singleton mode. The user focus should stick to the same month and date in the next year. We do not need another shortcut for changing weeks because it is already available by pressing the up and down arrow. We do not need another shortcut for going to the beginning or end of the week because requires extra cognitive load, implementation cost and provides low utility. On average the user only needs to arrow three times to reach the same destination. Unavailability: The widget should also recognize some dates as not being available such as weekends or holidays. The API is not defined here but should include exclusion of certain days of the week, dates in the past, ranges of dates and discontinuous sets of dates. These dates are provided in feedback as Not Available or Available as appropriate. We assume the user most often will be hunting for an open available date so we suggest providing feedback of Not Available early on so the user knows to just skip forward or back to another date. If the widget is instructed to make all dates in the past unavailable, if the user attempts a navigation method that would take them into the past, the widget should have an optional configuration to take the user to Today's date which is logically the earliest available date. This new date would be provided in feedback "Dates in the past are not selectable" in addition to the regular information about that date. Feedback: While navigating the user will need appropriate feedback in their localized language for the following attributes: selected state available state set membership position within a set year month day date Guidance for what feedback is provided when has been integrated throughout this document. Generally feedback should be from specific/interesting to general/ordinary. Different ATs may want to expose preferences to reorder the elements or taper the verbosity. Selection: Pressing the space key selects a date. In singleton mode this deselects a previous choice, if any. We assume the user knows what they are doing and deselection of the previous date is easily reversed so we do not provide feedback about this implicit change. In non-singleton mode the space acts as a toggle so we could be either selecting or deselecting. For range selection the space nails down the tail of the snake and then shift+arrows moves the head to select a set of dates. This is similar to the keyboard behavior in selecting a range of text in a word processor. Pressing space on another date starts a new snake. As each date is navigated for the head we announce the date and the number of members in the set. If Unavailable dates are included in the range, they are not included in the count of selected days. When a change is selection is made the user should be given feedback: Selected NumericDate DayofWeek Month NumericYear [X days selected] In singleton mode, selecting a date may submit the widget as completed. When not in singleton mode enter is used to signal that work in the widget is complete. Other items: There are numerous other UI elements an author could implement such as small advance/retreat month/year links, pull-down menus to pick month/day/year and month/day/year entry fields. These atomic UI elements are below the threshold of the date picker widget definition. No key for jumping to "today" is defined. The use case was considered too weak to define another key. {Tree View} Al suggested consideration of a tree view which I'm assuming would need an alternate keyboard navigation. Should we pursue this branch? Update 4/23 - Noted that initial focus is dropped on today's date OR the nearest previously selected date - Removed requirement that contiguous be only available in the non-singleton state. An author may want the user to pick only one contiguous range of dates. - Restructured to Singleton and an optional Contiguous allowed flag on Singleton true case. - Moved comments about localization to feedback section - Dropped more of the prose in the feedback section as previously agreed - Added selection of date in singleton mode can optionally submit the widget - Added selection of date(s) in non-singleton mode can signal completion via enter key - Added commentary that text entry fields, pull-down menus and other navigation in the widget is not covered here. - Noted the decision to not set up a "jump to today" key. - Removed all "other" items as they have been addressed except for Al's tree view. Update 4/22 - Removed references to "announce" generalizing as "feedback" or "AT representation" - Clarified what to do when advance/retreat a month and the new month has fewer days than the current month and the user is focused on the last date. - Noted why we don't recommend a jump to beginning and end of week key combination. - Clarified that navigation into the past can be optionally prevented - Changed section on announcing to be feedback and reduced level of detail - Removed feedback for unselection of previous date in singleton mode Update 4/15 - Changed advance/retreat month to stick to same date rather than the same day - Changed control+alt+home and end to be just control+home Update 4/8 - Tried to generalize AT behavior description for order of content revelation - Added section about singleton and contiguous modes - Added unavailability section - Changed selection from enter to space - added contiguous and discontiguous selection methods - Reorganized into major sections - Removed all modal dialogs and other tweaks that try to capture Al's comments - Changed keys to ones not needing localization Update 3/25 - added announcing number of days selected when switching from Month to Month or Year to Year - added announcing availability of the selected date to the spoken description - added announcing the month and its attributes when the user crosses a month boundary - clarified combinations allowed for availability and selected - added implementation detail about supporting a passed in list of unavailable dates - added section about navigation into the past Update 3/4 - added commentary about alignment with mainstream objects - added section of additional keys we might want to consider - added continuity of grid focus when changing months and years
Received on Wednesday, 23 April 2008 18:04:52 UTC