Skip to content

Conversation

@alexwizp
Copy link
Contributor

@alexwizp alexwizp commented Jul 30, 2025

Summary

This PR introduces a new ESLint rule to improve form validation consistency in EUI:

- @elastic/eui/no-unnamed-radio-group

EuiRadio, EuiRadioGroup must have a name attribute. The name attribute is required for radio inputs to be grouped correctly, ensuring only one option can be selected and improving accessibility for all users.

Problem

Ensure that all radio input components have a name attribute. The name attribute is required for radio inputs to be grouped correctly, allowing users to select only one option from a set. Without a name, radios may not behave as expected and can cause accessibility issues for assistive technologies.

Screen

image

@alexwizp alexwizp marked this pull request as ready for review July 30, 2025 14:26
@alexwizp alexwizp requested a review from a team as a code owner July 30, 2025 14:26
@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

Copy link
Contributor

@weronikaolejniczak weronikaolejniczak left a comment

Choose a reason for hiding this comment

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

🟢 LGTM! Thank you for contributing, @alexwizp.

Tests are passing:

Screenshot 2025-07-31 at 14 35 59

@weronikaolejniczak weronikaolejniczak merged commit fb993ad into elastic:main Jul 31, 2025
6 checks passed
alexwizp added a commit to elastic/kibana that referenced this pull request Aug 12, 2025
…#230068)

Closes: #212887

## Summary

This PR applies the auto-fix for the newly introduced
`@elastic/eui/no-unnamed-radio-group`
elastic/eui#8929 rule. This rule ensures that
all radio input components have a name attribute. The name attribute is
required for radio inputs to be grouped correctly, allowing users to
select only one option from a set. Without it, radios may not behave as
expected and can cause accessibility issues for assistive technologies.

## Changes Made

1. Set the `name` attribute for all radio components. Similar changes
have been applied across the entire `Kibana` codebase.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Ash <1849116+ashokaditya@users.noreply.github.com>
weronikaolejniczak added a commit to elastic/kibana that referenced this pull request Aug 13, 2025
- `@elastic/eui`: `v106.2.0` ⏩ `v106.3.0`
- `@elastic/eui-theme-borealis`: `v3.3.0` ⏩ `v3.3.1`
- `@elastic/eslint-plugin-eui`: `v2.2.1` ⏩ `v2.3.0`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

## Package updates

### `@elastic/eui`

#### [`v106.3.0`](https://github.com/elastic/eui/releases/v106.3.0)

- Added thumbUp and thumbDown icons
([#8937](elastic/eui#8937))
- Removed obsolete IE-specific CSS properties
([#8940](elastic/eui#8940))
- Updated `EuiComboBox` to allow multiline options by disabling
virtualization (`rowHeight="auto"`)
([#8934](elastic/eui#8934))

**Bug fixes**

- Fixed interactive content in header cells on `EuiDataGrid` not being
correctly removed from the tab order
([#8938](elastic/eui#8938))
- Fixed an issue where the validity state of `EuiFieldNumber` did not
update when the `isInvalid` prop value changed
([#8952](elastic/eui#8952))
- Reverted a font-size change for `xs` buttons back to `12px`
([#8930](elastic/eui#8930))
- Fixed unexpected results for the SCSS function
`lineHeightFromBaseline`
([#8922](elastic/eui#8922))
- Fixed `euiDataGridRow--selected` not applying on `EuiDataGrid` whith
`stripes={true}` ([#8925](elastic/eui#8925))
- Fixed `euiDataGridRow--marked` and `euiDataGridRow--selected` applying
hover styling on `EuiDataGrid` when `stripes={true}`
([#8925](elastic/eui#8925))

**Accessibility**

- Added a screen reader help text for entered interactive cells of
`EuiDataGrid` to provide information about exiting cells
([#8938](elastic/eui#8938))
- Added a new beta `EuiLiveAnnouncer` component which supports
`aria-live` announcements on mount
([#8916](elastic/eui#8916))
- Added `announceOnMount` prop on `EuiCallOut` to support announcing its
content on mount ([#8916](elastic/eui#8916))

### `@elastic/eui-theme-borealis`

####
[`v3.3.1`](https://www.npmjs.com/package/@elastic/eui-theme-borealis/v/3.3.1)

**Bug fixes**

- Updated shared theme SCSS imports to ensure expected results for the
SCSS function `lineHeightFromBaseline`
([#8922](elastic/eui#8922))

### `@elastic/eslint-plugin-eui`

####
[`v2.3.0`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.3.0)

- Added `EuiFlyoutResizable` to `require-aria-label-for-modals` check
([#8946](elastic/eui#8946))
- Added new `no-unnamed-radio-group` rule.
([#8929](elastic/eui#8929))
- Fixed attributes comparison issue in the `consistent-is-invalid-props`
rule. ([#8920](elastic/eui#8920))
fkanout pushed a commit to fkanout/kibana that referenced this pull request Aug 14, 2025
…elastic#230068)

Closes: elastic#212887

## Summary

This PR applies the auto-fix for the newly introduced
`@elastic/eui/no-unnamed-radio-group`
elastic/eui#8929 rule. This rule ensures that
all radio input components have a name attribute. The name attribute is
required for radio inputs to be grouped correctly, allowing users to
select only one option from a set. Without it, radios may not behave as
expected and can cause accessibility issues for assistive technologies.

## Changes Made

1. Set the `name` attribute for all radio components. Similar changes
have been applied across the entire `Kibana` codebase.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Ash <1849116+ashokaditya@users.noreply.github.com>
fkanout pushed a commit to fkanout/kibana that referenced this pull request Aug 14, 2025
- `@elastic/eui`: `v106.2.0` ⏩ `v106.3.0`
- `@elastic/eui-theme-borealis`: `v3.3.0` ⏩ `v3.3.1`
- `@elastic/eslint-plugin-eui`: `v2.2.1` ⏩ `v2.3.0`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

## Package updates

### `@elastic/eui`

#### [`v106.3.0`](https://github.com/elastic/eui/releases/v106.3.0)

- Added thumbUp and thumbDown icons
([elastic#8937](elastic/eui#8937))
- Removed obsolete IE-specific CSS properties
([elastic#8940](elastic/eui#8940))
- Updated `EuiComboBox` to allow multiline options by disabling
virtualization (`rowHeight="auto"`)
([elastic#8934](elastic/eui#8934))

**Bug fixes**

- Fixed interactive content in header cells on `EuiDataGrid` not being
correctly removed from the tab order
([elastic#8938](elastic/eui#8938))
- Fixed an issue where the validity state of `EuiFieldNumber` did not
update when the `isInvalid` prop value changed
([elastic#8952](elastic/eui#8952))
- Reverted a font-size change for `xs` buttons back to `12px`
([elastic#8930](elastic/eui#8930))
- Fixed unexpected results for the SCSS function
`lineHeightFromBaseline`
([elastic#8922](elastic/eui#8922))
- Fixed `euiDataGridRow--selected` not applying on `EuiDataGrid` whith
`stripes={true}` ([elastic#8925](elastic/eui#8925))
- Fixed `euiDataGridRow--marked` and `euiDataGridRow--selected` applying
hover styling on `EuiDataGrid` when `stripes={true}`
([elastic#8925](elastic/eui#8925))

**Accessibility**

- Added a screen reader help text for entered interactive cells of
`EuiDataGrid` to provide information about exiting cells
([elastic#8938](elastic/eui#8938))
- Added a new beta `EuiLiveAnnouncer` component which supports
`aria-live` announcements on mount
([elastic#8916](elastic/eui#8916))
- Added `announceOnMount` prop on `EuiCallOut` to support announcing its
content on mount ([elastic#8916](elastic/eui#8916))

### `@elastic/eui-theme-borealis`

####
[`v3.3.1`](https://www.npmjs.com/package/@elastic/eui-theme-borealis/v/3.3.1)

**Bug fixes**

- Updated shared theme SCSS imports to ensure expected results for the
SCSS function `lineHeightFromBaseline`
([elastic#8922](elastic/eui#8922))

### `@elastic/eslint-plugin-eui`

####
[`v2.3.0`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.3.0)

- Added `EuiFlyoutResizable` to `require-aria-label-for-modals` check
([elastic#8946](elastic/eui#8946))
- Added new `no-unnamed-radio-group` rule.
([elastic#8929](elastic/eui#8929))
- Fixed attributes comparison issue in the `consistent-is-invalid-props`
rule. ([elastic#8920](elastic/eui#8920))
alexwizp added a commit to alexwizp/kibana that referenced this pull request Aug 18, 2025
…elastic#230068)

Closes: elastic#212887

## Summary

This PR applies the auto-fix for the newly introduced
`@elastic/eui/no-unnamed-radio-group`
elastic/eui#8929 rule. This rule ensures that
all radio input components have a name attribute. The name attribute is
required for radio inputs to be grouped correctly, allowing users to
select only one option from a set. Without it, radios may not behave as
expected and can cause accessibility issues for assistive technologies.

## Changes Made

1. Set the `name` attribute for all radio components. Similar changes
have been applied across the entire `Kibana` codebase.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Ash <1849116+ashokaditya@users.noreply.github.com>
(cherry picked from commit 3b1354f)

# Conflicts:
#	x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/fleet_extensions/aws_credentials_form/aws_account_type_selector.tsx
#	x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/fleet_extensions/azure_credentials_form/azure_account_type_selector.tsx
#	x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/fleet_extensions/csp_boxed_radio_group.tsx
#	x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/fleet_extensions/gcp_credentials_form/gcp_account_type_selector.tsx
#	x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/fleet_extensions/gcp_credentials_form/gcp_credential_form.tsx
#	x-pack/solutions/security/packages/kbn-cloud-security-posture/public/src/components/fleet_extensions/policy_template_selectors.tsx
#	x-pack/solutions/security/plugins/cloud_security_posture/public/components/fleet_extensions/cnvm_kspm/kspm_eks_input_selector.tsx
alexwizp added a commit to elastic/kibana that referenced this pull request Aug 18, 2025
…t rule (#230068) (#232094)

# Backport

This will backport the following commits from `main` to `9.1`:
- [Fix violations of the @elastic/eui/no-unnamed-radio-group ESLint rule
(#230068)](#230068)

<!--- Backport version: 10.0.1 -->

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

<!--BACKPORT [{"author":{"name":"Alexey
Antonov","email":"alexwizp@gmail.com"},"sourceCommit":{"committedDate":"2025-08-12T20:31:35Z","message":"Fix
violations of the @elastic/eui/no-unnamed-radio-group ESLint rule
(#230068)\n\nCloses:
https://github.com/elastic/kibana/issues/212887\n\n## Summary\n\nThis PR
applies the auto-fix for the newly
introduced\n`@elastic/eui/no-unnamed-radio-group`\nhttps://github.com/elastic/eui/pull/8929
rule. This rule ensures that\nall radio input components have a name
attribute. The name attribute is\nrequired for radio inputs to be
grouped correctly, allowing users to\nselect only one option from a set.
Without it, radios may not behave as\nexpected and can cause
accessibility issues for assistive technologies.\n\n## Changes
Made\n\n1. Set the `name` attribute for all radio components. Similar
changes\nhave been applied across the entire `Kibana`
codebase.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\nCo-authored-by: Ash
<1849116+ashokaditya@users.noreply.github.com>","sha":"3b1354fc8b4e2cb9e274e813773bb705d026c24c","branchLabelMapping":{"^v9.2.0$":"main","^v(\\d+).(\\d+).\\d+$":"$1.$2"}},"sourcePullRequest":{"labels":["Project:Accessibility","release_note:skip","backport
missing","Team:Fleet","backport:prev-minor","Team:obs-ux-management","v9.2.0"],"title":"Fix
violations of the @elastic/eui/no-unnamed-radio-group ESLint
rule","number":230068,"url":"https://github.com/elastic/kibana/pull/230068","mergeCommit":{"message":"Fix
violations of the @elastic/eui/no-unnamed-radio-group ESLint rule
(#230068)\n\nCloses:
https://github.com/elastic/kibana/issues/212887\n\n## Summary\n\nThis PR
applies the auto-fix for the newly
introduced\n`@elastic/eui/no-unnamed-radio-group`\nhttps://github.com/elastic/eui/pull/8929
rule. This rule ensures that\nall radio input components have a name
attribute. The name attribute is\nrequired for radio inputs to be
grouped correctly, allowing users to\nselect only one option from a set.
Without it, radios may not behave as\nexpected and can cause
accessibility issues for assistive technologies.\n\n## Changes
Made\n\n1. Set the `name` attribute for all radio components. Similar
changes\nhave been applied across the entire `Kibana`
codebase.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\nCo-authored-by: Ash
<1849116+ashokaditya@users.noreply.github.com>","sha":"3b1354fc8b4e2cb9e274e813773bb705d026c24c"}},"sourceBranch":"main","suggestedTargetBranches":[],"targetPullRequestStates":[{"branch":"main","label":"v9.2.0","branchLabelMappingKey":"^v9.2.0$","isSourceBranch":true,"state":"MERGED","url":"https://github.com/elastic/kibana/pull/230068","number":230068,"mergeCommit":{"message":"Fix
violations of the @elastic/eui/no-unnamed-radio-group ESLint rule
(#230068)\n\nCloses:
https://github.com/elastic/kibana/issues/212887\n\n## Summary\n\nThis PR
applies the auto-fix for the newly
introduced\n`@elastic/eui/no-unnamed-radio-group`\nhttps://github.com/elastic/eui/pull/8929
rule. This rule ensures that\nall radio input components have a name
attribute. The name attribute is\nrequired for radio inputs to be
grouped correctly, allowing users to\nselect only one option from a set.
Without it, radios may not behave as\nexpected and can cause
accessibility issues for assistive technologies.\n\n## Changes
Made\n\n1. Set the `name` attribute for all radio components. Similar
changes\nhave been applied across the entire `Kibana`
codebase.\n\n---------\n\nCo-authored-by: kibanamachine
<42973632+kibanamachine@users.noreply.github.com>\nCo-authored-by: Ash
<1849116+ashokaditya@users.noreply.github.com>","sha":"3b1354fc8b4e2cb9e274e813773bb705d026c24c"}}]}]
BACKPORT-->
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Aug 18, 2025
…elastic#230068)

Closes: elastic#212887

## Summary

This PR applies the auto-fix for the newly introduced
`@elastic/eui/no-unnamed-radio-group`
elastic/eui#8929 rule. This rule ensures that
all radio input components have a name attribute. The name attribute is
required for radio inputs to be grouped correctly, allowing users to
select only one option from a set. Without it, radios may not behave as
expected and can cause accessibility issues for assistive technologies.

## Changes Made

1. Set the `name` attribute for all radio components. Similar changes
have been applied across the entire `Kibana` codebase.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Ash <1849116+ashokaditya@users.noreply.github.com>
NicholasPeretti pushed a commit to NicholasPeretti/kibana that referenced this pull request Aug 18, 2025
- `@elastic/eui`: `v106.2.0` ⏩ `v106.3.0`
- `@elastic/eui-theme-borealis`: `v3.3.0` ⏩ `v3.3.1`
- `@elastic/eslint-plugin-eui`: `v2.2.1` ⏩ `v2.3.0`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

## Package updates

### `@elastic/eui`

#### [`v106.3.0`](https://github.com/elastic/eui/releases/v106.3.0)

- Added thumbUp and thumbDown icons
([elastic#8937](elastic/eui#8937))
- Removed obsolete IE-specific CSS properties
([elastic#8940](elastic/eui#8940))
- Updated `EuiComboBox` to allow multiline options by disabling
virtualization (`rowHeight="auto"`)
([elastic#8934](elastic/eui#8934))

**Bug fixes**

- Fixed interactive content in header cells on `EuiDataGrid` not being
correctly removed from the tab order
([elastic#8938](elastic/eui#8938))
- Fixed an issue where the validity state of `EuiFieldNumber` did not
update when the `isInvalid` prop value changed
([elastic#8952](elastic/eui#8952))
- Reverted a font-size change for `xs` buttons back to `12px`
([elastic#8930](elastic/eui#8930))
- Fixed unexpected results for the SCSS function
`lineHeightFromBaseline`
([elastic#8922](elastic/eui#8922))
- Fixed `euiDataGridRow--selected` not applying on `EuiDataGrid` whith
`stripes={true}` ([elastic#8925](elastic/eui#8925))
- Fixed `euiDataGridRow--marked` and `euiDataGridRow--selected` applying
hover styling on `EuiDataGrid` when `stripes={true}`
([elastic#8925](elastic/eui#8925))

**Accessibility**

- Added a screen reader help text for entered interactive cells of
`EuiDataGrid` to provide information about exiting cells
([elastic#8938](elastic/eui#8938))
- Added a new beta `EuiLiveAnnouncer` component which supports
`aria-live` announcements on mount
([elastic#8916](elastic/eui#8916))
- Added `announceOnMount` prop on `EuiCallOut` to support announcing its
content on mount ([elastic#8916](elastic/eui#8916))

### `@elastic/eui-theme-borealis`

####
[`v3.3.1`](https://www.npmjs.com/package/@elastic/eui-theme-borealis/v/3.3.1)

**Bug fixes**

- Updated shared theme SCSS imports to ensure expected results for the
SCSS function `lineHeightFromBaseline`
([elastic#8922](elastic/eui#8922))

### `@elastic/eslint-plugin-eui`

####
[`v2.3.0`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.3.0)

- Added `EuiFlyoutResizable` to `require-aria-label-for-modals` check
([elastic#8946](elastic/eui#8946))
- Added new `no-unnamed-radio-group` rule.
([elastic#8929](elastic/eui#8929))
- Fixed attributes comparison issue in the `consistent-is-invalid-props`
rule. ([elastic#8920](elastic/eui#8920))
qn895 pushed a commit to qn895/kibana that referenced this pull request Aug 26, 2025
…elastic#230068)

Closes: elastic#212887

## Summary

This PR applies the auto-fix for the newly introduced
`@elastic/eui/no-unnamed-radio-group`
elastic/eui#8929 rule. This rule ensures that
all radio input components have a name attribute. The name attribute is
required for radio inputs to be grouped correctly, allowing users to
select only one option from a set. Without it, radios may not behave as
expected and can cause accessibility issues for assistive technologies.

## Changes Made

1. Set the `name` attribute for all radio components. Similar changes
have been applied across the entire `Kibana` codebase.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Ash <1849116+ashokaditya@users.noreply.github.com>
qn895 pushed a commit to qn895/kibana that referenced this pull request Aug 26, 2025
- `@elastic/eui`: `v106.2.0` ⏩ `v106.3.0`
- `@elastic/eui-theme-borealis`: `v3.3.0` ⏩ `v3.3.1`
- `@elastic/eslint-plugin-eui`: `v2.2.1` ⏩ `v2.3.0`

[Questions? Please see our Kibana upgrade
FAQ.](https://github.com/elastic/eui/blob/main/wiki/eui-team-processes/upgrading-kibana.md#faq-for-kibana-teams)

## Package updates

### `@elastic/eui`

#### [`v106.3.0`](https://github.com/elastic/eui/releases/v106.3.0)

- Added thumbUp and thumbDown icons
([elastic#8937](elastic/eui#8937))
- Removed obsolete IE-specific CSS properties
([elastic#8940](elastic/eui#8940))
- Updated `EuiComboBox` to allow multiline options by disabling
virtualization (`rowHeight="auto"`)
([elastic#8934](elastic/eui#8934))

**Bug fixes**

- Fixed interactive content in header cells on `EuiDataGrid` not being
correctly removed from the tab order
([elastic#8938](elastic/eui#8938))
- Fixed an issue where the validity state of `EuiFieldNumber` did not
update when the `isInvalid` prop value changed
([elastic#8952](elastic/eui#8952))
- Reverted a font-size change for `xs` buttons back to `12px`
([elastic#8930](elastic/eui#8930))
- Fixed unexpected results for the SCSS function
`lineHeightFromBaseline`
([elastic#8922](elastic/eui#8922))
- Fixed `euiDataGridRow--selected` not applying on `EuiDataGrid` whith
`stripes={true}` ([elastic#8925](elastic/eui#8925))
- Fixed `euiDataGridRow--marked` and `euiDataGridRow--selected` applying
hover styling on `EuiDataGrid` when `stripes={true}`
([elastic#8925](elastic/eui#8925))

**Accessibility**

- Added a screen reader help text for entered interactive cells of
`EuiDataGrid` to provide information about exiting cells
([elastic#8938](elastic/eui#8938))
- Added a new beta `EuiLiveAnnouncer` component which supports
`aria-live` announcements on mount
([elastic#8916](elastic/eui#8916))
- Added `announceOnMount` prop on `EuiCallOut` to support announcing its
content on mount ([elastic#8916](elastic/eui#8916))

### `@elastic/eui-theme-borealis`

####
[`v3.3.1`](https://www.npmjs.com/package/@elastic/eui-theme-borealis/v/3.3.1)

**Bug fixes**

- Updated shared theme SCSS imports to ensure expected results for the
SCSS function `lineHeightFromBaseline`
([elastic#8922](elastic/eui#8922))

### `@elastic/eslint-plugin-eui`

####
[`v2.3.0`](https://www.npmjs.com/package/@elastic/eslint-plugin-eui/v/2.3.0)

- Added `EuiFlyoutResizable` to `require-aria-label-for-modals` check
([elastic#8946](elastic/eui#8946))
- Added new `no-unnamed-radio-group` rule.
([elastic#8929](elastic/eui#8929))
- Fixed attributes comparison issue in the `consistent-is-invalid-props`
rule. ([elastic#8920](elastic/eui#8920))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants