# Feature DREAM-236 - Add keyboard mnemonics to DangerDialog and FeedbackDialog actions

Project: Stream Design System
Status: specified
URL: https://community.openproject.org/work_packages/DREAM-236

## Planning

| Attribute | Value |
| --- | --- |
| Date |  |
| Priority | Low |
| Target versions | Wish List |
| Sprint |  |
| Backlog bucket |  |
| Votes |  |
| List |  |
| Roadmap |  |
| Relevance |  |

## OPEN POINTS / FEEDBACK

_No work packages_

## Features and Chunks

_No work packages_

## Bugs and other work packages

_No work packages_

## Technical Details

| Attribute | Value |
| --- | --- |
| Module | Accessibility, Frontend components and Primer design system |
| Feature Flag |  |
| Requires doc change | Yes |
| Enterprise plan |  |

## Details

| Attribute | Value |
| --- | --- |
| Pull preview |  |
| Mockups |  |
| Accessibility | Yes |

## People

| Attribute | Value |
| --- | --- |
| Assignee |  |
| Accountable |  |
| Product manager |  |
| Developers |  |
| Designer |  |
| Ordered by |  |
| Signed off by |  |
| Interest by |  |

## Estimates and progress

| Attribute | Value |
| --- | --- |
| PD (min) |  |
| PD (max) |  |
| Work |  |
| Labor costs |  |

## Description

**As** a keyboard user,

**I want to** reach dialog actions using their initial letter&nbsp;

**so that** I can operate dialogs with fewer keystrokes.

**Acceptance criteria**

*   Implement mnemonics in the shared `DangerDialog` and `FeedbackDialog` components.
    
*   Within the topmost active dialog, pressing a letter focuses a visible, enabled footer button whose translated label starts with that letter.
    
*   Match case-insensitively. From outside the footer, focus the first match. From a footer button, focus the next match in DOM order, wrapping to the first. If nothing matches, leave focus unchanged.
    
*   Mnemonics only move focus. `Enter` or `Space` activates the focused button through its existing behavior.
    
*   Ignore events from text-entry inputs, textareas, selects, and editable content. Allow mnemonics when a checkbox has focus, preserving its normal `Space` behavior.
    
*   Skip disabled buttons. Mnemonics must not change confirmation checkboxes or bypass validation.
    
*   Ignore `Ctrl`, `Alt`, and `Meta` combinations, text composition, and repeated `keydown` events. Accept uppercase letters entered with `Shift`.
    
*   Prevent handled mnemonic keys from also triggering page-level shortcuts.
    
*   Disable mnemonics when **Disable keyboard shortcuts** is selected.
    
*   Preserve existing initial focus, `Tab`, `Shift+Tab`, `Escape`, and focus-return behavior.
    
*   Document dialog mnemonics in the existing **Keyboard shortcuts** help page.
    

**Validation**

Verify default and custom footer buttons, duplicate initials in translated labels, checkbox and text-input focus, disabled buttons, nested dialogs, and the keyboard-shortcut preference.

**Technical notes**

*   Evaluate reusing `focus-group` mnemonic handling. Its current implementation targets menu items and options and moves focus without activation. Preserve native button semantics.
    
*   Respect the existing **Disable keyboard shortcuts** preference to support [WCAG 2.1.4 Character Key Shortcuts](https://www.w3.org/WAI/WCAG21/Understanding/character-key-shortcuts.html), using the existing preference introduced through [DREAM-318](https://community.openproject.org/wp/DREAM-318).
