import type { ChangeEvent } from 'react'; import type { FC, TeactNode } from '../../lib/teact/teact'; import { memo, useCallback } from '../../lib/teact/teact'; import buildClassName from '../../util/buildClassName'; import useLastCallback from '../../hooks/useLastCallback'; import Radio from './Radio'; export type IRadioOption = { label: TeactNode; subLabel?: TeactNode; value: T; hidden?: boolean; className?: string; isCanCheckedInDisabled?: boolean; }; type OwnProps = { id?: string; name: string; options: IRadioOption[]; selected?: string; disabled?: boolean; loadingOption?: string; onChange: (value: string, event: ChangeEvent) => void; onClickAction?: (value: string) => void; isLink?: boolean; withIcon?: boolean; subLabelClassName?: string; subLabel?: TeactNode; className?: string; }; const RadioGroup: FC = ({ id, name, options, selected, disabled, loadingOption, onChange, onClickAction, subLabelClassName, isLink, withIcon, subLabel, className, }) => { const handleChange = useCallback((event: ChangeEvent) => { const { value } = event.currentTarget; onChange(value, event); }, [onChange]); const onSubLabelClick = useLastCallback((value: string) => () => { onClickAction?.(value); }); return (
{options.map((option) => (
); }; export default memo(RadioGroup);