|
Do
|
Use Calendar for choosing one Gregorian date; use DateNavigator for stepping an existing period and DatePicker for field entry plus a calendar. |
|
Do
|
Keep ISO YYYY-MM-DD date-only values separate from display formatting and time zones; the host supplies locale, today, availability and inclusive limits. |
|
Do
|
Keep today, selected date, outside-month date and keyboard focus independent. Persistent selection uses selection.bg and survives hover, press and disabled state. |
|
Do
|
Keep one roving date button in the tab sequence. Arrow navigation moves focus without selecting; Enter or Space selects only an available day. |
|
Do
|
Keep unavailable dates visible and arrow-focusable with aria-disabled so their full date and state can be discovered; guard every activation. |
|
Do
|
Announce the displayed month through a polite heading; use narrow, single-letter weekday labels while preserving their full accessible names. |
|
Do
|
Respect locale week order or an explicit first-day override. PageUp/PageDown preserves the day where possible and clamps to the destination month and inclusive limits. |
|
Do
|
Center the month between previous and next arrow pairs. Single chevrons step one month; double chevrons step one year. Header actions share the date-control ink-only hover and inset pressed plate; date cells keep standalone ghost states. |
|
Don’t
|
Do not interpret readonly as disabled: readonly permits inspection and navigation but never changes the committed value. |
|
Don’t
|
Do not imply range selection, time selection or non-Gregorian calendars; each requires an explicit extension. |