[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers#267588
Merged
hannahbrooks merged 6 commits intoMay 6, 2026
Conversation
After creating a shared exception list, the user is navigated to the detail page. An EuiScreenReaderLive region with focusRegionOnTextChange announces the success message via explicit focus movement, which is reliable across all browsers and screen readers including VoiceOver+Safari. The default EuiScreenReaderLive live-region technique fails silently in VoiceOver+Safari due to an aria-hidden/aria-live incompatibility in EUI. focusRegionOnTextChange uses explicit focus movement instead. The component is rendered conditionally to prevent focus being stolen to an empty element on every page mount. Closes elastic#247067 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ation Replace useState/useEffect pattern with direct derivation from router state, and add the missing SHARED_EXCEPTION_LIST_CREATED_SUCCESSFULLY translation function. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…rLive" This reverts commit 69e48f4.
|
Pinging @elastic/security-detection-engine (Team:Detection Engine) |
Contributor
💚 Build Succeeded
Metrics [docs]Async chunks
History
|
Contributor
|
Starting backport for target branches: 8.19, 9.3, 9.4 https://github.com/elastic/kibana/actions/runs/25441033611 |
This was referenced May 6, 2026
Contributor
💚 All backports created successfully
Note: Successful backport PRs will be merged automatically after passing CI. Questions ?Please refer to the Backport tool documentation |
kibanamachine
added a commit
that referenced
this pull request
May 6, 2026
…eption list creation to screen readers (#267588) (#267989) # Backport This will backport the following commits from `main` to `9.4`: - [[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)](#267588) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Hannah Brooks","email":"hannah.brooks@elastic.co"},"sourceCommit":{"committedDate":"2026-05-06T14:19:12Z","message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30","branchLabelMapping":{"^v9.5.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","backport:all-open","Team:Detection Engine","v9.5.0"],"title":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers","number":267588,"url":"https://github.com/elastic/kibana/pull/267588","mergeCommit":{"message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.5.0","branchLabelMappingKey":"^v9.5.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/267588","number":267588,"mergeCommit":{"message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30"}}]}] BACKPORT--> Co-authored-by: Hannah Brooks <hannah.brooks@elastic.co>
kibanamachine
added a commit
that referenced
this pull request
May 6, 2026
…eption list creation to screen readers (#267588) (#267988) # Backport This will backport the following commits from `main` to `9.3`: - [[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)](#267588) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Hannah Brooks","email":"hannah.brooks@elastic.co"},"sourceCommit":{"committedDate":"2026-05-06T14:19:12Z","message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30","branchLabelMapping":{"^v9.5.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","backport:all-open","Team:Detection Engine","v9.5.0"],"title":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers","number":267588,"url":"https://github.com/elastic/kibana/pull/267588","mergeCommit":{"message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.5.0","branchLabelMappingKey":"^v9.5.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/267588","number":267588,"mergeCommit":{"message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30"}}]}] BACKPORT--> Co-authored-by: Hannah Brooks <hannah.brooks@elastic.co>
ersin-erdal
pushed a commit
to ersin-erdal/kibana
that referenced
this pull request
May 6, 2026
… list creation to screen readers (elastic#267588) Fixes elastic#247067 When a shared exception list is created, the user is navigated to the detail page with no screen reader announcement. **Fix:** pass the list name as router state on navigation; on the detail page, derive a message from that state and render it in `EuiScreenReaderLive` with `focusRegionOnTextChange`. The `focusRegionOnTextChange` prop is required - the default aria-live toggle path fails silently in VoiceOver+Safari (noted in EUI source). The component is conditionally rendered to avoid stealing focus on page mounts where no list was just created.
Contributor
|
Looks like this PR has backport PRs but they still haven't been merged. Please merge them ASAP to keep the branches relatively in sync. |
kibanamachine
added a commit
that referenced
this pull request
May 7, 2026
…ception list creation to screen readers (#267588) (#267987) # Backport This will backport the following commits from `main` to `8.19`: - [[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)](#267588) <!--- Backport version: 9.6.6 --> ### Questions ? Please refer to the [Backport tool documentation](https://github.com/sorenlouv/backport) <!--BACKPORT [{"author":{"name":"Hannah Brooks","email":"hannah.brooks@elastic.co"},"sourceCommit":{"committedDate":"2026-05-06T14:19:12Z","message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30","branchLabelMapping":{"^v9.5.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["release_note:skip","backport:all-open","Team:Detection Engine","v9.5.0"],"title":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers","number":267588,"url":"https://github.com/elastic/kibana/pull/267588","mergeCommit":{"message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.5.0","branchLabelMappingKey":"^v9.5.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/267588","number":267588,"mergeCommit":{"message":"[Security Solution][Detection Engine][A11y] Announce shared exception list creation to screen readers (#267588)\n\nFixes #247067\n\nWhen a shared exception list is created, the user is navigated to the\ndetail page with no screen reader announcement.\n\n**Fix:** pass the list name as router state on navigation; on the detail\npage, derive a message from that state and render it in\n`EuiScreenReaderLive` with `focusRegionOnTextChange`. The\n`focusRegionOnTextChange` prop is required - the default aria-live\ntoggle path fails silently in VoiceOver+Safari (noted in EUI source).\nThe component is conditionally rendered to avoid stealing focus on page\nmounts where no list was just created.","sha":"687055eeafe64a82a3eeb91e2cca4a6c78f25e30"}}]}] BACKPORT--> Co-authored-by: Hannah Brooks <hannah.brooks@elastic.co>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #247067
When a shared exception list is created, the user is navigated to the detail page with no screen reader announcement.
Fix: pass the list name as router state on navigation; on the detail page, derive a message from that state and render it in
EuiScreenReaderLivewithfocusRegionOnTextChange. ThefocusRegionOnTextChangeprop is required - the default aria-live toggle path fails silently in VoiceOver+Safari (noted in EUI source). The component is conditionally rendered to avoid stealing focus on page mounts where no list was just created.