# RadioButton

<a href='https://github.yandex-team.ru/search-interfaces/frontend/tree/master/packages/lego-components/src/RadioButton' target='_blank'><img src='https://badger.yandex-team.ru/custom/[Исходники]/[Github
][green]/badge.svg' /></a> <a href='https://search.yandex-team.ru/stsearch?text=Radiobutton.ts&facet.queue=ISL&facet.type=bug&facet.status=128' target='_blank'><img src='https://badger.yandex-team.ru/custom/[Известные проблемы]/[Startrek][blue]/badge.svg' /></a>

<!-- description:start -->
Компонент для создания радиогруппы.
<!-- description:end -->

## Пример использования

Конфигурация темы на уровне проекта:

```ts
// src/lib/theme.ts
import { configureRootTheme } from '@yandex-lego/components/Theme'
import { theme } from '@yandex-lego/components/Theme/presets/default'

configureRootTheme({ theme })
```

Использование с нужным набором модификаторов:

```ts
// src/App.ts
import React, { useState } from 'react'
import { compose } from '@bem-react/core'
import {
  RadioButton as RadioButtonDesktop,
  withSizeM,
  withViewDefault,
} from '@yandex-lego/components/RadioButton/desktop'

const RadioButton = compose(withSizeM, withViewDefault)(RadioButtonDesktop)

const App = () => {
  const [value, setValue] = useState('value1')

  return (
    <RadioButton
      size="m"
      view="default"
      value={value}
      options={[
        { value: 'value1', children: 'Радио 1' },
        { value: 'value2', children: <>Радио 2</> },
        { value: 'value3', children: <><span>Радио</span> 3</> },
      ]}
      onChange={(event) => setValue(event.target.value)}
    />
  )
}
```

Использование с полным набором модификаторов:

```ts
// src/App.ts
import React from 'react'
import { RadioButton } from '@yandex-lego/components/RadioButton/desktop/bundle'

const App = () => {
  const [value, setValue] = useState('value1')

  return (
    <RadioButton
      size="m"
      view="default"
      value={value}
      options={[
        { value: 'value1', children: 'Радио 1' },
        { value: 'value2', children: <>Радио 2</> },
        { value: 'value3', children: <><span>Радио</span> 3</> },
      ]}
      onChange={(event) => setValue(event.target.value)}
    />
  )
}
```

## Примеры

### Оформление радиогруппы

Для различного оформления радиогруппы установите свойство `view` в значение `"default"`.

{{%story::desktop:controls-radiobutton-desktop--view%}}

### Размер радиогруппы

Чтобы изменить размер радиогруппы, установите свойство `size` в одно из следующих значений: `"s"`, `"m"`, `"l"`.

{{%story::desktop:controls-radiobutton-desktop--size%}}

## Свойства

<!-- props:start -->
| Свойство    | Тип                                                         | Описание                                        |
| ----------- | ----------------------------------------------------------- | ----------------------------------------------- |
| options     | `IRadioButtonOption[]`                                      | Набор опций                                     |
| innerRef?   | `RefObject<HTMLSpanElement>`                                | Ссылка на корневой DOM-элемент компонента       |
| style?      | `CSSProperties`                                             | Пользовательские стили на корневом DOM-элементе |
| aria-label? | `string`                                                    | Метка для радиогруппы                           |
| value       | `string`                                                    | HTML-атрибут `value`, значение контрола         |
| name?       | `string`                                                    | HTML-атрибут `name`, имя компонента             |
| disabled?   | `false \| true`                                             | HTML-атрибут `disabled`                         |
| className?  | `string`                                                    | Дополнительный класс                            |
| onClick?    | `(event: MouseEvent<HTMLInputElement, MouseEvent>) => void` | Обработчик клика                                |
| onChange?   | `(event: ChangeEvent<HTMLInputElement>) => void`            | Обработчик изменения значения                   |
<!-- props:end -->
