Labeling
- The surrounding calendar surface should explain what month and year the user is currently viewing.
Keyboard Behavior
AnnouncementFocus the demo and press a key from the table.
| Key | Action |
|---|---|
| ←→ | Moves the focus to the previous or next day, wrapping to the neighbouring week and skipping disabled days. In RTL the arrows are mirrored: ← moves to the next day. |
| ↑↓ | Moves the focus to the same weekday of the previous or next week, stopping at the edge of the month. |
| HomeEnd | Moves the focus to the first or last day of the week. |
| Ctrl + HomeCtrl + End | Moves the focus to the first or last day of the month. |
| Page UpPage Down | Moves the focus to the same weekday in the first or last week of the month. The month itself does not change: paging months belongs to Calendar. |
| EnterSpace | Selects the focused day. |
- Keyboard navigation is inherited from
DataGridPickerand the grid item semantics.
Focus Behavior
- Without
defaultActive, the tab stop is today when it is in the visible month, otherwise the first selected day in it, otherwise its first day; when you changemonthlater, passactive/onChangeActiveto keep the tab stop in view - Focus and active cell behavior should remain visible across selected, excluded, and disabled dates.
Screen Reader Semantics
- Grid roles and state semantics come from the underlying picker/grid primitives.
- Weekday labels and period labels should stay synchronized with the rendered month.
Form Semantics
DayPickeris a picker subsystem, not native form input by itself.
Accessibility Risks
- custom day rendering that hides focus or selection state
- scrollable month paging with unclear period announcements