From 31f67702bd6444512b2db68bd9271d1d00637e89 Mon Sep 17 00:00:00 2001 From: Ivan Minchev Date: Fri, 9 Oct 2026 13:55:16 +0300 Subject: [PATCH 1/6] feat(radio): update radio xplat topic (cherry picked from commit d14ff6996ccd0eb1914b46dbed75b1e997e2125e) --- .../general/cli/component-templates.mdx | 2 +- .../content/en/components/radio-button.mdx | 330 ------- .../en/components/themes/roundness.mdx | 2 +- .../src/content/en/components/toc.json | 2 +- .../en/grids_templates/column-hiding.mdx | 4 +- .../src/assets/images/radio/radio-do-dont.png | Bin 0 -> 132112 bytes .../content/en/components/inputs/radio.mdx | 882 ++++++++++++++---- .../accessibility-compliance.mdx | 4 +- docs/xplat/src/content/en/toc.json | 4 +- 9 files changed, 698 insertions(+), 532 deletions(-) delete mode 100644 docs/angular/src/content/en/components/radio-button.mdx create mode 100644 docs/xplat/src/assets/images/radio/radio-do-dont.png diff --git a/docs/angular/src/content/en/components/general/cli/component-templates.mdx b/docs/angular/src/content/en/components/general/cli/component-templates.mdx index f36297e414..d073cce00c 100644 --- a/docs/angular/src/content/en/components/general/cli/component-templates.mdx +++ b/docs/angular/src/content/en/components/general/cli/component-templates.mdx @@ -64,7 +64,7 @@ These templates generate components into an existing Angular workspace only. The | badge | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c badge newBadge
Ignite UI CLI:
ig add badge newBadge
Basic IgxBadge sample.
| [IgxBadge](../../inputs/badge.mdx) displaying a status indicator. | | button-group | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c button-group newButtonGroup
Ignite UI CLI:
ig add button-group newButtonGroup
Basic IgxButtonGroup sample.
| [IgxButtonGroup](../../inputs/button-group.mdx) with a set of toggle buttons. | | checkbox | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c checkbox newCheckbox
Ignite UI CLI:
ig add checkbox newCheckbox
Basic IgxCheckbox sample.
| [IgxCheckbox](../../inputs/checkbox.mdx) for binary choices. | -| radio | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c radio newRadio
Ignite UI CLI:
ig add radio newRadio
Basic IgxRadio sample.
| [IgxRadio](../../radio-button.mdx) buttons for selecting a single option from a set. | +| radio | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c radio newRadio
Ignite UI CLI:
ig add radio newRadio
Basic IgxRadio sample.
| [IgxRadio](../../inputs/radio.mdx) buttons for selecting a single option from a set. | | switch | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c switch newSwitch
Ignite UI CLI:
ig add switch newSwitch
Basic IgxSwitch sample.
| [IgxSwitch](../../inputs/switch.mdx) for toggling between on and off states. | | rating | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c rating newRating
Ignite UI CLI:
ig add rating newRating
Basic igc-rating (Web Components) sample.
| [Rating](../../inputs/rating.mdx) component for selecting a value from a range of symbols. | | icon | Ignite UI Schematics collection:
ng g @igniteui/angular-schematics:c icon newIcon
Ignite UI CLI:
ig add icon newIcon
Basic IgxIcon sample.
| [IgxIcon](../../layouts/icon.mdx) displaying Material icons. | diff --git a/docs/angular/src/content/en/components/radio-button.mdx b/docs/angular/src/content/en/components/radio-button.mdx deleted file mode 100644 index 2b65760caa..0000000000 --- a/docs/angular/src/content/en/components/radio-button.mdx +++ /dev/null @@ -1,330 +0,0 @@ ---- -title: Angular Radio and Radio Group – Ignite UI for Angular | Infragistics | MIT license -description: With Ignite UI for Angular Radio Button and Radio Group controls, developers can seamlessly present lists of options for users to select for better UI in template-driven and reactive forms. -keywords: Angular Radio Group component, Angular Radio Group control, Ignite UI for Angular, UI controls, Angular widgets, web widgets, UI widgets, Angular, Native Angular Components Suite, Angular UI Components, Native Angular Components Library -license: MIT -llms: - description: "The Ignite UI for Angular Radio Button component allows the user to select a single option from an available set of options that are listed side by side." ---- - -import DocsAside from 'igniteui-astro-components/components/mdx/DocsAside.astro'; -import Sample from 'igniteui-astro-components/components/mdx/Sample.astro'; -import ApiLink from 'igniteui-astro-components/components/mdx/ApiLink.astro'; - -# Angular Radio & Radio Group Component Overview - -## Radio Button - -
-The Ignite UI for Angular Radio Button component allows the user to select a single option from an available set of options that are listed side by side. -
- -## Angular Radio & Radio Group Example - - - -
- -## Getting Started with Ignite UI for Angular Radio Button - -To get started with the Ignite UI for Angular Radio Button component, first you need to install Ignite UI for Angular. In an existing Angular application, type the following command: - -```cmd -ng add igniteui-angular -``` - -For a complete introduction to the Ignite UI for Angular, read the [_getting started_](/general/getting-started) topic. - -The next step is to import the `IgxRadioModule` in the **app.module.ts** file. - -```typescript -// app.module.ts - -... -import { IgxRadioModule } from 'igniteui-angular/radio'; -// import { IgxRadioModule } from '@infragistics/igniteui-angular'; for licensed package - -@NgModule({ - ... - imports: [..., IgxRadioModule], - ... -}) -export class AppModule { - public selected: any; -} -``` - -Alternatively, as of `16.0.0` you can import the `IgxRadioGroupDirective` and `IgxRadioComponent` as standalone dependencies, or use the [`IGX_RADIO_GROUP_DIRECTIVES`](https://github.com/IgniteUI/igniteui-angular/blob/master/projects/igniteui-angular/radio/src/radio/radio-group/public_api.ts) token to import the component and all of its supporting components and directives. - -```typescript -// home.component.ts - -import { FormsModule } from '@angular/forms'; -import { IGX_RADIO_GROUP_DIRECTIVES } from 'igniteui-angular/radio'; -// import { IGX_RADIO_GROUP_DIRECTIVES } from '@infragistics/igniteui-angular'; for licensed package - -@Component({ - selector: 'app-home', - template: ` - - London - New York - Tokyo - Sofia - - `, - styleUrls: ['home.component.scss'], - standalone: true, - imports: [IGX_RADIO_GROUP_DIRECTIVES, FormsModule], - /* or imports: [IgxRadioComponent, IgxRadioGroupDirective, FormsModule] */ -}) -export class HomeComponent { - public selected: any; -} -``` - -Now that you have the Ignite UI for Angular Radio Button module or directives imported, you can start using the `igx-radio-group` directive and `igx-radio` component. - -## Using the Angular Radio Button - -Radio buttons can be displayed using the following code inside the component template: - -```html -Option 1 -Option 2 -``` - -### Label - -The `labelPosition` property can be used to change the default position of the label in the radio component. Users can choose between `before` and `after`. If not specified, the label will be placed after the radio button. - -```html -Option 1 -Option 2 -``` - - - -### Properties - -Let's enhance the previous sample by adding four radio buttons, each responsible for applying a certain color as a background. We will bind the backgroundColor property of a div element to the component's selectedColor property. You will notice that selectedColor also participates in a two way binding relation through the `NgModel` directive, therefore its value is updated each time the user selects a different radio button (color). - -```typescript -// radiogroup.component.ts -... -public colors = [{ - hex: '#f06a2f', - name: 'Carrot' -}, { - hex: '#ff134a', - name: 'Watermelon' -}, { - hex: '#7bc96f', - name: 'Grass' -}, -{ - hex: 'transparent', - name: 'No color' -}]; - -public selectedColor: string = this.colors[3].hex; -``` - -```html -{/*radiogroup.component.html*/} - - {{color.name}} - - -
... -
-``` - -Pay attention that if you don't use the `NgModel` directive in a two-way data binding, you must import the `FormsModule` and add it to the NgModule's imports list. - -The final result would be something like that: - - - -## Styling - -### Radio Theme Property Map - -When you modify a primary property, all related dependent properties are automatically updated to reflect the change: - -| Primary Property | Dependent Property | Description | -| --- | --- | --- | -| **$empty-color** | $hover-color | Border and dot colors on hover | -| | $focus-outline-color (indigo) | Focus outline color (Indigo theme) | -| **$fill-color** | $fill-color-hover | Checked dot color on hover | -| | $fill-hover-border-color (non-bootstrap) | Checked border color on hover | -| | $focus-border-color (bootstrap) | Focus border color | -| | $focus-outline-color (bootstrap) | Focus outlined color | -| | $focus-outline-color-filled (indigo) | Focus outline color when radio is filled | -| **$label-color** | $label-color-hover | Label text color on hover | -| **$error-color** | $error-color-hover | Label, border, and dot color in invalid state on hover | -| | $focus-outline-color-error | Focus outline color in invalid state | - -To get started with styling the radio buttons, we need to import the `index` file, where all the theme functions and the `tokens()` mixin are exported: - -```scss -@use "igniteui-angular/theming" as *; - -// IMPORTANT: Prior to Ignite UI for Angular version 13 use: -// @import '~igniteui-angular/lib/core/styles/themes/index'; -``` - -Following the simplest approach, we create a new theme that extends the . By providing just two key parameters — `$empty-color` and `$fill-color` — you can generate a fully styled radio button. These values serve as the foundation for the theme, by providing them it will automatically compute all the required foreground and background colors for various states (e.g., hover, selected, disabled). - -```scss -$custom-radio-theme: radio-theme( - $empty-color: #345779, - $fill-color: #2dabe8, -); -``` - -Finally, **include** the custom theme in your application: - -```scss -:host { - @include tokens($custom-radio-theme); -} -``` - - - - -The sample uses the [Fluent Light](/themes/sass/schemas#predefined-schemas) schema. - - -
- -### Styling with Tailwind - -You can style the `radio button` using our custom Tailwind utility classes. Make sure to [set up Tailwind](/themes/misc/tailwind-classes) first. - -Along with the tailwind import in your global stylesheet, you can apply the desired theme utilities as follows: - -```scss -@import "tailwindcss"; -... -@use 'igniteui-theming/tailwind/utilities/material.css'; -``` - -The utility file includes both `light` and `dark` theme variants. - -- Use `light-*` classes for the light theme. -- Use `dark-*` classes for the dark theme. -- Append the component name after the prefix, e.g., `light-radio`, `dark-radio`. - -Once applied, these classes enable dynamic theme calculations. From there, you can override the generated CSS variables using `arbitrary properties`. After the colon, provide any valid CSS color format (HEX, CSS variable, RGB, etc.). - -You can find the full list of properties in the . The syntax is as follows: - -```html - - New York - -``` - - -The exclamation mark(`!`) is required to ensure the utility class takes precedence. Tailwind applies styles in layers, and without marking these styles as important, they will get overridden by the component’s default theme. - - -At the end your radio button should look like this: - - - -## Radio Group - -
-The Ignite UI for Angular Radio Group directive provides a grouping container that allows better control over the child radio components and supports template-driven and reactive forms. -
- -### Demo - - - -
- -### Usage - -The Radio Group Directive is exported as an `NgModule`, thus all you need to do in your application is to import the `IgxRadioModule` in the **app.module.ts** file: - -```typescript -// app.module.ts -... -import { IgxRadioModule } from 'igniteui-angular/radio'; -// import { IgxRadioModule } from '@infragistics/igniteui-angular'; for licensed package - -@NgModule({ - ... - imports: [..., IgxRadioModule], - ... -}) -``` - -To get started, create an and add several components. - -Note that, setting a property for the radio group is **mandatory**. - -```html -{/*radio-group.component.html*/} - - - {{fruit}} - - -``` - -```typescript -// radio-group.component.ts -public fruits = ["Apple", "Mango", "Banana", "Orange"]; -``` - -### Alignment - -Use the input property to change the orientation of the `igxRadio` components in the radio group. Users can choose between `horizontal` and `vertical`. By default the radio group alignment is horizontal. - -```typescript -//sample.component.ts -import { RadioGroupAlignment } from "igniteui-angular/radio"; -... -public alignment = RadioGroupAlignment.vertical; -... -``` - -```html -{/* sample.component.html */} - - London - New York - Tokyo - Sofia - -``` - - - -
- -## API References -
-- -- -- -## Theming Dependencies - -- - -## Additional Resources - -
- -Our community is active and always welcoming to new ideas. - -- [Ignite UI for Angular **Forums**](https://www.infragistics.com/community/forums/f/ignite-ui-for-angular) -- [Ignite UI for Angular **GitHub**](https://github.com/IgniteUI/igniteui-angular) diff --git a/docs/angular/src/content/en/components/themes/roundness.mdx b/docs/angular/src/content/en/components/themes/roundness.mdx index 4995d3d3ba..016c5dabbb 100644 --- a/docs/angular/src/content/en/components/themes/roundness.mdx +++ b/docs/angular/src/content/en/components/themes/roundness.mdx @@ -20,7 +20,7 @@ Many Ignite UI components have predefined minimum and maximum border-radius valu When you set `--ig-radius-factor` to 0, the component uses its minimum border-radius and will appear more block-like with sharp corners. When set to 1, the component uses its maximum predefined border-radius and will appear rounded. Here is a list of the components that have predefined minimum and maximum border-radius values and can be modified using the `--ig-radius-factor` variable:
-• [Action Strip](/action-strip) • [Button](inputs/button) • [Button Group](/inputs/button-group) • [Calendar](/calendar) • [Card](/layouts/card) • [Carousel](/layouts/carousel) • [Checkbox](/inputs/checkbox) • [Chip](/inputs/chip) • [Combo](/combo) • [Date Picker](/date-picker) • [Date Range Picker](/date-range-picker) • [Grid](/grid/grid) • [Input Group](/input-group) • [Linear Progress](/linear-progress) • [List](/list) • [Month Picker](/month-picker) • [Navigation Drawer](/navdrawer) • [Radio](/radio-button) • [Ripple](/ripple) • [Snackbar](/snackbar) • [Switch](inputs/switch) • [Toast](/toast) +• [Action Strip](/action-strip) • [Button](inputs/button) • [Button Group](/inputs/button-group) • [Calendar](/calendar) • [Card](/layouts/card) • [Carousel](/layouts/carousel) • [Checkbox](/inputs/checkbox) • [Chip](/inputs/chip) • [Combo](/combo) • [Date Picker](/date-picker) • [Date Range Picker](/date-range-picker) • [Grid](/grid/grid) • [Input Group](/input-group) • [Linear Progress](/linear-progress) • [List](/list) • [Month Picker](/month-picker) • [Navigation Drawer](/navdrawer) • [Radio](/inputs/radio) • [Ripple](/ripple) • [Snackbar](/snackbar) • [Switch](inputs/switch) • [Toast](/toast) ## Usage diff --git a/docs/angular/src/content/en/components/toc.json b/docs/angular/src/content/en/components/toc.json index 556134dbb6..78a2147caf 100644 --- a/docs/angular/src/content/en/components/toc.json +++ b/docs/angular/src/content/en/components/toc.json @@ -2022,7 +2022,7 @@ }, { "name": "Radio & Radio Group", - "href": "radio-button.mdx", + "href": "inputs/radio.mdx", "new": false }, { diff --git a/docs/angular/src/content/en/grids_templates/column-hiding.mdx b/docs/angular/src/content/en/grids_templates/column-hiding.mdx index d503175e0d..37ad09a54f 100644 --- a/docs/angular/src/content/en/grids_templates/column-hiding.mdx +++ b/docs/angular/src/content/en/grids_templates/column-hiding.mdx @@ -395,7 +395,7 @@ We can also allow the user to choose the display order of the columns in the col - **Alphabetical** (order the columns alphabetically) - **DisplayOrder** (order the columns according to the way they are displayed in the {ComponentTitle}) -Let's create a couple of nicely designed radio buttons for our options! We just have to go ahead and get the [**IgxRadio**](/radio-button) module. +Let's create a couple of nicely designed radio buttons for our options! We just have to go ahead and get the [**IgxRadio**](/inputs/radio) module. ```typescript // app.module.ts @@ -572,7 +572,7 @@ In some component templates, Emulated View Encapsulation can still prevent the g ## API References -In this article we learned how to use the built-in column hiding UI in the {ComponentTitle}'s toolbar and we defined it as a separate component as well. We introduced a UI that allows the user to choose between different column orders and we set our own custom title and filter prompt texts. We also used an additional Ignite UI for Angular component - the [**IgxRadio**](/radio-button) button. +In this article we learned how to use the built-in column hiding UI in the {ComponentTitle}'s toolbar and we defined it as a separate component as well. We introduced a UI that allows the user to choose between different column orders and we set our own custom title and filter prompt texts. We also used an additional Ignite UI for Angular component - the [**IgxRadio**](/inputs/radio) button. In this article we learned how to use the built-in column hiding UI in the {ComponentTitle}'s toolbar. diff --git a/docs/xplat/src/assets/images/radio/radio-do-dont.png b/docs/xplat/src/assets/images/radio/radio-do-dont.png new file mode 100644 index 0000000000000000000000000000000000000000..a6891458b3c851683c24a6e166e5f7ab3664b1c9 GIT binary patch literal 132112 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�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 -## {ProductName} Radio Example + - + + + -### Usage + +## Anatomy - +The {Platform} Radio Group contains radio buttons, and each radio button is made of a radio control and a label. + -First, you need to install the {ProductName} by running the following command: + -Before using the and the , you need to register them as follows: +1. Radio Button Label: indicates the content you want to select or unselect
+2. Radio Button: indicates if the state is selected. The default state of the input is unselected
+3. Button Group: a container that groups related options and allows only one selection at a time
-```ts -import { defineComponents, IgcRadioComponent, IgcRadioGroupComponent } from 'igniteui-webcomponents'; -import 'igniteui-webcomponents/themes/light/bootstrap.css'; +The following diagram shows the element structure of the {Platform} Radio Group. Each radio button pairs its radio control with label content, which can be placed before or after the control. -defineComponents(IgcRadioComponent, IgcRadioGroupComponent); + + +```text +igx-radio-group — groups the radio buttons +└── igx-radio — one per option + ├── .igx-radio__composite — the radio control + └── .igx-radio__label — the projected label content ``` -For a complete introduction to the {ProductName}, read the [**Getting Started**](../general-getting-started.mdx) topic. + + + +```text +igc-radio-group — groups the radio buttons +└── igc-radio — one per option + └── [part="base"] — wraps the control and the label + ├── [part="control"] — the radio control + └── [part="label"] — the slotted label content +``` +## Getting Started +To use the {Platform} Radio and Radio Group, follow the [{ProductName} Getting Started](../general/getting-started.mdx)[{ProductName} Getting Started](../general-getting-started.mdx) topic for the basic project setup, then import or register the components for your target platform. - + +Import the and , a theme, and register the components: -First, you need to the install the corresponding {ProductName} npm package by running the following command: +```ts +import { defineComponents, IgcRadioComponent, IgcRadioGroupComponent } from 'igniteui-webcomponents'; +import 'igniteui-webcomponents/themes/light/bootstrap.css'; -```cmd -npm install igniteui-react +defineComponents(IgcRadioComponent, IgcRadioGroupComponent); ``` -You will then need to import the and the , its necessary CSS, and register its module, like so: + + + + +Import the and wrappers and a theme: ```tsx -import { IgrRadio, IgrRadioGroupComponent } from 'igniteui-react'; +import { IgrRadio, IgrRadioGroup } from 'igniteui-react'; import 'igniteui-webcomponents/themes/light/bootstrap.css'; ``` - - - - Register the {ProductName} services: ```csharp @@ -92,20 +135,29 @@ You will also need to link an additional CSS file to apply the styling to the ``` - + + +Import the component and the directive: + +```ts +import { IgxRadioComponent, IgxRadioGroupDirective } from 'igniteui-angular/radio'; +``` + +Add both to the `imports` collection of your component, or add the `IGX_RADIO_GROUP_DIRECTIVES` collection, which contains them, and then use the `igx-radio-group` and `igx-radio` elements in your template. -The simplest way to start using the is as follows: + + +After registration, place the {Platform} Radio components inside a Radio Group and give the group a `name`, so that users can select only one of the options. Set `value` on each radio button to identify the selected option. ```html - - Apple - Banana - Mango - Orange + + Apple + Banana + Mango ``` @@ -114,11 +166,10 @@ The simplest way to start using the is as fo ```tsx - - Apple + + Apple Banana - Mango - Orange + Mango ``` @@ -127,65 +178,95 @@ The simplest way to start using the is as fo ```razor - - Apple - Banana - Mango - Orange + + Apple + Banana + Mango ``` + - -The component doesn't work with the standard `
` element. Use `Form` instead. +```html + + Apple + Banana + Mango + +``` + + + + + + +The {Platform} Radio components are mutually exclusive only when they share a `name`. The Radio Group applies its `name` to every radio button it contains; radio buttons without a `name` act independently of each other. -## Examples + -### Label +### Prerequisites and Version Compatibility -To provide a meaningful label for the , simply place some text between the opening and closing tags: +The {Platform} Radio and Radio Group ship in the following package. The samples in this topic are built with the version listed next to it. - + -```tsx -Label -``` +| Package | Version used in the samples | +| --- | --- | +| `igniteui-angular` | 22.2.0 | -```html -Apple -``` +| Package | Version used in the samples | +| --- | --- | +| `igniteui-webcomponents` | 7.4.1 | + + + + + +| Package | Version used in the samples | +| --- | --- | +| `igniteui-react` | 19.9.0 | -```razor -Apple -``` +| Package | Version used in the samples | +| --- | --- | +| `IgniteUI.Blazor` (or `IgniteUI.Blazor.Trial`) | 26.1.98 | -You can specify if the label should be positioned before or after the button by setting the attribute. Allowed values are `before` and `after`(default): +## Usage - +### Layout -```tsx -Apple +The {Platform} Radio places its label after the radio control by default. Set the property to `before` to place the label before the control. In a vertical Radio Group, radio buttons with the label before the control align to the end of the group. + + + +```html + + Yellow + Orange + ``` - + -```html -Apple +```tsx + + Yellow + Orange + ``` @@ -193,30 +274,41 @@ You can specify if the label should be positioned before or after the ```razor -Apple + + Yellow + Orange + ``` -The can also be labelled by elements external to it. In this case the user is given full control to position and style the label in accordance to their needs. - - - + -```tsx -<> - Label - - +```html + + Yellow + Orange + ``` +A radio button can also be labelled by an element outside of it. Reference the element with `aria-labelledby` when you need full control over where the label sits and how it looks. + ```html -Label - +Express delivery + +``` + + + + + +```tsx +Express delivery + ``` @@ -224,81 +316,113 @@ The can also be labelled by elements externa ```razor -Label - +Express delivery + ``` - + +```html +Express delivery + +``` + + -### Checked + -You can use the attribute to toggle on the radio. + - + -```tsx - - Apple - Banana - Mango - Orange - -``` + +### Orientation + +The {Platform} Radio Group stacks its radio buttons in a column or places them in a row. Set the property to `vertical` or `horizontal`. The default alignment is `horizontal``vertical`. + ```html - - Apple - Banana - Mango - Orange + + Line + Bar + Pie ``` + + +```tsx + + Line + Bar + Pie + +``` + + + ```razor - - Apple - Banana - Mango - Orange + + Line + Bar + Pie ``` - + +```html + + Line + Bar + Pie + +``` + + -### Invalid + -You can use the attribute to mark the radio as invalid. + - + -```tsx - -``` + +### Interaction States + +The {Platform} Radio shows a hover state when the pointer is over it and a focus ring when it receives keyboard focus. Set the property to show the invalid state, which draws the radio control in the error color of the theme. + ```html - +Daily Updates +``` + + + + + +```tsx +Daily Updates ``` @@ -306,138 +430,189 @@ You can use the ```razor - +Daily Updates ``` - + +```html +Daily Updates +``` + +The following sample shows the hover, focused, and focused and hovered states for checked, unchecked, and invalid radio buttons. -### Disabled + -You can use the attribute to disable the radio. + - + -```tsx - - Apple - Banana - Mango - Orange - -``` + + + +### Disabled States + +Set the property to disable a {Platform} Radio. A disabled radio button can't be selected, and keyboard navigation skips it. + ```html - - Apple - Banana - Mango - Orange + + 18-27 + 28-39 + 40-55 ``` + + +```tsx + + 18-27 + 28-39 + 40-55 + +``` + + + ```razor - - Apple - Banana - Mango - Orange + + 18-27 + 28-39 + 40-55 ``` - + +```html + + 18-27 + 28-39 + 40-55 + +``` + + -### Group Alignment + -The allows you to easily change the placement directionality of the radio buttons it contains using the attribute. Allowed values are `vertical`(default) and `horizontal`. + - + -```tsx - - Apple - Banana - Mango - Orange - -``` + +### On/Off States + +A {Platform} Radio is either on (checked) or off. Set the property on a radio button to turn it on, or set the of the Radio Group to turn on the radio button with the matching value. Turning a radio button on turns off the other radio buttons in the group. + ```html - - Apple - Banana - Mango - Orange + + 18-27 + 28-39 + 40-55 ``` + + +```tsx + + 18-27 + 28-39 + 40-55 + +``` + + + ```razor - - Apple - Banana - Mango - Orange + + 18-27 + 28-39 + 40-55 ``` - + +```html + + 18-27 + 28-39 + 40-55 + +``` + + -### Forms + -You can use the and attributes when using the radio with `Form`. + - + -```tsx - - Apple - Banana - Mango - Orange - -``` + +### Forms + +The {Platform} Radio submits the `value` of the selected radio button under the group's `name`. Set the property on a radio button of the group to require a selection before the form is submitted. + ```html - - Apple - Banana - Mango - Orange - + + + Apple + Banana + Orange + + +``` + + + + + +```tsx +
+ + Apple + Banana + Orange + +
```
@@ -445,49 +620,372 @@ You can use the a ```razor - - Apple - Banana - Mango - Orange + + Apple + Banana + Orange ``` + +The component doesn't work with a standard HTML `
` element in Blazor. Use the Blazor `EditForm` component instead. + + + + + + +The Radio Group works with template-driven and reactive forms. Bind the selected value with `ngModel` or a form control on `igx-radio-group`: + +```html + + + Apple + Banana + Orange + + +``` +
+### Do/Don't + +When extending a Radio Group with additional items, make sure that they are aligned consistently and form a single column. Avoid layout in multiple columns, as well as situations with more than one Radio element with on state at a time. + +
+
+ Do: list the radio buttons of a group in a single column with one option on. Don't: split them into multiple columns or turn on more than one option. +
+
+ +## Properties + +The following properties cover the {Platform} Radio and Radio Group options documented on this page. See the API references for the complete generated list. + +| Name | Type | Default | Description | +| --- | --- | --- | --- | +| | `boolean` | `false` | Gets or sets whether the radio button is on. | +| | `boolean` | `false` | Gets or sets whether the radio button is disabled. | +| | `boolean` | `false` | Gets or sets whether the radio button is in the invalid state. | +| | `LabelPosition``ToggleLabelPosition` | `after` | Sets whether the label is placed before or after the radio control. | +| | `boolean` | `false` | Gets or sets whether a selection is required. | +| | `any``string` | — | Gets or sets the value submitted with the form when the radio button is on. | +| (Radio Group) | `RadioGroupAlignment``ContentOrientation` | `horizontal``vertical` | Sets whether the radio buttons are stacked in a column or placed in a row. | +| (Radio Group) | `any``string` | — | Gets or sets the value of the radio button that is on. | +| | `string` | — | Gets or sets the name that groups radio buttons together. | +| (Radio Group) | `string` | — | Gets or sets the name applied to all radio buttons in the group. | + +## Events + +The {Platform} Radio emits an event when the user turns a radio button on. + +| Name | Description | +| --- | --- | +| `change` (Radio and Radio Group)`igcChange``onChange``Change` | Emitted when the checked state of a radio button changes. The event arguments carry the `checked` state and the `value` of the radio button. | + ## Styling -The component exposes several CSS parts (`base`, `control`, and `label`) to give you full control over its styling. +The {Platform} Radio is styled through the {ProductName} theme and the CSS variables it generates. CSS parts give you access to the internal elements of the radio button. The following sample draws the radio buttons of a shipping form with a custom palette and typeface. -```css -igc-radio::part(control) { - --size: 18px; + + + + + + + + + + + + +### Sass Theming + +Create a theme with the `radio-theme` function and include it with the `tokens` mixin. Setting `$empty-color` and `$fill-color` is enough for a fully styled radio button, because the theme derives the remaining colors from them. + + + +```scss +@use "igniteui-angular/theming" as *; + +$custom-radio-theme: radio-theme( + $empty-color: #345779, + $fill-color: #2dabe8, +); + +:host { + @include tokens($custom-radio-theme); } +``` + + + + -igc-radio-group { - padding: 12px; +```scss +@use "igniteui-theming" as *; + +$custom-radio-theme: radio-theme( + $empty-color: #345779, + $fill-color: #2dabe8, +); + +:root { + @include tokens($custom-radio-theme); } +``` + + + +When you set a primary parameter, the theme derives its dependent parameters: + +| Primary parameter | Dependent parameters | What it changes | +| --- | --- | --- | +| `$empty-color` | `$hover-color`, `$focus-outline-color` (Indigo) | The border of an unchecked radio button. | +| `$fill-color` | `$fill-color-hover`, `$fill-hover-border-color`, `$focus-border-color` (Bootstrap), `$focus-outline-color` (Bootstrap), `$focus-outline-color-filled` (Indigo) | The border and dot of a checked radio button. | +| `$label-color` | `$label-color-hover` | The label text. | +| `$error-color` | `$error-color-hover`, `$focus-outline-color-error` | The label, border, and dot in the invalid state. | + +### CSS Variables + +Set the following CSS variables on a radio button, or on one of its ancestors, to change its colors without a Sass theme: + +| Variable | What it changes | +| --- | --- | +| `--ig-radio-label-color` | The label text. | +| `--ig-radio-empty-color` | The border of an unchecked radio button. | +| `--ig-radio-empty-fill-color` | The fill of an unchecked radio button. | +| `--ig-radio-fill-color` | The border and dot of a checked radio button. | +| `--ig-radio-hover-color` | The border and dot on hover. | +| `--ig-radio-fill-color-hover` | The dot of a checked radio button on hover. | +| `--ig-radio-error-color` | The label, border, and dot in the invalid state. | +| `--ig-radio-disabled-color` | The border and dot of a disabled radio button. | +| `--ig-radio-disabled-label-color` | The label of a disabled radio button. | +| `--ig-radio-focus-outline-color` | The focus outline. | -igc-radio::part(checked)::after { - background-color: var(--ig-success-500); + + +### Style Parts + +Use the following CSS parts to target the internal elements of the {Platform} Radio. Each part also carries the `checked` part name while the radio button is on, so `::part(control checked)` targets only a checked radio control. + +| Part | What it styles | +| --- | --- | +| `base` | The wrapper of the radio control and the label. | +| `control` | The radio control. | +| `label` | The label. | + +```css +igc-radio { + --ig-radio-fill-color: #0176ff; + --ig-radio-empty-color: #a9b8cc; } igc-radio::part(label) { - color: var(--ig-secondary-800); + color: #002b5c; + font-weight: 600; } ``` - + + +### Styling with Tailwind + +You can style the {Platform} Radio with the custom Tailwind utility classes from `igniteui-theming`. Make sure to [set up Tailwind](/themes/misc/tailwind-classes)[set up Tailwind](/themes/tailwind) first, then import the utilities in your global stylesheet: + +```css +@import "tailwindcss"; +@import "igniteui-theming/tailwind/utilities/material.css"; +``` + +Use the `light-radio` or `dark-radio` class for the corresponding theme and override its CSS variables with arbitrary properties: + + + +```tsx +Tokyo +``` + + + + + +```html +Tokyo +``` + + + + + +```razor +Tokyo +``` + + + + + +```html +Tokyo +``` + + + +The exclamation mark (`!`) gives the Tailwind utility precedence over the default theme styles of the Radio. + + + + + + + + + + + + + +## Accessibility + +The {Platform} Radio renders a native radio input, so assistive technologies announce each radio button with its role, label, and checked state. + +### Keyboard Interaction + +The {Platform} Radio Group moves focus and selection between its enabled radio buttons with the arrow keys. Disabled radio buttons are skipped. + +| Key | Action | +| --- | --- | +| Tab / Shift+Tab | Moves focus into or out of the Radio Group. | +| Arrow Down / Arrow Right | Moves focus to the next enabled radio button and turns it on. From the last radio button, moves to the first one. In right-to-left layouts, Arrow Right moves to the previous radio button. | +| Arrow Up / Arrow Left | Moves focus to the previous enabled radio button and turns it on. From the first radio button, moves to the last one. In right-to-left layouts, Arrow Left moves to the next radio button. | +| Space | Turns on the focused radio button. | +| Enter | Submits the form that contains the radio button. | + + + +When a radio button in the group is on, it is the only tab stop of the group. When none of the radio buttons is on, each of them is a tab stop. + + + +### Screen Readers / ARIA + +- Each {Platform} Radio renders a native ``, which exposes the radio role, the checked state, and the disabled and required states. The input also sets `aria-invalid` from the `invalid` property. +- The label content of the radio button is its accessible name. When the label is outside the component, connect it with `aria-labelledby`. + +- The Radio Group renders the `radiogroup` role and sets `aria-orientation` from its `alignment`. +- Give the Radio Group an accessible name, for example with `aria-labelledby` pointing to the question it answers. + + + + + +- The `igx-radio-group` element doesn't render a `radiogroup` role. Add `role="radiogroup"` and an accessible name, for example with `aria-labelledby`, when the group needs to be announced as one question. + + + +### Accessibility Compliance + +Verify the rendered {Platform} Radio and Radio Group against the accessibility requirements of your application. + +| Criterion | How the component supports the requirement | +| --- | --- | +| [2.1.1 Keyboard](https://www.w3.org/WAI/WCAG21/Understanding/keyboard) | Users move between the enabled radio buttons and turn them on with the arrow keys and Space. | +| [4.1.2 Name, Role, Value](https://www.w3.org/WAI/WCAG21/Understanding/name-role-value) | Each radio button exposes its label as the accessible name, the radio role, and its checked state through the native radio input. | + +Your responsibilities: + +- Give every radio button meaningful label content, and give the Radio Group an accessible name. +- Keep the focus ring visible and preserve sufficient contrast when you customize the Radio colors. +- Show a validation message in the surrounding form when the Radio is invalid, so the error isn't conveyed by color alone. +- Test the rendered Radio Group with keyboard navigation and the assistive technologies your users rely on. + +## Known Limitations + + + +The {Platform} Radio and Radio Group have no known limitations. + + + + + +The {Platform} Radio and Radio Group have the following known limitation: + +- The Radio doesn't work with a standard HTML `
` element in Blazor. Use the Blazor `EditForm` component instead. + + + + + +The {Platform} Radio and Radio Group have the following known limitation: + +- The `igx-radio-group` element doesn't render a `radiogroup` role. Add the role and an accessible name to the element yourself. + + ## API References +See the complete {Platform} Radio and Radio Group API references: + +- -
-
+ + +- +- + + + + + +- + + + +## Dependencies + +The {Platform} Radio requires a theme stylesheet to apply its visual styling. See the framework-specific setup in [**Getting Started**](../general/getting-started.mdx)[**Getting Started**](../general-getting-started.mdx). The Radio also uses the for its ripple effect. ## Additional Resources +Use the following {Platform} resources for API details and project support: + - [{ProductName} **Forums**]({ForumsLink}) - [{ProductName} **GitHub**]({GithubLink}) + +## Related Components + +The {Platform} Radio is intended for one choice from a short list of mutually exclusive options. Use the following related components for other kinds of choices: + +- [Checkbox](./checkbox.mdx) - Use Checkbox when users can select more than one option. +- [Switch](./switch.mdx) - Use Switch when the control turns a single setting on or off immediately. +- [Select](../select.mdx)[Select](./select.mdx) - Use Select when the list of options is long or space is limited. + +## FAQ + +These frequently asked questions cover common {Platform} Radio and Radio Group selection, form, and state scenarios. + + + + Handle the `igcChange``onChange``Change``change` event on the {Platform} Radio Group. The change event arguments carry the `value` of the radio button the user turned on. You can also bind the selected value with `ngModel` or a form control on `igx-radio-group`. The change event doesn't fire when you set the Radio Group `value` in code. + + + Set the {Platform} Radio Group `value` to the `value` of the radio button you want to turn on. You can also set `checked` on that radio button, which turns off the other radio buttons in the group. Selecting a radio button in code doesn't fire the change event. Setting the Radio Group `value` doesn't fire the `change` event. To select a radio button and fire the `change` event, call the `select()` method of that radio button. + + + Users can't turn off a selected {Platform} Radio by clicking it again, which is the standard radio button behavior. To clear the selection in code, set the Radio Group `value` to an empty string or another value that none of its radio buttons has.To clear the selection in code, set the Radio Group `value`, or the form control bound to the group, to `null`. If users need to clear the selection themselves, add a "None" option or a separate clear button. + + + {Platform} Radio buttons are mutually exclusive only when they share the same `name`, so radio buttons without a shared `name` can be on at the same time. Set `name` on the Radio Group, which applies it to all of its radio buttons, or set the same `name` on each radio button.{Platform} Radio buttons are mutually exclusive when they're placed in the same `igx-radio-group`, which generates a shared `name` when you don't set one. Place radio buttons that belong together in one Radio Group instead of using standalone radio buttons. + + + Set `required` on any radio button of the {Platform} Radio Group, and the whole group requires a selection before the form can be submitted. When the form is submitted, the group's `name` is sent with the `value` of the selected radio button.Set `required` on any radio button of the {Platform} Radio Group, and the whole group requires a selection. Place the Radio Group in a Blazor `EditForm`, because the Radio doesn't work with a standard HTML `` element in Blazor.Set `required` on the {Platform} Radio Group, or add `Validators.required` to the form control bound to the group. The form stays invalid until the user turns on one of the radio buttons. + + + The {Platform} Radio Group doesn't have a `disabled` property of its own. To disable the whole group, set `disabled` on each of its radio buttons, for example by binding all of them to the same state.When the {Platform} Radio Group is bound to a reactive form control, call `disable()` on the control to disable all of its radio buttons. Without a form control, set `disabled` on each `igx-radio`, because the Radio Group doesn't have a `disabled` input. + + diff --git a/docs/xplat/src/content/en/components/interactivity/accessibility-compliance.mdx b/docs/xplat/src/content/en/components/interactivity/accessibility-compliance.mdx index d22346fba5..adae5703a0 100644 --- a/docs/xplat/src/content/en/components/interactivity/accessibility-compliance.mdx +++ b/docs/xplat/src/content/en/components/interactivity/accessibility-compliance.mdx @@ -110,7 +110,7 @@ This index records what each component's documentation covers today. **Not docum | [Month Picker](../month-picker.mdx#keyboard-navigation) | Documented | Not documented yet | [Keyboard navigation](../month-picker.mdx#keyboard-navigation) | | [Navbar](../navbar.mdx) | Not documented yet | Not documented yet | — | | [Navigation Drawer](../navdrawer.mdx) | Not documented yet | Not documented yet | — | -| [Radio](../radio-button.mdx) | Not documented yet | Not documented yet | — | +| [Radio](../inputs/radio.mdx#accessibility) | Documented | Documented | [Accessibility](../inputs/radio.mdx#accessibility) | | [Rating](../inputs/rating.mdx#accessibility) | Documented | Documented | [Accessibility](../inputs/rating.mdx#accessibility) | | [Select](../select.mdx#keyboard-navigation) | Documented | Not documented yet | [Keyboard navigation](../select.mdx#keyboard-navigation) | | [Slider](../slider/slider.mdx) | Not documented yet | Not documented yet | — | @@ -158,7 +158,7 @@ This index records what each component's documentation covers today. **Not docum | [Linear Progress](../inputs/linear-progress.mdx) | Not documented yet | Not documented yet | — | | [Navbar](../menus/navbar.mdx) | Not documented yet | Not documented yet | — | | [Navigation Drawer](../menus/navigation-drawer.mdx) | Not documented yet | Not documented yet | — | -| [Radio](../inputs/radio.mdx) | Not documented yet | Not documented yet | — | +| [Radio](../inputs/radio.mdx#accessibility) | Documented | Documented | [Accessibility](../inputs/radio.mdx#accessibility) | | [Rating](../inputs/rating.mdx#accessibility) | Documented | Documented | [Accessibility](../inputs/rating.mdx#accessibility) | | [Select](../inputs/select.mdx#keyboard-navigation) | Documented | Not documented yet | [Keyboard navigation](../inputs/select.mdx#keyboard-navigation) | | [Slider](../inputs/slider.mdx) | Not documented yet | Not documented yet | — | diff --git a/docs/xplat/src/content/en/toc.json b/docs/xplat/src/content/en/toc.json index a172bd69df..94aae4b006 100644 --- a/docs/xplat/src/content/en/toc.json +++ b/docs/xplat/src/content/en/toc.json @@ -3372,11 +3372,9 @@ ] }, { - "exclude": [ - "Angular" - ], "name": "Radio & Radio Group", "href": "inputs/radio.mdx", + "updated": true, "include": [ "Web" ] From 0bda4ee49d66189d8dea6117b3b9b29bf36c09d4 Mon Sep 17 00:00:00 2001 From: Ivan Minchev Date: Fri, 9 Oct 2026 16:18:13 +0300 Subject: [PATCH 2/6] fix(radio): update title, h1, and toc entry (cherry picked from commit f3e645341aae216fb79ff6170c2d70b0a7aa71d2) --- docs/angular/src/content/en/components/toc.json | 2 +- docs/angular/src/content/jp/components/toc.json | 2 +- docs/angular/src/content/kr/components/toc.json | 2 +- docs/xplat/src/content/en/components/inputs/radio.mdx | 4 ++-- docs/xplat/src/content/en/toc.json | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/angular/src/content/en/components/toc.json b/docs/angular/src/content/en/components/toc.json index 78a2147caf..8149319c03 100644 --- a/docs/angular/src/content/en/components/toc.json +++ b/docs/angular/src/content/en/components/toc.json @@ -2021,7 +2021,7 @@ ] }, { - "name": "Radio & Radio Group", + "name": "Radio Group", "href": "inputs/radio.mdx", "new": false }, diff --git a/docs/angular/src/content/jp/components/toc.json b/docs/angular/src/content/jp/components/toc.json index 01e6cb97d0..294380bd52 100644 --- a/docs/angular/src/content/jp/components/toc.json +++ b/docs/angular/src/content/jp/components/toc.json @@ -2024,7 +2024,7 @@ ] }, { - "name": "Radio & Radio Group", + "name": "Radio Group", "href": "radio-button.mdx", "new": false }, diff --git a/docs/angular/src/content/kr/components/toc.json b/docs/angular/src/content/kr/components/toc.json index e72d9260be..b182f4ddf3 100644 --- a/docs/angular/src/content/kr/components/toc.json +++ b/docs/angular/src/content/kr/components/toc.json @@ -1245,7 +1245,7 @@ "new": true }, { - "name": "Radio & Radio Group", + "name": "Radio Group", "href": "radio-button.mdx", "new": false }, diff --git a/docs/xplat/src/content/en/components/inputs/radio.mdx b/docs/xplat/src/content/en/components/inputs/radio.mdx index 807caa2912..f8d9f4648f 100644 --- a/docs/xplat/src/content/en/components/inputs/radio.mdx +++ b/docs/xplat/src/content/en/components/inputs/radio.mdx @@ -1,5 +1,5 @@ --- -title: "Radio and Radio Group" +title: "{Platform} Radio Group Component" description: "The {Platform} Radio and Radio Group let users select exactly one option from a set of mutually exclusive options, arranged vertically or horizontally." keywords: "{ProductName}, UI controls, {Platform} widgets, web widgets, UI widgets, {Platform}, Native {Platform} Components Suite, Native {Platform} Controls, Native {Platform} Components Library, {Platform} Radio Button components, {Platform} Radio Button controls, {Platform} Radio Group component, {Platform} Radio Group control" license: MIT @@ -20,7 +20,7 @@ import { Image } from 'astro:assets'; import radioAnatomy from '@xplat-images/anatomy-content-light/radio-group-lt-a.png'; import radioDoDont from '@xplat-images/radio/radio-do-dont.png'; -# Radio and Radio Group Components +# Radio Group The {Platform} Radio and Radio Group are components that let users select exactly one option from a set of mutually exclusive options. Each radio button represents one option, and the Radio Group arranges the radio buttons in a vertical or horizontal layout. diff --git a/docs/xplat/src/content/en/toc.json b/docs/xplat/src/content/en/toc.json index 94aae4b006..10e40c7eba 100644 --- a/docs/xplat/src/content/en/toc.json +++ b/docs/xplat/src/content/en/toc.json @@ -3372,7 +3372,7 @@ ] }, { - "name": "Radio & Radio Group", + "name": "Radio Group", "href": "inputs/radio.mdx", "updated": true, "include": [ From d819fe0cebf32a37dc623c20ca57958279a9c05a Mon Sep 17 00:00:00 2001 From: Ivan Minchev Date: Wed, 21 Oct 2026 16:18:19 +0300 Subject: [PATCH 3/6] fix(radio): update radio group entry in TOC and enhance radio.mdx content (cherry picked from commit 5ac0c50d94ae0805bc464529b047d740041fbdce) --- .../src/content/en/components/toc.json | 2 +- .../content/en/components/inputs/radio.mdx | 148 ++++++++++++++---- 2 files changed, 117 insertions(+), 33 deletions(-) diff --git a/docs/angular/src/content/en/components/toc.json b/docs/angular/src/content/en/components/toc.json index 8149319c03..831e5a8143 100644 --- a/docs/angular/src/content/en/components/toc.json +++ b/docs/angular/src/content/en/components/toc.json @@ -2023,7 +2023,7 @@ { "name": "Radio Group", "href": "inputs/radio.mdx", - "new": false + "updated": true }, { "name": "Rating", diff --git a/docs/xplat/src/content/en/components/inputs/radio.mdx b/docs/xplat/src/content/en/components/inputs/radio.mdx index f8d9f4648f..66b69150b0 100644 --- a/docs/xplat/src/content/en/components/inputs/radio.mdx +++ b/docs/xplat/src/content/en/components/inputs/radio.mdx @@ -71,6 +71,7 @@ The following diagram shows the element structure of the {Platform} Radio Group. ```text igx-radio-group — groups the radio buttons └── igx-radio — one per option + ├── input.igx-radio__input — the native radio input ├── .igx-radio__composite — the radio control └── .igx-radio__label — the projected label content ``` @@ -82,7 +83,8 @@ igx-radio-group — groups the radio buttons ```text igc-radio-group — groups the radio buttons └── igc-radio — one per option - └── [part="base"] — wraps the control and the label + └── [part="base"] — the