Артем Леванов
first commit
41a71fd
import { classNames } from '@/shared/lib/classNames/classNames';
import cls from './RadioButtons.module.scss';
export enum RadioButtonsTheme {
PARAM = 'param',
}
export interface IRadioButtons {
labelName: string;
value: string | number;
}
interface RadioButtonsProps {
className?: string;
name: string;
title?: string;
data: IRadioButtons[];
theme?: string;
currentValue?: string | number;
onChange?: (value: string) => void;
}
export const RadioButtons = (props: RadioButtonsProps) => {
const { className, name, title, data, theme = '', currentValue, onChange } = props;
return (
<div className={classNames(cls.RadioButtons, {}, [className, cls[theme]])}>
{title && <p className={cls.listTitle}>{title}</p>}
<div className={cls.list}>
{data.map((radioButton, index) => (
<div key={`${name + (index + 1)}`} className={cls.item}>
<input
id={`${name + (index + 1)}`}
type="radio"
name={name}
value={radioButton.value}
className={`${cls.input} visually-hidden`}
checked={radioButton.value === currentValue}
onChange={(e) => onChange?.(e.target.value)}
/>
<label className={cls.name} htmlFor={`${name + (index + 1)}`}>
<span className={cls.window}>
<span className={cls.circle} />
</span>
<span className={cls.text}>{radioButton.labelName}</span>
</label>
</div>
))}
</div>
</div>
);
};