@2e32/react-radio
Компоненты радиокнопка и группа радиокнопок для React.
Установка
npm
npm i @2e32/react-radio
yarn
yarn add @2e32/react-radio
Использование Radio
App.js
// Единожды подключить стиль на уровне приложения (точки входа)
import '@2e32/react-radio/css';
const App = () => <Page />;
export default App;
Page.js
import { useState, useCallback } from 'react';
// Импортировать компонент
import Radio from '@2e32/react-radio';
const Page = () => {
const [value, setValue] = useState<string>();
return (
<Radio checked={value === 'one'} value="one" onChange={setValue}>
One
</Radio>
<Radio checked={value === 'two'} value="two" onChange={setValue}>
Two
</Radio>
);
};
export default Page;
Свойства Radio
Название | Тип | Значение по умолчанию | Описание |
---|---|---|---|
ref |
React.Ref<HTMLSpanElement>
|
Ссылка для доступа к DOM-узлу компонента. | |
id |
string
|
Идентификатор элемента в документе. | |
name |
string
|
Имя элемента. | |
value |
T
|
Значение элемента формы. | |
checked |
boolean
|
Значение, указывающее отмечен ли элемент управления меткой. При значении true метка
установлена, в противном случае - не установлена.
|
|
children |
React.ReactNode
|
Содержимое связанное с радиокнопкой (текстовая подпись). | |
hint |
React.ReactNode
|
Подсказка. | |
className |
string
|
CSS-класс. | |
style |
React.CSSProperties
|
Стиль. | |
boxClassName |
string
|
CSS-класс контейнера, в котором располагается метка. | |
inputClassName |
string
|
CSS-класс элемента input. | |
labelClassName |
string
|
CSS-класс контейнера, в котором располагается текст. | |
hintClassName |
string
|
CSS-класс hint. | |
checkmarkPosition |
'left' | 'right' | 'top' | 'bottom'
|
'left'
|
Позиция отображения метки относительно контента радиокнопки. |
checkmarkAlign |
'start' | 'center' | 'end'
|
'center'
|
Выравнивание метки относительно контента радиокнопки. |
disabled |
boolean
|
false
|
Компонент отключен (метка не может быть выбрана, получение фокуса запрещено). |
readOnly |
boolean
|
false
|
Компонент только на чтение (состояние метки не может быть изменено). |
autoFocus |
boolean
|
false
|
Компонент должен находится в фокусе при монтировании. |
block |
boolean
|
false
|
Компонент занимает всю ширину контейнера. |
tabIndex |
number
|
0
|
Значение для настройки фокуса элемента. |
renderIcon |
function
|
Отображает иконку радиокнопки.
⚠️ Используйте этот метод для собственной стилизации метки. (props: RenderIconProps<T>) => React.ReactNode
|
|
onChange |
function
|
Вызывается при выборе значения.
(value: NonNullable<T>, event: React.ChangeEvent<HTMLInputElement>) => void
|
Использование RadioGroup
import { useState } from 'react';
import Radio from '@2e32/react-radio';
const Page = () => {
const [value, setValue] = useState<string>();
return (
<Radio.Group value={value} options={['One', 'Two', 'Three']} onChange={setValue} />
);
};
export default Page;
Свойства RadioGroup
Название | Тип | Значение по умолчанию | Описание |
---|---|---|---|
ref |
React.Ref<HTMLSpanElement>
|
Ссылка для доступа к DOM-узлу компонента. | |
value |
V
|
Значение группы. | |
label |
React.ReactNode
|
Подпись группы. | |
hint |
React.ReactNode
|
Подсказка. | |
options |
Array<O>
|
Список опций. | |
optionKey |
string | function
|
Вычисляет ключ опции (для случая, когда значения опций не уникальны). | |
optionContent |
string | function
|
Вычисляет контент опции. | |
optionValue |
string | function
|
Вычисляет значение опции, возвращаемое при выборе опции (change). | |
optionDisabled |
function
|
Вычисляет должна ли опция быть отключена (в состоянии disabled ).
(option: <O>) => boolean
|
|
isValueEqualOption |
function
|
Функция для определения равенства текущего значения value и опции (для
определения признака checked у опции).
⚠️ Используйте isValueEqualOption для сравнения value и опции,
если они в виде объектов или представлены разными типами. По умолчанию они сравниваются с
помощью Object.is .
(value: Nullable<V>, option: <O>) => boolean
|
|
className |
string
|
CSS-класс. | |
style |
React.CSSProperties
|
Стиль. | |
labelClassName |
string
|
CSS-класс контейнера, в котором располагается текстовая подпись. | |
hintClassName |
string
|
CSS-класс hint. | |
disabled |
boolean
|
false
|
Компонент отключен (опция не может быть выбрана, получение фокуса запрещено). |
readOnly |
boolean
|
false
|
Компонент только на чтение (опция не может быть выбрана). |
block |
boolean
|
false
|
Компонент занимает всю ширину контейнера. |
vertical |
boolean
|
false
|
Опции располагаются по вертикали. |
required |
boolean
|
false
|
Значение должно быть обязательно заполнено (добавляет в label знак обязательности). |
asteriskIcon |
React.ReactNode
|
* | Иконка обязательности заполнения. |
asteriskPosition |
'left' | 'right'
|
'right'
|
Позиция иконки обязательности. |
asteriskClassName |
string
|
CSS-класс контейнера, в котором располагается asteriskIcon .
|
|
renderIcon |
function
|
Отображает иконку радиокнопки.
⚠️ Используйте этот метод для собственной стилизации метки. (props: RenderIconProps<O>) => React.ReactNode
|
|
renderOption |
function
|
Отображает опцию (иконку, контент).
⚠️ Используйте этот метод изменения структуры и стилизации опции (её метки, контента). (props: RenderOptionProps<O>) => React.ReactNode
|
|
onChange |
function
|
Вызывается при выборе значения.
(value: <V>, event: React.ChangeEvent<HTMLInputElement>) => void
|
Примеры
Смотри storybook.