/* * Copyright (C) 2019 CZ.NIC z.s.p.o. (http://www.nic.cz/) * * This is free software, licensed under the GNU General Public License v3. * See /LICENSE for more information. */ import React from "react"; import PropTypes from "prop-types"; import { useUID } from "react-uid"; import { formFieldsSize } from "./constants"; RadioSet.propTypes = { /** Name attribute of the input HTML tag. */ name: PropTypes.string.isRequired, /** RadioSet label . */ label: PropTypes.string, /** Choices . */ choices: PropTypes.arrayOf(PropTypes.shape({ /** Choice lable . */ label: PropTypes.string.isRequired, /** Choice value . */ value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired, })).isRequired, /** Initial value . */ value: PropTypes.string, /** Help text message . */ helpText: PropTypes.string, }; export function RadioSet({ name, label, choices, value, helpText, ...props }) { const uid = useUID(); const radios = choices.map((choice, key) => { const id = `${name}-${key}`; return ( ); }); return (
{label && } {radios} {helpText && {helpText}}
); } Radio.propTypes = { label: PropTypes.string.isRequired, id: PropTypes.string.isRequired, helpText: PropTypes.string, }; function Radio({ label, id, helpText, ...props }) { return ( <>
{helpText && {helpText}}
); }