From e2b65682b24945539a7b0cb54cb9349dcd240a57 Mon Sep 17 00:00:00 2001
From: Alexey Antonov
Date: Wed, 21 Jan 2026 10:06:10 +0200
Subject: [PATCH] Address `@elastic/eui/require-table-caption` lint violations
across `@elastic/kibana-data-discovery` files (#246176)
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!
(cherry picked from commit 4d43ef8b17904ce299122784e2e391f7c1b2bfda)
# Conflicts:
# src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/relationships_table/i18n.ts
# src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/relationships_table/relationships_table.tsx
# src/platform/plugins/shared/saved_objects_finder/public/finder/saved_object_finder.tsx
---
examples/data_view_field_editor_example/moon.yml | 1 +
.../data_view_field_editor_example/public/app.tsx | 5 +++++
.../data_view_field_editor_example/tsconfig.json | 1 +
examples/field_formats_example/moon.yml | 1 +
examples/field_formats_example/public/app.tsx | 7 +++++++
examples/field_formats_example/tsconfig.json | 1 +
examples/partial_results_example/moon.yml | 1 +
examples/partial_results_example/public/app/app.tsx | 4 ++++
examples/partial_results_example/tsconfig.json | 1 +
.../__snapshots__/static_lookup.test.tsx.snap | 2 ++
.../editors/static_lookup/static_lookup.tsx | 9 ++++++++-
.../field_format_editor/samples/samples.tsx | 3 +++
.../delete_data_view_flyout_content.tsx | 13 ++++++++++++-
.../table/__snapshots__/table.test.tsx.snap | 3 ++-
.../indexed_fields_table/components/table/table.tsx | 9 ++++++++-
.../edit_index_pattern/relationships_table/i18n.ts | 7 +++++++
.../relationships_table/relationships_table.tsx | 2 ++
.../table/__snapshots__/table.test.tsx.snap | 1 +
.../components/table/table.tsx | 4 ++++
.../table/__snapshots__/table.test.tsx.snap | 1 +
.../source_filters_table/components/table/table.tsx | 8 ++++++++
.../__snapshots__/field_editor.test.tsx.snap | 1 +
.../public/components/field_editor/field_editor.tsx | 8 +++++++-
.../index_pattern_table/index_pattern_table.tsx | 1 +
.../public/finder/saved_object_finder.tsx | 3 +++
25 files changed, 92 insertions(+), 5 deletions(-)
diff --git a/examples/data_view_field_editor_example/moon.yml b/examples/data_view_field_editor_example/moon.yml
index d2b04a1280dd3..261c572ef3373 100644
--- a/examples/data_view_field_editor_example/moon.yml
+++ b/examples/data_view_field_editor_example/moon.yml
@@ -23,6 +23,7 @@ dependsOn:
- '@kbn/data-views-plugin'
- '@kbn/data-view-field-editor-plugin'
- '@kbn/developer-examples-plugin'
+ - '@kbn/i18n'
tags:
- plugin
- prod
diff --git a/examples/data_view_field_editor_example/public/app.tsx b/examples/data_view_field_editor_example/public/app.tsx
index 03c943b332ecc..f9fc758d2c758 100644
--- a/examples/data_view_field_editor_example/public/app.tsx
+++ b/examples/data_view_field_editor_example/public/app.tsx
@@ -7,6 +7,7 @@
* License v3.0 only", or the "Server Side Public License, v 1".
*/
+import { i18n } from '@kbn/i18n';
import type { DefaultItemAction } from '@elastic/eui';
import {
EuiProvider,
@@ -129,6 +130,10 @@ const DataViewFieldEditorExample = ({ dataView, dataViewFieldEditor }: Props) =>
direction: 'asc',
},
}}
+ tableCaption={i18n.translate('dataViewFieldEditorExample.fieldsTable.caption', {
+ defaultMessage: 'Fields in {dataViewTitle}',
+ values: { dataViewTitle: dataView.title },
+ })}
/>
>
) : (
diff --git a/examples/data_view_field_editor_example/tsconfig.json b/examples/data_view_field_editor_example/tsconfig.json
index 66974e0a6bc03..bf4d2038e673f 100644
--- a/examples/data_view_field_editor_example/tsconfig.json
+++ b/examples/data_view_field_editor_example/tsconfig.json
@@ -18,5 +18,6 @@
"@kbn/data-views-plugin",
"@kbn/data-view-field-editor-plugin",
"@kbn/developer-examples-plugin",
+ "@kbn/i18n",
]
}
diff --git a/examples/field_formats_example/moon.yml b/examples/field_formats_example/moon.yml
index 14c6fb218bf6a..7b6237308b4d6 100644
--- a/examples/field_formats_example/moon.yml
+++ b/examples/field_formats_example/moon.yml
@@ -24,6 +24,7 @@ dependsOn:
- '@kbn/data-plugin'
- '@kbn/data-view-field-editor-plugin'
- '@kbn/field-types'
+ - '@kbn/i18n'
tags:
- plugin
- prod
diff --git a/examples/field_formats_example/public/app.tsx b/examples/field_formats_example/public/app.tsx
index ab7b5e5fc71fc..0c31857e7aacd 100644
--- a/examples/field_formats_example/public/app.tsx
+++ b/examples/field_formats_example/public/app.tsx
@@ -8,6 +8,7 @@
*/
import React from 'react';
+import { i18n } from '@kbn/i18n';
import {
EuiBasicTable,
EuiCallOut,
@@ -62,6 +63,9 @@ const UsingAnExistingFieldFormatExample: React.FC<{ deps: Deps }> = (props) => {
= (props) => {
{datatable ? (
({
field,
diff --git a/examples/partial_results_example/tsconfig.json b/examples/partial_results_example/tsconfig.json
index ff8e676729282..750bf424817ac 100644
--- a/examples/partial_results_example/tsconfig.json
+++ b/examples/partial_results_example/tsconfig.json
@@ -16,5 +16,6 @@
"@kbn/core",
"@kbn/developer-examples-plugin",
"@kbn/expressions-plugin",
+ "@kbn/i18n",
]
}
diff --git a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/static_lookup/__snapshots__/static_lookup.test.tsx.snap b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/static_lookup/__snapshots__/static_lookup.test.tsx.snap
index 2631d6e2a4e6c..a763878defe0e 100644
--- a/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/static_lookup/__snapshots__/static_lookup.test.tsx.snap
+++ b/src/platform/plugins/shared/data_view_field_editor/public/components/field_format_editor/editors/static_lookup/__snapshots__/static_lookup.test.tsx.snap
@@ -54,6 +54,7 @@ exports[`StaticLookupFormatEditor should render multiple lookup entries and unkn
},
]
}
+ tableCaption="Static lookup entries"
/>
-
+
compressed={true}
items={samples}
columns={columns}
+ tableCaption={i18n.translate('indexPatternFieldEditor.samples.tableCaption', {
+ defaultMessage: 'Sample input and output values',
+ })}
/>
) : null;
diff --git a/src/platform/plugins/shared/data_view_management/public/components/delete_data_view_flyout/delete_data_view_flyout_content.tsx b/src/platform/plugins/shared/data_view_management/public/components/delete_data_view_flyout/delete_data_view_flyout_content.tsx
index 425cf1ab5c331..19ad04a8a5698 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/delete_data_view_flyout/delete_data_view_flyout_content.tsx
+++ b/src/platform/plugins/shared/data_view_management/public/components/delete_data_view_flyout/delete_data_view_flyout_content.tsx
@@ -46,6 +46,13 @@ const tableTitle = i18n.translate('indexPatternManagement.dataViewTable.tableTit
defaultMessage: 'Data views selected for deletion',
});
+const relationshipsTableCaption = i18n.translate(
+ 'indexPatternManagement.dataViewTable.relationshipsTableCaption',
+ {
+ defaultMessage: 'Kibana objects using this data view',
+ }
+);
+
export const spacesWarningText = i18n.translate(
'indexPatternManagement.dataViewTable.deleteWarning',
{
@@ -124,7 +131,11 @@ export const DeleteModalContent: React.FC = ({
>
)}
-
+
);
itemIdToExpandedRowMapValues[id] = relationsTable;
diff --git a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap
index 955f341c33a80..cf165cd9cb101 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap
+++ b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/__snapshots__/table.test.tsx.snap
@@ -57,7 +57,7 @@ exports[`Table render conflict summary modal 1`] = `
/>
}
rowHeader="firstName"
- tableCaption="Demo of EuiBasicTable"
+ tableCaption="Field type conflicts across indices"
tableLayout="auto"
/>
@@ -306,6 +306,7 @@ exports[`Table should render normally 1`] = `
},
}
}
+ tableCaption="Indexed fields"
tableLayout="fixed"
/>
`;
diff --git a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx
index 8727eb15ac73c..ffaa947b8fbc7 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx
+++ b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/indexed_fields_table/components/table/table.tsx
@@ -333,7 +333,10 @@ export const getConflictModalContent = ({
/>
items={relationships}
columns={columns}
+ tableCaption={relationshipsTableCaption}
pagination={{
pageSize,
}}
diff --git a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/__snapshots__/table.test.tsx.snap b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/__snapshots__/table.test.tsx.snap
index f3fee53256c67..7905ba607b07b 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/__snapshots__/table.test.tsx.snap
+++ b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/__snapshots__/table.test.tsx.snap
@@ -96,6 +96,7 @@ exports[`Table should render normally 1`] = `
},
}
}
+ tableCaption="Scripted fields"
tableLayout="fixed"
/>
`;
diff --git a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx
index c967e07437508..73e4169153912 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx
+++ b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/scripted_fields_table/components/table/table.tsx
@@ -157,6 +157,10 @@ class TableClass extends PureComponent<
pagination={pagination}
sorting={sorting}
onTableChange={onTableChange}
+ tableCaption={i18n.translate(
+ 'indexPatternManagement.editIndexPattern.scripted.table.caption',
+ { defaultMessage: 'Scripted fields' }
+ )}
/>
);
}
diff --git a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/__snapshots__/table.test.tsx.snap b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/__snapshots__/table.test.tsx.snap
index 9469bacfc8a7d..f0f293b312a12 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/__snapshots__/table.test.tsx.snap
+++ b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/__snapshots__/table.test.tsx.snap
@@ -100,6 +100,7 @@ exports[`Table should render normally 1`] = `
},
}
}
+ tableCaption="Source filters"
tableLayout="fixed"
/>
`;
diff --git a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx
index e1236f40ea225..ee32d4f77e4cf 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx
+++ b/src/platform/plugins/shared/data_view_management/public/components/edit_index_pattern/source_filters_table/components/table/table.tsx
@@ -46,6 +46,13 @@ const matchesDescription = i18n.translate(
{ defaultMessage: 'Language used for the field' }
);
+const tableCaption = i18n.translate(
+ 'indexPatternManagement.editIndexPattern.source.table.caption',
+ {
+ defaultMessage: 'Source filters',
+ }
+);
+
const editAria = i18n.translate('indexPatternManagement.editIndexPattern.source.table.editAria', {
defaultMessage: 'Edit',
});
@@ -250,6 +257,7 @@ class TableClass extends Component<
pagination={pagination}
sorting={sorting}
onTableChange={onTableChange}
+ tableCaption={tableCaption}
/>
);
}
diff --git a/src/platform/plugins/shared/data_view_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap b/src/platform/plugins/shared/data_view_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap
index 6d068c2b63b7e..d519912268077 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap
+++ b/src/platform/plugins/shared/data_view_management/public/components/field_editor/__snapshots__/field_editor.test.tsx.snap
@@ -1307,6 +1307,7 @@ exports[`FieldEditor should show multiple type field warning with a table contai
},
]
}
+ tableCaption="Indices listed by conflicting field type"
/>
-
+
);
diff --git a/src/platform/plugins/shared/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx b/src/platform/plugins/shared/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx
index 3600c76089bf9..0f264382d3c03 100644
--- a/src/platform/plugins/shared/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx
+++ b/src/platform/plugins/shared/data_view_management/public/components/index_pattern_table/index_pattern_table.tsx
@@ -392,6 +392,7 @@ export const IndexPatternTable = ({ history, canSave, setShowCreateDialog, title
onTableChange={onTableChange}
search={search}
selection={dataViews.getCanSaveSync() ? selection : undefined}
+ tableCaption={title}
/>
{flyoutOpen && (
diff --git a/src/platform/plugins/shared/saved_objects_finder/public/finder/saved_object_finder.tsx b/src/platform/plugins/shared/saved_objects_finder/public/finder/saved_object_finder.tsx
index 57814ddb50a9e..0b21ed6ef4046 100644
--- a/src/platform/plugins/shared/saved_objects_finder/public/finder/saved_object_finder.tsx
+++ b/src/platform/plugins/shared/saved_objects_finder/public/finder/saved_object_finder.tsx
@@ -407,6 +407,9 @@ class SavedObjectFinderUiClass extends React.Component<
columns={columns}
data-test-subj="savedObjectsFinderTable"
message={this.props.noItemsMessage}
+ tableCaption={i18n.translate('savedObjectsFinder.tableCaption', {
+ defaultMessage: 'Saved objects search results',
+ })}
search={search}
pagination={pagination}
sorting={!!this.state.query?.text ? undefined : sorting}