/* * Wire * Copyright (C) 2021 Wire Swiss GmbH * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. * */ import {useId} from 'react'; import {TabIndex} from '@wireapp/react-ui-kit/lib/types/enums'; import {radioHintStyles, radioInputStyles, radioLabelStyles, radioOptionStyles} from './RadioGroup.styles'; interface RadioGroupProps { ariaLabelledBy: string; name: string; onChange: (newValue: T) => void; options: { label: string; value: T; detailLabel?: string; isDisabled?: boolean; optionUeiName?: string; }[]; selectedValue: T; uieName?: string; } const RadioGroup = ({ ariaLabelledBy, name, options, onChange, uieName = name, selectedValue, }: RadioGroupProps) => { const radioId = useId(); return (
{options.map(({value, label, detailLabel, isDisabled = false, optionUeiName = `${uieName}-${value}`}) => { const currentId = radioId + value; const isChecked = selectedValue === value; return (
onChange(value)} checked={isChecked} data-uie-name={optionUeiName} />
); })}
); }; export {RadioGroup};