Skip to content

feat(accessibility): comprehensive keyboard navigation support (#396)#417

Merged
Blankll merged 2 commits into
masterfrom
feat/keyboard-accessibility-improvements
May 9, 2026
Merged

feat(accessibility): comprehensive keyboard navigation support (#396)#417
Blankll merged 2 commits into
masterfrom
feat/keyboard-accessibility-improvements

Conversation

@Blankll
Copy link
Copy Markdown
Member

@Blankll Blankll commented May 8, 2026

Summary

Implements comprehensive keyboard accessibility improvements across the entire application, resolving #396.

Key Changes

SearchableSelect Component - Migrated to Radix Vue Combobox for built-in keyboard support (ArrowUp/Down/Enter/Escape)

Interactive Elements - Added tabindex, role="button", @keydown.enter, @keydown.space to connection cards, file items, navigation icons, toolbar favorites, breadcrumb items, node cards, and table headers

Form Submission - Added @submit.prevent to 8 modal dialog forms for proper Enter key submission

Confirmation Dialogs - Scoped Enter key to confirm buttons only, preventing accidental destructive actions

Context Menus - Full keyboard support with ARIA roles, focus management, and Shift+F10 opener for editor context menus

Aria Labels - Added to icon-only buttons in 6 dialog files

Test Plan

  • Tab/Shift+Tab navigation through all interactive elements
  • Enter/Space activation on buttons, cards, and menu items
  • Arrow key navigation in dropdowns, lists, and grids
  • Escape to close popovers, dialogs, and context menus
  • Shift+F10 to open editor context menus
  • Form submission via Enter key in modal dialogs
  • SearchableSelect keyboard navigation (search, select, create new)

Related Issues

Refer #396

Screenshots

N/A - Accessibility improvements are non-visual

@codecov
Copy link
Copy Markdown

codecov Bot commented May 8, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 64.68%. Comparing base (d0708ed) to head (c4c3d88).

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #417   +/-   ##
=======================================
  Coverage   64.68%   64.68%           
=======================================
  Files          47       47           
  Lines        2308     2308           
  Branches      597      597           
=======================================
  Hits         1493     1493           
  Misses        698      698           
  Partials      117      117           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Blankll added 2 commits May 9, 2026 17:32
Implements keyboard accessibility improvements across the entire application
to resolve issue #396 and improve overall accessibility.

## Changes

### SearchableSelect Component
- Migrated from Popover to Radix Vue Combobox for built-in keyboard support
- Full ArrowUp/Down/Enter/Escape navigation
- Restored selected-prepend slot for toolbar icons
- Made 'Create new' option keyboard accessible as ComboboxItem
- Fixed case-insensitive matching for duplicate detection

### Interactive Elements
- Added tabindex, role='button', @keydown.enter, @keydown.space to:
  - Connection cards (connect-list.vue)
  - File items (file-list.vue)
  - Navigation icons (the-aside.vue)
  - Toolbar favorites (tool-bar.vue)
  - Breadcrumb items (path-breadcrumb.vue)
  - Node cards (node-state.vue)
  - Cluster/template table headers (cluster-state.vue)

### Form Submission
- Added @submit.prevent to 8 modal dialog forms
- Fixed double-submit regression by removing redundant @click handlers
- Enter key now submits forms correctly

### Confirmation Dialogs
- Scoped Enter key to confirm buttons only (not entire dialog)
- Prevents accidental destructive actions

### Context Menus
- Added role='menu' and role='menuitem' attributes
- Implemented focus management (first item focused on open)
- Added Shift+F10 keyboard opener for editor context menus
- Added Space key handling for menu items
- Focus restored to trigger element on close

### Editor Context Menus
- Added keyboard shortcut (Shift+F10) to open context menus
- Full arrow key navigation and Enter/Space activation
- Applied to both SQL editor and ES editor

### Aria Labels
- Added aria-label to icon-only buttons in 6 dialog files
- Added translation keys for accessibility labels

### Export Target
- Refactored to single interactive button control
- Eliminated nested focus targets

## Files Modified (25)
- src/components/ui/combobox/SearchableSelect.vue
- src/components/path-breadcrumb.vue
- src/layout/components/tool-bar-right.vue
- src/views/connect/components/connect-list.vue
- src/views/connect/components/dynamodb-connect-dialog.vue
- src/views/connect/components/es-connect-dialog.vue
- src/views/editor/dynamo-editor/components/delete-confirm-modal.vue
- src/views/editor/dynamo-editor/components/sql-editor.vue
- src/views/editor/dynamo-editor/components/ui-editor.vue
- src/views/editor/es-editor/index.vue
- src/views/file/components/context-menu.vue
- src/views/file/components/file-list.vue
- src/views/file/components/new-file-dialog.vue
- src/views/import-export/components/export-target-output.vue
- src/views/manage/components/alias-dialog.vue
- src/views/manage/components/cluster-state.vue
- src/views/manage/components/create-index-modal.vue
- src/views/manage/components/delete-index-modal.vue
- src/views/manage/components/dynamo-table-manage.vue
- src/views/manage/components/index-dialog.vue
- src/views/manage/components/modify-index-modal.vue
- src/views/manage/components/shard-manage.vue
- src/views/manage/components/switch-alias-dialog.vue
- src/views/manage/components/table-settings-modal.vue
- src/views/manage/components/template-dialog.vue

Closes #396
@Blankll Blankll force-pushed the feat/keyboard-accessibility-improvements branch from e1c8309 to c4c3d88 Compare May 9, 2026 09:42
@Blankll Blankll merged commit 44d295f into master May 9, 2026
6 checks passed
@Blankll Blankll deleted the feat/keyboard-accessibility-improvements branch May 9, 2026 09:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant