Summary
RequestHistoryPanel renders a dialog with aria-modal='true' but does not move focus in on open, trap Tab, or restore focus on close; the other panel variant uses aria-hidden={!isOpen} while still containing focusable buttons.
Why this matters
Keyboard focus can land on hidden controls or escape behind the modal overlay.
Scope
Move focus to the close button on open, trap Tab within panelRef, restore focus to the trigger on close, and add inert or remove from tab order when hidden.
Relevant code in CalloraOrg/Callora-Frontend:
src/components/RequestHistoryPanel.tsx
Priority
Medium
Acceptance criteria
- Opening focuses the close button
- Tab stays within the panel
- Closing restores focus to the trigger
- Hidden panel contents are not focusable
Validation
npm test -- --run src/components/RequestHistoryPanel.test.tsx
Non-goals
- Typo-only, formatting-only, or cosmetic changes.
- Unrelated refactors, dependency upgrades, or broad rewrites.
- Removing safeguards or weakening validation to make tests pass.
Contributor application
Before coding, describe the affected modules, proposed state/invariant changes, test strategy, compatibility considerations, and an estimate. Wait for assignment before starting implementation.
PR requirements
Use a feature branch and include Closes #<issue-number>. Address every criterion, map criteria to code and tests, explain security and failure-mode handling, and ensure CI passes.
Quality review
A maintainer will assess correctness, completeness, test depth, compatibility, observability, and adverse-case handling. A substantive implementation is required; merge or CI status alone does not guarantee reward eligibility.
Generated by Claude Code
Summary
RequestHistoryPanel renders a dialog with aria-modal='true' but does not move focus in on open, trap Tab, or restore focus on close; the other panel variant uses aria-hidden={!isOpen} while still containing focusable buttons.
Why this matters
Keyboard focus can land on hidden controls or escape behind the modal overlay.
Scope
Move focus to the close button on open, trap Tab within panelRef, restore focus to the trigger on close, and add inert or remove from tab order when hidden.
Relevant code in CalloraOrg/Callora-Frontend:
src/components/RequestHistoryPanel.tsxPriority
Medium
Acceptance criteria
Validation
npm test -- --run src/components/RequestHistoryPanel.test.tsx
Non-goals
Contributor application
Before coding, describe the affected modules, proposed state/invariant changes, test strategy, compatibility considerations, and an estimate. Wait for assignment before starting implementation.
PR requirements
Use a feature branch and include
Closes #<issue-number>. Address every criterion, map criteria to code and tests, explain security and failure-mode handling, and ensure CI passes.Quality review
A maintainer will assess correctness, completeness, test depth, compatibility, observability, and adverse-case handling. A substantive implementation is required; merge or CI status alone does not guarantee reward eligibility.
Generated by Claude Code