From 6d6185e510f834c65a1ccdcd834bc6fc32800062 Mon Sep 17 00:00:00 2001 From: Alexey Antonov Date: Thu, 22 Jan 2026 18:01:41 +0200 Subject: [PATCH] Address `@elastic/eui/require-table-caption` lint violations across `@elastic/fleet` files (#250004) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit > [!CAUTION] > ⚠️ **Changes / translations were made by GenAI**. I’ve reviewed them carefully, but your code owners’ expert eyes will ensure they’re 100% right. ## Summary This PR applies the auto-fix for the newly introduced `@elastic/eui/require-table-caption`. This rule ensure `EuiInMemoryTable`, `EuiBasicTable` have a `tableCaption` prop for accessibility. ## Changes 1. 🎯 Added missing `tableCaption` attributes to elements flagged by `@elastic/eui/require-table-caption` — accessibility leveled up! ## Related - https://github.com/elastic/eui/pull/9168 This time, to avoid annoying approvals collection, we've broken files down by teams. Now, we are waiting a review only from your team! --------- Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit c4e692de0688c5588961ef06045f8812b15128bc) --- .../custom_fields/global_data_tags_table.tsx | 8 +++++++- .../components/datastream_mappings.tsx | 6 ++++++ .../components/datastream_pipelines.tsx | 6 ++++++ .../package_policies/package_policies_table.tsx | 6 ++++++ .../fleet/sections/agent_policy/list_page/index.tsx | 3 +++ .../components/agent_diagnostics/index.tsx | 11 ++++++++++- .../agent_list_page/components/agent_list_table.tsx | 3 +++ .../agents/agent_list_page/components/view_errors.tsx | 9 ++++++++- .../agents/enrollment_token_list_page/index.tsx | 6 ++++++ .../agents/uninstall_token_list_page/index.tsx | 4 ++++ .../fleet/sections/data_stream/list_page/index.tsx | 3 +++ .../components/download_source_table/index.tsx | 1 + .../settings/components/fleet_proxies_table/index.tsx | 11 ++++++++++- .../components/fleet_server_hosts_table/index.tsx | 3 +++ .../settings/components/outputs_table/index.tsx | 11 ++++++++++- .../epm/screens/detail/documentation/index.tsx | 10 +++++++++- .../detail/policies/components/agent_based_table.tsx | 6 ++++++ .../detail/policies/components/agentless_table.tsx | 6 ++++++ 18 files changed, 107 insertions(+), 6 deletions(-) diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/custom_fields/global_data_tags_table.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/custom_fields/global_data_tags_table.tsx index 1a30d9ad14fe0..dac00ea0b21fe 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/custom_fields/global_data_tags_table.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/components/agent_policy_advanced_fields/custom_fields/global_data_tags_table.tsx @@ -453,7 +453,13 @@ export const GlobalDataTagsTable: React.FunctionComponent = ({ ) : ( <> - + = ({ itemId="id" items={packagePolicies} columns={columns} + tableCaption={i18n.translate( + 'xpack.fleet.policyDetails.packagePoliciesTable.tableCaption', + { + defaultMessage: 'Integration policies', + } + )} sorting={{ sort: { field: 'name', diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/list_page/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/list_page/index.tsx index e27fa53da5831..e7c2ba8b9ac09 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/list_page/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agent_policy/list_page/index.tsx @@ -386,6 +386,9 @@ export const AgentPolicyListPage: React.FunctionComponent<{}> = () => { /> ) } + tableCaption={i18n.translate('xpack.fleet.agentPolicyList.agentPolicies.tableCaption', { + defaultMessage: 'List of agent policies', + })} items={agentPolicyData ? agentPolicyData.items : []} itemId="id" columns={columns} diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx index d0d37dd4bfd1a..06a7df81793f0 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_details_page/components/agent_diagnostics/index.tsx @@ -346,7 +346,16 @@ export const AgentDiagnosticsTab: React.FunctionComponent {isLoading ? ( ) : ( - items={visibleDiagnosticsEntries} columns={columns} /> + + items={visibleDiagnosticsEntries} + columns={columns} + tableCaption={i18n.translate( + 'xpack.fleet.requestDiagnostics.agentDiagnosticsUploads.tableCaption', + { + defaultMessage: 'Agent diagnostics uploads', + } + )} + /> )} ); diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx index 0735eec4f6a9d..4f0f95f02e2a8 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/agent_list_table.tsx @@ -347,6 +347,9 @@ export const AgentListTable: React.FC = (props: Props) => { className="fleet__agentList__table" data-test-subj="fleetAgentListTable" + tableCaption={i18n.translate('xpack.fleet.agentList.tableCaption', { + defaultMessage: 'Fleet agents', + })} loading={isLoading} noItemsMessage={noItemsMessage} items={agentsShown} diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/view_errors.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/view_errors.tsx index 4a15f99638db0..e422c130f7c95 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/view_errors.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/agent_list_page/components/view_errors.tsx @@ -100,7 +100,14 @@ export const ViewErrors: React.FunctionComponent<{ action: ActionStatus }> = ({ return ( <> - + ); diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/index.tsx index 9457b43b681b3..eda9e0496358f 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/enrollment_token_list_page/index.tsx @@ -275,6 +275,12 @@ export const EnrollmentTokenListPage: React.FunctionComponent<{}> = () => { data-test-subj="enrollmentTokenListTable" + tableCaption={i18n.translate( + 'xpack.fleet.enrollmentTokensList.enrollmentTokens.tableCaption', + { + defaultMessage: 'List of enrollment tokens', + } + )} loading={isLoading} noItemsMessage={ isLoading ? ( diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/uninstall_token_list_page/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/uninstall_token_list_page/index.tsx index 5c7899b1277b8..d6da531625805 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/uninstall_token_list_page/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/agents/uninstall_token_list_page/index.tsx @@ -15,6 +15,7 @@ import { EuiBasicTable, EuiText, EuiIconTip } from '@elastic/eui'; import React, { useCallback, useMemo, useState } from 'react'; import { FormattedDate, FormattedMessage } from '@kbn/i18n-react'; import type { SendRequestResponse } from '@kbn/es-ui-shared-plugin/public'; +import { i18n } from '@kbn/i18n'; import { EmptyPolicyNameHint } from '../../../../../components/uninstall_command_flyout/empty_policy_name_hint'; @@ -200,6 +201,9 @@ export const UninstallTokenListPage = () => { data-test-subj="uninstallTokenListTable" + tableCaption={i18n.translate('xpack.fleet.uninstallTokenList.tableCaption', { + defaultMessage: 'List of uninstall tokens', + })} items={tokens} columns={columns} itemId="id" diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/data_stream/list_page/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/data_stream/list_page/index.tsx index bb9d9ae4a0ba9..34352b48c5a2b 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/data_stream/list_page/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/data_stream/list_page/index.tsx @@ -250,6 +250,9 @@ export const DataStreamListPage: React.FunctionComponent<{}> = () => { ); }; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx index 9bb7d37a851a6..1543a8251cbf3 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_proxies_table/index.tsx @@ -124,5 +124,14 @@ export const FleetProxiesTable: React.FunctionComponent ]; }, [deleteFleetProxy, getHref, authz.fleet.allSettings]); - return ; + return ( + + ); }; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx index 66be604203cf4..2187cf13d9aff 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/fleet_server_hosts_table/index.tsx @@ -172,6 +172,9 @@ export const FleetServerHostsTable: React.FunctionComponent ); diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx index 40757e165be9c..e6aa47a26b053 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/fleet/sections/settings/components/outputs_table/index.tsx @@ -194,5 +194,14 @@ export const OutputsTable: React.FunctionComponent = ({ ]; }, [deleteOutput, getHref, authz.fleet.allSettings, enableSyncIntegrations]); - return ; + return ( + + ); }; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/documentation/index.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/documentation/index.tsx index e550d61147d3b..3e93254c4d376 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/documentation/index.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/documentation/index.tsx @@ -21,6 +21,8 @@ import { import type { EuiInMemoryTableProps } from '@elastic/eui'; import { FormattedMessage } from '@kbn/i18n-react'; +import { i18n } from '@kbn/i18n'; + import type { PackageInfo, RegistryVarsEntry, @@ -292,7 +294,13 @@ const VarsTable: React.FunctionComponent<{ vars: RegistryVarsEntry[] }> = ({ var /> - + ); }; diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.tsx index abaa81b8f908d..ae9d8b298b1a6 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agent_based_table.tsx @@ -304,6 +304,12 @@ export const AgentBasedPackagePoliciesTable = ({ ]} loading={isLoading} data-test-subj="integrationPolicyTable" + tableCaption={i18n.translate( + 'xpack.fleet.epm.packageDetails.integrationList.tableCaption', + { + defaultMessage: 'Integration policies', + } + )} pagination={{ pageIndex: pagination.pagination.currentPage - 1, pageSize: pagination.pagination.pageSize, diff --git a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agentless_table.tsx b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agentless_table.tsx index 138cebcded67a..ab60c573e61d0 100644 --- a/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agentless_table.tsx +++ b/x-pack/platform/plugins/shared/fleet/public/applications/integrations/sections/epm/screens/detail/policies/components/agentless_table.tsx @@ -332,6 +332,12 @@ export const AgentlessPackagePoliciesTable = ({ }, }, ]} + tableCaption={i18n.translate( + 'xpack.fleet.epm.packageDetails.integrationList.agentlessPoliciesTableCaption', + { + defaultMessage: 'Agentless integration policies', + } + )} loading={isLoading} data-test-subj="integrationPolicyTable" pagination={{