Skip to content

Nui 6285 calendar navigation - #891

Open
harsha573252 wants to merge 13 commits into
solarwinds:release/v20.0.xfrom
harsha573252:nui-6285_calendar_navigation
Open

Nui 6285 calendar navigation#891
harsha573252 wants to merge 13 commits into
solarwinds:release/v20.0.xfrom
harsha573252:nui-6285_calendar_navigation

Conversation

@harsha573252

@harsha573252 harsha573252 commented Jul 29, 2026

Copy link
Copy Markdown
Contributor

###Related Jira
https://swicloud.atlassian.net/browse/NUI-6285

Frontend Pull Request Description

Summary
Adds keyboard navigation to the date picker's day/month/year grids and toggle button, and fixes several NVDA screen-reader issues.

Changes
Arrow keys navigate cells; PageUp/PageDown change month/year; Home/End jump to first/last cell; Escape closes and restores focus. Disabled dates are skipped.
Calendar toggle is now a real with aria-label/aria-expanded; opens via ArrowDown on the input. Meets WCAG 2.5.8 touch-target size.
Fixed NVDA issues: nav/Today buttons wrongly announced as grid cells, duplicate cell announcements, redundant weekday names, wrong-date/"Skip to main content" glitches during mode switches and month-boundary navigation.
Cells now expose full accessible names (e.g. "Sunday, July 26, 2026") with proper current/selected state.

Additional Enhancements Beyond ACs 🎯

  • Full month/year keyboard navigation — Extended keyboard navigation to all picker modes (day/month/year) with mode-aware grid navigation
  • Mode-switch focus restoration — Keyboard navigation remains active and functional when switching between day/month/year views
  • Year grid paging fix — Year picker now displays stable year blocks
  • Calendar toggle button a11y upgrade — Converted from static icon to focusable button with aria-expanded state
  • E2E test improvements — Extracted repeated toggle+overlay assertions into reusable toggleToBeDisabled() helper

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have updated change log
  • I have been following Definition of done
  • I have commented my code, particularly in hard-to-understand areas
  • My changes generate no new lint warnings
  • New and existing unit tests pass locally and on CI with my changes
  • Any dependent changes have been merged and published in downstream modules

Screenshots (if applicable)

Additional Context (if necessary)

Introduces a dedicated DatePickerKeyboardService to handle open/close, arrow/page/home/end navigation, mode-aware grid movement (day/month/year), disabled-date skipping, and focus restoration on Escape. Updates the picker templates/components for roving tabindex and active-cell focusing, converts the calendar icon into an accessible toggle button with aria-expanded state, emits mode changes to keep focus in the active grid, and fixes year-grid range start calculation using floor division. Adds broad unit/spec coverage for the new keyboard and focus behavior.
Replace the two-step toggle + overlay check with a dedicated `toggleToBeDisabled` method that directly asserts the datepicker icon is disabled, simplifying the disabled state verification in form-field e2e tests.
@harsha573252
harsha573252 marked this pull request as ready for review July 31, 2026 06:40
- Implement roving tabindex for day, month, and year cells to improve keyboard navigation.
- Add focus trapping within the calendar overlay to ensure accessibility.
- Update focus handling logic to prioritize focus target cells.
- Introduce tests for focus management and overlay behavior.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant