Skip to content

Conversation

@alexwizp
Copy link
Contributor

@alexwizp alexwizp commented Sep 29, 2025

Closes: #204767
Closes: #221091

Summary

This PR fixes accessibility violations related to EuiTooltip usage across the codebase.

Details

  1. Ensures that all EuiTooltip components are anchored to elements that can receive keyboard focus.
  2. Added tabIndex={0} to non-interactive elements (e.g., span, EuiText) used as tooltip anchors so they are keyboard-focusable.

Why

Tooltips anchored to non-focusable elements were not accessible to keyboard users. These changes improve compliance with accessibility guidelines and ensure a better experience for all users.

More context
Fix violations of the @elastic/eui/tooltip-focusable-anchor ESLint. See elastic/eui#9051 for more details

@alexwizp alexwizp added Project:Accessibility release_note:skip Skip the PR/issue when compiling release notes backport:version Backport to applied version labels v9.2.0 v9.1.5 labels Sep 29, 2025
@alexwizp alexwizp force-pushed the sep-29 branch 2 times, most recently from e9381dc to 32ae83f Compare September 29, 2025 12:34
@alexwizp alexwizp marked this pull request as ready for review September 30, 2025 10:01
@alexwizp alexwizp requested review from a team as code owners September 30, 2025 10:01
@elasticmachine
Copy link
Contributor

Pinging @elastic/kibana-accessibility (Project:Accessibility)

@alexwizp alexwizp requested review from a team as code owners September 30, 2025 10:01
@alexwizp alexwizp requested a review from a team September 30, 2025 10:01
@alexwizp alexwizp requested a review from a team as a code owner September 30, 2025 10:01
Copy link
Contributor

@kc13greiner kc13greiner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM! Just one question

{option.value?.description ? (
<EuiToolTip position="left" content={option.value?.description}>
<EuiText size="s">{option.label}</EuiText>
<EuiText size="s" tabIndex={0}>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unsure about this one: these are options in the combo box, the arrow keys are used to navigate through them. When I tab, it just skips over it.

Is there a different attribute that could be added?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@kc13greiner Yeah... you've found another case of unusual component usage =) I'll take a look at the options how we can deal with similar cases tomorrow morning.

@alexwizp
Copy link
Contributor Author

alexwizp commented Oct 8, 2025

@elastic/kibana-core, @elastic/obs-ux-management-team, @elastic/stack-monitoring, @elastic/workflows-eng, @tomsonpl please review

@alexwizp
Copy link
Contributor Author

alexwizp commented Oct 9, 2025

@elastic/obs-ux-management-team, @elastic/stack-monitoring, @elastic/workflows-eng, @tomsonpl please review

@alexwizp alexwizp requested a review from a team as a code owner October 9, 2025 08:03
Copy link
Contributor

@consulthys consulthys left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGT Stack Monitoring
Thanks for the work!

@elasticmachine
Copy link
Contributor

elasticmachine commented Oct 9, 2025

💛 Build succeeded, but was flaky

Failed CI Steps

Test Failures

  • [job] [logs] Fleet Cypress Tests #1 / Add Integration - Real API should upgrade policies with integration update

Metrics [docs]

Async chunks

Total size of all lazy-loaded chunks that will be downloaded as the user navigates the app

id before after diff
aiops 526.3KB 526.3KB +22.0B
apm 2.8MB 2.8MB +313.0B
canvas 1.1MB 1.1MB +40.0B
cases 1.4MB 1.4MB +44.0B
cloudSecurityPosture 634.2KB 634.3KB +57.0B
console 182.4KB 182.4KB +22.0B
controls 489.2KB 489.2KB +11.0B
dashboard 661.8KB 661.8KB +24.0B
datasetQuality 422.4KB 422.4KB +52.0B
dataViewManagement 133.8KB 133.8KB +11.0B
dataVisualizer 595.1KB 595.0KB -97.0B
devTools 2.5KB 2.5KB +8.0B
discover 1.2MB 1.2MB +44.0B
embeddableAlertsTable 1004.4KB 1004.5KB +44.0B
enterpriseSearch 949.6KB 949.7KB +55.0B
esql 562.8KB 562.9KB +33.0B
eventAnnotationListing 208.9KB 208.9KB +24.0B
exploratoryView 140.7KB 140.7KB +29.0B
filesManagement 106.0KB 106.0KB +24.0B
fleet 2.1MB 2.1MB +152.0B
graph 375.3KB 375.4KB +57.0B
indexLifecycleManagement 149.7KB 149.7KB +22.0B
indexManagement 691.6KB 691.6KB +74.0B
infra 1.1MB 1.1MB +71.0B
ingestPipelines 345.9KB 345.9KB +22.0B
inspector 30.8KB 30.8KB +11.0B
lens 1.5MB 1.5MB +82.0B
lists 127.7KB 127.7KB +2.0B
maps 3.1MB 3.1MB +84.0B
ml 5.4MB 5.4MB +184.0B
monitoring 633.0KB 633.1KB +145.0B
observability 1.7MB 1.7MB +123.0B
observabilityAIAssistantApp 220.1KB 220.1KB +11.0B
observabilityOnboarding 128.1KB 128.1KB +11.0B
osquery 1.0MB 1.0MB +24.0B
painlessLab 16.4KB 16.4KB +40.0B
presentationPanel 99.0KB 99.0KB +11.0B
profiling 360.4KB 360.4KB +22.0B
savedObjectsManagement 75.9KB 75.9KB +24.0B
searchHomepage 146.3KB 146.3KB +41.0B
searchIndices 202.3KB 202.3KB +41.0B
searchprofiler 31.3KB 31.4KB +16.0B
security 482.2KB 482.2KB +90.0B
securitySolution 11.1MB 11.1MB +753.0B
slo 974.4KB 974.4KB +81.0B
snapshotRestore 251.6KB 251.7KB +19.0B
spaces 214.8KB 214.8KB +8.0B
streamsApp 901.0KB 901.1KB +64.0B
synthetics 1.0MB 1.0MB +100.0B
timelines 20.6KB 20.6KB +11.0B
transform 623.4KB 623.5KB +93.0B
triggersActionsUi 1.6MB 1.6MB +129.0B
unifiedDocViewer 273.3KB 273.3KB +15.0B
unifiedSearch 390.9KB 390.9KB +11.0B
upgradeAssistant 228.1KB 228.2KB +22.0B
uptime 491.4KB 491.5KB +88.0B
ux 136.5KB 136.5KB +6.0B
visualizations 351.0KB 351.1KB +24.0B
watcher 157.1KB 157.2KB +91.0B
workflowsManagement 2.0MB 2.0MB +11.0B
total +3.6KB

Page load bundle

Size of the bundles that are downloaded on every page load. Target size is below 100kb

id before after diff
data 434.1KB 434.1KB +11.0B
elasticAssistant 307.5KB 307.5KB +11.0B
observability 97.4KB 97.4KB -11.0B
visDefaultEditor 31.1KB 31.2KB +22.0B
total +33.0B

History

Copy link
Contributor

@skynetigor skynetigor left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@alexwizp alexwizp enabled auto-merge (squash) October 9, 2025 09:55
@alexwizp alexwizp merged commit 7088e5c into elastic:main Oct 9, 2025
13 checks passed
@kibanamachine
Copy link
Contributor

Starting backport for target branches: 9.1, 9.2

https://github.com/elastic/kibana/actions/runs/18374673215

kibanamachine added a commit to kibanamachine/kibana that referenced this pull request Oct 9, 2025
…rule (elastic#236721)

Closes: elastic#204767
Closes: elastic#221091

**Summary**

This PR fixes accessibility violations related to EuiTooltip usage
across the codebase.

**Details**

1. Ensures that all `EuiTooltip` components are anchored to elements
that can receive keyboard focus.
2. Added `tabIndex={0}` to non-interactive elements (e.g., `span`,
`EuiText`) used as tooltip anchors so they are keyboard-focusable.

**Why**

Tooltips anchored to non-focusable elements were not accessible to
keyboard users. These changes improve compliance with accessibility
guidelines and ensure a better experience for all users.

**More context**
Fix violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint.
See elastic/eui#9051 for more details

---------

Co-authored-by: kibanamachine <[email protected]>
(cherry picked from commit 7088e5c)
@kibanamachine
Copy link
Contributor

💔 Some backports could not be created

Status Branch Result
9.1 Backport failed because of merge conflicts
9.2

Note: Successful backport PRs will be merged automatically after passing CI.

Manual backport

To create the backport manually run:

node scripts/backport --pr 236721

Questions ?

Please refer to the Backport tool documentation

@alexwizp
Copy link
Contributor Author

alexwizp commented Oct 9, 2025

💚 All backports created successfully

Status Branch Result
9.1

Note: Successful backport PRs will be merged automatically after passing CI.

Questions ?

Please refer to the Backport tool documentation

alexwizp added a commit to alexwizp/kibana that referenced this pull request Oct 9, 2025
…rule (elastic#236721)

Closes: elastic#204767
Closes: elastic#221091

**Summary**

This PR fixes accessibility violations related to EuiTooltip usage
across the codebase.

**Details**

1. Ensures that all `EuiTooltip` components are anchored to elements
that can receive keyboard focus.
2. Added `tabIndex={0}` to non-interactive elements (e.g., `span`,
`EuiText`) used as tooltip anchors so they are keyboard-focusable.

**Why**

Tooltips anchored to non-focusable elements were not accessible to
keyboard users. These changes improve compliance with accessibility
guidelines and ensure a better experience for all users.

**More context**
Fix violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint.
See elastic/eui#9051 for more details

---------

Co-authored-by: kibanamachine <[email protected]>
(cherry picked from commit 7088e5c)

# Conflicts:
#	src/platform/packages/private/kbn-index-editor/src/components/file_clashes.tsx
#	src/platform/packages/private/kbn-index-editor/src/components/flyout_content.tsx
#	src/platform/packages/shared/kbn-apm-ui-shared/src/components/timestamp/index.tsx
#	src/platform/packages/shared/kbn-unified-field-list/src/components/field_stats/field_top_values_bucket.tsx
#	src/platform/plugins/shared/data/public/search/session/sessions_mgmt/components/table/columns/get_columns.tsx
#	src/platform/plugins/shared/workflows_management/public/components/workflows_empty_state/workflows_empty_state.tsx
#	x-pack/platform/plugins/shared/index_management/public/application/components/mappings_editor/components/document_fields/fields/fields_list_item.tsx
#	x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/flyout_content/details_panel.tsx
#	x-pack/platform/plugins/shared/ingest_pipelines/public/application/sections/pipelines_list/table.tsx
#	x-pack/platform/plugins/shared/streams_app/public/components/data_management/schema_editor/field_status.tsx
#	x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_enrichment/processors/processor_metrics.tsx
#	x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/classic.tsx
#	x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_management/wired.tsx
#	x-pack/platform/plugins/shared/streams_app/public/components/data_management/stream_detail_routing/idle_routing_stream_entry.tsx
#	x-pack/solutions/observability/plugins/apm/public/components/app/transaction_details/waterfall_with_summary/waterfall_container/waterfall/badge/sync_badge.tsx
#	x-pack/solutions/observability/plugins/apm/public/components/shared/trace_waterfall/bar_details.tsx
#	x-pack/solutions/observability/plugins/observability/common/components/elapsed_timestamp_tooltip.tsx
#	x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/fleet_extensions/common.tsx
#	x-pack/solutions/security/plugins/security_solution/public/management/components/console_argument_selectors/custom_scripts_selector/custom_script_selector.tsx
#	x-pack/solutions/security/plugins/security_solution/public/management/components/console_argument_selectors/pending_actions_selector/pending_actions_selector.tsx
#	x-pack/solutions/security/plugins/security_solution/public/reports/components/ai_value/compare_percentage_badge.tsx
kibanamachine added a commit that referenced this pull request Oct 9, 2025
…SLint rule (#236721) (#238227)

# Backport

This will backport the following commits from `main` to `9.2`:
- [Fix violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint
rule (#236721)](#236721)

<!--- Backport version: 9.6.6 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Alexey
Antonov","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-10-09T11:21:50Z","message":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint rule
(#236721)\n\nCloses:
https://github.com/elastic/kibana/issues/204767\nCloses:
https://github.com/elastic/kibana/issues/221091\n\n**Summary**\n\nThis
PR fixes accessibility violations related to EuiTooltip usage\nacross
the codebase.\n\n**Details**\n\n1. Ensures that all `EuiTooltip`
components are anchored to elements\nthat can receive keyboard
focus.\n2. Added `tabIndex={0}` to non-interactive elements (e.g.,
`span`,\n`EuiText`) used as tooltip anchors so they are
keyboard-focusable.\n\n**Why**\n\nTooltips anchored to non-focusable
elements were not accessible to\nkeyboard users. These changes improve
compliance with accessibility\nguidelines and ensure a better experience
for all users.\n\n**More context**\nFix violations of the
`@elastic/eui/tooltip-focusable-anchor` ESLint.\nSee
elastic/eui#9051 for more
details\n\n---------\n\nCo-authored-by: kibanamachine
<[email protected]>","sha":"7088e5c0994a2206251cc55ad8abf684797cdcde","branchLabelMapping":{"^v9.3.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Project:Accessibility","release_note:skip","Team:Fleet","ci:project-deploy-observability","Team:obs-ux-infra_services","Team:obs-ux-management","backport:version","v9.2.0","v9.1.5","v9.3.0"],"title":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint
rule","number":236721,"url":"https://github.com/elastic/kibana/pull/236721","mergeCommit":{"message":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint rule
(#236721)\n\nCloses:
https://github.com/elastic/kibana/issues/204767\nCloses:
https://github.com/elastic/kibana/issues/221091\n\n**Summary**\n\nThis
PR fixes accessibility violations related to EuiTooltip usage\nacross
the codebase.\n\n**Details**\n\n1. Ensures that all `EuiTooltip`
components are anchored to elements\nthat can receive keyboard
focus.\n2. Added `tabIndex={0}` to non-interactive elements (e.g.,
`span`,\n`EuiText`) used as tooltip anchors so they are
keyboard-focusable.\n\n**Why**\n\nTooltips anchored to non-focusable
elements were not accessible to\nkeyboard users. These changes improve
compliance with accessibility\nguidelines and ensure a better experience
for all users.\n\n**More context**\nFix violations of the
`@elastic/eui/tooltip-focusable-anchor` ESLint.\nSee
elastic/eui#9051 for more
details\n\n---------\n\nCo-authored-by: kibanamachine
<[email protected]>","sha":"7088e5c0994a2206251cc55ad8abf684797cdcde"}},"sourceBranch":"main","suggestedTargetBranches":["9.2","9.1"],"targetPullRequestStates":[{"branch":"9.2","label":"v9.2.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"9.1","label":"v9.1.5","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.3.0","branchLabelMappingKey":"^v9.3.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/236721","number":236721,"mergeCommit":{"message":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint rule
(#236721)\n\nCloses:
https://github.com/elastic/kibana/issues/204767\nCloses:
https://github.com/elastic/kibana/issues/221091\n\n**Summary**\n\nThis
PR fixes accessibility violations related to EuiTooltip usage\nacross
the codebase.\n\n**Details**\n\n1. Ensures that all `EuiTooltip`
components are anchored to elements\nthat can receive keyboard
focus.\n2. Added `tabIndex={0}` to non-interactive elements (e.g.,
`span`,\n`EuiText`) used as tooltip anchors so they are
keyboard-focusable.\n\n**Why**\n\nTooltips anchored to non-focusable
elements were not accessible to\nkeyboard users. These changes improve
compliance with accessibility\nguidelines and ensure a better experience
for all users.\n\n**More context**\nFix violations of the
`@elastic/eui/tooltip-focusable-anchor` ESLint.\nSee
elastic/eui#9051 for more
details\n\n---------\n\nCo-authored-by: kibanamachine
<[email protected]>","sha":"7088e5c0994a2206251cc55ad8abf684797cdcde"}}]}]
BACKPORT-->

Co-authored-by: Alexey Antonov <[email protected]>
@kibanamachine kibanamachine added the backport missing Added to PRs automatically when the are determined to be missing a backport. label Oct 10, 2025
@kibanamachine
Copy link
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.
cc: @alexwizp

alexwizp added a commit that referenced this pull request Oct 10, 2025
…SLint rule (#236721) (#238242)

# Backport

This will backport the following commits from `main` to `9.1`:
- [Fix violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint
rule (#236721)](#236721)

<!--- Backport version: 10.0.2 -->

### Questions ?
Please refer to the [Backport tool
documentation](https://github.com/sorenlouv/backport)

<!--BACKPORT [{"author":{"name":"Alexey
Antonov","email":"[email protected]"},"sourceCommit":{"committedDate":"2025-10-09T11:21:50Z","message":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint rule
(#236721)\n\nCloses:
https://github.com/elastic/kibana/issues/204767\nCloses:
https://github.com/elastic/kibana/issues/221091\n\n**Summary**\n\nThis
PR fixes accessibility violations related to EuiTooltip usage\nacross
the codebase.\n\n**Details**\n\n1. Ensures that all `EuiTooltip`
components are anchored to elements\nthat can receive keyboard
focus.\n2. Added `tabIndex={0}` to non-interactive elements (e.g.,
`span`,\n`EuiText`) used as tooltip anchors so they are
keyboard-focusable.\n\n**Why**\n\nTooltips anchored to non-focusable
elements were not accessible to\nkeyboard users. These changes improve
compliance with accessibility\nguidelines and ensure a better experience
for all users.\n\n**More context**\nFix violations of the
`@elastic/eui/tooltip-focusable-anchor` ESLint.\nSee
elastic/eui#9051 for more
details\n\n---------\n\nCo-authored-by: kibanamachine
<[email protected]>","sha":"7088e5c0994a2206251cc55ad8abf684797cdcde","branchLabelMapping":{"^v9.3.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Project:Accessibility","release_note:skip","Team:Fleet","ci:project-deploy-observability","Team:obs-ux-infra_services","Team:obs-ux-management","backport:version","v9.2.0","v9.1.5","v9.3.0"],"title":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint
rule","number":236721,"url":"https://github.com/elastic/kibana/pull/236721","mergeCommit":{"message":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint rule
(#236721)\n\nCloses:
https://github.com/elastic/kibana/issues/204767\nCloses:
https://github.com/elastic/kibana/issues/221091\n\n**Summary**\n\nThis
PR fixes accessibility violations related to EuiTooltip usage\nacross
the codebase.\n\n**Details**\n\n1. Ensures that all `EuiTooltip`
components are anchored to elements\nthat can receive keyboard
focus.\n2. Added `tabIndex={0}` to non-interactive elements (e.g.,
`span`,\n`EuiText`) used as tooltip anchors so they are
keyboard-focusable.\n\n**Why**\n\nTooltips anchored to non-focusable
elements were not accessible to\nkeyboard users. These changes improve
compliance with accessibility\nguidelines and ensure a better experience
for all users.\n\n**More context**\nFix violations of the
`@elastic/eui/tooltip-focusable-anchor` ESLint.\nSee
elastic/eui#9051 for more
details\n\n---------\n\nCo-authored-by: kibanamachine
<[email protected]>","sha":"7088e5c0994a2206251cc55ad8abf684797cdcde"}},"sourceBranch":"main","suggestedTargetBranches":["9.1"],"targetPullRequestStates":[{"branch":"9.2","label":"v9.2.0","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"url":"https://github.com/elastic/kibana/pull/238227","number":238227,"state":"OPEN"},{"branch":"9.1","label":"v9.1.5","branchLabelMappingKey":"^v(\\d+).(\\d+).\\d+$","isSourceBranch":false,"state":"NOT_CREATED"},{"branch":"main","label":"v9.3.0","branchLabelMappingKey":"^v9.3.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/236721","number":236721,"mergeCommit":{"message":"Fix
violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint rule
(#236721)\n\nCloses:
https://github.com/elastic/kibana/issues/204767\nCloses:
https://github.com/elastic/kibana/issues/221091\n\n**Summary**\n\nThis
PR fixes accessibility violations related to EuiTooltip usage\nacross
the codebase.\n\n**Details**\n\n1. Ensures that all `EuiTooltip`
components are anchored to elements\nthat can receive keyboard
focus.\n2. Added `tabIndex={0}` to non-interactive elements (e.g.,
`span`,\n`EuiText`) used as tooltip anchors so they are
keyboard-focusable.\n\n**Why**\n\nTooltips anchored to non-focusable
elements were not accessible to\nkeyboard users. These changes improve
compliance with accessibility\nguidelines and ensure a better experience
for all users.\n\n**More context**\nFix violations of the
`@elastic/eui/tooltip-focusable-anchor` ESLint.\nSee
elastic/eui#9051 for more
details\n\n---------\n\nCo-authored-by: kibanamachine
<[email protected]>","sha":"7088e5c0994a2206251cc55ad8abf684797cdcde"}}]}]
BACKPORT-->
@kibanamachine kibanamachine added v9.1.6 and removed backport missing Added to PRs automatically when the are determined to be missing a backport. labels Oct 10, 2025
rylnd pushed a commit to rylnd/kibana that referenced this pull request Oct 17, 2025
…rule (elastic#236721)

Closes: elastic#204767
Closes: elastic#221091

**Summary**

This PR fixes accessibility violations related to EuiTooltip usage
across the codebase.

**Details**

1. Ensures that all `EuiTooltip` components are anchored to elements
that can receive keyboard focus.
2. Added `tabIndex={0}` to non-interactive elements (e.g., `span`,
`EuiText`) used as tooltip anchors so they are keyboard-focusable.

**Why**

Tooltips anchored to non-focusable elements were not accessible to
keyboard users. These changes improve compliance with accessibility
guidelines and ensure a better experience for all users.

**More context**
Fix violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint.
See elastic/eui#9051 for more details

---------

Co-authored-by: kibanamachine <[email protected]>
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Oct 27, 2025
…rule (elastic#236721)

Closes: elastic#204767
Closes: elastic#221091

**Summary**

This PR fixes accessibility violations related to EuiTooltip usage
across the codebase.

**Details**

1. Ensures that all `EuiTooltip` components are anchored to elements
that can receive keyboard focus.
2. Added `tabIndex={0}` to non-interactive elements (e.g., `span`,
`EuiText`) used as tooltip anchors so they are keyboard-focusable.

**Why**

Tooltips anchored to non-focusable elements were not accessible to
keyboard users. These changes improve compliance with accessibility
guidelines and ensure a better experience for all users.

**More context**
Fix violations of the `@elastic/eui/tooltip-focusable-anchor` ESLint.
See elastic/eui#9051 for more details

---------

Co-authored-by: kibanamachine <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport:version Backport to applied version labels ci:project-deploy-observability Create an Observability project Project:Accessibility release_note:skip Skip the PR/issue when compiling release notes Team:actionable-obs Formerly "obs-ux-management", responsible for SLO, o11y alerting, significant events, & synthetics. Team:Fleet Team label for Observability Data Collection Fleet team Team:obs-ux-infra_services - DEPRECATED DEPRECATED - Use Team:obs-presentation. v9.1.5 v9.1.6 v9.2.0 v9.3.0

Projects

None yet