From 8e4c090e7878affc9a1b8ba63fab0352abda0834 Mon Sep 17 00:00:00 2001 From: Copilot <198982749+Copilot@users.noreply.github.com> Date: Sat, 30 May 2026 12:49:36 +0200 Subject: [PATCH] Fix `@elastic/eui/icon-accessibility-rules` lint violations across @elastic/kibana-security files (#269654) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Resolves 36 ESLint `@elastic/eui/icon-accessibility-rules` violations across 25 files owned by @elastic/kibana-security. ## Changes - **Decorative icons** (adjacent to visible text): added `aria-hidden={true}` - Logo icons, category icons, chevrons, empty spacers, inputOutput icons, document/sort icons - **Meaningful icons** (convey standalone information): added `aria-label` with i18n - Warning icon in `role_table_display.tsx` → "Deprecated" - MinusCircle icon in `privilege_display.tsx` → "None" Example: ```tsx // Decorative — icon next to visible text // Meaningful — icon conveys status independently ``` > [!WARNING] > >
> Firewall rules blocked me from connecting to one or more addresses (expand for details) > > #### I tried to connect to the following addresses, but was blocked by firewall rules: > > - `ci-stats.kibana.dev` > - Triggering command: `/home/REDACTED/.nvm/versions/node/v24.14.1/bin/node /home/REDACTED/.nvm/versions/node/v24.14.1/bin/node scripts/yarn_install_scripts.js run ldd 0.8.2` (dns block) > - Triggering command: `/home/REDACTED/.nvm/versions/node/v24.14.1/bin/node /home/REDACTED/.nvm/versions/node/v24.14.1/bin/node scripts/kbn bootstrap` (dns block) > - `clients3.google.com` > - Triggering command: `/home/REDACTED/work/kibana/kibana/node_modules/@moonrepo/core-linux-x64-gnu/moon /home/REDACTED/work/kibana/kibana/node_modules/@moonrepo/core-linux-x64-gnu/moon run :build-webpack ldd 0.8.2 > b[i]) exit(0)` (dns block) > - `detectportal.firefox.com` > - Triggering command: `/home/REDACTED/work/kibana/kibana/node_modules/@moonrepo/core-linux-x64-gnu/moon /home/REDACTED/work/kibana/kibana/node_modules/@moonrepo/core-linux-x64-gnu/moon run :build-webpack ldd 0.8.2 > b[i]) exit(0)` (dns block) > - `google.com` > - Triggering command: `/home/REDACTED/work/kibana/kibana/node_modules/@moonrepo/core-linux-x64-gnu/moon /home/REDACTED/work/kibana/kibana/node_modules/@moonrepo/core-linux-x64-gnu/moon run :build-webpack ldd 0.8.2 > b[i]) exit(0)` (dns block) > - `googlechromelabs.github.io` > - Triggering command: `/home/REDACTED/.nvm/versions/node/v24.14.1/bin/node /home/REDACTED/.nvm/versions/node/v24.14.1/bin/node install.js yp-bin/ldd ldd b/li nibrowser-gtk/sys/lib/libbrotlienc.so.1.0.7` (dns block) > - `iojs.org` > - Triggering command: `/usr/bin/curl curl -q --fail --compressed -L -s REDACTED -o -` (dns block) > > If you need me to access, download, or install something from one of these locations, you can either: > > - Configure [Actions setup steps](https://gh.io/copilot/actions-setup-steps) to set up my environment, which run before the firewall is enabled > - Add the appropriate URLs or hosts to the custom allowlist in this repository's [Copilot coding agent settings](https://github.com/elastic/kibana/settings/copilot/coding_agent) (admins only) > >
--------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: alexwizp <20072247+alexwizp@users.noreply.github.com> Co-authored-by: Alexey Antonov Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com> (cherry picked from commit a067907e6ac04afd33ea6a64b56a83dcb0aa5c09) --- .../private/interactive_setup/public/app.tsx | 2 +- .../public/cluster_configuration_form.tsx | 4 +- .../change_all_privileges.tsx | 2 +- .../kibana_privilege_table/feature_table.tsx | 8 ++- .../form_components/src/form_label.tsx | 2 +- .../form_components/src/theme_keypad_menu.tsx | 2 +- .../authentication_state_page.tsx | 2 +- .../components/login_form/login_form.tsx | 2 +- .../overwritten_session_page.test.tsx.snap | 1 + .../mapping_info_panel/mapping_info_panel.tsx | 4 +- .../rule_editor_panel/field_rule_editor.tsx | 57 +++++++++++++------ .../rule_editor_panel/rule_editor_panel.tsx | 4 +- .../rule_editor_panel/rule_group_title.tsx | 2 +- .../role_table_display/role_table_display.tsx | 13 ++++- .../collapsible_panel/collapsible_panel.tsx | 1 + .../kibana_privileges_region.test.tsx.snap | 1 + .../privilege_summary_table.tsx | 24 +++++--- .../privilege_display.tsx | 12 +++- .../privilege_space_table.tsx | 53 ++++++++++++----- .../users/edit_user/change_password_modal.tsx | 2 +- .../session/session_expiration_modal.tsx | 8 ++- .../copy_to_space_flyout_internal.tsx | 4 +- .../enabled_features/feature_table.tsx | 2 +- .../section_panel/section_panel.tsx | 1 + .../solution_view/solution_view.tsx | 8 +-- .../edit_space/edit_space_content_tab.tsx | 2 +- .../share_to_space_flyout_internal.tsx | 4 +- 27 files changed, 157 insertions(+), 70 deletions(-) diff --git a/src/platform/plugins/private/interactive_setup/public/app.tsx b/src/platform/plugins/private/interactive_setup/public/app.tsx index 50cecb1cec5d2..cd1a18b3995de 100644 --- a/src/platform/plugins/private/interactive_setup/public/app.tsx +++ b/src/platform/plugins/private/interactive_setup/public/app.tsx @@ -76,7 +76,7 @@ export const App: FunctionComponent = ({ onSuccess }) => { ${euiShadowM}; `} > - +

diff --git a/src/platform/plugins/private/interactive_setup/public/cluster_configuration_form.tsx b/src/platform/plugins/private/interactive_setup/public/cluster_configuration_form.tsx index c92e3f649f2d5..f0a7abf0bceec 100644 --- a/src/platform/plugins/private/interactive_setup/public/cluster_configuration_form.tsx +++ b/src/platform/plugins/private/interactive_setup/public/cluster_configuration_form.tsx @@ -330,7 +330,7 @@ export const CertificatePanel: FunctionComponent = ({ - + @@ -453,7 +453,7 @@ const CertificateChain: FunctionComponent = ({ certificat - + diff --git a/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/change_all_privileges.tsx b/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/change_all_privileges.tsx index d2babac312cbc..a65ec81998bdc 100644 --- a/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/change_all_privileges.tsx +++ b/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/change_all_privileges.tsx @@ -88,7 +88,7 @@ export class ChangeAllPrivilegesControl extends Component { id="xpack.security.management.editRole.changeAllPrivilegesLink" defaultMessage="Bulk actions" />{' '} - + ); diff --git a/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/feature_table.tsx b/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/feature_table.tsx index 06ae0e8ea03eb..d4b67cee6d2f6 100644 --- a/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/feature_table.tsx +++ b/x-pack/platform/packages/private/security/ui_components/src/kibana_privilege_table/feature_table.tsx @@ -111,7 +111,7 @@ export class FeatureTable extends Component { > {category.euiIconType ? ( - + ) : null} @@ -279,7 +279,11 @@ export class FeatureTable extends Component { ); - return renderFeatureMarkup(buttonContent, extraAction, ); + return renderFeatureMarkup( + buttonContent, + extraAction, + + ); } if (primaryFeaturePrivileges.length === 0) { diff --git a/x-pack/platform/packages/shared/security/form_components/src/form_label.tsx b/x-pack/platform/packages/shared/security/form_components/src/form_label.tsx index 699564a7d859f..b0682ae748810 100644 --- a/x-pack/platform/packages/shared/security/form_components/src/form_label.tsx +++ b/x-pack/platform/packages/shared/security/form_components/src/form_label.tsx @@ -51,7 +51,7 @@ export const FormLabel: FC> = (props) => { {!isEqual ? ( - + ) : undefined} diff --git a/x-pack/platform/packages/shared/security/form_components/src/theme_keypad_menu.tsx b/x-pack/platform/packages/shared/security/form_components/src/theme_keypad_menu.tsx index 84ab5ef664d0c..4f5da53b51bee 100644 --- a/x-pack/platform/packages/shared/security/form_components/src/theme_keypad_menu.tsx +++ b/x-pack/platform/packages/shared/security/form_components/src/theme_keypad_menu.tsx @@ -46,7 +46,7 @@ export const ThemeKeyPadMenu: FunctionComponent = ({ isDisabled={isDisabled} onChange={() => helpers.setValue(id)} > - + ); }; diff --git a/x-pack/platform/plugins/shared/security/public/authentication/components/authentication_state_page/authentication_state_page.tsx b/x-pack/platform/plugins/shared/security/public/authentication/components/authentication_state_page/authentication_state_page.tsx index 7d816333667d6..55d89e37f9828 100644 --- a/x-pack/platform/plugins/shared/security/public/authentication/components/authentication_state_page/authentication_state_page.tsx +++ b/x-pack/platform/plugins/shared/security/public/authentication/components/authentication_state_page/authentication_state_page.tsx @@ -27,7 +27,7 @@ export const AuthenticationStatePage: FC> = (props) => const logo = customLogo ? ( ) : ( - + ); // custom logo needs to be centered const logoStyle = customLogo ? { padding: 0 } : {}; diff --git a/x-pack/platform/plugins/shared/security/public/authentication/login/components/login_form/login_form.tsx b/x-pack/platform/plugins/shared/security/public/authentication/login/components/login_form/login_form.tsx index c33b1b837a725..a39920f2ceb5a 100644 --- a/x-pack/platform/plugins/shared/security/public/authentication/login/components/login_form/login_form.tsx +++ b/x-pack/platform/plugins/shared/security/public/authentication/login/components/login_form/login_form.tsx @@ -344,7 +344,7 @@ export class LoginForm extends Component { > - + diff --git a/x-pack/platform/plugins/shared/security/public/authentication/overwritten_session/__snapshots__/overwritten_session_page.test.tsx.snap b/x-pack/platform/plugins/shared/security/public/authentication/overwritten_session/__snapshots__/overwritten_session_page.test.tsx.snap index c7ba835e4976e..b4b7d97e6551d 100644 --- a/x-pack/platform/plugins/shared/security/public/authentication/overwritten_session/__snapshots__/overwritten_session_page.test.tsx.snap +++ b/x-pack/platform/plugins/shared/security/public/authentication/overwritten_session/__snapshots__/overwritten_session_page.test.tsx.snap @@ -21,6 +21,7 @@ exports[`OverwrittenSessionPage renders as expected 1`] = ` data-test-subj="secAuthenticationStatePageLogo" > diff --git a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/mapping_info_panel/mapping_info_panel.tsx b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/mapping_info_panel/mapping_info_panel.tsx index 9634b8415ae36..86865fdc51096 100644 --- a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/mapping_info_panel/mapping_info_panel.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/mapping_info_panel/mapping_info_panel.tsx @@ -187,7 +187,7 @@ export class MappingInfoPanel extends Component { id="xpack.security.management.editRoleMapping.switchToRoleTemplates" defaultMessage="Switch to role templates" />{' '} - + ); @@ -266,7 +266,7 @@ export class MappingInfoPanel extends Component { id="xpack.security.management.editRoleMapping.switchToRoles" defaultMessage="Switch to roles" />{' '} - + ); diff --git a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/field_rule_editor.tsx b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/field_rule_editor.tsx index 912c32aa34c50..c61c04080d802 100644 --- a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/field_rule_editor.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/field_rule_editor.tsx @@ -16,6 +16,7 @@ import { EuiFormRow, EuiIcon, EuiSelect, + EuiToolTip, } from '@elastic/eui'; import type { ChangeEvent } from 'react'; import React, { Component } from 'react'; @@ -156,21 +157,31 @@ export class FieldRuleEditor extends Component { {this.props.readOnly === false && renderAddValueButton ? ( - + disableScreenReaderOutput + > + + ) : ( - + )} @@ -182,21 +193,31 @@ export class FieldRuleEditor extends Component { {this.props.readOnly === false ? ( - this.onRemoveAlternateValue(valueIndex)} - /> + disableScreenReaderOutput + > + this.onRemoveAlternateValue(valueIndex)} + /> + ) : ( - + )} diff --git a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_editor_panel.tsx b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_editor_panel.tsx index 9fb03687fc611..e86f1ab74820f 100644 --- a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_editor_panel.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_editor_panel.tsx @@ -194,7 +194,7 @@ export class RuleEditorPanel extends Component { id="xpack.security.management.editRoleMapping.switchToJSONEditorLink" defaultMessage="Switch to JSON editor" />{' '} - + ); @@ -211,7 +211,7 @@ export class RuleEditorPanel extends Component { id="xpack.security.management.editRoleMapping.switchToVisualEditorLink" defaultMessage="Switch to visual editor" />{' '} - + ); diff --git a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_group_title.tsx b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_group_title.tsx index 614eff8c8bf82..33eac1e172690 100644 --- a/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_group_title.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/role_mappings/edit_role_mapping/rule_editor_panel/rule_group_title.tsx @@ -77,7 +77,7 @@ export const RuleGroupTitle = (props: Props) => { data-test-subj="ruleGroupTitle" > {props.rule.getDisplayTitle()} - {readOnly === false && } + {readOnly === false && } ); diff --git a/x-pack/platform/plugins/shared/security/public/management/role_table_display/role_table_display.tsx b/x-pack/platform/plugins/shared/security/public/management/role_table_display/role_table_display.tsx index 9524bbaf2c5e5..c67871ec32554 100644 --- a/x-pack/platform/plugins/shared/security/public/management/role_table_display/role_table_display.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/role_table_display/role_table_display.tsx @@ -9,6 +9,7 @@ import { EuiIcon, EuiLink, EuiToolTip } from '@elastic/eui'; import React from 'react'; import type { ApplicationStart } from '@kbn/core/public'; +import { i18n } from '@kbn/i18n'; import type { Role } from '../../../common'; import { getExtendedRoleDeprecationNotice, isRoleDeprecated } from '../../../common/model'; @@ -31,7 +32,17 @@ export const RoleTableDisplay = ({ role, navigateToApp }: Props) => { data-test-subj="roleDeprecationTooltip" >
- {role.name} + {role.name}{' '} +
); diff --git a/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/collapsible_panel/collapsible_panel.tsx b/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/collapsible_panel/collapsible_panel.tsx index c5628eae02ffa..3cc3019b4e85c 100644 --- a/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/collapsible_panel/collapsible_panel.tsx +++ b/x-pack/platform/plugins/shared/security/public/management/roles/edit_role/collapsible_panel/collapsible_panel.tsx @@ -55,6 +55,7 @@ const CollapsiblePanelTitle = ({ renders without crashing 1`] = ` class="euiTitle emotion-euiTitle-m" >